(() => {
  var __create = Object.create;
  var __defProp = Object.defineProperty;
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  var __getOwnPropNames = Object.getOwnPropertyNames;
  var __getProtoOf = Object.getPrototypeOf;
  var __hasOwnProp = Object.prototype.hasOwnProperty;
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
    get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
  }) : x)(function(x) {
    if (typeof require !== "undefined")
      return require.apply(this, arguments);
    throw new Error('Dynamic require of "' + x + '" is not supported');
  });
  var __commonJS = (cb, mod) => function __require2() {
    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
  };
  var __copyProps = (to, from, except, desc) => {
    if (from && typeof from === "object" || typeof from === "function") {
      for (let key of __getOwnPropNames(from))
        if (!__hasOwnProp.call(to, key) && key !== except)
          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
    }
    return to;
  };
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
    mod
  ));

  // dep-runtime/node_modules/angular/angular.js
  var require_angular = __commonJS({
    "dep-runtime/node_modules/angular/angular.js"() {
      (function(window2) {
        "use strict";
        var minErrConfig = {
          objectMaxDepth: 5,
          urlErrorParamsEnabled: true
        };
        function errorHandlingConfig(config) {
          if (isObject(config)) {
            if (isDefined(config.objectMaxDepth)) {
              minErrConfig.objectMaxDepth = isValidObjectMaxDepth(config.objectMaxDepth) ? config.objectMaxDepth : NaN;
            }
            if (isDefined(config.urlErrorParamsEnabled) && isBoolean(config.urlErrorParamsEnabled)) {
              minErrConfig.urlErrorParamsEnabled = config.urlErrorParamsEnabled;
            }
          } else {
            return minErrConfig;
          }
        }
        function isValidObjectMaxDepth(maxDepth) {
          return isNumber2(maxDepth) && maxDepth > 0;
        }
        function minErr(module3, ErrorConstructor) {
          ErrorConstructor = ErrorConstructor || Error;
          var url = "https://errors.angularjs.org/1.8.2/";
          var regex = url.replace(".", "\\.") + "[\\s\\S]*";
          var errRegExp = new RegExp(regex, "g");
          return function() {
            var code = arguments[0], template = arguments[1], message = "[" + (module3 ? module3 + ":" : "") + code + "] ", templateArgs = sliceArgs(arguments, 2).map(function(arg) {
              return toDebugString(arg, minErrConfig.objectMaxDepth);
            }), paramPrefix, i;
            message += template.replace(/\{\d+\}/g, function(match) {
              var index = +match.slice(1, -1);
              if (index < templateArgs.length) {
                return templateArgs[index].replace(errRegExp, "");
              }
              return match;
            });
            message += "\n" + url + (module3 ? module3 + "/" : "") + code;
            if (minErrConfig.urlErrorParamsEnabled) {
              for (i = 0, paramPrefix = "?"; i < templateArgs.length; i++, paramPrefix = "&") {
                message += paramPrefix + "p" + i + "=" + encodeURIComponent(templateArgs[i]);
              }
            }
            return new ErrorConstructor(message);
          };
        }
        var REGEX_STRING_REGEXP = /^\/(.+)\/([a-z]*)$/;
        var VALIDITY_STATE_PROPERTY = "validity";
        var hasOwnProperty = Object.prototype.hasOwnProperty;
        var lowercase = function(string) {
          return isString(string) ? string.toLowerCase() : string;
        };
        var uppercase = function(string) {
          return isString(string) ? string.toUpperCase() : string;
        };
        var msie, jqLite, jQuery2, slice = [].slice, splice = [].splice, push = [].push, toString = Object.prototype.toString, getPrototypeOf = Object.getPrototypeOf, ngMinErr = minErr("ng"), angular2 = window2.angular || (window2.angular = {}), angularModule, uid = 0;
        msie = window2.document.documentMode;
        function isArrayLike(obj) {
          if (obj == null || isWindow(obj))
            return false;
          if (isArray(obj) || isString(obj) || jqLite && obj instanceof jqLite)
            return true;
          var length = "length" in Object(obj) && obj.length;
          return isNumber2(length) && (length >= 0 && length - 1 in obj || typeof obj.item === "function");
        }
        function forEach(obj, iterator, context) {
          var key2, length;
          if (obj) {
            if (isFunction(obj)) {
              for (key2 in obj) {
                if (key2 !== "prototype" && key2 !== "length" && key2 !== "name" && obj.hasOwnProperty(key2)) {
                  iterator.call(context, obj[key2], key2, obj);
                }
              }
            } else if (isArray(obj) || isArrayLike(obj)) {
              var isPrimitive = typeof obj !== "object";
              for (key2 = 0, length = obj.length; key2 < length; key2++) {
                if (isPrimitive || key2 in obj) {
                  iterator.call(context, obj[key2], key2, obj);
                }
              }
            } else if (obj.forEach && obj.forEach !== forEach) {
              obj.forEach(iterator, context, obj);
            } else if (isBlankObject(obj)) {
              for (key2 in obj) {
                iterator.call(context, obj[key2], key2, obj);
              }
            } else if (typeof obj.hasOwnProperty === "function") {
              for (key2 in obj) {
                if (obj.hasOwnProperty(key2)) {
                  iterator.call(context, obj[key2], key2, obj);
                }
              }
            } else {
              for (key2 in obj) {
                if (hasOwnProperty.call(obj, key2)) {
                  iterator.call(context, obj[key2], key2, obj);
                }
              }
            }
          }
          return obj;
        }
        function forEachSorted(obj, iterator, context) {
          var keys = Object.keys(obj).sort();
          for (var i = 0; i < keys.length; i++) {
            iterator.call(context, obj[keys[i]], keys[i]);
          }
          return keys;
        }
        function reverseParams(iteratorFn) {
          return function(value, key2) {
            iteratorFn(key2, value);
          };
        }
        function nextUid() {
          return ++uid;
        }
        function setHashKey(obj, h2) {
          if (h2) {
            obj.$$hashKey = h2;
          } else {
            delete obj.$$hashKey;
          }
        }
        function baseExtend(dst, objs, deep) {
          var h2 = dst.$$hashKey;
          for (var i = 0, ii = objs.length; i < ii; ++i) {
            var obj = objs[i];
            if (!isObject(obj) && !isFunction(obj))
              continue;
            var keys = Object.keys(obj);
            for (var j = 0, jj = keys.length; j < jj; j++) {
              var key2 = keys[j];
              var src = obj[key2];
              if (deep && isObject(src)) {
                if (isDate(src)) {
                  dst[key2] = new Date(src.valueOf());
                } else if (isRegExp(src)) {
                  dst[key2] = new RegExp(src);
                } else if (src.nodeName) {
                  dst[key2] = src.cloneNode(true);
                } else if (isElement(src)) {
                  dst[key2] = src.clone();
                } else {
                  if (key2 !== "__proto__") {
                    if (!isObject(dst[key2]))
                      dst[key2] = isArray(src) ? [] : {};
                    baseExtend(dst[key2], [src], true);
                  }
                }
              } else {
                dst[key2] = src;
              }
            }
          }
          setHashKey(dst, h2);
          return dst;
        }
        function extend(dst) {
          return baseExtend(dst, slice.call(arguments, 1), false);
        }
        function merge(dst) {
          return baseExtend(dst, slice.call(arguments, 1), true);
        }
        function toInt(str) {
          return parseInt(str, 10);
        }
        var isNumberNaN = Number.isNaN || function isNumberNaN2(num) {
          return num !== num;
        };
        function inherit(parent, extra) {
          return extend(Object.create(parent), extra);
        }
        function noop() {
        }
        noop.$inject = [];
        function identity($2) {
          return $2;
        }
        identity.$inject = [];
        function valueFn(value) {
          return function valueRef() {
            return value;
          };
        }
        function hasCustomToString(obj) {
          return isFunction(obj.toString) && obj.toString !== toString;
        }
        function isUndefined(value) {
          return typeof value === "undefined";
        }
        function isDefined(value) {
          return typeof value !== "undefined";
        }
        function isObject(value) {
          return value !== null && typeof value === "object";
        }
        function isBlankObject(value) {
          return value !== null && typeof value === "object" && !getPrototypeOf(value);
        }
        function isString(value) {
          return typeof value === "string";
        }
        function isNumber2(value) {
          return typeof value === "number";
        }
        function isDate(value) {
          return toString.call(value) === "[object Date]";
        }
        function isArray(arr) {
          return Array.isArray(arr) || arr instanceof Array;
        }
        function isError(value) {
          var tag = toString.call(value);
          switch (tag) {
            case "[object Error]":
              return true;
            case "[object Exception]":
              return true;
            case "[object DOMException]":
              return true;
            default:
              return value instanceof Error;
          }
        }
        function isFunction(value) {
          return typeof value === "function";
        }
        function isRegExp(value) {
          return toString.call(value) === "[object RegExp]";
        }
        function isWindow(obj) {
          return obj && obj.window === obj;
        }
        function isScope(obj) {
          return obj && obj.$evalAsync && obj.$watch;
        }
        function isFile(obj) {
          return toString.call(obj) === "[object File]";
        }
        function isFormData(obj) {
          return toString.call(obj) === "[object FormData]";
        }
        function isBlob(obj) {
          return toString.call(obj) === "[object Blob]";
        }
        function isBoolean(value) {
          return typeof value === "boolean";
        }
        function isPromiseLike(obj) {
          return obj && isFunction(obj.then);
        }
        var TYPED_ARRAY_REGEXP = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/;
        function isTypedArray(value) {
          return value && isNumber2(value.length) && TYPED_ARRAY_REGEXP.test(toString.call(value));
        }
        function isArrayBuffer(obj) {
          return toString.call(obj) === "[object ArrayBuffer]";
        }
        var trim = function(value) {
          return isString(value) ? value.trim() : value;
        };
        var escapeForRegexp = function(s2) {
          return s2.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08");
        };
        function isElement(node) {
          return !!(node && (node.nodeName || node.prop && node.attr && node.find));
        }
        function makeMap(str) {
          var obj = {}, items = str.split(","), i;
          for (i = 0; i < items.length; i++) {
            obj[items[i]] = true;
          }
          return obj;
        }
        function nodeName_(element) {
          return lowercase(element.nodeName || element[0] && element[0].nodeName);
        }
        function includes(array, obj) {
          return Array.prototype.indexOf.call(array, obj) !== -1;
        }
        function arrayRemove(array, value) {
          var index = array.indexOf(value);
          if (index >= 0) {
            array.splice(index, 1);
          }
          return index;
        }
        function copy(source, destination, maxDepth) {
          var stackSource = [];
          var stackDest = [];
          maxDepth = isValidObjectMaxDepth(maxDepth) ? maxDepth : NaN;
          if (destination) {
            if (isTypedArray(destination) || isArrayBuffer(destination)) {
              throw ngMinErr("cpta", "Can't copy! TypedArray destination cannot be mutated.");
            }
            if (source === destination) {
              throw ngMinErr("cpi", "Can't copy! Source and destination are identical.");
            }
            if (isArray(destination)) {
              destination.length = 0;
            } else {
              forEach(destination, function(value, key2) {
                if (key2 !== "$$hashKey") {
                  delete destination[key2];
                }
              });
            }
            stackSource.push(source);
            stackDest.push(destination);
            return copyRecurse(source, destination, maxDepth);
          }
          return copyElement(source, maxDepth);
          function copyRecurse(source2, destination2, maxDepth2) {
            maxDepth2--;
            if (maxDepth2 < 0) {
              return "...";
            }
            var h2 = destination2.$$hashKey;
            var key2;
            if (isArray(source2)) {
              for (var i = 0, ii = source2.length; i < ii; i++) {
                destination2.push(copyElement(source2[i], maxDepth2));
              }
            } else if (isBlankObject(source2)) {
              for (key2 in source2) {
                destination2[key2] = copyElement(source2[key2], maxDepth2);
              }
            } else if (source2 && typeof source2.hasOwnProperty === "function") {
              for (key2 in source2) {
                if (source2.hasOwnProperty(key2)) {
                  destination2[key2] = copyElement(source2[key2], maxDepth2);
                }
              }
            } else {
              for (key2 in source2) {
                if (hasOwnProperty.call(source2, key2)) {
                  destination2[key2] = copyElement(source2[key2], maxDepth2);
                }
              }
            }
            setHashKey(destination2, h2);
            return destination2;
          }
          function copyElement(source2, maxDepth2) {
            if (!isObject(source2)) {
              return source2;
            }
            var index = stackSource.indexOf(source2);
            if (index !== -1) {
              return stackDest[index];
            }
            if (isWindow(source2) || isScope(source2)) {
              throw ngMinErr(
                "cpws",
                "Can't copy! Making copies of Window or Scope instances is not supported."
              );
            }
            var needsRecurse = false;
            var destination2 = copyType(source2);
            if (destination2 === void 0) {
              destination2 = isArray(source2) ? [] : Object.create(getPrototypeOf(source2));
              needsRecurse = true;
            }
            stackSource.push(source2);
            stackDest.push(destination2);
            return needsRecurse ? copyRecurse(source2, destination2, maxDepth2) : destination2;
          }
          function copyType(source2) {
            switch (toString.call(source2)) {
              case "[object Int8Array]":
              case "[object Int16Array]":
              case "[object Int32Array]":
              case "[object Float32Array]":
              case "[object Float64Array]":
              case "[object Uint8Array]":
              case "[object Uint8ClampedArray]":
              case "[object Uint16Array]":
              case "[object Uint32Array]":
                return new source2.constructor(copyElement(source2.buffer), source2.byteOffset, source2.length);
              case "[object ArrayBuffer]":
                if (!source2.slice) {
                  var copied = new ArrayBuffer(source2.byteLength);
                  new Uint8Array(copied).set(new Uint8Array(source2));
                  return copied;
                }
                return source2.slice(0);
              case "[object Boolean]":
              case "[object Number]":
              case "[object String]":
              case "[object Date]":
                return new source2.constructor(source2.valueOf());
              case "[object RegExp]":
                var re = new RegExp(source2.source, source2.toString().match(/[^/]*$/)[0]);
                re.lastIndex = source2.lastIndex;
                return re;
              case "[object Blob]":
                return new source2.constructor([source2], { type: source2.type });
            }
            if (isFunction(source2.cloneNode)) {
              return source2.cloneNode(true);
            }
          }
        }
        function simpleCompare(a, b) {
          return a === b || a !== a && b !== b;
        }
        function equals(o1, o2) {
          if (o1 === o2)
            return true;
          if (o1 === null || o2 === null)
            return false;
          if (o1 !== o1 && o2 !== o2)
            return true;
          var t1 = typeof o1, t2 = typeof o2, length, key2, keySet;
          if (t1 === t2 && t1 === "object") {
            if (isArray(o1)) {
              if (!isArray(o2))
                return false;
              if ((length = o1.length) === o2.length) {
                for (key2 = 0; key2 < length; key2++) {
                  if (!equals(o1[key2], o2[key2]))
                    return false;
                }
                return true;
              }
            } else if (isDate(o1)) {
              if (!isDate(o2))
                return false;
              return simpleCompare(o1.getTime(), o2.getTime());
            } else if (isRegExp(o1)) {
              if (!isRegExp(o2))
                return false;
              return o1.toString() === o2.toString();
            } else {
              if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || isArray(o2) || isDate(o2) || isRegExp(o2))
                return false;
              keySet = createMap();
              for (key2 in o1) {
                if (key2.charAt(0) === "$" || isFunction(o1[key2]))
                  continue;
                if (!equals(o1[key2], o2[key2]))
                  return false;
                keySet[key2] = true;
              }
              for (key2 in o2) {
                if (!(key2 in keySet) && key2.charAt(0) !== "$" && isDefined(o2[key2]) && !isFunction(o2[key2]))
                  return false;
              }
              return true;
            }
          }
          return false;
        }
        var csp = function() {
          if (!isDefined(csp.rules)) {
            var ngCspElement = window2.document.querySelector("[ng-csp]") || window2.document.querySelector("[data-ng-csp]");
            if (ngCspElement) {
              var ngCspAttribute = ngCspElement.getAttribute("ng-csp") || ngCspElement.getAttribute("data-ng-csp");
              csp.rules = {
                noUnsafeEval: !ngCspAttribute || ngCspAttribute.indexOf("no-unsafe-eval") !== -1,
                noInlineStyle: !ngCspAttribute || ngCspAttribute.indexOf("no-inline-style") !== -1
              };
            } else {
              csp.rules = {
                noUnsafeEval: noUnsafeEval(),
                noInlineStyle: false
              };
            }
          }
          return csp.rules;
          function noUnsafeEval() {
            try {
              new Function("");
              return false;
            } catch (e) {
              return true;
            }
          }
        };
        var jq = function() {
          if (isDefined(jq.name_))
            return jq.name_;
          var el;
          var i, ii = ngAttrPrefixes.length, prefix, name;
          for (i = 0; i < ii; ++i) {
            prefix = ngAttrPrefixes[i];
            el = window2.document.querySelector("[" + prefix.replace(":", "\\:") + "jq]");
            if (el) {
              name = el.getAttribute(prefix + "jq");
              break;
            }
          }
          return jq.name_ = name;
        };
        function concat(array1, array2, index) {
          return array1.concat(slice.call(array2, index));
        }
        function sliceArgs(args, startIndex) {
          return slice.call(args, startIndex || 0);
        }
        function bind(self2, fn) {
          var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];
          if (isFunction(fn) && !(fn instanceof RegExp)) {
            return curryArgs.length ? function() {
              return arguments.length ? fn.apply(self2, concat(curryArgs, arguments, 0)) : fn.apply(self2, curryArgs);
            } : function() {
              return arguments.length ? fn.apply(self2, arguments) : fn.call(self2);
            };
          } else {
            return fn;
          }
        }
        function toJsonReplacer(key2, value) {
          var val = value;
          if (typeof key2 === "string" && key2.charAt(0) === "$" && key2.charAt(1) === "$") {
            val = void 0;
          } else if (isWindow(value)) {
            val = "$WINDOW";
          } else if (value && window2.document === value) {
            val = "$DOCUMENT";
          } else if (isScope(value)) {
            val = "$SCOPE";
          }
          return val;
        }
        function toJson(obj, pretty) {
          if (isUndefined(obj))
            return void 0;
          if (!isNumber2(pretty)) {
            pretty = pretty ? 2 : null;
          }
          return JSON.stringify(obj, toJsonReplacer, pretty);
        }
        function fromJson(json) {
          return isString(json) ? JSON.parse(json) : json;
        }
        var ALL_COLONS = /:/g;
        function timezoneToOffset(timezone, fallback) {
          timezone = timezone.replace(ALL_COLONS, "");
          var requestedTimezoneOffset = Date.parse("Jan 01, 1970 00:00:00 " + timezone) / 6e4;
          return isNumberNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;
        }
        function addDateMinutes(date, minutes) {
          date = new Date(date.getTime());
          date.setMinutes(date.getMinutes() + minutes);
          return date;
        }
        function convertTimezoneToLocal(date, timezone, reverse) {
          reverse = reverse ? -1 : 1;
          var dateTimezoneOffset = date.getTimezoneOffset();
          var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);
          return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));
        }
        function startingTag(element) {
          element = jqLite(element).clone().empty();
          var elemHtml = jqLite("<div></div>").append(element).html();
          try {
            return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) : elemHtml.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/, function(match, nodeName) {
              return "<" + lowercase(nodeName);
            });
          } catch (e) {
            return lowercase(elemHtml);
          }
        }
        function tryDecodeURIComponent(value) {
          try {
            return decodeURIComponent(value);
          } catch (e) {
          }
        }
        function parseKeyValue(keyValue) {
          var obj = {};
          forEach((keyValue || "").split("&"), function(keyValue2) {
            var splitPoint, key2, val;
            if (keyValue2) {
              key2 = keyValue2 = keyValue2.replace(/\+/g, "%20");
              splitPoint = keyValue2.indexOf("=");
              if (splitPoint !== -1) {
                key2 = keyValue2.substring(0, splitPoint);
                val = keyValue2.substring(splitPoint + 1);
              }
              key2 = tryDecodeURIComponent(key2);
              if (isDefined(key2)) {
                val = isDefined(val) ? tryDecodeURIComponent(val) : true;
                if (!hasOwnProperty.call(obj, key2)) {
                  obj[key2] = val;
                } else if (isArray(obj[key2])) {
                  obj[key2].push(val);
                } else {
                  obj[key2] = [obj[key2], val];
                }
              }
            }
          });
          return obj;
        }
        function toKeyValue(obj) {
          var parts = [];
          forEach(obj, function(value, key2) {
            if (isArray(value)) {
              forEach(value, function(arrayValue) {
                parts.push(encodeUriQuery(key2, true) + (arrayValue === true ? "" : "=" + encodeUriQuery(arrayValue, true)));
              });
            } else {
              parts.push(encodeUriQuery(key2, true) + (value === true ? "" : "=" + encodeUriQuery(value, true)));
            }
          });
          return parts.length ? parts.join("&") : "";
        }
        function encodeUriSegment(val) {
          return encodeUriQuery(val, true).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+");
        }
        function encodeUriQuery(val, pctEncodeSpaces) {
          return encodeURIComponent(val).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%3B/gi, ";").replace(/%20/g, pctEncodeSpaces ? "%20" : "+");
        }
        var ngAttrPrefixes = ["ng-", "data-ng-", "ng:", "x-ng-"];
        function getNgAttribute(element, ngAttr) {
          var attr, i, ii = ngAttrPrefixes.length;
          for (i = 0; i < ii; ++i) {
            attr = ngAttrPrefixes[i] + ngAttr;
            if (isString(attr = element.getAttribute(attr))) {
              return attr;
            }
          }
          return null;
        }
        function allowAutoBootstrap(document2) {
          var script = document2.currentScript;
          if (!script) {
            return true;
          }
          if (!(script instanceof window2.HTMLScriptElement || script instanceof window2.SVGScriptElement)) {
            return false;
          }
          var attributes = script.attributes;
          var srcs = [attributes.getNamedItem("src"), attributes.getNamedItem("href"), attributes.getNamedItem("xlink:href")];
          return srcs.every(function(src) {
            if (!src) {
              return true;
            }
            if (!src.value) {
              return false;
            }
            var link = document2.createElement("a");
            link.href = src.value;
            if (document2.location.origin === link.origin) {
              return true;
            }
            switch (link.protocol) {
              case "http:":
              case "https:":
              case "ftp:":
              case "blob:":
              case "file:":
              case "data:":
                return true;
              default:
                return false;
            }
          });
        }
        var isAutoBootstrapAllowed = allowAutoBootstrap(window2.document);
        function angularInit(element, bootstrap2) {
          var appElement, module3, config = {};
          forEach(ngAttrPrefixes, function(prefix) {
            var name = prefix + "app";
            if (!appElement && element.hasAttribute && element.hasAttribute(name)) {
              appElement = element;
              module3 = element.getAttribute(name);
            }
          });
          forEach(ngAttrPrefixes, function(prefix) {
            var name = prefix + "app";
            var candidate;
            if (!appElement && (candidate = element.querySelector("[" + name.replace(":", "\\:") + "]"))) {
              appElement = candidate;
              module3 = candidate.getAttribute(name);
            }
          });
          if (appElement) {
            if (!isAutoBootstrapAllowed) {
              window2.console.error("AngularJS: disabling automatic bootstrap. <script> protocol indicates an extension, document.location.href does not match.");
              return;
            }
            config.strictDi = getNgAttribute(appElement, "strict-di") !== null;
            bootstrap2(appElement, module3 ? [module3] : [], config);
          }
        }
        function bootstrap(element, modules, config) {
          if (!isObject(config))
            config = {};
          var defaultConfig = {
            strictDi: false
          };
          config = extend(defaultConfig, config);
          var doBootstrap = function() {
            element = jqLite(element);
            if (element.injector()) {
              var tag = element[0] === window2.document ? "document" : startingTag(element);
              throw ngMinErr(
                "btstrpd",
                "App already bootstrapped with this element '{0}'",
                tag.replace(/</, "&lt;").replace(/>/, "&gt;")
              );
            }
            modules = modules || [];
            modules.unshift(["$provide", function($provide) {
              $provide.value("$rootElement", element);
            }]);
            if (config.debugInfoEnabled) {
              modules.push(["$compileProvider", function($compileProvider) {
                $compileProvider.debugInfoEnabled(true);
              }]);
            }
            modules.unshift("ng");
            var injector = createInjector(modules, config.strictDi);
            injector.invoke(
              [
                "$rootScope",
                "$rootElement",
                "$compile",
                "$injector",
                function bootstrapApply(scope, element2, compile, injector2) {
                  scope.$apply(function() {
                    element2.data("$injector", injector2);
                    compile(element2)(scope);
                  });
                }
              ]
            );
            return injector;
          };
          var NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/;
          var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;
          if (window2 && NG_ENABLE_DEBUG_INFO.test(window2.name)) {
            config.debugInfoEnabled = true;
            window2.name = window2.name.replace(NG_ENABLE_DEBUG_INFO, "");
          }
          if (window2 && !NG_DEFER_BOOTSTRAP.test(window2.name)) {
            return doBootstrap();
          }
          window2.name = window2.name.replace(NG_DEFER_BOOTSTRAP, "");
          angular2.resumeBootstrap = function(extraModules) {
            forEach(extraModules, function(module3) {
              modules.push(module3);
            });
            return doBootstrap();
          };
          if (isFunction(angular2.resumeDeferredBootstrap)) {
            angular2.resumeDeferredBootstrap();
          }
        }
        function reloadWithDebugInfo() {
          window2.name = "NG_ENABLE_DEBUG_INFO!" + window2.name;
          window2.location.reload();
        }
        function getTestability(rootElement) {
          var injector = angular2.element(rootElement).injector();
          if (!injector) {
            throw ngMinErr(
              "test",
              "no injector found for element argument to getTestability"
            );
          }
          return injector.get("$$testability");
        }
        var SNAKE_CASE_REGEXP = /[A-Z]/g;
        function snake_case(name, separator) {
          separator = separator || "_";
          return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {
            return (pos ? separator : "") + letter.toLowerCase();
          });
        }
        var bindJQueryFired = false;
        function bindJQuery() {
          var originalCleanData;
          if (bindJQueryFired) {
            return;
          }
          var jqName = jq();
          jQuery2 = isUndefined(jqName) ? window2.jQuery : !jqName ? void 0 : window2[jqName];
          if (jQuery2 && jQuery2.fn.on) {
            jqLite = jQuery2;
            extend(jQuery2.fn, {
              scope: JQLitePrototype.scope,
              isolateScope: JQLitePrototype.isolateScope,
              controller: JQLitePrototype.controller,
              injector: JQLitePrototype.injector,
              inheritedData: JQLitePrototype.inheritedData
            });
          } else {
            jqLite = JQLite;
          }
          originalCleanData = jqLite.cleanData;
          jqLite.cleanData = function(elems) {
            var events;
            for (var i = 0, elem; (elem = elems[i]) != null; i++) {
              events = (jqLite._data(elem) || {}).events;
              if (events && events.$destroy) {
                jqLite(elem).triggerHandler("$destroy");
              }
            }
            originalCleanData(elems);
          };
          angular2.element = jqLite;
          bindJQueryFired = true;
        }
        function UNSAFE_restoreLegacyJqLiteXHTMLReplacement() {
          JQLite.legacyXHTMLReplacement = true;
        }
        function assertArg(arg, name, reason) {
          if (!arg) {
            throw ngMinErr("areq", "Argument '{0}' is {1}", name || "?", reason || "required");
          }
          return arg;
        }
        function assertArgFn(arg, name, acceptArrayAnnotation) {
          if (acceptArrayAnnotation && isArray(arg)) {
            arg = arg[arg.length - 1];
          }
          assertArg(isFunction(arg), name, "not a function, got " + (arg && typeof arg === "object" ? arg.constructor.name || "Object" : typeof arg));
          return arg;
        }
        function assertNotHasOwnProperty(name, context) {
          if (name === "hasOwnProperty") {
            throw ngMinErr("badname", "hasOwnProperty is not a valid {0} name", context);
          }
        }
        function getter(obj, path, bindFnToScope) {
          if (!path)
            return obj;
          var keys = path.split(".");
          var key2;
          var lastInstance = obj;
          var len = keys.length;
          for (var i = 0; i < len; i++) {
            key2 = keys[i];
            if (obj) {
              obj = (lastInstance = obj)[key2];
            }
          }
          if (!bindFnToScope && isFunction(obj)) {
            return bind(lastInstance, obj);
          }
          return obj;
        }
        function getBlockNodes(nodes) {
          var node = nodes[0];
          var endNode = nodes[nodes.length - 1];
          var blockNodes;
          for (var i = 1; node !== endNode && (node = node.nextSibling); i++) {
            if (blockNodes || nodes[i] !== node) {
              if (!blockNodes) {
                blockNodes = jqLite(slice.call(nodes, 0, i));
              }
              blockNodes.push(node);
            }
          }
          return blockNodes || nodes;
        }
        function createMap() {
          return /* @__PURE__ */ Object.create(null);
        }
        function stringify(value) {
          if (value == null) {
            return "";
          }
          switch (typeof value) {
            case "string":
              break;
            case "number":
              value = "" + value;
              break;
            default:
              if (hasCustomToString(value) && !isArray(value) && !isDate(value)) {
                value = value.toString();
              } else {
                value = toJson(value);
              }
          }
          return value;
        }
        var NODE_TYPE_ELEMENT = 1;
        var NODE_TYPE_ATTRIBUTE = 2;
        var NODE_TYPE_TEXT = 3;
        var NODE_TYPE_COMMENT = 8;
        var NODE_TYPE_DOCUMENT = 9;
        var NODE_TYPE_DOCUMENT_FRAGMENT = 11;
        function setupModuleLoader(window3) {
          var $injectorMinErr2 = minErr("$injector");
          var ngMinErr2 = minErr("ng");
          function ensure(obj, name, factory) {
            return obj[name] || (obj[name] = factory());
          }
          var angular3 = ensure(window3, "angular", Object);
          angular3.$$minErr = angular3.$$minErr || minErr;
          return ensure(angular3, "module", function() {
            var modules = {};
            return function module3(name, requires, configFn) {
              var info = {};
              var assertNotHasOwnProperty2 = function(name2, context) {
                if (name2 === "hasOwnProperty") {
                  throw ngMinErr2("badname", "hasOwnProperty is not a valid {0} name", context);
                }
              };
              assertNotHasOwnProperty2(name, "module");
              if (requires && modules.hasOwnProperty(name)) {
                modules[name] = null;
              }
              return ensure(modules, name, function() {
                if (!requires) {
                  throw $injectorMinErr2("nomod", "Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.", name);
                }
                var invokeQueue = [];
                var configBlocks = [];
                var runBlocks = [];
                var config = invokeLater("$injector", "invoke", "push", configBlocks);
                var moduleInstance = {
                  _invokeQueue: invokeQueue,
                  _configBlocks: configBlocks,
                  _runBlocks: runBlocks,
                  info: function(value) {
                    if (isDefined(value)) {
                      if (!isObject(value))
                        throw ngMinErr2("aobj", "Argument '{0}' must be an object", "value");
                      info = value;
                      return this;
                    }
                    return info;
                  },
                  requires,
                  name,
                  provider: invokeLaterAndSetModuleName("$provide", "provider"),
                  factory: invokeLaterAndSetModuleName("$provide", "factory"),
                  service: invokeLaterAndSetModuleName("$provide", "service"),
                  value: invokeLater("$provide", "value"),
                  constant: invokeLater("$provide", "constant", "unshift"),
                  decorator: invokeLaterAndSetModuleName("$provide", "decorator", configBlocks),
                  animation: invokeLaterAndSetModuleName("$animateProvider", "register"),
                  filter: invokeLaterAndSetModuleName("$filterProvider", "register"),
                  controller: invokeLaterAndSetModuleName("$controllerProvider", "register"),
                  directive: invokeLaterAndSetModuleName("$compileProvider", "directive"),
                  component: invokeLaterAndSetModuleName("$compileProvider", "component"),
                  config,
                  run: function(block) {
                    runBlocks.push(block);
                    return this;
                  }
                };
                if (configFn) {
                  config(configFn);
                }
                return moduleInstance;
                function invokeLater(provider, method, insertMethod, queue) {
                  if (!queue)
                    queue = invokeQueue;
                  return function() {
                    queue[insertMethod || "push"]([provider, method, arguments]);
                    return moduleInstance;
                  };
                }
                function invokeLaterAndSetModuleName(provider, method, queue) {
                  if (!queue)
                    queue = invokeQueue;
                  return function(recipeName, factoryFunction) {
                    if (factoryFunction && isFunction(factoryFunction))
                      factoryFunction.$$moduleName = name;
                    queue.push([provider, method, arguments]);
                    return moduleInstance;
                  };
                }
              });
            };
          });
        }
        function shallowCopy(src, dst) {
          if (isArray(src)) {
            dst = dst || [];
            for (var i = 0, ii = src.length; i < ii; i++) {
              dst[i] = src[i];
            }
          } else if (isObject(src)) {
            dst = dst || {};
            for (var key2 in src) {
              if (!(key2.charAt(0) === "$" && key2.charAt(1) === "$")) {
                dst[key2] = src[key2];
              }
            }
          }
          return dst || src;
        }
        function serializeObject(obj, maxDepth) {
          var seen = [];
          if (isValidObjectMaxDepth(maxDepth)) {
            obj = angular2.copy(obj, null, maxDepth);
          }
          return JSON.stringify(obj, function(key2, val) {
            val = toJsonReplacer(key2, val);
            if (isObject(val)) {
              if (seen.indexOf(val) >= 0)
                return "...";
              seen.push(val);
            }
            return val;
          });
        }
        function toDebugString(obj, maxDepth) {
          if (typeof obj === "function") {
            return obj.toString().replace(/ \{[\s\S]*$/, "");
          } else if (isUndefined(obj)) {
            return "undefined";
          } else if (typeof obj !== "string") {
            return serializeObject(obj, maxDepth);
          }
          return obj;
        }
        var version = {
          full: "1.8.2",
          major: 1,
          minor: 8,
          dot: 2,
          codeName: "meteoric-mining"
        };
        function publishExternalAPI(angular3) {
          extend(angular3, {
            "errorHandlingConfig": errorHandlingConfig,
            "bootstrap": bootstrap,
            "copy": copy,
            "extend": extend,
            "merge": merge,
            "equals": equals,
            "element": jqLite,
            "forEach": forEach,
            "injector": createInjector,
            "noop": noop,
            "bind": bind,
            "toJson": toJson,
            "fromJson": fromJson,
            "identity": identity,
            "isUndefined": isUndefined,
            "isDefined": isDefined,
            "isString": isString,
            "isFunction": isFunction,
            "isObject": isObject,
            "isNumber": isNumber2,
            "isElement": isElement,
            "isArray": isArray,
            "version": version,
            "isDate": isDate,
            "callbacks": { $$counter: 0 },
            "getTestability": getTestability,
            "reloadWithDebugInfo": reloadWithDebugInfo,
            "UNSAFE_restoreLegacyJqLiteXHTMLReplacement": UNSAFE_restoreLegacyJqLiteXHTMLReplacement,
            "$$minErr": minErr,
            "$$csp": csp,
            "$$encodeUriSegment": encodeUriSegment,
            "$$encodeUriQuery": encodeUriQuery,
            "$$lowercase": lowercase,
            "$$stringify": stringify,
            "$$uppercase": uppercase
          });
          angularModule = setupModuleLoader(window2);
          angularModule("ng", ["ngLocale"], [
            "$provide",
            function ngModule($provide) {
              $provide.provider({
                $$sanitizeUri: $$SanitizeUriProvider
              });
              $provide.provider("$compile", $CompileProvider).directive({
                a: htmlAnchorDirective,
                input: inputDirective,
                textarea: inputDirective,
                form: formDirective,
                script: scriptDirective,
                select: selectDirective,
                option: optionDirective,
                ngBind: ngBindDirective,
                ngBindHtml: ngBindHtmlDirective,
                ngBindTemplate: ngBindTemplateDirective,
                ngClass: ngClassDirective,
                ngClassEven: ngClassEvenDirective,
                ngClassOdd: ngClassOddDirective,
                ngCloak: ngCloakDirective,
                ngController: ngControllerDirective,
                ngForm: ngFormDirective,
                ngHide: ngHideDirective,
                ngIf: ngIfDirective,
                ngInclude: ngIncludeDirective,
                ngInit: ngInitDirective,
                ngNonBindable: ngNonBindableDirective,
                ngPluralize: ngPluralizeDirective,
                ngRef: ngRefDirective,
                ngRepeat: ngRepeatDirective,
                ngShow: ngShowDirective,
                ngStyle: ngStyleDirective,
                ngSwitch: ngSwitchDirective,
                ngSwitchWhen: ngSwitchWhenDirective,
                ngSwitchDefault: ngSwitchDefaultDirective,
                ngOptions: ngOptionsDirective,
                ngTransclude: ngTranscludeDirective,
                ngModel: ngModelDirective,
                ngList: ngListDirective,
                ngChange: ngChangeDirective,
                pattern: patternDirective,
                ngPattern: patternDirective,
                required: requiredDirective,
                ngRequired: requiredDirective,
                minlength: minlengthDirective,
                ngMinlength: minlengthDirective,
                maxlength: maxlengthDirective,
                ngMaxlength: maxlengthDirective,
                ngValue: ngValueDirective,
                ngModelOptions: ngModelOptionsDirective
              }).directive({
                ngInclude: ngIncludeFillContentDirective,
                input: hiddenInputBrowserCacheDirective
              }).directive(ngAttributeAliasDirectives).directive(ngEventDirectives);
              $provide.provider({
                $anchorScroll: $AnchorScrollProvider,
                $animate: $AnimateProvider,
                $animateCss: $CoreAnimateCssProvider,
                $$animateJs: $$CoreAnimateJsProvider,
                $$animateQueue: $$CoreAnimateQueueProvider,
                $$AnimateRunner: $$AnimateRunnerFactoryProvider,
                $$animateAsyncRun: $$AnimateAsyncRunFactoryProvider,
                $browser: $BrowserProvider,
                $cacheFactory: $CacheFactoryProvider,
                $controller: $ControllerProvider,
                $document: $DocumentProvider,
                $$isDocumentHidden: $$IsDocumentHiddenProvider,
                $exceptionHandler: $ExceptionHandlerProvider,
                $filter: $FilterProvider,
                $$forceReflow: $$ForceReflowProvider,
                $interpolate: $InterpolateProvider,
                $interval: $IntervalProvider,
                $$intervalFactory: $$IntervalFactoryProvider,
                $http: $HttpProvider,
                $httpParamSerializer: $HttpParamSerializerProvider,
                $httpParamSerializerJQLike: $HttpParamSerializerJQLikeProvider,
                $httpBackend: $HttpBackendProvider,
                $xhrFactory: $xhrFactoryProvider,
                $jsonpCallbacks: $jsonpCallbacksProvider,
                $location: $LocationProvider,
                $log: $LogProvider,
                $parse: $ParseProvider,
                $rootScope: $RootScopeProvider,
                $q: $QProvider,
                $$q: $$QProvider,
                $sce: $SceProvider,
                $sceDelegate: $SceDelegateProvider,
                $sniffer: $SnifferProvider,
                $$taskTrackerFactory: $$TaskTrackerFactoryProvider,
                $templateCache: $TemplateCacheProvider,
                $templateRequest: $TemplateRequestProvider,
                $$testability: $$TestabilityProvider,
                $timeout: $TimeoutProvider,
                $window: $WindowProvider,
                $$rAF: $$RAFProvider,
                $$jqLite: $$jqLiteProvider,
                $$Map: $$MapProvider,
                $$cookieReader: $$CookieReaderProvider
              });
            }
          ]).info({ angularVersion: "1.8.2" });
        }
        JQLite.expando = "ng339";
        var jqCache = JQLite.cache = {}, jqId = 1;
        JQLite._data = function(node) {
          return this.cache[node[this.expando]] || {};
        };
        function jqNextId() {
          return ++jqId;
        }
        var DASH_LOWERCASE_REGEXP = /-([a-z])/g;
        var MS_HACK_REGEXP = /^-ms-/;
        var MOUSE_EVENT_MAP = { mouseleave: "mouseout", mouseenter: "mouseover" };
        var jqLiteMinErr = minErr("jqLite");
        function cssKebabToCamel(name) {
          return kebabToCamel(name.replace(MS_HACK_REGEXP, "ms-"));
        }
        function fnCamelCaseReplace(all, letter) {
          return letter.toUpperCase();
        }
        function kebabToCamel(name) {
          return name.replace(DASH_LOWERCASE_REGEXP, fnCamelCaseReplace);
        }
        var SINGLE_TAG_REGEXP = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/;
        var HTML_REGEXP = /<|&#?\w+;/;
        var TAG_NAME_REGEXP = /<([\w:-]+)/;
        var XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi;
        var wrapMap = {
          thead: ["table"],
          col: ["colgroup", "table"],
          tr: ["tbody", "table"],
          td: ["tr", "tbody", "table"]
        };
        wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
        wrapMap.th = wrapMap.td;
        var wrapMapIE9 = {
          option: [1, '<select multiple="multiple">', "</select>"],
          _default: [0, "", ""]
        };
        for (var key in wrapMap) {
          var wrapMapValueClosing = wrapMap[key];
          var wrapMapValue = wrapMapValueClosing.slice().reverse();
          wrapMapIE9[key] = [wrapMapValue.length, "<" + wrapMapValue.join("><") + ">", "</" + wrapMapValueClosing.join("></") + ">"];
        }
        wrapMapIE9.optgroup = wrapMapIE9.option;
        function jqLiteIsTextNode(html) {
          return !HTML_REGEXP.test(html);
        }
        function jqLiteAcceptsData(node) {
          var nodeType = node.nodeType;
          return nodeType === NODE_TYPE_ELEMENT || !nodeType || nodeType === NODE_TYPE_DOCUMENT;
        }
        function jqLiteHasData(node) {
          for (var key2 in jqCache[node.ng339]) {
            return true;
          }
          return false;
        }
        function jqLiteBuildFragment(html, context) {
          var tmp, tag, wrap, finalHtml, fragment = context.createDocumentFragment(), nodes = [], i;
          if (jqLiteIsTextNode(html)) {
            nodes.push(context.createTextNode(html));
          } else {
            tmp = fragment.appendChild(context.createElement("div"));
            tag = (TAG_NAME_REGEXP.exec(html) || ["", ""])[1].toLowerCase();
            finalHtml = JQLite.legacyXHTMLReplacement ? html.replace(XHTML_TAG_REGEXP, "<$1></$2>") : html;
            if (msie < 10) {
              wrap = wrapMapIE9[tag] || wrapMapIE9._default;
              tmp.innerHTML = wrap[1] + finalHtml + wrap[2];
              i = wrap[0];
              while (i--) {
                tmp = tmp.firstChild;
              }
            } else {
              wrap = wrapMap[tag] || [];
              i = wrap.length;
              while (--i > -1) {
                tmp.appendChild(window2.document.createElement(wrap[i]));
                tmp = tmp.firstChild;
              }
              tmp.innerHTML = finalHtml;
            }
            nodes = concat(nodes, tmp.childNodes);
            tmp = fragment.firstChild;
            tmp.textContent = "";
          }
          fragment.textContent = "";
          fragment.innerHTML = "";
          forEach(nodes, function(node) {
            fragment.appendChild(node);
          });
          return fragment;
        }
        function jqLiteParseHTML(html, context) {
          context = context || window2.document;
          var parsed;
          if (parsed = SINGLE_TAG_REGEXP.exec(html)) {
            return [context.createElement(parsed[1])];
          }
          if (parsed = jqLiteBuildFragment(html, context)) {
            return parsed.childNodes;
          }
          return [];
        }
        function jqLiteWrapNode(node, wrapper) {
          var parent = node.parentNode;
          if (parent) {
            parent.replaceChild(wrapper, node);
          }
          wrapper.appendChild(node);
        }
        var jqLiteContains = window2.Node.prototype.contains || function(arg) {
          return !!(this.compareDocumentPosition(arg) & 16);
        };
        function JQLite(element) {
          if (element instanceof JQLite) {
            return element;
          }
          var argIsString;
          if (isString(element)) {
            element = trim(element);
            argIsString = true;
          }
          if (!(this instanceof JQLite)) {
            if (argIsString && element.charAt(0) !== "<") {
              throw jqLiteMinErr("nosel", "Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");
            }
            return new JQLite(element);
          }
          if (argIsString) {
            jqLiteAddNodes(this, jqLiteParseHTML(element));
          } else if (isFunction(element)) {
            jqLiteReady(element);
          } else {
            jqLiteAddNodes(this, element);
          }
        }
        function jqLiteClone(element) {
          return element.cloneNode(true);
        }
        function jqLiteDealoc(element, onlyDescendants) {
          if (!onlyDescendants && jqLiteAcceptsData(element))
            jqLite.cleanData([element]);
          if (element.querySelectorAll) {
            jqLite.cleanData(element.querySelectorAll("*"));
          }
        }
        function isEmptyObject(obj) {
          var name;
          for (name in obj) {
            return false;
          }
          return true;
        }
        function removeIfEmptyData(element) {
          var expandoId = element.ng339;
          var expandoStore = expandoId && jqCache[expandoId];
          var events = expandoStore && expandoStore.events;
          var data = expandoStore && expandoStore.data;
          if ((!data || isEmptyObject(data)) && (!events || isEmptyObject(events))) {
            delete jqCache[expandoId];
            element.ng339 = void 0;
          }
        }
        function jqLiteOff(element, type, fn, unsupported) {
          if (isDefined(unsupported))
            throw jqLiteMinErr("offargs", "jqLite#off() does not support the `selector` argument");
          var expandoStore = jqLiteExpandoStore(element);
          var events = expandoStore && expandoStore.events;
          var handle = expandoStore && expandoStore.handle;
          if (!handle)
            return;
          if (!type) {
            for (type in events) {
              if (type !== "$destroy") {
                element.removeEventListener(type, handle);
              }
              delete events[type];
            }
          } else {
            var removeHandler = function(type2) {
              var listenerFns = events[type2];
              if (isDefined(fn)) {
                arrayRemove(listenerFns || [], fn);
              }
              if (!(isDefined(fn) && listenerFns && listenerFns.length > 0)) {
                element.removeEventListener(type2, handle);
                delete events[type2];
              }
            };
            forEach(type.split(" "), function(type2) {
              removeHandler(type2);
              if (MOUSE_EVENT_MAP[type2]) {
                removeHandler(MOUSE_EVENT_MAP[type2]);
              }
            });
          }
          removeIfEmptyData(element);
        }
        function jqLiteRemoveData(element, name) {
          var expandoId = element.ng339;
          var expandoStore = expandoId && jqCache[expandoId];
          if (expandoStore) {
            if (name) {
              delete expandoStore.data[name];
            } else {
              expandoStore.data = {};
            }
            removeIfEmptyData(element);
          }
        }
        function jqLiteExpandoStore(element, createIfNecessary) {
          var expandoId = element.ng339, expandoStore = expandoId && jqCache[expandoId];
          if (createIfNecessary && !expandoStore) {
            element.ng339 = expandoId = jqNextId();
            expandoStore = jqCache[expandoId] = { events: {}, data: {}, handle: void 0 };
          }
          return expandoStore;
        }
        function jqLiteData(element, key2, value) {
          if (jqLiteAcceptsData(element)) {
            var prop;
            var isSimpleSetter = isDefined(value);
            var isSimpleGetter = !isSimpleSetter && key2 && !isObject(key2);
            var massGetter = !key2;
            var expandoStore = jqLiteExpandoStore(element, !isSimpleGetter);
            var data = expandoStore && expandoStore.data;
            if (isSimpleSetter) {
              data[kebabToCamel(key2)] = value;
            } else {
              if (massGetter) {
                return data;
              } else {
                if (isSimpleGetter) {
                  return data && data[kebabToCamel(key2)];
                } else {
                  for (prop in key2) {
                    data[kebabToCamel(prop)] = key2[prop];
                  }
                }
              }
            }
          }
        }
        function jqLiteHasClass(element, selector) {
          if (!element.getAttribute)
            return false;
          return (" " + (element.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").indexOf(" " + selector + " ") > -1;
        }
        function jqLiteRemoveClass(element, cssClasses) {
          if (cssClasses && element.setAttribute) {
            var existingClasses = (" " + (element.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ");
            var newClasses = existingClasses;
            forEach(cssClasses.split(" "), function(cssClass) {
              cssClass = trim(cssClass);
              newClasses = newClasses.replace(" " + cssClass + " ", " ");
            });
            if (newClasses !== existingClasses) {
              element.setAttribute("class", trim(newClasses));
            }
          }
        }
        function jqLiteAddClass(element, cssClasses) {
          if (cssClasses && element.setAttribute) {
            var existingClasses = (" " + (element.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ");
            var newClasses = existingClasses;
            forEach(cssClasses.split(" "), function(cssClass) {
              cssClass = trim(cssClass);
              if (newClasses.indexOf(" " + cssClass + " ") === -1) {
                newClasses += cssClass + " ";
              }
            });
            if (newClasses !== existingClasses) {
              element.setAttribute("class", trim(newClasses));
            }
          }
        }
        function jqLiteAddNodes(root, elements) {
          if (elements) {
            if (elements.nodeType) {
              root[root.length++] = elements;
            } else {
              var length = elements.length;
              if (typeof length === "number" && elements.window !== elements) {
                if (length) {
                  for (var i = 0; i < length; i++) {
                    root[root.length++] = elements[i];
                  }
                }
              } else {
                root[root.length++] = elements;
              }
            }
          }
        }
        function jqLiteController(element, name) {
          return jqLiteInheritedData(element, "$" + (name || "ngController") + "Controller");
        }
        function jqLiteInheritedData(element, name, value) {
          if (element.nodeType === NODE_TYPE_DOCUMENT) {
            element = element.documentElement;
          }
          var names = isArray(name) ? name : [name];
          while (element) {
            for (var i = 0, ii = names.length; i < ii; i++) {
              if (isDefined(value = jqLite.data(element, names[i])))
                return value;
            }
            element = element.parentNode || element.nodeType === NODE_TYPE_DOCUMENT_FRAGMENT && element.host;
          }
        }
        function jqLiteEmpty(element) {
          jqLiteDealoc(element, true);
          while (element.firstChild) {
            element.removeChild(element.firstChild);
          }
        }
        function jqLiteRemove(element, keepData) {
          if (!keepData)
            jqLiteDealoc(element);
          var parent = element.parentNode;
          if (parent)
            parent.removeChild(element);
        }
        function jqLiteDocumentLoaded(action, win) {
          win = win || window2;
          if (win.document.readyState === "complete") {
            win.setTimeout(action);
          } else {
            jqLite(win).on("load", action);
          }
        }
        function jqLiteReady(fn) {
          function trigger() {
            window2.document.removeEventListener("DOMContentLoaded", trigger);
            window2.removeEventListener("load", trigger);
            fn();
          }
          if (window2.document.readyState === "complete") {
            window2.setTimeout(fn);
          } else {
            window2.document.addEventListener("DOMContentLoaded", trigger);
            window2.addEventListener("load", trigger);
          }
        }
        var JQLitePrototype = JQLite.prototype = {
          ready: jqLiteReady,
          toString: function() {
            var value = [];
            forEach(this, function(e) {
              value.push("" + e);
            });
            return "[" + value.join(", ") + "]";
          },
          eq: function(index) {
            return index >= 0 ? jqLite(this[index]) : jqLite(this[this.length + index]);
          },
          length: 0,
          push,
          sort: [].sort,
          splice: [].splice
        };
        var BOOLEAN_ATTR = {};
        forEach("multiple,selected,checked,disabled,readOnly,required,open".split(","), function(value) {
          BOOLEAN_ATTR[lowercase(value)] = value;
        });
        var BOOLEAN_ELEMENTS = {};
        forEach("input,select,option,textarea,button,form,details".split(","), function(value) {
          BOOLEAN_ELEMENTS[value] = true;
        });
        var ALIASED_ATTR = {
          "ngMinlength": "minlength",
          "ngMaxlength": "maxlength",
          "ngMin": "min",
          "ngMax": "max",
          "ngPattern": "pattern",
          "ngStep": "step"
        };
        function getBooleanAttrName(element, name) {
          var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];
          return booleanAttr && BOOLEAN_ELEMENTS[nodeName_(element)] && booleanAttr;
        }
        function getAliasedAttrName(name) {
          return ALIASED_ATTR[name];
        }
        forEach({
          data: jqLiteData,
          removeData: jqLiteRemoveData,
          hasData: jqLiteHasData,
          cleanData: function jqLiteCleanData(nodes) {
            for (var i = 0, ii = nodes.length; i < ii; i++) {
              jqLiteRemoveData(nodes[i]);
              jqLiteOff(nodes[i]);
            }
          }
        }, function(fn, name) {
          JQLite[name] = fn;
        });
        forEach({
          data: jqLiteData,
          inheritedData: jqLiteInheritedData,
          scope: function(element) {
            return jqLite.data(element, "$scope") || jqLiteInheritedData(element.parentNode || element, ["$isolateScope", "$scope"]);
          },
          isolateScope: function(element) {
            return jqLite.data(element, "$isolateScope") || jqLite.data(element, "$isolateScopeNoTemplate");
          },
          controller: jqLiteController,
          injector: function(element) {
            return jqLiteInheritedData(element, "$injector");
          },
          removeAttr: function(element, name) {
            element.removeAttribute(name);
          },
          hasClass: jqLiteHasClass,
          css: function(element, name, value) {
            name = cssKebabToCamel(name);
            if (isDefined(value)) {
              element.style[name] = value;
            } else {
              return element.style[name];
            }
          },
          attr: function(element, name, value) {
            var ret;
            var nodeType = element.nodeType;
            if (nodeType === NODE_TYPE_TEXT || nodeType === NODE_TYPE_ATTRIBUTE || nodeType === NODE_TYPE_COMMENT || !element.getAttribute) {
              return;
            }
            var lowercasedName = lowercase(name);
            var isBooleanAttr = BOOLEAN_ATTR[lowercasedName];
            if (isDefined(value)) {
              if (value === null || value === false && isBooleanAttr) {
                element.removeAttribute(name);
              } else {
                element.setAttribute(name, isBooleanAttr ? lowercasedName : value);
              }
            } else {
              ret = element.getAttribute(name);
              if (isBooleanAttr && ret !== null) {
                ret = lowercasedName;
              }
              return ret === null ? void 0 : ret;
            }
          },
          prop: function(element, name, value) {
            if (isDefined(value)) {
              element[name] = value;
            } else {
              return element[name];
            }
          },
          text: function() {
            getText.$dv = "";
            return getText;
            function getText(element, value) {
              if (isUndefined(value)) {
                var nodeType = element.nodeType;
                return nodeType === NODE_TYPE_ELEMENT || nodeType === NODE_TYPE_TEXT ? element.textContent : "";
              }
              element.textContent = value;
            }
          }(),
          val: function(element, value) {
            if (isUndefined(value)) {
              if (element.multiple && nodeName_(element) === "select") {
                var result = [];
                forEach(element.options, function(option) {
                  if (option.selected) {
                    result.push(option.value || option.text);
                  }
                });
                return result;
              }
              return element.value;
            }
            element.value = value;
          },
          html: function(element, value) {
            if (isUndefined(value)) {
              return element.innerHTML;
            }
            jqLiteDealoc(element, true);
            element.innerHTML = value;
          },
          empty: jqLiteEmpty
        }, function(fn, name) {
          JQLite.prototype[name] = function(arg1, arg2) {
            var i, key2;
            var nodeCount = this.length;
            if (fn !== jqLiteEmpty && isUndefined(fn.length === 2 && (fn !== jqLiteHasClass && fn !== jqLiteController) ? arg1 : arg2)) {
              if (isObject(arg1)) {
                for (i = 0; i < nodeCount; i++) {
                  if (fn === jqLiteData) {
                    fn(this[i], arg1);
                  } else {
                    for (key2 in arg1) {
                      fn(this[i], key2, arg1[key2]);
                    }
                  }
                }
                return this;
              } else {
                var value = fn.$dv;
                var jj = isUndefined(value) ? Math.min(nodeCount, 1) : nodeCount;
                for (var j = 0; j < jj; j++) {
                  var nodeValue = fn(this[j], arg1, arg2);
                  value = value ? value + nodeValue : nodeValue;
                }
                return value;
              }
            } else {
              for (i = 0; i < nodeCount; i++) {
                fn(this[i], arg1, arg2);
              }
              return this;
            }
          };
        });
        function createEventHandler(element, events) {
          var eventHandler = function(event, type) {
            event.isDefaultPrevented = function() {
              return event.defaultPrevented;
            };
            var eventFns = events[type || event.type];
            var eventFnsLength = eventFns ? eventFns.length : 0;
            if (!eventFnsLength)
              return;
            if (isUndefined(event.immediatePropagationStopped)) {
              var originalStopImmediatePropagation = event.stopImmediatePropagation;
              event.stopImmediatePropagation = function() {
                event.immediatePropagationStopped = true;
                if (event.stopPropagation) {
                  event.stopPropagation();
                }
                if (originalStopImmediatePropagation) {
                  originalStopImmediatePropagation.call(event);
                }
              };
            }
            event.isImmediatePropagationStopped = function() {
              return event.immediatePropagationStopped === true;
            };
            var handlerWrapper = eventFns.specialHandlerWrapper || defaultHandlerWrapper;
            if (eventFnsLength > 1) {
              eventFns = shallowCopy(eventFns);
            }
            for (var i = 0; i < eventFnsLength; i++) {
              if (!event.isImmediatePropagationStopped()) {
                handlerWrapper(element, event, eventFns[i]);
              }
            }
          };
          eventHandler.elem = element;
          return eventHandler;
        }
        function defaultHandlerWrapper(element, event, handler) {
          handler.call(element, event);
        }
        function specialMouseHandlerWrapper(target, event, handler) {
          var related = event.relatedTarget;
          if (!related || related !== target && !jqLiteContains.call(target, related)) {
            handler.call(target, event);
          }
        }
        forEach({
          removeData: jqLiteRemoveData,
          on: function jqLiteOn(element, type, fn, unsupported) {
            if (isDefined(unsupported))
              throw jqLiteMinErr("onargs", "jqLite#on() does not support the `selector` or `eventData` parameters");
            if (!jqLiteAcceptsData(element)) {
              return;
            }
            var expandoStore = jqLiteExpandoStore(element, true);
            var events = expandoStore.events;
            var handle = expandoStore.handle;
            if (!handle) {
              handle = expandoStore.handle = createEventHandler(element, events);
            }
            var types = type.indexOf(" ") >= 0 ? type.split(" ") : [type];
            var i = types.length;
            var addHandler = function(type2, specialHandlerWrapper, noEventListener) {
              var eventFns = events[type2];
              if (!eventFns) {
                eventFns = events[type2] = [];
                eventFns.specialHandlerWrapper = specialHandlerWrapper;
                if (type2 !== "$destroy" && !noEventListener) {
                  element.addEventListener(type2, handle);
                }
              }
              eventFns.push(fn);
            };
            while (i--) {
              type = types[i];
              if (MOUSE_EVENT_MAP[type]) {
                addHandler(MOUSE_EVENT_MAP[type], specialMouseHandlerWrapper);
                addHandler(type, void 0, true);
              } else {
                addHandler(type);
              }
            }
          },
          off: jqLiteOff,
          one: function(element, type, fn) {
            element = jqLite(element);
            element.on(type, function onFn() {
              element.off(type, fn);
              element.off(type, onFn);
            });
            element.on(type, fn);
          },
          replaceWith: function(element, replaceNode) {
            var index, parent = element.parentNode;
            jqLiteDealoc(element);
            forEach(new JQLite(replaceNode), function(node) {
              if (index) {
                parent.insertBefore(node, index.nextSibling);
              } else {
                parent.replaceChild(node, element);
              }
              index = node;
            });
          },
          children: function(element) {
            var children = [];
            forEach(element.childNodes, function(element2) {
              if (element2.nodeType === NODE_TYPE_ELEMENT) {
                children.push(element2);
              }
            });
            return children;
          },
          contents: function(element) {
            return element.contentDocument || element.childNodes || [];
          },
          append: function(element, node) {
            var nodeType = element.nodeType;
            if (nodeType !== NODE_TYPE_ELEMENT && nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT)
              return;
            node = new JQLite(node);
            for (var i = 0, ii = node.length; i < ii; i++) {
              var child = node[i];
              element.appendChild(child);
            }
          },
          prepend: function(element, node) {
            if (element.nodeType === NODE_TYPE_ELEMENT) {
              var index = element.firstChild;
              forEach(new JQLite(node), function(child) {
                element.insertBefore(child, index);
              });
            }
          },
          wrap: function(element, wrapNode) {
            jqLiteWrapNode(element, jqLite(wrapNode).eq(0).clone()[0]);
          },
          remove: jqLiteRemove,
          detach: function(element) {
            jqLiteRemove(element, true);
          },
          after: function(element, newElement) {
            var index = element, parent = element.parentNode;
            if (parent) {
              newElement = new JQLite(newElement);
              for (var i = 0, ii = newElement.length; i < ii; i++) {
                var node = newElement[i];
                parent.insertBefore(node, index.nextSibling);
                index = node;
              }
            }
          },
          addClass: jqLiteAddClass,
          removeClass: jqLiteRemoveClass,
          toggleClass: function(element, selector, condition) {
            if (selector) {
              forEach(selector.split(" "), function(className) {
                var classCondition = condition;
                if (isUndefined(classCondition)) {
                  classCondition = !jqLiteHasClass(element, className);
                }
                (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className);
              });
            }
          },
          parent: function(element) {
            var parent = element.parentNode;
            return parent && parent.nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT ? parent : null;
          },
          next: function(element) {
            return element.nextElementSibling;
          },
          find: function(element, selector) {
            if (element.getElementsByTagName) {
              return element.getElementsByTagName(selector);
            } else {
              return [];
            }
          },
          clone: jqLiteClone,
          triggerHandler: function(element, event, extraParameters) {
            var dummyEvent, eventFnsCopy, handlerArgs;
            var eventName = event.type || event;
            var expandoStore = jqLiteExpandoStore(element);
            var events = expandoStore && expandoStore.events;
            var eventFns = events && events[eventName];
            if (eventFns) {
              dummyEvent = {
                preventDefault: function() {
                  this.defaultPrevented = true;
                },
                isDefaultPrevented: function() {
                  return this.defaultPrevented === true;
                },
                stopImmediatePropagation: function() {
                  this.immediatePropagationStopped = true;
                },
                isImmediatePropagationStopped: function() {
                  return this.immediatePropagationStopped === true;
                },
                stopPropagation: noop,
                type: eventName,
                target: element
              };
              if (event.type) {
                dummyEvent = extend(dummyEvent, event);
              }
              eventFnsCopy = shallowCopy(eventFns);
              handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];
              forEach(eventFnsCopy, function(fn) {
                if (!dummyEvent.isImmediatePropagationStopped()) {
                  fn.apply(element, handlerArgs);
                }
              });
            }
          }
        }, function(fn, name) {
          JQLite.prototype[name] = function(arg1, arg2, arg3) {
            var value;
            for (var i = 0, ii = this.length; i < ii; i++) {
              if (isUndefined(value)) {
                value = fn(this[i], arg1, arg2, arg3);
                if (isDefined(value)) {
                  value = jqLite(value);
                }
              } else {
                jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3));
              }
            }
            return isDefined(value) ? value : this;
          };
        });
        JQLite.prototype.bind = JQLite.prototype.on;
        JQLite.prototype.unbind = JQLite.prototype.off;
        function $$jqLiteProvider() {
          this.$get = function $$jqLite() {
            return extend(JQLite, {
              hasClass: function(node, classes) {
                if (node.attr)
                  node = node[0];
                return jqLiteHasClass(node, classes);
              },
              addClass: function(node, classes) {
                if (node.attr)
                  node = node[0];
                return jqLiteAddClass(node, classes);
              },
              removeClass: function(node, classes) {
                if (node.attr)
                  node = node[0];
                return jqLiteRemoveClass(node, classes);
              }
            });
          };
        }
        function hashKey(obj, nextUidFn) {
          var key2 = obj && obj.$$hashKey;
          if (key2) {
            if (typeof key2 === "function") {
              key2 = obj.$$hashKey();
            }
            return key2;
          }
          var objType = typeof obj;
          if (objType === "function" || objType === "object" && obj !== null) {
            key2 = obj.$$hashKey = objType + ":" + (nextUidFn || nextUid)();
          } else {
            key2 = objType + ":" + obj;
          }
          return key2;
        }
        var nanKey = /* @__PURE__ */ Object.create(null);
        function NgMapShim() {
          this._keys = [];
          this._values = [];
          this._lastKey = NaN;
          this._lastIndex = -1;
        }
        NgMapShim.prototype = {
          _idx: function(key2) {
            if (key2 !== this._lastKey) {
              this._lastKey = key2;
              this._lastIndex = this._keys.indexOf(key2);
            }
            return this._lastIndex;
          },
          _transformKey: function(key2) {
            return isNumberNaN(key2) ? nanKey : key2;
          },
          get: function(key2) {
            key2 = this._transformKey(key2);
            var idx = this._idx(key2);
            if (idx !== -1) {
              return this._values[idx];
            }
          },
          has: function(key2) {
            key2 = this._transformKey(key2);
            var idx = this._idx(key2);
            return idx !== -1;
          },
          set: function(key2, value) {
            key2 = this._transformKey(key2);
            var idx = this._idx(key2);
            if (idx === -1) {
              idx = this._lastIndex = this._keys.length;
            }
            this._keys[idx] = key2;
            this._values[idx] = value;
          },
          delete: function(key2) {
            key2 = this._transformKey(key2);
            var idx = this._idx(key2);
            if (idx === -1) {
              return false;
            }
            this._keys.splice(idx, 1);
            this._values.splice(idx, 1);
            this._lastKey = NaN;
            this._lastIndex = -1;
            return true;
          }
        };
        var NgMap = NgMapShim;
        var $$MapProvider = [function() {
          this.$get = [function() {
            return NgMap;
          }];
        }];
        var ARROW_ARG = /^([^(]+?)=>/;
        var FN_ARGS = /^[^(]*\(\s*([^)]*)\)/m;
        var FN_ARG_SPLIT = /,/;
        var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/;
        var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
        var $injectorMinErr = minErr("$injector");
        function stringifyFn(fn) {
          return Function.prototype.toString.call(fn);
        }
        function extractArgs(fn) {
          var fnText = stringifyFn(fn).replace(STRIP_COMMENTS, ""), args = fnText.match(ARROW_ARG) || fnText.match(FN_ARGS);
          return args;
        }
        function anonFn(fn) {
          var args = extractArgs(fn);
          if (args) {
            return "function(" + (args[1] || "").replace(/[\s\r\n]+/, " ") + ")";
          }
          return "fn";
        }
        function annotate(fn, strictDi, name) {
          var $inject, argDecl, last;
          if (typeof fn === "function") {
            if (!($inject = fn.$inject)) {
              $inject = [];
              if (fn.length) {
                if (strictDi) {
                  if (!isString(name) || !name) {
                    name = fn.name || anonFn(fn);
                  }
                  throw $injectorMinErr(
                    "strictdi",
                    "{0} is not using explicit annotation and cannot be invoked in strict mode",
                    name
                  );
                }
                argDecl = extractArgs(fn);
                forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) {
                  arg.replace(FN_ARG, function(all, underscore, name2) {
                    $inject.push(name2);
                  });
                });
              }
              fn.$inject = $inject;
            }
          } else if (isArray(fn)) {
            last = fn.length - 1;
            assertArgFn(fn[last], "fn");
            $inject = fn.slice(0, last);
          } else {
            assertArgFn(fn, "fn", true);
          }
          return $inject;
        }
        function createInjector(modulesToLoad, strictDi) {
          strictDi = strictDi === true;
          var INSTANTIATING = {}, providerSuffix = "Provider", path = [], loadedModules = new NgMap(), providerCache = {
            $provide: {
              provider: supportObject(provider),
              factory: supportObject(factory),
              service: supportObject(service),
              value: supportObject(value),
              constant: supportObject(constant),
              decorator
            }
          }, providerInjector = providerCache.$injector = createInternalInjector(providerCache, function(serviceName, caller) {
            if (angular2.isString(caller)) {
              path.push(caller);
            }
            throw $injectorMinErr("unpr", "Unknown provider: {0}", path.join(" <- "));
          }), instanceCache = {}, protoInstanceInjector = createInternalInjector(instanceCache, function(serviceName, caller) {
            var provider2 = providerInjector.get(serviceName + providerSuffix, caller);
            return instanceInjector.invoke(
              provider2.$get,
              provider2,
              void 0,
              serviceName
            );
          }), instanceInjector = protoInstanceInjector;
          providerCache["$injector" + providerSuffix] = { $get: valueFn(protoInstanceInjector) };
          instanceInjector.modules = providerInjector.modules = createMap();
          var runBlocks = loadModules(modulesToLoad);
          instanceInjector = protoInstanceInjector.get("$injector");
          instanceInjector.strictDi = strictDi;
          forEach(runBlocks, function(fn) {
            if (fn)
              instanceInjector.invoke(fn);
          });
          instanceInjector.loadNewModules = function(mods) {
            forEach(loadModules(mods), function(fn) {
              if (fn)
                instanceInjector.invoke(fn);
            });
          };
          return instanceInjector;
          function supportObject(delegate) {
            return function(key2, value2) {
              if (isObject(key2)) {
                forEach(key2, reverseParams(delegate));
              } else {
                return delegate(key2, value2);
              }
            };
          }
          function provider(name, provider_) {
            assertNotHasOwnProperty(name, "service");
            if (isFunction(provider_) || isArray(provider_)) {
              provider_ = providerInjector.instantiate(provider_);
            }
            if (!provider_.$get) {
              throw $injectorMinErr("pget", "Provider '{0}' must define $get factory method.", name);
            }
            return providerCache[name + providerSuffix] = provider_;
          }
          function enforceReturnValue(name, factory2) {
            return function enforcedReturnValue() {
              var result = instanceInjector.invoke(factory2, this);
              if (isUndefined(result)) {
                throw $injectorMinErr("undef", "Provider '{0}' must return a value from $get factory method.", name);
              }
              return result;
            };
          }
          function factory(name, factoryFn, enforce) {
            return provider(name, {
              $get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn
            });
          }
          function service(name, constructor) {
            return factory(name, ["$injector", function($injector) {
              return $injector.instantiate(constructor);
            }]);
          }
          function value(name, val) {
            return factory(name, valueFn(val), false);
          }
          function constant(name, value2) {
            assertNotHasOwnProperty(name, "constant");
            providerCache[name] = value2;
            instanceCache[name] = value2;
          }
          function decorator(serviceName, decorFn) {
            var origProvider = providerInjector.get(serviceName + providerSuffix), orig$get = origProvider.$get;
            origProvider.$get = function() {
              var origInstance = instanceInjector.invoke(orig$get, origProvider);
              return instanceInjector.invoke(decorFn, null, { $delegate: origInstance });
            };
          }
          function loadModules(modulesToLoad2) {
            assertArg(isUndefined(modulesToLoad2) || isArray(modulesToLoad2), "modulesToLoad", "not an array");
            var runBlocks2 = [], moduleFn;
            forEach(modulesToLoad2, function(module3) {
              if (loadedModules.get(module3))
                return;
              loadedModules.set(module3, true);
              function runInvokeQueue(queue) {
                var i, ii;
                for (i = 0, ii = queue.length; i < ii; i++) {
                  var invokeArgs = queue[i], provider2 = providerInjector.get(invokeArgs[0]);
                  provider2[invokeArgs[1]].apply(provider2, invokeArgs[2]);
                }
              }
              try {
                if (isString(module3)) {
                  moduleFn = angularModule(module3);
                  instanceInjector.modules[module3] = moduleFn;
                  runBlocks2 = runBlocks2.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);
                  runInvokeQueue(moduleFn._invokeQueue);
                  runInvokeQueue(moduleFn._configBlocks);
                } else if (isFunction(module3)) {
                  runBlocks2.push(providerInjector.invoke(module3));
                } else if (isArray(module3)) {
                  runBlocks2.push(providerInjector.invoke(module3));
                } else {
                  assertArgFn(module3, "module");
                }
              } catch (e) {
                if (isArray(module3)) {
                  module3 = module3[module3.length - 1];
                }
                if (e.message && e.stack && e.stack.indexOf(e.message) === -1) {
                  e = e.message + "\n" + e.stack;
                }
                throw $injectorMinErr(
                  "modulerr",
                  "Failed to instantiate module {0} due to:\n{1}",
                  module3,
                  e.stack || e.message || e
                );
              }
            });
            return runBlocks2;
          }
          function createInternalInjector(cache, factory2) {
            function getService(serviceName, caller) {
              if (cache.hasOwnProperty(serviceName)) {
                if (cache[serviceName] === INSTANTIATING) {
                  throw $injectorMinErr(
                    "cdep",
                    "Circular dependency found: {0}",
                    serviceName + " <- " + path.join(" <- ")
                  );
                }
                return cache[serviceName];
              } else {
                try {
                  path.unshift(serviceName);
                  cache[serviceName] = INSTANTIATING;
                  cache[serviceName] = factory2(serviceName, caller);
                  return cache[serviceName];
                } catch (err) {
                  if (cache[serviceName] === INSTANTIATING) {
                    delete cache[serviceName];
                  }
                  throw err;
                } finally {
                  path.shift();
                }
              }
            }
            function injectionArgs(fn, locals, serviceName) {
              var args = [], $inject = createInjector.$$annotate(fn, strictDi, serviceName);
              for (var i = 0, length = $inject.length; i < length; i++) {
                var key2 = $inject[i];
                if (typeof key2 !== "string") {
                  throw $injectorMinErr(
                    "itkn",
                    "Incorrect injection token! Expected service name as string, got {0}",
                    key2
                  );
                }
                args.push(locals && locals.hasOwnProperty(key2) ? locals[key2] : getService(key2, serviceName));
              }
              return args;
            }
            function isClass(func) {
              if (msie || typeof func !== "function") {
                return false;
              }
              var result = func.$$ngIsClass;
              if (!isBoolean(result)) {
                result = func.$$ngIsClass = /^class\b/.test(stringifyFn(func));
              }
              return result;
            }
            function invoke(fn, self2, locals, serviceName) {
              if (typeof locals === "string") {
                serviceName = locals;
                locals = null;
              }
              var args = injectionArgs(fn, locals, serviceName);
              if (isArray(fn)) {
                fn = fn[fn.length - 1];
              }
              if (!isClass(fn)) {
                return fn.apply(self2, args);
              } else {
                args.unshift(null);
                return new (Function.prototype.bind.apply(fn, args))();
              }
            }
            function instantiate(Type, locals, serviceName) {
              var ctor = isArray(Type) ? Type[Type.length - 1] : Type;
              var args = injectionArgs(Type, locals, serviceName);
              args.unshift(null);
              return new (Function.prototype.bind.apply(ctor, args))();
            }
            return {
              invoke,
              instantiate,
              get: getService,
              annotate: createInjector.$$annotate,
              has: function(name) {
                return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);
              }
            };
          }
        }
        createInjector.$$annotate = annotate;
        function $AnchorScrollProvider() {
          var autoScrollingEnabled = true;
          this.disableAutoScrolling = function() {
            autoScrollingEnabled = false;
          };
          this.$get = ["$window", "$location", "$rootScope", function($window, $location, $rootScope) {
            var document2 = $window.document;
            function getFirstAnchor(list) {
              var result = null;
              Array.prototype.some.call(list, function(element) {
                if (nodeName_(element) === "a") {
                  result = element;
                  return true;
                }
              });
              return result;
            }
            function getYOffset() {
              var offset = scroll.yOffset;
              if (isFunction(offset)) {
                offset = offset();
              } else if (isElement(offset)) {
                var elem = offset[0];
                var style = $window.getComputedStyle(elem);
                if (style.position !== "fixed") {
                  offset = 0;
                } else {
                  offset = elem.getBoundingClientRect().bottom;
                }
              } else if (!isNumber2(offset)) {
                offset = 0;
              }
              return offset;
            }
            function scrollTo(elem) {
              if (elem) {
                elem.scrollIntoView();
                var offset = getYOffset();
                if (offset) {
                  var elemTop = elem.getBoundingClientRect().top;
                  $window.scrollBy(0, elemTop - offset);
                }
              } else {
                $window.scrollTo(0, 0);
              }
            }
            function scroll(hash) {
              hash = isString(hash) ? hash : isNumber2(hash) ? hash.toString() : $location.hash();
              var elm;
              if (!hash)
                scrollTo(null);
              else if (elm = document2.getElementById(hash))
                scrollTo(elm);
              else if (elm = getFirstAnchor(document2.getElementsByName(hash)))
                scrollTo(elm);
              else if (hash === "top")
                scrollTo(null);
            }
            if (autoScrollingEnabled) {
              $rootScope.$watch(
                function autoScrollWatch() {
                  return $location.hash();
                },
                function autoScrollWatchAction(newVal, oldVal) {
                  if (newVal === oldVal && newVal === "")
                    return;
                  jqLiteDocumentLoaded(function() {
                    $rootScope.$evalAsync(scroll);
                  });
                }
              );
            }
            return scroll;
          }];
        }
        var $animateMinErr = minErr("$animate");
        var ELEMENT_NODE = 1;
        var NG_ANIMATE_CLASSNAME = "ng-animate";
        function mergeClasses(a, b) {
          if (!a && !b)
            return "";
          if (!a)
            return b;
          if (!b)
            return a;
          if (isArray(a))
            a = a.join(" ");
          if (isArray(b))
            b = b.join(" ");
          return a + " " + b;
        }
        function extractElementNode(element) {
          for (var i = 0; i < element.length; i++) {
            var elm = element[i];
            if (elm.nodeType === ELEMENT_NODE) {
              return elm;
            }
          }
        }
        function splitClasses(classes) {
          if (isString(classes)) {
            classes = classes.split(" ");
          }
          var obj = createMap();
          forEach(classes, function(klass) {
            if (klass.length) {
              obj[klass] = true;
            }
          });
          return obj;
        }
        function prepareAnimateOptions(options) {
          return isObject(options) ? options : {};
        }
        var $$CoreAnimateJsProvider = function() {
          this.$get = noop;
        };
        var $$CoreAnimateQueueProvider = function() {
          var postDigestQueue = new NgMap();
          var postDigestElements = [];
          this.$get = [
            "$$AnimateRunner",
            "$rootScope",
            function($$AnimateRunner, $rootScope) {
              return {
                enabled: noop,
                on: noop,
                off: noop,
                pin: noop,
                push: function(element, event, options, domOperation) {
                  if (domOperation) {
                    domOperation();
                  }
                  options = options || {};
                  if (options.from) {
                    element.css(options.from);
                  }
                  if (options.to) {
                    element.css(options.to);
                  }
                  if (options.addClass || options.removeClass) {
                    addRemoveClassesPostDigest(element, options.addClass, options.removeClass);
                  }
                  var runner = new $$AnimateRunner();
                  runner.complete();
                  return runner;
                }
              };
              function updateData(data, classes, value) {
                var changed = false;
                if (classes) {
                  classes = isString(classes) ? classes.split(" ") : isArray(classes) ? classes : [];
                  forEach(classes, function(className) {
                    if (className) {
                      changed = true;
                      data[className] = value;
                    }
                  });
                }
                return changed;
              }
              function handleCSSClassChanges() {
                forEach(postDigestElements, function(element) {
                  var data = postDigestQueue.get(element);
                  if (data) {
                    var existing = splitClasses(element.attr("class"));
                    var toAdd = "";
                    var toRemove = "";
                    forEach(data, function(status, className) {
                      var hasClass = !!existing[className];
                      if (status !== hasClass) {
                        if (status) {
                          toAdd += (toAdd.length ? " " : "") + className;
                        } else {
                          toRemove += (toRemove.length ? " " : "") + className;
                        }
                      }
                    });
                    forEach(element, function(elm) {
                      if (toAdd) {
                        jqLiteAddClass(elm, toAdd);
                      }
                      if (toRemove) {
                        jqLiteRemoveClass(elm, toRemove);
                      }
                    });
                    postDigestQueue.delete(element);
                  }
                });
                postDigestElements.length = 0;
              }
              function addRemoveClassesPostDigest(element, add, remove) {
                var data = postDigestQueue.get(element) || {};
                var classesAdded = updateData(data, add, true);
                var classesRemoved = updateData(data, remove, false);
                if (classesAdded || classesRemoved) {
                  postDigestQueue.set(element, data);
                  postDigestElements.push(element);
                  if (postDigestElements.length === 1) {
                    $rootScope.$$postDigest(handleCSSClassChanges);
                  }
                }
              }
            }
          ];
        };
        var $AnimateProvider = ["$provide", function($provide) {
          var provider = this;
          var classNameFilter = null;
          var customFilter = null;
          this.$$registeredAnimations = /* @__PURE__ */ Object.create(null);
          this.register = function(name, factory) {
            if (name && name.charAt(0) !== ".") {
              throw $animateMinErr("notcsel", "Expecting class selector starting with '.' got '{0}'.", name);
            }
            var key2 = name + "-animation";
            provider.$$registeredAnimations[name.substr(1)] = key2;
            $provide.factory(key2, factory);
          };
          this.customFilter = function(filterFn) {
            if (arguments.length === 1) {
              customFilter = isFunction(filterFn) ? filterFn : null;
            }
            return customFilter;
          };
          this.classNameFilter = function(expression) {
            if (arguments.length === 1) {
              classNameFilter = expression instanceof RegExp ? expression : null;
              if (classNameFilter) {
                var reservedRegex = new RegExp("[(\\s|\\/)]" + NG_ANIMATE_CLASSNAME + "[(\\s|\\/)]");
                if (reservedRegex.test(classNameFilter.toString())) {
                  classNameFilter = null;
                  throw $animateMinErr("nongcls", '$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', NG_ANIMATE_CLASSNAME);
                }
              }
            }
            return classNameFilter;
          };
          this.$get = ["$$animateQueue", function($$animateQueue) {
            function domInsert(element, parentElement, afterElement) {
              if (afterElement) {
                var afterNode = extractElementNode(afterElement);
                if (afterNode && !afterNode.parentNode && !afterNode.previousElementSibling) {
                  afterElement = null;
                }
              }
              if (afterElement) {
                afterElement.after(element);
              } else {
                parentElement.prepend(element);
              }
            }
            return {
              on: $$animateQueue.on,
              off: $$animateQueue.off,
              pin: $$animateQueue.pin,
              enabled: $$animateQueue.enabled,
              cancel: function(runner) {
                if (runner.cancel) {
                  runner.cancel();
                }
              },
              enter: function(element, parent, after, options) {
                parent = parent && jqLite(parent);
                after = after && jqLite(after);
                parent = parent || after.parent();
                domInsert(element, parent, after);
                return $$animateQueue.push(element, "enter", prepareAnimateOptions(options));
              },
              move: function(element, parent, after, options) {
                parent = parent && jqLite(parent);
                after = after && jqLite(after);
                parent = parent || after.parent();
                domInsert(element, parent, after);
                return $$animateQueue.push(element, "move", prepareAnimateOptions(options));
              },
              leave: function(element, options) {
                return $$animateQueue.push(element, "leave", prepareAnimateOptions(options), function() {
                  element.remove();
                });
              },
              addClass: function(element, className, options) {
                options = prepareAnimateOptions(options);
                options.addClass = mergeClasses(options.addclass, className);
                return $$animateQueue.push(element, "addClass", options);
              },
              removeClass: function(element, className, options) {
                options = prepareAnimateOptions(options);
                options.removeClass = mergeClasses(options.removeClass, className);
                return $$animateQueue.push(element, "removeClass", options);
              },
              setClass: function(element, add, remove, options) {
                options = prepareAnimateOptions(options);
                options.addClass = mergeClasses(options.addClass, add);
                options.removeClass = mergeClasses(options.removeClass, remove);
                return $$animateQueue.push(element, "setClass", options);
              },
              animate: function(element, from, to, className, options) {
                options = prepareAnimateOptions(options);
                options.from = options.from ? extend(options.from, from) : from;
                options.to = options.to ? extend(options.to, to) : to;
                className = className || "ng-inline-animate";
                options.tempClasses = mergeClasses(options.tempClasses, className);
                return $$animateQueue.push(element, "animate", options);
              }
            };
          }];
        }];
        var $$AnimateAsyncRunFactoryProvider = function() {
          this.$get = ["$$rAF", function($$rAF) {
            var waitQueue = [];
            function waitForTick(fn) {
              waitQueue.push(fn);
              if (waitQueue.length > 1)
                return;
              $$rAF(function() {
                for (var i = 0; i < waitQueue.length; i++) {
                  waitQueue[i]();
                }
                waitQueue = [];
              });
            }
            return function() {
              var passed = false;
              waitForTick(function() {
                passed = true;
              });
              return function(callback) {
                if (passed) {
                  callback();
                } else {
                  waitForTick(callback);
                }
              };
            };
          }];
        };
        var $$AnimateRunnerFactoryProvider = function() {
          this.$get = [
            "$q",
            "$sniffer",
            "$$animateAsyncRun",
            "$$isDocumentHidden",
            "$timeout",
            function($q, $sniffer, $$animateAsyncRun, $$isDocumentHidden, $timeout) {
              var INITIAL_STATE = 0;
              var DONE_PENDING_STATE = 1;
              var DONE_COMPLETE_STATE = 2;
              AnimateRunner.chain = function(chain, callback) {
                var index = 0;
                next();
                function next() {
                  if (index === chain.length) {
                    callback(true);
                    return;
                  }
                  chain[index](function(response) {
                    if (response === false) {
                      callback(false);
                      return;
                    }
                    index++;
                    next();
                  });
                }
              };
              AnimateRunner.all = function(runners, callback) {
                var count = 0;
                var status = true;
                forEach(runners, function(runner) {
                  runner.done(onProgress);
                });
                function onProgress(response) {
                  status = status && response;
                  if (++count === runners.length) {
                    callback(status);
                  }
                }
              };
              function AnimateRunner(host) {
                this.setHost(host);
                var rafTick = $$animateAsyncRun();
                var timeoutTick = function(fn) {
                  $timeout(fn, 0, false);
                };
                this._doneCallbacks = [];
                this._tick = function(fn) {
                  if ($$isDocumentHidden()) {
                    timeoutTick(fn);
                  } else {
                    rafTick(fn);
                  }
                };
                this._state = 0;
              }
              AnimateRunner.prototype = {
                setHost: function(host) {
                  this.host = host || {};
                },
                done: function(fn) {
                  if (this._state === DONE_COMPLETE_STATE) {
                    fn();
                  } else {
                    this._doneCallbacks.push(fn);
                  }
                },
                progress: noop,
                getPromise: function() {
                  if (!this.promise) {
                    var self2 = this;
                    this.promise = $q(function(resolve, reject) {
                      self2.done(function(status) {
                        if (status === false) {
                          reject();
                        } else {
                          resolve();
                        }
                      });
                    });
                  }
                  return this.promise;
                },
                then: function(resolveHandler, rejectHandler) {
                  return this.getPromise().then(resolveHandler, rejectHandler);
                },
                "catch": function(handler) {
                  return this.getPromise()["catch"](handler);
                },
                "finally": function(handler) {
                  return this.getPromise()["finally"](handler);
                },
                pause: function() {
                  if (this.host.pause) {
                    this.host.pause();
                  }
                },
                resume: function() {
                  if (this.host.resume) {
                    this.host.resume();
                  }
                },
                end: function() {
                  if (this.host.end) {
                    this.host.end();
                  }
                  this._resolve(true);
                },
                cancel: function() {
                  if (this.host.cancel) {
                    this.host.cancel();
                  }
                  this._resolve(false);
                },
                complete: function(response) {
                  var self2 = this;
                  if (self2._state === INITIAL_STATE) {
                    self2._state = DONE_PENDING_STATE;
                    self2._tick(function() {
                      self2._resolve(response);
                    });
                  }
                },
                _resolve: function(response) {
                  if (this._state !== DONE_COMPLETE_STATE) {
                    forEach(this._doneCallbacks, function(fn) {
                      fn(response);
                    });
                    this._doneCallbacks.length = 0;
                    this._state = DONE_COMPLETE_STATE;
                  }
                }
              };
              return AnimateRunner;
            }
          ];
        };
        var $CoreAnimateCssProvider = function() {
          this.$get = ["$$rAF", "$q", "$$AnimateRunner", function($$rAF, $q, $$AnimateRunner) {
            return function(element, initialOptions) {
              var options = initialOptions || {};
              if (!options.$$prepared) {
                options = copy(options);
              }
              if (options.cleanupStyles) {
                options.from = options.to = null;
              }
              if (options.from) {
                element.css(options.from);
                options.from = null;
              }
              var closed, runner = new $$AnimateRunner();
              return {
                start: run,
                end: run
              };
              function run() {
                $$rAF(function() {
                  applyAnimationContents();
                  if (!closed) {
                    runner.complete();
                  }
                  closed = true;
                });
                return runner;
              }
              function applyAnimationContents() {
                if (options.addClass) {
                  element.addClass(options.addClass);
                  options.addClass = null;
                }
                if (options.removeClass) {
                  element.removeClass(options.removeClass);
                  options.removeClass = null;
                }
                if (options.to) {
                  element.css(options.to);
                  options.to = null;
                }
              }
            };
          }];
        };
        function getHash(url) {
          var index = url.indexOf("#");
          return index === -1 ? "" : url.substr(index);
        }
        function trimEmptyHash(url) {
          return url.replace(/#$/, "");
        }
        function Browser(window3, document2, $log, $sniffer, $$taskTrackerFactory) {
          var self2 = this, location = window3.location, history = window3.history, setTimeout2 = window3.setTimeout, clearTimeout2 = window3.clearTimeout, pendingDeferIds = {}, taskTracker = $$taskTrackerFactory($log);
          self2.isMock = false;
          self2.$$completeOutstandingRequest = taskTracker.completeTask;
          self2.$$incOutstandingRequestCount = taskTracker.incTaskCount;
          self2.notifyWhenNoOutstandingRequests = taskTracker.notifyWhenNoPendingTasks;
          var cachedState, lastHistoryState, lastBrowserUrl = location.href, baseElement = document2.find("base"), pendingLocation = null, getCurrentState = !$sniffer.history ? noop : function getCurrentState2() {
            try {
              return history.state;
            } catch (e) {
            }
          };
          cacheState();
          self2.url = function(url, replace, state) {
            if (isUndefined(state)) {
              state = null;
            }
            if (location !== window3.location)
              location = window3.location;
            if (history !== window3.history)
              history = window3.history;
            if (url) {
              var sameState = lastHistoryState === state;
              url = urlResolve(url).href;
              if (lastBrowserUrl === url && (!$sniffer.history || sameState)) {
                return self2;
              }
              var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url);
              lastBrowserUrl = url;
              lastHistoryState = state;
              if ($sniffer.history && (!sameBase || !sameState)) {
                history[replace ? "replaceState" : "pushState"](state, "", url);
                cacheState();
              } else {
                if (!sameBase) {
                  pendingLocation = url;
                }
                if (replace) {
                  location.replace(url);
                } else if (!sameBase) {
                  location.href = url;
                } else {
                  location.hash = getHash(url);
                }
                if (location.href !== url) {
                  pendingLocation = url;
                }
              }
              if (pendingLocation) {
                pendingLocation = url;
              }
              return self2;
            } else {
              return trimEmptyHash(pendingLocation || location.href);
            }
          };
          self2.state = function() {
            return cachedState;
          };
          var urlChangeListeners = [], urlChangeInit = false;
          function cacheStateAndFireUrlChange() {
            pendingLocation = null;
            fireStateOrUrlChange();
          }
          var lastCachedState = null;
          function cacheState() {
            cachedState = getCurrentState();
            cachedState = isUndefined(cachedState) ? null : cachedState;
            if (equals(cachedState, lastCachedState)) {
              cachedState = lastCachedState;
            }
            lastCachedState = cachedState;
            lastHistoryState = cachedState;
          }
          function fireStateOrUrlChange() {
            var prevLastHistoryState = lastHistoryState;
            cacheState();
            if (lastBrowserUrl === self2.url() && prevLastHistoryState === cachedState) {
              return;
            }
            lastBrowserUrl = self2.url();
            lastHistoryState = cachedState;
            forEach(urlChangeListeners, function(listener) {
              listener(self2.url(), cachedState);
            });
          }
          self2.onUrlChange = function(callback) {
            if (!urlChangeInit) {
              if ($sniffer.history)
                jqLite(window3).on("popstate", cacheStateAndFireUrlChange);
              jqLite(window3).on("hashchange", cacheStateAndFireUrlChange);
              urlChangeInit = true;
            }
            urlChangeListeners.push(callback);
            return callback;
          };
          self2.$$applicationDestroyed = function() {
            jqLite(window3).off("hashchange popstate", cacheStateAndFireUrlChange);
          };
          self2.$$checkUrlChange = fireStateOrUrlChange;
          self2.baseHref = function() {
            var href = baseElement.attr("href");
            return href ? href.replace(/^(https?:)?\/\/[^/]*/, "") : "";
          };
          self2.defer = function(fn, delay, taskType) {
            var timeoutId;
            delay = delay || 0;
            taskType = taskType || taskTracker.DEFAULT_TASK_TYPE;
            taskTracker.incTaskCount(taskType);
            timeoutId = setTimeout2(function() {
              delete pendingDeferIds[timeoutId];
              taskTracker.completeTask(fn, taskType);
            }, delay);
            pendingDeferIds[timeoutId] = taskType;
            return timeoutId;
          };
          self2.defer.cancel = function(deferId) {
            if (pendingDeferIds.hasOwnProperty(deferId)) {
              var taskType = pendingDeferIds[deferId];
              delete pendingDeferIds[deferId];
              clearTimeout2(deferId);
              taskTracker.completeTask(noop, taskType);
              return true;
            }
            return false;
          };
        }
        function $BrowserProvider() {
          this.$get = [
            "$window",
            "$log",
            "$sniffer",
            "$document",
            "$$taskTrackerFactory",
            function($window, $log, $sniffer, $document, $$taskTrackerFactory) {
              return new Browser($window, $document, $log, $sniffer, $$taskTrackerFactory);
            }
          ];
        }
        function $CacheFactoryProvider() {
          this.$get = function() {
            var caches = {};
            function cacheFactory(cacheId, options) {
              if (cacheId in caches) {
                throw minErr("$cacheFactory")("iid", "CacheId '{0}' is already taken!", cacheId);
              }
              var size = 0, stats = extend({}, options, { id: cacheId }), data = createMap(), capacity = options && options.capacity || Number.MAX_VALUE, lruHash = createMap(), freshEnd = null, staleEnd = null;
              return caches[cacheId] = {
                put: function(key2, value) {
                  if (isUndefined(value))
                    return;
                  if (capacity < Number.MAX_VALUE) {
                    var lruEntry = lruHash[key2] || (lruHash[key2] = { key: key2 });
                    refresh(lruEntry);
                  }
                  if (!(key2 in data))
                    size++;
                  data[key2] = value;
                  if (size > capacity) {
                    this.remove(staleEnd.key);
                  }
                  return value;
                },
                get: function(key2) {
                  if (capacity < Number.MAX_VALUE) {
                    var lruEntry = lruHash[key2];
                    if (!lruEntry)
                      return;
                    refresh(lruEntry);
                  }
                  return data[key2];
                },
                remove: function(key2) {
                  if (capacity < Number.MAX_VALUE) {
                    var lruEntry = lruHash[key2];
                    if (!lruEntry)
                      return;
                    if (lruEntry === freshEnd)
                      freshEnd = lruEntry.p;
                    if (lruEntry === staleEnd)
                      staleEnd = lruEntry.n;
                    link(lruEntry.n, lruEntry.p);
                    delete lruHash[key2];
                  }
                  if (!(key2 in data))
                    return;
                  delete data[key2];
                  size--;
                },
                removeAll: function() {
                  data = createMap();
                  size = 0;
                  lruHash = createMap();
                  freshEnd = staleEnd = null;
                },
                destroy: function() {
                  data = null;
                  stats = null;
                  lruHash = null;
                  delete caches[cacheId];
                },
                info: function() {
                  return extend({}, stats, { size });
                }
              };
              function refresh(entry) {
                if (entry !== freshEnd) {
                  if (!staleEnd) {
                    staleEnd = entry;
                  } else if (staleEnd === entry) {
                    staleEnd = entry.n;
                  }
                  link(entry.n, entry.p);
                  link(entry, freshEnd);
                  freshEnd = entry;
                  freshEnd.n = null;
                }
              }
              function link(nextEntry, prevEntry) {
                if (nextEntry !== prevEntry) {
                  if (nextEntry)
                    nextEntry.p = prevEntry;
                  if (prevEntry)
                    prevEntry.n = nextEntry;
                }
              }
            }
            cacheFactory.info = function() {
              var info = {};
              forEach(caches, function(cache, cacheId) {
                info[cacheId] = cache.info();
              });
              return info;
            };
            cacheFactory.get = function(cacheId) {
              return caches[cacheId];
            };
            return cacheFactory;
          };
        }
        function $TemplateCacheProvider() {
          this.$get = ["$cacheFactory", function($cacheFactory) {
            return $cacheFactory("templates");
          }];
        }
        var $compileMinErr = minErr("$compile");
        function UNINITIALIZED_VALUE() {
        }
        var _UNINITIALIZED_VALUE = new UNINITIALIZED_VALUE();
        $CompileProvider.$inject = ["$provide", "$$sanitizeUriProvider"];
        function $CompileProvider($provide, $$sanitizeUriProvider) {
          var hasDirectives = {}, Suffix = "Directive", COMMENT_DIRECTIVE_REGEXP = /^\s*directive:\s*([\w-]+)\s+(.*)$/, CLASS_DIRECTIVE_REGEXP = /(([\w-]+)(?::([^;]+))?;?)/, ALL_OR_NOTHING_ATTRS = makeMap("ngSrc,ngSrcset,src,srcset"), REQUIRE_PREFIX_REGEXP = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/;
          var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/;
          var bindingCache = createMap();
          function parseIsolateBindings(scope, directiveName, isController) {
            var LOCAL_REGEXP = /^([@&]|[=<](\*?))(\??)\s*([\w$]*)$/;
            var bindings = createMap();
            forEach(scope, function(definition, scopeName) {
              definition = definition.trim();
              if (definition in bindingCache) {
                bindings[scopeName] = bindingCache[definition];
                return;
              }
              var match = definition.match(LOCAL_REGEXP);
              if (!match) {
                throw $compileMinErr(
                  "iscp",
                  "Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}",
                  directiveName,
                  scopeName,
                  definition,
                  isController ? "controller bindings definition" : "isolate scope definition"
                );
              }
              bindings[scopeName] = {
                mode: match[1][0],
                collection: match[2] === "*",
                optional: match[3] === "?",
                attrName: match[4] || scopeName
              };
              if (match[4]) {
                bindingCache[definition] = bindings[scopeName];
              }
            });
            return bindings;
          }
          function parseDirectiveBindings(directive, directiveName) {
            var bindings = {
              isolateScope: null,
              bindToController: null
            };
            if (isObject(directive.scope)) {
              if (directive.bindToController === true) {
                bindings.bindToController = parseIsolateBindings(
                  directive.scope,
                  directiveName,
                  true
                );
                bindings.isolateScope = {};
              } else {
                bindings.isolateScope = parseIsolateBindings(
                  directive.scope,
                  directiveName,
                  false
                );
              }
            }
            if (isObject(directive.bindToController)) {
              bindings.bindToController = parseIsolateBindings(directive.bindToController, directiveName, true);
            }
            if (bindings.bindToController && !directive.controller) {
              throw $compileMinErr(
                "noctrl",
                "Cannot bind to controller without directive '{0}'s controller.",
                directiveName
              );
            }
            return bindings;
          }
          function assertValidDirectiveName(name) {
            var letter = name.charAt(0);
            if (!letter || letter !== lowercase(letter)) {
              throw $compileMinErr("baddir", "Directive/Component name '{0}' is invalid. The first character must be a lowercase letter", name);
            }
            if (name !== name.trim()) {
              throw $compileMinErr(
                "baddir",
                "Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces",
                name
              );
            }
          }
          function getDirectiveRequire(directive) {
            var require2 = directive.require || directive.controller && directive.name;
            if (!isArray(require2) && isObject(require2)) {
              forEach(require2, function(value, key2) {
                var match = value.match(REQUIRE_PREFIX_REGEXP);
                var name = value.substring(match[0].length);
                if (!name)
                  require2[key2] = match[0] + key2;
              });
            }
            return require2;
          }
          function getDirectiveRestrict(restrict, name) {
            if (restrict && !(isString(restrict) && /[EACM]/.test(restrict))) {
              throw $compileMinErr(
                "badrestrict",
                "Restrict property '{0}' of directive '{1}' is invalid",
                restrict,
                name
              );
            }
            return restrict || "EA";
          }
          this.directive = function registerDirective(name, directiveFactory) {
            assertArg(name, "name");
            assertNotHasOwnProperty(name, "directive");
            if (isString(name)) {
              assertValidDirectiveName(name);
              assertArg(directiveFactory, "directiveFactory");
              if (!hasDirectives.hasOwnProperty(name)) {
                hasDirectives[name] = [];
                $provide.factory(name + Suffix, [
                  "$injector",
                  "$exceptionHandler",
                  function($injector, $exceptionHandler) {
                    var directives = [];
                    forEach(hasDirectives[name], function(directiveFactory2, index) {
                      try {
                        var directive = $injector.invoke(directiveFactory2);
                        if (isFunction(directive)) {
                          directive = { compile: valueFn(directive) };
                        } else if (!directive.compile && directive.link) {
                          directive.compile = valueFn(directive.link);
                        }
                        directive.priority = directive.priority || 0;
                        directive.index = index;
                        directive.name = directive.name || name;
                        directive.require = getDirectiveRequire(directive);
                        directive.restrict = getDirectiveRestrict(directive.restrict, name);
                        directive.$$moduleName = directiveFactory2.$$moduleName;
                        directives.push(directive);
                      } catch (e) {
                        $exceptionHandler(e);
                      }
                    });
                    return directives;
                  }
                ]);
              }
              hasDirectives[name].push(directiveFactory);
            } else {
              forEach(name, reverseParams(registerDirective));
            }
            return this;
          };
          this.component = function registerComponent(name, options) {
            if (!isString(name)) {
              forEach(name, reverseParams(bind(this, registerComponent)));
              return this;
            }
            var controller = options.controller || function() {
            };
            function factory($injector) {
              function makeInjectable(fn) {
                if (isFunction(fn) || isArray(fn)) {
                  return function(tElement, tAttrs) {
                    return $injector.invoke(fn, this, { $element: tElement, $attrs: tAttrs });
                  };
                } else {
                  return fn;
                }
              }
              var template = !options.template && !options.templateUrl ? "" : options.template;
              var ddo = {
                controller,
                controllerAs: identifierForController(options.controller) || options.controllerAs || "$ctrl",
                template: makeInjectable(template),
                templateUrl: makeInjectable(options.templateUrl),
                transclude: options.transclude,
                scope: {},
                bindToController: options.bindings || {},
                restrict: "E",
                require: options.require
              };
              forEach(options, function(val, key2) {
                if (key2.charAt(0) === "$")
                  ddo[key2] = val;
              });
              return ddo;
            }
            forEach(options, function(val, key2) {
              if (key2.charAt(0) === "$") {
                factory[key2] = val;
                if (isFunction(controller))
                  controller[key2] = val;
              }
            });
            factory.$inject = ["$injector"];
            return this.directive(name, factory);
          };
          this.aHrefSanitizationTrustedUrlList = function(regexp) {
            if (isDefined(regexp)) {
              $$sanitizeUriProvider.aHrefSanitizationTrustedUrlList(regexp);
              return this;
            } else {
              return $$sanitizeUriProvider.aHrefSanitizationTrustedUrlList();
            }
          };
          Object.defineProperty(this, "aHrefSanitizationWhitelist", {
            get: function() {
              return this.aHrefSanitizationTrustedUrlList;
            },
            set: function(value) {
              this.aHrefSanitizationTrustedUrlList = value;
            }
          });
          this.imgSrcSanitizationTrustedUrlList = function(regexp) {
            if (isDefined(regexp)) {
              $$sanitizeUriProvider.imgSrcSanitizationTrustedUrlList(regexp);
              return this;
            } else {
              return $$sanitizeUriProvider.imgSrcSanitizationTrustedUrlList();
            }
          };
          Object.defineProperty(this, "imgSrcSanitizationWhitelist", {
            get: function() {
              return this.imgSrcSanitizationTrustedUrlList;
            },
            set: function(value) {
              this.imgSrcSanitizationTrustedUrlList = value;
            }
          });
          var debugInfoEnabled = true;
          this.debugInfoEnabled = function(enabled) {
            if (isDefined(enabled)) {
              debugInfoEnabled = enabled;
              return this;
            }
            return debugInfoEnabled;
          };
          var strictComponentBindingsEnabled = false;
          this.strictComponentBindingsEnabled = function(enabled) {
            if (isDefined(enabled)) {
              strictComponentBindingsEnabled = enabled;
              return this;
            }
            return strictComponentBindingsEnabled;
          };
          var TTL = 10;
          this.onChangesTtl = function(value) {
            if (arguments.length) {
              TTL = value;
              return this;
            }
            return TTL;
          };
          var commentDirectivesEnabledConfig = true;
          this.commentDirectivesEnabled = function(value) {
            if (arguments.length) {
              commentDirectivesEnabledConfig = value;
              return this;
            }
            return commentDirectivesEnabledConfig;
          };
          var cssClassDirectivesEnabledConfig = true;
          this.cssClassDirectivesEnabled = function(value) {
            if (arguments.length) {
              cssClassDirectivesEnabledConfig = value;
              return this;
            }
            return cssClassDirectivesEnabledConfig;
          };
          var PROP_CONTEXTS = createMap();
          this.addPropertySecurityContext = function(elementName, propertyName, ctx) {
            var key2 = elementName.toLowerCase() + "|" + propertyName.toLowerCase();
            if (key2 in PROP_CONTEXTS && PROP_CONTEXTS[key2] !== ctx) {
              throw $compileMinErr("ctxoverride", "Property context '{0}.{1}' already set to '{2}', cannot override to '{3}'.", elementName, propertyName, PROP_CONTEXTS[key2], ctx);
            }
            PROP_CONTEXTS[key2] = ctx;
            return this;
          };
          (function registerNativePropertyContexts() {
            function registerContext(ctx, values) {
              forEach(values, function(v) {
                PROP_CONTEXTS[v.toLowerCase()] = ctx;
              });
            }
            registerContext(SCE_CONTEXTS.HTML, [
              "iframe|srcdoc",
              "*|innerHTML",
              "*|outerHTML"
            ]);
            registerContext(SCE_CONTEXTS.CSS, ["*|style"]);
            registerContext(SCE_CONTEXTS.URL, [
              "area|href",
              "area|ping",
              "a|href",
              "a|ping",
              "blockquote|cite",
              "body|background",
              "del|cite",
              "input|src",
              "ins|cite",
              "q|cite"
            ]);
            registerContext(SCE_CONTEXTS.MEDIA_URL, [
              "audio|src",
              "img|src",
              "img|srcset",
              "source|src",
              "source|srcset",
              "track|src",
              "video|src",
              "video|poster"
            ]);
            registerContext(SCE_CONTEXTS.RESOURCE_URL, [
              "*|formAction",
              "applet|code",
              "applet|codebase",
              "base|href",
              "embed|src",
              "frame|src",
              "form|action",
              "head|profile",
              "html|manifest",
              "iframe|src",
              "link|href",
              "media|src",
              "object|codebase",
              "object|data",
              "script|src"
            ]);
          })();
          this.$get = [
            "$injector",
            "$interpolate",
            "$exceptionHandler",
            "$templateRequest",
            "$parse",
            "$controller",
            "$rootScope",
            "$sce",
            "$animate",
            function($injector, $interpolate, $exceptionHandler, $templateRequest, $parse, $controller, $rootScope, $sce, $animate) {
              var SIMPLE_ATTR_NAME = /^\w/;
              var specialAttrHolder = window2.document.createElement("div");
              var commentDirectivesEnabled = commentDirectivesEnabledConfig;
              var cssClassDirectivesEnabled = cssClassDirectivesEnabledConfig;
              var onChangesTtl = TTL;
              var onChangesQueue;
              function flushOnChangesQueue() {
                try {
                  if (!--onChangesTtl) {
                    onChangesQueue = void 0;
                    throw $compileMinErr("infchng", "{0} $onChanges() iterations reached. Aborting!\n", TTL);
                  }
                  $rootScope.$apply(function() {
                    for (var i = 0, ii = onChangesQueue.length; i < ii; ++i) {
                      try {
                        onChangesQueue[i]();
                      } catch (e) {
                        $exceptionHandler(e);
                      }
                    }
                    onChangesQueue = void 0;
                  });
                } finally {
                  onChangesTtl++;
                }
              }
              function sanitizeSrcset(value, invokeType) {
                if (!value) {
                  return value;
                }
                if (!isString(value)) {
                  throw $compileMinErr("srcset", 'Can\'t pass trusted values to `{0}`: "{1}"', invokeType, value.toString());
                }
                var result = "";
                var trimmedSrcset = trim(value);
                var srcPattern = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/;
                var pattern = /\s/.test(trimmedSrcset) ? srcPattern : /(,)/;
                var rawUris = trimmedSrcset.split(pattern);
                var nbrUrisWith2parts = Math.floor(rawUris.length / 2);
                for (var i = 0; i < nbrUrisWith2parts; i++) {
                  var innerIdx = i * 2;
                  result += $sce.getTrustedMediaUrl(trim(rawUris[innerIdx]));
                  result += " " + trim(rawUris[innerIdx + 1]);
                }
                var lastTuple = trim(rawUris[i * 2]).split(/\s/);
                result += $sce.getTrustedMediaUrl(trim(lastTuple[0]));
                if (lastTuple.length === 2) {
                  result += " " + trim(lastTuple[1]);
                }
                return result;
              }
              function Attributes(element, attributesToCopy) {
                if (attributesToCopy) {
                  var keys = Object.keys(attributesToCopy);
                  var i, l, key2;
                  for (i = 0, l = keys.length; i < l; i++) {
                    key2 = keys[i];
                    this[key2] = attributesToCopy[key2];
                  }
                } else {
                  this.$attr = {};
                }
                this.$$element = element;
              }
              Attributes.prototype = {
                $normalize: directiveNormalize,
                $addClass: function(classVal) {
                  if (classVal && classVal.length > 0) {
                    $animate.addClass(this.$$element, classVal);
                  }
                },
                $removeClass: function(classVal) {
                  if (classVal && classVal.length > 0) {
                    $animate.removeClass(this.$$element, classVal);
                  }
                },
                $updateClass: function(newClasses, oldClasses) {
                  var toAdd = tokenDifference(newClasses, oldClasses);
                  if (toAdd && toAdd.length) {
                    $animate.addClass(this.$$element, toAdd);
                  }
                  var toRemove = tokenDifference(oldClasses, newClasses);
                  if (toRemove && toRemove.length) {
                    $animate.removeClass(this.$$element, toRemove);
                  }
                },
                $set: function(key2, value, writeAttr, attrName) {
                  var node = this.$$element[0], booleanKey = getBooleanAttrName(node, key2), aliasedKey = getAliasedAttrName(key2), observer = key2, nodeName;
                  if (booleanKey) {
                    this.$$element.prop(key2, value);
                    attrName = booleanKey;
                  } else if (aliasedKey) {
                    this[aliasedKey] = value;
                    observer = aliasedKey;
                  }
                  this[key2] = value;
                  if (attrName) {
                    this.$attr[key2] = attrName;
                  } else {
                    attrName = this.$attr[key2];
                    if (!attrName) {
                      this.$attr[key2] = attrName = snake_case(key2, "-");
                    }
                  }
                  nodeName = nodeName_(this.$$element);
                  if (nodeName === "img" && key2 === "srcset") {
                    this[key2] = value = sanitizeSrcset(value, "$set('srcset', value)");
                  }
                  if (writeAttr !== false) {
                    if (value === null || isUndefined(value)) {
                      this.$$element.removeAttr(attrName);
                    } else {
                      if (SIMPLE_ATTR_NAME.test(attrName)) {
                        if (booleanKey && value === false) {
                          this.$$element.removeAttr(attrName);
                        } else {
                          this.$$element.attr(attrName, value);
                        }
                      } else {
                        setSpecialAttr(this.$$element[0], attrName, value);
                      }
                    }
                  }
                  var $$observers = this.$$observers;
                  if ($$observers) {
                    forEach($$observers[observer], function(fn) {
                      try {
                        fn(value);
                      } catch (e) {
                        $exceptionHandler(e);
                      }
                    });
                  }
                },
                $observe: function(key2, fn) {
                  var attrs = this, $$observers = attrs.$$observers || (attrs.$$observers = createMap()), listeners = $$observers[key2] || ($$observers[key2] = []);
                  listeners.push(fn);
                  $rootScope.$evalAsync(function() {
                    if (!listeners.$$inter && attrs.hasOwnProperty(key2) && !isUndefined(attrs[key2])) {
                      fn(attrs[key2]);
                    }
                  });
                  return function() {
                    arrayRemove(listeners, fn);
                  };
                }
              };
              function setSpecialAttr(element, attrName, value) {
                specialAttrHolder.innerHTML = "<span " + attrName + ">";
                var attributes = specialAttrHolder.firstChild.attributes;
                var attribute = attributes[0];
                attributes.removeNamedItem(attribute.name);
                attribute.value = value;
                element.attributes.setNamedItem(attribute);
              }
              function safeAddClass($element, className) {
                try {
                  $element.addClass(className);
                } catch (e) {
                }
              }
              var startSymbol = $interpolate.startSymbol(), endSymbol = $interpolate.endSymbol(), denormalizeTemplate = startSymbol === "{{" && endSymbol === "}}" ? identity : function denormalizeTemplate2(template) {
                return template.replace(/\{\{/g, startSymbol).replace(/}}/g, endSymbol);
              }, NG_PREFIX_BINDING = /^ng(Attr|Prop|On)([A-Z].*)$/;
              var MULTI_ELEMENT_DIR_RE = /^(.+)Start$/;
              compile.$$addBindingInfo = debugInfoEnabled ? function $$addBindingInfo($element, binding) {
                var bindings = $element.data("$binding") || [];
                if (isArray(binding)) {
                  bindings = bindings.concat(binding);
                } else {
                  bindings.push(binding);
                }
                $element.data("$binding", bindings);
              } : noop;
              compile.$$addBindingClass = debugInfoEnabled ? function $$addBindingClass($element) {
                safeAddClass($element, "ng-binding");
              } : noop;
              compile.$$addScopeInfo = debugInfoEnabled ? function $$addScopeInfo($element, scope, isolated, noTemplate) {
                var dataName = isolated ? noTemplate ? "$isolateScopeNoTemplate" : "$isolateScope" : "$scope";
                $element.data(dataName, scope);
              } : noop;
              compile.$$addScopeClass = debugInfoEnabled ? function $$addScopeClass($element, isolated) {
                safeAddClass($element, isolated ? "ng-isolate-scope" : "ng-scope");
              } : noop;
              compile.$$createComment = function(directiveName, comment) {
                var content = "";
                if (debugInfoEnabled) {
                  content = " " + (directiveName || "") + ": ";
                  if (comment)
                    content += comment + " ";
                }
                return window2.document.createComment(content);
              };
              return compile;
              function compile($compileNodes, transcludeFn, maxPriority, ignoreDirective, previousCompileContext) {
                if (!($compileNodes instanceof jqLite)) {
                  $compileNodes = jqLite($compileNodes);
                }
                var compositeLinkFn = compileNodes(
                  $compileNodes,
                  transcludeFn,
                  $compileNodes,
                  maxPriority,
                  ignoreDirective,
                  previousCompileContext
                );
                compile.$$addScopeClass($compileNodes);
                var namespace = null;
                return function publicLinkFn(scope, cloneConnectFn, options) {
                  if (!$compileNodes) {
                    throw $compileMinErr("multilink", "This element has already been linked.");
                  }
                  assertArg(scope, "scope");
                  if (previousCompileContext && previousCompileContext.needsNewScope) {
                    scope = scope.$parent.$new();
                  }
                  options = options || {};
                  var parentBoundTranscludeFn = options.parentBoundTranscludeFn, transcludeControllers = options.transcludeControllers, futureParentElement = options.futureParentElement;
                  if (parentBoundTranscludeFn && parentBoundTranscludeFn.$$boundTransclude) {
                    parentBoundTranscludeFn = parentBoundTranscludeFn.$$boundTransclude;
                  }
                  if (!namespace) {
                    namespace = detectNamespaceForChildElements(futureParentElement);
                  }
                  var $linkNode;
                  if (namespace !== "html") {
                    $linkNode = jqLite(
                      wrapTemplate(namespace, jqLite("<div></div>").append($compileNodes).html())
                    );
                  } else if (cloneConnectFn) {
                    $linkNode = JQLitePrototype.clone.call($compileNodes);
                  } else {
                    $linkNode = $compileNodes;
                  }
                  if (transcludeControllers) {
                    for (var controllerName in transcludeControllers) {
                      $linkNode.data("$" + controllerName + "Controller", transcludeControllers[controllerName].instance);
                    }
                  }
                  compile.$$addScopeInfo($linkNode, scope);
                  if (cloneConnectFn)
                    cloneConnectFn($linkNode, scope);
                  if (compositeLinkFn)
                    compositeLinkFn(scope, $linkNode, $linkNode, parentBoundTranscludeFn);
                  if (!cloneConnectFn) {
                    $compileNodes = compositeLinkFn = null;
                  }
                  return $linkNode;
                };
              }
              function detectNamespaceForChildElements(parentElement) {
                var node = parentElement && parentElement[0];
                if (!node) {
                  return "html";
                } else {
                  return nodeName_(node) !== "foreignobject" && toString.call(node).match(/SVG/) ? "svg" : "html";
                }
              }
              function compileNodes(nodeList, transcludeFn, $rootElement, maxPriority, ignoreDirective, previousCompileContext) {
                var linkFns = [], notLiveList = isArray(nodeList) || nodeList instanceof jqLite, attrs, directives, nodeLinkFn, childNodes, childLinkFn, linkFnFound, nodeLinkFnFound;
                for (var i = 0; i < nodeList.length; i++) {
                  attrs = new Attributes();
                  if (msie === 11) {
                    mergeConsecutiveTextNodes(nodeList, i, notLiveList);
                  }
                  directives = collectDirectives(
                    nodeList[i],
                    [],
                    attrs,
                    i === 0 ? maxPriority : void 0,
                    ignoreDirective
                  );
                  nodeLinkFn = directives.length ? applyDirectivesToNode(
                    directives,
                    nodeList[i],
                    attrs,
                    transcludeFn,
                    $rootElement,
                    null,
                    [],
                    [],
                    previousCompileContext
                  ) : null;
                  if (nodeLinkFn && nodeLinkFn.scope) {
                    compile.$$addScopeClass(attrs.$$element);
                  }
                  childLinkFn = nodeLinkFn && nodeLinkFn.terminal || !(childNodes = nodeList[i].childNodes) || !childNodes.length ? null : compileNodes(
                    childNodes,
                    nodeLinkFn ? (nodeLinkFn.transcludeOnThisElement || !nodeLinkFn.templateOnThisElement) && nodeLinkFn.transclude : transcludeFn
                  );
                  if (nodeLinkFn || childLinkFn) {
                    linkFns.push(i, nodeLinkFn, childLinkFn);
                    linkFnFound = true;
                    nodeLinkFnFound = nodeLinkFnFound || nodeLinkFn;
                  }
                  previousCompileContext = null;
                }
                return linkFnFound ? compositeLinkFn : null;
                function compositeLinkFn(scope, nodeList2, $rootElement2, parentBoundTranscludeFn) {
                  var nodeLinkFn2, childLinkFn2, node, childScope, i2, ii, idx, childBoundTranscludeFn;
                  var stableNodeList;
                  if (nodeLinkFnFound) {
                    var nodeListLength = nodeList2.length;
                    stableNodeList = new Array(nodeListLength);
                    for (i2 = 0; i2 < linkFns.length; i2 += 3) {
                      idx = linkFns[i2];
                      stableNodeList[idx] = nodeList2[idx];
                    }
                  } else {
                    stableNodeList = nodeList2;
                  }
                  for (i2 = 0, ii = linkFns.length; i2 < ii; ) {
                    node = stableNodeList[linkFns[i2++]];
                    nodeLinkFn2 = linkFns[i2++];
                    childLinkFn2 = linkFns[i2++];
                    if (nodeLinkFn2) {
                      if (nodeLinkFn2.scope) {
                        childScope = scope.$new();
                        compile.$$addScopeInfo(jqLite(node), childScope);
                      } else {
                        childScope = scope;
                      }
                      if (nodeLinkFn2.transcludeOnThisElement) {
                        childBoundTranscludeFn = createBoundTranscludeFn(
                          scope,
                          nodeLinkFn2.transclude,
                          parentBoundTranscludeFn
                        );
                      } else if (!nodeLinkFn2.templateOnThisElement && parentBoundTranscludeFn) {
                        childBoundTranscludeFn = parentBoundTranscludeFn;
                      } else if (!parentBoundTranscludeFn && transcludeFn) {
                        childBoundTranscludeFn = createBoundTranscludeFn(scope, transcludeFn);
                      } else {
                        childBoundTranscludeFn = null;
                      }
                      nodeLinkFn2(childLinkFn2, childScope, node, $rootElement2, childBoundTranscludeFn);
                    } else if (childLinkFn2) {
                      childLinkFn2(scope, node.childNodes, void 0, parentBoundTranscludeFn);
                    }
                  }
                }
              }
              function mergeConsecutiveTextNodes(nodeList, idx, notLiveList) {
                var node = nodeList[idx];
                var parent = node.parentNode;
                var sibling;
                if (node.nodeType !== NODE_TYPE_TEXT) {
                  return;
                }
                while (true) {
                  sibling = parent ? node.nextSibling : nodeList[idx + 1];
                  if (!sibling || sibling.nodeType !== NODE_TYPE_TEXT) {
                    break;
                  }
                  node.nodeValue = node.nodeValue + sibling.nodeValue;
                  if (sibling.parentNode) {
                    sibling.parentNode.removeChild(sibling);
                  }
                  if (notLiveList && sibling === nodeList[idx + 1]) {
                    nodeList.splice(idx + 1, 1);
                  }
                }
              }
              function createBoundTranscludeFn(scope, transcludeFn, previousBoundTranscludeFn) {
                function boundTranscludeFn(transcludedScope, cloneFn, controllers, futureParentElement, containingScope) {
                  if (!transcludedScope) {
                    transcludedScope = scope.$new(false, containingScope);
                    transcludedScope.$$transcluded = true;
                  }
                  return transcludeFn(transcludedScope, cloneFn, {
                    parentBoundTranscludeFn: previousBoundTranscludeFn,
                    transcludeControllers: controllers,
                    futureParentElement
                  });
                }
                var boundSlots = boundTranscludeFn.$$slots = createMap();
                for (var slotName in transcludeFn.$$slots) {
                  if (transcludeFn.$$slots[slotName]) {
                    boundSlots[slotName] = createBoundTranscludeFn(scope, transcludeFn.$$slots[slotName], previousBoundTranscludeFn);
                  } else {
                    boundSlots[slotName] = null;
                  }
                }
                return boundTranscludeFn;
              }
              function collectDirectives(node, directives, attrs, maxPriority, ignoreDirective) {
                var nodeType = node.nodeType, attrsMap = attrs.$attr, match, nodeName, className;
                switch (nodeType) {
                  case NODE_TYPE_ELEMENT:
                    nodeName = nodeName_(node);
                    addDirective(
                      directives,
                      directiveNormalize(nodeName),
                      "E",
                      maxPriority,
                      ignoreDirective
                    );
                    for (var attr, name, nName, value, ngPrefixMatch, nAttrs = node.attributes, j = 0, jj = nAttrs && nAttrs.length; j < jj; j++) {
                      var attrStartName = false;
                      var attrEndName = false;
                      var isNgAttr = false, isNgProp = false, isNgEvent = false;
                      var multiElementMatch;
                      attr = nAttrs[j];
                      name = attr.name;
                      value = attr.value;
                      nName = directiveNormalize(name.toLowerCase());
                      if (ngPrefixMatch = nName.match(NG_PREFIX_BINDING)) {
                        isNgAttr = ngPrefixMatch[1] === "Attr";
                        isNgProp = ngPrefixMatch[1] === "Prop";
                        isNgEvent = ngPrefixMatch[1] === "On";
                        name = name.replace(PREFIX_REGEXP, "").toLowerCase().substr(4 + ngPrefixMatch[1].length).replace(/_(.)/g, function(match2, letter) {
                          return letter.toUpperCase();
                        });
                      } else if ((multiElementMatch = nName.match(MULTI_ELEMENT_DIR_RE)) && directiveIsMultiElement(multiElementMatch[1])) {
                        attrStartName = name;
                        attrEndName = name.substr(0, name.length - 5) + "end";
                        name = name.substr(0, name.length - 6);
                      }
                      if (isNgProp || isNgEvent) {
                        attrs[nName] = value;
                        attrsMap[nName] = attr.name;
                        if (isNgProp) {
                          addPropertyDirective(node, directives, nName, name);
                        } else {
                          addEventDirective(directives, nName, name);
                        }
                      } else {
                        nName = directiveNormalize(name.toLowerCase());
                        attrsMap[nName] = name;
                        if (isNgAttr || !attrs.hasOwnProperty(nName)) {
                          attrs[nName] = value;
                          if (getBooleanAttrName(node, nName)) {
                            attrs[nName] = true;
                          }
                        }
                        addAttrInterpolateDirective(node, directives, value, nName, isNgAttr);
                        addDirective(
                          directives,
                          nName,
                          "A",
                          maxPriority,
                          ignoreDirective,
                          attrStartName,
                          attrEndName
                        );
                      }
                    }
                    if (nodeName === "input" && node.getAttribute("type") === "hidden") {
                      node.setAttribute("autocomplete", "off");
                    }
                    if (!cssClassDirectivesEnabled)
                      break;
                    className = node.className;
                    if (isObject(className)) {
                      className = className.animVal;
                    }
                    if (isString(className) && className !== "") {
                      while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) {
                        nName = directiveNormalize(match[2]);
                        if (addDirective(directives, nName, "C", maxPriority, ignoreDirective)) {
                          attrs[nName] = trim(match[3]);
                        }
                        className = className.substr(match.index + match[0].length);
                      }
                    }
                    break;
                  case NODE_TYPE_TEXT:
                    addTextInterpolateDirective(directives, node.nodeValue);
                    break;
                  case NODE_TYPE_COMMENT:
                    if (!commentDirectivesEnabled)
                      break;
                    collectCommentDirectives(node, directives, attrs, maxPriority, ignoreDirective);
                    break;
                }
                directives.sort(byPriority);
                return directives;
              }
              function collectCommentDirectives(node, directives, attrs, maxPriority, ignoreDirective) {
                try {
                  var match = COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue);
                  if (match) {
                    var nName = directiveNormalize(match[1]);
                    if (addDirective(directives, nName, "M", maxPriority, ignoreDirective)) {
                      attrs[nName] = trim(match[2]);
                    }
                  }
                } catch (e) {
                }
              }
              function groupScan(node, attrStart, attrEnd) {
                var nodes = [];
                var depth = 0;
                if (attrStart && node.hasAttribute && node.hasAttribute(attrStart)) {
                  do {
                    if (!node) {
                      throw $compileMinErr(
                        "uterdir",
                        "Unterminated attribute, found '{0}' but no matching '{1}' found.",
                        attrStart,
                        attrEnd
                      );
                    }
                    if (node.nodeType === NODE_TYPE_ELEMENT) {
                      if (node.hasAttribute(attrStart))
                        depth++;
                      if (node.hasAttribute(attrEnd))
                        depth--;
                    }
                    nodes.push(node);
                    node = node.nextSibling;
                  } while (depth > 0);
                } else {
                  nodes.push(node);
                }
                return jqLite(nodes);
              }
              function groupElementsLinkFnWrapper(linkFn, attrStart, attrEnd) {
                return function groupedElementsLink(scope, element, attrs, controllers, transcludeFn) {
                  element = groupScan(element[0], attrStart, attrEnd);
                  return linkFn(scope, element, attrs, controllers, transcludeFn);
                };
              }
              function compilationGenerator(eager, $compileNodes, transcludeFn, maxPriority, ignoreDirective, previousCompileContext) {
                var compiled;
                if (eager) {
                  return compile($compileNodes, transcludeFn, maxPriority, ignoreDirective, previousCompileContext);
                }
                return function lazyCompilation() {
                  if (!compiled) {
                    compiled = compile($compileNodes, transcludeFn, maxPriority, ignoreDirective, previousCompileContext);
                    $compileNodes = transcludeFn = previousCompileContext = null;
                  }
                  return compiled.apply(this, arguments);
                };
              }
              function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn, jqCollection, originalReplaceDirective, preLinkFns, postLinkFns, previousCompileContext) {
                previousCompileContext = previousCompileContext || {};
                var terminalPriority = -Number.MAX_VALUE, newScopeDirective = previousCompileContext.newScopeDirective, controllerDirectives = previousCompileContext.controllerDirectives, newIsolateScopeDirective = previousCompileContext.newIsolateScopeDirective, templateDirective = previousCompileContext.templateDirective, nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective, hasTranscludeDirective = false, hasTemplate = false, hasElementTranscludeDirective = previousCompileContext.hasElementTranscludeDirective, $compileNode = templateAttrs.$$element = jqLite(compileNode), directive, directiveName, $template, replaceDirective = originalReplaceDirective, childTranscludeFn = transcludeFn, linkFn, didScanForMultipleTransclusion = false, mightHaveMultipleTransclusionError = false, directiveValue;
                for (var i = 0, ii = directives.length; i < ii; i++) {
                  directive = directives[i];
                  var attrStart = directive.$$start;
                  var attrEnd = directive.$$end;
                  if (attrStart) {
                    $compileNode = groupScan(compileNode, attrStart, attrEnd);
                  }
                  $template = void 0;
                  if (terminalPriority > directive.priority) {
                    break;
                  }
                  directiveValue = directive.scope;
                  if (directiveValue) {
                    if (!directive.templateUrl) {
                      if (isObject(directiveValue)) {
                        assertNoDuplicate(
                          "new/isolated scope",
                          newIsolateScopeDirective || newScopeDirective,
                          directive,
                          $compileNode
                        );
                        newIsolateScopeDirective = directive;
                      } else {
                        assertNoDuplicate(
                          "new/isolated scope",
                          newIsolateScopeDirective,
                          directive,
                          $compileNode
                        );
                      }
                    }
                    newScopeDirective = newScopeDirective || directive;
                  }
                  directiveName = directive.name;
                  if (!didScanForMultipleTransclusion && (directive.replace && (directive.templateUrl || directive.template) || directive.transclude && !directive.$$tlb)) {
                    var candidateDirective;
                    for (var scanningIndex = i + 1; candidateDirective = directives[scanningIndex++]; ) {
                      if (candidateDirective.transclude && !candidateDirective.$$tlb || candidateDirective.replace && (candidateDirective.templateUrl || candidateDirective.template)) {
                        mightHaveMultipleTransclusionError = true;
                        break;
                      }
                    }
                    didScanForMultipleTransclusion = true;
                  }
                  if (!directive.templateUrl && directive.controller) {
                    controllerDirectives = controllerDirectives || createMap();
                    assertNoDuplicate(
                      "'" + directiveName + "' controller",
                      controllerDirectives[directiveName],
                      directive,
                      $compileNode
                    );
                    controllerDirectives[directiveName] = directive;
                  }
                  directiveValue = directive.transclude;
                  if (directiveValue) {
                    hasTranscludeDirective = true;
                    if (!directive.$$tlb) {
                      assertNoDuplicate("transclusion", nonTlbTranscludeDirective, directive, $compileNode);
                      nonTlbTranscludeDirective = directive;
                    }
                    if (directiveValue === "element") {
                      hasElementTranscludeDirective = true;
                      terminalPriority = directive.priority;
                      $template = $compileNode;
                      $compileNode = templateAttrs.$$element = jqLite(compile.$$createComment(directiveName, templateAttrs[directiveName]));
                      compileNode = $compileNode[0];
                      replaceWith(jqCollection, sliceArgs($template), compileNode);
                      childTranscludeFn = compilationGenerator(
                        mightHaveMultipleTransclusionError,
                        $template,
                        transcludeFn,
                        terminalPriority,
                        replaceDirective && replaceDirective.name,
                        {
                          nonTlbTranscludeDirective
                        }
                      );
                    } else {
                      var slots = createMap();
                      if (!isObject(directiveValue)) {
                        $template = jqLite(jqLiteClone(compileNode)).contents();
                      } else {
                        $template = window2.document.createDocumentFragment();
                        var slotMap = createMap();
                        var filledSlots = createMap();
                        forEach(directiveValue, function(elementSelector, slotName2) {
                          var optional = elementSelector.charAt(0) === "?";
                          elementSelector = optional ? elementSelector.substring(1) : elementSelector;
                          slotMap[elementSelector] = slotName2;
                          slots[slotName2] = null;
                          filledSlots[slotName2] = optional;
                        });
                        forEach($compileNode.contents(), function(node) {
                          var slotName2 = slotMap[directiveNormalize(nodeName_(node))];
                          if (slotName2) {
                            filledSlots[slotName2] = true;
                            slots[slotName2] = slots[slotName2] || window2.document.createDocumentFragment();
                            slots[slotName2].appendChild(node);
                          } else {
                            $template.appendChild(node);
                          }
                        });
                        forEach(filledSlots, function(filled, slotName2) {
                          if (!filled) {
                            throw $compileMinErr("reqslot", "Required transclusion slot `{0}` was not filled.", slotName2);
                          }
                        });
                        for (var slotName in slots) {
                          if (slots[slotName]) {
                            var slotCompileNodes = jqLite(slots[slotName].childNodes);
                            slots[slotName] = compilationGenerator(mightHaveMultipleTransclusionError, slotCompileNodes, transcludeFn);
                          }
                        }
                        $template = jqLite($template.childNodes);
                      }
                      $compileNode.empty();
                      childTranscludeFn = compilationGenerator(
                        mightHaveMultipleTransclusionError,
                        $template,
                        transcludeFn,
                        void 0,
                        void 0,
                        { needsNewScope: directive.$$isolateScope || directive.$$newScope }
                      );
                      childTranscludeFn.$$slots = slots;
                    }
                  }
                  if (directive.template) {
                    hasTemplate = true;
                    assertNoDuplicate("template", templateDirective, directive, $compileNode);
                    templateDirective = directive;
                    directiveValue = isFunction(directive.template) ? directive.template($compileNode, templateAttrs) : directive.template;
                    directiveValue = denormalizeTemplate(directiveValue);
                    if (directive.replace) {
                      replaceDirective = directive;
                      if (jqLiteIsTextNode(directiveValue)) {
                        $template = [];
                      } else {
                        $template = removeComments(wrapTemplate(directive.templateNamespace, trim(directiveValue)));
                      }
                      compileNode = $template[0];
                      if ($template.length !== 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
                        throw $compileMinErr(
                          "tplrt",
                          "Template for directive '{0}' must have exactly one root element. {1}",
                          directiveName,
                          ""
                        );
                      }
                      replaceWith(jqCollection, $compileNode, compileNode);
                      var newTemplateAttrs = { $attr: {} };
                      var templateDirectives = collectDirectives(compileNode, [], newTemplateAttrs);
                      var unprocessedDirectives = directives.splice(i + 1, directives.length - (i + 1));
                      if (newIsolateScopeDirective || newScopeDirective) {
                        markDirectiveScope(templateDirectives, newIsolateScopeDirective, newScopeDirective);
                      }
                      directives = directives.concat(templateDirectives).concat(unprocessedDirectives);
                      mergeTemplateAttributes(templateAttrs, newTemplateAttrs);
                      ii = directives.length;
                    } else {
                      $compileNode.html(directiveValue);
                    }
                  }
                  if (directive.templateUrl) {
                    hasTemplate = true;
                    assertNoDuplicate("template", templateDirective, directive, $compileNode);
                    templateDirective = directive;
                    if (directive.replace) {
                      replaceDirective = directive;
                    }
                    nodeLinkFn = compileTemplateUrl(
                      directives.splice(i, directives.length - i),
                      $compileNode,
                      templateAttrs,
                      jqCollection,
                      hasTranscludeDirective && childTranscludeFn,
                      preLinkFns,
                      postLinkFns,
                      {
                        controllerDirectives,
                        newScopeDirective: newScopeDirective !== directive && newScopeDirective,
                        newIsolateScopeDirective,
                        templateDirective,
                        nonTlbTranscludeDirective
                      }
                    );
                    ii = directives.length;
                  } else if (directive.compile) {
                    try {
                      linkFn = directive.compile($compileNode, templateAttrs, childTranscludeFn);
                      var context = directive.$$originalDirective || directive;
                      if (isFunction(linkFn)) {
                        addLinkFns(null, bind(context, linkFn), attrStart, attrEnd);
                      } else if (linkFn) {
                        addLinkFns(bind(context, linkFn.pre), bind(context, linkFn.post), attrStart, attrEnd);
                      }
                    } catch (e) {
                      $exceptionHandler(e, startingTag($compileNode));
                    }
                  }
                  if (directive.terminal) {
                    nodeLinkFn.terminal = true;
                    terminalPriority = Math.max(terminalPriority, directive.priority);
                  }
                }
                nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true;
                nodeLinkFn.transcludeOnThisElement = hasTranscludeDirective;
                nodeLinkFn.templateOnThisElement = hasTemplate;
                nodeLinkFn.transclude = childTranscludeFn;
                previousCompileContext.hasElementTranscludeDirective = hasElementTranscludeDirective;
                return nodeLinkFn;
                function addLinkFns(pre, post, attrStart2, attrEnd2) {
                  if (pre) {
                    if (attrStart2)
                      pre = groupElementsLinkFnWrapper(pre, attrStart2, attrEnd2);
                    pre.require = directive.require;
                    pre.directiveName = directiveName;
                    if (newIsolateScopeDirective === directive || directive.$$isolateScope) {
                      pre = cloneAndAnnotateFn(pre, { isolateScope: true });
                    }
                    preLinkFns.push(pre);
                  }
                  if (post) {
                    if (attrStart2)
                      post = groupElementsLinkFnWrapper(post, attrStart2, attrEnd2);
                    post.require = directive.require;
                    post.directiveName = directiveName;
                    if (newIsolateScopeDirective === directive || directive.$$isolateScope) {
                      post = cloneAndAnnotateFn(post, { isolateScope: true });
                    }
                    postLinkFns.push(post);
                  }
                }
                function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn) {
                  var i2, ii2, linkFn2, isolateScope, controllerScope, elementControllers, transcludeFn2, $element, attrs, scopeBindingInfo;
                  if (compileNode === linkNode) {
                    attrs = templateAttrs;
                    $element = templateAttrs.$$element;
                  } else {
                    $element = jqLite(linkNode);
                    attrs = new Attributes($element, templateAttrs);
                  }
                  controllerScope = scope;
                  if (newIsolateScopeDirective) {
                    isolateScope = scope.$new(true);
                  } else if (newScopeDirective) {
                    controllerScope = scope.$parent;
                  }
                  if (boundTranscludeFn) {
                    transcludeFn2 = controllersBoundTransclude;
                    transcludeFn2.$$boundTransclude = boundTranscludeFn;
                    transcludeFn2.isSlotFilled = function(slotName2) {
                      return !!boundTranscludeFn.$$slots[slotName2];
                    };
                  }
                  if (controllerDirectives) {
                    elementControllers = setupControllers($element, attrs, transcludeFn2, controllerDirectives, isolateScope, scope, newIsolateScopeDirective);
                  }
                  if (newIsolateScopeDirective) {
                    compile.$$addScopeInfo($element, isolateScope, true, !(templateDirective && (templateDirective === newIsolateScopeDirective || templateDirective === newIsolateScopeDirective.$$originalDirective)));
                    compile.$$addScopeClass($element, true);
                    isolateScope.$$isolateBindings = newIsolateScopeDirective.$$isolateBindings;
                    scopeBindingInfo = initializeDirectiveBindings(
                      scope,
                      attrs,
                      isolateScope,
                      isolateScope.$$isolateBindings,
                      newIsolateScopeDirective
                    );
                    if (scopeBindingInfo.removeWatches) {
                      isolateScope.$on("$destroy", scopeBindingInfo.removeWatches);
                    }
                  }
                  for (var name in elementControllers) {
                    var controllerDirective = controllerDirectives[name];
                    var controller = elementControllers[name];
                    var bindings = controllerDirective.$$bindings.bindToController;
                    controller.instance = controller();
                    $element.data("$" + controllerDirective.name + "Controller", controller.instance);
                    controller.bindingInfo = initializeDirectiveBindings(controllerScope, attrs, controller.instance, bindings, controllerDirective);
                  }
                  forEach(controllerDirectives, function(controllerDirective2, name2) {
                    var require2 = controllerDirective2.require;
                    if (controllerDirective2.bindToController && !isArray(require2) && isObject(require2)) {
                      extend(elementControllers[name2].instance, getControllers(name2, require2, $element, elementControllers));
                    }
                  });
                  forEach(elementControllers, function(controller2) {
                    var controllerInstance = controller2.instance;
                    if (isFunction(controllerInstance.$onChanges)) {
                      try {
                        controllerInstance.$onChanges(controller2.bindingInfo.initialChanges);
                      } catch (e) {
                        $exceptionHandler(e);
                      }
                    }
                    if (isFunction(controllerInstance.$onInit)) {
                      try {
                        controllerInstance.$onInit();
                      } catch (e) {
                        $exceptionHandler(e);
                      }
                    }
                    if (isFunction(controllerInstance.$doCheck)) {
                      controllerScope.$watch(function() {
                        controllerInstance.$doCheck();
                      });
                      controllerInstance.$doCheck();
                    }
                    if (isFunction(controllerInstance.$onDestroy)) {
                      controllerScope.$on("$destroy", function callOnDestroyHook() {
                        controllerInstance.$onDestroy();
                      });
                    }
                  });
                  for (i2 = 0, ii2 = preLinkFns.length; i2 < ii2; i2++) {
                    linkFn2 = preLinkFns[i2];
                    invokeLinkFn(
                      linkFn2,
                      linkFn2.isolateScope ? isolateScope : scope,
                      $element,
                      attrs,
                      linkFn2.require && getControllers(linkFn2.directiveName, linkFn2.require, $element, elementControllers),
                      transcludeFn2
                    );
                  }
                  var scopeToChild = scope;
                  if (newIsolateScopeDirective && (newIsolateScopeDirective.template || newIsolateScopeDirective.templateUrl === null)) {
                    scopeToChild = isolateScope;
                  }
                  if (childLinkFn) {
                    childLinkFn(scopeToChild, linkNode.childNodes, void 0, boundTranscludeFn);
                  }
                  for (i2 = postLinkFns.length - 1; i2 >= 0; i2--) {
                    linkFn2 = postLinkFns[i2];
                    invokeLinkFn(
                      linkFn2,
                      linkFn2.isolateScope ? isolateScope : scope,
                      $element,
                      attrs,
                      linkFn2.require && getControllers(linkFn2.directiveName, linkFn2.require, $element, elementControllers),
                      transcludeFn2
                    );
                  }
                  forEach(elementControllers, function(controller2) {
                    var controllerInstance = controller2.instance;
                    if (isFunction(controllerInstance.$postLink)) {
                      controllerInstance.$postLink();
                    }
                  });
                  function controllersBoundTransclude(scope2, cloneAttachFn, futureParentElement, slotName2) {
                    var transcludeControllers;
                    if (!isScope(scope2)) {
                      slotName2 = futureParentElement;
                      futureParentElement = cloneAttachFn;
                      cloneAttachFn = scope2;
                      scope2 = void 0;
                    }
                    if (hasElementTranscludeDirective) {
                      transcludeControllers = elementControllers;
                    }
                    if (!futureParentElement) {
                      futureParentElement = hasElementTranscludeDirective ? $element.parent() : $element;
                    }
                    if (slotName2) {
                      var slotTranscludeFn = boundTranscludeFn.$$slots[slotName2];
                      if (slotTranscludeFn) {
                        return slotTranscludeFn(scope2, cloneAttachFn, transcludeControllers, futureParentElement, scopeToChild);
                      } else if (isUndefined(slotTranscludeFn)) {
                        throw $compileMinErr(
                          "noslot",
                          'No parent directive that requires a transclusion with slot name "{0}". Element: {1}',
                          slotName2,
                          startingTag($element)
                        );
                      }
                    } else {
                      return boundTranscludeFn(scope2, cloneAttachFn, transcludeControllers, futureParentElement, scopeToChild);
                    }
                  }
                }
              }
              function getControllers(directiveName, require2, $element, elementControllers) {
                var value;
                if (isString(require2)) {
                  var match = require2.match(REQUIRE_PREFIX_REGEXP);
                  var name = require2.substring(match[0].length);
                  var inheritType = match[1] || match[3];
                  var optional = match[2] === "?";
                  if (inheritType === "^^") {
                    $element = $element.parent();
                  } else {
                    value = elementControllers && elementControllers[name];
                    value = value && value.instance;
                  }
                  if (!value) {
                    var dataName = "$" + name + "Controller";
                    if (inheritType === "^^" && $element[0] && $element[0].nodeType === NODE_TYPE_DOCUMENT) {
                      value = null;
                    } else {
                      value = inheritType ? $element.inheritedData(dataName) : $element.data(dataName);
                    }
                  }
                  if (!value && !optional) {
                    throw $compileMinErr(
                      "ctreq",
                      "Controller '{0}', required by directive '{1}', can't be found!",
                      name,
                      directiveName
                    );
                  }
                } else if (isArray(require2)) {
                  value = [];
                  for (var i = 0, ii = require2.length; i < ii; i++) {
                    value[i] = getControllers(directiveName, require2[i], $element, elementControllers);
                  }
                } else if (isObject(require2)) {
                  value = {};
                  forEach(require2, function(controller, property) {
                    value[property] = getControllers(directiveName, controller, $element, elementControllers);
                  });
                }
                return value || null;
              }
              function setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope, newIsolateScopeDirective) {
                var elementControllers = createMap();
                for (var controllerKey in controllerDirectives) {
                  var directive = controllerDirectives[controllerKey];
                  var locals = {
                    $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope,
                    $element,
                    $attrs: attrs,
                    $transclude: transcludeFn
                  };
                  var controller = directive.controller;
                  if (controller === "@") {
                    controller = attrs[directive.name];
                  }
                  var controllerInstance = $controller(controller, locals, true, directive.controllerAs);
                  elementControllers[directive.name] = controllerInstance;
                  $element.data("$" + directive.name + "Controller", controllerInstance.instance);
                }
                return elementControllers;
              }
              function markDirectiveScope(directives, isolateScope, newScope) {
                for (var j = 0, jj = directives.length; j < jj; j++) {
                  directives[j] = inherit(directives[j], { $$isolateScope: isolateScope, $$newScope: newScope });
                }
              }
              function addDirective(tDirectives, name, location, maxPriority, ignoreDirective, startAttrName, endAttrName) {
                if (name === ignoreDirective)
                  return null;
                var match = null;
                if (hasDirectives.hasOwnProperty(name)) {
                  for (var directive, directives = $injector.get(name + Suffix), i = 0, ii = directives.length; i < ii; i++) {
                    directive = directives[i];
                    if ((isUndefined(maxPriority) || maxPriority > directive.priority) && directive.restrict.indexOf(location) !== -1) {
                      if (startAttrName) {
                        directive = inherit(directive, { $$start: startAttrName, $$end: endAttrName });
                      }
                      if (!directive.$$bindings) {
                        var bindings = directive.$$bindings = parseDirectiveBindings(directive, directive.name);
                        if (isObject(bindings.isolateScope)) {
                          directive.$$isolateBindings = bindings.isolateScope;
                        }
                      }
                      tDirectives.push(directive);
                      match = directive;
                    }
                  }
                }
                return match;
              }
              function directiveIsMultiElement(name) {
                if (hasDirectives.hasOwnProperty(name)) {
                  for (var directive, directives = $injector.get(name + Suffix), i = 0, ii = directives.length; i < ii; i++) {
                    directive = directives[i];
                    if (directive.multiElement) {
                      return true;
                    }
                  }
                }
                return false;
              }
              function mergeTemplateAttributes(dst, src) {
                var srcAttr = src.$attr, dstAttr = dst.$attr;
                forEach(dst, function(value, key2) {
                  if (key2.charAt(0) !== "$") {
                    if (src[key2] && src[key2] !== value) {
                      if (value.length) {
                        value += (key2 === "style" ? ";" : " ") + src[key2];
                      } else {
                        value = src[key2];
                      }
                    }
                    dst.$set(key2, value, true, srcAttr[key2]);
                  }
                });
                forEach(src, function(value, key2) {
                  if (!dst.hasOwnProperty(key2) && key2.charAt(0) !== "$") {
                    dst[key2] = value;
                    if (key2 !== "class" && key2 !== "style") {
                      dstAttr[key2] = srcAttr[key2];
                    }
                  }
                });
              }
              function compileTemplateUrl(directives, $compileNode, tAttrs, $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {
                var linkQueue = [], afterTemplateNodeLinkFn, afterTemplateChildLinkFn, beforeTemplateCompileNode = $compileNode[0], origAsyncDirective = directives.shift(), derivedSyncDirective = inherit(origAsyncDirective, {
                  templateUrl: null,
                  transclude: null,
                  replace: null,
                  $$originalDirective: origAsyncDirective
                }), templateUrl = isFunction(origAsyncDirective.templateUrl) ? origAsyncDirective.templateUrl($compileNode, tAttrs) : origAsyncDirective.templateUrl, templateNamespace = origAsyncDirective.templateNamespace;
                $compileNode.empty();
                $templateRequest(templateUrl).then(function(content) {
                  var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn;
                  content = denormalizeTemplate(content);
                  if (origAsyncDirective.replace) {
                    if (jqLiteIsTextNode(content)) {
                      $template = [];
                    } else {
                      $template = removeComments(wrapTemplate(templateNamespace, trim(content)));
                    }
                    compileNode = $template[0];
                    if ($template.length !== 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
                      throw $compileMinErr(
                        "tplrt",
                        "Template for directive '{0}' must have exactly one root element. {1}",
                        origAsyncDirective.name,
                        templateUrl
                      );
                    }
                    tempTemplateAttrs = { $attr: {} };
                    replaceWith($rootElement, $compileNode, compileNode);
                    var templateDirectives = collectDirectives(compileNode, [], tempTemplateAttrs);
                    if (isObject(origAsyncDirective.scope)) {
                      markDirectiveScope(templateDirectives, true);
                    }
                    directives = templateDirectives.concat(directives);
                    mergeTemplateAttributes(tAttrs, tempTemplateAttrs);
                  } else {
                    compileNode = beforeTemplateCompileNode;
                    $compileNode.html(content);
                  }
                  directives.unshift(derivedSyncDirective);
                  afterTemplateNodeLinkFn = applyDirectivesToNode(
                    directives,
                    compileNode,
                    tAttrs,
                    childTranscludeFn,
                    $compileNode,
                    origAsyncDirective,
                    preLinkFns,
                    postLinkFns,
                    previousCompileContext
                  );
                  forEach($rootElement, function(node, i) {
                    if (node === compileNode) {
                      $rootElement[i] = $compileNode[0];
                    }
                  });
                  afterTemplateChildLinkFn = compileNodes($compileNode[0].childNodes, childTranscludeFn);
                  while (linkQueue.length) {
                    var scope = linkQueue.shift(), beforeTemplateLinkNode = linkQueue.shift(), linkRootElement = linkQueue.shift(), boundTranscludeFn = linkQueue.shift(), linkNode = $compileNode[0];
                    if (scope.$$destroyed)
                      continue;
                    if (beforeTemplateLinkNode !== beforeTemplateCompileNode) {
                      var oldClasses = beforeTemplateLinkNode.className;
                      if (!(previousCompileContext.hasElementTranscludeDirective && origAsyncDirective.replace)) {
                        linkNode = jqLiteClone(compileNode);
                      }
                      replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode);
                      safeAddClass(jqLite(linkNode), oldClasses);
                    }
                    if (afterTemplateNodeLinkFn.transcludeOnThisElement) {
                      childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);
                    } else {
                      childBoundTranscludeFn = boundTranscludeFn;
                    }
                    afterTemplateNodeLinkFn(
                      afterTemplateChildLinkFn,
                      scope,
                      linkNode,
                      $rootElement,
                      childBoundTranscludeFn
                    );
                  }
                  linkQueue = null;
                }).catch(function(error) {
                  if (isError(error)) {
                    $exceptionHandler(error);
                  }
                });
                return function delayedNodeLinkFn(ignoreChildLinkFn, scope, node, rootElement, boundTranscludeFn) {
                  var childBoundTranscludeFn = boundTranscludeFn;
                  if (scope.$$destroyed)
                    return;
                  if (linkQueue) {
                    linkQueue.push(
                      scope,
                      node,
                      rootElement,
                      childBoundTranscludeFn
                    );
                  } else {
                    if (afterTemplateNodeLinkFn.transcludeOnThisElement) {
                      childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);
                    }
                    afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn);
                  }
                };
              }
              function byPriority(a, b) {
                var diff2 = b.priority - a.priority;
                if (diff2 !== 0)
                  return diff2;
                if (a.name !== b.name)
                  return a.name < b.name ? -1 : 1;
                return a.index - b.index;
              }
              function assertNoDuplicate(what, previousDirective, directive, element) {
                function wrapModuleNameIfDefined(moduleName) {
                  return moduleName ? " (module: " + moduleName + ")" : "";
                }
                if (previousDirective) {
                  throw $compileMinErr(
                    "multidir",
                    "Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}",
                    previousDirective.name,
                    wrapModuleNameIfDefined(previousDirective.$$moduleName),
                    directive.name,
                    wrapModuleNameIfDefined(directive.$$moduleName),
                    what,
                    startingTag(element)
                  );
                }
              }
              function addTextInterpolateDirective(directives, text) {
                var interpolateFn = $interpolate(text, true);
                if (interpolateFn) {
                  directives.push({
                    priority: 0,
                    compile: function textInterpolateCompileFn(templateNode) {
                      var templateNodeParent = templateNode.parent(), hasCompileParent = !!templateNodeParent.length;
                      if (hasCompileParent)
                        compile.$$addBindingClass(templateNodeParent);
                      return function textInterpolateLinkFn(scope, node) {
                        var parent = node.parent();
                        if (!hasCompileParent)
                          compile.$$addBindingClass(parent);
                        compile.$$addBindingInfo(parent, interpolateFn.expressions);
                        scope.$watch(interpolateFn, function interpolateFnWatchAction(value) {
                          node[0].nodeValue = value;
                        });
                      };
                    }
                  });
                }
              }
              function wrapTemplate(type, template) {
                type = lowercase(type || "html");
                switch (type) {
                  case "svg":
                  case "math":
                    var wrapper = window2.document.createElement("div");
                    wrapper.innerHTML = "<" + type + ">" + template + "</" + type + ">";
                    return wrapper.childNodes[0].childNodes;
                  default:
                    return template;
                }
              }
              function getTrustedAttrContext(nodeName, attrNormalizedName) {
                if (attrNormalizedName === "srcdoc") {
                  return $sce.HTML;
                }
                if (attrNormalizedName === "src" || attrNormalizedName === "ngSrc") {
                  if (["img", "video", "audio", "source", "track"].indexOf(nodeName) === -1) {
                    return $sce.RESOURCE_URL;
                  }
                  return $sce.MEDIA_URL;
                } else if (attrNormalizedName === "xlinkHref") {
                  if (nodeName === "image")
                    return $sce.MEDIA_URL;
                  if (nodeName === "a")
                    return $sce.URL;
                  return $sce.RESOURCE_URL;
                } else if (nodeName === "form" && attrNormalizedName === "action" || nodeName === "base" && attrNormalizedName === "href" || nodeName === "link" && attrNormalizedName === "href") {
                  return $sce.RESOURCE_URL;
                } else if (nodeName === "a" && (attrNormalizedName === "href" || attrNormalizedName === "ngHref")) {
                  return $sce.URL;
                }
              }
              function getTrustedPropContext(nodeName, propNormalizedName) {
                var prop = propNormalizedName.toLowerCase();
                return PROP_CONTEXTS[nodeName + "|" + prop] || PROP_CONTEXTS["*|" + prop];
              }
              function sanitizeSrcsetPropertyValue(value) {
                return sanitizeSrcset($sce.valueOf(value), "ng-prop-srcset");
              }
              function addPropertyDirective(node, directives, attrName, propName) {
                if (EVENT_HANDLER_ATTR_REGEXP.test(propName)) {
                  throw $compileMinErr("nodomevents", "Property bindings for HTML DOM event properties are disallowed");
                }
                var nodeName = nodeName_(node);
                var trustedContext = getTrustedPropContext(nodeName, propName);
                var sanitizer = identity;
                if (propName === "srcset" && (nodeName === "img" || nodeName === "source")) {
                  sanitizer = sanitizeSrcsetPropertyValue;
                } else if (trustedContext) {
                  sanitizer = $sce.getTrusted.bind($sce, trustedContext);
                }
                directives.push({
                  priority: 100,
                  compile: function ngPropCompileFn(_2, attr) {
                    var ngPropGetter = $parse(attr[attrName]);
                    var ngPropWatch = $parse(attr[attrName], function sceValueOf(val) {
                      return $sce.valueOf(val);
                    });
                    return {
                      pre: function ngPropPreLinkFn(scope, $element) {
                        function applyPropValue() {
                          var propValue = ngPropGetter(scope);
                          $element[0][propName] = sanitizer(propValue);
                        }
                        applyPropValue();
                        scope.$watch(ngPropWatch, applyPropValue);
                      }
                    };
                  }
                });
              }
              function addEventDirective(directives, attrName, eventName) {
                directives.push(
                  createEventDirective($parse, $rootScope, $exceptionHandler, attrName, eventName, false)
                );
              }
              function addAttrInterpolateDirective(node, directives, value, name, isNgAttr) {
                var nodeName = nodeName_(node);
                var trustedContext = getTrustedAttrContext(nodeName, name);
                var mustHaveExpression = !isNgAttr;
                var allOrNothing = ALL_OR_NOTHING_ATTRS[name] || isNgAttr;
                var interpolateFn = $interpolate(value, mustHaveExpression, trustedContext, allOrNothing);
                if (!interpolateFn)
                  return;
                if (name === "multiple" && nodeName === "select") {
                  throw $compileMinErr(
                    "selmulti",
                    "Binding to the 'multiple' attribute is not supported. Element: {0}",
                    startingTag(node)
                  );
                }
                if (EVENT_HANDLER_ATTR_REGEXP.test(name)) {
                  throw $compileMinErr("nodomevents", "Interpolations for HTML DOM event attributes are disallowed");
                }
                directives.push({
                  priority: 100,
                  compile: function() {
                    return {
                      pre: function attrInterpolatePreLinkFn(scope, element, attr) {
                        var $$observers = attr.$$observers || (attr.$$observers = createMap());
                        var newValue = attr[name];
                        if (newValue !== value) {
                          interpolateFn = newValue && $interpolate(newValue, true, trustedContext, allOrNothing);
                          value = newValue;
                        }
                        if (!interpolateFn)
                          return;
                        attr[name] = interpolateFn(scope);
                        ($$observers[name] || ($$observers[name] = [])).$$inter = true;
                        (attr.$$observers && attr.$$observers[name].$$scope || scope).$watch(interpolateFn, function interpolateFnWatchAction(newValue2, oldValue) {
                          if (name === "class" && newValue2 !== oldValue) {
                            attr.$updateClass(newValue2, oldValue);
                          } else {
                            attr.$set(name, newValue2);
                          }
                        });
                      }
                    };
                  }
                });
              }
              function replaceWith($rootElement, elementsToRemove, newNode) {
                var firstElementToRemove = elementsToRemove[0], removeCount = elementsToRemove.length, parent = firstElementToRemove.parentNode, i, ii;
                if ($rootElement) {
                  for (i = 0, ii = $rootElement.length; i < ii; i++) {
                    if ($rootElement[i] === firstElementToRemove) {
                      $rootElement[i++] = newNode;
                      for (var j = i, j2 = j + removeCount - 1, jj = $rootElement.length; j < jj; j++, j2++) {
                        if (j2 < jj) {
                          $rootElement[j] = $rootElement[j2];
                        } else {
                          delete $rootElement[j];
                        }
                      }
                      $rootElement.length -= removeCount - 1;
                      if ($rootElement.context === firstElementToRemove) {
                        $rootElement.context = newNode;
                      }
                      break;
                    }
                  }
                }
                if (parent) {
                  parent.replaceChild(newNode, firstElementToRemove);
                }
                var fragment = window2.document.createDocumentFragment();
                for (i = 0; i < removeCount; i++) {
                  fragment.appendChild(elementsToRemove[i]);
                }
                if (jqLite.hasData(firstElementToRemove)) {
                  jqLite.data(newNode, jqLite.data(firstElementToRemove));
                  jqLite(firstElementToRemove).off("$destroy");
                }
                jqLite.cleanData(fragment.querySelectorAll("*"));
                for (i = 1; i < removeCount; i++) {
                  delete elementsToRemove[i];
                }
                elementsToRemove[0] = newNode;
                elementsToRemove.length = 1;
              }
              function cloneAndAnnotateFn(fn, annotation) {
                return extend(function() {
                  return fn.apply(null, arguments);
                }, fn, annotation);
              }
              function invokeLinkFn(linkFn, scope, $element, attrs, controllers, transcludeFn) {
                try {
                  linkFn(scope, $element, attrs, controllers, transcludeFn);
                } catch (e) {
                  $exceptionHandler(e, startingTag($element));
                }
              }
              function strictBindingsCheck(attrName, directiveName) {
                if (strictComponentBindingsEnabled) {
                  throw $compileMinErr(
                    "missingattr",
                    "Attribute '{0}' of '{1}' is non-optional and must be set!",
                    attrName,
                    directiveName
                  );
                }
              }
              function initializeDirectiveBindings(scope, attrs, destination, bindings, directive) {
                var removeWatchCollection = [];
                var initialChanges = {};
                var changes;
                forEach(bindings, function initializeBinding(definition, scopeName) {
                  var attrName = definition.attrName, optional = definition.optional, mode = definition.mode, lastValue, parentGet, parentSet, compare, removeWatch;
                  switch (mode) {
                    case "@":
                      if (!optional && !hasOwnProperty.call(attrs, attrName)) {
                        strictBindingsCheck(attrName, directive.name);
                        destination[scopeName] = attrs[attrName] = void 0;
                      }
                      removeWatch = attrs.$observe(attrName, function(value) {
                        if (isString(value) || isBoolean(value)) {
                          var oldValue = destination[scopeName];
                          recordChanges(scopeName, value, oldValue);
                          destination[scopeName] = value;
                        }
                      });
                      attrs.$$observers[attrName].$$scope = scope;
                      lastValue = attrs[attrName];
                      if (isString(lastValue)) {
                        destination[scopeName] = $interpolate(lastValue)(scope);
                      } else if (isBoolean(lastValue)) {
                        destination[scopeName] = lastValue;
                      }
                      initialChanges[scopeName] = new SimpleChange(_UNINITIALIZED_VALUE, destination[scopeName]);
                      removeWatchCollection.push(removeWatch);
                      break;
                    case "=":
                      if (!hasOwnProperty.call(attrs, attrName)) {
                        if (optional)
                          break;
                        strictBindingsCheck(attrName, directive.name);
                        attrs[attrName] = void 0;
                      }
                      if (optional && !attrs[attrName])
                        break;
                      parentGet = $parse(attrs[attrName]);
                      if (parentGet.literal) {
                        compare = equals;
                      } else {
                        compare = simpleCompare;
                      }
                      parentSet = parentGet.assign || function() {
                        lastValue = destination[scopeName] = parentGet(scope);
                        throw $compileMinErr(
                          "nonassign",
                          "Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!",
                          attrs[attrName],
                          attrName,
                          directive.name
                        );
                      };
                      lastValue = destination[scopeName] = parentGet(scope);
                      var parentValueWatch = function parentValueWatch2(parentValue) {
                        if (!compare(parentValue, destination[scopeName])) {
                          if (!compare(parentValue, lastValue)) {
                            destination[scopeName] = parentValue;
                          } else {
                            parentSet(scope, parentValue = destination[scopeName]);
                          }
                        }
                        lastValue = parentValue;
                        return lastValue;
                      };
                      parentValueWatch.$stateful = true;
                      if (definition.collection) {
                        removeWatch = scope.$watchCollection(attrs[attrName], parentValueWatch);
                      } else {
                        removeWatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal);
                      }
                      removeWatchCollection.push(removeWatch);
                      break;
                    case "<":
                      if (!hasOwnProperty.call(attrs, attrName)) {
                        if (optional)
                          break;
                        strictBindingsCheck(attrName, directive.name);
                        attrs[attrName] = void 0;
                      }
                      if (optional && !attrs[attrName])
                        break;
                      parentGet = $parse(attrs[attrName]);
                      var isLiteral2 = parentGet.literal;
                      var initialValue = destination[scopeName] = parentGet(scope);
                      initialChanges[scopeName] = new SimpleChange(_UNINITIALIZED_VALUE, destination[scopeName]);
                      removeWatch = scope[definition.collection ? "$watchCollection" : "$watch"](parentGet, function parentValueWatchAction(newValue, oldValue) {
                        if (oldValue === newValue) {
                          if (oldValue === initialValue || isLiteral2 && equals(oldValue, initialValue)) {
                            return;
                          }
                          oldValue = initialValue;
                        }
                        recordChanges(scopeName, newValue, oldValue);
                        destination[scopeName] = newValue;
                      });
                      removeWatchCollection.push(removeWatch);
                      break;
                    case "&":
                      if (!optional && !hasOwnProperty.call(attrs, attrName)) {
                        strictBindingsCheck(attrName, directive.name);
                      }
                      parentGet = attrs.hasOwnProperty(attrName) ? $parse(attrs[attrName]) : noop;
                      if (parentGet === noop && optional)
                        break;
                      destination[scopeName] = function(locals) {
                        return parentGet(scope, locals);
                      };
                      break;
                  }
                });
                function recordChanges(key2, currentValue, previousValue) {
                  if (isFunction(destination.$onChanges) && !simpleCompare(currentValue, previousValue)) {
                    if (!onChangesQueue) {
                      scope.$$postDigest(flushOnChangesQueue);
                      onChangesQueue = [];
                    }
                    if (!changes) {
                      changes = {};
                      onChangesQueue.push(triggerOnChangesHook);
                    }
                    if (changes[key2]) {
                      previousValue = changes[key2].previousValue;
                    }
                    changes[key2] = new SimpleChange(previousValue, currentValue);
                  }
                }
                function triggerOnChangesHook() {
                  destination.$onChanges(changes);
                  changes = void 0;
                }
                return {
                  initialChanges,
                  removeWatches: removeWatchCollection.length && function removeWatches() {
                    for (var i = 0, ii = removeWatchCollection.length; i < ii; ++i) {
                      removeWatchCollection[i]();
                    }
                  }
                };
              }
            }
          ];
        }
        function SimpleChange(previous, current) {
          this.previousValue = previous;
          this.currentValue = current;
        }
        SimpleChange.prototype.isFirstChange = function() {
          return this.previousValue === _UNINITIALIZED_VALUE;
        };
        var PREFIX_REGEXP = /^((?:x|data)[:\-_])/i;
        var SPECIAL_CHARS_REGEXP = /[:\-_]+(.)/g;
        function directiveNormalize(name) {
          return name.replace(PREFIX_REGEXP, "").replace(SPECIAL_CHARS_REGEXP, function(_2, letter, offset) {
            return offset ? letter.toUpperCase() : letter;
          });
        }
        function nodesetLinkingFn(scope, nodeList, rootElement, boundTranscludeFn) {
        }
        function directiveLinkingFn(nodesetLinkingFn2, scope, node, rootElement, boundTranscludeFn) {
        }
        function tokenDifference(str1, str2) {
          var values = "", tokens1 = str1.split(/\s+/), tokens2 = str2.split(/\s+/);
          outer:
            for (var i = 0; i < tokens1.length; i++) {
              var token = tokens1[i];
              for (var j = 0; j < tokens2.length; j++) {
                if (token === tokens2[j])
                  continue outer;
              }
              values += (values.length > 0 ? " " : "") + token;
            }
          return values;
        }
        function removeComments(jqNodes) {
          jqNodes = jqLite(jqNodes);
          var i = jqNodes.length;
          if (i <= 1) {
            return jqNodes;
          }
          while (i--) {
            var node = jqNodes[i];
            if (node.nodeType === NODE_TYPE_COMMENT || node.nodeType === NODE_TYPE_TEXT && node.nodeValue.trim() === "") {
              splice.call(jqNodes, i, 1);
            }
          }
          return jqNodes;
        }
        var $controllerMinErr = minErr("$controller");
        var CNTRL_REG = /^(\S+)(\s+as\s+([\w$]+))?$/;
        function identifierForController(controller, ident) {
          if (ident && isString(ident))
            return ident;
          if (isString(controller)) {
            var match = CNTRL_REG.exec(controller);
            if (match)
              return match[3];
          }
        }
        function $ControllerProvider() {
          var controllers = {};
          this.has = function(name) {
            return controllers.hasOwnProperty(name);
          };
          this.register = function(name, constructor) {
            assertNotHasOwnProperty(name, "controller");
            if (isObject(name)) {
              extend(controllers, name);
            } else {
              controllers[name] = constructor;
            }
          };
          this.$get = ["$injector", function($injector) {
            return function $controller(expression, locals, later, ident) {
              var instance, match, constructor, identifier;
              later = later === true;
              if (ident && isString(ident)) {
                identifier = ident;
              }
              if (isString(expression)) {
                match = expression.match(CNTRL_REG);
                if (!match) {
                  throw $controllerMinErr(
                    "ctrlfmt",
                    "Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.",
                    expression
                  );
                }
                constructor = match[1];
                identifier = identifier || match[3];
                expression = controllers.hasOwnProperty(constructor) ? controllers[constructor] : getter(locals.$scope, constructor, true);
                if (!expression) {
                  throw $controllerMinErr(
                    "ctrlreg",
                    "The controller with the name '{0}' is not registered.",
                    constructor
                  );
                }
                assertArgFn(expression, constructor, true);
              }
              if (later) {
                var controllerPrototype = (isArray(expression) ? expression[expression.length - 1] : expression).prototype;
                instance = Object.create(controllerPrototype || null);
                if (identifier) {
                  addIdentifier(locals, identifier, instance, constructor || expression.name);
                }
                return extend(function $controllerInit() {
                  var result = $injector.invoke(expression, instance, locals, constructor);
                  if (result !== instance && (isObject(result) || isFunction(result))) {
                    instance = result;
                    if (identifier) {
                      addIdentifier(locals, identifier, instance, constructor || expression.name);
                    }
                  }
                  return instance;
                }, {
                  instance,
                  identifier
                });
              }
              instance = $injector.instantiate(expression, locals, constructor);
              if (identifier) {
                addIdentifier(locals, identifier, instance, constructor || expression.name);
              }
              return instance;
            };
            function addIdentifier(locals, identifier, instance, name) {
              if (!(locals && isObject(locals.$scope))) {
                throw minErr("$controller")(
                  "noscp",
                  "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",
                  name,
                  identifier
                );
              }
              locals.$scope[identifier] = instance;
            }
          }];
        }
        function $DocumentProvider() {
          this.$get = ["$window", function(window3) {
            return jqLite(window3.document);
          }];
        }
        function $$IsDocumentHiddenProvider() {
          this.$get = ["$document", "$rootScope", function($document, $rootScope) {
            var doc = $document[0];
            var hidden = doc && doc.hidden;
            $document.on("visibilitychange", changeListener);
            $rootScope.$on("$destroy", function() {
              $document.off("visibilitychange", changeListener);
            });
            function changeListener() {
              hidden = doc.hidden;
            }
            return function() {
              return hidden;
            };
          }];
        }
        function $ExceptionHandlerProvider() {
          this.$get = ["$log", function($log) {
            return function(exception, cause) {
              $log.error.apply($log, arguments);
            };
          }];
        }
        var $$ForceReflowProvider = function() {
          this.$get = ["$document", function($document) {
            return function(domNode) {
              if (domNode) {
                if (!domNode.nodeType && domNode instanceof jqLite) {
                  domNode = domNode[0];
                }
              } else {
                domNode = $document[0].body;
              }
              return domNode.offsetWidth + 1;
            };
          }];
        };
        var APPLICATION_JSON = "application/json";
        var CONTENT_TYPE_APPLICATION_JSON = { "Content-Type": APPLICATION_JSON + ";charset=utf-8" };
        var JSON_START = /^\[|^\{(?!\{)/;
        var JSON_ENDS = {
          "[": /]$/,
          "{": /}$/
        };
        var JSON_PROTECTION_PREFIX = /^\)]\}',?\n/;
        var $httpMinErr = minErr("$http");
        function serializeValue(v) {
          if (isObject(v)) {
            return isDate(v) ? v.toISOString() : toJson(v);
          }
          return v;
        }
        function $HttpParamSerializerProvider() {
          this.$get = function() {
            return function ngParamSerializer(params) {
              if (!params)
                return "";
              var parts = [];
              forEachSorted(params, function(value, key2) {
                if (value === null || isUndefined(value) || isFunction(value))
                  return;
                if (isArray(value)) {
                  forEach(value, function(v) {
                    parts.push(encodeUriQuery(key2) + "=" + encodeUriQuery(serializeValue(v)));
                  });
                } else {
                  parts.push(encodeUriQuery(key2) + "=" + encodeUriQuery(serializeValue(value)));
                }
              });
              return parts.join("&");
            };
          };
        }
        function $HttpParamSerializerJQLikeProvider() {
          this.$get = function() {
            return function jQueryLikeParamSerializer(params) {
              if (!params)
                return "";
              var parts = [];
              serialize(params, "", true);
              return parts.join("&");
              function serialize(toSerialize, prefix, topLevel) {
                if (isArray(toSerialize)) {
                  forEach(toSerialize, function(value, index) {
                    serialize(value, prefix + "[" + (isObject(value) ? index : "") + "]");
                  });
                } else if (isObject(toSerialize) && !isDate(toSerialize)) {
                  forEachSorted(toSerialize, function(value, key2) {
                    serialize(value, prefix + (topLevel ? "" : "[") + key2 + (topLevel ? "" : "]"));
                  });
                } else {
                  if (isFunction(toSerialize)) {
                    toSerialize = toSerialize();
                  }
                  parts.push(encodeUriQuery(prefix) + "=" + (toSerialize == null ? "" : encodeUriQuery(serializeValue(toSerialize))));
                }
              }
            };
          };
        }
        function defaultHttpResponseTransform(data, headers) {
          if (isString(data)) {
            var tempData = data.replace(JSON_PROTECTION_PREFIX, "").trim();
            if (tempData) {
              var contentType = headers("Content-Type");
              var hasJsonContentType = contentType && contentType.indexOf(APPLICATION_JSON) === 0;
              if (hasJsonContentType || isJsonLike(tempData)) {
                try {
                  data = fromJson(tempData);
                } catch (e) {
                  if (!hasJsonContentType) {
                    return data;
                  }
                  throw $httpMinErr("baddata", 'Data must be a valid JSON object. Received: "{0}". Parse error: "{1}"', data, e);
                }
              }
            }
          }
          return data;
        }
        function isJsonLike(str) {
          var jsonStart = str.match(JSON_START);
          return jsonStart && JSON_ENDS[jsonStart[0]].test(str);
        }
        function parseHeaders(headers) {
          var parsed = createMap(), i;
          function fillInParsed(key2, val) {
            if (key2) {
              parsed[key2] = parsed[key2] ? parsed[key2] + ", " + val : val;
            }
          }
          if (isString(headers)) {
            forEach(headers.split("\n"), function(line) {
              i = line.indexOf(":");
              fillInParsed(lowercase(trim(line.substr(0, i))), trim(line.substr(i + 1)));
            });
          } else if (isObject(headers)) {
            forEach(headers, function(headerVal, headerKey) {
              fillInParsed(lowercase(headerKey), trim(headerVal));
            });
          }
          return parsed;
        }
        function headersGetter(headers) {
          var headersObj;
          return function(name) {
            if (!headersObj)
              headersObj = parseHeaders(headers);
            if (name) {
              var value = headersObj[lowercase(name)];
              if (value === void 0) {
                value = null;
              }
              return value;
            }
            return headersObj;
          };
        }
        function transformData(data, headers, status, fns) {
          if (isFunction(fns)) {
            return fns(data, headers, status);
          }
          forEach(fns, function(fn) {
            data = fn(data, headers, status);
          });
          return data;
        }
        function isSuccess(status) {
          return 200 <= status && status < 300;
        }
        function $HttpProvider() {
          var defaults2 = this.defaults = {
            transformResponse: [defaultHttpResponseTransform],
            transformRequest: [function(d) {
              return isObject(d) && !isFile(d) && !isBlob(d) && !isFormData(d) ? toJson(d) : d;
            }],
            headers: {
              common: {
                "Accept": "application/json, text/plain, */*"
              },
              post: shallowCopy(CONTENT_TYPE_APPLICATION_JSON),
              put: shallowCopy(CONTENT_TYPE_APPLICATION_JSON),
              patch: shallowCopy(CONTENT_TYPE_APPLICATION_JSON)
            },
            xsrfCookieName: "XSRF-TOKEN",
            xsrfHeaderName: "X-XSRF-TOKEN",
            paramSerializer: "$httpParamSerializer",
            jsonpCallbackParam: "callback"
          };
          var useApplyAsync = false;
          this.useApplyAsync = function(value) {
            if (isDefined(value)) {
              useApplyAsync = !!value;
              return this;
            }
            return useApplyAsync;
          };
          var interceptorFactories = this.interceptors = [];
          var xsrfTrustedOrigins = this.xsrfTrustedOrigins = [];
          Object.defineProperty(this, "xsrfWhitelistedOrigins", {
            get: function() {
              return this.xsrfTrustedOrigins;
            },
            set: function(origins) {
              this.xsrfTrustedOrigins = origins;
            }
          });
          this.$get = [
            "$browser",
            "$httpBackend",
            "$$cookieReader",
            "$cacheFactory",
            "$rootScope",
            "$q",
            "$injector",
            "$sce",
            function($browser, $httpBackend, $$cookieReader, $cacheFactory, $rootScope, $q, $injector, $sce) {
              var defaultCache = $cacheFactory("$http");
              defaults2.paramSerializer = isString(defaults2.paramSerializer) ? $injector.get(defaults2.paramSerializer) : defaults2.paramSerializer;
              var reversedInterceptors = [];
              forEach(interceptorFactories, function(interceptorFactory) {
                reversedInterceptors.unshift(isString(interceptorFactory) ? $injector.get(interceptorFactory) : $injector.invoke(interceptorFactory));
              });
              var urlIsAllowedOrigin = urlIsAllowedOriginFactory(xsrfTrustedOrigins);
              function $http(requestConfig) {
                if (!isObject(requestConfig)) {
                  throw minErr("$http")("badreq", "Http request configuration must be an object.  Received: {0}", requestConfig);
                }
                if (!isString($sce.valueOf(requestConfig.url))) {
                  throw minErr("$http")("badreq", "Http request configuration url must be a string or a $sce trusted object.  Received: {0}", requestConfig.url);
                }
                var config = extend({
                  method: "get",
                  transformRequest: defaults2.transformRequest,
                  transformResponse: defaults2.transformResponse,
                  paramSerializer: defaults2.paramSerializer,
                  jsonpCallbackParam: defaults2.jsonpCallbackParam
                }, requestConfig);
                config.headers = mergeHeaders(requestConfig);
                config.method = uppercase(config.method);
                config.paramSerializer = isString(config.paramSerializer) ? $injector.get(config.paramSerializer) : config.paramSerializer;
                $browser.$$incOutstandingRequestCount("$http");
                var requestInterceptors = [];
                var responseInterceptors = [];
                var promise = $q.resolve(config);
                forEach(reversedInterceptors, function(interceptor) {
                  if (interceptor.request || interceptor.requestError) {
                    requestInterceptors.unshift(interceptor.request, interceptor.requestError);
                  }
                  if (interceptor.response || interceptor.responseError) {
                    responseInterceptors.push(interceptor.response, interceptor.responseError);
                  }
                });
                promise = chainInterceptors(promise, requestInterceptors);
                promise = promise.then(serverRequest);
                promise = chainInterceptors(promise, responseInterceptors);
                promise = promise.finally(completeOutstandingRequest);
                return promise;
                function chainInterceptors(promise2, interceptors) {
                  for (var i = 0, ii = interceptors.length; i < ii; ) {
                    var thenFn = interceptors[i++];
                    var rejectFn = interceptors[i++];
                    promise2 = promise2.then(thenFn, rejectFn);
                  }
                  interceptors.length = 0;
                  return promise2;
                }
                function completeOutstandingRequest() {
                  $browser.$$completeOutstandingRequest(noop, "$http");
                }
                function executeHeaderFns(headers, config2) {
                  var headerContent, processedHeaders = {};
                  forEach(headers, function(headerFn, header) {
                    if (isFunction(headerFn)) {
                      headerContent = headerFn(config2);
                      if (headerContent != null) {
                        processedHeaders[header] = headerContent;
                      }
                    } else {
                      processedHeaders[header] = headerFn;
                    }
                  });
                  return processedHeaders;
                }
                function mergeHeaders(config2) {
                  var defHeaders = defaults2.headers, reqHeaders = extend({}, config2.headers), defHeaderName, lowercaseDefHeaderName, reqHeaderName;
                  defHeaders = extend({}, defHeaders.common, defHeaders[lowercase(config2.method)]);
                  defaultHeadersIteration:
                    for (defHeaderName in defHeaders) {
                      lowercaseDefHeaderName = lowercase(defHeaderName);
                      for (reqHeaderName in reqHeaders) {
                        if (lowercase(reqHeaderName) === lowercaseDefHeaderName) {
                          continue defaultHeadersIteration;
                        }
                      }
                      reqHeaders[defHeaderName] = defHeaders[defHeaderName];
                    }
                  return executeHeaderFns(reqHeaders, shallowCopy(config2));
                }
                function serverRequest(config2) {
                  var headers = config2.headers;
                  var reqData = transformData(config2.data, headersGetter(headers), void 0, config2.transformRequest);
                  if (isUndefined(reqData)) {
                    forEach(headers, function(value, header) {
                      if (lowercase(header) === "content-type") {
                        delete headers[header];
                      }
                    });
                  }
                  if (isUndefined(config2.withCredentials) && !isUndefined(defaults2.withCredentials)) {
                    config2.withCredentials = defaults2.withCredentials;
                  }
                  return sendReq(config2, reqData).then(transformResponse, transformResponse);
                }
                function transformResponse(response) {
                  var resp = extend({}, response);
                  resp.data = transformData(
                    response.data,
                    response.headers,
                    response.status,
                    config.transformResponse
                  );
                  return isSuccess(response.status) ? resp : $q.reject(resp);
                }
              }
              $http.pendingRequests = [];
              createShortMethods("get", "delete", "head", "jsonp");
              createShortMethodsWithData("post", "put", "patch");
              $http.defaults = defaults2;
              return $http;
              function createShortMethods(names) {
                forEach(arguments, function(name) {
                  $http[name] = function(url, config) {
                    return $http(extend({}, config || {}, {
                      method: name,
                      url
                    }));
                  };
                });
              }
              function createShortMethodsWithData(name) {
                forEach(arguments, function(name2) {
                  $http[name2] = function(url, data, config) {
                    return $http(extend({}, config || {}, {
                      method: name2,
                      url,
                      data
                    }));
                  };
                });
              }
              function sendReq(config, reqData) {
                var deferred = $q.defer(), promise = deferred.promise, cache, cachedResp, reqHeaders = config.headers, isJsonp = lowercase(config.method) === "jsonp", url = config.url;
                if (isJsonp) {
                  url = $sce.getTrustedResourceUrl(url);
                } else if (!isString(url)) {
                  url = $sce.valueOf(url);
                }
                url = buildUrl(url, config.paramSerializer(config.params));
                if (isJsonp) {
                  url = sanitizeJsonpCallbackParam(url, config.jsonpCallbackParam);
                }
                $http.pendingRequests.push(config);
                promise.then(removePendingReq, removePendingReq);
                if ((config.cache || defaults2.cache) && config.cache !== false && (config.method === "GET" || config.method === "JSONP")) {
                  cache = isObject(config.cache) ? config.cache : isObject(defaults2.cache) ? defaults2.cache : defaultCache;
                }
                if (cache) {
                  cachedResp = cache.get(url);
                  if (isDefined(cachedResp)) {
                    if (isPromiseLike(cachedResp)) {
                      cachedResp.then(resolvePromiseWithResult, resolvePromiseWithResult);
                    } else {
                      if (isArray(cachedResp)) {
                        resolvePromise(cachedResp[1], cachedResp[0], shallowCopy(cachedResp[2]), cachedResp[3], cachedResp[4]);
                      } else {
                        resolvePromise(cachedResp, 200, {}, "OK", "complete");
                      }
                    }
                  } else {
                    cache.put(url, promise);
                  }
                }
                if (isUndefined(cachedResp)) {
                  var xsrfValue = urlIsAllowedOrigin(config.url) ? $$cookieReader()[config.xsrfCookieName || defaults2.xsrfCookieName] : void 0;
                  if (xsrfValue) {
                    reqHeaders[config.xsrfHeaderName || defaults2.xsrfHeaderName] = xsrfValue;
                  }
                  $httpBackend(
                    config.method,
                    url,
                    reqData,
                    done,
                    reqHeaders,
                    config.timeout,
                    config.withCredentials,
                    config.responseType,
                    createApplyHandlers(config.eventHandlers),
                    createApplyHandlers(config.uploadEventHandlers)
                  );
                }
                return promise;
                function createApplyHandlers(eventHandlers) {
                  if (eventHandlers) {
                    var applyHandlers = {};
                    forEach(eventHandlers, function(eventHandler, key2) {
                      applyHandlers[key2] = function(event) {
                        if (useApplyAsync) {
                          $rootScope.$applyAsync(callEventHandler);
                        } else if ($rootScope.$$phase) {
                          callEventHandler();
                        } else {
                          $rootScope.$apply(callEventHandler);
                        }
                        function callEventHandler() {
                          eventHandler(event);
                        }
                      };
                    });
                    return applyHandlers;
                  }
                }
                function done(status, response, headersString, statusText, xhrStatus) {
                  if (cache) {
                    if (isSuccess(status)) {
                      cache.put(url, [status, response, parseHeaders(headersString), statusText, xhrStatus]);
                    } else {
                      cache.remove(url);
                    }
                  }
                  function resolveHttpPromise() {
                    resolvePromise(response, status, headersString, statusText, xhrStatus);
                  }
                  if (useApplyAsync) {
                    $rootScope.$applyAsync(resolveHttpPromise);
                  } else {
                    resolveHttpPromise();
                    if (!$rootScope.$$phase)
                      $rootScope.$apply();
                  }
                }
                function resolvePromise(response, status, headers, statusText, xhrStatus) {
                  status = status >= -1 ? status : 0;
                  (isSuccess(status) ? deferred.resolve : deferred.reject)({
                    data: response,
                    status,
                    headers: headersGetter(headers),
                    config,
                    statusText,
                    xhrStatus
                  });
                }
                function resolvePromiseWithResult(result) {
                  resolvePromise(result.data, result.status, shallowCopy(result.headers()), result.statusText, result.xhrStatus);
                }
                function removePendingReq() {
                  var idx = $http.pendingRequests.indexOf(config);
                  if (idx !== -1)
                    $http.pendingRequests.splice(idx, 1);
                }
              }
              function buildUrl(url, serializedParams) {
                if (serializedParams.length > 0) {
                  url += (url.indexOf("?") === -1 ? "?" : "&") + serializedParams;
                }
                return url;
              }
              function sanitizeJsonpCallbackParam(url, cbKey) {
                var parts = url.split("?");
                if (parts.length > 2) {
                  throw $httpMinErr("badjsonp", 'Illegal use more than one "?", in url, "{1}"', url);
                }
                var params = parseKeyValue(parts[1]);
                forEach(params, function(value, key2) {
                  if (value === "JSON_CALLBACK") {
                    throw $httpMinErr("badjsonp", 'Illegal use of JSON_CALLBACK in url, "{0}"', url);
                  }
                  if (key2 === cbKey) {
                    throw $httpMinErr("badjsonp", 'Illegal use of callback param, "{0}", in url, "{1}"', cbKey, url);
                  }
                });
                url += (url.indexOf("?") === -1 ? "?" : "&") + cbKey + "=JSON_CALLBACK";
                return url;
              }
            }
          ];
        }
        function $xhrFactoryProvider() {
          this.$get = function() {
            return function createXhr() {
              return new window2.XMLHttpRequest();
            };
          };
        }
        function $HttpBackendProvider() {
          this.$get = ["$browser", "$jsonpCallbacks", "$document", "$xhrFactory", function($browser, $jsonpCallbacks, $document, $xhrFactory) {
            return createHttpBackend($browser, $xhrFactory, $browser.defer, $jsonpCallbacks, $document[0]);
          }];
        }
        function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) {
          return function(method, url, post, callback, headers, timeout, withCredentials, responseType, eventHandlers, uploadEventHandlers) {
            url = url || $browser.url();
            if (lowercase(method) === "jsonp") {
              var callbackPath = callbacks.createCallback(url);
              var jsonpDone = jsonpReq(url, callbackPath, function(status, text) {
                var response = status === 200 && callbacks.getResponse(callbackPath);
                completeRequest(callback, status, response, "", text, "complete");
                callbacks.removeCallback(callbackPath);
              });
            } else {
              var xhr = createXhr(method, url);
              var abortedByTimeout = false;
              xhr.open(method, url, true);
              forEach(headers, function(value, key2) {
                if (isDefined(value)) {
                  xhr.setRequestHeader(key2, value);
                }
              });
              xhr.onload = function requestLoaded() {
                var statusText = xhr.statusText || "";
                var response = "response" in xhr ? xhr.response : xhr.responseText;
                var status = xhr.status === 1223 ? 204 : xhr.status;
                if (status === 0) {
                  status = response ? 200 : urlResolve(url).protocol === "file" ? 404 : 0;
                }
                completeRequest(
                  callback,
                  status,
                  response,
                  xhr.getAllResponseHeaders(),
                  statusText,
                  "complete"
                );
              };
              var requestError = function() {
                completeRequest(callback, -1, null, null, "", "error");
              };
              var requestAborted = function() {
                completeRequest(callback, -1, null, null, "", abortedByTimeout ? "timeout" : "abort");
              };
              var requestTimeout = function() {
                completeRequest(callback, -1, null, null, "", "timeout");
              };
              xhr.onerror = requestError;
              xhr.ontimeout = requestTimeout;
              xhr.onabort = requestAborted;
              forEach(eventHandlers, function(value, key2) {
                xhr.addEventListener(key2, value);
              });
              forEach(uploadEventHandlers, function(value, key2) {
                xhr.upload.addEventListener(key2, value);
              });
              if (withCredentials) {
                xhr.withCredentials = true;
              }
              if (responseType) {
                try {
                  xhr.responseType = responseType;
                } catch (e) {
                  if (responseType !== "json") {
                    throw e;
                  }
                }
              }
              xhr.send(isUndefined(post) ? null : post);
            }
            if (timeout > 0) {
              var timeoutId = $browserDefer(function() {
                timeoutRequest("timeout");
              }, timeout);
            } else if (isPromiseLike(timeout)) {
              timeout.then(function() {
                timeoutRequest(isDefined(timeout.$$timeoutId) ? "timeout" : "abort");
              });
            }
            function timeoutRequest(reason) {
              abortedByTimeout = reason === "timeout";
              if (jsonpDone) {
                jsonpDone();
              }
              if (xhr) {
                xhr.abort();
              }
            }
            function completeRequest(callback2, status, response, headersString, statusText, xhrStatus) {
              if (isDefined(timeoutId)) {
                $browserDefer.cancel(timeoutId);
              }
              jsonpDone = xhr = null;
              callback2(status, response, headersString, statusText, xhrStatus);
            }
          };
          function jsonpReq(url, callbackPath, done) {
            url = url.replace("JSON_CALLBACK", callbackPath);
            var script = rawDocument.createElement("script"), callback = null;
            script.type = "text/javascript";
            script.src = url;
            script.async = true;
            callback = function(event) {
              script.removeEventListener("load", callback);
              script.removeEventListener("error", callback);
              rawDocument.body.removeChild(script);
              script = null;
              var status = -1;
              var text = "unknown";
              if (event) {
                if (event.type === "load" && !callbacks.wasCalled(callbackPath)) {
                  event = { type: "error" };
                }
                text = event.type;
                status = event.type === "error" ? 404 : 200;
              }
              if (done) {
                done(status, text);
              }
            };
            script.addEventListener("load", callback);
            script.addEventListener("error", callback);
            rawDocument.body.appendChild(script);
            return callback;
          }
        }
        var $interpolateMinErr = angular2.$interpolateMinErr = minErr("$interpolate");
        $interpolateMinErr.throwNoconcat = function(text) {
          throw $interpolateMinErr(
            "noconcat",
            "Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.  See http://docs.angularjs.org/api/ng.$sce",
            text
          );
        };
        $interpolateMinErr.interr = function(text, err) {
          return $interpolateMinErr("interr", "Can't interpolate: {0}\n{1}", text, err.toString());
        };
        function $InterpolateProvider() {
          var startSymbol = "{{";
          var endSymbol = "}}";
          this.startSymbol = function(value) {
            if (value) {
              startSymbol = value;
              return this;
            }
            return startSymbol;
          };
          this.endSymbol = function(value) {
            if (value) {
              endSymbol = value;
              return this;
            }
            return endSymbol;
          };
          this.$get = ["$parse", "$exceptionHandler", "$sce", function($parse, $exceptionHandler, $sce) {
            var startSymbolLength = startSymbol.length, endSymbolLength = endSymbol.length, escapedStartRegexp = new RegExp(startSymbol.replace(/./g, escape), "g"), escapedEndRegexp = new RegExp(endSymbol.replace(/./g, escape), "g");
            function escape(ch) {
              return "\\\\\\" + ch;
            }
            function unescapeText(text) {
              return text.replace(escapedStartRegexp, startSymbol).replace(escapedEndRegexp, endSymbol);
            }
            function constantWatchDelegate(scope, listener, objectEquality, constantInterp) {
              var unwatch = scope.$watch(function constantInterpolateWatch(scope2) {
                unwatch();
                return constantInterp(scope2);
              }, listener, objectEquality);
              return unwatch;
            }
            function $interpolate(text, mustHaveExpression, trustedContext, allOrNothing) {
              var contextAllowsConcatenation = trustedContext === $sce.URL || trustedContext === $sce.MEDIA_URL;
              if (!text.length || text.indexOf(startSymbol) === -1) {
                if (mustHaveExpression)
                  return;
                var unescapedText = unescapeText(text);
                if (contextAllowsConcatenation) {
                  unescapedText = $sce.getTrusted(trustedContext, unescapedText);
                }
                var constantInterp = valueFn(unescapedText);
                constantInterp.exp = text;
                constantInterp.expressions = [];
                constantInterp.$$watchDelegate = constantWatchDelegate;
                return constantInterp;
              }
              allOrNothing = !!allOrNothing;
              var startIndex, endIndex, index = 0, expressions = [], parseFns, textLength = text.length, exp, concat2 = [], expressionPositions = [], singleExpression;
              while (index < textLength) {
                if ((startIndex = text.indexOf(startSymbol, index)) !== -1 && (endIndex = text.indexOf(endSymbol, startIndex + startSymbolLength)) !== -1) {
                  if (index !== startIndex) {
                    concat2.push(unescapeText(text.substring(index, startIndex)));
                  }
                  exp = text.substring(startIndex + startSymbolLength, endIndex);
                  expressions.push(exp);
                  index = endIndex + endSymbolLength;
                  expressionPositions.push(concat2.length);
                  concat2.push("");
                } else {
                  if (index !== textLength) {
                    concat2.push(unescapeText(text.substring(index)));
                  }
                  break;
                }
              }
              singleExpression = concat2.length === 1 && expressionPositions.length === 1;
              var interceptor = contextAllowsConcatenation && singleExpression ? void 0 : parseStringifyInterceptor;
              parseFns = expressions.map(function(exp2) {
                return $parse(exp2, interceptor);
              });
              if (!mustHaveExpression || expressions.length) {
                var compute = function(values) {
                  for (var i = 0, ii = expressions.length; i < ii; i++) {
                    if (allOrNothing && isUndefined(values[i]))
                      return;
                    concat2[expressionPositions[i]] = values[i];
                  }
                  if (contextAllowsConcatenation) {
                    return $sce.getTrusted(trustedContext, singleExpression ? concat2[0] : concat2.join(""));
                  } else if (trustedContext && concat2.length > 1) {
                    $interpolateMinErr.throwNoconcat(text);
                  }
                  return concat2.join("");
                };
                return extend(function interpolationFn(context) {
                  var i = 0;
                  var ii = expressions.length;
                  var values = new Array(ii);
                  try {
                    for (; i < ii; i++) {
                      values[i] = parseFns[i](context);
                    }
                    return compute(values);
                  } catch (err) {
                    $exceptionHandler($interpolateMinErr.interr(text, err));
                  }
                }, {
                  exp: text,
                  expressions,
                  $$watchDelegate: function(scope, listener) {
                    var lastValue;
                    return scope.$watchGroup(parseFns, function interpolateFnWatcher(values, oldValues) {
                      var currValue = compute(values);
                      listener.call(this, currValue, values !== oldValues ? lastValue : currValue, scope);
                      lastValue = currValue;
                    });
                  }
                });
              }
              function parseStringifyInterceptor(value) {
                try {
                  value = trustedContext && !contextAllowsConcatenation ? $sce.getTrusted(trustedContext, value) : $sce.valueOf(value);
                  return allOrNothing && !isDefined(value) ? value : stringify(value);
                } catch (err) {
                  $exceptionHandler($interpolateMinErr.interr(text, err));
                }
              }
            }
            $interpolate.startSymbol = function() {
              return startSymbol;
            };
            $interpolate.endSymbol = function() {
              return endSymbol;
            };
            return $interpolate;
          }];
        }
        var $intervalMinErr = minErr("$interval");
        function $IntervalProvider() {
          this.$get = [
            "$$intervalFactory",
            "$window",
            function($$intervalFactory, $window) {
              var intervals = {};
              var setIntervalFn = function(tick, delay, deferred) {
                var id = $window.setInterval(tick, delay);
                intervals[id] = deferred;
                return id;
              };
              var clearIntervalFn = function(id) {
                $window.clearInterval(id);
                delete intervals[id];
              };
              var interval = $$intervalFactory(setIntervalFn, clearIntervalFn);
              interval.cancel = function(promise) {
                if (!promise)
                  return false;
                if (!promise.hasOwnProperty("$$intervalId")) {
                  throw $intervalMinErr(
                    "badprom",
                    "`$interval.cancel()` called with a promise that was not generated by `$interval()`."
                  );
                }
                if (!intervals.hasOwnProperty(promise.$$intervalId))
                  return false;
                var id = promise.$$intervalId;
                var deferred = intervals[id];
                markQExceptionHandled(deferred.promise);
                deferred.reject("canceled");
                clearIntervalFn(id);
                return true;
              };
              return interval;
            }
          ];
        }
        function $$IntervalFactoryProvider() {
          this.$get = [
            "$browser",
            "$q",
            "$$q",
            "$rootScope",
            function($browser, $q, $$q, $rootScope) {
              return function intervalFactory(setIntervalFn, clearIntervalFn) {
                return function intervalFn(fn, delay, count, invokeApply) {
                  var hasParams = arguments.length > 4, args = hasParams ? sliceArgs(arguments, 4) : [], iteration = 0, skipApply = isDefined(invokeApply) && !invokeApply, deferred = (skipApply ? $$q : $q).defer(), promise = deferred.promise;
                  count = isDefined(count) ? count : 0;
                  function callback() {
                    if (!hasParams) {
                      fn(iteration);
                    } else {
                      fn.apply(null, args);
                    }
                  }
                  function tick() {
                    if (skipApply) {
                      $browser.defer(callback);
                    } else {
                      $rootScope.$evalAsync(callback);
                    }
                    deferred.notify(iteration++);
                    if (count > 0 && iteration >= count) {
                      deferred.resolve(iteration);
                      clearIntervalFn(promise.$$intervalId);
                    }
                    if (!skipApply)
                      $rootScope.$apply();
                  }
                  promise.$$intervalId = setIntervalFn(tick, delay, deferred, skipApply);
                  return promise;
                };
              };
            }
          ];
        }
        var $jsonpCallbacksProvider = function() {
          this.$get = function() {
            var callbacks = angular2.callbacks;
            var callbackMap = {};
            function createCallback(callbackId) {
              var callback = function(data) {
                callback.data = data;
                callback.called = true;
              };
              callback.id = callbackId;
              return callback;
            }
            return {
              createCallback: function(url) {
                var callbackId = "_" + (callbacks.$$counter++).toString(36);
                var callbackPath = "angular.callbacks." + callbackId;
                var callback = createCallback(callbackId);
                callbackMap[callbackPath] = callbacks[callbackId] = callback;
                return callbackPath;
              },
              wasCalled: function(callbackPath) {
                return callbackMap[callbackPath].called;
              },
              getResponse: function(callbackPath) {
                return callbackMap[callbackPath].data;
              },
              removeCallback: function(callbackPath) {
                var callback = callbackMap[callbackPath];
                delete callbacks[callback.id];
                delete callbackMap[callbackPath];
              }
            };
          };
        };
        var PATH_MATCH = /^([^?#]*)(\?([^#]*))?(#(.*))?$/, DEFAULT_PORTS = { "http": 80, "https": 443, "ftp": 21 };
        var $locationMinErr = minErr("$location");
        function encodePath(path) {
          var segments = path.split("/"), i = segments.length;
          while (i--) {
            segments[i] = encodeUriSegment(segments[i].replace(/%2F/g, "/"));
          }
          return segments.join("/");
        }
        function decodePath(path, html5Mode) {
          var segments = path.split("/"), i = segments.length;
          while (i--) {
            segments[i] = decodeURIComponent(segments[i]);
            if (html5Mode) {
              segments[i] = segments[i].replace(/\//g, "%2F");
            }
          }
          return segments.join("/");
        }
        function normalizePath(pathValue, searchValue, hashValue) {
          var search = toKeyValue(searchValue), hash = hashValue ? "#" + encodeUriSegment(hashValue) : "", path = encodePath(pathValue);
          return path + (search ? "?" + search : "") + hash;
        }
        function parseAbsoluteUrl(absoluteUrl, locationObj) {
          var parsedUrl = urlResolve(absoluteUrl);
          locationObj.$$protocol = parsedUrl.protocol;
          locationObj.$$host = parsedUrl.hostname;
          locationObj.$$port = toInt(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null;
        }
        var DOUBLE_SLASH_REGEX = /^\s*[\\/]{2,}/;
        function parseAppUrl(url, locationObj, html5Mode) {
          if (DOUBLE_SLASH_REGEX.test(url)) {
            throw $locationMinErr("badpath", 'Invalid url "{0}".', url);
          }
          var prefixed = url.charAt(0) !== "/";
          if (prefixed) {
            url = "/" + url;
          }
          var match = urlResolve(url);
          var path = prefixed && match.pathname.charAt(0) === "/" ? match.pathname.substring(1) : match.pathname;
          locationObj.$$path = decodePath(path, html5Mode);
          locationObj.$$search = parseKeyValue(match.search);
          locationObj.$$hash = decodeURIComponent(match.hash);
          if (locationObj.$$path && locationObj.$$path.charAt(0) !== "/") {
            locationObj.$$path = "/" + locationObj.$$path;
          }
        }
        function startsWith(str, search) {
          return str.slice(0, search.length) === search;
        }
        function stripBaseUrl(base, url) {
          if (startsWith(url, base)) {
            return url.substr(base.length);
          }
        }
        function stripHash(url) {
          var index = url.indexOf("#");
          return index === -1 ? url : url.substr(0, index);
        }
        function stripFile(url) {
          return url.substr(0, stripHash(url).lastIndexOf("/") + 1);
        }
        function serverBase(url) {
          return url.substring(0, url.indexOf("/", url.indexOf("//") + 2));
        }
        function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) {
          this.$$html5 = true;
          basePrefix = basePrefix || "";
          parseAbsoluteUrl(appBase, this);
          this.$$parse = function(url) {
            var pathUrl = stripBaseUrl(appBaseNoFile, url);
            if (!isString(pathUrl)) {
              throw $locationMinErr(
                "ipthprfx",
                'Invalid url "{0}", missing path prefix "{1}".',
                url,
                appBaseNoFile
              );
            }
            parseAppUrl(pathUrl, this, true);
            if (!this.$$path) {
              this.$$path = "/";
            }
            this.$$compose();
          };
          this.$$normalizeUrl = function(url) {
            return appBaseNoFile + url.substr(1);
          };
          this.$$parseLinkUrl = function(url, relHref) {
            if (relHref && relHref[0] === "#") {
              this.hash(relHref.slice(1));
              return true;
            }
            var appUrl, prevAppUrl;
            var rewrittenUrl;
            if (isDefined(appUrl = stripBaseUrl(appBase, url))) {
              prevAppUrl = appUrl;
              if (basePrefix && isDefined(appUrl = stripBaseUrl(basePrefix, appUrl))) {
                rewrittenUrl = appBaseNoFile + (stripBaseUrl("/", appUrl) || appUrl);
              } else {
                rewrittenUrl = appBase + prevAppUrl;
              }
            } else if (isDefined(appUrl = stripBaseUrl(appBaseNoFile, url))) {
              rewrittenUrl = appBaseNoFile + appUrl;
            } else if (appBaseNoFile === url + "/") {
              rewrittenUrl = appBaseNoFile;
            }
            if (rewrittenUrl) {
              this.$$parse(rewrittenUrl);
            }
            return !!rewrittenUrl;
          };
        }
        function LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) {
          parseAbsoluteUrl(appBase, this);
          this.$$parse = function(url) {
            var withoutBaseUrl = stripBaseUrl(appBase, url) || stripBaseUrl(appBaseNoFile, url);
            var withoutHashUrl;
            if (!isUndefined(withoutBaseUrl) && withoutBaseUrl.charAt(0) === "#") {
              withoutHashUrl = stripBaseUrl(hashPrefix, withoutBaseUrl);
              if (isUndefined(withoutHashUrl)) {
                withoutHashUrl = withoutBaseUrl;
              }
            } else {
              if (this.$$html5) {
                withoutHashUrl = withoutBaseUrl;
              } else {
                withoutHashUrl = "";
                if (isUndefined(withoutBaseUrl)) {
                  appBase = url;
                  this.replace();
                }
              }
            }
            parseAppUrl(withoutHashUrl, this, false);
            this.$$path = removeWindowsDriveName(this.$$path, withoutHashUrl, appBase);
            this.$$compose();
            function removeWindowsDriveName(path, url2, base) {
              var windowsFilePathExp = /^\/[A-Z]:(\/.*)/;
              var firstPathSegmentMatch;
              if (startsWith(url2, base)) {
                url2 = url2.replace(base, "");
              }
              if (windowsFilePathExp.exec(url2)) {
                return path;
              }
              firstPathSegmentMatch = windowsFilePathExp.exec(path);
              return firstPathSegmentMatch ? firstPathSegmentMatch[1] : path;
            }
          };
          this.$$normalizeUrl = function(url) {
            return appBase + (url ? hashPrefix + url : "");
          };
          this.$$parseLinkUrl = function(url, relHref) {
            if (stripHash(appBase) === stripHash(url)) {
              this.$$parse(url);
              return true;
            }
            return false;
          };
        }
        function LocationHashbangInHtml5Url(appBase, appBaseNoFile, hashPrefix) {
          this.$$html5 = true;
          LocationHashbangUrl.apply(this, arguments);
          this.$$parseLinkUrl = function(url, relHref) {
            if (relHref && relHref[0] === "#") {
              this.hash(relHref.slice(1));
              return true;
            }
            var rewrittenUrl;
            var appUrl;
            if (appBase === stripHash(url)) {
              rewrittenUrl = url;
            } else if (appUrl = stripBaseUrl(appBaseNoFile, url)) {
              rewrittenUrl = appBase + hashPrefix + appUrl;
            } else if (appBaseNoFile === url + "/") {
              rewrittenUrl = appBaseNoFile;
            }
            if (rewrittenUrl) {
              this.$$parse(rewrittenUrl);
            }
            return !!rewrittenUrl;
          };
          this.$$normalizeUrl = function(url) {
            return appBase + hashPrefix + url;
          };
        }
        var locationPrototype = {
          $$absUrl: "",
          $$html5: false,
          $$replace: false,
          $$compose: function() {
            this.$$url = normalizePath(this.$$path, this.$$search, this.$$hash);
            this.$$absUrl = this.$$normalizeUrl(this.$$url);
            this.$$urlUpdatedByLocation = true;
          },
          absUrl: locationGetter("$$absUrl"),
          url: function(url) {
            if (isUndefined(url)) {
              return this.$$url;
            }
            var match = PATH_MATCH.exec(url);
            if (match[1] || url === "")
              this.path(decodeURIComponent(match[1]));
            if (match[2] || match[1] || url === "")
              this.search(match[3] || "");
            this.hash(match[5] || "");
            return this;
          },
          protocol: locationGetter("$$protocol"),
          host: locationGetter("$$host"),
          port: locationGetter("$$port"),
          path: locationGetterSetter("$$path", function(path) {
            path = path !== null ? path.toString() : "";
            return path.charAt(0) === "/" ? path : "/" + path;
          }),
          search: function(search, paramValue) {
            switch (arguments.length) {
              case 0:
                return this.$$search;
              case 1:
                if (isString(search) || isNumber2(search)) {
                  search = search.toString();
                  this.$$search = parseKeyValue(search);
                } else if (isObject(search)) {
                  search = copy(search, {});
                  forEach(search, function(value, key2) {
                    if (value == null)
                      delete search[key2];
                  });
                  this.$$search = search;
                } else {
                  throw $locationMinErr(
                    "isrcharg",
                    "The first argument of the `$location#search()` call must be a string or an object."
                  );
                }
                break;
              default:
                if (isUndefined(paramValue) || paramValue === null) {
                  delete this.$$search[search];
                } else {
                  this.$$search[search] = paramValue;
                }
            }
            this.$$compose();
            return this;
          },
          hash: locationGetterSetter("$$hash", function(hash) {
            return hash !== null ? hash.toString() : "";
          }),
          replace: function() {
            this.$$replace = true;
            return this;
          }
        };
        forEach([LocationHashbangInHtml5Url, LocationHashbangUrl, LocationHtml5Url], function(Location) {
          Location.prototype = Object.create(locationPrototype);
          Location.prototype.state = function(state) {
            if (!arguments.length) {
              return this.$$state;
            }
            if (Location !== LocationHtml5Url || !this.$$html5) {
              throw $locationMinErr("nostate", "History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");
            }
            this.$$state = isUndefined(state) ? null : state;
            this.$$urlUpdatedByLocation = true;
            return this;
          };
        });
        function locationGetter(property) {
          return function() {
            return this[property];
          };
        }
        function locationGetterSetter(property, preprocess) {
          return function(value) {
            if (isUndefined(value)) {
              return this[property];
            }
            this[property] = preprocess(value);
            this.$$compose();
            return this;
          };
        }
        function $LocationProvider() {
          var hashPrefix = "!", html5Mode = {
            enabled: false,
            requireBase: true,
            rewriteLinks: true
          };
          this.hashPrefix = function(prefix) {
            if (isDefined(prefix)) {
              hashPrefix = prefix;
              return this;
            } else {
              return hashPrefix;
            }
          };
          this.html5Mode = function(mode) {
            if (isBoolean(mode)) {
              html5Mode.enabled = mode;
              return this;
            } else if (isObject(mode)) {
              if (isBoolean(mode.enabled)) {
                html5Mode.enabled = mode.enabled;
              }
              if (isBoolean(mode.requireBase)) {
                html5Mode.requireBase = mode.requireBase;
              }
              if (isBoolean(mode.rewriteLinks) || isString(mode.rewriteLinks)) {
                html5Mode.rewriteLinks = mode.rewriteLinks;
              }
              return this;
            } else {
              return html5Mode;
            }
          };
          this.$get = [
            "$rootScope",
            "$browser",
            "$sniffer",
            "$rootElement",
            "$window",
            function($rootScope, $browser, $sniffer, $rootElement, $window) {
              var $location, LocationMode, baseHref = $browser.baseHref(), initialUrl = $browser.url(), appBase;
              if (html5Mode.enabled) {
                if (!baseHref && html5Mode.requireBase) {
                  throw $locationMinErr(
                    "nobase",
                    "$location in HTML5 mode requires a <base> tag to be present!"
                  );
                }
                appBase = serverBase(initialUrl) + (baseHref || "/");
                LocationMode = $sniffer.history ? LocationHtml5Url : LocationHashbangInHtml5Url;
              } else {
                appBase = stripHash(initialUrl);
                LocationMode = LocationHashbangUrl;
              }
              var appBaseNoFile = stripFile(appBase);
              $location = new LocationMode(appBase, appBaseNoFile, "#" + hashPrefix);
              $location.$$parseLinkUrl(initialUrl, initialUrl);
              $location.$$state = $browser.state();
              var IGNORE_URI_REGEXP = /^\s*(javascript|mailto):/i;
              function urlsEqual(a, b) {
                return a === b || urlResolve(a).href === urlResolve(b).href;
              }
              function setBrowserUrlWithFallback(url, replace, state) {
                var oldUrl = $location.url();
                var oldState = $location.$$state;
                try {
                  $browser.url(url, replace, state);
                  $location.$$state = $browser.state();
                } catch (e) {
                  $location.url(oldUrl);
                  $location.$$state = oldState;
                  throw e;
                }
              }
              $rootElement.on("click", function(event) {
                var rewriteLinks = html5Mode.rewriteLinks;
                if (!rewriteLinks || event.ctrlKey || event.metaKey || event.shiftKey || event.which === 2 || event.button === 2)
                  return;
                var elm = jqLite(event.target);
                while (nodeName_(elm[0]) !== "a") {
                  if (elm[0] === $rootElement[0] || !(elm = elm.parent())[0])
                    return;
                }
                if (isString(rewriteLinks) && isUndefined(elm.attr(rewriteLinks)))
                  return;
                var absHref = elm.prop("href");
                var relHref = elm.attr("href") || elm.attr("xlink:href");
                if (isObject(absHref) && absHref.toString() === "[object SVGAnimatedString]") {
                  absHref = urlResolve(absHref.animVal).href;
                }
                if (IGNORE_URI_REGEXP.test(absHref))
                  return;
                if (absHref && !elm.attr("target") && !event.isDefaultPrevented()) {
                  if ($location.$$parseLinkUrl(absHref, relHref)) {
                    event.preventDefault();
                    if ($location.absUrl() !== $browser.url()) {
                      $rootScope.$apply();
                    }
                  }
                }
              });
              if ($location.absUrl() !== initialUrl) {
                $browser.url($location.absUrl(), true);
              }
              var initializing = true;
              $browser.onUrlChange(function(newUrl, newState) {
                if (!startsWith(newUrl, appBaseNoFile)) {
                  $window.location.href = newUrl;
                  return;
                }
                $rootScope.$evalAsync(function() {
                  var oldUrl = $location.absUrl();
                  var oldState = $location.$$state;
                  var defaultPrevented;
                  $location.$$parse(newUrl);
                  $location.$$state = newState;
                  defaultPrevented = $rootScope.$broadcast(
                    "$locationChangeStart",
                    newUrl,
                    oldUrl,
                    newState,
                    oldState
                  ).defaultPrevented;
                  if ($location.absUrl() !== newUrl)
                    return;
                  if (defaultPrevented) {
                    $location.$$parse(oldUrl);
                    $location.$$state = oldState;
                    setBrowserUrlWithFallback(oldUrl, false, oldState);
                  } else {
                    initializing = false;
                    afterLocationChange(oldUrl, oldState);
                  }
                });
                if (!$rootScope.$$phase)
                  $rootScope.$digest();
              });
              $rootScope.$watch(function $locationWatch() {
                if (initializing || $location.$$urlUpdatedByLocation) {
                  $location.$$urlUpdatedByLocation = false;
                  var oldUrl = $browser.url();
                  var newUrl = $location.absUrl();
                  var oldState = $browser.state();
                  var currentReplace = $location.$$replace;
                  var urlOrStateChanged = !urlsEqual(oldUrl, newUrl) || $location.$$html5 && $sniffer.history && oldState !== $location.$$state;
                  if (initializing || urlOrStateChanged) {
                    initializing = false;
                    $rootScope.$evalAsync(function() {
                      var newUrl2 = $location.absUrl();
                      var defaultPrevented = $rootScope.$broadcast(
                        "$locationChangeStart",
                        newUrl2,
                        oldUrl,
                        $location.$$state,
                        oldState
                      ).defaultPrevented;
                      if ($location.absUrl() !== newUrl2)
                        return;
                      if (defaultPrevented) {
                        $location.$$parse(oldUrl);
                        $location.$$state = oldState;
                      } else {
                        if (urlOrStateChanged) {
                          setBrowserUrlWithFallback(
                            newUrl2,
                            currentReplace,
                            oldState === $location.$$state ? null : $location.$$state
                          );
                        }
                        afterLocationChange(oldUrl, oldState);
                      }
                    });
                  }
                }
                $location.$$replace = false;
              });
              return $location;
              function afterLocationChange(oldUrl, oldState) {
                $rootScope.$broadcast(
                  "$locationChangeSuccess",
                  $location.absUrl(),
                  oldUrl,
                  $location.$$state,
                  oldState
                );
              }
            }
          ];
        }
        function $LogProvider() {
          var debug = true, self2 = this;
          this.debugEnabled = function(flag) {
            if (isDefined(flag)) {
              debug = flag;
              return this;
            } else {
              return debug;
            }
          };
          this.$get = ["$window", function($window) {
            var formatStackTrace = msie || /\bEdge\//.test($window.navigator && $window.navigator.userAgent);
            return {
              log: consoleLog("log"),
              info: consoleLog("info"),
              warn: consoleLog("warn"),
              error: consoleLog("error"),
              debug: function() {
                var fn = consoleLog("debug");
                return function() {
                  if (debug) {
                    fn.apply(self2, arguments);
                  }
                };
              }()
            };
            function formatError(arg) {
              if (isError(arg)) {
                if (arg.stack && formatStackTrace) {
                  arg = arg.message && arg.stack.indexOf(arg.message) === -1 ? "Error: " + arg.message + "\n" + arg.stack : arg.stack;
                } else if (arg.sourceURL) {
                  arg = arg.message + "\n" + arg.sourceURL + ":" + arg.line;
                }
              }
              return arg;
            }
            function consoleLog(type) {
              var console2 = $window.console || {}, logFn = console2[type] || console2.log || noop;
              return function() {
                var args = [];
                forEach(arguments, function(arg) {
                  args.push(formatError(arg));
                });
                return Function.prototype.apply.call(logFn, console2, args);
              };
            }
          }];
        }
        var $parseMinErr = minErr("$parse");
        var objectValueOf = {}.constructor.prototype.valueOf;
        function getStringValue(name) {
          return name + "";
        }
        var OPERATORS = createMap();
        forEach("+ - * / % === !== == != < > <= >= && || ! = |".split(" "), function(operator) {
          OPERATORS[operator] = true;
        });
        var ESCAPE = { "n": "\n", "f": "\f", "r": "\r", "t": "	", "v": "\v", "'": "'", '"': '"' };
        var Lexer = function Lexer2(options) {
          this.options = options;
        };
        Lexer.prototype = {
          constructor: Lexer,
          lex: function(text) {
            this.text = text;
            this.index = 0;
            this.tokens = [];
            while (this.index < this.text.length) {
              var ch = this.text.charAt(this.index);
              if (ch === '"' || ch === "'") {
                this.readString(ch);
              } else if (this.isNumber(ch) || ch === "." && this.isNumber(this.peek())) {
                this.readNumber();
              } else if (this.isIdentifierStart(this.peekMultichar())) {
                this.readIdent();
              } else if (this.is(ch, "(){}[].,;:?")) {
                this.tokens.push({ index: this.index, text: ch });
                this.index++;
              } else if (this.isWhitespace(ch)) {
                this.index++;
              } else {
                var ch2 = ch + this.peek();
                var ch3 = ch2 + this.peek(2);
                var op1 = OPERATORS[ch];
                var op2 = OPERATORS[ch2];
                var op3 = OPERATORS[ch3];
                if (op1 || op2 || op3) {
                  var token = op3 ? ch3 : op2 ? ch2 : ch;
                  this.tokens.push({ index: this.index, text: token, operator: true });
                  this.index += token.length;
                } else {
                  this.throwError("Unexpected next character ", this.index, this.index + 1);
                }
              }
            }
            return this.tokens;
          },
          is: function(ch, chars) {
            return chars.indexOf(ch) !== -1;
          },
          peek: function(i) {
            var num = i || 1;
            return this.index + num < this.text.length ? this.text.charAt(this.index + num) : false;
          },
          isNumber: function(ch) {
            return "0" <= ch && ch <= "9" && typeof ch === "string";
          },
          isWhitespace: function(ch) {
            return ch === " " || ch === "\r" || ch === "	" || ch === "\n" || ch === "\v" || ch === "\xA0";
          },
          isIdentifierStart: function(ch) {
            return this.options.isIdentifierStart ? this.options.isIdentifierStart(ch, this.codePointAt(ch)) : this.isValidIdentifierStart(ch);
          },
          isValidIdentifierStart: function(ch) {
            return "a" <= ch && ch <= "z" || "A" <= ch && ch <= "Z" || "_" === ch || ch === "$";
          },
          isIdentifierContinue: function(ch) {
            return this.options.isIdentifierContinue ? this.options.isIdentifierContinue(ch, this.codePointAt(ch)) : this.isValidIdentifierContinue(ch);
          },
          isValidIdentifierContinue: function(ch, cp) {
            return this.isValidIdentifierStart(ch, cp) || this.isNumber(ch);
          },
          codePointAt: function(ch) {
            if (ch.length === 1)
              return ch.charCodeAt(0);
            return (ch.charCodeAt(0) << 10) + ch.charCodeAt(1) - 56613888;
          },
          peekMultichar: function() {
            var ch = this.text.charAt(this.index);
            var peek = this.peek();
            if (!peek) {
              return ch;
            }
            var cp1 = ch.charCodeAt(0);
            var cp2 = peek.charCodeAt(0);
            if (cp1 >= 55296 && cp1 <= 56319 && cp2 >= 56320 && cp2 <= 57343) {
              return ch + peek;
            }
            return ch;
          },
          isExpOperator: function(ch) {
            return ch === "-" || ch === "+" || this.isNumber(ch);
          },
          throwError: function(error, start, end2) {
            end2 = end2 || this.index;
            var colStr = isDefined(start) ? "s " + start + "-" + this.index + " [" + this.text.substring(start, end2) + "]" : " " + end2;
            throw $parseMinErr(
              "lexerr",
              "Lexer Error: {0} at column{1} in expression [{2}].",
              error,
              colStr,
              this.text
            );
          },
          readNumber: function() {
            var number = "";
            var start = this.index;
            while (this.index < this.text.length) {
              var ch = lowercase(this.text.charAt(this.index));
              if (ch === "." || this.isNumber(ch)) {
                number += ch;
              } else {
                var peekCh = this.peek();
                if (ch === "e" && this.isExpOperator(peekCh)) {
                  number += ch;
                } else if (this.isExpOperator(ch) && peekCh && this.isNumber(peekCh) && number.charAt(number.length - 1) === "e") {
                  number += ch;
                } else if (this.isExpOperator(ch) && (!peekCh || !this.isNumber(peekCh)) && number.charAt(number.length - 1) === "e") {
                  this.throwError("Invalid exponent");
                } else {
                  break;
                }
              }
              this.index++;
            }
            this.tokens.push({
              index: start,
              text: number,
              constant: true,
              value: Number(number)
            });
          },
          readIdent: function() {
            var start = this.index;
            this.index += this.peekMultichar().length;
            while (this.index < this.text.length) {
              var ch = this.peekMultichar();
              if (!this.isIdentifierContinue(ch)) {
                break;
              }
              this.index += ch.length;
            }
            this.tokens.push({
              index: start,
              text: this.text.slice(start, this.index),
              identifier: true
            });
          },
          readString: function(quote) {
            var start = this.index;
            this.index++;
            var string = "";
            var rawString = quote;
            var escape = false;
            while (this.index < this.text.length) {
              var ch = this.text.charAt(this.index);
              rawString += ch;
              if (escape) {
                if (ch === "u") {
                  var hex2 = this.text.substring(this.index + 1, this.index + 5);
                  if (!hex2.match(/[\da-f]{4}/i)) {
                    this.throwError("Invalid unicode escape [\\u" + hex2 + "]");
                  }
                  this.index += 4;
                  string += String.fromCharCode(parseInt(hex2, 16));
                } else {
                  var rep = ESCAPE[ch];
                  string = string + (rep || ch);
                }
                escape = false;
              } else if (ch === "\\") {
                escape = true;
              } else if (ch === quote) {
                this.index++;
                this.tokens.push({
                  index: start,
                  text: rawString,
                  constant: true,
                  value: string
                });
                return;
              } else {
                string += ch;
              }
              this.index++;
            }
            this.throwError("Unterminated quote", start);
          }
        };
        var AST = function AST2(lexer, options) {
          this.lexer = lexer;
          this.options = options;
        };
        AST.Program = "Program";
        AST.ExpressionStatement = "ExpressionStatement";
        AST.AssignmentExpression = "AssignmentExpression";
        AST.ConditionalExpression = "ConditionalExpression";
        AST.LogicalExpression = "LogicalExpression";
        AST.BinaryExpression = "BinaryExpression";
        AST.UnaryExpression = "UnaryExpression";
        AST.CallExpression = "CallExpression";
        AST.MemberExpression = "MemberExpression";
        AST.Identifier = "Identifier";
        AST.Literal = "Literal";
        AST.ArrayExpression = "ArrayExpression";
        AST.Property = "Property";
        AST.ObjectExpression = "ObjectExpression";
        AST.ThisExpression = "ThisExpression";
        AST.LocalsExpression = "LocalsExpression";
        AST.NGValueParameter = "NGValueParameter";
        AST.prototype = {
          ast: function(text) {
            this.text = text;
            this.tokens = this.lexer.lex(text);
            var value = this.program();
            if (this.tokens.length !== 0) {
              this.throwError("is an unexpected token", this.tokens[0]);
            }
            return value;
          },
          program: function() {
            var body = [];
            while (true) {
              if (this.tokens.length > 0 && !this.peek("}", ")", ";", "]"))
                body.push(this.expressionStatement());
              if (!this.expect(";")) {
                return { type: AST.Program, body };
              }
            }
          },
          expressionStatement: function() {
            return { type: AST.ExpressionStatement, expression: this.filterChain() };
          },
          filterChain: function() {
            var left = this.expression();
            while (this.expect("|")) {
              left = this.filter(left);
            }
            return left;
          },
          expression: function() {
            return this.assignment();
          },
          assignment: function() {
            var result = this.ternary();
            if (this.expect("=")) {
              if (!isAssignable(result)) {
                throw $parseMinErr("lval", "Trying to assign a value to a non l-value");
              }
              result = { type: AST.AssignmentExpression, left: result, right: this.assignment(), operator: "=" };
            }
            return result;
          },
          ternary: function() {
            var test = this.logicalOR();
            var alternate;
            var consequent;
            if (this.expect("?")) {
              alternate = this.expression();
              if (this.consume(":")) {
                consequent = this.expression();
                return { type: AST.ConditionalExpression, test, alternate, consequent };
              }
            }
            return test;
          },
          logicalOR: function() {
            var left = this.logicalAND();
            while (this.expect("||")) {
              left = { type: AST.LogicalExpression, operator: "||", left, right: this.logicalAND() };
            }
            return left;
          },
          logicalAND: function() {
            var left = this.equality();
            while (this.expect("&&")) {
              left = { type: AST.LogicalExpression, operator: "&&", left, right: this.equality() };
            }
            return left;
          },
          equality: function() {
            var left = this.relational();
            var token;
            while (token = this.expect("==", "!=", "===", "!==")) {
              left = { type: AST.BinaryExpression, operator: token.text, left, right: this.relational() };
            }
            return left;
          },
          relational: function() {
            var left = this.additive();
            var token;
            while (token = this.expect("<", ">", "<=", ">=")) {
              left = { type: AST.BinaryExpression, operator: token.text, left, right: this.additive() };
            }
            return left;
          },
          additive: function() {
            var left = this.multiplicative();
            var token;
            while (token = this.expect("+", "-")) {
              left = { type: AST.BinaryExpression, operator: token.text, left, right: this.multiplicative() };
            }
            return left;
          },
          multiplicative: function() {
            var left = this.unary();
            var token;
            while (token = this.expect("*", "/", "%")) {
              left = { type: AST.BinaryExpression, operator: token.text, left, right: this.unary() };
            }
            return left;
          },
          unary: function() {
            var token;
            if (token = this.expect("+", "-", "!")) {
              return { type: AST.UnaryExpression, operator: token.text, prefix: true, argument: this.unary() };
            } else {
              return this.primary();
            }
          },
          primary: function() {
            var primary;
            if (this.expect("(")) {
              primary = this.filterChain();
              this.consume(")");
            } else if (this.expect("[")) {
              primary = this.arrayDeclaration();
            } else if (this.expect("{")) {
              primary = this.object();
            } else if (this.selfReferential.hasOwnProperty(this.peek().text)) {
              primary = copy(this.selfReferential[this.consume().text]);
            } else if (this.options.literals.hasOwnProperty(this.peek().text)) {
              primary = { type: AST.Literal, value: this.options.literals[this.consume().text] };
            } else if (this.peek().identifier) {
              primary = this.identifier();
            } else if (this.peek().constant) {
              primary = this.constant();
            } else {
              this.throwError("not a primary expression", this.peek());
            }
            var next;
            while (next = this.expect("(", "[", ".")) {
              if (next.text === "(") {
                primary = { type: AST.CallExpression, callee: primary, arguments: this.parseArguments() };
                this.consume(")");
              } else if (next.text === "[") {
                primary = { type: AST.MemberExpression, object: primary, property: this.expression(), computed: true };
                this.consume("]");
              } else if (next.text === ".") {
                primary = { type: AST.MemberExpression, object: primary, property: this.identifier(), computed: false };
              } else {
                this.throwError("IMPOSSIBLE");
              }
            }
            return primary;
          },
          filter: function(baseExpression) {
            var args = [baseExpression];
            var result = { type: AST.CallExpression, callee: this.identifier(), arguments: args, filter: true };
            while (this.expect(":")) {
              args.push(this.expression());
            }
            return result;
          },
          parseArguments: function() {
            var args = [];
            if (this.peekToken().text !== ")") {
              do {
                args.push(this.filterChain());
              } while (this.expect(","));
            }
            return args;
          },
          identifier: function() {
            var token = this.consume();
            if (!token.identifier) {
              this.throwError("is not a valid identifier", token);
            }
            return { type: AST.Identifier, name: token.text };
          },
          constant: function() {
            return { type: AST.Literal, value: this.consume().value };
          },
          arrayDeclaration: function() {
            var elements = [];
            if (this.peekToken().text !== "]") {
              do {
                if (this.peek("]")) {
                  break;
                }
                elements.push(this.expression());
              } while (this.expect(","));
            }
            this.consume("]");
            return { type: AST.ArrayExpression, elements };
          },
          object: function() {
            var properties = [], property;
            if (this.peekToken().text !== "}") {
              do {
                if (this.peek("}")) {
                  break;
                }
                property = { type: AST.Property, kind: "init" };
                if (this.peek().constant) {
                  property.key = this.constant();
                  property.computed = false;
                  this.consume(":");
                  property.value = this.expression();
                } else if (this.peek().identifier) {
                  property.key = this.identifier();
                  property.computed = false;
                  if (this.peek(":")) {
                    this.consume(":");
                    property.value = this.expression();
                  } else {
                    property.value = property.key;
                  }
                } else if (this.peek("[")) {
                  this.consume("[");
                  property.key = this.expression();
                  this.consume("]");
                  property.computed = true;
                  this.consume(":");
                  property.value = this.expression();
                } else {
                  this.throwError("invalid key", this.peek());
                }
                properties.push(property);
              } while (this.expect(","));
            }
            this.consume("}");
            return { type: AST.ObjectExpression, properties };
          },
          throwError: function(msg, token) {
            throw $parseMinErr(
              "syntax",
              "Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",
              token.text,
              msg,
              token.index + 1,
              this.text,
              this.text.substring(token.index)
            );
          },
          consume: function(e1) {
            if (this.tokens.length === 0) {
              throw $parseMinErr("ueoe", "Unexpected end of expression: {0}", this.text);
            }
            var token = this.expect(e1);
            if (!token) {
              this.throwError("is unexpected, expecting [" + e1 + "]", this.peek());
            }
            return token;
          },
          peekToken: function() {
            if (this.tokens.length === 0) {
              throw $parseMinErr("ueoe", "Unexpected end of expression: {0}", this.text);
            }
            return this.tokens[0];
          },
          peek: function(e1, e2, e3, e4) {
            return this.peekAhead(0, e1, e2, e3, e4);
          },
          peekAhead: function(i, e1, e2, e3, e4) {
            if (this.tokens.length > i) {
              var token = this.tokens[i];
              var t = token.text;
              if (t === e1 || t === e2 || t === e3 || t === e4 || !e1 && !e2 && !e3 && !e4) {
                return token;
              }
            }
            return false;
          },
          expect: function(e1, e2, e3, e4) {
            var token = this.peek(e1, e2, e3, e4);
            if (token) {
              this.tokens.shift();
              return token;
            }
            return false;
          },
          selfReferential: {
            "this": { type: AST.ThisExpression },
            "$locals": { type: AST.LocalsExpression }
          }
        };
        function ifDefined(v, d) {
          return typeof v !== "undefined" ? v : d;
        }
        function plusFn(l, r) {
          if (typeof l === "undefined")
            return r;
          if (typeof r === "undefined")
            return l;
          return l + r;
        }
        function isStateless($filter, filterName) {
          var fn = $filter(filterName);
          return !fn.$stateful;
        }
        var PURITY_ABSOLUTE = 1;
        var PURITY_RELATIVE = 2;
        function isPure(node, parentIsPure) {
          switch (node.type) {
            case AST.MemberExpression:
              if (node.computed) {
                return false;
              }
              break;
            case AST.UnaryExpression:
              return PURITY_ABSOLUTE;
            case AST.BinaryExpression:
              return node.operator !== "+" ? PURITY_ABSOLUTE : false;
            case AST.CallExpression:
              return false;
          }
          return void 0 === parentIsPure ? PURITY_RELATIVE : parentIsPure;
        }
        function findConstantAndWatchExpressions(ast, $filter, parentIsPure) {
          var allConstants;
          var argsToWatch;
          var isStatelessFilter;
          var astIsPure = ast.isPure = isPure(ast, parentIsPure);
          switch (ast.type) {
            case AST.Program:
              allConstants = true;
              forEach(ast.body, function(expr) {
                findConstantAndWatchExpressions(expr.expression, $filter, astIsPure);
                allConstants = allConstants && expr.expression.constant;
              });
              ast.constant = allConstants;
              break;
            case AST.Literal:
              ast.constant = true;
              ast.toWatch = [];
              break;
            case AST.UnaryExpression:
              findConstantAndWatchExpressions(ast.argument, $filter, astIsPure);
              ast.constant = ast.argument.constant;
              ast.toWatch = ast.argument.toWatch;
              break;
            case AST.BinaryExpression:
              findConstantAndWatchExpressions(ast.left, $filter, astIsPure);
              findConstantAndWatchExpressions(ast.right, $filter, astIsPure);
              ast.constant = ast.left.constant && ast.right.constant;
              ast.toWatch = ast.left.toWatch.concat(ast.right.toWatch);
              break;
            case AST.LogicalExpression:
              findConstantAndWatchExpressions(ast.left, $filter, astIsPure);
              findConstantAndWatchExpressions(ast.right, $filter, astIsPure);
              ast.constant = ast.left.constant && ast.right.constant;
              ast.toWatch = ast.constant ? [] : [ast];
              break;
            case AST.ConditionalExpression:
              findConstantAndWatchExpressions(ast.test, $filter, astIsPure);
              findConstantAndWatchExpressions(ast.alternate, $filter, astIsPure);
              findConstantAndWatchExpressions(ast.consequent, $filter, astIsPure);
              ast.constant = ast.test.constant && ast.alternate.constant && ast.consequent.constant;
              ast.toWatch = ast.constant ? [] : [ast];
              break;
            case AST.Identifier:
              ast.constant = false;
              ast.toWatch = [ast];
              break;
            case AST.MemberExpression:
              findConstantAndWatchExpressions(ast.object, $filter, astIsPure);
              if (ast.computed) {
                findConstantAndWatchExpressions(ast.property, $filter, astIsPure);
              }
              ast.constant = ast.object.constant && (!ast.computed || ast.property.constant);
              ast.toWatch = ast.constant ? [] : [ast];
              break;
            case AST.CallExpression:
              isStatelessFilter = ast.filter ? isStateless($filter, ast.callee.name) : false;
              allConstants = isStatelessFilter;
              argsToWatch = [];
              forEach(ast.arguments, function(expr) {
                findConstantAndWatchExpressions(expr, $filter, astIsPure);
                allConstants = allConstants && expr.constant;
                argsToWatch.push.apply(argsToWatch, expr.toWatch);
              });
              ast.constant = allConstants;
              ast.toWatch = isStatelessFilter ? argsToWatch : [ast];
              break;
            case AST.AssignmentExpression:
              findConstantAndWatchExpressions(ast.left, $filter, astIsPure);
              findConstantAndWatchExpressions(ast.right, $filter, astIsPure);
              ast.constant = ast.left.constant && ast.right.constant;
              ast.toWatch = [ast];
              break;
            case AST.ArrayExpression:
              allConstants = true;
              argsToWatch = [];
              forEach(ast.elements, function(expr) {
                findConstantAndWatchExpressions(expr, $filter, astIsPure);
                allConstants = allConstants && expr.constant;
                argsToWatch.push.apply(argsToWatch, expr.toWatch);
              });
              ast.constant = allConstants;
              ast.toWatch = argsToWatch;
              break;
            case AST.ObjectExpression:
              allConstants = true;
              argsToWatch = [];
              forEach(ast.properties, function(property) {
                findConstantAndWatchExpressions(property.value, $filter, astIsPure);
                allConstants = allConstants && property.value.constant;
                argsToWatch.push.apply(argsToWatch, property.value.toWatch);
                if (property.computed) {
                  findConstantAndWatchExpressions(property.key, $filter, false);
                  allConstants = allConstants && property.key.constant;
                  argsToWatch.push.apply(argsToWatch, property.key.toWatch);
                }
              });
              ast.constant = allConstants;
              ast.toWatch = argsToWatch;
              break;
            case AST.ThisExpression:
              ast.constant = false;
              ast.toWatch = [];
              break;
            case AST.LocalsExpression:
              ast.constant = false;
              ast.toWatch = [];
              break;
          }
        }
        function getInputs(body) {
          if (body.length !== 1)
            return;
          var lastExpression = body[0].expression;
          var candidate = lastExpression.toWatch;
          if (candidate.length !== 1)
            return candidate;
          return candidate[0] !== lastExpression ? candidate : void 0;
        }
        function isAssignable(ast) {
          return ast.type === AST.Identifier || ast.type === AST.MemberExpression;
        }
        function assignableAST(ast) {
          if (ast.body.length === 1 && isAssignable(ast.body[0].expression)) {
            return { type: AST.AssignmentExpression, left: ast.body[0].expression, right: { type: AST.NGValueParameter }, operator: "=" };
          }
        }
        function isLiteral(ast) {
          return ast.body.length === 0 || ast.body.length === 1 && (ast.body[0].expression.type === AST.Literal || ast.body[0].expression.type === AST.ArrayExpression || ast.body[0].expression.type === AST.ObjectExpression);
        }
        function isConstant(ast) {
          return ast.constant;
        }
        function ASTCompiler($filter) {
          this.$filter = $filter;
        }
        ASTCompiler.prototype = {
          compile: function(ast) {
            var self2 = this;
            this.state = {
              nextId: 0,
              filters: {},
              fn: { vars: [], body: [], own: {} },
              assign: { vars: [], body: [], own: {} },
              inputs: []
            };
            findConstantAndWatchExpressions(ast, self2.$filter);
            var extra = "";
            var assignable;
            this.stage = "assign";
            if (assignable = assignableAST(ast)) {
              this.state.computing = "assign";
              var result = this.nextId();
              this.recurse(assignable, result);
              this.return_(result);
              extra = "fn.assign=" + this.generateFunction("assign", "s,v,l");
            }
            var toWatch = getInputs(ast.body);
            self2.stage = "inputs";
            forEach(toWatch, function(watch, key2) {
              var fnKey = "fn" + key2;
              self2.state[fnKey] = { vars: [], body: [], own: {} };
              self2.state.computing = fnKey;
              var intoId = self2.nextId();
              self2.recurse(watch, intoId);
              self2.return_(intoId);
              self2.state.inputs.push({ name: fnKey, isPure: watch.isPure });
              watch.watchId = key2;
            });
            this.state.computing = "fn";
            this.stage = "main";
            this.recurse(ast);
            var fnString = '"' + this.USE + " " + this.STRICT + '";\n' + this.filterPrefix() + "var fn=" + this.generateFunction("fn", "s,l,a,i") + extra + this.watchFns() + "return fn;";
            var fn = new Function(
              "$filter",
              "getStringValue",
              "ifDefined",
              "plus",
              fnString
            )(
              this.$filter,
              getStringValue,
              ifDefined,
              plusFn
            );
            this.state = this.stage = void 0;
            return fn;
          },
          USE: "use",
          STRICT: "strict",
          watchFns: function() {
            var result = [];
            var inputs = this.state.inputs;
            var self2 = this;
            forEach(inputs, function(input) {
              result.push("var " + input.name + "=" + self2.generateFunction(input.name, "s"));
              if (input.isPure) {
                result.push(input.name, ".isPure=" + JSON.stringify(input.isPure) + ";");
              }
            });
            if (inputs.length) {
              result.push("fn.inputs=[" + inputs.map(function(i) {
                return i.name;
              }).join(",") + "];");
            }
            return result.join("");
          },
          generateFunction: function(name, params) {
            return "function(" + params + "){" + this.varsPrefix(name) + this.body(name) + "};";
          },
          filterPrefix: function() {
            var parts = [];
            var self2 = this;
            forEach(this.state.filters, function(id, filter) {
              parts.push(id + "=$filter(" + self2.escape(filter) + ")");
            });
            if (parts.length)
              return "var " + parts.join(",") + ";";
            return "";
          },
          varsPrefix: function(section) {
            return this.state[section].vars.length ? "var " + this.state[section].vars.join(",") + ";" : "";
          },
          body: function(section) {
            return this.state[section].body.join("");
          },
          recurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) {
            var left, right, self2 = this, args, expression, computed;
            recursionFn = recursionFn || noop;
            if (!skipWatchIdCheck && isDefined(ast.watchId)) {
              intoId = intoId || this.nextId();
              this.if_(
                "i",
                this.lazyAssign(intoId, this.computedMember("i", ast.watchId)),
                this.lazyRecurse(ast, intoId, nameId, recursionFn, create, true)
              );
              return;
            }
            switch (ast.type) {
              case AST.Program:
                forEach(ast.body, function(expression2, pos) {
                  self2.recurse(expression2.expression, void 0, void 0, function(expr) {
                    right = expr;
                  });
                  if (pos !== ast.body.length - 1) {
                    self2.current().body.push(right, ";");
                  } else {
                    self2.return_(right);
                  }
                });
                break;
              case AST.Literal:
                expression = this.escape(ast.value);
                this.assign(intoId, expression);
                recursionFn(intoId || expression);
                break;
              case AST.UnaryExpression:
                this.recurse(ast.argument, void 0, void 0, function(expr) {
                  right = expr;
                });
                expression = ast.operator + "(" + this.ifDefined(right, 0) + ")";
                this.assign(intoId, expression);
                recursionFn(expression);
                break;
              case AST.BinaryExpression:
                this.recurse(ast.left, void 0, void 0, function(expr) {
                  left = expr;
                });
                this.recurse(ast.right, void 0, void 0, function(expr) {
                  right = expr;
                });
                if (ast.operator === "+") {
                  expression = this.plus(left, right);
                } else if (ast.operator === "-") {
                  expression = this.ifDefined(left, 0) + ast.operator + this.ifDefined(right, 0);
                } else {
                  expression = "(" + left + ")" + ast.operator + "(" + right + ")";
                }
                this.assign(intoId, expression);
                recursionFn(expression);
                break;
              case AST.LogicalExpression:
                intoId = intoId || this.nextId();
                self2.recurse(ast.left, intoId);
                self2.if_(ast.operator === "&&" ? intoId : self2.not(intoId), self2.lazyRecurse(ast.right, intoId));
                recursionFn(intoId);
                break;
              case AST.ConditionalExpression:
                intoId = intoId || this.nextId();
                self2.recurse(ast.test, intoId);
                self2.if_(intoId, self2.lazyRecurse(ast.alternate, intoId), self2.lazyRecurse(ast.consequent, intoId));
                recursionFn(intoId);
                break;
              case AST.Identifier:
                intoId = intoId || this.nextId();
                if (nameId) {
                  nameId.context = self2.stage === "inputs" ? "s" : this.assign(this.nextId(), this.getHasOwnProperty("l", ast.name) + "?l:s");
                  nameId.computed = false;
                  nameId.name = ast.name;
                }
                self2.if_(
                  self2.stage === "inputs" || self2.not(self2.getHasOwnProperty("l", ast.name)),
                  function() {
                    self2.if_(self2.stage === "inputs" || "s", function() {
                      if (create && create !== 1) {
                        self2.if_(
                          self2.isNull(self2.nonComputedMember("s", ast.name)),
                          self2.lazyAssign(self2.nonComputedMember("s", ast.name), "{}")
                        );
                      }
                      self2.assign(intoId, self2.nonComputedMember("s", ast.name));
                    });
                  },
                  intoId && self2.lazyAssign(intoId, self2.nonComputedMember("l", ast.name))
                );
                recursionFn(intoId);
                break;
              case AST.MemberExpression:
                left = nameId && (nameId.context = this.nextId()) || this.nextId();
                intoId = intoId || this.nextId();
                self2.recurse(ast.object, left, void 0, function() {
                  self2.if_(self2.notNull(left), function() {
                    if (ast.computed) {
                      right = self2.nextId();
                      self2.recurse(ast.property, right);
                      self2.getStringValue(right);
                      if (create && create !== 1) {
                        self2.if_(self2.not(self2.computedMember(left, right)), self2.lazyAssign(self2.computedMember(left, right), "{}"));
                      }
                      expression = self2.computedMember(left, right);
                      self2.assign(intoId, expression);
                      if (nameId) {
                        nameId.computed = true;
                        nameId.name = right;
                      }
                    } else {
                      if (create && create !== 1) {
                        self2.if_(self2.isNull(self2.nonComputedMember(left, ast.property.name)), self2.lazyAssign(self2.nonComputedMember(left, ast.property.name), "{}"));
                      }
                      expression = self2.nonComputedMember(left, ast.property.name);
                      self2.assign(intoId, expression);
                      if (nameId) {
                        nameId.computed = false;
                        nameId.name = ast.property.name;
                      }
                    }
                  }, function() {
                    self2.assign(intoId, "undefined");
                  });
                  recursionFn(intoId);
                }, !!create);
                break;
              case AST.CallExpression:
                intoId = intoId || this.nextId();
                if (ast.filter) {
                  right = self2.filter(ast.callee.name);
                  args = [];
                  forEach(ast.arguments, function(expr) {
                    var argument = self2.nextId();
                    self2.recurse(expr, argument);
                    args.push(argument);
                  });
                  expression = right + "(" + args.join(",") + ")";
                  self2.assign(intoId, expression);
                  recursionFn(intoId);
                } else {
                  right = self2.nextId();
                  left = {};
                  args = [];
                  self2.recurse(ast.callee, right, left, function() {
                    self2.if_(self2.notNull(right), function() {
                      forEach(ast.arguments, function(expr) {
                        self2.recurse(expr, ast.constant ? void 0 : self2.nextId(), void 0, function(argument) {
                          args.push(argument);
                        });
                      });
                      if (left.name) {
                        expression = self2.member(left.context, left.name, left.computed) + "(" + args.join(",") + ")";
                      } else {
                        expression = right + "(" + args.join(",") + ")";
                      }
                      self2.assign(intoId, expression);
                    }, function() {
                      self2.assign(intoId, "undefined");
                    });
                    recursionFn(intoId);
                  });
                }
                break;
              case AST.AssignmentExpression:
                right = this.nextId();
                left = {};
                this.recurse(ast.left, void 0, left, function() {
                  self2.if_(self2.notNull(left.context), function() {
                    self2.recurse(ast.right, right);
                    expression = self2.member(left.context, left.name, left.computed) + ast.operator + right;
                    self2.assign(intoId, expression);
                    recursionFn(intoId || expression);
                  });
                }, 1);
                break;
              case AST.ArrayExpression:
                args = [];
                forEach(ast.elements, function(expr) {
                  self2.recurse(expr, ast.constant ? void 0 : self2.nextId(), void 0, function(argument) {
                    args.push(argument);
                  });
                });
                expression = "[" + args.join(",") + "]";
                this.assign(intoId, expression);
                recursionFn(intoId || expression);
                break;
              case AST.ObjectExpression:
                args = [];
                computed = false;
                forEach(ast.properties, function(property) {
                  if (property.computed) {
                    computed = true;
                  }
                });
                if (computed) {
                  intoId = intoId || this.nextId();
                  this.assign(intoId, "{}");
                  forEach(ast.properties, function(property) {
                    if (property.computed) {
                      left = self2.nextId();
                      self2.recurse(property.key, left);
                    } else {
                      left = property.key.type === AST.Identifier ? property.key.name : "" + property.key.value;
                    }
                    right = self2.nextId();
                    self2.recurse(property.value, right);
                    self2.assign(self2.member(intoId, left, property.computed), right);
                  });
                } else {
                  forEach(ast.properties, function(property) {
                    self2.recurse(property.value, ast.constant ? void 0 : self2.nextId(), void 0, function(expr) {
                      args.push(self2.escape(
                        property.key.type === AST.Identifier ? property.key.name : "" + property.key.value
                      ) + ":" + expr);
                    });
                  });
                  expression = "{" + args.join(",") + "}";
                  this.assign(intoId, expression);
                }
                recursionFn(intoId || expression);
                break;
              case AST.ThisExpression:
                this.assign(intoId, "s");
                recursionFn(intoId || "s");
                break;
              case AST.LocalsExpression:
                this.assign(intoId, "l");
                recursionFn(intoId || "l");
                break;
              case AST.NGValueParameter:
                this.assign(intoId, "v");
                recursionFn(intoId || "v");
                break;
            }
          },
          getHasOwnProperty: function(element, property) {
            var key2 = element + "." + property;
            var own = this.current().own;
            if (!own.hasOwnProperty(key2)) {
              own[key2] = this.nextId(false, element + "&&(" + this.escape(property) + " in " + element + ")");
            }
            return own[key2];
          },
          assign: function(id, value) {
            if (!id)
              return;
            this.current().body.push(id, "=", value, ";");
            return id;
          },
          filter: function(filterName) {
            if (!this.state.filters.hasOwnProperty(filterName)) {
              this.state.filters[filterName] = this.nextId(true);
            }
            return this.state.filters[filterName];
          },
          ifDefined: function(id, defaultValue) {
            return "ifDefined(" + id + "," + this.escape(defaultValue) + ")";
          },
          plus: function(left, right) {
            return "plus(" + left + "," + right + ")";
          },
          return_: function(id) {
            this.current().body.push("return ", id, ";");
          },
          if_: function(test, alternate, consequent) {
            if (test === true) {
              alternate();
            } else {
              var body = this.current().body;
              body.push("if(", test, "){");
              alternate();
              body.push("}");
              if (consequent) {
                body.push("else{");
                consequent();
                body.push("}");
              }
            }
          },
          not: function(expression) {
            return "!(" + expression + ")";
          },
          isNull: function(expression) {
            return expression + "==null";
          },
          notNull: function(expression) {
            return expression + "!=null";
          },
          nonComputedMember: function(left, right) {
            var SAFE_IDENTIFIER = /^[$_a-zA-Z][$_a-zA-Z0-9]*$/;
            var UNSAFE_CHARACTERS = /[^$_a-zA-Z0-9]/g;
            if (SAFE_IDENTIFIER.test(right)) {
              return left + "." + right;
            } else {
              return left + '["' + right.replace(UNSAFE_CHARACTERS, this.stringEscapeFn) + '"]';
            }
          },
          computedMember: function(left, right) {
            return left + "[" + right + "]";
          },
          member: function(left, right, computed) {
            if (computed)
              return this.computedMember(left, right);
            return this.nonComputedMember(left, right);
          },
          getStringValue: function(item) {
            this.assign(item, "getStringValue(" + item + ")");
          },
          lazyRecurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) {
            var self2 = this;
            return function() {
              self2.recurse(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck);
            };
          },
          lazyAssign: function(id, value) {
            var self2 = this;
            return function() {
              self2.assign(id, value);
            };
          },
          stringEscapeRegex: /[^ a-zA-Z0-9]/g,
          stringEscapeFn: function(c) {
            return "\\u" + ("0000" + c.charCodeAt(0).toString(16)).slice(-4);
          },
          escape: function(value) {
            if (isString(value))
              return "'" + value.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'";
            if (isNumber2(value))
              return value.toString();
            if (value === true)
              return "true";
            if (value === false)
              return "false";
            if (value === null)
              return "null";
            if (typeof value === "undefined")
              return "undefined";
            throw $parseMinErr("esc", "IMPOSSIBLE");
          },
          nextId: function(skip, init) {
            var id = "v" + this.state.nextId++;
            if (!skip) {
              this.current().vars.push(id + (init ? "=" + init : ""));
            }
            return id;
          },
          current: function() {
            return this.state[this.state.computing];
          }
        };
        function ASTInterpreter($filter) {
          this.$filter = $filter;
        }
        ASTInterpreter.prototype = {
          compile: function(ast) {
            var self2 = this;
            findConstantAndWatchExpressions(ast, self2.$filter);
            var assignable;
            var assign;
            if (assignable = assignableAST(ast)) {
              assign = this.recurse(assignable);
            }
            var toWatch = getInputs(ast.body);
            var inputs;
            if (toWatch) {
              inputs = [];
              forEach(toWatch, function(watch, key2) {
                var input = self2.recurse(watch);
                input.isPure = watch.isPure;
                watch.input = input;
                inputs.push(input);
                watch.watchId = key2;
              });
            }
            var expressions = [];
            forEach(ast.body, function(expression) {
              expressions.push(self2.recurse(expression.expression));
            });
            var fn = ast.body.length === 0 ? noop : ast.body.length === 1 ? expressions[0] : function(scope, locals) {
              var lastValue;
              forEach(expressions, function(exp) {
                lastValue = exp(scope, locals);
              });
              return lastValue;
            };
            if (assign) {
              fn.assign = function(scope, value, locals) {
                return assign(scope, locals, value);
              };
            }
            if (inputs) {
              fn.inputs = inputs;
            }
            return fn;
          },
          recurse: function(ast, context, create) {
            var left, right, self2 = this, args;
            if (ast.input) {
              return this.inputs(ast.input, ast.watchId);
            }
            switch (ast.type) {
              case AST.Literal:
                return this.value(ast.value, context);
              case AST.UnaryExpression:
                right = this.recurse(ast.argument);
                return this["unary" + ast.operator](right, context);
              case AST.BinaryExpression:
                left = this.recurse(ast.left);
                right = this.recurse(ast.right);
                return this["binary" + ast.operator](left, right, context);
              case AST.LogicalExpression:
                left = this.recurse(ast.left);
                right = this.recurse(ast.right);
                return this["binary" + ast.operator](left, right, context);
              case AST.ConditionalExpression:
                return this["ternary?:"](
                  this.recurse(ast.test),
                  this.recurse(ast.alternate),
                  this.recurse(ast.consequent),
                  context
                );
              case AST.Identifier:
                return self2.identifier(ast.name, context, create);
              case AST.MemberExpression:
                left = this.recurse(ast.object, false, !!create);
                if (!ast.computed) {
                  right = ast.property.name;
                }
                if (ast.computed)
                  right = this.recurse(ast.property);
                return ast.computed ? this.computedMember(left, right, context, create) : this.nonComputedMember(left, right, context, create);
              case AST.CallExpression:
                args = [];
                forEach(ast.arguments, function(expr) {
                  args.push(self2.recurse(expr));
                });
                if (ast.filter)
                  right = this.$filter(ast.callee.name);
                if (!ast.filter)
                  right = this.recurse(ast.callee, true);
                return ast.filter ? function(scope, locals, assign, inputs) {
                  var values = [];
                  for (var i = 0; i < args.length; ++i) {
                    values.push(args[i](scope, locals, assign, inputs));
                  }
                  var value = right.apply(void 0, values, inputs);
                  return context ? { context: void 0, name: void 0, value } : value;
                } : function(scope, locals, assign, inputs) {
                  var rhs = right(scope, locals, assign, inputs);
                  var value;
                  if (rhs.value != null) {
                    var values = [];
                    for (var i = 0; i < args.length; ++i) {
                      values.push(args[i](scope, locals, assign, inputs));
                    }
                    value = rhs.value.apply(rhs.context, values);
                  }
                  return context ? { value } : value;
                };
              case AST.AssignmentExpression:
                left = this.recurse(ast.left, true, 1);
                right = this.recurse(ast.right);
                return function(scope, locals, assign, inputs) {
                  var lhs = left(scope, locals, assign, inputs);
                  var rhs = right(scope, locals, assign, inputs);
                  lhs.context[lhs.name] = rhs;
                  return context ? { value: rhs } : rhs;
                };
              case AST.ArrayExpression:
                args = [];
                forEach(ast.elements, function(expr) {
                  args.push(self2.recurse(expr));
                });
                return function(scope, locals, assign, inputs) {
                  var value = [];
                  for (var i = 0; i < args.length; ++i) {
                    value.push(args[i](scope, locals, assign, inputs));
                  }
                  return context ? { value } : value;
                };
              case AST.ObjectExpression:
                args = [];
                forEach(ast.properties, function(property) {
                  if (property.computed) {
                    args.push({
                      key: self2.recurse(property.key),
                      computed: true,
                      value: self2.recurse(property.value)
                    });
                  } else {
                    args.push({
                      key: property.key.type === AST.Identifier ? property.key.name : "" + property.key.value,
                      computed: false,
                      value: self2.recurse(property.value)
                    });
                  }
                });
                return function(scope, locals, assign, inputs) {
                  var value = {};
                  for (var i = 0; i < args.length; ++i) {
                    if (args[i].computed) {
                      value[args[i].key(scope, locals, assign, inputs)] = args[i].value(scope, locals, assign, inputs);
                    } else {
                      value[args[i].key] = args[i].value(scope, locals, assign, inputs);
                    }
                  }
                  return context ? { value } : value;
                };
              case AST.ThisExpression:
                return function(scope) {
                  return context ? { value: scope } : scope;
                };
              case AST.LocalsExpression:
                return function(scope, locals) {
                  return context ? { value: locals } : locals;
                };
              case AST.NGValueParameter:
                return function(scope, locals, assign) {
                  return context ? { value: assign } : assign;
                };
            }
          },
          "unary+": function(argument, context) {
            return function(scope, locals, assign, inputs) {
              var arg = argument(scope, locals, assign, inputs);
              if (isDefined(arg)) {
                arg = +arg;
              } else {
                arg = 0;
              }
              return context ? { value: arg } : arg;
            };
          },
          "unary-": function(argument, context) {
            return function(scope, locals, assign, inputs) {
              var arg = argument(scope, locals, assign, inputs);
              if (isDefined(arg)) {
                arg = -arg;
              } else {
                arg = -0;
              }
              return context ? { value: arg } : arg;
            };
          },
          "unary!": function(argument, context) {
            return function(scope, locals, assign, inputs) {
              var arg = !argument(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary+": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var lhs = left(scope, locals, assign, inputs);
              var rhs = right(scope, locals, assign, inputs);
              var arg = plusFn(lhs, rhs);
              return context ? { value: arg } : arg;
            };
          },
          "binary-": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var lhs = left(scope, locals, assign, inputs);
              var rhs = right(scope, locals, assign, inputs);
              var arg = (isDefined(lhs) ? lhs : 0) - (isDefined(rhs) ? rhs : 0);
              return context ? { value: arg } : arg;
            };
          },
          "binary*": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) * right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary/": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) / right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary%": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) % right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary===": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) === right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary!==": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) !== right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary==": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) == right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary!=": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) != right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary<": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) < right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary>": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) > right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary<=": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) <= right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary>=": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) >= right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary&&": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) && right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "binary||": function(left, right, context) {
            return function(scope, locals, assign, inputs) {
              var arg = left(scope, locals, assign, inputs) || right(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          "ternary?:": function(test, alternate, consequent, context) {
            return function(scope, locals, assign, inputs) {
              var arg = test(scope, locals, assign, inputs) ? alternate(scope, locals, assign, inputs) : consequent(scope, locals, assign, inputs);
              return context ? { value: arg } : arg;
            };
          },
          value: function(value, context) {
            return function() {
              return context ? { context: void 0, name: void 0, value } : value;
            };
          },
          identifier: function(name, context, create) {
            return function(scope, locals, assign, inputs) {
              var base = locals && name in locals ? locals : scope;
              if (create && create !== 1 && base && base[name] == null) {
                base[name] = {};
              }
              var value = base ? base[name] : void 0;
              if (context) {
                return { context: base, name, value };
              } else {
                return value;
              }
            };
          },
          computedMember: function(left, right, context, create) {
            return function(scope, locals, assign, inputs) {
              var lhs = left(scope, locals, assign, inputs);
              var rhs;
              var value;
              if (lhs != null) {
                rhs = right(scope, locals, assign, inputs);
                rhs = getStringValue(rhs);
                if (create && create !== 1) {
                  if (lhs && !lhs[rhs]) {
                    lhs[rhs] = {};
                  }
                }
                value = lhs[rhs];
              }
              if (context) {
                return { context: lhs, name: rhs, value };
              } else {
                return value;
              }
            };
          },
          nonComputedMember: function(left, right, context, create) {
            return function(scope, locals, assign, inputs) {
              var lhs = left(scope, locals, assign, inputs);
              if (create && create !== 1) {
                if (lhs && lhs[right] == null) {
                  lhs[right] = {};
                }
              }
              var value = lhs != null ? lhs[right] : void 0;
              if (context) {
                return { context: lhs, name: right, value };
              } else {
                return value;
              }
            };
          },
          inputs: function(input, watchId) {
            return function(scope, value, locals, inputs) {
              if (inputs)
                return inputs[watchId];
              return input(scope, value, locals);
            };
          }
        };
        function Parser(lexer, $filter, options) {
          this.ast = new AST(lexer, options);
          this.astCompiler = options.csp ? new ASTInterpreter($filter) : new ASTCompiler($filter);
        }
        Parser.prototype = {
          constructor: Parser,
          parse: function(text) {
            var ast = this.getAst(text);
            var fn = this.astCompiler.compile(ast.ast);
            fn.literal = isLiteral(ast.ast);
            fn.constant = isConstant(ast.ast);
            fn.oneTime = ast.oneTime;
            return fn;
          },
          getAst: function(exp) {
            var oneTime = false;
            exp = exp.trim();
            if (exp.charAt(0) === ":" && exp.charAt(1) === ":") {
              oneTime = true;
              exp = exp.substring(2);
            }
            return {
              ast: this.ast.ast(exp),
              oneTime
            };
          }
        };
        function getValueOf(value) {
          return isFunction(value.valueOf) ? value.valueOf() : objectValueOf.call(value);
        }
        function $ParseProvider() {
          var cache = createMap();
          var literals = {
            "true": true,
            "false": false,
            "null": null,
            "undefined": void 0
          };
          var identStart, identContinue;
          this.addLiteral = function(literalName, literalValue) {
            literals[literalName] = literalValue;
          };
          this.setIdentifierFns = function(identifierStart, identifierContinue) {
            identStart = identifierStart;
            identContinue = identifierContinue;
            return this;
          };
          this.$get = ["$filter", function($filter) {
            var noUnsafeEval = csp().noUnsafeEval;
            var $parseOptions = {
              csp: noUnsafeEval,
              literals: copy(literals),
              isIdentifierStart: isFunction(identStart) && identStart,
              isIdentifierContinue: isFunction(identContinue) && identContinue
            };
            $parse.$$getAst = $$getAst;
            return $parse;
            function $parse(exp, interceptorFn) {
              var parsedExpression, cacheKey;
              switch (typeof exp) {
                case "string":
                  exp = exp.trim();
                  cacheKey = exp;
                  parsedExpression = cache[cacheKey];
                  if (!parsedExpression) {
                    var lexer = new Lexer($parseOptions);
                    var parser = new Parser(lexer, $filter, $parseOptions);
                    parsedExpression = parser.parse(exp);
                    cache[cacheKey] = addWatchDelegate(parsedExpression);
                  }
                  return addInterceptor(parsedExpression, interceptorFn);
                case "function":
                  return addInterceptor(exp, interceptorFn);
                default:
                  return addInterceptor(noop, interceptorFn);
              }
            }
            function $$getAst(exp) {
              var lexer = new Lexer($parseOptions);
              var parser = new Parser(lexer, $filter, $parseOptions);
              return parser.getAst(exp).ast;
            }
            function expressionInputDirtyCheck(newValue, oldValueOfValue, compareObjectIdentity) {
              if (newValue == null || oldValueOfValue == null) {
                return newValue === oldValueOfValue;
              }
              if (typeof newValue === "object") {
                newValue = getValueOf(newValue);
                if (typeof newValue === "object" && !compareObjectIdentity) {
                  return false;
                }
              }
              return newValue === oldValueOfValue || newValue !== newValue && oldValueOfValue !== oldValueOfValue;
            }
            function inputsWatchDelegate(scope, listener, objectEquality, parsedExpression, prettyPrintExpression) {
              var inputExpressions = parsedExpression.inputs;
              var lastResult;
              if (inputExpressions.length === 1) {
                var oldInputValueOf = expressionInputDirtyCheck;
                inputExpressions = inputExpressions[0];
                return scope.$watch(function expressionInputWatch(scope2) {
                  var newInputValue = inputExpressions(scope2);
                  if (!expressionInputDirtyCheck(newInputValue, oldInputValueOf, inputExpressions.isPure)) {
                    lastResult = parsedExpression(scope2, void 0, void 0, [newInputValue]);
                    oldInputValueOf = newInputValue && getValueOf(newInputValue);
                  }
                  return lastResult;
                }, listener, objectEquality, prettyPrintExpression);
              }
              var oldInputValueOfValues = [];
              var oldInputValues = [];
              for (var i = 0, ii = inputExpressions.length; i < ii; i++) {
                oldInputValueOfValues[i] = expressionInputDirtyCheck;
                oldInputValues[i] = null;
              }
              return scope.$watch(function expressionInputsWatch(scope2) {
                var changed = false;
                for (var i2 = 0, ii2 = inputExpressions.length; i2 < ii2; i2++) {
                  var newInputValue = inputExpressions[i2](scope2);
                  if (changed || (changed = !expressionInputDirtyCheck(newInputValue, oldInputValueOfValues[i2], inputExpressions[i2].isPure))) {
                    oldInputValues[i2] = newInputValue;
                    oldInputValueOfValues[i2] = newInputValue && getValueOf(newInputValue);
                  }
                }
                if (changed) {
                  lastResult = parsedExpression(scope2, void 0, void 0, oldInputValues);
                }
                return lastResult;
              }, listener, objectEquality, prettyPrintExpression);
            }
            function oneTimeWatchDelegate(scope, listener, objectEquality, parsedExpression, prettyPrintExpression) {
              var isDone = parsedExpression.literal ? isAllDefined : isDefined;
              var unwatch, lastValue;
              var exp = parsedExpression.$$intercepted || parsedExpression;
              var post = parsedExpression.$$interceptor || identity;
              var useInputs = parsedExpression.inputs && !exp.inputs;
              oneTimeWatch.literal = parsedExpression.literal;
              oneTimeWatch.constant = parsedExpression.constant;
              oneTimeWatch.inputs = parsedExpression.inputs;
              addWatchDelegate(oneTimeWatch);
              unwatch = scope.$watch(oneTimeWatch, listener, objectEquality, prettyPrintExpression);
              return unwatch;
              function unwatchIfDone() {
                if (isDone(lastValue)) {
                  unwatch();
                }
              }
              function oneTimeWatch(scope2, locals, assign, inputs) {
                lastValue = useInputs && inputs ? inputs[0] : exp(scope2, locals, assign, inputs);
                if (isDone(lastValue)) {
                  scope2.$$postDigest(unwatchIfDone);
                }
                return post(lastValue);
              }
            }
            function isAllDefined(value) {
              var allDefined = true;
              forEach(value, function(val) {
                if (!isDefined(val))
                  allDefined = false;
              });
              return allDefined;
            }
            function constantWatchDelegate(scope, listener, objectEquality, parsedExpression) {
              var unwatch = scope.$watch(function constantWatch(scope2) {
                unwatch();
                return parsedExpression(scope2);
              }, listener, objectEquality);
              return unwatch;
            }
            function addWatchDelegate(parsedExpression) {
              if (parsedExpression.constant) {
                parsedExpression.$$watchDelegate = constantWatchDelegate;
              } else if (parsedExpression.oneTime) {
                parsedExpression.$$watchDelegate = oneTimeWatchDelegate;
              } else if (parsedExpression.inputs) {
                parsedExpression.$$watchDelegate = inputsWatchDelegate;
              }
              return parsedExpression;
            }
            function chainInterceptors(first, second) {
              function chainedInterceptor(value) {
                return second(first(value));
              }
              chainedInterceptor.$stateful = first.$stateful || second.$stateful;
              chainedInterceptor.$$pure = first.$$pure && second.$$pure;
              return chainedInterceptor;
            }
            function addInterceptor(parsedExpression, interceptorFn) {
              if (!interceptorFn)
                return parsedExpression;
              if (parsedExpression.$$interceptor) {
                interceptorFn = chainInterceptors(parsedExpression.$$interceptor, interceptorFn);
                parsedExpression = parsedExpression.$$intercepted;
              }
              var useInputs = false;
              var fn = function interceptedExpression(scope, locals, assign, inputs) {
                var value = useInputs && inputs ? inputs[0] : parsedExpression(scope, locals, assign, inputs);
                return interceptorFn(value);
              };
              fn.$$intercepted = parsedExpression;
              fn.$$interceptor = interceptorFn;
              fn.literal = parsedExpression.literal;
              fn.oneTime = parsedExpression.oneTime;
              fn.constant = parsedExpression.constant;
              if (!interceptorFn.$stateful) {
                useInputs = !parsedExpression.inputs;
                fn.inputs = parsedExpression.inputs ? parsedExpression.inputs : [parsedExpression];
                if (!interceptorFn.$$pure) {
                  fn.inputs = fn.inputs.map(function(e) {
                    if (e.isPure === PURITY_RELATIVE) {
                      return function depurifier(s2) {
                        return e(s2);
                      };
                    }
                    return e;
                  });
                }
              }
              return addWatchDelegate(fn);
            }
          }];
        }
        function $QProvider() {
          var errorOnUnhandledRejections = true;
          this.$get = ["$rootScope", "$exceptionHandler", function($rootScope, $exceptionHandler) {
            return qFactory(function(callback) {
              $rootScope.$evalAsync(callback);
            }, $exceptionHandler, errorOnUnhandledRejections);
          }];
          this.errorOnUnhandledRejections = function(value) {
            if (isDefined(value)) {
              errorOnUnhandledRejections = value;
              return this;
            } else {
              return errorOnUnhandledRejections;
            }
          };
        }
        function $$QProvider() {
          var errorOnUnhandledRejections = true;
          this.$get = ["$browser", "$exceptionHandler", function($browser, $exceptionHandler) {
            return qFactory(function(callback) {
              $browser.defer(callback);
            }, $exceptionHandler, errorOnUnhandledRejections);
          }];
          this.errorOnUnhandledRejections = function(value) {
            if (isDefined(value)) {
              errorOnUnhandledRejections = value;
              return this;
            } else {
              return errorOnUnhandledRejections;
            }
          };
        }
        function qFactory(nextTick, exceptionHandler, errorOnUnhandledRejections) {
          var $qMinErr = minErr("$q", TypeError);
          var queueSize = 0;
          var checkQueue = [];
          function defer() {
            return new Deferred();
          }
          function Deferred() {
            var promise = this.promise = new Promise2();
            this.resolve = function(val) {
              resolvePromise(promise, val);
            };
            this.reject = function(reason) {
              rejectPromise(promise, reason);
            };
            this.notify = function(progress) {
              notifyPromise(promise, progress);
            };
          }
          function Promise2() {
            this.$$state = { status: 0 };
          }
          extend(Promise2.prototype, {
            then: function(onFulfilled, onRejected, progressBack) {
              if (isUndefined(onFulfilled) && isUndefined(onRejected) && isUndefined(progressBack)) {
                return this;
              }
              var result = new Promise2();
              this.$$state.pending = this.$$state.pending || [];
              this.$$state.pending.push([result, onFulfilled, onRejected, progressBack]);
              if (this.$$state.status > 0)
                scheduleProcessQueue(this.$$state);
              return result;
            },
            "catch": function(callback) {
              return this.then(null, callback);
            },
            "finally": function(callback, progressBack) {
              return this.then(function(value) {
                return handleCallback(value, resolve, callback);
              }, function(error) {
                return handleCallback(error, reject, callback);
              }, progressBack);
            }
          });
          function processQueue(state) {
            var fn, promise, pending;
            pending = state.pending;
            state.processScheduled = false;
            state.pending = void 0;
            try {
              for (var i = 0, ii = pending.length; i < ii; ++i) {
                markQStateExceptionHandled(state);
                promise = pending[i][0];
                fn = pending[i][state.status];
                try {
                  if (isFunction(fn)) {
                    resolvePromise(promise, fn(state.value));
                  } else if (state.status === 1) {
                    resolvePromise(promise, state.value);
                  } else {
                    rejectPromise(promise, state.value);
                  }
                } catch (e) {
                  rejectPromise(promise, e);
                  if (e && e.$$passToExceptionHandler === true) {
                    exceptionHandler(e);
                  }
                }
              }
            } finally {
              --queueSize;
              if (errorOnUnhandledRejections && queueSize === 0) {
                nextTick(processChecks);
              }
            }
          }
          function processChecks() {
            while (!queueSize && checkQueue.length) {
              var toCheck = checkQueue.shift();
              if (!isStateExceptionHandled(toCheck)) {
                markQStateExceptionHandled(toCheck);
                var errorMessage = "Possibly unhandled rejection: " + toDebugString(toCheck.value);
                if (isError(toCheck.value)) {
                  exceptionHandler(toCheck.value, errorMessage);
                } else {
                  exceptionHandler(errorMessage);
                }
              }
            }
          }
          function scheduleProcessQueue(state) {
            if (errorOnUnhandledRejections && !state.pending && state.status === 2 && !isStateExceptionHandled(state)) {
              if (queueSize === 0 && checkQueue.length === 0) {
                nextTick(processChecks);
              }
              checkQueue.push(state);
            }
            if (state.processScheduled || !state.pending)
              return;
            state.processScheduled = true;
            ++queueSize;
            nextTick(function() {
              processQueue(state);
            });
          }
          function resolvePromise(promise, val) {
            if (promise.$$state.status)
              return;
            if (val === promise) {
              $$reject(promise, $qMinErr(
                "qcycle",
                "Expected promise to be resolved with value other than itself '{0}'",
                val
              ));
            } else {
              $$resolve(promise, val);
            }
          }
          function $$resolve(promise, val) {
            var then;
            var done = false;
            try {
              if (isObject(val) || isFunction(val))
                then = val.then;
              if (isFunction(then)) {
                promise.$$state.status = -1;
                then.call(val, doResolve, doReject, doNotify);
              } else {
                promise.$$state.value = val;
                promise.$$state.status = 1;
                scheduleProcessQueue(promise.$$state);
              }
            } catch (e) {
              doReject(e);
            }
            function doResolve(val2) {
              if (done)
                return;
              done = true;
              $$resolve(promise, val2);
            }
            function doReject(val2) {
              if (done)
                return;
              done = true;
              $$reject(promise, val2);
            }
            function doNotify(progress) {
              notifyPromise(promise, progress);
            }
          }
          function rejectPromise(promise, reason) {
            if (promise.$$state.status)
              return;
            $$reject(promise, reason);
          }
          function $$reject(promise, reason) {
            promise.$$state.value = reason;
            promise.$$state.status = 2;
            scheduleProcessQueue(promise.$$state);
          }
          function notifyPromise(promise, progress) {
            var callbacks = promise.$$state.pending;
            if (promise.$$state.status <= 0 && callbacks && callbacks.length) {
              nextTick(function() {
                var callback, result;
                for (var i = 0, ii = callbacks.length; i < ii; i++) {
                  result = callbacks[i][0];
                  callback = callbacks[i][3];
                  try {
                    notifyPromise(result, isFunction(callback) ? callback(progress) : progress);
                  } catch (e) {
                    exceptionHandler(e);
                  }
                }
              });
            }
          }
          function reject(reason) {
            var result = new Promise2();
            rejectPromise(result, reason);
            return result;
          }
          function handleCallback(value, resolver, callback) {
            var callbackOutput = null;
            try {
              if (isFunction(callback))
                callbackOutput = callback();
            } catch (e) {
              return reject(e);
            }
            if (isPromiseLike(callbackOutput)) {
              return callbackOutput.then(function() {
                return resolver(value);
              }, reject);
            } else {
              return resolver(value);
            }
          }
          function when(value, callback, errback, progressBack) {
            var result = new Promise2();
            resolvePromise(result, value);
            return result.then(callback, errback, progressBack);
          }
          var resolve = when;
          function all(promises) {
            var result = new Promise2(), counter = 0, results = isArray(promises) ? [] : {};
            forEach(promises, function(promise, key2) {
              counter++;
              when(promise).then(function(value) {
                results[key2] = value;
                if (!--counter)
                  resolvePromise(result, results);
              }, function(reason) {
                rejectPromise(result, reason);
              });
            });
            if (counter === 0) {
              resolvePromise(result, results);
            }
            return result;
          }
          function race(promises) {
            var deferred = defer();
            forEach(promises, function(promise) {
              when(promise).then(deferred.resolve, deferred.reject);
            });
            return deferred.promise;
          }
          function $Q(resolver) {
            if (!isFunction(resolver)) {
              throw $qMinErr("norslvr", "Expected resolverFn, got '{0}'", resolver);
            }
            var promise = new Promise2();
            function resolveFn(value) {
              resolvePromise(promise, value);
            }
            function rejectFn(reason) {
              rejectPromise(promise, reason);
            }
            resolver(resolveFn, rejectFn);
            return promise;
          }
          $Q.prototype = Promise2.prototype;
          $Q.defer = defer;
          $Q.reject = reject;
          $Q.when = when;
          $Q.resolve = resolve;
          $Q.all = all;
          $Q.race = race;
          return $Q;
        }
        function isStateExceptionHandled(state) {
          return !!state.pur;
        }
        function markQStateExceptionHandled(state) {
          state.pur = true;
        }
        function markQExceptionHandled(q) {
          if (q.$$state) {
            markQStateExceptionHandled(q.$$state);
          }
        }
        function $$RAFProvider() {
          this.$get = ["$window", "$timeout", function($window, $timeout) {
            var requestAnimationFrame = $window.requestAnimationFrame || $window.webkitRequestAnimationFrame;
            var cancelAnimationFrame = $window.cancelAnimationFrame || $window.webkitCancelAnimationFrame || $window.webkitCancelRequestAnimationFrame;
            var rafSupported = !!requestAnimationFrame;
            var raf = rafSupported ? function(fn) {
              var id = requestAnimationFrame(fn);
              return function() {
                cancelAnimationFrame(id);
              };
            } : function(fn) {
              var timer = $timeout(fn, 16.66, false);
              return function() {
                $timeout.cancel(timer);
              };
            };
            raf.supported = rafSupported;
            return raf;
          }];
        }
        function $RootScopeProvider() {
          var TTL = 10;
          var $rootScopeMinErr = minErr("$rootScope");
          var lastDirtyWatch = null;
          var applyAsyncId = null;
          this.digestTtl = function(value) {
            if (arguments.length) {
              TTL = value;
            }
            return TTL;
          };
          function createChildScopeClass(parent) {
            function ChildScope() {
              this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null;
              this.$$listeners = {};
              this.$$listenerCount = {};
              this.$$watchersCount = 0;
              this.$id = nextUid();
              this.$$ChildScope = null;
              this.$$suspended = false;
            }
            ChildScope.prototype = parent;
            return ChildScope;
          }
          this.$get = [
            "$exceptionHandler",
            "$parse",
            "$browser",
            function($exceptionHandler, $parse, $browser) {
              function destroyChildScope($event) {
                $event.currentScope.$$destroyed = true;
              }
              function cleanUpScope($scope) {
                if (msie === 9) {
                  if ($scope.$$childHead) {
                    cleanUpScope($scope.$$childHead);
                  }
                  if ($scope.$$nextSibling) {
                    cleanUpScope($scope.$$nextSibling);
                  }
                }
                $scope.$parent = $scope.$$nextSibling = $scope.$$prevSibling = $scope.$$childHead = $scope.$$childTail = $scope.$root = $scope.$$watchers = null;
              }
              function Scope() {
                this.$id = nextUid();
                this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null;
                this.$root = this;
                this.$$destroyed = false;
                this.$$suspended = false;
                this.$$listeners = {};
                this.$$listenerCount = {};
                this.$$watchersCount = 0;
                this.$$isolateBindings = null;
              }
              Scope.prototype = {
                constructor: Scope,
                $new: function(isolate, parent) {
                  var child;
                  parent = parent || this;
                  if (isolate) {
                    child = new Scope();
                    child.$root = this.$root;
                  } else {
                    if (!this.$$ChildScope) {
                      this.$$ChildScope = createChildScopeClass(this);
                    }
                    child = new this.$$ChildScope();
                  }
                  child.$parent = parent;
                  child.$$prevSibling = parent.$$childTail;
                  if (parent.$$childHead) {
                    parent.$$childTail.$$nextSibling = child;
                    parent.$$childTail = child;
                  } else {
                    parent.$$childHead = parent.$$childTail = child;
                  }
                  if (isolate || parent !== this)
                    child.$on("$destroy", destroyChildScope);
                  return child;
                },
                $watch: function(watchExp, listener, objectEquality, prettyPrintExpression) {
                  var get = $parse(watchExp);
                  var fn = isFunction(listener) ? listener : noop;
                  if (get.$$watchDelegate) {
                    return get.$$watchDelegate(this, fn, objectEquality, get, watchExp);
                  }
                  var scope = this, array = scope.$$watchers, watcher = {
                    fn,
                    last: initWatchVal,
                    get,
                    exp: prettyPrintExpression || watchExp,
                    eq: !!objectEquality
                  };
                  lastDirtyWatch = null;
                  if (!array) {
                    array = scope.$$watchers = [];
                    array.$$digestWatchIndex = -1;
                  }
                  array.unshift(watcher);
                  array.$$digestWatchIndex++;
                  incrementWatchersCount(this, 1);
                  return function deregisterWatch() {
                    var index = arrayRemove(array, watcher);
                    if (index >= 0) {
                      incrementWatchersCount(scope, -1);
                      if (index < array.$$digestWatchIndex) {
                        array.$$digestWatchIndex--;
                      }
                    }
                    lastDirtyWatch = null;
                  };
                },
                $watchGroup: function(watchExpressions, listener) {
                  var oldValues = new Array(watchExpressions.length);
                  var newValues = new Array(watchExpressions.length);
                  var deregisterFns = [];
                  var self2 = this;
                  var changeReactionScheduled = false;
                  var firstRun = true;
                  if (!watchExpressions.length) {
                    var shouldCall = true;
                    self2.$evalAsync(function() {
                      if (shouldCall)
                        listener(newValues, newValues, self2);
                    });
                    return function deregisterWatchGroup() {
                      shouldCall = false;
                    };
                  }
                  if (watchExpressions.length === 1) {
                    return this.$watch(watchExpressions[0], function watchGroupAction2(value, oldValue, scope) {
                      newValues[0] = value;
                      oldValues[0] = oldValue;
                      listener(newValues, value === oldValue ? newValues : oldValues, scope);
                    });
                  }
                  forEach(watchExpressions, function(expr, i) {
                    var unwatchFn = self2.$watch(expr, function watchGroupSubAction(value) {
                      newValues[i] = value;
                      if (!changeReactionScheduled) {
                        changeReactionScheduled = true;
                        self2.$evalAsync(watchGroupAction);
                      }
                    });
                    deregisterFns.push(unwatchFn);
                  });
                  function watchGroupAction() {
                    changeReactionScheduled = false;
                    try {
                      if (firstRun) {
                        firstRun = false;
                        listener(newValues, newValues, self2);
                      } else {
                        listener(newValues, oldValues, self2);
                      }
                    } finally {
                      for (var i = 0; i < watchExpressions.length; i++) {
                        oldValues[i] = newValues[i];
                      }
                    }
                  }
                  return function deregisterWatchGroup() {
                    while (deregisterFns.length) {
                      deregisterFns.shift()();
                    }
                  };
                },
                $watchCollection: function(obj, listener) {
                  $watchCollectionInterceptor.$$pure = $parse(obj).literal;
                  $watchCollectionInterceptor.$stateful = !$watchCollectionInterceptor.$$pure;
                  var self2 = this;
                  var newValue;
                  var oldValue;
                  var veryOldValue;
                  var trackVeryOldValue = listener.length > 1;
                  var changeDetected = 0;
                  var changeDetector = $parse(obj, $watchCollectionInterceptor);
                  var internalArray = [];
                  var internalObject = {};
                  var initRun = true;
                  var oldLength = 0;
                  function $watchCollectionInterceptor(_value) {
                    newValue = _value;
                    var newLength, key2, bothNaN, newItem, oldItem;
                    if (isUndefined(newValue))
                      return;
                    if (!isObject(newValue)) {
                      if (oldValue !== newValue) {
                        oldValue = newValue;
                        changeDetected++;
                      }
                    } else if (isArrayLike(newValue)) {
                      if (oldValue !== internalArray) {
                        oldValue = internalArray;
                        oldLength = oldValue.length = 0;
                        changeDetected++;
                      }
                      newLength = newValue.length;
                      if (oldLength !== newLength) {
                        changeDetected++;
                        oldValue.length = oldLength = newLength;
                      }
                      for (var i = 0; i < newLength; i++) {
                        oldItem = oldValue[i];
                        newItem = newValue[i];
                        bothNaN = oldItem !== oldItem && newItem !== newItem;
                        if (!bothNaN && oldItem !== newItem) {
                          changeDetected++;
                          oldValue[i] = newItem;
                        }
                      }
                    } else {
                      if (oldValue !== internalObject) {
                        oldValue = internalObject = {};
                        oldLength = 0;
                        changeDetected++;
                      }
                      newLength = 0;
                      for (key2 in newValue) {
                        if (hasOwnProperty.call(newValue, key2)) {
                          newLength++;
                          newItem = newValue[key2];
                          oldItem = oldValue[key2];
                          if (key2 in oldValue) {
                            bothNaN = oldItem !== oldItem && newItem !== newItem;
                            if (!bothNaN && oldItem !== newItem) {
                              changeDetected++;
                              oldValue[key2] = newItem;
                            }
                          } else {
                            oldLength++;
                            oldValue[key2] = newItem;
                            changeDetected++;
                          }
                        }
                      }
                      if (oldLength > newLength) {
                        changeDetected++;
                        for (key2 in oldValue) {
                          if (!hasOwnProperty.call(newValue, key2)) {
                            oldLength--;
                            delete oldValue[key2];
                          }
                        }
                      }
                    }
                    return changeDetected;
                  }
                  function $watchCollectionAction() {
                    if (initRun) {
                      initRun = false;
                      listener(newValue, newValue, self2);
                    } else {
                      listener(newValue, veryOldValue, self2);
                    }
                    if (trackVeryOldValue) {
                      if (!isObject(newValue)) {
                        veryOldValue = newValue;
                      } else if (isArrayLike(newValue)) {
                        veryOldValue = new Array(newValue.length);
                        for (var i = 0; i < newValue.length; i++) {
                          veryOldValue[i] = newValue[i];
                        }
                      } else {
                        veryOldValue = {};
                        for (var key2 in newValue) {
                          if (hasOwnProperty.call(newValue, key2)) {
                            veryOldValue[key2] = newValue[key2];
                          }
                        }
                      }
                    }
                  }
                  return this.$watch(changeDetector, $watchCollectionAction);
                },
                $digest: function() {
                  var watch, value, last, fn, get, watchers, dirty, ttl = TTL, next, current, target = asyncQueue.length ? $rootScope : this, watchLog = [], logIdx, asyncTask;
                  beginPhase("$digest");
                  $browser.$$checkUrlChange();
                  if (this === $rootScope && applyAsyncId !== null) {
                    $browser.defer.cancel(applyAsyncId);
                    flushApplyAsync();
                  }
                  lastDirtyWatch = null;
                  do {
                    dirty = false;
                    current = target;
                    for (var asyncQueuePosition = 0; asyncQueuePosition < asyncQueue.length; asyncQueuePosition++) {
                      try {
                        asyncTask = asyncQueue[asyncQueuePosition];
                        fn = asyncTask.fn;
                        fn(asyncTask.scope, asyncTask.locals);
                      } catch (e) {
                        $exceptionHandler(e);
                      }
                      lastDirtyWatch = null;
                    }
                    asyncQueue.length = 0;
                    traverseScopesLoop:
                      do {
                        if (watchers = !current.$$suspended && current.$$watchers) {
                          watchers.$$digestWatchIndex = watchers.length;
                          while (watchers.$$digestWatchIndex--) {
                            try {
                              watch = watchers[watchers.$$digestWatchIndex];
                              if (watch) {
                                get = watch.get;
                                if ((value = get(current)) !== (last = watch.last) && !(watch.eq ? equals(value, last) : isNumberNaN(value) && isNumberNaN(last))) {
                                  dirty = true;
                                  lastDirtyWatch = watch;
                                  watch.last = watch.eq ? copy(value, null) : value;
                                  fn = watch.fn;
                                  fn(value, last === initWatchVal ? value : last, current);
                                  if (ttl < 5) {
                                    logIdx = 4 - ttl;
                                    if (!watchLog[logIdx])
                                      watchLog[logIdx] = [];
                                    watchLog[logIdx].push({
                                      msg: isFunction(watch.exp) ? "fn: " + (watch.exp.name || watch.exp.toString()) : watch.exp,
                                      newVal: value,
                                      oldVal: last
                                    });
                                  }
                                } else if (watch === lastDirtyWatch) {
                                  dirty = false;
                                  break traverseScopesLoop;
                                }
                              }
                            } catch (e) {
                              $exceptionHandler(e);
                            }
                          }
                        }
                        if (!(next = !current.$$suspended && current.$$watchersCount && current.$$childHead || current !== target && current.$$nextSibling)) {
                          while (current !== target && !(next = current.$$nextSibling)) {
                            current = current.$parent;
                          }
                        }
                      } while (current = next);
                    if ((dirty || asyncQueue.length) && !ttl--) {
                      clearPhase();
                      throw $rootScopeMinErr(
                        "infdig",
                        "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",
                        TTL,
                        watchLog
                      );
                    }
                  } while (dirty || asyncQueue.length);
                  clearPhase();
                  while (postDigestQueuePosition < postDigestQueue.length) {
                    try {
                      postDigestQueue[postDigestQueuePosition++]();
                    } catch (e) {
                      $exceptionHandler(e);
                    }
                  }
                  postDigestQueue.length = postDigestQueuePosition = 0;
                  $browser.$$checkUrlChange();
                },
                $suspend: function() {
                  this.$$suspended = true;
                },
                $isSuspended: function() {
                  return this.$$suspended;
                },
                $resume: function() {
                  this.$$suspended = false;
                },
                $destroy: function() {
                  if (this.$$destroyed)
                    return;
                  var parent = this.$parent;
                  this.$broadcast("$destroy");
                  this.$$destroyed = true;
                  if (this === $rootScope) {
                    $browser.$$applicationDestroyed();
                  }
                  incrementWatchersCount(this, -this.$$watchersCount);
                  for (var eventName in this.$$listenerCount) {
                    decrementListenerCount(this, this.$$listenerCount[eventName], eventName);
                  }
                  if (parent && parent.$$childHead === this)
                    parent.$$childHead = this.$$nextSibling;
                  if (parent && parent.$$childTail === this)
                    parent.$$childTail = this.$$prevSibling;
                  if (this.$$prevSibling)
                    this.$$prevSibling.$$nextSibling = this.$$nextSibling;
                  if (this.$$nextSibling)
                    this.$$nextSibling.$$prevSibling = this.$$prevSibling;
                  this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = noop;
                  this.$on = this.$watch = this.$watchGroup = function() {
                    return noop;
                  };
                  this.$$listeners = {};
                  this.$$nextSibling = null;
                  cleanUpScope(this);
                },
                $eval: function(expr, locals) {
                  return $parse(expr)(this, locals);
                },
                $evalAsync: function(expr, locals) {
                  if (!$rootScope.$$phase && !asyncQueue.length) {
                    $browser.defer(function() {
                      if (asyncQueue.length) {
                        $rootScope.$digest();
                      }
                    }, null, "$evalAsync");
                  }
                  asyncQueue.push({ scope: this, fn: $parse(expr), locals });
                },
                $$postDigest: function(fn) {
                  postDigestQueue.push(fn);
                },
                $apply: function(expr) {
                  try {
                    beginPhase("$apply");
                    try {
                      return this.$eval(expr);
                    } finally {
                      clearPhase();
                    }
                  } catch (e) {
                    $exceptionHandler(e);
                  } finally {
                    try {
                      $rootScope.$digest();
                    } catch (e) {
                      $exceptionHandler(e);
                      throw e;
                    }
                  }
                },
                $applyAsync: function(expr) {
                  var scope = this;
                  if (expr) {
                    applyAsyncQueue.push($applyAsyncExpression);
                  }
                  expr = $parse(expr);
                  scheduleApplyAsync();
                  function $applyAsyncExpression() {
                    scope.$eval(expr);
                  }
                },
                $on: function(name, listener) {
                  var namedListeners = this.$$listeners[name];
                  if (!namedListeners) {
                    this.$$listeners[name] = namedListeners = [];
                  }
                  namedListeners.push(listener);
                  var current = this;
                  do {
                    if (!current.$$listenerCount[name]) {
                      current.$$listenerCount[name] = 0;
                    }
                    current.$$listenerCount[name]++;
                  } while (current = current.$parent);
                  var self2 = this;
                  return function() {
                    var indexOfListener = namedListeners.indexOf(listener);
                    if (indexOfListener !== -1) {
                      delete namedListeners[indexOfListener];
                      decrementListenerCount(self2, 1, name);
                    }
                  };
                },
                $emit: function(name, args) {
                  var empty = [], namedListeners, scope = this, stopPropagation = false, event = {
                    name,
                    targetScope: scope,
                    stopPropagation: function() {
                      stopPropagation = true;
                    },
                    preventDefault: function() {
                      event.defaultPrevented = true;
                    },
                    defaultPrevented: false
                  }, listenerArgs = concat([event], arguments, 1), i, length;
                  do {
                    namedListeners = scope.$$listeners[name] || empty;
                    event.currentScope = scope;
                    for (i = 0, length = namedListeners.length; i < length; i++) {
                      if (!namedListeners[i]) {
                        namedListeners.splice(i, 1);
                        i--;
                        length--;
                        continue;
                      }
                      try {
                        namedListeners[i].apply(null, listenerArgs);
                      } catch (e) {
                        $exceptionHandler(e);
                      }
                    }
                    if (stopPropagation) {
                      break;
                    }
                    scope = scope.$parent;
                  } while (scope);
                  event.currentScope = null;
                  return event;
                },
                $broadcast: function(name, args) {
                  var target = this, current = target, next = target, event = {
                    name,
                    targetScope: target,
                    preventDefault: function() {
                      event.defaultPrevented = true;
                    },
                    defaultPrevented: false
                  };
                  if (!target.$$listenerCount[name])
                    return event;
                  var listenerArgs = concat([event], arguments, 1), listeners, i, length;
                  while (current = next) {
                    event.currentScope = current;
                    listeners = current.$$listeners[name] || [];
                    for (i = 0, length = listeners.length; i < length; i++) {
                      if (!listeners[i]) {
                        listeners.splice(i, 1);
                        i--;
                        length--;
                        continue;
                      }
                      try {
                        listeners[i].apply(null, listenerArgs);
                      } catch (e) {
                        $exceptionHandler(e);
                      }
                    }
                    if (!(next = current.$$listenerCount[name] && current.$$childHead || current !== target && current.$$nextSibling)) {
                      while (current !== target && !(next = current.$$nextSibling)) {
                        current = current.$parent;
                      }
                    }
                  }
                  event.currentScope = null;
                  return event;
                }
              };
              var $rootScope = new Scope();
              var asyncQueue = $rootScope.$$asyncQueue = [];
              var postDigestQueue = $rootScope.$$postDigestQueue = [];
              var applyAsyncQueue = $rootScope.$$applyAsyncQueue = [];
              var postDigestQueuePosition = 0;
              return $rootScope;
              function beginPhase(phase) {
                if ($rootScope.$$phase) {
                  throw $rootScopeMinErr("inprog", "{0} already in progress", $rootScope.$$phase);
                }
                $rootScope.$$phase = phase;
              }
              function clearPhase() {
                $rootScope.$$phase = null;
              }
              function incrementWatchersCount(current, count) {
                do {
                  current.$$watchersCount += count;
                } while (current = current.$parent);
              }
              function decrementListenerCount(current, count, name) {
                do {
                  current.$$listenerCount[name] -= count;
                  if (current.$$listenerCount[name] === 0) {
                    delete current.$$listenerCount[name];
                  }
                } while (current = current.$parent);
              }
              function initWatchVal() {
              }
              function flushApplyAsync() {
                while (applyAsyncQueue.length) {
                  try {
                    applyAsyncQueue.shift()();
                  } catch (e) {
                    $exceptionHandler(e);
                  }
                }
                applyAsyncId = null;
              }
              function scheduleApplyAsync() {
                if (applyAsyncId === null) {
                  applyAsyncId = $browser.defer(function() {
                    $rootScope.$apply(flushApplyAsync);
                  }, null, "$applyAsync");
                }
              }
            }
          ];
        }
        function $$SanitizeUriProvider() {
          var aHrefSanitizationTrustedUrlList = /^\s*(https?|s?ftp|mailto|tel|file):/, imgSrcSanitizationTrustedUrlList = /^\s*((https?|ftp|file|blob):|data:image\/)/;
          this.aHrefSanitizationTrustedUrlList = function(regexp) {
            if (isDefined(regexp)) {
              aHrefSanitizationTrustedUrlList = regexp;
              return this;
            }
            return aHrefSanitizationTrustedUrlList;
          };
          this.imgSrcSanitizationTrustedUrlList = function(regexp) {
            if (isDefined(regexp)) {
              imgSrcSanitizationTrustedUrlList = regexp;
              return this;
            }
            return imgSrcSanitizationTrustedUrlList;
          };
          this.$get = function() {
            return function sanitizeUri(uri, isMediaUrl) {
              var regex = isMediaUrl ? imgSrcSanitizationTrustedUrlList : aHrefSanitizationTrustedUrlList;
              var normalizedVal = urlResolve(uri && uri.trim()).href;
              if (normalizedVal !== "" && !normalizedVal.match(regex)) {
                return "unsafe:" + normalizedVal;
              }
              return uri;
            };
          };
        }
        var $sceMinErr = minErr("$sce");
        var SCE_CONTEXTS = {
          HTML: "html",
          CSS: "css",
          MEDIA_URL: "mediaUrl",
          URL: "url",
          RESOURCE_URL: "resourceUrl",
          JS: "js"
        };
        var UNDERSCORE_LOWERCASE_REGEXP = /_([a-z])/g;
        function snakeToCamel(name) {
          return name.replace(UNDERSCORE_LOWERCASE_REGEXP, fnCamelCaseReplace);
        }
        function adjustMatcher(matcher) {
          if (matcher === "self") {
            return matcher;
          } else if (isString(matcher)) {
            if (matcher.indexOf("***") > -1) {
              throw $sceMinErr(
                "iwcard",
                "Illegal sequence *** in string matcher.  String: {0}",
                matcher
              );
            }
            matcher = escapeForRegexp(matcher).replace(/\\\*\\\*/g, ".*").replace(/\\\*/g, "[^:/.?&;]*");
            return new RegExp("^" + matcher + "$");
          } else if (isRegExp(matcher)) {
            return new RegExp("^" + matcher.source + "$");
          } else {
            throw $sceMinErr(
              "imatcher",
              'Matchers may only be "self", string patterns or RegExp objects'
            );
          }
        }
        function adjustMatchers(matchers) {
          var adjustedMatchers = [];
          if (isDefined(matchers)) {
            forEach(matchers, function(matcher) {
              adjustedMatchers.push(adjustMatcher(matcher));
            });
          }
          return adjustedMatchers;
        }
        function $SceDelegateProvider() {
          this.SCE_CONTEXTS = SCE_CONTEXTS;
          var trustedResourceUrlList = ["self"], bannedResourceUrlList = [];
          this.trustedResourceUrlList = function(value) {
            if (arguments.length) {
              trustedResourceUrlList = adjustMatchers(value);
            }
            return trustedResourceUrlList;
          };
          Object.defineProperty(this, "resourceUrlWhitelist", {
            get: function() {
              return this.trustedResourceUrlList;
            },
            set: function(value) {
              this.trustedResourceUrlList = value;
            }
          });
          this.bannedResourceUrlList = function(value) {
            if (arguments.length) {
              bannedResourceUrlList = adjustMatchers(value);
            }
            return bannedResourceUrlList;
          };
          Object.defineProperty(this, "resourceUrlBlacklist", {
            get: function() {
              return this.bannedResourceUrlList;
            },
            set: function(value) {
              this.bannedResourceUrlList = value;
            }
          });
          this.$get = ["$injector", "$$sanitizeUri", function($injector, $$sanitizeUri) {
            var htmlSanitizer = function htmlSanitizer2(html) {
              throw $sceMinErr("unsafe", "Attempting to use an unsafe value in a safe context.");
            };
            if ($injector.has("$sanitize")) {
              htmlSanitizer = $injector.get("$sanitize");
            }
            function matchUrl(matcher, parsedUrl) {
              if (matcher === "self") {
                return urlIsSameOrigin(parsedUrl) || urlIsSameOriginAsBaseUrl(parsedUrl);
              } else {
                return !!matcher.exec(parsedUrl.href);
              }
            }
            function isResourceUrlAllowedByPolicy(url) {
              var parsedUrl = urlResolve(url.toString());
              var i, n2, allowed = false;
              for (i = 0, n2 = trustedResourceUrlList.length; i < n2; i++) {
                if (matchUrl(trustedResourceUrlList[i], parsedUrl)) {
                  allowed = true;
                  break;
                }
              }
              if (allowed) {
                for (i = 0, n2 = bannedResourceUrlList.length; i < n2; i++) {
                  if (matchUrl(bannedResourceUrlList[i], parsedUrl)) {
                    allowed = false;
                    break;
                  }
                }
              }
              return allowed;
            }
            function generateHolderType(Base) {
              var holderType = function TrustedValueHolderType(trustedValue) {
                this.$$unwrapTrustedValue = function() {
                  return trustedValue;
                };
              };
              if (Base) {
                holderType.prototype = new Base();
              }
              holderType.prototype.valueOf = function sceValueOf() {
                return this.$$unwrapTrustedValue();
              };
              holderType.prototype.toString = function sceToString() {
                return this.$$unwrapTrustedValue().toString();
              };
              return holderType;
            }
            var trustedValueHolderBase = generateHolderType(), byType = {};
            byType[SCE_CONTEXTS.HTML] = generateHolderType(trustedValueHolderBase);
            byType[SCE_CONTEXTS.CSS] = generateHolderType(trustedValueHolderBase);
            byType[SCE_CONTEXTS.MEDIA_URL] = generateHolderType(trustedValueHolderBase);
            byType[SCE_CONTEXTS.URL] = generateHolderType(byType[SCE_CONTEXTS.MEDIA_URL]);
            byType[SCE_CONTEXTS.JS] = generateHolderType(trustedValueHolderBase);
            byType[SCE_CONTEXTS.RESOURCE_URL] = generateHolderType(byType[SCE_CONTEXTS.URL]);
            function trustAs(type, trustedValue) {
              var Constructor = byType.hasOwnProperty(type) ? byType[type] : null;
              if (!Constructor) {
                throw $sceMinErr(
                  "icontext",
                  "Attempted to trust a value in invalid context. Context: {0}; Value: {1}",
                  type,
                  trustedValue
                );
              }
              if (trustedValue === null || isUndefined(trustedValue) || trustedValue === "") {
                return trustedValue;
              }
              if (typeof trustedValue !== "string") {
                throw $sceMinErr(
                  "itype",
                  "Attempted to trust a non-string value in a content requiring a string: Context: {0}",
                  type
                );
              }
              return new Constructor(trustedValue);
            }
            function valueOf(maybeTrusted) {
              if (maybeTrusted instanceof trustedValueHolderBase) {
                return maybeTrusted.$$unwrapTrustedValue();
              } else {
                return maybeTrusted;
              }
            }
            function getTrusted(type, maybeTrusted) {
              if (maybeTrusted === null || isUndefined(maybeTrusted) || maybeTrusted === "") {
                return maybeTrusted;
              }
              var constructor = byType.hasOwnProperty(type) ? byType[type] : null;
              if (constructor && maybeTrusted instanceof constructor) {
                return maybeTrusted.$$unwrapTrustedValue();
              }
              if (isFunction(maybeTrusted.$$unwrapTrustedValue)) {
                maybeTrusted = maybeTrusted.$$unwrapTrustedValue();
              }
              if (type === SCE_CONTEXTS.MEDIA_URL || type === SCE_CONTEXTS.URL) {
                return $$sanitizeUri(maybeTrusted.toString(), type === SCE_CONTEXTS.MEDIA_URL);
              } else if (type === SCE_CONTEXTS.RESOURCE_URL) {
                if (isResourceUrlAllowedByPolicy(maybeTrusted)) {
                  return maybeTrusted;
                } else {
                  throw $sceMinErr(
                    "insecurl",
                    "Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}",
                    maybeTrusted.toString()
                  );
                }
              } else if (type === SCE_CONTEXTS.HTML) {
                return htmlSanitizer(maybeTrusted);
              }
              throw $sceMinErr("unsafe", "Attempting to use an unsafe value in a safe context.");
            }
            return {
              trustAs,
              getTrusted,
              valueOf
            };
          }];
        }
        function $SceProvider() {
          var enabled = true;
          this.enabled = function(value) {
            if (arguments.length) {
              enabled = !!value;
            }
            return enabled;
          };
          this.$get = ["$parse", "$sceDelegate", function($parse, $sceDelegate) {
            if (enabled && msie < 8) {
              throw $sceMinErr(
                "iequirks",
                "Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode.  You can fix this by adding the text <!doctype html> to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information."
              );
            }
            var sce = shallowCopy(SCE_CONTEXTS);
            sce.isEnabled = function() {
              return enabled;
            };
            sce.trustAs = $sceDelegate.trustAs;
            sce.getTrusted = $sceDelegate.getTrusted;
            sce.valueOf = $sceDelegate.valueOf;
            if (!enabled) {
              sce.trustAs = sce.getTrusted = function(type, value) {
                return value;
              };
              sce.valueOf = identity;
            }
            sce.parseAs = function sceParseAs(type, expr) {
              var parsed = $parse(expr);
              if (parsed.literal && parsed.constant) {
                return parsed;
              } else {
                return $parse(expr, function(value) {
                  return sce.getTrusted(type, value);
                });
              }
            };
            var parse2 = sce.parseAs, getTrusted = sce.getTrusted, trustAs = sce.trustAs;
            forEach(SCE_CONTEXTS, function(enumValue, name) {
              var lName = lowercase(name);
              sce[snakeToCamel("parse_as_" + lName)] = function(expr) {
                return parse2(enumValue, expr);
              };
              sce[snakeToCamel("get_trusted_" + lName)] = function(value) {
                return getTrusted(enumValue, value);
              };
              sce[snakeToCamel("trust_as_" + lName)] = function(value) {
                return trustAs(enumValue, value);
              };
            });
            return sce;
          }];
        }
        function $SnifferProvider() {
          this.$get = ["$window", "$document", function($window, $document) {
            var eventSupport = {}, isNw = $window.nw && $window.nw.process, isChromePackagedApp = !isNw && $window.chrome && ($window.chrome.app && $window.chrome.app.runtime || !$window.chrome.app && $window.chrome.runtime && $window.chrome.runtime.id), hasHistoryPushState = !isChromePackagedApp && $window.history && $window.history.pushState, android = toInt((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]), boxee = /Boxee/i.test(($window.navigator || {}).userAgent), document2 = $document[0] || {}, bodyStyle = document2.body && document2.body.style, transitions = false, animations = false;
            if (bodyStyle) {
              transitions = !!("transition" in bodyStyle || "webkitTransition" in bodyStyle);
              animations = !!("animation" in bodyStyle || "webkitAnimation" in bodyStyle);
            }
            return {
              history: !!(hasHistoryPushState && !(android < 4) && !boxee),
              hasEvent: function(event) {
                if (event === "input" && msie)
                  return false;
                if (isUndefined(eventSupport[event])) {
                  var divElm = document2.createElement("div");
                  eventSupport[event] = "on" + event in divElm;
                }
                return eventSupport[event];
              },
              csp: csp(),
              transitions,
              animations,
              android
            };
          }];
        }
        function $$TaskTrackerFactoryProvider() {
          this.$get = valueFn(function(log) {
            return new TaskTracker(log);
          });
        }
        function TaskTracker(log) {
          var self2 = this;
          var taskCounts = {};
          var taskCallbacks = [];
          var ALL_TASKS_TYPE = self2.ALL_TASKS_TYPE = "$$all$$";
          var DEFAULT_TASK_TYPE = self2.DEFAULT_TASK_TYPE = "$$default$$";
          self2.completeTask = completeTask;
          self2.incTaskCount = incTaskCount;
          self2.notifyWhenNoPendingTasks = notifyWhenNoPendingTasks;
          function completeTask(fn, taskType) {
            taskType = taskType || DEFAULT_TASK_TYPE;
            try {
              fn();
            } finally {
              decTaskCount(taskType);
              var countForType = taskCounts[taskType];
              var countForAll = taskCounts[ALL_TASKS_TYPE];
              if (!countForAll || !countForType) {
                var getNextCallback = !countForAll ? getLastCallback : getLastCallbackForType;
                var nextCb;
                while (nextCb = getNextCallback(taskType)) {
                  try {
                    nextCb();
                  } catch (e) {
                    log.error(e);
                  }
                }
              }
            }
          }
          function decTaskCount(taskType) {
            taskType = taskType || DEFAULT_TASK_TYPE;
            if (taskCounts[taskType]) {
              taskCounts[taskType]--;
              taskCounts[ALL_TASKS_TYPE]--;
            }
          }
          function getLastCallback() {
            var cbInfo = taskCallbacks.pop();
            return cbInfo && cbInfo.cb;
          }
          function getLastCallbackForType(taskType) {
            for (var i = taskCallbacks.length - 1; i >= 0; --i) {
              var cbInfo = taskCallbacks[i];
              if (cbInfo.type === taskType) {
                taskCallbacks.splice(i, 1);
                return cbInfo.cb;
              }
            }
          }
          function incTaskCount(taskType) {
            taskType = taskType || DEFAULT_TASK_TYPE;
            taskCounts[taskType] = (taskCounts[taskType] || 0) + 1;
            taskCounts[ALL_TASKS_TYPE] = (taskCounts[ALL_TASKS_TYPE] || 0) + 1;
          }
          function notifyWhenNoPendingTasks(callback, taskType) {
            taskType = taskType || ALL_TASKS_TYPE;
            if (!taskCounts[taskType]) {
              callback();
            } else {
              taskCallbacks.push({ type: taskType, cb: callback });
            }
          }
        }
        var $templateRequestMinErr = minErr("$templateRequest");
        function $TemplateRequestProvider() {
          var httpOptions;
          this.httpOptions = function(val) {
            if (val) {
              httpOptions = val;
              return this;
            }
            return httpOptions;
          };
          this.$get = [
            "$exceptionHandler",
            "$templateCache",
            "$http",
            "$q",
            "$sce",
            function($exceptionHandler, $templateCache, $http, $q, $sce) {
              function handleRequestFn(tpl, ignoreRequestError) {
                handleRequestFn.totalPendingRequests++;
                if (!isString(tpl) || isUndefined($templateCache.get(tpl))) {
                  tpl = $sce.getTrustedResourceUrl(tpl);
                }
                var transformResponse = $http.defaults && $http.defaults.transformResponse;
                if (isArray(transformResponse)) {
                  transformResponse = transformResponse.filter(function(transformer) {
                    return transformer !== defaultHttpResponseTransform;
                  });
                } else if (transformResponse === defaultHttpResponseTransform) {
                  transformResponse = null;
                }
                return $http.get(tpl, extend({
                  cache: $templateCache,
                  transformResponse
                }, httpOptions)).finally(function() {
                  handleRequestFn.totalPendingRequests--;
                }).then(function(response) {
                  return $templateCache.put(tpl, response.data);
                }, handleError);
                function handleError(resp) {
                  if (!ignoreRequestError) {
                    resp = $templateRequestMinErr(
                      "tpload",
                      "Failed to load template: {0} (HTTP status: {1} {2})",
                      tpl,
                      resp.status,
                      resp.statusText
                    );
                    $exceptionHandler(resp);
                  }
                  return $q.reject(resp);
                }
              }
              handleRequestFn.totalPendingRequests = 0;
              return handleRequestFn;
            }
          ];
        }
        function $$TestabilityProvider() {
          this.$get = [
            "$rootScope",
            "$browser",
            "$location",
            function($rootScope, $browser, $location) {
              var testability = {};
              testability.findBindings = function(element, expression, opt_exactMatch) {
                var bindings = element.getElementsByClassName("ng-binding");
                var matches = [];
                forEach(bindings, function(binding) {
                  var dataBinding = angular2.element(binding).data("$binding");
                  if (dataBinding) {
                    forEach(dataBinding, function(bindingName) {
                      if (opt_exactMatch) {
                        var matcher = new RegExp("(^|\\s)" + escapeForRegexp(expression) + "(\\s|\\||$)");
                        if (matcher.test(bindingName)) {
                          matches.push(binding);
                        }
                      } else {
                        if (bindingName.indexOf(expression) !== -1) {
                          matches.push(binding);
                        }
                      }
                    });
                  }
                });
                return matches;
              };
              testability.findModels = function(element, expression, opt_exactMatch) {
                var prefixes = ["ng-", "data-ng-", "ng\\:"];
                for (var p = 0; p < prefixes.length; ++p) {
                  var attributeEquals = opt_exactMatch ? "=" : "*=";
                  var selector = "[" + prefixes[p] + "model" + attributeEquals + '"' + expression + '"]';
                  var elements = element.querySelectorAll(selector);
                  if (elements.length) {
                    return elements;
                  }
                }
              };
              testability.getLocation = function() {
                return $location.url();
              };
              testability.setLocation = function(url) {
                if (url !== $location.url()) {
                  $location.url(url);
                  $rootScope.$digest();
                }
              };
              testability.whenStable = function(callback) {
                $browser.notifyWhenNoOutstandingRequests(callback);
              };
              return testability;
            }
          ];
        }
        var $timeoutMinErr = minErr("$timeout");
        function $TimeoutProvider() {
          this.$get = [
            "$rootScope",
            "$browser",
            "$q",
            "$$q",
            "$exceptionHandler",
            function($rootScope, $browser, $q, $$q, $exceptionHandler) {
              var deferreds = {};
              function timeout(fn, delay, invokeApply) {
                if (!isFunction(fn)) {
                  invokeApply = delay;
                  delay = fn;
                  fn = noop;
                }
                var args = sliceArgs(arguments, 3), skipApply = isDefined(invokeApply) && !invokeApply, deferred = (skipApply ? $$q : $q).defer(), promise = deferred.promise, timeoutId;
                timeoutId = $browser.defer(function() {
                  try {
                    deferred.resolve(fn.apply(null, args));
                  } catch (e) {
                    deferred.reject(e);
                    $exceptionHandler(e);
                  } finally {
                    delete deferreds[promise.$$timeoutId];
                  }
                  if (!skipApply)
                    $rootScope.$apply();
                }, delay, "$timeout");
                promise.$$timeoutId = timeoutId;
                deferreds[timeoutId] = deferred;
                return promise;
              }
              timeout.cancel = function(promise) {
                if (!promise)
                  return false;
                if (!promise.hasOwnProperty("$$timeoutId")) {
                  throw $timeoutMinErr(
                    "badprom",
                    "`$timeout.cancel()` called with a promise that was not generated by `$timeout()`."
                  );
                }
                if (!deferreds.hasOwnProperty(promise.$$timeoutId))
                  return false;
                var id = promise.$$timeoutId;
                var deferred = deferreds[id];
                markQExceptionHandled(deferred.promise);
                deferred.reject("canceled");
                delete deferreds[id];
                return $browser.defer.cancel(id);
              };
              return timeout;
            }
          ];
        }
        var urlParsingNode = window2.document.createElement("a");
        var originUrl = urlResolve(window2.location.href);
        var baseUrlParsingNode;
        urlParsingNode.href = "http://[::1]";
        var ipv6InBrackets = urlParsingNode.hostname === "[::1]";
        function urlResolve(url) {
          if (!isString(url))
            return url;
          var href = url;
          if (msie) {
            urlParsingNode.setAttribute("href", href);
            href = urlParsingNode.href;
          }
          urlParsingNode.setAttribute("href", href);
          var hostname = urlParsingNode.hostname;
          if (!ipv6InBrackets && hostname.indexOf(":") > -1) {
            hostname = "[" + hostname + "]";
          }
          return {
            href: urlParsingNode.href,
            protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, "") : "",
            host: urlParsingNode.host,
            search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, "") : "",
            hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, "") : "",
            hostname,
            port: urlParsingNode.port,
            pathname: urlParsingNode.pathname.charAt(0) === "/" ? urlParsingNode.pathname : "/" + urlParsingNode.pathname
          };
        }
        function urlIsSameOrigin(requestUrl) {
          return urlsAreSameOrigin(requestUrl, originUrl);
        }
        function urlIsSameOriginAsBaseUrl(requestUrl) {
          return urlsAreSameOrigin(requestUrl, getBaseUrl());
        }
        function urlIsAllowedOriginFactory(trustedOriginUrls) {
          var parsedAllowedOriginUrls = [originUrl].concat(trustedOriginUrls.map(urlResolve));
          return function urlIsAllowedOrigin(requestUrl) {
            var parsedUrl = urlResolve(requestUrl);
            return parsedAllowedOriginUrls.some(urlsAreSameOrigin.bind(null, parsedUrl));
          };
        }
        function urlsAreSameOrigin(url1, url2) {
          url1 = urlResolve(url1);
          url2 = urlResolve(url2);
          return url1.protocol === url2.protocol && url1.host === url2.host;
        }
        function getBaseUrl() {
          if (window2.document.baseURI) {
            return window2.document.baseURI;
          }
          if (!baseUrlParsingNode) {
            baseUrlParsingNode = window2.document.createElement("a");
            baseUrlParsingNode.href = ".";
            baseUrlParsingNode = baseUrlParsingNode.cloneNode(false);
          }
          return baseUrlParsingNode.href;
        }
        function $WindowProvider() {
          this.$get = valueFn(window2);
        }
        function $$CookieReader($document) {
          var rawDocument = $document[0] || {};
          var lastCookies = {};
          var lastCookieString = "";
          function safeGetCookie(rawDocument2) {
            try {
              return rawDocument2.cookie || "";
            } catch (e) {
              return "";
            }
          }
          function safeDecodeURIComponent(str) {
            try {
              return decodeURIComponent(str);
            } catch (e) {
              return str;
            }
          }
          return function() {
            var cookieArray, cookie, i, index, name;
            var currentCookieString = safeGetCookie(rawDocument);
            if (currentCookieString !== lastCookieString) {
              lastCookieString = currentCookieString;
              cookieArray = lastCookieString.split("; ");
              lastCookies = {};
              for (i = 0; i < cookieArray.length; i++) {
                cookie = cookieArray[i];
                index = cookie.indexOf("=");
                if (index > 0) {
                  name = safeDecodeURIComponent(cookie.substring(0, index));
                  if (isUndefined(lastCookies[name])) {
                    lastCookies[name] = safeDecodeURIComponent(cookie.substring(index + 1));
                  }
                }
              }
            }
            return lastCookies;
          };
        }
        $$CookieReader.$inject = ["$document"];
        function $$CookieReaderProvider() {
          this.$get = $$CookieReader;
        }
        $FilterProvider.$inject = ["$provide"];
        function $FilterProvider($provide) {
          var suffix = "Filter";
          function register(name, factory) {
            if (isObject(name)) {
              var filters = {};
              forEach(name, function(filter, key2) {
                filters[key2] = register(key2, filter);
              });
              return filters;
            } else {
              return $provide.factory(name + suffix, factory);
            }
          }
          this.register = register;
          this.$get = ["$injector", function($injector) {
            return function(name) {
              return $injector.get(name + suffix);
            };
          }];
          register("currency", currencyFilter);
          register("date", dateFilter);
          register("filter", filterFilter);
          register("json", jsonFilter);
          register("limitTo", limitToFilter);
          register("lowercase", lowercaseFilter);
          register("number", numberFilter);
          register("orderBy", orderByFilter);
          register("uppercase", uppercaseFilter);
        }
        function filterFilter() {
          return function(array, expression, comparator, anyPropertyKey) {
            if (!isArrayLike(array)) {
              if (array == null) {
                return array;
              } else {
                throw minErr("filter")("notarray", "Expected array but received: {0}", array);
              }
            }
            anyPropertyKey = anyPropertyKey || "$";
            var expressionType = getTypeForFilter(expression);
            var predicateFn;
            var matchAgainstAnyProp;
            switch (expressionType) {
              case "function":
                predicateFn = expression;
                break;
              case "boolean":
              case "null":
              case "number":
              case "string":
                matchAgainstAnyProp = true;
              case "object":
                predicateFn = createPredicateFn(expression, comparator, anyPropertyKey, matchAgainstAnyProp);
                break;
              default:
                return array;
            }
            return Array.prototype.filter.call(array, predicateFn);
          };
        }
        function createPredicateFn(expression, comparator, anyPropertyKey, matchAgainstAnyProp) {
          var shouldMatchPrimitives = isObject(expression) && anyPropertyKey in expression;
          var predicateFn;
          if (comparator === true) {
            comparator = equals;
          } else if (!isFunction(comparator)) {
            comparator = function(actual, expected) {
              if (isUndefined(actual)) {
                return false;
              }
              if (actual === null || expected === null) {
                return actual === expected;
              }
              if (isObject(expected) || isObject(actual) && !hasCustomToString(actual)) {
                return false;
              }
              actual = lowercase("" + actual);
              expected = lowercase("" + expected);
              return actual.indexOf(expected) !== -1;
            };
          }
          predicateFn = function(item) {
            if (shouldMatchPrimitives && !isObject(item)) {
              return deepCompare(item, expression[anyPropertyKey], comparator, anyPropertyKey, false);
            }
            return deepCompare(item, expression, comparator, anyPropertyKey, matchAgainstAnyProp);
          };
          return predicateFn;
        }
        function deepCompare(actual, expected, comparator, anyPropertyKey, matchAgainstAnyProp, dontMatchWholeObject) {
          var actualType = getTypeForFilter(actual);
          var expectedType = getTypeForFilter(expected);
          if (expectedType === "string" && expected.charAt(0) === "!") {
            return !deepCompare(actual, expected.substring(1), comparator, anyPropertyKey, matchAgainstAnyProp);
          } else if (isArray(actual)) {
            return actual.some(function(item) {
              return deepCompare(item, expected, comparator, anyPropertyKey, matchAgainstAnyProp);
            });
          }
          switch (actualType) {
            case "object":
              var key2;
              if (matchAgainstAnyProp) {
                for (key2 in actual) {
                  if (key2.charAt && key2.charAt(0) !== "$" && deepCompare(actual[key2], expected, comparator, anyPropertyKey, true)) {
                    return true;
                  }
                }
                return dontMatchWholeObject ? false : deepCompare(actual, expected, comparator, anyPropertyKey, false);
              } else if (expectedType === "object") {
                for (key2 in expected) {
                  var expectedVal = expected[key2];
                  if (isFunction(expectedVal) || isUndefined(expectedVal)) {
                    continue;
                  }
                  var matchAnyProperty = key2 === anyPropertyKey;
                  var actualVal = matchAnyProperty ? actual : actual[key2];
                  if (!deepCompare(actualVal, expectedVal, comparator, anyPropertyKey, matchAnyProperty, matchAnyProperty)) {
                    return false;
                  }
                }
                return true;
              } else {
                return comparator(actual, expected);
              }
            case "function":
              return false;
            default:
              return comparator(actual, expected);
          }
        }
        function getTypeForFilter(val) {
          return val === null ? "null" : typeof val;
        }
        var MAX_DIGITS = 22;
        var DECIMAL_SEP = ".";
        var ZERO_CHAR = "0";
        currencyFilter.$inject = ["$locale"];
        function currencyFilter($locale) {
          var formats = $locale.NUMBER_FORMATS;
          return function(amount, currencySymbol, fractionSize) {
            if (isUndefined(currencySymbol)) {
              currencySymbol = formats.CURRENCY_SYM;
            }
            if (isUndefined(fractionSize)) {
              fractionSize = formats.PATTERNS[1].maxFrac;
            }
            var currencySymbolRe = !currencySymbol ? /\s*\u00A4\s*/g : /\u00A4/g;
            return amount == null ? amount : formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, fractionSize).replace(currencySymbolRe, currencySymbol);
          };
        }
        numberFilter.$inject = ["$locale"];
        function numberFilter($locale) {
          var formats = $locale.NUMBER_FORMATS;
          return function(number, fractionSize) {
            return number == null ? number : formatNumber(
              number,
              formats.PATTERNS[0],
              formats.GROUP_SEP,
              formats.DECIMAL_SEP,
              fractionSize
            );
          };
        }
        function parse(numStr) {
          var exponent = 0, digits, numberOfIntegerDigits;
          var i, j, zeros;
          if ((numberOfIntegerDigits = numStr.indexOf(DECIMAL_SEP)) > -1) {
            numStr = numStr.replace(DECIMAL_SEP, "");
          }
          if ((i = numStr.search(/e/i)) > 0) {
            if (numberOfIntegerDigits < 0)
              numberOfIntegerDigits = i;
            numberOfIntegerDigits += +numStr.slice(i + 1);
            numStr = numStr.substring(0, i);
          } else if (numberOfIntegerDigits < 0) {
            numberOfIntegerDigits = numStr.length;
          }
          for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) {
          }
          if (i === (zeros = numStr.length)) {
            digits = [0];
            numberOfIntegerDigits = 1;
          } else {
            zeros--;
            while (numStr.charAt(zeros) === ZERO_CHAR)
              zeros--;
            numberOfIntegerDigits -= i;
            digits = [];
            for (j = 0; i <= zeros; i++, j++) {
              digits[j] = +numStr.charAt(i);
            }
          }
          if (numberOfIntegerDigits > MAX_DIGITS) {
            digits = digits.splice(0, MAX_DIGITS - 1);
            exponent = numberOfIntegerDigits - 1;
            numberOfIntegerDigits = 1;
          }
          return { d: digits, e: exponent, i: numberOfIntegerDigits };
        }
        function roundNumber(parsedNumber, fractionSize, minFrac, maxFrac) {
          var digits = parsedNumber.d;
          var fractionLen = digits.length - parsedNumber.i;
          fractionSize = isUndefined(fractionSize) ? Math.min(Math.max(minFrac, fractionLen), maxFrac) : +fractionSize;
          var roundAt = fractionSize + parsedNumber.i;
          var digit = digits[roundAt];
          if (roundAt > 0) {
            digits.splice(Math.max(parsedNumber.i, roundAt));
            for (var j = roundAt; j < digits.length; j++) {
              digits[j] = 0;
            }
          } else {
            fractionLen = Math.max(0, fractionLen);
            parsedNumber.i = 1;
            digits.length = Math.max(1, roundAt = fractionSize + 1);
            digits[0] = 0;
            for (var i = 1; i < roundAt; i++)
              digits[i] = 0;
          }
          if (digit >= 5) {
            if (roundAt - 1 < 0) {
              for (var k = 0; k > roundAt; k--) {
                digits.unshift(0);
                parsedNumber.i++;
              }
              digits.unshift(1);
              parsedNumber.i++;
            } else {
              digits[roundAt - 1]++;
            }
          }
          for (; fractionLen < Math.max(0, fractionSize); fractionLen++)
            digits.push(0);
          var carry = digits.reduceRight(function(carry2, d, i2, digits2) {
            d = d + carry2;
            digits2[i2] = d % 10;
            return Math.floor(d / 10);
          }, 0);
          if (carry) {
            digits.unshift(carry);
            parsedNumber.i++;
          }
        }
        function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
          if (!(isString(number) || isNumber2(number)) || isNaN(number))
            return "";
          var isInfinity = !isFinite(number);
          var isZero = false;
          var numStr = Math.abs(number) + "", formattedText = "", parsedNumber;
          if (isInfinity) {
            formattedText = "\u221E";
          } else {
            parsedNumber = parse(numStr);
            roundNumber(parsedNumber, fractionSize, pattern.minFrac, pattern.maxFrac);
            var digits = parsedNumber.d;
            var integerLen = parsedNumber.i;
            var exponent = parsedNumber.e;
            var decimals = [];
            isZero = digits.reduce(function(isZero2, d) {
              return isZero2 && !d;
            }, true);
            while (integerLen < 0) {
              digits.unshift(0);
              integerLen++;
            }
            if (integerLen > 0) {
              decimals = digits.splice(integerLen, digits.length);
            } else {
              decimals = digits;
              digits = [0];
            }
            var groups = [];
            if (digits.length >= pattern.lgSize) {
              groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(""));
            }
            while (digits.length > pattern.gSize) {
              groups.unshift(digits.splice(-pattern.gSize, digits.length).join(""));
            }
            if (digits.length) {
              groups.unshift(digits.join(""));
            }
            formattedText = groups.join(groupSep);
            if (decimals.length) {
              formattedText += decimalSep + decimals.join("");
            }
            if (exponent) {
              formattedText += "e+" + exponent;
            }
          }
          if (number < 0 && !isZero) {
            return pattern.negPre + formattedText + pattern.negSuf;
          } else {
            return pattern.posPre + formattedText + pattern.posSuf;
          }
        }
        function padNumber(num, digits, trim2, negWrap) {
          var neg = "";
          if (num < 0 || negWrap && num <= 0) {
            if (negWrap) {
              num = -num + 1;
            } else {
              num = -num;
              neg = "-";
            }
          }
          num = "" + num;
          while (num.length < digits)
            num = ZERO_CHAR + num;
          if (trim2) {
            num = num.substr(num.length - digits);
          }
          return neg + num;
        }
        function dateGetter(name, size, offset, trim2, negWrap) {
          offset = offset || 0;
          return function(date) {
            var value = date["get" + name]();
            if (offset > 0 || value > -offset) {
              value += offset;
            }
            if (value === 0 && offset === -12)
              value = 12;
            return padNumber(value, size, trim2, negWrap);
          };
        }
        function dateStrGetter(name, shortForm, standAlone) {
          return function(date, formats) {
            var value = date["get" + name]();
            var propPrefix = (standAlone ? "STANDALONE" : "") + (shortForm ? "SHORT" : "");
            var get = uppercase(propPrefix + name);
            return formats[get][value];
          };
        }
        function timeZoneGetter(date, formats, offset) {
          var zone = -1 * offset;
          var paddedZone = zone >= 0 ? "+" : "";
          paddedZone += padNumber(Math[zone > 0 ? "floor" : "ceil"](zone / 60), 2) + padNumber(Math.abs(zone % 60), 2);
          return paddedZone;
        }
        function getFirstThursdayOfYear(year) {
          var dayOfWeekOnFirst = new Date(year, 0, 1).getDay();
          return new Date(year, 0, (dayOfWeekOnFirst <= 4 ? 5 : 12) - dayOfWeekOnFirst);
        }
        function getThursdayThisWeek(datetime) {
          return new Date(
            datetime.getFullYear(),
            datetime.getMonth(),
            datetime.getDate() + (4 - datetime.getDay())
          );
        }
        function weekGetter(size) {
          return function(date) {
            var firstThurs = getFirstThursdayOfYear(date.getFullYear()), thisThurs = getThursdayThisWeek(date);
            var diff2 = +thisThurs - +firstThurs, result = 1 + Math.round(diff2 / 6048e5);
            return padNumber(result, size);
          };
        }
        function ampmGetter(date, formats) {
          return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1];
        }
        function eraGetter(date, formats) {
          return date.getFullYear() <= 0 ? formats.ERAS[0] : formats.ERAS[1];
        }
        function longEraGetter(date, formats) {
          return date.getFullYear() <= 0 ? formats.ERANAMES[0] : formats.ERANAMES[1];
        }
        var DATE_FORMATS = {
          yyyy: dateGetter("FullYear", 4, 0, false, true),
          yy: dateGetter("FullYear", 2, 0, true, true),
          y: dateGetter("FullYear", 1, 0, false, true),
          MMMM: dateStrGetter("Month"),
          MMM: dateStrGetter("Month", true),
          MM: dateGetter("Month", 2, 1),
          M: dateGetter("Month", 1, 1),
          LLLL: dateStrGetter("Month", false, true),
          dd: dateGetter("Date", 2),
          d: dateGetter("Date", 1),
          HH: dateGetter("Hours", 2),
          H: dateGetter("Hours", 1),
          hh: dateGetter("Hours", 2, -12),
          h: dateGetter("Hours", 1, -12),
          mm: dateGetter("Minutes", 2),
          m: dateGetter("Minutes", 1),
          ss: dateGetter("Seconds", 2),
          s: dateGetter("Seconds", 1),
          sss: dateGetter("Milliseconds", 3),
          EEEE: dateStrGetter("Day"),
          EEE: dateStrGetter("Day", true),
          a: ampmGetter,
          Z: timeZoneGetter,
          ww: weekGetter(2),
          w: weekGetter(1),
          G: eraGetter,
          GG: eraGetter,
          GGG: eraGetter,
          GGGG: longEraGetter
        };
        var DATE_FORMATS_SPLIT = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/, NUMBER_STRING = /^-?\d+$/;
        dateFilter.$inject = ["$locale"];
        function dateFilter($locale) {
          var R_ISO8601_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
          function jsonStringToDate(string) {
            var match;
            if (match = string.match(R_ISO8601_STR)) {
              var date = new Date(0), tzHour = 0, tzMin = 0, dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear, timeSetter = match[8] ? date.setUTCHours : date.setHours;
              if (match[9]) {
                tzHour = toInt(match[9] + match[10]);
                tzMin = toInt(match[9] + match[11]);
              }
              dateSetter.call(date, toInt(match[1]), toInt(match[2]) - 1, toInt(match[3]));
              var h2 = toInt(match[4] || 0) - tzHour;
              var m = toInt(match[5] || 0) - tzMin;
              var s2 = toInt(match[6] || 0);
              var ms = Math.round(parseFloat("0." + (match[7] || 0)) * 1e3);
              timeSetter.call(date, h2, m, s2, ms);
              return date;
            }
            return string;
          }
          return function(date, format, timezone) {
            var text = "", parts = [], fn, match;
            format = format || "mediumDate";
            format = $locale.DATETIME_FORMATS[format] || format;
            if (isString(date)) {
              date = NUMBER_STRING.test(date) ? toInt(date) : jsonStringToDate(date);
            }
            if (isNumber2(date)) {
              date = new Date(date);
            }
            if (!isDate(date) || !isFinite(date.getTime())) {
              return date;
            }
            while (format) {
              match = DATE_FORMATS_SPLIT.exec(format);
              if (match) {
                parts = concat(parts, match, 1);
                format = parts.pop();
              } else {
                parts.push(format);
                format = null;
              }
            }
            var dateTimezoneOffset = date.getTimezoneOffset();
            if (timezone) {
              dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);
              date = convertTimezoneToLocal(date, timezone, true);
            }
            forEach(parts, function(value) {
              fn = DATE_FORMATS[value];
              text += fn ? fn(date, $locale.DATETIME_FORMATS, dateTimezoneOffset) : value === "''" ? "'" : value.replace(/(^'|'$)/g, "").replace(/''/g, "'");
            });
            return text;
          };
        }
        function jsonFilter() {
          return function(object, spacing) {
            if (isUndefined(spacing)) {
              spacing = 2;
            }
            return toJson(object, spacing);
          };
        }
        var lowercaseFilter = valueFn(lowercase);
        var uppercaseFilter = valueFn(uppercase);
        function limitToFilter() {
          return function(input, limit, begin) {
            if (Math.abs(Number(limit)) === Infinity) {
              limit = Number(limit);
            } else {
              limit = toInt(limit);
            }
            if (isNumberNaN(limit))
              return input;
            if (isNumber2(input))
              input = input.toString();
            if (!isArrayLike(input))
              return input;
            begin = !begin || isNaN(begin) ? 0 : toInt(begin);
            begin = begin < 0 ? Math.max(0, input.length + begin) : begin;
            if (limit >= 0) {
              return sliceFn(input, begin, begin + limit);
            } else {
              if (begin === 0) {
                return sliceFn(input, limit, input.length);
              } else {
                return sliceFn(input, Math.max(0, begin + limit), begin);
              }
            }
          };
        }
        function sliceFn(input, begin, end2) {
          if (isString(input))
            return input.slice(begin, end2);
          return slice.call(input, begin, end2);
        }
        orderByFilter.$inject = ["$parse"];
        function orderByFilter($parse) {
          return function(array, sortPredicate, reverseOrder, compareFn) {
            if (array == null)
              return array;
            if (!isArrayLike(array)) {
              throw minErr("orderBy")("notarray", "Expected array but received: {0}", array);
            }
            if (!isArray(sortPredicate)) {
              sortPredicate = [sortPredicate];
            }
            if (sortPredicate.length === 0) {
              sortPredicate = ["+"];
            }
            var predicates = processPredicates(sortPredicate);
            var descending = reverseOrder ? -1 : 1;
            var compare = isFunction(compareFn) ? compareFn : defaultCompare;
            var compareValues = Array.prototype.map.call(array, getComparisonObject);
            compareValues.sort(doComparison);
            array = compareValues.map(function(item) {
              return item.value;
            });
            return array;
            function getComparisonObject(value, index) {
              return {
                value,
                tieBreaker: { value: index, type: "number", index },
                predicateValues: predicates.map(function(predicate) {
                  return getPredicateValue(predicate.get(value), index);
                })
              };
            }
            function doComparison(v1, v2) {
              for (var i = 0, ii = predicates.length; i < ii; i++) {
                var result = compare(v1.predicateValues[i], v2.predicateValues[i]);
                if (result) {
                  return result * predicates[i].descending * descending;
                }
              }
              return (compare(v1.tieBreaker, v2.tieBreaker) || defaultCompare(v1.tieBreaker, v2.tieBreaker)) * descending;
            }
          };
          function processPredicates(sortPredicates) {
            return sortPredicates.map(function(predicate) {
              var descending = 1, get = identity;
              if (isFunction(predicate)) {
                get = predicate;
              } else if (isString(predicate)) {
                if (predicate.charAt(0) === "+" || predicate.charAt(0) === "-") {
                  descending = predicate.charAt(0) === "-" ? -1 : 1;
                  predicate = predicate.substring(1);
                }
                if (predicate !== "") {
                  get = $parse(predicate);
                  if (get.constant) {
                    var key2 = get();
                    get = function(value) {
                      return value[key2];
                    };
                  }
                }
              }
              return { get, descending };
            });
          }
          function isPrimitive(value) {
            switch (typeof value) {
              case "number":
              case "boolean":
              case "string":
                return true;
              default:
                return false;
            }
          }
          function objectValue(value) {
            if (isFunction(value.valueOf)) {
              value = value.valueOf();
              if (isPrimitive(value))
                return value;
            }
            if (hasCustomToString(value)) {
              value = value.toString();
              if (isPrimitive(value))
                return value;
            }
            return value;
          }
          function getPredicateValue(value, index) {
            var type = typeof value;
            if (value === null) {
              type = "null";
            } else if (type === "object") {
              value = objectValue(value);
            }
            return { value, type, index };
          }
          function defaultCompare(v1, v2) {
            var result = 0;
            var type1 = v1.type;
            var type2 = v2.type;
            if (type1 === type2) {
              var value1 = v1.value;
              var value2 = v2.value;
              if (type1 === "string") {
                value1 = value1.toLowerCase();
                value2 = value2.toLowerCase();
              } else if (type1 === "object") {
                if (isObject(value1))
                  value1 = v1.index;
                if (isObject(value2))
                  value2 = v2.index;
              }
              if (value1 !== value2) {
                result = value1 < value2 ? -1 : 1;
              }
            } else {
              result = type1 === "undefined" ? 1 : type2 === "undefined" ? -1 : type1 === "null" ? 1 : type2 === "null" ? -1 : type1 < type2 ? -1 : 1;
            }
            return result;
          }
        }
        function ngDirective(directive) {
          if (isFunction(directive)) {
            directive = {
              link: directive
            };
          }
          directive.restrict = directive.restrict || "AC";
          return valueFn(directive);
        }
        var htmlAnchorDirective = valueFn({
          restrict: "E",
          compile: function(element, attr) {
            if (!attr.href && !attr.xlinkHref) {
              return function(scope, element2) {
                if (element2[0].nodeName.toLowerCase() !== "a")
                  return;
                var href = toString.call(element2.prop("href")) === "[object SVGAnimatedString]" ? "xlink:href" : "href";
                element2.on("click", function(event) {
                  if (!element2.attr(href)) {
                    event.preventDefault();
                  }
                });
              };
            }
          }
        });
        var ngAttributeAliasDirectives = {};
        forEach(BOOLEAN_ATTR, function(propName, attrName) {
          if (propName === "multiple")
            return;
          function defaultLinkFn(scope, element, attr) {
            scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) {
              attr.$set(attrName, !!value);
            });
          }
          var normalized = directiveNormalize("ng-" + attrName);
          var linkFn = defaultLinkFn;
          if (propName === "checked") {
            linkFn = function(scope, element, attr) {
              if (attr.ngModel !== attr[normalized]) {
                defaultLinkFn(scope, element, attr);
              }
            };
          }
          ngAttributeAliasDirectives[normalized] = function() {
            return {
              restrict: "A",
              priority: 100,
              link: linkFn
            };
          };
        });
        forEach(ALIASED_ATTR, function(htmlAttr, ngAttr) {
          ngAttributeAliasDirectives[ngAttr] = function() {
            return {
              priority: 100,
              link: function(scope, element, attr) {
                if (ngAttr === "ngPattern" && attr.ngPattern.charAt(0) === "/") {
                  var match = attr.ngPattern.match(REGEX_STRING_REGEXP);
                  if (match) {
                    attr.$set("ngPattern", new RegExp(match[1], match[2]));
                    return;
                  }
                }
                scope.$watch(attr[ngAttr], function ngAttrAliasWatchAction(value) {
                  attr.$set(ngAttr, value);
                });
              }
            };
          };
        });
        forEach(["src", "srcset", "href"], function(attrName) {
          var normalized = directiveNormalize("ng-" + attrName);
          ngAttributeAliasDirectives[normalized] = ["$sce", function($sce) {
            return {
              priority: 99,
              link: function(scope, element, attr) {
                var propName = attrName, name = attrName;
                if (attrName === "href" && toString.call(element.prop("href")) === "[object SVGAnimatedString]") {
                  name = "xlinkHref";
                  attr.$attr[name] = "xlink:href";
                  propName = null;
                }
                attr.$set(normalized, $sce.getTrustedMediaUrl(attr[normalized]));
                attr.$observe(normalized, function(value) {
                  if (!value) {
                    if (attrName === "href") {
                      attr.$set(name, null);
                    }
                    return;
                  }
                  attr.$set(name, value);
                  if (msie && propName)
                    element.prop(propName, attr[name]);
                });
              }
            };
          }];
        });
        var nullFormCtrl = {
          $addControl: noop,
          $getControls: valueFn([]),
          $$renameControl: nullFormRenameControl,
          $removeControl: noop,
          $setValidity: noop,
          $setDirty: noop,
          $setPristine: noop,
          $setSubmitted: noop,
          $$setSubmitted: noop
        }, PENDING_CLASS = "ng-pending", SUBMITTED_CLASS = "ng-submitted";
        function nullFormRenameControl(control, name) {
          control.$name = name;
        }
        FormController.$inject = ["$element", "$attrs", "$scope", "$animate", "$interpolate"];
        function FormController($element, $attrs, $scope, $animate, $interpolate) {
          this.$$controls = [];
          this.$error = {};
          this.$$success = {};
          this.$pending = void 0;
          this.$name = $interpolate($attrs.name || $attrs.ngForm || "")($scope);
          this.$dirty = false;
          this.$pristine = true;
          this.$valid = true;
          this.$invalid = false;
          this.$submitted = false;
          this.$$parentForm = nullFormCtrl;
          this.$$element = $element;
          this.$$animate = $animate;
          setupValidity(this);
        }
        FormController.prototype = {
          $rollbackViewValue: function() {
            forEach(this.$$controls, function(control) {
              control.$rollbackViewValue();
            });
          },
          $commitViewValue: function() {
            forEach(this.$$controls, function(control) {
              control.$commitViewValue();
            });
          },
          $addControl: function(control) {
            assertNotHasOwnProperty(control.$name, "input");
            this.$$controls.push(control);
            if (control.$name) {
              this[control.$name] = control;
            }
            control.$$parentForm = this;
          },
          $getControls: function() {
            return shallowCopy(this.$$controls);
          },
          $$renameControl: function(control, newName) {
            var oldName = control.$name;
            if (this[oldName] === control) {
              delete this[oldName];
            }
            this[newName] = control;
            control.$name = newName;
          },
          $removeControl: function(control) {
            if (control.$name && this[control.$name] === control) {
              delete this[control.$name];
            }
            forEach(this.$pending, function(value, name) {
              this.$setValidity(name, null, control);
            }, this);
            forEach(this.$error, function(value, name) {
              this.$setValidity(name, null, control);
            }, this);
            forEach(this.$$success, function(value, name) {
              this.$setValidity(name, null, control);
            }, this);
            arrayRemove(this.$$controls, control);
            control.$$parentForm = nullFormCtrl;
          },
          $setDirty: function() {
            this.$$animate.removeClass(this.$$element, PRISTINE_CLASS);
            this.$$animate.addClass(this.$$element, DIRTY_CLASS);
            this.$dirty = true;
            this.$pristine = false;
            this.$$parentForm.$setDirty();
          },
          $setPristine: function() {
            this.$$animate.setClass(this.$$element, PRISTINE_CLASS, DIRTY_CLASS + " " + SUBMITTED_CLASS);
            this.$dirty = false;
            this.$pristine = true;
            this.$submitted = false;
            forEach(this.$$controls, function(control) {
              control.$setPristine();
            });
          },
          $setUntouched: function() {
            forEach(this.$$controls, function(control) {
              control.$setUntouched();
            });
          },
          $setSubmitted: function() {
            var rootForm = this;
            while (rootForm.$$parentForm && rootForm.$$parentForm !== nullFormCtrl) {
              rootForm = rootForm.$$parentForm;
            }
            rootForm.$$setSubmitted();
          },
          $$setSubmitted: function() {
            this.$$animate.addClass(this.$$element, SUBMITTED_CLASS);
            this.$submitted = true;
            forEach(this.$$controls, function(control) {
              if (control.$$setSubmitted) {
                control.$$setSubmitted();
              }
            });
          }
        };
        addSetValidityMethod({
          clazz: FormController,
          set: function(object, property, controller) {
            var list = object[property];
            if (!list) {
              object[property] = [controller];
            } else {
              var index = list.indexOf(controller);
              if (index === -1) {
                list.push(controller);
              }
            }
          },
          unset: function(object, property, controller) {
            var list = object[property];
            if (!list) {
              return;
            }
            arrayRemove(list, controller);
            if (list.length === 0) {
              delete object[property];
            }
          }
        });
        var formDirectiveFactory = function(isNgForm) {
          return ["$timeout", "$parse", function($timeout, $parse) {
            var formDirective2 = {
              name: "form",
              restrict: isNgForm ? "EAC" : "E",
              require: ["form", "^^?form"],
              controller: FormController,
              compile: function ngFormCompile(formElement, attr) {
                formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS);
                var nameAttr = attr.name ? "name" : isNgForm && attr.ngForm ? "ngForm" : false;
                return {
                  pre: function ngFormPreLink(scope, formElement2, attr2, ctrls) {
                    var controller = ctrls[0];
                    if (!("action" in attr2)) {
                      var handleFormSubmission = function(event) {
                        scope.$apply(function() {
                          controller.$commitViewValue();
                          controller.$setSubmitted();
                        });
                        event.preventDefault();
                      };
                      formElement2[0].addEventListener("submit", handleFormSubmission);
                      formElement2.on("$destroy", function() {
                        $timeout(function() {
                          formElement2[0].removeEventListener("submit", handleFormSubmission);
                        }, 0, false);
                      });
                    }
                    var parentFormCtrl = ctrls[1] || controller.$$parentForm;
                    parentFormCtrl.$addControl(controller);
                    var setter = nameAttr ? getSetter(controller.$name) : noop;
                    if (nameAttr) {
                      setter(scope, controller);
                      attr2.$observe(nameAttr, function(newValue) {
                        if (controller.$name === newValue)
                          return;
                        setter(scope, void 0);
                        controller.$$parentForm.$$renameControl(controller, newValue);
                        setter = getSetter(controller.$name);
                        setter(scope, controller);
                      });
                    }
                    formElement2.on("$destroy", function() {
                      controller.$$parentForm.$removeControl(controller);
                      setter(scope, void 0);
                      extend(controller, nullFormCtrl);
                    });
                  }
                };
              }
            };
            return formDirective2;
            function getSetter(expression) {
              if (expression === "") {
                return $parse('this[""]').assign;
              }
              return $parse(expression).assign || noop;
            }
          }];
        };
        var formDirective = formDirectiveFactory();
        var ngFormDirective = formDirectiveFactory(true);
        function setupValidity(instance) {
          instance.$$classCache = {};
          instance.$$classCache[INVALID_CLASS] = !(instance.$$classCache[VALID_CLASS] = instance.$$element.hasClass(VALID_CLASS));
        }
        function addSetValidityMethod(context) {
          var clazz = context.clazz, set = context.set, unset = context.unset;
          clazz.prototype.$setValidity = function(validationErrorKey, state, controller) {
            if (isUndefined(state)) {
              createAndSet(this, "$pending", validationErrorKey, controller);
            } else {
              unsetAndCleanup(this, "$pending", validationErrorKey, controller);
            }
            if (!isBoolean(state)) {
              unset(this.$error, validationErrorKey, controller);
              unset(this.$$success, validationErrorKey, controller);
            } else {
              if (state) {
                unset(this.$error, validationErrorKey, controller);
                set(this.$$success, validationErrorKey, controller);
              } else {
                set(this.$error, validationErrorKey, controller);
                unset(this.$$success, validationErrorKey, controller);
              }
            }
            if (this.$pending) {
              cachedToggleClass(this, PENDING_CLASS, true);
              this.$valid = this.$invalid = void 0;
              toggleValidationCss(this, "", null);
            } else {
              cachedToggleClass(this, PENDING_CLASS, false);
              this.$valid = isObjectEmpty(this.$error);
              this.$invalid = !this.$valid;
              toggleValidationCss(this, "", this.$valid);
            }
            var combinedState;
            if (this.$pending && this.$pending[validationErrorKey]) {
              combinedState = void 0;
            } else if (this.$error[validationErrorKey]) {
              combinedState = false;
            } else if (this.$$success[validationErrorKey]) {
              combinedState = true;
            } else {
              combinedState = null;
            }
            toggleValidationCss(this, validationErrorKey, combinedState);
            this.$$parentForm.$setValidity(validationErrorKey, combinedState, this);
          };
          function createAndSet(ctrl, name, value, controller) {
            if (!ctrl[name]) {
              ctrl[name] = {};
            }
            set(ctrl[name], value, controller);
          }
          function unsetAndCleanup(ctrl, name, value, controller) {
            if (ctrl[name]) {
              unset(ctrl[name], value, controller);
            }
            if (isObjectEmpty(ctrl[name])) {
              ctrl[name] = void 0;
            }
          }
          function cachedToggleClass(ctrl, className, switchValue) {
            if (switchValue && !ctrl.$$classCache[className]) {
              ctrl.$$animate.addClass(ctrl.$$element, className);
              ctrl.$$classCache[className] = true;
            } else if (!switchValue && ctrl.$$classCache[className]) {
              ctrl.$$animate.removeClass(ctrl.$$element, className);
              ctrl.$$classCache[className] = false;
            }
          }
          function toggleValidationCss(ctrl, validationErrorKey, isValid) {
            validationErrorKey = validationErrorKey ? "-" + snake_case(validationErrorKey, "-") : "";
            cachedToggleClass(ctrl, VALID_CLASS + validationErrorKey, isValid === true);
            cachedToggleClass(ctrl, INVALID_CLASS + validationErrorKey, isValid === false);
          }
        }
        function isObjectEmpty(obj) {
          if (obj) {
            for (var prop in obj) {
              if (obj.hasOwnProperty(prop)) {
                return false;
              }
            }
          }
          return true;
        }
        var ISO_DATE_REGEXP = /^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/;
        var URL_REGEXP = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i;
        var EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/;
        var NUMBER_REGEXP = /^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/;
        var DATE_REGEXP = /^(\d{4,})-(\d{2})-(\d{2})$/;
        var DATETIMELOCAL_REGEXP = /^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/;
        var WEEK_REGEXP = /^(\d{4,})-W(\d\d)$/;
        var MONTH_REGEXP = /^(\d{4,})-(\d\d)$/;
        var TIME_REGEXP = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/;
        var PARTIAL_VALIDATION_EVENTS = "keydown wheel mousedown";
        var PARTIAL_VALIDATION_TYPES = createMap();
        forEach("date,datetime-local,month,time,week".split(","), function(type) {
          PARTIAL_VALIDATION_TYPES[type] = true;
        });
        var inputType = {
          "text": textInputType,
          "date": createDateInputType(
            "date",
            DATE_REGEXP,
            createDateParser(DATE_REGEXP, ["yyyy", "MM", "dd"]),
            "yyyy-MM-dd"
          ),
          "datetime-local": createDateInputType(
            "datetimelocal",
            DATETIMELOCAL_REGEXP,
            createDateParser(DATETIMELOCAL_REGEXP, ["yyyy", "MM", "dd", "HH", "mm", "ss", "sss"]),
            "yyyy-MM-ddTHH:mm:ss.sss"
          ),
          "time": createDateInputType(
            "time",
            TIME_REGEXP,
            createDateParser(TIME_REGEXP, ["HH", "mm", "ss", "sss"]),
            "HH:mm:ss.sss"
          ),
          "week": createDateInputType("week", WEEK_REGEXP, weekParser, "yyyy-Www"),
          "month": createDateInputType(
            "month",
            MONTH_REGEXP,
            createDateParser(MONTH_REGEXP, ["yyyy", "MM"]),
            "yyyy-MM"
          ),
          "number": numberInputType,
          "url": urlInputType,
          "email": emailInputType,
          "radio": radioInputType,
          "range": rangeInputType,
          "checkbox": checkboxInputType,
          "hidden": noop,
          "button": noop,
          "submit": noop,
          "reset": noop,
          "file": noop
        };
        function stringBasedInputType(ctrl) {
          ctrl.$formatters.push(function(value) {
            return ctrl.$isEmpty(value) ? value : value.toString();
          });
        }
        function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
          baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
          stringBasedInputType(ctrl);
        }
        function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {
          var type = lowercase(element[0].type);
          if (!$sniffer.android) {
            var composing = false;
            element.on("compositionstart", function() {
              composing = true;
            });
            element.on("compositionupdate", function(ev) {
              if (isUndefined(ev.data) || ev.data === "") {
                composing = false;
              }
            });
            element.on("compositionend", function() {
              composing = false;
              listener();
            });
          }
          var timeout;
          var listener = function(ev) {
            if (timeout) {
              $browser.defer.cancel(timeout);
              timeout = null;
            }
            if (composing)
              return;
            var value = element.val(), event = ev && ev.type;
            if (type !== "password" && (!attr.ngTrim || attr.ngTrim !== "false")) {
              value = trim(value);
            }
            if (ctrl.$viewValue !== value || value === "" && ctrl.$$hasNativeValidators) {
              ctrl.$setViewValue(value, event);
            }
          };
          if ($sniffer.hasEvent("input")) {
            element.on("input", listener);
          } else {
            var deferListener = function(ev, input, origValue) {
              if (!timeout) {
                timeout = $browser.defer(function() {
                  timeout = null;
                  if (!input || input.value !== origValue) {
                    listener(ev);
                  }
                });
              }
            };
            element.on("keydown", function(event) {
              var key2 = event.keyCode;
              if (key2 === 91 || 15 < key2 && key2 < 19 || 37 <= key2 && key2 <= 40)
                return;
              deferListener(event, this, this.value);
            });
            if ($sniffer.hasEvent("paste")) {
              element.on("paste cut drop", deferListener);
            }
          }
          element.on("change", listener);
          if (PARTIAL_VALIDATION_TYPES[type] && ctrl.$$hasNativeValidators && type === attr.type) {
            element.on(PARTIAL_VALIDATION_EVENTS, function(ev) {
              if (!timeout) {
                var validity = this[VALIDITY_STATE_PROPERTY];
                var origBadInput = validity.badInput;
                var origTypeMismatch = validity.typeMismatch;
                timeout = $browser.defer(function() {
                  timeout = null;
                  if (validity.badInput !== origBadInput || validity.typeMismatch !== origTypeMismatch) {
                    listener(ev);
                  }
                });
              }
            });
          }
          ctrl.$render = function() {
            var value = ctrl.$isEmpty(ctrl.$viewValue) ? "" : ctrl.$viewValue;
            if (element.val() !== value) {
              element.val(value);
            }
          };
        }
        function weekParser(isoWeek, existingDate) {
          if (isDate(isoWeek)) {
            return isoWeek;
          }
          if (isString(isoWeek)) {
            WEEK_REGEXP.lastIndex = 0;
            var parts = WEEK_REGEXP.exec(isoWeek);
            if (parts) {
              var year = +parts[1], week = +parts[2], hours = 0, minutes = 0, seconds = 0, milliseconds = 0, firstThurs = getFirstThursdayOfYear(year), addDays = (week - 1) * 7;
              if (existingDate) {
                hours = existingDate.getHours();
                minutes = existingDate.getMinutes();
                seconds = existingDate.getSeconds();
                milliseconds = existingDate.getMilliseconds();
              }
              return new Date(year, 0, firstThurs.getDate() + addDays, hours, minutes, seconds, milliseconds);
            }
          }
          return NaN;
        }
        function createDateParser(regexp, mapping) {
          return function(iso, previousDate) {
            var parts, map;
            if (isDate(iso)) {
              return iso;
            }
            if (isString(iso)) {
              if (iso.charAt(0) === '"' && iso.charAt(iso.length - 1) === '"') {
                iso = iso.substring(1, iso.length - 1);
              }
              if (ISO_DATE_REGEXP.test(iso)) {
                return new Date(iso);
              }
              regexp.lastIndex = 0;
              parts = regexp.exec(iso);
              if (parts) {
                parts.shift();
                if (previousDate) {
                  map = {
                    yyyy: previousDate.getFullYear(),
                    MM: previousDate.getMonth() + 1,
                    dd: previousDate.getDate(),
                    HH: previousDate.getHours(),
                    mm: previousDate.getMinutes(),
                    ss: previousDate.getSeconds(),
                    sss: previousDate.getMilliseconds() / 1e3
                  };
                } else {
                  map = { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, sss: 0 };
                }
                forEach(parts, function(part, index) {
                  if (index < mapping.length) {
                    map[mapping[index]] = +part;
                  }
                });
                var date = new Date(map.yyyy, map.MM - 1, map.dd, map.HH, map.mm, map.ss || 0, map.sss * 1e3 || 0);
                if (map.yyyy < 100) {
                  date.setFullYear(map.yyyy);
                }
                return date;
              }
            }
            return NaN;
          };
        }
        function createDateInputType(type, regexp, parseDate, format) {
          return function dynamicDateInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter, $parse) {
            badInputChecker(scope, element, attr, ctrl, type);
            baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
            var isTimeType = type === "time" || type === "datetimelocal";
            var previousDate;
            var previousTimezone;
            ctrl.$parsers.push(function(value) {
              if (ctrl.$isEmpty(value))
                return null;
              if (regexp.test(value)) {
                return parseDateAndConvertTimeZoneToLocal(value, previousDate);
              }
              ctrl.$$parserName = type;
              return void 0;
            });
            ctrl.$formatters.push(function(value) {
              if (value && !isDate(value)) {
                throw ngModelMinErr("datefmt", "Expected `{0}` to be a date", value);
              }
              if (isValidDate(value)) {
                previousDate = value;
                var timezone = ctrl.$options.getOption("timezone");
                if (timezone) {
                  previousTimezone = timezone;
                  previousDate = convertTimezoneToLocal(previousDate, timezone, true);
                }
                return formatter(value, timezone);
              } else {
                previousDate = null;
                previousTimezone = null;
                return "";
              }
            });
            if (isDefined(attr.min) || attr.ngMin) {
              var minVal = attr.min || $parse(attr.ngMin)(scope);
              var parsedMinVal = parseObservedDateValue(minVal);
              ctrl.$validators.min = function(value) {
                return !isValidDate(value) || isUndefined(parsedMinVal) || parseDate(value) >= parsedMinVal;
              };
              attr.$observe("min", function(val) {
                if (val !== minVal) {
                  parsedMinVal = parseObservedDateValue(val);
                  minVal = val;
                  ctrl.$validate();
                }
              });
            }
            if (isDefined(attr.max) || attr.ngMax) {
              var maxVal = attr.max || $parse(attr.ngMax)(scope);
              var parsedMaxVal = parseObservedDateValue(maxVal);
              ctrl.$validators.max = function(value) {
                return !isValidDate(value) || isUndefined(parsedMaxVal) || parseDate(value) <= parsedMaxVal;
              };
              attr.$observe("max", function(val) {
                if (val !== maxVal) {
                  parsedMaxVal = parseObservedDateValue(val);
                  maxVal = val;
                  ctrl.$validate();
                }
              });
            }
            function isValidDate(value) {
              return value && !(value.getTime && value.getTime() !== value.getTime());
            }
            function parseObservedDateValue(val) {
              return isDefined(val) && !isDate(val) ? parseDateAndConvertTimeZoneToLocal(val) || void 0 : val;
            }
            function parseDateAndConvertTimeZoneToLocal(value, previousDate2) {
              var timezone = ctrl.$options.getOption("timezone");
              if (previousTimezone && previousTimezone !== timezone) {
                previousDate2 = addDateMinutes(previousDate2, timezoneToOffset(previousTimezone));
              }
              var parsedDate = parseDate(value, previousDate2);
              if (!isNaN(parsedDate) && timezone) {
                parsedDate = convertTimezoneToLocal(parsedDate, timezone);
              }
              return parsedDate;
            }
            function formatter(value, timezone) {
              var targetFormat = format;
              if (isTimeType && isString(ctrl.$options.getOption("timeSecondsFormat"))) {
                targetFormat = format.replace("ss.sss", ctrl.$options.getOption("timeSecondsFormat")).replace(/:$/, "");
              }
              var formatted = $filter("date")(value, targetFormat, timezone);
              if (isTimeType && ctrl.$options.getOption("timeStripZeroSeconds")) {
                formatted = formatted.replace(/(?::00)?(?:\.000)?$/, "");
              }
              return formatted;
            }
          };
        }
        function badInputChecker(scope, element, attr, ctrl, parserName) {
          var node = element[0];
          var nativeValidation = ctrl.$$hasNativeValidators = isObject(node.validity);
          if (nativeValidation) {
            ctrl.$parsers.push(function(value) {
              var validity = element.prop(VALIDITY_STATE_PROPERTY) || {};
              if (validity.badInput || validity.typeMismatch) {
                ctrl.$$parserName = parserName;
                return void 0;
              }
              return value;
            });
          }
        }
        function numberFormatterParser(ctrl) {
          ctrl.$parsers.push(function(value) {
            if (ctrl.$isEmpty(value))
              return null;
            if (NUMBER_REGEXP.test(value))
              return parseFloat(value);
            ctrl.$$parserName = "number";
            return void 0;
          });
          ctrl.$formatters.push(function(value) {
            if (!ctrl.$isEmpty(value)) {
              if (!isNumber2(value)) {
                throw ngModelMinErr("numfmt", "Expected `{0}` to be a number", value);
              }
              value = value.toString();
            }
            return value;
          });
        }
        function parseNumberAttrVal(val) {
          if (isDefined(val) && !isNumber2(val)) {
            val = parseFloat(val);
          }
          return !isNumberNaN(val) ? val : void 0;
        }
        function isNumberInteger(num) {
          return (num | 0) === num;
        }
        function countDecimals(num) {
          var numString = num.toString();
          var decimalSymbolIndex = numString.indexOf(".");
          if (decimalSymbolIndex === -1) {
            if (-1 < num && num < 1) {
              var match = /e-(\d+)$/.exec(numString);
              if (match) {
                return Number(match[1]);
              }
            }
            return 0;
          }
          return numString.length - decimalSymbolIndex - 1;
        }
        function isValidForStep(viewValue, stepBase, step) {
          var value = Number(viewValue);
          var isNonIntegerValue = !isNumberInteger(value);
          var isNonIntegerStepBase = !isNumberInteger(stepBase);
          var isNonIntegerStep = !isNumberInteger(step);
          if (isNonIntegerValue || isNonIntegerStepBase || isNonIntegerStep) {
            var valueDecimals = isNonIntegerValue ? countDecimals(value) : 0;
            var stepBaseDecimals = isNonIntegerStepBase ? countDecimals(stepBase) : 0;
            var stepDecimals = isNonIntegerStep ? countDecimals(step) : 0;
            var decimalCount = Math.max(valueDecimals, stepBaseDecimals, stepDecimals);
            var multiplier = Math.pow(10, decimalCount);
            value = value * multiplier;
            stepBase = stepBase * multiplier;
            step = step * multiplier;
            if (isNonIntegerValue)
              value = Math.round(value);
            if (isNonIntegerStepBase)
              stepBase = Math.round(stepBase);
            if (isNonIntegerStep)
              step = Math.round(step);
          }
          return (value - stepBase) % step === 0;
        }
        function numberInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter, $parse) {
          badInputChecker(scope, element, attr, ctrl, "number");
          numberFormatterParser(ctrl);
          baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
          var parsedMinVal;
          if (isDefined(attr.min) || attr.ngMin) {
            var minVal = attr.min || $parse(attr.ngMin)(scope);
            parsedMinVal = parseNumberAttrVal(minVal);
            ctrl.$validators.min = function(modelValue, viewValue) {
              return ctrl.$isEmpty(viewValue) || isUndefined(parsedMinVal) || viewValue >= parsedMinVal;
            };
            attr.$observe("min", function(val) {
              if (val !== minVal) {
                parsedMinVal = parseNumberAttrVal(val);
                minVal = val;
                ctrl.$validate();
              }
            });
          }
          if (isDefined(attr.max) || attr.ngMax) {
            var maxVal = attr.max || $parse(attr.ngMax)(scope);
            var parsedMaxVal = parseNumberAttrVal(maxVal);
            ctrl.$validators.max = function(modelValue, viewValue) {
              return ctrl.$isEmpty(viewValue) || isUndefined(parsedMaxVal) || viewValue <= parsedMaxVal;
            };
            attr.$observe("max", function(val) {
              if (val !== maxVal) {
                parsedMaxVal = parseNumberAttrVal(val);
                maxVal = val;
                ctrl.$validate();
              }
            });
          }
          if (isDefined(attr.step) || attr.ngStep) {
            var stepVal = attr.step || $parse(attr.ngStep)(scope);
            var parsedStepVal = parseNumberAttrVal(stepVal);
            ctrl.$validators.step = function(modelValue, viewValue) {
              return ctrl.$isEmpty(viewValue) || isUndefined(parsedStepVal) || isValidForStep(viewValue, parsedMinVal || 0, parsedStepVal);
            };
            attr.$observe("step", function(val) {
              if (val !== stepVal) {
                parsedStepVal = parseNumberAttrVal(val);
                stepVal = val;
                ctrl.$validate();
              }
            });
          }
        }
        function rangeInputType(scope, element, attr, ctrl, $sniffer, $browser) {
          badInputChecker(scope, element, attr, ctrl, "range");
          numberFormatterParser(ctrl);
          baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
          var supportsRange = ctrl.$$hasNativeValidators && element[0].type === "range", minVal = supportsRange ? 0 : void 0, maxVal = supportsRange ? 100 : void 0, stepVal = supportsRange ? 1 : void 0, validity = element[0].validity, hasMinAttr = isDefined(attr.min), hasMaxAttr = isDefined(attr.max), hasStepAttr = isDefined(attr.step);
          var originalRender = ctrl.$render;
          ctrl.$render = supportsRange && isDefined(validity.rangeUnderflow) && isDefined(validity.rangeOverflow) ? function rangeRender() {
            originalRender();
            ctrl.$setViewValue(element.val());
          } : originalRender;
          if (hasMinAttr) {
            minVal = parseNumberAttrVal(attr.min);
            ctrl.$validators.min = supportsRange ? function noopMinValidator() {
              return true;
            } : function minValidator(modelValue, viewValue) {
              return ctrl.$isEmpty(viewValue) || isUndefined(minVal) || viewValue >= minVal;
            };
            setInitialValueAndObserver("min", minChange);
          }
          if (hasMaxAttr) {
            maxVal = parseNumberAttrVal(attr.max);
            ctrl.$validators.max = supportsRange ? function noopMaxValidator() {
              return true;
            } : function maxValidator(modelValue, viewValue) {
              return ctrl.$isEmpty(viewValue) || isUndefined(maxVal) || viewValue <= maxVal;
            };
            setInitialValueAndObserver("max", maxChange);
          }
          if (hasStepAttr) {
            stepVal = parseNumberAttrVal(attr.step);
            ctrl.$validators.step = supportsRange ? function nativeStepValidator() {
              return !validity.stepMismatch;
            } : function stepValidator(modelValue, viewValue) {
              return ctrl.$isEmpty(viewValue) || isUndefined(stepVal) || isValidForStep(viewValue, minVal || 0, stepVal);
            };
            setInitialValueAndObserver("step", stepChange);
          }
          function setInitialValueAndObserver(htmlAttrName, changeFn) {
            element.attr(htmlAttrName, attr[htmlAttrName]);
            var oldVal = attr[htmlAttrName];
            attr.$observe(htmlAttrName, function wrappedObserver(val) {
              if (val !== oldVal) {
                oldVal = val;
                changeFn(val);
              }
            });
          }
          function minChange(val) {
            minVal = parseNumberAttrVal(val);
            if (isNumberNaN(ctrl.$modelValue)) {
              return;
            }
            if (supportsRange) {
              var elVal = element.val();
              if (minVal > elVal) {
                elVal = minVal;
                element.val(elVal);
              }
              ctrl.$setViewValue(elVal);
            } else {
              ctrl.$validate();
            }
          }
          function maxChange(val) {
            maxVal = parseNumberAttrVal(val);
            if (isNumberNaN(ctrl.$modelValue)) {
              return;
            }
            if (supportsRange) {
              var elVal = element.val();
              if (maxVal < elVal) {
                element.val(maxVal);
                elVal = maxVal < minVal ? minVal : maxVal;
              }
              ctrl.$setViewValue(elVal);
            } else {
              ctrl.$validate();
            }
          }
          function stepChange(val) {
            stepVal = parseNumberAttrVal(val);
            if (isNumberNaN(ctrl.$modelValue)) {
              return;
            }
            if (!supportsRange) {
              ctrl.$validate();
            } else if (ctrl.$viewValue !== element.val()) {
              ctrl.$setViewValue(element.val());
            }
          }
        }
        function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
          baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
          stringBasedInputType(ctrl);
          ctrl.$validators.url = function(modelValue, viewValue) {
            var value = modelValue || viewValue;
            return ctrl.$isEmpty(value) || URL_REGEXP.test(value);
          };
        }
        function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
          baseInputType(scope, element, attr, ctrl, $sniffer, $browser);
          stringBasedInputType(ctrl);
          ctrl.$validators.email = function(modelValue, viewValue) {
            var value = modelValue || viewValue;
            return ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value);
          };
        }
        function radioInputType(scope, element, attr, ctrl) {
          var doTrim = !attr.ngTrim || trim(attr.ngTrim) !== "false";
          if (isUndefined(attr.name)) {
            element.attr("name", nextUid());
          }
          var listener = function(ev) {
            var value;
            if (element[0].checked) {
              value = attr.value;
              if (doTrim) {
                value = trim(value);
              }
              ctrl.$setViewValue(value, ev && ev.type);
            }
          };
          element.on("change", listener);
          ctrl.$render = function() {
            var value = attr.value;
            if (doTrim) {
              value = trim(value);
            }
            element[0].checked = value === ctrl.$viewValue;
          };
          attr.$observe("value", ctrl.$render);
        }
        function parseConstantExpr($parse, context, name, expression, fallback) {
          var parseFn;
          if (isDefined(expression)) {
            parseFn = $parse(expression);
            if (!parseFn.constant) {
              throw ngModelMinErr("constexpr", "Expected constant expression for `{0}`, but saw `{1}`.", name, expression);
            }
            return parseFn(context);
          }
          return fallback;
        }
        function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter, $parse) {
          var trueValue = parseConstantExpr($parse, scope, "ngTrueValue", attr.ngTrueValue, true);
          var falseValue = parseConstantExpr($parse, scope, "ngFalseValue", attr.ngFalseValue, false);
          var listener = function(ev) {
            ctrl.$setViewValue(element[0].checked, ev && ev.type);
          };
          element.on("change", listener);
          ctrl.$render = function() {
            element[0].checked = ctrl.$viewValue;
          };
          ctrl.$isEmpty = function(value) {
            return value === false;
          };
          ctrl.$formatters.push(function(value) {
            return equals(value, trueValue);
          });
          ctrl.$parsers.push(function(value) {
            return value ? trueValue : falseValue;
          });
        }
        var inputDirective = [
          "$browser",
          "$sniffer",
          "$filter",
          "$parse",
          function($browser, $sniffer, $filter, $parse) {
            return {
              restrict: "E",
              require: ["?ngModel"],
              link: {
                pre: function(scope, element, attr, ctrls) {
                  if (ctrls[0]) {
                    (inputType[lowercase(attr.type)] || inputType.text)(
                      scope,
                      element,
                      attr,
                      ctrls[0],
                      $sniffer,
                      $browser,
                      $filter,
                      $parse
                    );
                  }
                }
              }
            };
          }
        ];
        var hiddenInputBrowserCacheDirective = function() {
          var valueProperty = {
            configurable: true,
            enumerable: false,
            get: function() {
              return this.getAttribute("value") || "";
            },
            set: function(val) {
              this.setAttribute("value", val);
            }
          };
          return {
            restrict: "E",
            priority: 200,
            compile: function(_2, attr) {
              if (lowercase(attr.type) !== "hidden") {
                return;
              }
              return {
                pre: function(scope, element, attr2, ctrls) {
                  var node = element[0];
                  if (node.parentNode) {
                    node.parentNode.insertBefore(node, node.nextSibling);
                  }
                  if (Object.defineProperty) {
                    Object.defineProperty(node, "value", valueProperty);
                  }
                }
              };
            }
          };
        };
        var CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/;
        var ngValueDirective = function() {
          function updateElementValue(element, attr, value) {
            var propValue = isDefined(value) ? value : msie === 9 ? "" : null;
            element.prop("value", propValue);
            attr.$set("value", value);
          }
          return {
            restrict: "A",
            priority: 100,
            compile: function(tpl, tplAttr) {
              if (CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)) {
                return function ngValueConstantLink(scope, elm, attr) {
                  var value = scope.$eval(attr.ngValue);
                  updateElementValue(elm, attr, value);
                };
              } else {
                return function ngValueLink(scope, elm, attr) {
                  scope.$watch(attr.ngValue, function valueWatchAction(value) {
                    updateElementValue(elm, attr, value);
                  });
                };
              }
            }
          };
        };
        var ngBindDirective = ["$compile", function($compile) {
          return {
            restrict: "AC",
            compile: function ngBindCompile(templateElement) {
              $compile.$$addBindingClass(templateElement);
              return function ngBindLink(scope, element, attr) {
                $compile.$$addBindingInfo(element, attr.ngBind);
                element = element[0];
                scope.$watch(attr.ngBind, function ngBindWatchAction(value) {
                  element.textContent = stringify(value);
                });
              };
            }
          };
        }];
        var ngBindTemplateDirective = ["$interpolate", "$compile", function($interpolate, $compile) {
          return {
            compile: function ngBindTemplateCompile(templateElement) {
              $compile.$$addBindingClass(templateElement);
              return function ngBindTemplateLink(scope, element, attr) {
                var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate));
                $compile.$$addBindingInfo(element, interpolateFn.expressions);
                element = element[0];
                attr.$observe("ngBindTemplate", function(value) {
                  element.textContent = isUndefined(value) ? "" : value;
                });
              };
            }
          };
        }];
        var ngBindHtmlDirective = ["$sce", "$parse", "$compile", function($sce, $parse, $compile) {
          return {
            restrict: "A",
            compile: function ngBindHtmlCompile(tElement, tAttrs) {
              var ngBindHtmlGetter = $parse(tAttrs.ngBindHtml);
              var ngBindHtmlWatch = $parse(tAttrs.ngBindHtml, function sceValueOf(val) {
                return $sce.valueOf(val);
              });
              $compile.$$addBindingClass(tElement);
              return function ngBindHtmlLink(scope, element, attr) {
                $compile.$$addBindingInfo(element, attr.ngBindHtml);
                scope.$watch(ngBindHtmlWatch, function ngBindHtmlWatchAction() {
                  var value = ngBindHtmlGetter(scope);
                  element.html($sce.getTrustedHtml(value) || "");
                });
              };
            }
          };
        }];
        var ngChangeDirective = valueFn({
          restrict: "A",
          require: "ngModel",
          link: function(scope, element, attr, ctrl) {
            ctrl.$viewChangeListeners.push(function() {
              scope.$eval(attr.ngChange);
            });
          }
        });
        function classDirective(name, selector) {
          name = "ngClass" + name;
          var indexWatchExpression;
          return ["$parse", function($parse) {
            return {
              restrict: "AC",
              link: function(scope, element, attr) {
                var classCounts = element.data("$classCounts");
                var oldModulo = true;
                var oldClassString;
                if (!classCounts) {
                  classCounts = createMap();
                  element.data("$classCounts", classCounts);
                }
                if (name !== "ngClass") {
                  if (!indexWatchExpression) {
                    indexWatchExpression = $parse("$index", function moduloTwo($index) {
                      return $index & 1;
                    });
                  }
                  scope.$watch(indexWatchExpression, ngClassIndexWatchAction);
                }
                scope.$watch($parse(attr[name], toClassString), ngClassWatchAction);
                function addClasses(classString) {
                  classString = digestClassCounts(split(classString), 1);
                  attr.$addClass(classString);
                }
                function removeClasses(classString) {
                  classString = digestClassCounts(split(classString), -1);
                  attr.$removeClass(classString);
                }
                function updateClasses(oldClassString2, newClassString) {
                  var oldClassArray = split(oldClassString2);
                  var newClassArray = split(newClassString);
                  var toRemoveArray = arrayDifference(oldClassArray, newClassArray);
                  var toAddArray = arrayDifference(newClassArray, oldClassArray);
                  var toRemoveString = digestClassCounts(toRemoveArray, -1);
                  var toAddString = digestClassCounts(toAddArray, 1);
                  attr.$addClass(toAddString);
                  attr.$removeClass(toRemoveString);
                }
                function digestClassCounts(classArray, count) {
                  var classesToUpdate = [];
                  forEach(classArray, function(className) {
                    if (count > 0 || classCounts[className]) {
                      classCounts[className] = (classCounts[className] || 0) + count;
                      if (classCounts[className] === +(count > 0)) {
                        classesToUpdate.push(className);
                      }
                    }
                  });
                  return classesToUpdate.join(" ");
                }
                function ngClassIndexWatchAction(newModulo) {
                  if (newModulo === selector) {
                    addClasses(oldClassString);
                  } else {
                    removeClasses(oldClassString);
                  }
                  oldModulo = newModulo;
                }
                function ngClassWatchAction(newClassString) {
                  if (oldModulo === selector) {
                    updateClasses(oldClassString, newClassString);
                  }
                  oldClassString = newClassString;
                }
              }
            };
          }];
          function arrayDifference(tokens1, tokens2) {
            if (!tokens1 || !tokens1.length)
              return [];
            if (!tokens2 || !tokens2.length)
              return tokens1;
            var values = [];
            outer:
              for (var i = 0; i < tokens1.length; i++) {
                var token = tokens1[i];
                for (var j = 0; j < tokens2.length; j++) {
                  if (token === tokens2[j])
                    continue outer;
                }
                values.push(token);
              }
            return values;
          }
          function split(classString) {
            return classString && classString.split(" ");
          }
          function toClassString(classValue) {
            if (!classValue)
              return classValue;
            var classString = classValue;
            if (isArray(classValue)) {
              classString = classValue.map(toClassString).join(" ");
            } else if (isObject(classValue)) {
              classString = Object.keys(classValue).filter(function(key2) {
                return classValue[key2];
              }).join(" ");
            } else if (!isString(classValue)) {
              classString = classValue + "";
            }
            return classString;
          }
        }
        var ngClassDirective = classDirective("", true);
        var ngClassOddDirective = classDirective("Odd", 0);
        var ngClassEvenDirective = classDirective("Even", 1);
        var ngCloakDirective = ngDirective({
          compile: function(element, attr) {
            attr.$set("ngCloak", void 0);
            element.removeClass("ng-cloak");
          }
        });
        var ngControllerDirective = [function() {
          return {
            restrict: "A",
            scope: true,
            controller: "@",
            priority: 500
          };
        }];
        var ngEventDirectives = {};
        var forceAsyncEvents = {
          "blur": true,
          "focus": true
        };
        forEach(
          "click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),
          function(eventName) {
            var directiveName = directiveNormalize("ng-" + eventName);
            ngEventDirectives[directiveName] = ["$parse", "$rootScope", "$exceptionHandler", function($parse, $rootScope, $exceptionHandler) {
              return createEventDirective($parse, $rootScope, $exceptionHandler, directiveName, eventName, forceAsyncEvents[eventName]);
            }];
          }
        );
        function createEventDirective($parse, $rootScope, $exceptionHandler, directiveName, eventName, forceAsync) {
          return {
            restrict: "A",
            compile: function($element, attr) {
              var fn = $parse(attr[directiveName]);
              return function ngEventHandler(scope, element) {
                element.on(eventName, function(event) {
                  var callback = function() {
                    fn(scope, { $event: event });
                  };
                  if (!$rootScope.$$phase) {
                    scope.$apply(callback);
                  } else if (forceAsync) {
                    scope.$evalAsync(callback);
                  } else {
                    try {
                      callback();
                    } catch (error) {
                      $exceptionHandler(error);
                    }
                  }
                });
              };
            }
          };
        }
        var ngIfDirective = ["$animate", "$compile", function($animate, $compile) {
          return {
            multiElement: true,
            transclude: "element",
            priority: 600,
            terminal: true,
            restrict: "A",
            $$tlb: true,
            link: function($scope, $element, $attr, ctrl, $transclude) {
              var block, childScope, previousElements;
              $scope.$watch($attr.ngIf, function ngIfWatchAction(value) {
                if (value) {
                  if (!childScope) {
                    $transclude(function(clone, newScope) {
                      childScope = newScope;
                      clone[clone.length++] = $compile.$$createComment("end ngIf", $attr.ngIf);
                      block = {
                        clone
                      };
                      $animate.enter(clone, $element.parent(), $element);
                    });
                  }
                } else {
                  if (previousElements) {
                    previousElements.remove();
                    previousElements = null;
                  }
                  if (childScope) {
                    childScope.$destroy();
                    childScope = null;
                  }
                  if (block) {
                    previousElements = getBlockNodes(block.clone);
                    $animate.leave(previousElements).done(function(response) {
                      if (response !== false)
                        previousElements = null;
                    });
                    block = null;
                  }
                }
              });
            }
          };
        }];
        var ngIncludeDirective = [
          "$templateRequest",
          "$anchorScroll",
          "$animate",
          function($templateRequest, $anchorScroll, $animate) {
            return {
              restrict: "ECA",
              priority: 400,
              terminal: true,
              transclude: "element",
              controller: angular2.noop,
              compile: function(element, attr) {
                var srcExp = attr.ngInclude || attr.src, onloadExp = attr.onload || "", autoScrollExp = attr.autoscroll;
                return function(scope, $element, $attr, ctrl, $transclude) {
                  var changeCounter = 0, currentScope, previousElement, currentElement;
                  var cleanupLastIncludeContent = function() {
                    if (previousElement) {
                      previousElement.remove();
                      previousElement = null;
                    }
                    if (currentScope) {
                      currentScope.$destroy();
                      currentScope = null;
                    }
                    if (currentElement) {
                      $animate.leave(currentElement).done(function(response) {
                        if (response !== false)
                          previousElement = null;
                      });
                      previousElement = currentElement;
                      currentElement = null;
                    }
                  };
                  scope.$watch(srcExp, function ngIncludeWatchAction(src) {
                    var afterAnimation = function(response) {
                      if (response !== false && isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) {
                        $anchorScroll();
                      }
                    };
                    var thisChangeId = ++changeCounter;
                    if (src) {
                      $templateRequest(src, true).then(function(response) {
                        if (scope.$$destroyed)
                          return;
                        if (thisChangeId !== changeCounter)
                          return;
                        var newScope = scope.$new();
                        ctrl.template = response;
                        var clone = $transclude(newScope, function(clone2) {
                          cleanupLastIncludeContent();
                          $animate.enter(clone2, null, $element).done(afterAnimation);
                        });
                        currentScope = newScope;
                        currentElement = clone;
                        currentScope.$emit("$includeContentLoaded", src);
                        scope.$eval(onloadExp);
                      }, function() {
                        if (scope.$$destroyed)
                          return;
                        if (thisChangeId === changeCounter) {
                          cleanupLastIncludeContent();
                          scope.$emit("$includeContentError", src);
                        }
                      });
                      scope.$emit("$includeContentRequested", src);
                    } else {
                      cleanupLastIncludeContent();
                      ctrl.template = null;
                    }
                  });
                };
              }
            };
          }
        ];
        var ngIncludeFillContentDirective = [
          "$compile",
          function($compile) {
            return {
              restrict: "ECA",
              priority: -400,
              require: "ngInclude",
              link: function(scope, $element, $attr, ctrl) {
                if (toString.call($element[0]).match(/SVG/)) {
                  $element.empty();
                  $compile(jqLiteBuildFragment(ctrl.template, window2.document).childNodes)(
                    scope,
                    function namespaceAdaptedClone(clone) {
                      $element.append(clone);
                    },
                    { futureParentElement: $element }
                  );
                  return;
                }
                $element.html(ctrl.template);
                $compile($element.contents())(scope);
              }
            };
          }
        ];
        var ngInitDirective = ngDirective({
          priority: 450,
          compile: function() {
            return {
              pre: function(scope, element, attrs) {
                scope.$eval(attrs.ngInit);
              }
            };
          }
        });
        var ngListDirective = function() {
          return {
            restrict: "A",
            priority: 100,
            require: "ngModel",
            link: function(scope, element, attr, ctrl) {
              var ngList = attr.ngList || ", ";
              var trimValues = attr.ngTrim !== "false";
              var separator = trimValues ? trim(ngList) : ngList;
              var parse2 = function(viewValue) {
                if (isUndefined(viewValue))
                  return;
                var list = [];
                if (viewValue) {
                  forEach(viewValue.split(separator), function(value) {
                    if (value)
                      list.push(trimValues ? trim(value) : value);
                  });
                }
                return list;
              };
              ctrl.$parsers.push(parse2);
              ctrl.$formatters.push(function(value) {
                if (isArray(value)) {
                  return value.join(ngList);
                }
                return void 0;
              });
              ctrl.$isEmpty = function(value) {
                return !value || !value.length;
              };
            }
          };
        };
        var VALID_CLASS = "ng-valid", INVALID_CLASS = "ng-invalid", PRISTINE_CLASS = "ng-pristine", DIRTY_CLASS = "ng-dirty", UNTOUCHED_CLASS = "ng-untouched", TOUCHED_CLASS = "ng-touched", EMPTY_CLASS = "ng-empty", NOT_EMPTY_CLASS = "ng-not-empty";
        var ngModelMinErr = minErr("ngModel");
        NgModelController.$inject = ["$scope", "$exceptionHandler", "$attrs", "$element", "$parse", "$animate", "$timeout", "$q", "$interpolate"];
        function NgModelController($scope, $exceptionHandler, $attr, $element, $parse, $animate, $timeout, $q, $interpolate) {
          this.$viewValue = Number.NaN;
          this.$modelValue = Number.NaN;
          this.$$rawModelValue = void 0;
          this.$validators = {};
          this.$asyncValidators = {};
          this.$parsers = [];
          this.$formatters = [];
          this.$viewChangeListeners = [];
          this.$untouched = true;
          this.$touched = false;
          this.$pristine = true;
          this.$dirty = false;
          this.$valid = true;
          this.$invalid = false;
          this.$error = {};
          this.$$success = {};
          this.$pending = void 0;
          this.$name = $interpolate($attr.name || "", false)($scope);
          this.$$parentForm = nullFormCtrl;
          this.$options = defaultModelOptions;
          this.$$updateEvents = "";
          this.$$updateEventHandler = this.$$updateEventHandler.bind(this);
          this.$$parsedNgModel = $parse($attr.ngModel);
          this.$$parsedNgModelAssign = this.$$parsedNgModel.assign;
          this.$$ngModelGet = this.$$parsedNgModel;
          this.$$ngModelSet = this.$$parsedNgModelAssign;
          this.$$pendingDebounce = null;
          this.$$parserValid = void 0;
          this.$$parserName = "parse";
          this.$$currentValidationRunId = 0;
          this.$$scope = $scope;
          this.$$rootScope = $scope.$root;
          this.$$attr = $attr;
          this.$$element = $element;
          this.$$animate = $animate;
          this.$$timeout = $timeout;
          this.$$parse = $parse;
          this.$$q = $q;
          this.$$exceptionHandler = $exceptionHandler;
          setupValidity(this);
          setupModelWatcher(this);
        }
        NgModelController.prototype = {
          $$initGetterSetters: function() {
            if (this.$options.getOption("getterSetter")) {
              var invokeModelGetter = this.$$parse(this.$$attr.ngModel + "()"), invokeModelSetter = this.$$parse(this.$$attr.ngModel + "($$$p)");
              this.$$ngModelGet = function($scope) {
                var modelValue = this.$$parsedNgModel($scope);
                if (isFunction(modelValue)) {
                  modelValue = invokeModelGetter($scope);
                }
                return modelValue;
              };
              this.$$ngModelSet = function($scope, newValue) {
                if (isFunction(this.$$parsedNgModel($scope))) {
                  invokeModelSetter($scope, { $$$p: newValue });
                } else {
                  this.$$parsedNgModelAssign($scope, newValue);
                }
              };
            } else if (!this.$$parsedNgModel.assign) {
              throw ngModelMinErr(
                "nonassign",
                "Expression '{0}' is non-assignable. Element: {1}",
                this.$$attr.ngModel,
                startingTag(this.$$element)
              );
            }
          },
          $render: noop,
          $isEmpty: function(value) {
            return isUndefined(value) || value === "" || value === null || value !== value;
          },
          $$updateEmptyClasses: function(value) {
            if (this.$isEmpty(value)) {
              this.$$animate.removeClass(this.$$element, NOT_EMPTY_CLASS);
              this.$$animate.addClass(this.$$element, EMPTY_CLASS);
            } else {
              this.$$animate.removeClass(this.$$element, EMPTY_CLASS);
              this.$$animate.addClass(this.$$element, NOT_EMPTY_CLASS);
            }
          },
          $setPristine: function() {
            this.$dirty = false;
            this.$pristine = true;
            this.$$animate.removeClass(this.$$element, DIRTY_CLASS);
            this.$$animate.addClass(this.$$element, PRISTINE_CLASS);
          },
          $setDirty: function() {
            this.$dirty = true;
            this.$pristine = false;
            this.$$animate.removeClass(this.$$element, PRISTINE_CLASS);
            this.$$animate.addClass(this.$$element, DIRTY_CLASS);
            this.$$parentForm.$setDirty();
          },
          $setUntouched: function() {
            this.$touched = false;
            this.$untouched = true;
            this.$$animate.setClass(this.$$element, UNTOUCHED_CLASS, TOUCHED_CLASS);
          },
          $setTouched: function() {
            this.$touched = true;
            this.$untouched = false;
            this.$$animate.setClass(this.$$element, TOUCHED_CLASS, UNTOUCHED_CLASS);
          },
          $rollbackViewValue: function() {
            this.$$timeout.cancel(this.$$pendingDebounce);
            this.$viewValue = this.$$lastCommittedViewValue;
            this.$render();
          },
          $validate: function() {
            if (isNumberNaN(this.$modelValue)) {
              return;
            }
            var viewValue = this.$$lastCommittedViewValue;
            var modelValue = this.$$rawModelValue;
            var prevValid = this.$valid;
            var prevModelValue = this.$modelValue;
            var allowInvalid = this.$options.getOption("allowInvalid");
            var that = this;
            this.$$runValidators(modelValue, viewValue, function(allValid) {
              if (!allowInvalid && prevValid !== allValid) {
                that.$modelValue = allValid ? modelValue : void 0;
                if (that.$modelValue !== prevModelValue) {
                  that.$$writeModelToScope();
                }
              }
            });
          },
          $$runValidators: function(modelValue, viewValue, doneCallback) {
            this.$$currentValidationRunId++;
            var localValidationRunId = this.$$currentValidationRunId;
            var that = this;
            if (!processParseErrors()) {
              validationDone(false);
              return;
            }
            if (!processSyncValidators()) {
              validationDone(false);
              return;
            }
            processAsyncValidators();
            function processParseErrors() {
              var errorKey = that.$$parserName;
              if (isUndefined(that.$$parserValid)) {
                setValidity(errorKey, null);
              } else {
                if (!that.$$parserValid) {
                  forEach(that.$validators, function(v, name) {
                    setValidity(name, null);
                  });
                  forEach(that.$asyncValidators, function(v, name) {
                    setValidity(name, null);
                  });
                }
                setValidity(errorKey, that.$$parserValid);
                return that.$$parserValid;
              }
              return true;
            }
            function processSyncValidators() {
              var syncValidatorsValid = true;
              forEach(that.$validators, function(validator, name) {
                var result = Boolean(validator(modelValue, viewValue));
                syncValidatorsValid = syncValidatorsValid && result;
                setValidity(name, result);
              });
              if (!syncValidatorsValid) {
                forEach(that.$asyncValidators, function(v, name) {
                  setValidity(name, null);
                });
                return false;
              }
              return true;
            }
            function processAsyncValidators() {
              var validatorPromises = [];
              var allValid = true;
              forEach(that.$asyncValidators, function(validator, name) {
                var promise = validator(modelValue, viewValue);
                if (!isPromiseLike(promise)) {
                  throw ngModelMinErr(
                    "nopromise",
                    "Expected asynchronous validator to return a promise but got '{0}' instead.",
                    promise
                  );
                }
                setValidity(name, void 0);
                validatorPromises.push(promise.then(function() {
                  setValidity(name, true);
                }, function() {
                  allValid = false;
                  setValidity(name, false);
                }));
              });
              if (!validatorPromises.length) {
                validationDone(true);
              } else {
                that.$$q.all(validatorPromises).then(function() {
                  validationDone(allValid);
                }, noop);
              }
            }
            function setValidity(name, isValid) {
              if (localValidationRunId === that.$$currentValidationRunId) {
                that.$setValidity(name, isValid);
              }
            }
            function validationDone(allValid) {
              if (localValidationRunId === that.$$currentValidationRunId) {
                doneCallback(allValid);
              }
            }
          },
          $commitViewValue: function() {
            var viewValue = this.$viewValue;
            this.$$timeout.cancel(this.$$pendingDebounce);
            if (this.$$lastCommittedViewValue === viewValue && (viewValue !== "" || !this.$$hasNativeValidators)) {
              return;
            }
            this.$$updateEmptyClasses(viewValue);
            this.$$lastCommittedViewValue = viewValue;
            if (this.$pristine) {
              this.$setDirty();
            }
            this.$$parseAndValidate();
          },
          $$parseAndValidate: function() {
            var viewValue = this.$$lastCommittedViewValue;
            var modelValue = viewValue;
            var that = this;
            this.$$parserValid = isUndefined(modelValue) ? void 0 : true;
            this.$setValidity(this.$$parserName, null);
            this.$$parserName = "parse";
            if (this.$$parserValid) {
              for (var i = 0; i < this.$parsers.length; i++) {
                modelValue = this.$parsers[i](modelValue);
                if (isUndefined(modelValue)) {
                  this.$$parserValid = false;
                  break;
                }
              }
            }
            if (isNumberNaN(this.$modelValue)) {
              this.$modelValue = this.$$ngModelGet(this.$$scope);
            }
            var prevModelValue = this.$modelValue;
            var allowInvalid = this.$options.getOption("allowInvalid");
            this.$$rawModelValue = modelValue;
            if (allowInvalid) {
              this.$modelValue = modelValue;
              writeToModelIfNeeded();
            }
            this.$$runValidators(modelValue, this.$$lastCommittedViewValue, function(allValid) {
              if (!allowInvalid) {
                that.$modelValue = allValid ? modelValue : void 0;
                writeToModelIfNeeded();
              }
            });
            function writeToModelIfNeeded() {
              if (that.$modelValue !== prevModelValue) {
                that.$$writeModelToScope();
              }
            }
          },
          $$writeModelToScope: function() {
            this.$$ngModelSet(this.$$scope, this.$modelValue);
            forEach(this.$viewChangeListeners, function(listener) {
              try {
                listener();
              } catch (e) {
                this.$$exceptionHandler(e);
              }
            }, this);
          },
          $setViewValue: function(value, trigger) {
            this.$viewValue = value;
            if (this.$options.getOption("updateOnDefault")) {
              this.$$debounceViewValueCommit(trigger);
            }
          },
          $$debounceViewValueCommit: function(trigger) {
            var debounceDelay = this.$options.getOption("debounce");
            if (isNumber2(debounceDelay[trigger])) {
              debounceDelay = debounceDelay[trigger];
            } else if (isNumber2(debounceDelay["default"]) && this.$options.getOption("updateOn").indexOf(trigger) === -1) {
              debounceDelay = debounceDelay["default"];
            } else if (isNumber2(debounceDelay["*"])) {
              debounceDelay = debounceDelay["*"];
            }
            this.$$timeout.cancel(this.$$pendingDebounce);
            var that = this;
            if (debounceDelay > 0) {
              this.$$pendingDebounce = this.$$timeout(function() {
                that.$commitViewValue();
              }, debounceDelay);
            } else if (this.$$rootScope.$$phase) {
              this.$commitViewValue();
            } else {
              this.$$scope.$apply(function() {
                that.$commitViewValue();
              });
            }
          },
          $overrideModelOptions: function(options) {
            this.$options = this.$options.createChild(options);
            this.$$setUpdateOnEvents();
          },
          $processModelValue: function() {
            var viewValue = this.$$format();
            if (this.$viewValue !== viewValue) {
              this.$$updateEmptyClasses(viewValue);
              this.$viewValue = this.$$lastCommittedViewValue = viewValue;
              this.$render();
              this.$$runValidators(this.$modelValue, this.$viewValue, noop);
            }
          },
          $$format: function() {
            var formatters = this.$formatters, idx = formatters.length;
            var viewValue = this.$modelValue;
            while (idx--) {
              viewValue = formatters[idx](viewValue);
            }
            return viewValue;
          },
          $$setModelValue: function(modelValue) {
            this.$modelValue = this.$$rawModelValue = modelValue;
            this.$$parserValid = void 0;
            this.$processModelValue();
          },
          $$setUpdateOnEvents: function() {
            if (this.$$updateEvents) {
              this.$$element.off(this.$$updateEvents, this.$$updateEventHandler);
            }
            this.$$updateEvents = this.$options.getOption("updateOn");
            if (this.$$updateEvents) {
              this.$$element.on(this.$$updateEvents, this.$$updateEventHandler);
            }
          },
          $$updateEventHandler: function(ev) {
            this.$$debounceViewValueCommit(ev && ev.type);
          }
        };
        function setupModelWatcher(ctrl) {
          ctrl.$$scope.$watch(function ngModelWatch(scope) {
            var modelValue = ctrl.$$ngModelGet(scope);
            if (modelValue !== ctrl.$modelValue && (ctrl.$modelValue === ctrl.$modelValue || modelValue === modelValue)) {
              ctrl.$$setModelValue(modelValue);
            }
            return modelValue;
          });
        }
        addSetValidityMethod({
          clazz: NgModelController,
          set: function(object, property) {
            object[property] = true;
          },
          unset: function(object, property) {
            delete object[property];
          }
        });
        var ngModelDirective = ["$rootScope", function($rootScope) {
          return {
            restrict: "A",
            require: ["ngModel", "^?form", "^?ngModelOptions"],
            controller: NgModelController,
            priority: 1,
            compile: function ngModelCompile(element) {
              element.addClass(PRISTINE_CLASS).addClass(UNTOUCHED_CLASS).addClass(VALID_CLASS);
              return {
                pre: function ngModelPreLink(scope, element2, attr, ctrls) {
                  var modelCtrl = ctrls[0], formCtrl = ctrls[1] || modelCtrl.$$parentForm, optionsCtrl = ctrls[2];
                  if (optionsCtrl) {
                    modelCtrl.$options = optionsCtrl.$options;
                  }
                  modelCtrl.$$initGetterSetters();
                  formCtrl.$addControl(modelCtrl);
                  attr.$observe("name", function(newValue) {
                    if (modelCtrl.$name !== newValue) {
                      modelCtrl.$$parentForm.$$renameControl(modelCtrl, newValue);
                    }
                  });
                  scope.$on("$destroy", function() {
                    modelCtrl.$$parentForm.$removeControl(modelCtrl);
                  });
                },
                post: function ngModelPostLink(scope, element2, attr, ctrls) {
                  var modelCtrl = ctrls[0];
                  modelCtrl.$$setUpdateOnEvents();
                  function setTouched() {
                    modelCtrl.$setTouched();
                  }
                  element2.on("blur", function() {
                    if (modelCtrl.$touched)
                      return;
                    if ($rootScope.$$phase) {
                      scope.$evalAsync(setTouched);
                    } else {
                      scope.$apply(setTouched);
                    }
                  });
                }
              };
            }
          };
        }];
        var defaultModelOptions;
        var DEFAULT_REGEXP = /(\s+|^)default(\s+|$)/;
        function ModelOptions(options) {
          this.$$options = options;
        }
        ModelOptions.prototype = {
          getOption: function(name) {
            return this.$$options[name];
          },
          createChild: function(options) {
            var inheritAll = false;
            options = extend({}, options);
            forEach(options, function(option, key2) {
              if (option === "$inherit") {
                if (key2 === "*") {
                  inheritAll = true;
                } else {
                  options[key2] = this.$$options[key2];
                  if (key2 === "updateOn") {
                    options.updateOnDefault = this.$$options.updateOnDefault;
                  }
                }
              } else {
                if (key2 === "updateOn") {
                  options.updateOnDefault = false;
                  options[key2] = trim(option.replace(DEFAULT_REGEXP, function() {
                    options.updateOnDefault = true;
                    return " ";
                  }));
                }
              }
            }, this);
            if (inheritAll) {
              delete options["*"];
              defaults(options, this.$$options);
            }
            defaults(options, defaultModelOptions.$$options);
            return new ModelOptions(options);
          }
        };
        defaultModelOptions = new ModelOptions({
          updateOn: "",
          updateOnDefault: true,
          debounce: 0,
          getterSetter: false,
          allowInvalid: false,
          timezone: null
        });
        var ngModelOptionsDirective = function() {
          NgModelOptionsController.$inject = ["$attrs", "$scope"];
          function NgModelOptionsController($attrs, $scope) {
            this.$$attrs = $attrs;
            this.$$scope = $scope;
          }
          NgModelOptionsController.prototype = {
            $onInit: function() {
              var parentOptions = this.parentCtrl ? this.parentCtrl.$options : defaultModelOptions;
              var modelOptionsDefinition = this.$$scope.$eval(this.$$attrs.ngModelOptions);
              this.$options = parentOptions.createChild(modelOptionsDefinition);
            }
          };
          return {
            restrict: "A",
            priority: 10,
            require: { parentCtrl: "?^^ngModelOptions" },
            bindToController: true,
            controller: NgModelOptionsController
          };
        };
        function defaults(dst, src) {
          forEach(src, function(value, key2) {
            if (!isDefined(dst[key2])) {
              dst[key2] = value;
            }
          });
        }
        var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1e3 });
        var ngOptionsMinErr = minErr("ngOptions");
        var NG_OPTIONS_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([$\w][$\w]*)|(?:\(\s*([$\w][$\w]*)\s*,\s*([$\w][$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/;
        var ngOptionsDirective = ["$compile", "$document", "$parse", function($compile, $document, $parse) {
          function parseOptionsExpression(optionsExp, selectElement, scope) {
            var match = optionsExp.match(NG_OPTIONS_REGEXP);
            if (!match) {
              throw ngOptionsMinErr(
                "iexp",
                "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",
                optionsExp,
                startingTag(selectElement)
              );
            }
            var valueName = match[5] || match[7];
            var keyName = match[6];
            var selectAs = / as /.test(match[0]) && match[1];
            var trackBy = match[9];
            var valueFn2 = $parse(match[2] ? match[1] : valueName);
            var selectAsFn = selectAs && $parse(selectAs);
            var viewValueFn = selectAsFn || valueFn2;
            var trackByFn = trackBy && $parse(trackBy);
            var getTrackByValueFn = trackBy ? function(value, locals2) {
              return trackByFn(scope, locals2);
            } : function getHashOfValue(value) {
              return hashKey(value);
            };
            var getTrackByValue = function(value, key2) {
              return getTrackByValueFn(value, getLocals(value, key2));
            };
            var displayFn = $parse(match[2] || match[1]);
            var groupByFn = $parse(match[3] || "");
            var disableWhenFn = $parse(match[4] || "");
            var valuesFn = $parse(match[8]);
            var locals = {};
            var getLocals = keyName ? function(value, key2) {
              locals[keyName] = key2;
              locals[valueName] = value;
              return locals;
            } : function(value) {
              locals[valueName] = value;
              return locals;
            };
            function Option(selectValue, viewValue, label, group, disabled) {
              this.selectValue = selectValue;
              this.viewValue = viewValue;
              this.label = label;
              this.group = group;
              this.disabled = disabled;
            }
            function getOptionValuesKeys(optionValues) {
              var optionValuesKeys;
              if (!keyName && isArrayLike(optionValues)) {
                optionValuesKeys = optionValues;
              } else {
                optionValuesKeys = [];
                for (var itemKey in optionValues) {
                  if (optionValues.hasOwnProperty(itemKey) && itemKey.charAt(0) !== "$") {
                    optionValuesKeys.push(itemKey);
                  }
                }
              }
              return optionValuesKeys;
            }
            return {
              trackBy,
              getTrackByValue,
              getWatchables: $parse(valuesFn, function(optionValues) {
                var watchedArray = [];
                optionValues = optionValues || [];
                var optionValuesKeys = getOptionValuesKeys(optionValues);
                var optionValuesLength = optionValuesKeys.length;
                for (var index = 0; index < optionValuesLength; index++) {
                  var key2 = optionValues === optionValuesKeys ? index : optionValuesKeys[index];
                  var value = optionValues[key2];
                  var locals2 = getLocals(value, key2);
                  var selectValue = getTrackByValueFn(value, locals2);
                  watchedArray.push(selectValue);
                  if (match[2] || match[1]) {
                    var label = displayFn(scope, locals2);
                    watchedArray.push(label);
                  }
                  if (match[4]) {
                    var disableWhen = disableWhenFn(scope, locals2);
                    watchedArray.push(disableWhen);
                  }
                }
                return watchedArray;
              }),
              getOptions: function() {
                var optionItems = [];
                var selectValueMap = {};
                var optionValues = valuesFn(scope) || [];
                var optionValuesKeys = getOptionValuesKeys(optionValues);
                var optionValuesLength = optionValuesKeys.length;
                for (var index = 0; index < optionValuesLength; index++) {
                  var key2 = optionValues === optionValuesKeys ? index : optionValuesKeys[index];
                  var value = optionValues[key2];
                  var locals2 = getLocals(value, key2);
                  var viewValue = viewValueFn(scope, locals2);
                  var selectValue = getTrackByValueFn(viewValue, locals2);
                  var label = displayFn(scope, locals2);
                  var group = groupByFn(scope, locals2);
                  var disabled = disableWhenFn(scope, locals2);
                  var optionItem = new Option(selectValue, viewValue, label, group, disabled);
                  optionItems.push(optionItem);
                  selectValueMap[selectValue] = optionItem;
                }
                return {
                  items: optionItems,
                  selectValueMap,
                  getOptionFromViewValue: function(value2) {
                    return selectValueMap[getTrackByValue(value2)];
                  },
                  getViewValueFromOption: function(option) {
                    return trackBy ? copy(option.viewValue) : option.viewValue;
                  }
                };
              }
            };
          }
          var optionTemplate = window2.document.createElement("option"), optGroupTemplate = window2.document.createElement("optgroup");
          function ngOptionsPostLink(scope, selectElement, attr, ctrls) {
            var selectCtrl = ctrls[0];
            var ngModelCtrl = ctrls[1];
            var multiple = attr.multiple;
            for (var i = 0, children = selectElement.children(), ii = children.length; i < ii; i++) {
              if (children[i].value === "") {
                selectCtrl.hasEmptyOption = true;
                selectCtrl.emptyOption = children.eq(i);
                break;
              }
            }
            selectElement.empty();
            var providedEmptyOption = !!selectCtrl.emptyOption;
            var unknownOption = jqLite(optionTemplate.cloneNode(false));
            unknownOption.val("?");
            var options;
            var ngOptions = parseOptionsExpression(attr.ngOptions, selectElement, scope);
            var listFragment = $document[0].createDocumentFragment();
            selectCtrl.generateUnknownOptionValue = function(val) {
              return "?";
            };
            if (!multiple) {
              selectCtrl.writeValue = function writeNgOptionsValue(value) {
                if (!options)
                  return;
                var selectedOption = selectElement[0].options[selectElement[0].selectedIndex];
                var option = options.getOptionFromViewValue(value);
                if (selectedOption)
                  selectedOption.removeAttribute("selected");
                if (option) {
                  if (selectElement[0].value !== option.selectValue) {
                    selectCtrl.removeUnknownOption();
                    selectElement[0].value = option.selectValue;
                    option.element.selected = true;
                  }
                  option.element.setAttribute("selected", "selected");
                } else {
                  selectCtrl.selectUnknownOrEmptyOption(value);
                }
              };
              selectCtrl.readValue = function readNgOptionsValue() {
                var selectedOption = options.selectValueMap[selectElement.val()];
                if (selectedOption && !selectedOption.disabled) {
                  selectCtrl.unselectEmptyOption();
                  selectCtrl.removeUnknownOption();
                  return options.getViewValueFromOption(selectedOption);
                }
                return null;
              };
              if (ngOptions.trackBy) {
                scope.$watch(
                  function() {
                    return ngOptions.getTrackByValue(ngModelCtrl.$viewValue);
                  },
                  function() {
                    ngModelCtrl.$render();
                  }
                );
              }
            } else {
              selectCtrl.writeValue = function writeNgOptionsMultiple(values) {
                if (!options)
                  return;
                var selectedOptions = values && values.map(getAndUpdateSelectedOption) || [];
                options.items.forEach(function(option) {
                  if (option.element.selected && !includes(selectedOptions, option)) {
                    option.element.selected = false;
                  }
                });
              };
              selectCtrl.readValue = function readNgOptionsMultiple() {
                var selectedValues = selectElement.val() || [], selections = [];
                forEach(selectedValues, function(value) {
                  var option = options.selectValueMap[value];
                  if (option && !option.disabled)
                    selections.push(options.getViewValueFromOption(option));
                });
                return selections;
              };
              if (ngOptions.trackBy) {
                scope.$watchCollection(function() {
                  if (isArray(ngModelCtrl.$viewValue)) {
                    return ngModelCtrl.$viewValue.map(function(value) {
                      return ngOptions.getTrackByValue(value);
                    });
                  }
                }, function() {
                  ngModelCtrl.$render();
                });
              }
            }
            if (providedEmptyOption) {
              $compile(selectCtrl.emptyOption)(scope);
              selectElement.prepend(selectCtrl.emptyOption);
              if (selectCtrl.emptyOption[0].nodeType === NODE_TYPE_COMMENT) {
                selectCtrl.hasEmptyOption = false;
                selectCtrl.registerOption = function(optionScope, optionEl) {
                  if (optionEl.val() === "") {
                    selectCtrl.hasEmptyOption = true;
                    selectCtrl.emptyOption = optionEl;
                    selectCtrl.emptyOption.removeClass("ng-scope");
                    ngModelCtrl.$render();
                    optionEl.on("$destroy", function() {
                      var needsRerender = selectCtrl.$isEmptyOptionSelected();
                      selectCtrl.hasEmptyOption = false;
                      selectCtrl.emptyOption = void 0;
                      if (needsRerender)
                        ngModelCtrl.$render();
                    });
                  }
                };
              } else {
                selectCtrl.emptyOption.removeClass("ng-scope");
              }
            }
            scope.$watchCollection(ngOptions.getWatchables, updateOptions);
            function addOptionElement(option, parent) {
              var optionElement = optionTemplate.cloneNode(false);
              parent.appendChild(optionElement);
              updateOptionElement(option, optionElement);
            }
            function getAndUpdateSelectedOption(viewValue) {
              var option = options.getOptionFromViewValue(viewValue);
              var element = option && option.element;
              if (element && !element.selected)
                element.selected = true;
              return option;
            }
            function updateOptionElement(option, element) {
              option.element = element;
              element.disabled = option.disabled;
              if (option.label !== element.label) {
                element.label = option.label;
                element.textContent = option.label;
              }
              element.value = option.selectValue;
            }
            function updateOptions() {
              var previousValue = options && selectCtrl.readValue();
              if (options) {
                for (var i2 = options.items.length - 1; i2 >= 0; i2--) {
                  var option = options.items[i2];
                  if (isDefined(option.group)) {
                    jqLiteRemove(option.element.parentNode);
                  } else {
                    jqLiteRemove(option.element);
                  }
                }
              }
              options = ngOptions.getOptions();
              var groupElementMap = {};
              options.items.forEach(function addOption(option2) {
                var groupElement;
                if (isDefined(option2.group)) {
                  groupElement = groupElementMap[option2.group];
                  if (!groupElement) {
                    groupElement = optGroupTemplate.cloneNode(false);
                    listFragment.appendChild(groupElement);
                    groupElement.label = option2.group === null ? "null" : option2.group;
                    groupElementMap[option2.group] = groupElement;
                  }
                  addOptionElement(option2, groupElement);
                } else {
                  addOptionElement(option2, listFragment);
                }
              });
              selectElement[0].appendChild(listFragment);
              ngModelCtrl.$render();
              if (!ngModelCtrl.$isEmpty(previousValue)) {
                var nextValue = selectCtrl.readValue();
                var isNotPrimitive = ngOptions.trackBy || multiple;
                if (isNotPrimitive ? !equals(previousValue, nextValue) : previousValue !== nextValue) {
                  ngModelCtrl.$setViewValue(nextValue);
                  ngModelCtrl.$render();
                }
              }
            }
          }
          return {
            restrict: "A",
            terminal: true,
            require: ["select", "ngModel"],
            link: {
              pre: function ngOptionsPreLink(scope, selectElement, attr, ctrls) {
                ctrls[0].registerOption = noop;
              },
              post: ngOptionsPostLink
            }
          };
        }];
        var ngPluralizeDirective = ["$locale", "$interpolate", "$log", function($locale, $interpolate, $log) {
          var BRACE = /{}/g, IS_WHEN = /^when(Minus)?(.+)$/;
          return {
            link: function(scope, element, attr) {
              var numberExp = attr.count, whenExp = attr.$attr.when && element.attr(attr.$attr.when), offset = attr.offset || 0, whens = scope.$eval(whenExp) || {}, whensExpFns = {}, startSymbol = $interpolate.startSymbol(), endSymbol = $interpolate.endSymbol(), braceReplacement = startSymbol + numberExp + "-" + offset + endSymbol, watchRemover = angular2.noop, lastCount;
              forEach(attr, function(expression, attributeName) {
                var tmpMatch = IS_WHEN.exec(attributeName);
                if (tmpMatch) {
                  var whenKey = (tmpMatch[1] ? "-" : "") + lowercase(tmpMatch[2]);
                  whens[whenKey] = element.attr(attr.$attr[attributeName]);
                }
              });
              forEach(whens, function(expression, key2) {
                whensExpFns[key2] = $interpolate(expression.replace(BRACE, braceReplacement));
              });
              scope.$watch(numberExp, function ngPluralizeWatchAction(newVal) {
                var count = parseFloat(newVal);
                var countIsNaN = isNumberNaN(count);
                if (!countIsNaN && !(count in whens)) {
                  count = $locale.pluralCat(count - offset);
                }
                if (count !== lastCount && !(countIsNaN && isNumberNaN(lastCount))) {
                  watchRemover();
                  var whenExpFn = whensExpFns[count];
                  if (isUndefined(whenExpFn)) {
                    if (newVal != null) {
                      $log.debug("ngPluralize: no rule defined for '" + count + "' in " + whenExp);
                    }
                    watchRemover = noop;
                    updateElementText();
                  } else {
                    watchRemover = scope.$watch(whenExpFn, updateElementText);
                  }
                  lastCount = count;
                }
              });
              function updateElementText(newText) {
                element.text(newText || "");
              }
            }
          };
        }];
        var ngRefMinErr = minErr("ngRef");
        var ngRefDirective = ["$parse", function($parse) {
          return {
            priority: -1,
            restrict: "A",
            compile: function(tElement, tAttrs) {
              var controllerName = directiveNormalize(nodeName_(tElement));
              var getter2 = $parse(tAttrs.ngRef);
              var setter = getter2.assign || function() {
                throw ngRefMinErr("nonassign", 'Expression in ngRef="{0}" is non-assignable!', tAttrs.ngRef);
              };
              return function(scope, element, attrs) {
                var refValue;
                if (attrs.hasOwnProperty("ngRefRead")) {
                  if (attrs.ngRefRead === "$element") {
                    refValue = element;
                  } else {
                    refValue = element.data("$" + attrs.ngRefRead + "Controller");
                    if (!refValue) {
                      throw ngRefMinErr(
                        "noctrl",
                        'The controller for ngRefRead="{0}" could not be found on ngRef="{1}"',
                        attrs.ngRefRead,
                        tAttrs.ngRef
                      );
                    }
                  }
                } else {
                  refValue = element.data("$" + controllerName + "Controller");
                }
                refValue = refValue || element;
                setter(scope, refValue);
                element.on("$destroy", function() {
                  if (getter2(scope) === refValue) {
                    setter(scope, null);
                  }
                });
              };
            }
          };
        }];
        var ngRepeatDirective = ["$parse", "$animate", "$compile", function($parse, $animate, $compile) {
          var NG_REMOVED = "$$NG_REMOVED";
          var ngRepeatMinErr = minErr("ngRepeat");
          var updateScope = function(scope, index, valueIdentifier, value, keyIdentifier, key2, arrayLength) {
            scope[valueIdentifier] = value;
            if (keyIdentifier)
              scope[keyIdentifier] = key2;
            scope.$index = index;
            scope.$first = index === 0;
            scope.$last = index === arrayLength - 1;
            scope.$middle = !(scope.$first || scope.$last);
            scope.$odd = !(scope.$even = (index & 1) === 0);
          };
          var getBlockStart = function(block) {
            return block.clone[0];
          };
          var getBlockEnd = function(block) {
            return block.clone[block.clone.length - 1];
          };
          var trackByIdArrayFn = function($scope, key2, value) {
            return hashKey(value);
          };
          var trackByIdObjFn = function($scope, key2) {
            return key2;
          };
          return {
            restrict: "A",
            multiElement: true,
            transclude: "element",
            priority: 1e3,
            terminal: true,
            $$tlb: true,
            compile: function ngRepeatCompile($element, $attr) {
              var expression = $attr.ngRepeat;
              var ngRepeatEndComment = $compile.$$createComment("end ngRepeat", expression);
              var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
              if (!match) {
                throw ngRepeatMinErr(
                  "iexp",
                  "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",
                  expression
                );
              }
              var lhs = match[1];
              var rhs = match[2];
              var aliasAs = match[3];
              var trackByExp = match[4];
              match = lhs.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/);
              if (!match) {
                throw ngRepeatMinErr(
                  "iidexp",
                  "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",
                  lhs
                );
              }
              var valueIdentifier = match[3] || match[1];
              var keyIdentifier = match[2];
              if (aliasAs && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs) || /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(aliasAs))) {
                throw ngRepeatMinErr(
                  "badident",
                  "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",
                  aliasAs
                );
              }
              var trackByIdExpFn;
              if (trackByExp) {
                var hashFnLocals = { $id: hashKey };
                var trackByExpGetter = $parse(trackByExp);
                trackByIdExpFn = function($scope, key2, value, index) {
                  if (keyIdentifier)
                    hashFnLocals[keyIdentifier] = key2;
                  hashFnLocals[valueIdentifier] = value;
                  hashFnLocals.$index = index;
                  return trackByExpGetter($scope, hashFnLocals);
                };
              }
              return function ngRepeatLink($scope, $element2, $attr2, ctrl, $transclude) {
                var lastBlockMap = createMap();
                $scope.$watchCollection(rhs, function ngRepeatAction(collection) {
                  var index, length, previousNode = $element2[0], nextNode, nextBlockMap = createMap(), collectionLength, key2, value, trackById, trackByIdFn, collectionKeys, block, nextBlockOrder, elementsToRemove;
                  if (aliasAs) {
                    $scope[aliasAs] = collection;
                  }
                  if (isArrayLike(collection)) {
                    collectionKeys = collection;
                    trackByIdFn = trackByIdExpFn || trackByIdArrayFn;
                  } else {
                    trackByIdFn = trackByIdExpFn || trackByIdObjFn;
                    collectionKeys = [];
                    for (var itemKey in collection) {
                      if (hasOwnProperty.call(collection, itemKey) && itemKey.charAt(0) !== "$") {
                        collectionKeys.push(itemKey);
                      }
                    }
                  }
                  collectionLength = collectionKeys.length;
                  nextBlockOrder = new Array(collectionLength);
                  for (index = 0; index < collectionLength; index++) {
                    key2 = collection === collectionKeys ? index : collectionKeys[index];
                    value = collection[key2];
                    trackById = trackByIdFn($scope, key2, value, index);
                    if (lastBlockMap[trackById]) {
                      block = lastBlockMap[trackById];
                      delete lastBlockMap[trackById];
                      nextBlockMap[trackById] = block;
                      nextBlockOrder[index] = block;
                    } else if (nextBlockMap[trackById]) {
                      forEach(nextBlockOrder, function(block2) {
                        if (block2 && block2.scope)
                          lastBlockMap[block2.id] = block2;
                      });
                      throw ngRepeatMinErr(
                        "dupes",
                        "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",
                        expression,
                        trackById,
                        value
                      );
                    } else {
                      nextBlockOrder[index] = { id: trackById, scope: void 0, clone: void 0 };
                      nextBlockMap[trackById] = true;
                    }
                  }
                  if (hashFnLocals) {
                    hashFnLocals[valueIdentifier] = void 0;
                  }
                  for (var blockKey in lastBlockMap) {
                    block = lastBlockMap[blockKey];
                    elementsToRemove = getBlockNodes(block.clone);
                    $animate.leave(elementsToRemove);
                    if (elementsToRemove[0].parentNode) {
                      for (index = 0, length = elementsToRemove.length; index < length; index++) {
                        elementsToRemove[index][NG_REMOVED] = true;
                      }
                    }
                    block.scope.$destroy();
                  }
                  for (index = 0; index < collectionLength; index++) {
                    key2 = collection === collectionKeys ? index : collectionKeys[index];
                    value = collection[key2];
                    block = nextBlockOrder[index];
                    if (block.scope) {
                      nextNode = previousNode;
                      do {
                        nextNode = nextNode.nextSibling;
                      } while (nextNode && nextNode[NG_REMOVED]);
                      if (getBlockStart(block) !== nextNode) {
                        $animate.move(getBlockNodes(block.clone), null, previousNode);
                      }
                      previousNode = getBlockEnd(block);
                      updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key2, collectionLength);
                    } else {
                      $transclude(function ngRepeatTransclude(clone, scope) {
                        block.scope = scope;
                        var endNode = ngRepeatEndComment.cloneNode(false);
                        clone[clone.length++] = endNode;
                        $animate.enter(clone, null, previousNode);
                        previousNode = endNode;
                        block.clone = clone;
                        nextBlockMap[block.id] = block;
                        updateScope(block.scope, index, valueIdentifier, value, keyIdentifier, key2, collectionLength);
                      });
                    }
                  }
                  lastBlockMap = nextBlockMap;
                });
              };
            }
          };
        }];
        var NG_HIDE_CLASS = "ng-hide";
        var NG_HIDE_IN_PROGRESS_CLASS = "ng-hide-animate";
        var ngShowDirective = ["$animate", function($animate) {
          return {
            restrict: "A",
            multiElement: true,
            link: function(scope, element, attr) {
              scope.$watch(attr.ngShow, function ngShowWatchAction(value) {
                $animate[value ? "removeClass" : "addClass"](element, NG_HIDE_CLASS, {
                  tempClasses: NG_HIDE_IN_PROGRESS_CLASS
                });
              });
            }
          };
        }];
        var ngHideDirective = ["$animate", function($animate) {
          return {
            restrict: "A",
            multiElement: true,
            link: function(scope, element, attr) {
              scope.$watch(attr.ngHide, function ngHideWatchAction(value) {
                $animate[value ? "addClass" : "removeClass"](element, NG_HIDE_CLASS, {
                  tempClasses: NG_HIDE_IN_PROGRESS_CLASS
                });
              });
            }
          };
        }];
        var ngStyleDirective = ngDirective(function(scope, element, attr) {
          scope.$watchCollection(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) {
            if (oldStyles && newStyles !== oldStyles) {
              forEach(oldStyles, function(val, style) {
                element.css(style, "");
              });
            }
            if (newStyles)
              element.css(newStyles);
          });
        });
        var ngSwitchDirective = ["$animate", "$compile", function($animate, $compile) {
          return {
            require: "ngSwitch",
            controller: ["$scope", function NgSwitchController() {
              this.cases = {};
            }],
            link: function(scope, element, attr, ngSwitchController) {
              var watchExpr = attr.ngSwitch || attr.on, selectedTranscludes = [], selectedElements = [], previousLeaveAnimations = [], selectedScopes = [];
              var spliceFactory = function(array, index) {
                return function(response) {
                  if (response !== false)
                    array.splice(index, 1);
                };
              };
              scope.$watch(watchExpr, function ngSwitchWatchAction(value) {
                var i, ii;
                while (previousLeaveAnimations.length) {
                  $animate.cancel(previousLeaveAnimations.pop());
                }
                for (i = 0, ii = selectedScopes.length; i < ii; ++i) {
                  var selected = getBlockNodes(selectedElements[i].clone);
                  selectedScopes[i].$destroy();
                  var runner = previousLeaveAnimations[i] = $animate.leave(selected);
                  runner.done(spliceFactory(previousLeaveAnimations, i));
                }
                selectedElements.length = 0;
                selectedScopes.length = 0;
                if (selectedTranscludes = ngSwitchController.cases["!" + value] || ngSwitchController.cases["?"]) {
                  forEach(selectedTranscludes, function(selectedTransclude) {
                    selectedTransclude.transclude(function(caseElement, selectedScope) {
                      selectedScopes.push(selectedScope);
                      var anchor = selectedTransclude.element;
                      caseElement[caseElement.length++] = $compile.$$createComment("end ngSwitchWhen");
                      var block = { clone: caseElement };
                      selectedElements.push(block);
                      $animate.enter(caseElement, anchor.parent(), anchor);
                    });
                  });
                }
              });
            }
          };
        }];
        var ngSwitchWhenDirective = ngDirective({
          transclude: "element",
          priority: 1200,
          require: "^ngSwitch",
          multiElement: true,
          link: function(scope, element, attrs, ctrl, $transclude) {
            var cases = attrs.ngSwitchWhen.split(attrs.ngSwitchWhenSeparator).sort().filter(
              function(element2, index, array) {
                return array[index - 1] !== element2;
              }
            );
            forEach(cases, function(whenCase) {
              ctrl.cases["!" + whenCase] = ctrl.cases["!" + whenCase] || [];
              ctrl.cases["!" + whenCase].push({ transclude: $transclude, element });
            });
          }
        });
        var ngSwitchDefaultDirective = ngDirective({
          transclude: "element",
          priority: 1200,
          require: "^ngSwitch",
          multiElement: true,
          link: function(scope, element, attr, ctrl, $transclude) {
            ctrl.cases["?"] = ctrl.cases["?"] || [];
            ctrl.cases["?"].push({ transclude: $transclude, element });
          }
        });
        var ngTranscludeMinErr = minErr("ngTransclude");
        var ngTranscludeDirective = ["$compile", function($compile) {
          return {
            restrict: "EAC",
            compile: function ngTranscludeCompile(tElement) {
              var fallbackLinkFn = $compile(tElement.contents());
              tElement.empty();
              return function ngTranscludePostLink($scope, $element, $attrs, controller, $transclude) {
                if (!$transclude) {
                  throw ngTranscludeMinErr(
                    "orphan",
                    "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",
                    startingTag($element)
                  );
                }
                if ($attrs.ngTransclude === $attrs.$attr.ngTransclude) {
                  $attrs.ngTransclude = "";
                }
                var slotName = $attrs.ngTransclude || $attrs.ngTranscludeSlot;
                $transclude(ngTranscludeCloneAttachFn, null, slotName);
                if (slotName && !$transclude.isSlotFilled(slotName)) {
                  useFallbackContent();
                }
                function ngTranscludeCloneAttachFn(clone, transcludedScope) {
                  if (clone.length && notWhitespace(clone)) {
                    $element.append(clone);
                  } else {
                    useFallbackContent();
                    transcludedScope.$destroy();
                  }
                }
                function useFallbackContent() {
                  fallbackLinkFn($scope, function(clone) {
                    $element.append(clone);
                  });
                }
                function notWhitespace(nodes) {
                  for (var i = 0, ii = nodes.length; i < ii; i++) {
                    var node = nodes[i];
                    if (node.nodeType !== NODE_TYPE_TEXT || node.nodeValue.trim()) {
                      return true;
                    }
                  }
                }
              };
            }
          };
        }];
        var scriptDirective = ["$templateCache", function($templateCache) {
          return {
            restrict: "E",
            terminal: true,
            compile: function(element, attr) {
              if (attr.type === "text/ng-template") {
                var templateUrl = attr.id, text = element[0].text;
                $templateCache.put(templateUrl, text);
              }
            }
          };
        }];
        var noopNgModelController = { $setViewValue: noop, $render: noop };
        function setOptionSelectedStatus(optionEl, value) {
          optionEl.prop("selected", value);
          optionEl.attr("selected", value);
        }
        var SelectController = ["$element", "$scope", function($element, $scope) {
          var self2 = this, optionsMap = new NgMap();
          self2.selectValueMap = {};
          self2.ngModelCtrl = noopNgModelController;
          self2.multiple = false;
          self2.unknownOption = jqLite(window2.document.createElement("option"));
          self2.hasEmptyOption = false;
          self2.emptyOption = void 0;
          self2.renderUnknownOption = function(val) {
            var unknownVal = self2.generateUnknownOptionValue(val);
            self2.unknownOption.val(unknownVal);
            $element.prepend(self2.unknownOption);
            setOptionSelectedStatus(self2.unknownOption, true);
            $element.val(unknownVal);
          };
          self2.updateUnknownOption = function(val) {
            var unknownVal = self2.generateUnknownOptionValue(val);
            self2.unknownOption.val(unknownVal);
            setOptionSelectedStatus(self2.unknownOption, true);
            $element.val(unknownVal);
          };
          self2.generateUnknownOptionValue = function(val) {
            return "? " + hashKey(val) + " ?";
          };
          self2.removeUnknownOption = function() {
            if (self2.unknownOption.parent())
              self2.unknownOption.remove();
          };
          self2.selectEmptyOption = function() {
            if (self2.emptyOption) {
              $element.val("");
              setOptionSelectedStatus(self2.emptyOption, true);
            }
          };
          self2.unselectEmptyOption = function() {
            if (self2.hasEmptyOption) {
              setOptionSelectedStatus(self2.emptyOption, false);
            }
          };
          $scope.$on("$destroy", function() {
            self2.renderUnknownOption = noop;
          });
          self2.readValue = function readSingleValue() {
            var val = $element.val();
            var realVal = val in self2.selectValueMap ? self2.selectValueMap[val] : val;
            if (self2.hasOption(realVal)) {
              return realVal;
            }
            return null;
          };
          self2.writeValue = function writeSingleValue(value) {
            var currentlySelectedOption = $element[0].options[$element[0].selectedIndex];
            if (currentlySelectedOption)
              setOptionSelectedStatus(jqLite(currentlySelectedOption), false);
            if (self2.hasOption(value)) {
              self2.removeUnknownOption();
              var hashedVal = hashKey(value);
              $element.val(hashedVal in self2.selectValueMap ? hashedVal : value);
              var selectedOption = $element[0].options[$element[0].selectedIndex];
              setOptionSelectedStatus(jqLite(selectedOption), true);
            } else {
              self2.selectUnknownOrEmptyOption(value);
            }
          };
          self2.addOption = function(value, element) {
            if (element[0].nodeType === NODE_TYPE_COMMENT)
              return;
            assertNotHasOwnProperty(value, '"option value"');
            if (value === "") {
              self2.hasEmptyOption = true;
              self2.emptyOption = element;
            }
            var count = optionsMap.get(value) || 0;
            optionsMap.set(value, count + 1);
            scheduleRender();
          };
          self2.removeOption = function(value) {
            var count = optionsMap.get(value);
            if (count) {
              if (count === 1) {
                optionsMap.delete(value);
                if (value === "") {
                  self2.hasEmptyOption = false;
                  self2.emptyOption = void 0;
                }
              } else {
                optionsMap.set(value, count - 1);
              }
            }
          };
          self2.hasOption = function(value) {
            return !!optionsMap.get(value);
          };
          self2.$hasEmptyOption = function() {
            return self2.hasEmptyOption;
          };
          self2.$isUnknownOptionSelected = function() {
            return $element[0].options[0] === self2.unknownOption[0];
          };
          self2.$isEmptyOptionSelected = function() {
            return self2.hasEmptyOption && $element[0].options[$element[0].selectedIndex] === self2.emptyOption[0];
          };
          self2.selectUnknownOrEmptyOption = function(value) {
            if (value == null && self2.emptyOption) {
              self2.removeUnknownOption();
              self2.selectEmptyOption();
            } else if (self2.unknownOption.parent().length) {
              self2.updateUnknownOption(value);
            } else {
              self2.renderUnknownOption(value);
            }
          };
          var renderScheduled = false;
          function scheduleRender() {
            if (renderScheduled)
              return;
            renderScheduled = true;
            $scope.$$postDigest(function() {
              renderScheduled = false;
              self2.ngModelCtrl.$render();
            });
          }
          var updateScheduled = false;
          function scheduleViewValueUpdate(renderAfter) {
            if (updateScheduled)
              return;
            updateScheduled = true;
            $scope.$$postDigest(function() {
              if ($scope.$$destroyed)
                return;
              updateScheduled = false;
              self2.ngModelCtrl.$setViewValue(self2.readValue());
              if (renderAfter)
                self2.ngModelCtrl.$render();
            });
          }
          self2.registerOption = function(optionScope, optionElement, optionAttrs, interpolateValueFn, interpolateTextFn) {
            if (optionAttrs.$attr.ngValue) {
              var oldVal, hashedVal;
              optionAttrs.$observe("value", function valueAttributeObserveAction(newVal) {
                var removal;
                var previouslySelected = optionElement.prop("selected");
                if (isDefined(hashedVal)) {
                  self2.removeOption(oldVal);
                  delete self2.selectValueMap[hashedVal];
                  removal = true;
                }
                hashedVal = hashKey(newVal);
                oldVal = newVal;
                self2.selectValueMap[hashedVal] = newVal;
                self2.addOption(newVal, optionElement);
                optionElement.attr("value", hashedVal);
                if (removal && previouslySelected) {
                  scheduleViewValueUpdate();
                }
              });
            } else if (interpolateValueFn) {
              optionAttrs.$observe("value", function valueAttributeObserveAction(newVal) {
                self2.readValue();
                var removal;
                var previouslySelected = optionElement.prop("selected");
                if (isDefined(oldVal)) {
                  self2.removeOption(oldVal);
                  removal = true;
                }
                oldVal = newVal;
                self2.addOption(newVal, optionElement);
                if (removal && previouslySelected) {
                  scheduleViewValueUpdate();
                }
              });
            } else if (interpolateTextFn) {
              optionScope.$watch(interpolateTextFn, function interpolateWatchAction(newVal, oldVal2) {
                optionAttrs.$set("value", newVal);
                var previouslySelected = optionElement.prop("selected");
                if (oldVal2 !== newVal) {
                  self2.removeOption(oldVal2);
                }
                self2.addOption(newVal, optionElement);
                if (oldVal2 && previouslySelected) {
                  scheduleViewValueUpdate();
                }
              });
            } else {
              self2.addOption(optionAttrs.value, optionElement);
            }
            optionAttrs.$observe("disabled", function(newVal) {
              if (newVal === "true" || newVal && optionElement.prop("selected")) {
                if (self2.multiple) {
                  scheduleViewValueUpdate(true);
                } else {
                  self2.ngModelCtrl.$setViewValue(null);
                  self2.ngModelCtrl.$render();
                }
              }
            });
            optionElement.on("$destroy", function() {
              var currentValue = self2.readValue();
              var removeValue = optionAttrs.value;
              self2.removeOption(removeValue);
              scheduleRender();
              if (self2.multiple && currentValue && currentValue.indexOf(removeValue) !== -1 || currentValue === removeValue) {
                scheduleViewValueUpdate(true);
              }
            });
          };
        }];
        var selectDirective = function() {
          return {
            restrict: "E",
            require: ["select", "?ngModel"],
            controller: SelectController,
            priority: 1,
            link: {
              pre: selectPreLink,
              post: selectPostLink
            }
          };
          function selectPreLink(scope, element, attr, ctrls) {
            var selectCtrl = ctrls[0];
            var ngModelCtrl = ctrls[1];
            if (!ngModelCtrl) {
              selectCtrl.registerOption = noop;
              return;
            }
            selectCtrl.ngModelCtrl = ngModelCtrl;
            element.on("change", function() {
              selectCtrl.removeUnknownOption();
              scope.$apply(function() {
                ngModelCtrl.$setViewValue(selectCtrl.readValue());
              });
            });
            if (attr.multiple) {
              selectCtrl.multiple = true;
              selectCtrl.readValue = function readMultipleValue() {
                var array = [];
                forEach(element.find("option"), function(option) {
                  if (option.selected && !option.disabled) {
                    var val = option.value;
                    array.push(val in selectCtrl.selectValueMap ? selectCtrl.selectValueMap[val] : val);
                  }
                });
                return array;
              };
              selectCtrl.writeValue = function writeMultipleValue(value) {
                forEach(element.find("option"), function(option) {
                  var shouldBeSelected = !!value && (includes(value, option.value) || includes(value, selectCtrl.selectValueMap[option.value]));
                  var currentlySelected = option.selected;
                  if (shouldBeSelected !== currentlySelected) {
                    setOptionSelectedStatus(jqLite(option), shouldBeSelected);
                  }
                });
              };
              var lastView, lastViewRef = NaN;
              scope.$watch(function selectMultipleWatch() {
                if (lastViewRef === ngModelCtrl.$viewValue && !equals(lastView, ngModelCtrl.$viewValue)) {
                  lastView = shallowCopy(ngModelCtrl.$viewValue);
                  ngModelCtrl.$render();
                }
                lastViewRef = ngModelCtrl.$viewValue;
              });
              ngModelCtrl.$isEmpty = function(value) {
                return !value || value.length === 0;
              };
            }
          }
          function selectPostLink(scope, element, attrs, ctrls) {
            var ngModelCtrl = ctrls[1];
            if (!ngModelCtrl)
              return;
            var selectCtrl = ctrls[0];
            ngModelCtrl.$render = function() {
              selectCtrl.writeValue(ngModelCtrl.$viewValue);
            };
          }
        };
        var optionDirective = ["$interpolate", function($interpolate) {
          return {
            restrict: "E",
            priority: 100,
            compile: function(element, attr) {
              var interpolateValueFn, interpolateTextFn;
              if (isDefined(attr.ngValue)) {
              } else if (isDefined(attr.value)) {
                interpolateValueFn = $interpolate(attr.value, true);
              } else {
                interpolateTextFn = $interpolate(element.text(), true);
                if (!interpolateTextFn) {
                  attr.$set("value", element.text());
                }
              }
              return function(scope, element2, attr2) {
                var selectCtrlName = "$selectController", parent = element2.parent(), selectCtrl = parent.data(selectCtrlName) || parent.parent().data(selectCtrlName);
                if (selectCtrl) {
                  selectCtrl.registerOption(scope, element2, attr2, interpolateValueFn, interpolateTextFn);
                }
              };
            }
          };
        }];
        var requiredDirective = ["$parse", function($parse) {
          return {
            restrict: "A",
            require: "?ngModel",
            link: function(scope, elm, attr, ctrl) {
              if (!ctrl)
                return;
              var value = attr.hasOwnProperty("required") || $parse(attr.ngRequired)(scope);
              if (!attr.ngRequired) {
                attr.required = true;
              }
              ctrl.$validators.required = function(modelValue, viewValue) {
                return !value || !ctrl.$isEmpty(viewValue);
              };
              attr.$observe("required", function(newVal) {
                if (value !== newVal) {
                  value = newVal;
                  ctrl.$validate();
                }
              });
            }
          };
        }];
        var patternDirective = ["$parse", function($parse) {
          return {
            restrict: "A",
            require: "?ngModel",
            compile: function(tElm, tAttr) {
              var patternExp;
              var parseFn;
              if (tAttr.ngPattern) {
                patternExp = tAttr.ngPattern;
                if (tAttr.ngPattern.charAt(0) === "/" && REGEX_STRING_REGEXP.test(tAttr.ngPattern)) {
                  parseFn = function() {
                    return tAttr.ngPattern;
                  };
                } else {
                  parseFn = $parse(tAttr.ngPattern);
                }
              }
              return function(scope, elm, attr, ctrl) {
                if (!ctrl)
                  return;
                var attrVal = attr.pattern;
                if (attr.ngPattern) {
                  attrVal = parseFn(scope);
                } else {
                  patternExp = attr.pattern;
                }
                var regexp = parsePatternAttr(attrVal, patternExp, elm);
                attr.$observe("pattern", function(newVal) {
                  var oldRegexp = regexp;
                  regexp = parsePatternAttr(newVal, patternExp, elm);
                  if ((oldRegexp && oldRegexp.toString()) !== (regexp && regexp.toString())) {
                    ctrl.$validate();
                  }
                });
                ctrl.$validators.pattern = function(modelValue, viewValue) {
                  return ctrl.$isEmpty(viewValue) || isUndefined(regexp) || regexp.test(viewValue);
                };
              };
            }
          };
        }];
        var maxlengthDirective = ["$parse", function($parse) {
          return {
            restrict: "A",
            require: "?ngModel",
            link: function(scope, elm, attr, ctrl) {
              if (!ctrl)
                return;
              var maxlength = attr.maxlength || $parse(attr.ngMaxlength)(scope);
              var maxlengthParsed = parseLength(maxlength);
              attr.$observe("maxlength", function(value) {
                if (maxlength !== value) {
                  maxlengthParsed = parseLength(value);
                  maxlength = value;
                  ctrl.$validate();
                }
              });
              ctrl.$validators.maxlength = function(modelValue, viewValue) {
                return maxlengthParsed < 0 || ctrl.$isEmpty(viewValue) || viewValue.length <= maxlengthParsed;
              };
            }
          };
        }];
        var minlengthDirective = ["$parse", function($parse) {
          return {
            restrict: "A",
            require: "?ngModel",
            link: function(scope, elm, attr, ctrl) {
              if (!ctrl)
                return;
              var minlength = attr.minlength || $parse(attr.ngMinlength)(scope);
              var minlengthParsed = parseLength(minlength) || -1;
              attr.$observe("minlength", function(value) {
                if (minlength !== value) {
                  minlengthParsed = parseLength(value) || -1;
                  minlength = value;
                  ctrl.$validate();
                }
              });
              ctrl.$validators.minlength = function(modelValue, viewValue) {
                return ctrl.$isEmpty(viewValue) || viewValue.length >= minlengthParsed;
              };
            }
          };
        }];
        function parsePatternAttr(regex, patternExp, elm) {
          if (!regex)
            return void 0;
          if (isString(regex)) {
            regex = new RegExp("^" + regex + "$");
          }
          if (!regex.test) {
            throw minErr("ngPattern")(
              "noregexp",
              "Expected {0} to be a RegExp but was {1}. Element: {2}",
              patternExp,
              regex,
              startingTag(elm)
            );
          }
          return regex;
        }
        function parseLength(val) {
          var intVal = toInt(val);
          return isNumberNaN(intVal) ? -1 : intVal;
        }
        if (window2.angular.bootstrap) {
          if (window2.console) {
            console.log("WARNING: Tried to load AngularJS more than once.");
          }
          return;
        }
        bindJQuery();
        publishExternalAPI(angular2);
        angular2.module("ngLocale", [], ["$provide", function($provide) {
          var PLURAL_CATEGORY = { ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other" };
          function getDecimals(n2) {
            n2 = n2 + "";
            var i = n2.indexOf(".");
            return i == -1 ? 0 : n2.length - i - 1;
          }
          function getVF(n2, opt_precision) {
            var v = opt_precision;
            if (void 0 === v) {
              v = Math.min(getDecimals(n2), 3);
            }
            var base = Math.pow(10, v);
            var f = (n2 * base | 0) % base;
            return { v, f };
          }
          $provide.value("$locale", {
            "DATETIME_FORMATS": {
              "AMPMS": [
                "AM",
                "PM"
              ],
              "DAY": [
                "Sunday",
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday",
                "Saturday"
              ],
              "ERANAMES": [
                "Before Christ",
                "Anno Domini"
              ],
              "ERAS": [
                "BC",
                "AD"
              ],
              "FIRSTDAYOFWEEK": 6,
              "MONTH": [
                "January",
                "February",
                "March",
                "April",
                "May",
                "June",
                "July",
                "August",
                "September",
                "October",
                "November",
                "December"
              ],
              "SHORTDAY": [
                "Sun",
                "Mon",
                "Tue",
                "Wed",
                "Thu",
                "Fri",
                "Sat"
              ],
              "SHORTMONTH": [
                "Jan",
                "Feb",
                "Mar",
                "Apr",
                "May",
                "Jun",
                "Jul",
                "Aug",
                "Sep",
                "Oct",
                "Nov",
                "Dec"
              ],
              "STANDALONEMONTH": [
                "January",
                "February",
                "March",
                "April",
                "May",
                "June",
                "July",
                "August",
                "September",
                "October",
                "November",
                "December"
              ],
              "WEEKENDRANGE": [
                5,
                6
              ],
              "fullDate": "EEEE, MMMM d, y",
              "longDate": "MMMM d, y",
              "medium": "MMM d, y h:mm:ss a",
              "mediumDate": "MMM d, y",
              "mediumTime": "h:mm:ss a",
              "short": "M/d/yy h:mm a",
              "shortDate": "M/d/yy",
              "shortTime": "h:mm a"
            },
            "NUMBER_FORMATS": {
              "CURRENCY_SYM": "$",
              "DECIMAL_SEP": ".",
              "GROUP_SEP": ",",
              "PATTERNS": [
                {
                  "gSize": 3,
                  "lgSize": 3,
                  "maxFrac": 3,
                  "minFrac": 0,
                  "minInt": 1,
                  "negPre": "-",
                  "negSuf": "",
                  "posPre": "",
                  "posSuf": ""
                },
                {
                  "gSize": 3,
                  "lgSize": 3,
                  "maxFrac": 2,
                  "minFrac": 2,
                  "minInt": 1,
                  "negPre": "-\xA4",
                  "negSuf": "",
                  "posPre": "\xA4",
                  "posSuf": ""
                }
              ]
            },
            "id": "en-us",
            "localeID": "en_US",
            "pluralCat": function(n2, opt_precision) {
              var i = n2 | 0;
              var vf = getVF(n2, opt_precision);
              if (i == 1 && vf.v == 0) {
                return PLURAL_CATEGORY.ONE;
              }
              return PLURAL_CATEGORY.OTHER;
            }
          });
        }]);
        jqLite(function() {
          angularInit(window2.document, bootstrap);
        });
      })(window);
      !window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend(window.angular.element("<style>").text('@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}'));
    }
  });

  // dep-runtime/node_modules/angular/index.js
  var require_angular2 = __commonJS({
    "dep-runtime/node_modules/angular/index.js"(exports2, module2) {
      require_angular();
      module2.exports = angular;
    }
  });

  // dep-runtime/node_modules/ng-debottle/dist/ng-debottle.js
  var require_ng_debottle = __commonJS({
    "dep-runtime/node_modules/ng-debottle/dist/ng-debottle.js"(exports2, module2) {
      (function(__root, __factory) {
        if (typeof define === "function" && define.amd) {
          define("ng-debottle", ["angular"], __factory);
        } else if (typeof exports2 === "object") {
          module2.exports = __factory(require_angular2());
        } else {
          __root["ng-debottle"] = __factory(angular);
        }
      })(exports2, function(__small$_mod_0) {
        var exports3 = {};
        var __small$_1 = function() {
          var exports4 = {};
          function apply2(self2, fn, args) {
            var selfless = self2 === void 0 || self2 === null;
            var length = args ? args.length : 0;
            switch (length) {
              case 0:
                return selfless ? fn() : fn.call(self2);
              case 1:
                return selfless ? fn(args[0]) : fn.call(self2, args[0]);
              case 2:
                return selfless ? fn(args[0], args[1]) : fn.call(self2, args[0], args[1]);
              case 3:
                return selfless ? fn(args[0], args[1], args[2]) : fn.call(self2, args[0], args[1], args[2]);
              case 4:
                return selfless ? fn(args[0], args[1], args[2], args[3]) : fn.call(self2, args[0], args[1], args[2], args[3]);
              case 5:
                return selfless ? fn(args[0], args[1], args[2], args[3], args[4]) : fn.call(self2, args[0], args[1], args[2], args[3], args[4]);
              case 6:
                return selfless ? fn(args[0], args[1], args[2], args[3], args[4], args[5]) : fn.call(self2, args[0], args[1], args[2], args[3], args[4], args[5]);
              case 7:
                return selfless ? fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6]) : fn.call(self2, args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
              default:
                return selfless ? fn.apply(null, args) : fn.apply(self2, args);
            }
          }
          exports4 = apply2;
          return exports4;
        }();
        "use strict";
        var angular2 = __small$_mod_0;
        var apply = __small$_1;
        var debottle = function() {
          var exports4 = {};
          var apply2 = __small$_1;
          function Debottle2(delay) {
            this.$delay = delay;
            this.$cancel = function() {
              return clearTimeout(this.$timeout);
            };
          }
          function debounce(fn, delay, cb) {
            if (arguments.length === 2 && typeof delay === "function") {
              cb = delay;
              delay = void 0;
            }
            var self2 = debouncedFn;
            Debottle2.call(self2, delay);
            function debouncedFn() {
              var args = arguments;
              if (self2.$timeout !== void 0)
                self2.$cancel();
              self2.$timeout = setTimeout(function() {
                if (typeof cb !== "function")
                  return apply2(null, fn, args);
                try {
                  cb(null, apply2(null, fn, args));
                } catch (e) {
                  cb(e);
                }
              }, self2.$delay);
            }
            ;
            return self2;
          }
          function throttle(fn, delay, cb) {
            if (arguments.length === 2 && typeof delay === "function") {
              cb = delay;
              delay = void 0;
            }
            var self2 = throttledFn;
            Debottle2.call(self2, delay);
            function throttledFn() {
              var args = arguments;
              if (self2.$timeout !== void 0)
                return;
              self2.$timeout = setTimeout(function() {
                self2.$timeout = void 0;
              }, self2.$delay);
              if (typeof cb !== "function")
                return apply2(null, fn, args);
              try {
                cb(null, apply2(null, fn, args));
              } catch (e) {
                cb(e);
              }
            }
            ;
            return self2;
          }
          exports4.debounce = debounce;
          exports4.throttle = throttle;
          return exports4;
        }();
        function Debottle($timeout, delay) {
          this.$delay = delay;
          this.$cancel = function() {
            return $timeout.cancel(this.$timeout);
          };
          this.$flush = function(delay2) {
            return this.$timeout.flush(delay2);
          };
        }
        var ngDebottle = angular2.module("ngDebottle", []).constant("debounce", debottle.debounce).constant("throttle", debottle.throttle).factory("$debounce", ["$timeout", function($timeout) {
          return function(fn, delay, invokeApply) {
            var self2 = debouncedFn;
            Debottle.call(self2, $timeout, delay);
            function debouncedFn() {
              var args = arguments;
              self2.$cancel();
              return self2.$timeout = $timeout(function() {
                return apply(null, fn, args);
              }, self2.$delay, invokeApply);
            }
            return self2;
          };
        }]).factory("$throttle", ["$timeout", "$q", function($timeout, $q) {
          return function(fn, delay, invokeApply) {
            var self2 = throttledFn;
            Debottle.call(self2, $timeout, delay);
            function throttledFn() {
              var args = arguments;
              if (!self2.$timeout || self2.$timeout.$$state.status > 0) {
                var fnResultPromise = $q.when(apply(null, fn, args));
                self2.$timeout = $timeout(function() {
                  return fnResultPromise;
                }, self2.$delay, invokeApply);
              }
              return fnResultPromise || self2.$timeout;
            }
            return self2;
          };
        }]);
        exports3 = ngDebottle.name;
        return exports3;
      });
    }
  });

  // dep-runtime/node_modules/lodash/lodash.min.js
  var require_lodash_min = __commonJS({
    "dep-runtime/node_modules/lodash/lodash.min.js"(exports2, module2) {
      (function() {
        function n2(n3, t2, r2) {
          switch (r2.length) {
            case 0:
              return n3.call(t2);
            case 1:
              return n3.call(t2, r2[0]);
            case 2:
              return n3.call(t2, r2[0], r2[1]);
            case 3:
              return n3.call(t2, r2[0], r2[1], r2[2]);
          }
          return n3.apply(t2, r2);
        }
        function t(n3, t2, r2, e2) {
          for (var u2 = -1, i2 = null == n3 ? 0 : n3.length; ++u2 < i2; ) {
            var o2 = n3[u2];
            t2(e2, o2, r2(o2), n3);
          }
          return e2;
        }
        function r(n3, t2) {
          for (var r2 = -1, e2 = null == n3 ? 0 : n3.length; ++r2 < e2 && t2(n3[r2], r2, n3) !== false; )
            ;
          return n3;
        }
        function e(n3, t2) {
          for (var r2 = null == n3 ? 0 : n3.length; r2-- && t2(n3[r2], r2, n3) !== false; )
            ;
          return n3;
        }
        function u(n3, t2) {
          for (var r2 = -1, e2 = null == n3 ? 0 : n3.length; ++r2 < e2; )
            if (!t2(n3[r2], r2, n3))
              return false;
          return true;
        }
        function i(n3, t2) {
          for (var r2 = -1, e2 = null == n3 ? 0 : n3.length, u2 = 0, i2 = []; ++r2 < e2; ) {
            var o2 = n3[r2];
            t2(o2, r2, n3) && (i2[u2++] = o2);
          }
          return i2;
        }
        function o(n3, t2) {
          return !!(null == n3 ? 0 : n3.length) && y(n3, t2, 0) > -1;
        }
        function f(n3, t2, r2) {
          for (var e2 = -1, u2 = null == n3 ? 0 : n3.length; ++e2 < u2; )
            if (r2(t2, n3[e2]))
              return true;
          return false;
        }
        function c(n3, t2) {
          for (var r2 = -1, e2 = null == n3 ? 0 : n3.length, u2 = Array(e2); ++r2 < e2; )
            u2[r2] = t2(n3[r2], r2, n3);
          return u2;
        }
        function a(n3, t2) {
          for (var r2 = -1, e2 = t2.length, u2 = n3.length; ++r2 < e2; )
            n3[u2 + r2] = t2[r2];
          return n3;
        }
        function l(n3, t2, r2, e2) {
          var u2 = -1, i2 = null == n3 ? 0 : n3.length;
          for (e2 && i2 && (r2 = n3[++u2]); ++u2 < i2; )
            r2 = t2(r2, n3[u2], u2, n3);
          return r2;
        }
        function s2(n3, t2, r2, e2) {
          var u2 = null == n3 ? 0 : n3.length;
          for (e2 && u2 && (r2 = n3[--u2]); u2--; )
            r2 = t2(r2, n3[u2], u2, n3);
          return r2;
        }
        function h2(n3, t2) {
          for (var r2 = -1, e2 = null == n3 ? 0 : n3.length; ++r2 < e2; )
            if (t2(n3[r2], r2, n3))
              return true;
          return false;
        }
        function p(n3) {
          return n3.split("");
        }
        function _2(n3) {
          return n3.match($t) || [];
        }
        function v(n3, t2, r2) {
          var e2;
          return r2(n3, function(n4, r3, u2) {
            if (t2(n4, r3, u2))
              return e2 = r3, false;
          }), e2;
        }
        function g(n3, t2, r2, e2) {
          for (var u2 = n3.length, i2 = r2 + (e2 ? 1 : -1); e2 ? i2-- : ++i2 < u2; )
            if (t2(n3[i2], i2, n3))
              return i2;
          return -1;
        }
        function y(n3, t2, r2) {
          return t2 === t2 ? Z(n3, t2, r2) : g(n3, b, r2);
        }
        function d(n3, t2, r2, e2) {
          for (var u2 = r2 - 1, i2 = n3.length; ++u2 < i2; )
            if (e2(n3[u2], t2))
              return u2;
          return -1;
        }
        function b(n3) {
          return n3 !== n3;
        }
        function w2(n3, t2) {
          var r2 = null == n3 ? 0 : n3.length;
          return r2 ? k(n3, t2) / r2 : Cn;
        }
        function m(n3) {
          return function(t2) {
            return null == t2 ? X : t2[n3];
          };
        }
        function x(n3) {
          return function(t2) {
            return null == n3 ? X : n3[t2];
          };
        }
        function j(n3, t2, r2, e2, u2) {
          return u2(n3, function(n4, u3, i2) {
            r2 = e2 ? (e2 = false, n4) : t2(r2, n4, u3, i2);
          }), r2;
        }
        function A(n3, t2) {
          var r2 = n3.length;
          for (n3.sort(t2); r2--; )
            n3[r2] = n3[r2].value;
          return n3;
        }
        function k(n3, t2) {
          for (var r2, e2 = -1, u2 = n3.length; ++e2 < u2; ) {
            var i2 = t2(n3[e2]);
            i2 !== X && (r2 = r2 === X ? i2 : r2 + i2);
          }
          return r2;
        }
        function O(n3, t2) {
          for (var r2 = -1, e2 = Array(n3); ++r2 < n3; )
            e2[r2] = t2(r2);
          return e2;
        }
        function I(n3, t2) {
          return c(t2, function(t3) {
            return [t3, n3[t3]];
          });
        }
        function R(n3) {
          return n3 ? n3.slice(0, H(n3) + 1).replace(Lt, "") : n3;
        }
        function z(n3) {
          return function(t2) {
            return n3(t2);
          };
        }
        function E(n3, t2) {
          return c(t2, function(t3) {
            return n3[t3];
          });
        }
        function S(n3, t2) {
          return n3.has(t2);
        }
        function W(n3, t2) {
          for (var r2 = -1, e2 = n3.length; ++r2 < e2 && y(t2, n3[r2], 0) > -1; )
            ;
          return r2;
        }
        function L(n3, t2) {
          for (var r2 = n3.length; r2-- && y(t2, n3[r2], 0) > -1; )
            ;
          return r2;
        }
        function C(n3, t2) {
          for (var r2 = n3.length, e2 = 0; r2--; )
            n3[r2] === t2 && ++e2;
          return e2;
        }
        function U(n3) {
          return "\\" + Yr[n3];
        }
        function B(n3, t2) {
          return null == n3 ? X : n3[t2];
        }
        function T(n3) {
          return Nr.test(n3);
        }
        function $2(n3) {
          return Pr.test(n3);
        }
        function D(n3) {
          for (var t2, r2 = []; !(t2 = n3.next()).done; )
            r2.push(t2.value);
          return r2;
        }
        function M(n3) {
          var t2 = -1, r2 = Array(n3.size);
          return n3.forEach(function(n4, e2) {
            r2[++t2] = [e2, n4];
          }), r2;
        }
        function F(n3, t2) {
          return function(r2) {
            return n3(t2(r2));
          };
        }
        function N(n3, t2) {
          for (var r2 = -1, e2 = n3.length, u2 = 0, i2 = []; ++r2 < e2; ) {
            var o2 = n3[r2];
            o2 !== t2 && o2 !== cn || (n3[r2] = cn, i2[u2++] = r2);
          }
          return i2;
        }
        function P(n3) {
          var t2 = -1, r2 = Array(n3.size);
          return n3.forEach(function(n4) {
            r2[++t2] = n4;
          }), r2;
        }
        function q(n3) {
          var t2 = -1, r2 = Array(n3.size);
          return n3.forEach(function(n4) {
            r2[++t2] = [n4, n4];
          }), r2;
        }
        function Z(n3, t2, r2) {
          for (var e2 = r2 - 1, u2 = n3.length; ++e2 < u2; )
            if (n3[e2] === t2)
              return e2;
          return -1;
        }
        function K(n3, t2, r2) {
          for (var e2 = r2 + 1; e2--; )
            if (n3[e2] === t2)
              return e2;
          return e2;
        }
        function V(n3) {
          return T(n3) ? J(n3) : _e(n3);
        }
        function G(n3) {
          return T(n3) ? Y(n3) : p(n3);
        }
        function H(n3) {
          for (var t2 = n3.length; t2-- && Ct.test(n3.charAt(t2)); )
            ;
          return t2;
        }
        function J(n3) {
          for (var t2 = Mr.lastIndex = 0; Mr.test(n3); )
            ++t2;
          return t2;
        }
        function Y(n3) {
          return n3.match(Mr) || [];
        }
        function Q(n3) {
          return n3.match(Fr) || [];
        }
        var X, nn = "4.17.21", tn = 200, rn = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", en = "Expected a function", un = "Invalid `variable` option passed into `_.template`", on = "__lodash_hash_undefined__", fn = 500, cn = "__lodash_placeholder__", an = 1, ln = 2, sn = 4, hn = 1, pn = 2, _n = 1, vn = 2, gn = 4, yn = 8, dn = 16, bn = 32, wn = 64, mn = 128, xn = 256, jn = 512, An = 30, kn = "...", On = 800, In = 16, Rn = 1, zn = 2, En = 3, Sn = 1 / 0, Wn = 9007199254740991, Ln = 17976931348623157e292, Cn = NaN, Un = 4294967295, Bn = Un - 1, Tn = Un >>> 1, $n = [["ary", mn], ["bind", _n], ["bindKey", vn], ["curry", yn], ["curryRight", dn], ["flip", jn], ["partial", bn], ["partialRight", wn], ["rearg", xn]], Dn = "[object Arguments]", Mn = "[object Array]", Fn = "[object AsyncFunction]", Nn = "[object Boolean]", Pn = "[object Date]", qn = "[object DOMException]", Zn = "[object Error]", Kn = "[object Function]", Vn = "[object GeneratorFunction]", Gn = "[object Map]", Hn = "[object Number]", Jn = "[object Null]", Yn = "[object Object]", Qn = "[object Promise]", Xn = "[object Proxy]", nt = "[object RegExp]", tt = "[object Set]", rt = "[object String]", et = "[object Symbol]", ut = "[object Undefined]", it = "[object WeakMap]", ot = "[object WeakSet]", ft = "[object ArrayBuffer]", ct = "[object DataView]", at = "[object Float32Array]", lt = "[object Float64Array]", st = "[object Int8Array]", ht = "[object Int16Array]", pt = "[object Int32Array]", _t = "[object Uint8Array]", vt = "[object Uint8ClampedArray]", gt = "[object Uint16Array]", yt = "[object Uint32Array]", dt = /\b__p \+= '';/g, bt = /\b(__p \+=) '' \+/g, wt = /(__e\(.*?\)|\b__t\)) \+\n'';/g, mt = /&(?:amp|lt|gt|quot|#39);/g, xt = /[&<>"']/g, jt = RegExp(mt.source), At = RegExp(xt.source), kt = /<%-([\s\S]+?)%>/g, Ot = /<%([\s\S]+?)%>/g, It = /<%=([\s\S]+?)%>/g, Rt = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, zt = /^\w*$/, Et = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, St = /[\\^$.*+?()[\]{}|]/g, Wt = RegExp(St.source), Lt = /^\s+/, Ct = /\s/, Ut = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, Bt = /\{\n\/\* \[wrapped with (.+)\] \*/, Tt = /,? & /, $t = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, Dt = /[()=,{}\[\]\/\s]/, Mt = /\\(\\)?/g, Ft = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, Nt = /\w*$/, Pt = /^[-+]0x[0-9a-f]+$/i, qt = /^0b[01]+$/i, Zt = /^\[object .+?Constructor\]$/, Kt = /^0o[0-7]+$/i, Vt = /^(?:0|[1-9]\d*)$/, Gt = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, Ht = /($^)/, Jt = /['\n\r\u2028\u2029\\]/g, Yt = "\\ud800-\\udfff", Qt = "\\u0300-\\u036f", Xt = "\\ufe20-\\ufe2f", nr = "\\u20d0-\\u20ff", tr = Qt + Xt + nr, rr = "\\u2700-\\u27bf", er = "a-z\\xdf-\\xf6\\xf8-\\xff", ur = "\\xac\\xb1\\xd7\\xf7", ir = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", or = "\\u2000-\\u206f", fr = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", cr = "A-Z\\xc0-\\xd6\\xd8-\\xde", ar = "\\ufe0e\\ufe0f", lr = ur + ir + or + fr, sr = "['\u2019]", hr = "[" + Yt + "]", pr = "[" + lr + "]", _r = "[" + tr + "]", vr = "\\d+", gr = "[" + rr + "]", yr = "[" + er + "]", dr = "[^" + Yt + lr + vr + rr + er + cr + "]", br = "\\ud83c[\\udffb-\\udfff]", wr = "(?:" + _r + "|" + br + ")", mr = "[^" + Yt + "]", xr = "(?:\\ud83c[\\udde6-\\uddff]){2}", jr = "[\\ud800-\\udbff][\\udc00-\\udfff]", Ar = "[" + cr + "]", kr = "\\u200d", Or = "(?:" + yr + "|" + dr + ")", Ir = "(?:" + Ar + "|" + dr + ")", Rr = "(?:" + sr + "(?:d|ll|m|re|s|t|ve))?", zr = "(?:" + sr + "(?:D|LL|M|RE|S|T|VE))?", Er = wr + "?", Sr = "[" + ar + "]?", Wr = "(?:" + kr + "(?:" + [mr, xr, jr].join("|") + ")" + Sr + Er + ")*", Lr = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", Cr = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", Ur = Sr + Er + Wr, Br = "(?:" + [gr, xr, jr].join("|") + ")" + Ur, Tr = "(?:" + [mr + _r + "?", _r, xr, jr, hr].join("|") + ")", $r = RegExp(sr, "g"), Dr = RegExp(_r, "g"), Mr = RegExp(br + "(?=" + br + ")|" + Tr + Ur, "g"), Fr = RegExp([Ar + "?" + yr + "+" + Rr + "(?=" + [pr, Ar, "$"].join("|") + ")", Ir + "+" + zr + "(?=" + [pr, Ar + Or, "$"].join("|") + ")", Ar + "?" + Or + "+" + Rr, Ar + "+" + zr, Cr, Lr, vr, Br].join("|"), "g"), Nr = RegExp("[" + kr + Yt + tr + ar + "]"), Pr = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, qr = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"], Zr = -1, Kr = {};
        Kr[at] = Kr[lt] = Kr[st] = Kr[ht] = Kr[pt] = Kr[_t] = Kr[vt] = Kr[gt] = Kr[yt] = true, Kr[Dn] = Kr[Mn] = Kr[ft] = Kr[Nn] = Kr[ct] = Kr[Pn] = Kr[Zn] = Kr[Kn] = Kr[Gn] = Kr[Hn] = Kr[Yn] = Kr[nt] = Kr[tt] = Kr[rt] = Kr[it] = false;
        var Vr = {};
        Vr[Dn] = Vr[Mn] = Vr[ft] = Vr[ct] = Vr[Nn] = Vr[Pn] = Vr[at] = Vr[lt] = Vr[st] = Vr[ht] = Vr[pt] = Vr[Gn] = Vr[Hn] = Vr[Yn] = Vr[nt] = Vr[tt] = Vr[rt] = Vr[et] = Vr[_t] = Vr[vt] = Vr[gt] = Vr[yt] = true, Vr[Zn] = Vr[Kn] = Vr[it] = false;
        var Gr = {
          "\xC0": "A",
          "\xC1": "A",
          "\xC2": "A",
          "\xC3": "A",
          "\xC4": "A",
          "\xC5": "A",
          "\xE0": "a",
          "\xE1": "a",
          "\xE2": "a",
          "\xE3": "a",
          "\xE4": "a",
          "\xE5": "a",
          "\xC7": "C",
          "\xE7": "c",
          "\xD0": "D",
          "\xF0": "d",
          "\xC8": "E",
          "\xC9": "E",
          "\xCA": "E",
          "\xCB": "E",
          "\xE8": "e",
          "\xE9": "e",
          "\xEA": "e",
          "\xEB": "e",
          "\xCC": "I",
          "\xCD": "I",
          "\xCE": "I",
          "\xCF": "I",
          "\xEC": "i",
          "\xED": "i",
          "\xEE": "i",
          "\xEF": "i",
          "\xD1": "N",
          "\xF1": "n",
          "\xD2": "O",
          "\xD3": "O",
          "\xD4": "O",
          "\xD5": "O",
          "\xD6": "O",
          "\xD8": "O",
          "\xF2": "o",
          "\xF3": "o",
          "\xF4": "o",
          "\xF5": "o",
          "\xF6": "o",
          "\xF8": "o",
          "\xD9": "U",
          "\xDA": "U",
          "\xDB": "U",
          "\xDC": "U",
          "\xF9": "u",
          "\xFA": "u",
          "\xFB": "u",
          "\xFC": "u",
          "\xDD": "Y",
          "\xFD": "y",
          "\xFF": "y",
          "\xC6": "Ae",
          "\xE6": "ae",
          "\xDE": "Th",
          "\xFE": "th",
          "\xDF": "ss",
          "\u0100": "A",
          "\u0102": "A",
          "\u0104": "A",
          "\u0101": "a",
          "\u0103": "a",
          "\u0105": "a",
          "\u0106": "C",
          "\u0108": "C",
          "\u010A": "C",
          "\u010C": "C",
          "\u0107": "c",
          "\u0109": "c",
          "\u010B": "c",
          "\u010D": "c",
          "\u010E": "D",
          "\u0110": "D",
          "\u010F": "d",
          "\u0111": "d",
          "\u0112": "E",
          "\u0114": "E",
          "\u0116": "E",
          "\u0118": "E",
          "\u011A": "E",
          "\u0113": "e",
          "\u0115": "e",
          "\u0117": "e",
          "\u0119": "e",
          "\u011B": "e",
          "\u011C": "G",
          "\u011E": "G",
          "\u0120": "G",
          "\u0122": "G",
          "\u011D": "g",
          "\u011F": "g",
          "\u0121": "g",
          "\u0123": "g",
          "\u0124": "H",
          "\u0126": "H",
          "\u0125": "h",
          "\u0127": "h",
          "\u0128": "I",
          "\u012A": "I",
          "\u012C": "I",
          "\u012E": "I",
          "\u0130": "I",
          "\u0129": "i",
          "\u012B": "i",
          "\u012D": "i",
          "\u012F": "i",
          "\u0131": "i",
          "\u0134": "J",
          "\u0135": "j",
          "\u0136": "K",
          "\u0137": "k",
          "\u0138": "k",
          "\u0139": "L",
          "\u013B": "L",
          "\u013D": "L",
          "\u013F": "L",
          "\u0141": "L",
          "\u013A": "l",
          "\u013C": "l",
          "\u013E": "l",
          "\u0140": "l",
          "\u0142": "l",
          "\u0143": "N",
          "\u0145": "N",
          "\u0147": "N",
          "\u014A": "N",
          "\u0144": "n",
          "\u0146": "n",
          "\u0148": "n",
          "\u014B": "n",
          "\u014C": "O",
          "\u014E": "O",
          "\u0150": "O",
          "\u014D": "o",
          "\u014F": "o",
          "\u0151": "o",
          "\u0154": "R",
          "\u0156": "R",
          "\u0158": "R",
          "\u0155": "r",
          "\u0157": "r",
          "\u0159": "r",
          "\u015A": "S",
          "\u015C": "S",
          "\u015E": "S",
          "\u0160": "S",
          "\u015B": "s",
          "\u015D": "s",
          "\u015F": "s",
          "\u0161": "s",
          "\u0162": "T",
          "\u0164": "T",
          "\u0166": "T",
          "\u0163": "t",
          "\u0165": "t",
          "\u0167": "t",
          "\u0168": "U",
          "\u016A": "U",
          "\u016C": "U",
          "\u016E": "U",
          "\u0170": "U",
          "\u0172": "U",
          "\u0169": "u",
          "\u016B": "u",
          "\u016D": "u",
          "\u016F": "u",
          "\u0171": "u",
          "\u0173": "u",
          "\u0174": "W",
          "\u0175": "w",
          "\u0176": "Y",
          "\u0177": "y",
          "\u0178": "Y",
          "\u0179": "Z",
          "\u017B": "Z",
          "\u017D": "Z",
          "\u017A": "z",
          "\u017C": "z",
          "\u017E": "z",
          "\u0132": "IJ",
          "\u0133": "ij",
          "\u0152": "Oe",
          "\u0153": "oe",
          "\u0149": "'n",
          "\u017F": "s"
        }, Hr = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }, Jr = { "&amp;": "&", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'" }, Yr = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" }, Qr = parseFloat, Xr = parseInt, ne = "object" == typeof global && global && global.Object === Object && global, te = "object" == typeof self && self && self.Object === Object && self, re = ne || te || Function("return this")(), ee = "object" == typeof exports2 && exports2 && !exports2.nodeType && exports2, ue = ee && "object" == typeof module2 && module2 && !module2.nodeType && module2, ie = ue && ue.exports === ee, oe = ie && ne.process, fe = function() {
          try {
            var n3 = ue && ue.require && ue.require("util").types;
            return n3 ? n3 : oe && oe.binding && oe.binding("util");
          } catch (n4) {
          }
        }(), ce = fe && fe.isArrayBuffer, ae = fe && fe.isDate, le = fe && fe.isMap, se = fe && fe.isRegExp, he = fe && fe.isSet, pe = fe && fe.isTypedArray, _e = m("length"), ve = x(Gr), ge = x(Hr), ye = x(Jr), de = function p2(x2) {
          function Z2(n3) {
            if (cc(n3) && !bh(n3) && !(n3 instanceof Ct2)) {
              if (n3 instanceof Y2)
                return n3;
              if (bl.call(n3, "__wrapped__"))
                return eo(n3);
            }
            return new Y2(n3);
          }
          function J2() {
          }
          function Y2(n3, t2) {
            this.__wrapped__ = n3, this.__actions__ = [], this.__chain__ = !!t2, this.__index__ = 0, this.__values__ = X;
          }
          function Ct2(n3) {
            this.__wrapped__ = n3, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = false, this.__iteratees__ = [], this.__takeCount__ = Un, this.__views__ = [];
          }
          function $t2() {
            var n3 = new Ct2(this.__wrapped__);
            return n3.__actions__ = Tu(this.__actions__), n3.__dir__ = this.__dir__, n3.__filtered__ = this.__filtered__, n3.__iteratees__ = Tu(this.__iteratees__), n3.__takeCount__ = this.__takeCount__, n3.__views__ = Tu(this.__views__), n3;
          }
          function Yt2() {
            if (this.__filtered__) {
              var n3 = new Ct2(this);
              n3.__dir__ = -1, n3.__filtered__ = true;
            } else
              n3 = this.clone(), n3.__dir__ *= -1;
            return n3;
          }
          function Qt2() {
            var n3 = this.__wrapped__.value(), t2 = this.__dir__, r2 = bh(n3), e2 = t2 < 0, u2 = r2 ? n3.length : 0, i2 = Oi(0, u2, this.__views__), o2 = i2.start, f2 = i2.end, c2 = f2 - o2, a2 = e2 ? f2 : o2 - 1, l2 = this.__iteratees__, s3 = l2.length, h3 = 0, p3 = Hl(c2, this.__takeCount__);
            if (!r2 || !e2 && u2 == c2 && p3 == c2)
              return wu(n3, this.__actions__);
            var _3 = [];
            n:
              for (; c2-- && h3 < p3; ) {
                a2 += t2;
                for (var v2 = -1, g2 = n3[a2]; ++v2 < s3; ) {
                  var y2 = l2[v2], d2 = y2.iteratee, b2 = y2.type, w3 = d2(g2);
                  if (b2 == zn)
                    g2 = w3;
                  else if (!w3) {
                    if (b2 == Rn)
                      continue n;
                    break n;
                  }
                }
                _3[h3++] = g2;
              }
            return _3;
          }
          function Xt2(n3) {
            var t2 = -1, r2 = null == n3 ? 0 : n3.length;
            for (this.clear(); ++t2 < r2; ) {
              var e2 = n3[t2];
              this.set(e2[0], e2[1]);
            }
          }
          function nr2() {
            this.__data__ = is ? is(null) : {}, this.size = 0;
          }
          function tr2(n3) {
            var t2 = this.has(n3) && delete this.__data__[n3];
            return this.size -= t2 ? 1 : 0, t2;
          }
          function rr2(n3) {
            var t2 = this.__data__;
            if (is) {
              var r2 = t2[n3];
              return r2 === on ? X : r2;
            }
            return bl.call(t2, n3) ? t2[n3] : X;
          }
          function er2(n3) {
            var t2 = this.__data__;
            return is ? t2[n3] !== X : bl.call(t2, n3);
          }
          function ur2(n3, t2) {
            var r2 = this.__data__;
            return this.size += this.has(n3) ? 0 : 1, r2[n3] = is && t2 === X ? on : t2, this;
          }
          function ir2(n3) {
            var t2 = -1, r2 = null == n3 ? 0 : n3.length;
            for (this.clear(); ++t2 < r2; ) {
              var e2 = n3[t2];
              this.set(e2[0], e2[1]);
            }
          }
          function or2() {
            this.__data__ = [], this.size = 0;
          }
          function fr2(n3) {
            var t2 = this.__data__, r2 = Wr2(t2, n3);
            return !(r2 < 0) && (r2 == t2.length - 1 ? t2.pop() : Ll.call(t2, r2, 1), --this.size, true);
          }
          function cr2(n3) {
            var t2 = this.__data__, r2 = Wr2(t2, n3);
            return r2 < 0 ? X : t2[r2][1];
          }
          function ar2(n3) {
            return Wr2(this.__data__, n3) > -1;
          }
          function lr2(n3, t2) {
            var r2 = this.__data__, e2 = Wr2(r2, n3);
            return e2 < 0 ? (++this.size, r2.push([n3, t2])) : r2[e2][1] = t2, this;
          }
          function sr2(n3) {
            var t2 = -1, r2 = null == n3 ? 0 : n3.length;
            for (this.clear(); ++t2 < r2; ) {
              var e2 = n3[t2];
              this.set(e2[0], e2[1]);
            }
          }
          function hr2() {
            this.size = 0, this.__data__ = { hash: new Xt2(), map: new (ts || ir2)(), string: new Xt2() };
          }
          function pr2(n3) {
            var t2 = xi(this, n3).delete(n3);
            return this.size -= t2 ? 1 : 0, t2;
          }
          function _r2(n3) {
            return xi(this, n3).get(n3);
          }
          function vr2(n3) {
            return xi(this, n3).has(n3);
          }
          function gr2(n3, t2) {
            var r2 = xi(this, n3), e2 = r2.size;
            return r2.set(n3, t2), this.size += r2.size == e2 ? 0 : 1, this;
          }
          function yr2(n3) {
            var t2 = -1, r2 = null == n3 ? 0 : n3.length;
            for (this.__data__ = new sr2(); ++t2 < r2; )
              this.add(n3[t2]);
          }
          function dr2(n3) {
            return this.__data__.set(n3, on), this;
          }
          function br2(n3) {
            return this.__data__.has(n3);
          }
          function wr2(n3) {
            this.size = (this.__data__ = new ir2(n3)).size;
          }
          function mr2() {
            this.__data__ = new ir2(), this.size = 0;
          }
          function xr2(n3) {
            var t2 = this.__data__, r2 = t2.delete(n3);
            return this.size = t2.size, r2;
          }
          function jr2(n3) {
            return this.__data__.get(n3);
          }
          function Ar2(n3) {
            return this.__data__.has(n3);
          }
          function kr2(n3, t2) {
            var r2 = this.__data__;
            if (r2 instanceof ir2) {
              var e2 = r2.__data__;
              if (!ts || e2.length < tn - 1)
                return e2.push([n3, t2]), this.size = ++r2.size, this;
              r2 = this.__data__ = new sr2(e2);
            }
            return r2.set(n3, t2), this.size = r2.size, this;
          }
          function Or2(n3, t2) {
            var r2 = bh(n3), e2 = !r2 && dh(n3), u2 = !r2 && !e2 && mh(n3), i2 = !r2 && !e2 && !u2 && Oh(n3), o2 = r2 || e2 || u2 || i2, f2 = o2 ? O(n3.length, hl) : [], c2 = f2.length;
            for (var a2 in n3)
              !t2 && !bl.call(n3, a2) || o2 && ("length" == a2 || u2 && ("offset" == a2 || "parent" == a2) || i2 && ("buffer" == a2 || "byteLength" == a2 || "byteOffset" == a2) || Ci(a2, c2)) || f2.push(a2);
            return f2;
          }
          function Ir2(n3) {
            var t2 = n3.length;
            return t2 ? n3[tu(0, t2 - 1)] : X;
          }
          function Rr2(n3, t2) {
            return Xi(Tu(n3), Mr2(t2, 0, n3.length));
          }
          function zr2(n3) {
            return Xi(Tu(n3));
          }
          function Er2(n3, t2, r2) {
            (r2 === X || Gf(n3[t2], r2)) && (r2 !== X || t2 in n3) || Br2(n3, t2, r2);
          }
          function Sr2(n3, t2, r2) {
            var e2 = n3[t2];
            bl.call(n3, t2) && Gf(e2, r2) && (r2 !== X || t2 in n3) || Br2(n3, t2, r2);
          }
          function Wr2(n3, t2) {
            for (var r2 = n3.length; r2--; )
              if (Gf(n3[r2][0], t2))
                return r2;
            return -1;
          }
          function Lr2(n3, t2, r2, e2) {
            return ys(n3, function(n4, u2, i2) {
              t2(e2, n4, r2(n4), i2);
            }), e2;
          }
          function Cr2(n3, t2) {
            return n3 && $u(t2, Pc(t2), n3);
          }
          function Ur2(n3, t2) {
            return n3 && $u(t2, qc(t2), n3);
          }
          function Br2(n3, t2, r2) {
            "__proto__" == t2 && Tl ? Tl(n3, t2, { configurable: true, enumerable: true, value: r2, writable: true }) : n3[t2] = r2;
          }
          function Tr2(n3, t2) {
            for (var r2 = -1, e2 = t2.length, u2 = il(e2), i2 = null == n3; ++r2 < e2; )
              u2[r2] = i2 ? X : Mc(n3, t2[r2]);
            return u2;
          }
          function Mr2(n3, t2, r2) {
            return n3 === n3 && (r2 !== X && (n3 = n3 <= r2 ? n3 : r2), t2 !== X && (n3 = n3 >= t2 ? n3 : t2)), n3;
          }
          function Fr2(n3, t2, e2, u2, i2, o2) {
            var f2, c2 = t2 & an, a2 = t2 & ln, l2 = t2 & sn;
            if (e2 && (f2 = i2 ? e2(n3, u2, i2, o2) : e2(n3)), f2 !== X)
              return f2;
            if (!fc(n3))
              return n3;
            var s3 = bh(n3);
            if (s3) {
              if (f2 = zi(n3), !c2)
                return Tu(n3, f2);
            } else {
              var h3 = zs(n3), p3 = h3 == Kn || h3 == Vn;
              if (mh(n3))
                return Iu(n3, c2);
              if (h3 == Yn || h3 == Dn || p3 && !i2) {
                if (f2 = a2 || p3 ? {} : Ei(n3), !c2)
                  return a2 ? Mu(n3, Ur2(f2, n3)) : Du(n3, Cr2(f2, n3));
              } else {
                if (!Vr[h3])
                  return i2 ? n3 : {};
                f2 = Si(n3, h3, c2);
              }
            }
            o2 || (o2 = new wr2());
            var _3 = o2.get(n3);
            if (_3)
              return _3;
            o2.set(n3, f2), kh(n3) ? n3.forEach(function(r2) {
              f2.add(Fr2(r2, t2, e2, r2, n3, o2));
            }) : jh(n3) && n3.forEach(function(r2, u3) {
              f2.set(u3, Fr2(r2, t2, e2, u3, n3, o2));
            });
            var v2 = l2 ? a2 ? di : yi : a2 ? qc : Pc, g2 = s3 ? X : v2(n3);
            return r(g2 || n3, function(r2, u3) {
              g2 && (u3 = r2, r2 = n3[u3]), Sr2(f2, u3, Fr2(r2, t2, e2, u3, n3, o2));
            }), f2;
          }
          function Nr2(n3) {
            var t2 = Pc(n3);
            return function(r2) {
              return Pr2(r2, n3, t2);
            };
          }
          function Pr2(n3, t2, r2) {
            var e2 = r2.length;
            if (null == n3)
              return !e2;
            for (n3 = ll(n3); e2--; ) {
              var u2 = r2[e2], i2 = t2[u2], o2 = n3[u2];
              if (o2 === X && !(u2 in n3) || !i2(o2))
                return false;
            }
            return true;
          }
          function Gr2(n3, t2, r2) {
            if ("function" != typeof n3)
              throw new pl(en);
            return Ws(function() {
              n3.apply(X, r2);
            }, t2);
          }
          function Hr2(n3, t2, r2, e2) {
            var u2 = -1, i2 = o, a2 = true, l2 = n3.length, s3 = [], h3 = t2.length;
            if (!l2)
              return s3;
            r2 && (t2 = c(t2, z(r2))), e2 ? (i2 = f, a2 = false) : t2.length >= tn && (i2 = S, a2 = false, t2 = new yr2(t2));
            n:
              for (; ++u2 < l2; ) {
                var p3 = n3[u2], _3 = null == r2 ? p3 : r2(p3);
                if (p3 = e2 || 0 !== p3 ? p3 : 0, a2 && _3 === _3) {
                  for (var v2 = h3; v2--; )
                    if (t2[v2] === _3)
                      continue n;
                  s3.push(p3);
                } else
                  i2(t2, _3, e2) || s3.push(p3);
              }
            return s3;
          }
          function Jr2(n3, t2) {
            var r2 = true;
            return ys(n3, function(n4, e2, u2) {
              return r2 = !!t2(n4, e2, u2);
            }), r2;
          }
          function Yr2(n3, t2, r2) {
            for (var e2 = -1, u2 = n3.length; ++e2 < u2; ) {
              var i2 = n3[e2], o2 = t2(i2);
              if (null != o2 && (f2 === X ? o2 === o2 && !bc(o2) : r2(o2, f2)))
                var f2 = o2, c2 = i2;
            }
            return c2;
          }
          function ne2(n3, t2, r2, e2) {
            var u2 = n3.length;
            for (r2 = kc(r2), r2 < 0 && (r2 = -r2 > u2 ? 0 : u2 + r2), e2 = e2 === X || e2 > u2 ? u2 : kc(e2), e2 < 0 && (e2 += u2), e2 = r2 > e2 ? 0 : Oc(e2); r2 < e2; )
              n3[r2++] = t2;
            return n3;
          }
          function te2(n3, t2) {
            var r2 = [];
            return ys(n3, function(n4, e2, u2) {
              t2(n4, e2, u2) && r2.push(n4);
            }), r2;
          }
          function ee2(n3, t2, r2, e2, u2) {
            var i2 = -1, o2 = n3.length;
            for (r2 || (r2 = Li), u2 || (u2 = []); ++i2 < o2; ) {
              var f2 = n3[i2];
              t2 > 0 && r2(f2) ? t2 > 1 ? ee2(f2, t2 - 1, r2, e2, u2) : a(u2, f2) : e2 || (u2[u2.length] = f2);
            }
            return u2;
          }
          function ue2(n3, t2) {
            return n3 && bs(n3, t2, Pc);
          }
          function oe2(n3, t2) {
            return n3 && ws(n3, t2, Pc);
          }
          function fe2(n3, t2) {
            return i(t2, function(t3) {
              return uc(n3[t3]);
            });
          }
          function _e2(n3, t2) {
            t2 = ku(t2, n3);
            for (var r2 = 0, e2 = t2.length; null != n3 && r2 < e2; )
              n3 = n3[no(t2[r2++])];
            return r2 && r2 == e2 ? n3 : X;
          }
          function de2(n3, t2, r2) {
            var e2 = t2(n3);
            return bh(n3) ? e2 : a(e2, r2(n3));
          }
          function we(n3) {
            return null == n3 ? n3 === X ? ut : Jn : Bl && Bl in ll(n3) ? ki(n3) : Ki(n3);
          }
          function me(n3, t2) {
            return n3 > t2;
          }
          function xe(n3, t2) {
            return null != n3 && bl.call(n3, t2);
          }
          function je(n3, t2) {
            return null != n3 && t2 in ll(n3);
          }
          function Ae(n3, t2, r2) {
            return n3 >= Hl(t2, r2) && n3 < Gl(t2, r2);
          }
          function ke(n3, t2, r2) {
            for (var e2 = r2 ? f : o, u2 = n3[0].length, i2 = n3.length, a2 = i2, l2 = il(i2), s3 = 1 / 0, h3 = []; a2--; ) {
              var p3 = n3[a2];
              a2 && t2 && (p3 = c(p3, z(t2))), s3 = Hl(p3.length, s3), l2[a2] = !r2 && (t2 || u2 >= 120 && p3.length >= 120) ? new yr2(a2 && p3) : X;
            }
            p3 = n3[0];
            var _3 = -1, v2 = l2[0];
            n:
              for (; ++_3 < u2 && h3.length < s3; ) {
                var g2 = p3[_3], y2 = t2 ? t2(g2) : g2;
                if (g2 = r2 || 0 !== g2 ? g2 : 0, !(v2 ? S(v2, y2) : e2(h3, y2, r2))) {
                  for (a2 = i2; --a2; ) {
                    var d2 = l2[a2];
                    if (!(d2 ? S(d2, y2) : e2(n3[a2], y2, r2)))
                      continue n;
                  }
                  v2 && v2.push(y2), h3.push(g2);
                }
              }
            return h3;
          }
          function Oe(n3, t2, r2, e2) {
            return ue2(n3, function(n4, u2, i2) {
              t2(e2, r2(n4), u2, i2);
            }), e2;
          }
          function Ie(t2, r2, e2) {
            r2 = ku(r2, t2), t2 = Gi(t2, r2);
            var u2 = null == t2 ? t2 : t2[no(jo(r2))];
            return null == u2 ? X : n2(u2, t2, e2);
          }
          function Re(n3) {
            return cc(n3) && we(n3) == Dn;
          }
          function ze(n3) {
            return cc(n3) && we(n3) == ft;
          }
          function Ee(n3) {
            return cc(n3) && we(n3) == Pn;
          }
          function Se(n3, t2, r2, e2, u2) {
            return n3 === t2 || (null == n3 || null == t2 || !cc(n3) && !cc(t2) ? n3 !== n3 && t2 !== t2 : We(n3, t2, r2, e2, Se, u2));
          }
          function We(n3, t2, r2, e2, u2, i2) {
            var o2 = bh(n3), f2 = bh(t2), c2 = o2 ? Mn : zs(n3), a2 = f2 ? Mn : zs(t2);
            c2 = c2 == Dn ? Yn : c2, a2 = a2 == Dn ? Yn : a2;
            var l2 = c2 == Yn, s3 = a2 == Yn, h3 = c2 == a2;
            if (h3 && mh(n3)) {
              if (!mh(t2))
                return false;
              o2 = true, l2 = false;
            }
            if (h3 && !l2)
              return i2 || (i2 = new wr2()), o2 || Oh(n3) ? pi(n3, t2, r2, e2, u2, i2) : _i(n3, t2, c2, r2, e2, u2, i2);
            if (!(r2 & hn)) {
              var p3 = l2 && bl.call(n3, "__wrapped__"), _3 = s3 && bl.call(t2, "__wrapped__");
              if (p3 || _3) {
                var v2 = p3 ? n3.value() : n3, g2 = _3 ? t2.value() : t2;
                return i2 || (i2 = new wr2()), u2(v2, g2, r2, e2, i2);
              }
            }
            return !!h3 && (i2 || (i2 = new wr2()), vi(n3, t2, r2, e2, u2, i2));
          }
          function Le(n3) {
            return cc(n3) && zs(n3) == Gn;
          }
          function Ce(n3, t2, r2, e2) {
            var u2 = r2.length, i2 = u2, o2 = !e2;
            if (null == n3)
              return !i2;
            for (n3 = ll(n3); u2--; ) {
              var f2 = r2[u2];
              if (o2 && f2[2] ? f2[1] !== n3[f2[0]] : !(f2[0] in n3))
                return false;
            }
            for (; ++u2 < i2; ) {
              f2 = r2[u2];
              var c2 = f2[0], a2 = n3[c2], l2 = f2[1];
              if (o2 && f2[2]) {
                if (a2 === X && !(c2 in n3))
                  return false;
              } else {
                var s3 = new wr2();
                if (e2)
                  var h3 = e2(a2, l2, c2, n3, t2, s3);
                if (!(h3 === X ? Se(l2, a2, hn | pn, e2, s3) : h3))
                  return false;
              }
            }
            return true;
          }
          function Ue(n3) {
            return !(!fc(n3) || Di(n3)) && (uc(n3) ? kl : Zt).test(to(n3));
          }
          function Be(n3) {
            return cc(n3) && we(n3) == nt;
          }
          function Te(n3) {
            return cc(n3) && zs(n3) == tt;
          }
          function $e(n3) {
            return cc(n3) && oc(n3.length) && !!Kr[we(n3)];
          }
          function De(n3) {
            return "function" == typeof n3 ? n3 : null == n3 ? La : "object" == typeof n3 ? bh(n3) ? Ze(n3[0], n3[1]) : qe(n3) : Fa(n3);
          }
          function Me(n3) {
            if (!Mi(n3))
              return Vl(n3);
            var t2 = [];
            for (var r2 in ll(n3))
              bl.call(n3, r2) && "constructor" != r2 && t2.push(r2);
            return t2;
          }
          function Fe(n3) {
            if (!fc(n3))
              return Zi(n3);
            var t2 = Mi(n3), r2 = [];
            for (var e2 in n3)
              ("constructor" != e2 || !t2 && bl.call(n3, e2)) && r2.push(e2);
            return r2;
          }
          function Ne(n3, t2) {
            return n3 < t2;
          }
          function Pe(n3, t2) {
            var r2 = -1, e2 = Hf(n3) ? il(n3.length) : [];
            return ys(n3, function(n4, u2, i2) {
              e2[++r2] = t2(n4, u2, i2);
            }), e2;
          }
          function qe(n3) {
            var t2 = ji(n3);
            return 1 == t2.length && t2[0][2] ? Ni(t2[0][0], t2[0][1]) : function(r2) {
              return r2 === n3 || Ce(r2, n3, t2);
            };
          }
          function Ze(n3, t2) {
            return Bi(n3) && Fi(t2) ? Ni(no(n3), t2) : function(r2) {
              var e2 = Mc(r2, n3);
              return e2 === X && e2 === t2 ? Nc(r2, n3) : Se(t2, e2, hn | pn);
            };
          }
          function Ke(n3, t2, r2, e2, u2) {
            n3 !== t2 && bs(t2, function(i2, o2) {
              if (u2 || (u2 = new wr2()), fc(i2))
                Ve(n3, t2, o2, r2, Ke, e2, u2);
              else {
                var f2 = e2 ? e2(Ji(n3, o2), i2, o2 + "", n3, t2, u2) : X;
                f2 === X && (f2 = i2), Er2(n3, o2, f2);
              }
            }, qc);
          }
          function Ve(n3, t2, r2, e2, u2, i2, o2) {
            var f2 = Ji(n3, r2), c2 = Ji(t2, r2), a2 = o2.get(c2);
            if (a2)
              return Er2(n3, r2, a2), X;
            var l2 = i2 ? i2(f2, c2, r2 + "", n3, t2, o2) : X, s3 = l2 === X;
            if (s3) {
              var h3 = bh(c2), p3 = !h3 && mh(c2), _3 = !h3 && !p3 && Oh(c2);
              l2 = c2, h3 || p3 || _3 ? bh(f2) ? l2 = f2 : Jf(f2) ? l2 = Tu(f2) : p3 ? (s3 = false, l2 = Iu(c2, true)) : _3 ? (s3 = false, l2 = Wu(c2, true)) : l2 = [] : gc(c2) || dh(c2) ? (l2 = f2, dh(f2) ? l2 = Rc(f2) : fc(f2) && !uc(f2) || (l2 = Ei(c2))) : s3 = false;
            }
            s3 && (o2.set(c2, l2), u2(l2, c2, e2, i2, o2), o2.delete(c2)), Er2(n3, r2, l2);
          }
          function Ge(n3, t2) {
            var r2 = n3.length;
            if (r2)
              return t2 += t2 < 0 ? r2 : 0, Ci(t2, r2) ? n3[t2] : X;
          }
          function He(n3, t2, r2) {
            t2 = t2.length ? c(t2, function(n4) {
              return bh(n4) ? function(t3) {
                return _e2(t3, 1 === n4.length ? n4[0] : n4);
              } : n4;
            }) : [La];
            var e2 = -1;
            return t2 = c(t2, z(mi())), A(Pe(n3, function(n4, r3, u2) {
              return { criteria: c(t2, function(t3) {
                return t3(n4);
              }), index: ++e2, value: n4 };
            }), function(n4, t3) {
              return Cu(n4, t3, r2);
            });
          }
          function Je(n3, t2) {
            return Ye(n3, t2, function(t3, r2) {
              return Nc(n3, r2);
            });
          }
          function Ye(n3, t2, r2) {
            for (var e2 = -1, u2 = t2.length, i2 = {}; ++e2 < u2; ) {
              var o2 = t2[e2], f2 = _e2(n3, o2);
              r2(f2, o2) && fu(i2, ku(o2, n3), f2);
            }
            return i2;
          }
          function Qe(n3) {
            return function(t2) {
              return _e2(t2, n3);
            };
          }
          function Xe(n3, t2, r2, e2) {
            var u2 = e2 ? d : y, i2 = -1, o2 = t2.length, f2 = n3;
            for (n3 === t2 && (t2 = Tu(t2)), r2 && (f2 = c(n3, z(r2))); ++i2 < o2; )
              for (var a2 = 0, l2 = t2[i2], s3 = r2 ? r2(l2) : l2; (a2 = u2(f2, s3, a2, e2)) > -1; )
                f2 !== n3 && Ll.call(f2, a2, 1), Ll.call(n3, a2, 1);
            return n3;
          }
          function nu(n3, t2) {
            for (var r2 = n3 ? t2.length : 0, e2 = r2 - 1; r2--; ) {
              var u2 = t2[r2];
              if (r2 == e2 || u2 !== i2) {
                var i2 = u2;
                Ci(u2) ? Ll.call(n3, u2, 1) : yu(n3, u2);
              }
            }
            return n3;
          }
          function tu(n3, t2) {
            return n3 + Nl(Ql() * (t2 - n3 + 1));
          }
          function ru(n3, t2, r2, e2) {
            for (var u2 = -1, i2 = Gl(Fl((t2 - n3) / (r2 || 1)), 0), o2 = il(i2); i2--; )
              o2[e2 ? i2 : ++u2] = n3, n3 += r2;
            return o2;
          }
          function eu(n3, t2) {
            var r2 = "";
            if (!n3 || t2 < 1 || t2 > Wn)
              return r2;
            do
              t2 % 2 && (r2 += n3), t2 = Nl(t2 / 2), t2 && (n3 += n3);
            while (t2);
            return r2;
          }
          function uu(n3, t2) {
            return Ls(Vi(n3, t2, La), n3 + "");
          }
          function iu(n3) {
            return Ir2(ra(n3));
          }
          function ou(n3, t2) {
            var r2 = ra(n3);
            return Xi(r2, Mr2(t2, 0, r2.length));
          }
          function fu(n3, t2, r2, e2) {
            if (!fc(n3))
              return n3;
            t2 = ku(t2, n3);
            for (var u2 = -1, i2 = t2.length, o2 = i2 - 1, f2 = n3; null != f2 && ++u2 < i2; ) {
              var c2 = no(t2[u2]), a2 = r2;
              if ("__proto__" === c2 || "constructor" === c2 || "prototype" === c2)
                return n3;
              if (u2 != o2) {
                var l2 = f2[c2];
                a2 = e2 ? e2(l2, c2, f2) : X, a2 === X && (a2 = fc(l2) ? l2 : Ci(t2[u2 + 1]) ? [] : {});
              }
              Sr2(f2, c2, a2), f2 = f2[c2];
            }
            return n3;
          }
          function cu(n3) {
            return Xi(ra(n3));
          }
          function au(n3, t2, r2) {
            var e2 = -1, u2 = n3.length;
            t2 < 0 && (t2 = -t2 > u2 ? 0 : u2 + t2), r2 = r2 > u2 ? u2 : r2, r2 < 0 && (r2 += u2), u2 = t2 > r2 ? 0 : r2 - t2 >>> 0, t2 >>>= 0;
            for (var i2 = il(u2); ++e2 < u2; )
              i2[e2] = n3[e2 + t2];
            return i2;
          }
          function lu(n3, t2) {
            var r2;
            return ys(n3, function(n4, e2, u2) {
              return r2 = t2(n4, e2, u2), !r2;
            }), !!r2;
          }
          function su(n3, t2, r2) {
            var e2 = 0, u2 = null == n3 ? e2 : n3.length;
            if ("number" == typeof t2 && t2 === t2 && u2 <= Tn) {
              for (; e2 < u2; ) {
                var i2 = e2 + u2 >>> 1, o2 = n3[i2];
                null !== o2 && !bc(o2) && (r2 ? o2 <= t2 : o2 < t2) ? e2 = i2 + 1 : u2 = i2;
              }
              return u2;
            }
            return hu(n3, t2, La, r2);
          }
          function hu(n3, t2, r2, e2) {
            var u2 = 0, i2 = null == n3 ? 0 : n3.length;
            if (0 === i2)
              return 0;
            t2 = r2(t2);
            for (var o2 = t2 !== t2, f2 = null === t2, c2 = bc(t2), a2 = t2 === X; u2 < i2; ) {
              var l2 = Nl((u2 + i2) / 2), s3 = r2(n3[l2]), h3 = s3 !== X, p3 = null === s3, _3 = s3 === s3, v2 = bc(s3);
              if (o2)
                var g2 = e2 || _3;
              else
                g2 = a2 ? _3 && (e2 || h3) : f2 ? _3 && h3 && (e2 || !p3) : c2 ? _3 && h3 && !p3 && (e2 || !v2) : !p3 && !v2 && (e2 ? s3 <= t2 : s3 < t2);
              g2 ? u2 = l2 + 1 : i2 = l2;
            }
            return Hl(i2, Bn);
          }
          function pu(n3, t2) {
            for (var r2 = -1, e2 = n3.length, u2 = 0, i2 = []; ++r2 < e2; ) {
              var o2 = n3[r2], f2 = t2 ? t2(o2) : o2;
              if (!r2 || !Gf(f2, c2)) {
                var c2 = f2;
                i2[u2++] = 0 === o2 ? 0 : o2;
              }
            }
            return i2;
          }
          function _u(n3) {
            return "number" == typeof n3 ? n3 : bc(n3) ? Cn : +n3;
          }
          function vu(n3) {
            if ("string" == typeof n3)
              return n3;
            if (bh(n3))
              return c(n3, vu) + "";
            if (bc(n3))
              return vs ? vs.call(n3) : "";
            var t2 = n3 + "";
            return "0" == t2 && 1 / n3 == -Sn ? "-0" : t2;
          }
          function gu(n3, t2, r2) {
            var e2 = -1, u2 = o, i2 = n3.length, c2 = true, a2 = [], l2 = a2;
            if (r2)
              c2 = false, u2 = f;
            else if (i2 >= tn) {
              var s3 = t2 ? null : ks(n3);
              if (s3)
                return P(s3);
              c2 = false, u2 = S, l2 = new yr2();
            } else
              l2 = t2 ? [] : a2;
            n:
              for (; ++e2 < i2; ) {
                var h3 = n3[e2], p3 = t2 ? t2(h3) : h3;
                if (h3 = r2 || 0 !== h3 ? h3 : 0, c2 && p3 === p3) {
                  for (var _3 = l2.length; _3--; )
                    if (l2[_3] === p3)
                      continue n;
                  t2 && l2.push(p3), a2.push(h3);
                } else
                  u2(l2, p3, r2) || (l2 !== a2 && l2.push(p3), a2.push(h3));
              }
            return a2;
          }
          function yu(n3, t2) {
            return t2 = ku(t2, n3), n3 = Gi(n3, t2), null == n3 || delete n3[no(jo(t2))];
          }
          function du(n3, t2, r2, e2) {
            return fu(n3, t2, r2(_e2(n3, t2)), e2);
          }
          function bu(n3, t2, r2, e2) {
            for (var u2 = n3.length, i2 = e2 ? u2 : -1; (e2 ? i2-- : ++i2 < u2) && t2(n3[i2], i2, n3); )
              ;
            return r2 ? au(n3, e2 ? 0 : i2, e2 ? i2 + 1 : u2) : au(n3, e2 ? i2 + 1 : 0, e2 ? u2 : i2);
          }
          function wu(n3, t2) {
            var r2 = n3;
            return r2 instanceof Ct2 && (r2 = r2.value()), l(t2, function(n4, t3) {
              return t3.func.apply(t3.thisArg, a([n4], t3.args));
            }, r2);
          }
          function mu(n3, t2, r2) {
            var e2 = n3.length;
            if (e2 < 2)
              return e2 ? gu(n3[0]) : [];
            for (var u2 = -1, i2 = il(e2); ++u2 < e2; )
              for (var o2 = n3[u2], f2 = -1; ++f2 < e2; )
                f2 != u2 && (i2[u2] = Hr2(i2[u2] || o2, n3[f2], t2, r2));
            return gu(ee2(i2, 1), t2, r2);
          }
          function xu(n3, t2, r2) {
            for (var e2 = -1, u2 = n3.length, i2 = t2.length, o2 = {}; ++e2 < u2; ) {
              r2(o2, n3[e2], e2 < i2 ? t2[e2] : X);
            }
            return o2;
          }
          function ju(n3) {
            return Jf(n3) ? n3 : [];
          }
          function Au(n3) {
            return "function" == typeof n3 ? n3 : La;
          }
          function ku(n3, t2) {
            return bh(n3) ? n3 : Bi(n3, t2) ? [n3] : Cs(Ec(n3));
          }
          function Ou(n3, t2, r2) {
            var e2 = n3.length;
            return r2 = r2 === X ? e2 : r2, !t2 && r2 >= e2 ? n3 : au(n3, t2, r2);
          }
          function Iu(n3, t2) {
            if (t2)
              return n3.slice();
            var r2 = n3.length, e2 = zl ? zl(r2) : new n3.constructor(r2);
            return n3.copy(e2), e2;
          }
          function Ru(n3) {
            var t2 = new n3.constructor(n3.byteLength);
            return new Rl(t2).set(new Rl(n3)), t2;
          }
          function zu(n3, t2) {
            return new n3.constructor(t2 ? Ru(n3.buffer) : n3.buffer, n3.byteOffset, n3.byteLength);
          }
          function Eu(n3) {
            var t2 = new n3.constructor(n3.source, Nt.exec(n3));
            return t2.lastIndex = n3.lastIndex, t2;
          }
          function Su(n3) {
            return _s ? ll(_s.call(n3)) : {};
          }
          function Wu(n3, t2) {
            return new n3.constructor(t2 ? Ru(n3.buffer) : n3.buffer, n3.byteOffset, n3.length);
          }
          function Lu(n3, t2) {
            if (n3 !== t2) {
              var r2 = n3 !== X, e2 = null === n3, u2 = n3 === n3, i2 = bc(n3), o2 = t2 !== X, f2 = null === t2, c2 = t2 === t2, a2 = bc(t2);
              if (!f2 && !a2 && !i2 && n3 > t2 || i2 && o2 && c2 && !f2 && !a2 || e2 && o2 && c2 || !r2 && c2 || !u2)
                return 1;
              if (!e2 && !i2 && !a2 && n3 < t2 || a2 && r2 && u2 && !e2 && !i2 || f2 && r2 && u2 || !o2 && u2 || !c2)
                return -1;
            }
            return 0;
          }
          function Cu(n3, t2, r2) {
            for (var e2 = -1, u2 = n3.criteria, i2 = t2.criteria, o2 = u2.length, f2 = r2.length; ++e2 < o2; ) {
              var c2 = Lu(u2[e2], i2[e2]);
              if (c2) {
                if (e2 >= f2)
                  return c2;
                return c2 * ("desc" == r2[e2] ? -1 : 1);
              }
            }
            return n3.index - t2.index;
          }
          function Uu(n3, t2, r2, e2) {
            for (var u2 = -1, i2 = n3.length, o2 = r2.length, f2 = -1, c2 = t2.length, a2 = Gl(i2 - o2, 0), l2 = il(c2 + a2), s3 = !e2; ++f2 < c2; )
              l2[f2] = t2[f2];
            for (; ++u2 < o2; )
              (s3 || u2 < i2) && (l2[r2[u2]] = n3[u2]);
            for (; a2--; )
              l2[f2++] = n3[u2++];
            return l2;
          }
          function Bu(n3, t2, r2, e2) {
            for (var u2 = -1, i2 = n3.length, o2 = -1, f2 = r2.length, c2 = -1, a2 = t2.length, l2 = Gl(i2 - f2, 0), s3 = il(l2 + a2), h3 = !e2; ++u2 < l2; )
              s3[u2] = n3[u2];
            for (var p3 = u2; ++c2 < a2; )
              s3[p3 + c2] = t2[c2];
            for (; ++o2 < f2; )
              (h3 || u2 < i2) && (s3[p3 + r2[o2]] = n3[u2++]);
            return s3;
          }
          function Tu(n3, t2) {
            var r2 = -1, e2 = n3.length;
            for (t2 || (t2 = il(e2)); ++r2 < e2; )
              t2[r2] = n3[r2];
            return t2;
          }
          function $u(n3, t2, r2, e2) {
            var u2 = !r2;
            r2 || (r2 = {});
            for (var i2 = -1, o2 = t2.length; ++i2 < o2; ) {
              var f2 = t2[i2], c2 = e2 ? e2(r2[f2], n3[f2], f2, r2, n3) : X;
              c2 === X && (c2 = n3[f2]), u2 ? Br2(r2, f2, c2) : Sr2(r2, f2, c2);
            }
            return r2;
          }
          function Du(n3, t2) {
            return $u(n3, Is(n3), t2);
          }
          function Mu(n3, t2) {
            return $u(n3, Rs(n3), t2);
          }
          function Fu(n3, r2) {
            return function(e2, u2) {
              var i2 = bh(e2) ? t : Lr2, o2 = r2 ? r2() : {};
              return i2(e2, n3, mi(u2, 2), o2);
            };
          }
          function Nu(n3) {
            return uu(function(t2, r2) {
              var e2 = -1, u2 = r2.length, i2 = u2 > 1 ? r2[u2 - 1] : X, o2 = u2 > 2 ? r2[2] : X;
              for (i2 = n3.length > 3 && "function" == typeof i2 ? (u2--, i2) : X, o2 && Ui(r2[0], r2[1], o2) && (i2 = u2 < 3 ? X : i2, u2 = 1), t2 = ll(t2); ++e2 < u2; ) {
                var f2 = r2[e2];
                f2 && n3(t2, f2, e2, i2);
              }
              return t2;
            });
          }
          function Pu(n3, t2) {
            return function(r2, e2) {
              if (null == r2)
                return r2;
              if (!Hf(r2))
                return n3(r2, e2);
              for (var u2 = r2.length, i2 = t2 ? u2 : -1, o2 = ll(r2); (t2 ? i2-- : ++i2 < u2) && e2(o2[i2], i2, o2) !== false; )
                ;
              return r2;
            };
          }
          function qu(n3) {
            return function(t2, r2, e2) {
              for (var u2 = -1, i2 = ll(t2), o2 = e2(t2), f2 = o2.length; f2--; ) {
                var c2 = o2[n3 ? f2 : ++u2];
                if (r2(i2[c2], c2, i2) === false)
                  break;
              }
              return t2;
            };
          }
          function Zu(n3, t2, r2) {
            function e2() {
              return (this && this !== re && this instanceof e2 ? i2 : n3).apply(u2 ? r2 : this, arguments);
            }
            var u2 = t2 & _n, i2 = Gu(n3);
            return e2;
          }
          function Ku(n3) {
            return function(t2) {
              t2 = Ec(t2);
              var r2 = T(t2) ? G(t2) : X, e2 = r2 ? r2[0] : t2.charAt(0), u2 = r2 ? Ou(r2, 1).join("") : t2.slice(1);
              return e2[n3]() + u2;
            };
          }
          function Vu(n3) {
            return function(t2) {
              return l(Ra(ca(t2).replace($r, "")), n3, "");
            };
          }
          function Gu(n3) {
            return function() {
              var t2 = arguments;
              switch (t2.length) {
                case 0:
                  return new n3();
                case 1:
                  return new n3(t2[0]);
                case 2:
                  return new n3(t2[0], t2[1]);
                case 3:
                  return new n3(t2[0], t2[1], t2[2]);
                case 4:
                  return new n3(t2[0], t2[1], t2[2], t2[3]);
                case 5:
                  return new n3(t2[0], t2[1], t2[2], t2[3], t2[4]);
                case 6:
                  return new n3(t2[0], t2[1], t2[2], t2[3], t2[4], t2[5]);
                case 7:
                  return new n3(t2[0], t2[1], t2[2], t2[3], t2[4], t2[5], t2[6]);
              }
              var r2 = gs(n3.prototype), e2 = n3.apply(r2, t2);
              return fc(e2) ? e2 : r2;
            };
          }
          function Hu(t2, r2, e2) {
            function u2() {
              for (var o2 = arguments.length, f2 = il(o2), c2 = o2, a2 = wi(u2); c2--; )
                f2[c2] = arguments[c2];
              var l2 = o2 < 3 && f2[0] !== a2 && f2[o2 - 1] !== a2 ? [] : N(f2, a2);
              return o2 -= l2.length, o2 < e2 ? oi(t2, r2, Qu, u2.placeholder, X, f2, l2, X, X, e2 - o2) : n2(this && this !== re && this instanceof u2 ? i2 : t2, this, f2);
            }
            var i2 = Gu(t2);
            return u2;
          }
          function Ju(n3) {
            return function(t2, r2, e2) {
              var u2 = ll(t2);
              if (!Hf(t2)) {
                var i2 = mi(r2, 3);
                t2 = Pc(t2), r2 = function(n4) {
                  return i2(u2[n4], n4, u2);
                };
              }
              var o2 = n3(t2, r2, e2);
              return o2 > -1 ? u2[i2 ? t2[o2] : o2] : X;
            };
          }
          function Yu(n3) {
            return gi(function(t2) {
              var r2 = t2.length, e2 = r2, u2 = Y2.prototype.thru;
              for (n3 && t2.reverse(); e2--; ) {
                var i2 = t2[e2];
                if ("function" != typeof i2)
                  throw new pl(en);
                if (u2 && !o2 && "wrapper" == bi(i2))
                  var o2 = new Y2([], true);
              }
              for (e2 = o2 ? e2 : r2; ++e2 < r2; ) {
                i2 = t2[e2];
                var f2 = bi(i2), c2 = "wrapper" == f2 ? Os(i2) : X;
                o2 = c2 && $i(c2[0]) && c2[1] == (mn | yn | bn | xn) && !c2[4].length && 1 == c2[9] ? o2[bi(c2[0])].apply(o2, c2[3]) : 1 == i2.length && $i(i2) ? o2[f2]() : o2.thru(i2);
              }
              return function() {
                var n4 = arguments, e3 = n4[0];
                if (o2 && 1 == n4.length && bh(e3))
                  return o2.plant(e3).value();
                for (var u3 = 0, i3 = r2 ? t2[u3].apply(this, n4) : e3; ++u3 < r2; )
                  i3 = t2[u3].call(this, i3);
                return i3;
              };
            });
          }
          function Qu(n3, t2, r2, e2, u2, i2, o2, f2, c2, a2) {
            function l2() {
              for (var y2 = arguments.length, d2 = il(y2), b2 = y2; b2--; )
                d2[b2] = arguments[b2];
              if (_3)
                var w3 = wi(l2), m2 = C(d2, w3);
              if (e2 && (d2 = Uu(d2, e2, u2, _3)), i2 && (d2 = Bu(d2, i2, o2, _3)), y2 -= m2, _3 && y2 < a2) {
                return oi(n3, t2, Qu, l2.placeholder, r2, d2, N(d2, w3), f2, c2, a2 - y2);
              }
              var x3 = h3 ? r2 : this, j2 = p3 ? x3[n3] : n3;
              return y2 = d2.length, f2 ? d2 = Hi(d2, f2) : v2 && y2 > 1 && d2.reverse(), s3 && c2 < y2 && (d2.length = c2), this && this !== re && this instanceof l2 && (j2 = g2 || Gu(j2)), j2.apply(x3, d2);
            }
            var s3 = t2 & mn, h3 = t2 & _n, p3 = t2 & vn, _3 = t2 & (yn | dn), v2 = t2 & jn, g2 = p3 ? X : Gu(n3);
            return l2;
          }
          function Xu(n3, t2) {
            return function(r2, e2) {
              return Oe(r2, n3, t2(e2), {});
            };
          }
          function ni(n3, t2) {
            return function(r2, e2) {
              var u2;
              if (r2 === X && e2 === X)
                return t2;
              if (r2 !== X && (u2 = r2), e2 !== X) {
                if (u2 === X)
                  return e2;
                "string" == typeof r2 || "string" == typeof e2 ? (r2 = vu(r2), e2 = vu(e2)) : (r2 = _u(r2), e2 = _u(e2)), u2 = n3(r2, e2);
              }
              return u2;
            };
          }
          function ti(t2) {
            return gi(function(r2) {
              return r2 = c(r2, z(mi())), uu(function(e2) {
                var u2 = this;
                return t2(r2, function(t3) {
                  return n2(t3, u2, e2);
                });
              });
            });
          }
          function ri(n3, t2) {
            t2 = t2 === X ? " " : vu(t2);
            var r2 = t2.length;
            if (r2 < 2)
              return r2 ? eu(t2, n3) : t2;
            var e2 = eu(t2, Fl(n3 / V(t2)));
            return T(t2) ? Ou(G(e2), 0, n3).join("") : e2.slice(0, n3);
          }
          function ei(t2, r2, e2, u2) {
            function i2() {
              for (var r3 = -1, c2 = arguments.length, a2 = -1, l2 = u2.length, s3 = il(l2 + c2), h3 = this && this !== re && this instanceof i2 ? f2 : t2; ++a2 < l2; )
                s3[a2] = u2[a2];
              for (; c2--; )
                s3[a2++] = arguments[++r3];
              return n2(h3, o2 ? e2 : this, s3);
            }
            var o2 = r2 & _n, f2 = Gu(t2);
            return i2;
          }
          function ui(n3) {
            return function(t2, r2, e2) {
              return e2 && "number" != typeof e2 && Ui(t2, r2, e2) && (r2 = e2 = X), t2 = Ac(t2), r2 === X ? (r2 = t2, t2 = 0) : r2 = Ac(r2), e2 = e2 === X ? t2 < r2 ? 1 : -1 : Ac(e2), ru(t2, r2, e2, n3);
            };
          }
          function ii(n3) {
            return function(t2, r2) {
              return "string" == typeof t2 && "string" == typeof r2 || (t2 = Ic(t2), r2 = Ic(r2)), n3(t2, r2);
            };
          }
          function oi(n3, t2, r2, e2, u2, i2, o2, f2, c2, a2) {
            var l2 = t2 & yn, s3 = l2 ? o2 : X, h3 = l2 ? X : o2, p3 = l2 ? i2 : X, _3 = l2 ? X : i2;
            t2 |= l2 ? bn : wn, t2 &= ~(l2 ? wn : bn), t2 & gn || (t2 &= ~(_n | vn));
            var v2 = [n3, t2, u2, p3, s3, _3, h3, f2, c2, a2], g2 = r2.apply(X, v2);
            return $i(n3) && Ss(g2, v2), g2.placeholder = e2, Yi(g2, n3, t2);
          }
          function fi(n3) {
            var t2 = al[n3];
            return function(n4, r2) {
              if (n4 = Ic(n4), r2 = null == r2 ? 0 : Hl(kc(r2), 292), r2 && Zl(n4)) {
                var e2 = (Ec(n4) + "e").split("e");
                return e2 = (Ec(t2(e2[0] + "e" + (+e2[1] + r2))) + "e").split("e"), +(e2[0] + "e" + (+e2[1] - r2));
              }
              return t2(n4);
            };
          }
          function ci(n3) {
            return function(t2) {
              var r2 = zs(t2);
              return r2 == Gn ? M(t2) : r2 == tt ? q(t2) : I(t2, n3(t2));
            };
          }
          function ai(n3, t2, r2, e2, u2, i2, o2, f2) {
            var c2 = t2 & vn;
            if (!c2 && "function" != typeof n3)
              throw new pl(en);
            var a2 = e2 ? e2.length : 0;
            if (a2 || (t2 &= ~(bn | wn), e2 = u2 = X), o2 = o2 === X ? o2 : Gl(kc(o2), 0), f2 = f2 === X ? f2 : kc(f2), a2 -= u2 ? u2.length : 0, t2 & wn) {
              var l2 = e2, s3 = u2;
              e2 = u2 = X;
            }
            var h3 = c2 ? X : Os(n3), p3 = [n3, t2, r2, e2, u2, l2, s3, i2, o2, f2];
            if (h3 && qi(p3, h3), n3 = p3[0], t2 = p3[1], r2 = p3[2], e2 = p3[3], u2 = p3[4], f2 = p3[9] = p3[9] === X ? c2 ? 0 : n3.length : Gl(p3[9] - a2, 0), !f2 && t2 & (yn | dn) && (t2 &= ~(yn | dn)), t2 && t2 != _n)
              _3 = t2 == yn || t2 == dn ? Hu(n3, t2, f2) : t2 != bn && t2 != (_n | bn) || u2.length ? Qu.apply(X, p3) : ei(n3, t2, r2, e2);
            else
              var _3 = Zu(n3, t2, r2);
            return Yi((h3 ? ms : Ss)(_3, p3), n3, t2);
          }
          function li(n3, t2, r2, e2) {
            return n3 === X || Gf(n3, gl[r2]) && !bl.call(e2, r2) ? t2 : n3;
          }
          function si(n3, t2, r2, e2, u2, i2) {
            return fc(n3) && fc(t2) && (i2.set(t2, n3), Ke(n3, t2, X, si, i2), i2.delete(t2)), n3;
          }
          function hi(n3) {
            return gc(n3) ? X : n3;
          }
          function pi(n3, t2, r2, e2, u2, i2) {
            var o2 = r2 & hn, f2 = n3.length, c2 = t2.length;
            if (f2 != c2 && !(o2 && c2 > f2))
              return false;
            var a2 = i2.get(n3), l2 = i2.get(t2);
            if (a2 && l2)
              return a2 == t2 && l2 == n3;
            var s3 = -1, p3 = true, _3 = r2 & pn ? new yr2() : X;
            for (i2.set(n3, t2), i2.set(t2, n3); ++s3 < f2; ) {
              var v2 = n3[s3], g2 = t2[s3];
              if (e2)
                var y2 = o2 ? e2(g2, v2, s3, t2, n3, i2) : e2(v2, g2, s3, n3, t2, i2);
              if (y2 !== X) {
                if (y2)
                  continue;
                p3 = false;
                break;
              }
              if (_3) {
                if (!h2(t2, function(n4, t3) {
                  if (!S(_3, t3) && (v2 === n4 || u2(v2, n4, r2, e2, i2)))
                    return _3.push(t3);
                })) {
                  p3 = false;
                  break;
                }
              } else if (v2 !== g2 && !u2(v2, g2, r2, e2, i2)) {
                p3 = false;
                break;
              }
            }
            return i2.delete(n3), i2.delete(t2), p3;
          }
          function _i(n3, t2, r2, e2, u2, i2, o2) {
            switch (r2) {
              case ct:
                if (n3.byteLength != t2.byteLength || n3.byteOffset != t2.byteOffset)
                  return false;
                n3 = n3.buffer, t2 = t2.buffer;
              case ft:
                return !(n3.byteLength != t2.byteLength || !i2(new Rl(n3), new Rl(t2)));
              case Nn:
              case Pn:
              case Hn:
                return Gf(+n3, +t2);
              case Zn:
                return n3.name == t2.name && n3.message == t2.message;
              case nt:
              case rt:
                return n3 == t2 + "";
              case Gn:
                var f2 = M;
              case tt:
                var c2 = e2 & hn;
                if (f2 || (f2 = P), n3.size != t2.size && !c2)
                  return false;
                var a2 = o2.get(n3);
                if (a2)
                  return a2 == t2;
                e2 |= pn, o2.set(n3, t2);
                var l2 = pi(f2(n3), f2(t2), e2, u2, i2, o2);
                return o2.delete(n3), l2;
              case et:
                if (_s)
                  return _s.call(n3) == _s.call(t2);
            }
            return false;
          }
          function vi(n3, t2, r2, e2, u2, i2) {
            var o2 = r2 & hn, f2 = yi(n3), c2 = f2.length;
            if (c2 != yi(t2).length && !o2)
              return false;
            for (var a2 = c2; a2--; ) {
              var l2 = f2[a2];
              if (!(o2 ? l2 in t2 : bl.call(t2, l2)))
                return false;
            }
            var s3 = i2.get(n3), h3 = i2.get(t2);
            if (s3 && h3)
              return s3 == t2 && h3 == n3;
            var p3 = true;
            i2.set(n3, t2), i2.set(t2, n3);
            for (var _3 = o2; ++a2 < c2; ) {
              l2 = f2[a2];
              var v2 = n3[l2], g2 = t2[l2];
              if (e2)
                var y2 = o2 ? e2(g2, v2, l2, t2, n3, i2) : e2(v2, g2, l2, n3, t2, i2);
              if (!(y2 === X ? v2 === g2 || u2(v2, g2, r2, e2, i2) : y2)) {
                p3 = false;
                break;
              }
              _3 || (_3 = "constructor" == l2);
            }
            if (p3 && !_3) {
              var d2 = n3.constructor, b2 = t2.constructor;
              d2 != b2 && "constructor" in n3 && "constructor" in t2 && !("function" == typeof d2 && d2 instanceof d2 && "function" == typeof b2 && b2 instanceof b2) && (p3 = false);
            }
            return i2.delete(n3), i2.delete(t2), p3;
          }
          function gi(n3) {
            return Ls(Vi(n3, X, _o), n3 + "");
          }
          function yi(n3) {
            return de2(n3, Pc, Is);
          }
          function di(n3) {
            return de2(n3, qc, Rs);
          }
          function bi(n3) {
            for (var t2 = n3.name + "", r2 = fs[t2], e2 = bl.call(fs, t2) ? r2.length : 0; e2--; ) {
              var u2 = r2[e2], i2 = u2.func;
              if (null == i2 || i2 == n3)
                return u2.name;
            }
            return t2;
          }
          function wi(n3) {
            return (bl.call(Z2, "placeholder") ? Z2 : n3).placeholder;
          }
          function mi() {
            var n3 = Z2.iteratee || Ca;
            return n3 = n3 === Ca ? De : n3, arguments.length ? n3(arguments[0], arguments[1]) : n3;
          }
          function xi(n3, t2) {
            var r2 = n3.__data__;
            return Ti(t2) ? r2["string" == typeof t2 ? "string" : "hash"] : r2.map;
          }
          function ji(n3) {
            for (var t2 = Pc(n3), r2 = t2.length; r2--; ) {
              var e2 = t2[r2], u2 = n3[e2];
              t2[r2] = [e2, u2, Fi(u2)];
            }
            return t2;
          }
          function Ai(n3, t2) {
            var r2 = B(n3, t2);
            return Ue(r2) ? r2 : X;
          }
          function ki(n3) {
            var t2 = bl.call(n3, Bl), r2 = n3[Bl];
            try {
              n3[Bl] = X;
              var e2 = true;
            } catch (n4) {
            }
            var u2 = xl.call(n3);
            return e2 && (t2 ? n3[Bl] = r2 : delete n3[Bl]), u2;
          }
          function Oi(n3, t2, r2) {
            for (var e2 = -1, u2 = r2.length; ++e2 < u2; ) {
              var i2 = r2[e2], o2 = i2.size;
              switch (i2.type) {
                case "drop":
                  n3 += o2;
                  break;
                case "dropRight":
                  t2 -= o2;
                  break;
                case "take":
                  t2 = Hl(t2, n3 + o2);
                  break;
                case "takeRight":
                  n3 = Gl(n3, t2 - o2);
              }
            }
            return { start: n3, end: t2 };
          }
          function Ii(n3) {
            var t2 = n3.match(Bt);
            return t2 ? t2[1].split(Tt) : [];
          }
          function Ri(n3, t2, r2) {
            t2 = ku(t2, n3);
            for (var e2 = -1, u2 = t2.length, i2 = false; ++e2 < u2; ) {
              var o2 = no(t2[e2]);
              if (!(i2 = null != n3 && r2(n3, o2)))
                break;
              n3 = n3[o2];
            }
            return i2 || ++e2 != u2 ? i2 : (u2 = null == n3 ? 0 : n3.length, !!u2 && oc(u2) && Ci(o2, u2) && (bh(n3) || dh(n3)));
          }
          function zi(n3) {
            var t2 = n3.length, r2 = new n3.constructor(t2);
            return t2 && "string" == typeof n3[0] && bl.call(n3, "index") && (r2.index = n3.index, r2.input = n3.input), r2;
          }
          function Ei(n3) {
            return "function" != typeof n3.constructor || Mi(n3) ? {} : gs(El(n3));
          }
          function Si(n3, t2, r2) {
            var e2 = n3.constructor;
            switch (t2) {
              case ft:
                return Ru(n3);
              case Nn:
              case Pn:
                return new e2(+n3);
              case ct:
                return zu(n3, r2);
              case at:
              case lt:
              case st:
              case ht:
              case pt:
              case _t:
              case vt:
              case gt:
              case yt:
                return Wu(n3, r2);
              case Gn:
                return new e2();
              case Hn:
              case rt:
                return new e2(n3);
              case nt:
                return Eu(n3);
              case tt:
                return new e2();
              case et:
                return Su(n3);
            }
          }
          function Wi(n3, t2) {
            var r2 = t2.length;
            if (!r2)
              return n3;
            var e2 = r2 - 1;
            return t2[e2] = (r2 > 1 ? "& " : "") + t2[e2], t2 = t2.join(r2 > 2 ? ", " : " "), n3.replace(Ut, "{\n/* [wrapped with " + t2 + "] */\n");
          }
          function Li(n3) {
            return bh(n3) || dh(n3) || !!(Cl && n3 && n3[Cl]);
          }
          function Ci(n3, t2) {
            var r2 = typeof n3;
            return t2 = null == t2 ? Wn : t2, !!t2 && ("number" == r2 || "symbol" != r2 && Vt.test(n3)) && n3 > -1 && n3 % 1 == 0 && n3 < t2;
          }
          function Ui(n3, t2, r2) {
            if (!fc(r2))
              return false;
            var e2 = typeof t2;
            return !!("number" == e2 ? Hf(r2) && Ci(t2, r2.length) : "string" == e2 && t2 in r2) && Gf(r2[t2], n3);
          }
          function Bi(n3, t2) {
            if (bh(n3))
              return false;
            var r2 = typeof n3;
            return !("number" != r2 && "symbol" != r2 && "boolean" != r2 && null != n3 && !bc(n3)) || (zt.test(n3) || !Rt.test(n3) || null != t2 && n3 in ll(t2));
          }
          function Ti(n3) {
            var t2 = typeof n3;
            return "string" == t2 || "number" == t2 || "symbol" == t2 || "boolean" == t2 ? "__proto__" !== n3 : null === n3;
          }
          function $i(n3) {
            var t2 = bi(n3), r2 = Z2[t2];
            if ("function" != typeof r2 || !(t2 in Ct2.prototype))
              return false;
            if (n3 === r2)
              return true;
            var e2 = Os(r2);
            return !!e2 && n3 === e2[0];
          }
          function Di(n3) {
            return !!ml && ml in n3;
          }
          function Mi(n3) {
            var t2 = n3 && n3.constructor;
            return n3 === ("function" == typeof t2 && t2.prototype || gl);
          }
          function Fi(n3) {
            return n3 === n3 && !fc(n3);
          }
          function Ni(n3, t2) {
            return function(r2) {
              return null != r2 && (r2[n3] === t2 && (t2 !== X || n3 in ll(r2)));
            };
          }
          function Pi(n3) {
            var t2 = Cf(n3, function(n4) {
              return r2.size === fn && r2.clear(), n4;
            }), r2 = t2.cache;
            return t2;
          }
          function qi(n3, t2) {
            var r2 = n3[1], e2 = t2[1], u2 = r2 | e2, i2 = u2 < (_n | vn | mn), o2 = e2 == mn && r2 == yn || e2 == mn && r2 == xn && n3[7].length <= t2[8] || e2 == (mn | xn) && t2[7].length <= t2[8] && r2 == yn;
            if (!i2 && !o2)
              return n3;
            e2 & _n && (n3[2] = t2[2], u2 |= r2 & _n ? 0 : gn);
            var f2 = t2[3];
            if (f2) {
              var c2 = n3[3];
              n3[3] = c2 ? Uu(c2, f2, t2[4]) : f2, n3[4] = c2 ? N(n3[3], cn) : t2[4];
            }
            return f2 = t2[5], f2 && (c2 = n3[5], n3[5] = c2 ? Bu(c2, f2, t2[6]) : f2, n3[6] = c2 ? N(n3[5], cn) : t2[6]), f2 = t2[7], f2 && (n3[7] = f2), e2 & mn && (n3[8] = null == n3[8] ? t2[8] : Hl(n3[8], t2[8])), null == n3[9] && (n3[9] = t2[9]), n3[0] = t2[0], n3[1] = u2, n3;
          }
          function Zi(n3) {
            var t2 = [];
            if (null != n3)
              for (var r2 in ll(n3))
                t2.push(r2);
            return t2;
          }
          function Ki(n3) {
            return xl.call(n3);
          }
          function Vi(t2, r2, e2) {
            return r2 = Gl(r2 === X ? t2.length - 1 : r2, 0), function() {
              for (var u2 = arguments, i2 = -1, o2 = Gl(u2.length - r2, 0), f2 = il(o2); ++i2 < o2; )
                f2[i2] = u2[r2 + i2];
              i2 = -1;
              for (var c2 = il(r2 + 1); ++i2 < r2; )
                c2[i2] = u2[i2];
              return c2[r2] = e2(f2), n2(t2, this, c2);
            };
          }
          function Gi(n3, t2) {
            return t2.length < 2 ? n3 : _e2(n3, au(t2, 0, -1));
          }
          function Hi(n3, t2) {
            for (var r2 = n3.length, e2 = Hl(t2.length, r2), u2 = Tu(n3); e2--; ) {
              var i2 = t2[e2];
              n3[e2] = Ci(i2, r2) ? u2[i2] : X;
            }
            return n3;
          }
          function Ji(n3, t2) {
            if (("constructor" !== t2 || "function" != typeof n3[t2]) && "__proto__" != t2)
              return n3[t2];
          }
          function Yi(n3, t2, r2) {
            var e2 = t2 + "";
            return Ls(n3, Wi(e2, ro(Ii(e2), r2)));
          }
          function Qi(n3) {
            var t2 = 0, r2 = 0;
            return function() {
              var e2 = Jl(), u2 = In - (e2 - r2);
              if (r2 = e2, u2 > 0) {
                if (++t2 >= On)
                  return arguments[0];
              } else
                t2 = 0;
              return n3.apply(X, arguments);
            };
          }
          function Xi(n3, t2) {
            var r2 = -1, e2 = n3.length, u2 = e2 - 1;
            for (t2 = t2 === X ? e2 : t2; ++r2 < t2; ) {
              var i2 = tu(r2, u2), o2 = n3[i2];
              n3[i2] = n3[r2], n3[r2] = o2;
            }
            return n3.length = t2, n3;
          }
          function no(n3) {
            if ("string" == typeof n3 || bc(n3))
              return n3;
            var t2 = n3 + "";
            return "0" == t2 && 1 / n3 == -Sn ? "-0" : t2;
          }
          function to(n3) {
            if (null != n3) {
              try {
                return dl.call(n3);
              } catch (n4) {
              }
              try {
                return n3 + "";
              } catch (n4) {
              }
            }
            return "";
          }
          function ro(n3, t2) {
            return r($n, function(r2) {
              var e2 = "_." + r2[0];
              t2 & r2[1] && !o(n3, e2) && n3.push(e2);
            }), n3.sort();
          }
          function eo(n3) {
            if (n3 instanceof Ct2)
              return n3.clone();
            var t2 = new Y2(n3.__wrapped__, n3.__chain__);
            return t2.__actions__ = Tu(n3.__actions__), t2.__index__ = n3.__index__, t2.__values__ = n3.__values__, t2;
          }
          function uo(n3, t2, r2) {
            t2 = (r2 ? Ui(n3, t2, r2) : t2 === X) ? 1 : Gl(kc(t2), 0);
            var e2 = null == n3 ? 0 : n3.length;
            if (!e2 || t2 < 1)
              return [];
            for (var u2 = 0, i2 = 0, o2 = il(Fl(e2 / t2)); u2 < e2; )
              o2[i2++] = au(n3, u2, u2 += t2);
            return o2;
          }
          function io(n3) {
            for (var t2 = -1, r2 = null == n3 ? 0 : n3.length, e2 = 0, u2 = []; ++t2 < r2; ) {
              var i2 = n3[t2];
              i2 && (u2[e2++] = i2);
            }
            return u2;
          }
          function oo() {
            var n3 = arguments.length;
            if (!n3)
              return [];
            for (var t2 = il(n3 - 1), r2 = arguments[0], e2 = n3; e2--; )
              t2[e2 - 1] = arguments[e2];
            return a(bh(r2) ? Tu(r2) : [r2], ee2(t2, 1));
          }
          function fo(n3, t2, r2) {
            var e2 = null == n3 ? 0 : n3.length;
            return e2 ? (t2 = r2 || t2 === X ? 1 : kc(t2), au(n3, t2 < 0 ? 0 : t2, e2)) : [];
          }
          function co(n3, t2, r2) {
            var e2 = null == n3 ? 0 : n3.length;
            return e2 ? (t2 = r2 || t2 === X ? 1 : kc(t2), t2 = e2 - t2, au(n3, 0, t2 < 0 ? 0 : t2)) : [];
          }
          function ao(n3, t2) {
            return n3 && n3.length ? bu(n3, mi(t2, 3), true, true) : [];
          }
          function lo(n3, t2) {
            return n3 && n3.length ? bu(n3, mi(t2, 3), true) : [];
          }
          function so(n3, t2, r2, e2) {
            var u2 = null == n3 ? 0 : n3.length;
            return u2 ? (r2 && "number" != typeof r2 && Ui(n3, t2, r2) && (r2 = 0, e2 = u2), ne2(n3, t2, r2, e2)) : [];
          }
          function ho(n3, t2, r2) {
            var e2 = null == n3 ? 0 : n3.length;
            if (!e2)
              return -1;
            var u2 = null == r2 ? 0 : kc(r2);
            return u2 < 0 && (u2 = Gl(e2 + u2, 0)), g(n3, mi(t2, 3), u2);
          }
          function po(n3, t2, r2) {
            var e2 = null == n3 ? 0 : n3.length;
            if (!e2)
              return -1;
            var u2 = e2 - 1;
            return r2 !== X && (u2 = kc(r2), u2 = r2 < 0 ? Gl(e2 + u2, 0) : Hl(u2, e2 - 1)), g(n3, mi(t2, 3), u2, true);
          }
          function _o(n3) {
            return (null == n3 ? 0 : n3.length) ? ee2(n3, 1) : [];
          }
          function vo(n3) {
            return (null == n3 ? 0 : n3.length) ? ee2(n3, Sn) : [];
          }
          function go(n3, t2) {
            return (null == n3 ? 0 : n3.length) ? (t2 = t2 === X ? 1 : kc(t2), ee2(n3, t2)) : [];
          }
          function yo(n3) {
            for (var t2 = -1, r2 = null == n3 ? 0 : n3.length, e2 = {}; ++t2 < r2; ) {
              var u2 = n3[t2];
              e2[u2[0]] = u2[1];
            }
            return e2;
          }
          function bo(n3) {
            return n3 && n3.length ? n3[0] : X;
          }
          function wo(n3, t2, r2) {
            var e2 = null == n3 ? 0 : n3.length;
            if (!e2)
              return -1;
            var u2 = null == r2 ? 0 : kc(r2);
            return u2 < 0 && (u2 = Gl(e2 + u2, 0)), y(n3, t2, u2);
          }
          function mo(n3) {
            return (null == n3 ? 0 : n3.length) ? au(n3, 0, -1) : [];
          }
          function xo(n3, t2) {
            return null == n3 ? "" : Kl.call(n3, t2);
          }
          function jo(n3) {
            var t2 = null == n3 ? 0 : n3.length;
            return t2 ? n3[t2 - 1] : X;
          }
          function Ao(n3, t2, r2) {
            var e2 = null == n3 ? 0 : n3.length;
            if (!e2)
              return -1;
            var u2 = e2;
            return r2 !== X && (u2 = kc(r2), u2 = u2 < 0 ? Gl(e2 + u2, 0) : Hl(u2, e2 - 1)), t2 === t2 ? K(n3, t2, u2) : g(n3, b, u2, true);
          }
          function ko2(n3, t2) {
            return n3 && n3.length ? Ge(n3, kc(t2)) : X;
          }
          function Oo(n3, t2) {
            return n3 && n3.length && t2 && t2.length ? Xe(n3, t2) : n3;
          }
          function Io(n3, t2, r2) {
            return n3 && n3.length && t2 && t2.length ? Xe(n3, t2, mi(r2, 2)) : n3;
          }
          function Ro(n3, t2, r2) {
            return n3 && n3.length && t2 && t2.length ? Xe(n3, t2, X, r2) : n3;
          }
          function zo(n3, t2) {
            var r2 = [];
            if (!n3 || !n3.length)
              return r2;
            var e2 = -1, u2 = [], i2 = n3.length;
            for (t2 = mi(t2, 3); ++e2 < i2; ) {
              var o2 = n3[e2];
              t2(o2, e2, n3) && (r2.push(o2), u2.push(e2));
            }
            return nu(n3, u2), r2;
          }
          function Eo(n3) {
            return null == n3 ? n3 : Xl.call(n3);
          }
          function So(n3, t2, r2) {
            var e2 = null == n3 ? 0 : n3.length;
            return e2 ? (r2 && "number" != typeof r2 && Ui(n3, t2, r2) ? (t2 = 0, r2 = e2) : (t2 = null == t2 ? 0 : kc(t2), r2 = r2 === X ? e2 : kc(r2)), au(n3, t2, r2)) : [];
          }
          function Wo(n3, t2) {
            return su(n3, t2);
          }
          function Lo(n3, t2, r2) {
            return hu(n3, t2, mi(r2, 2));
          }
          function Co(n3, t2) {
            var r2 = null == n3 ? 0 : n3.length;
            if (r2) {
              var e2 = su(n3, t2);
              if (e2 < r2 && Gf(n3[e2], t2))
                return e2;
            }
            return -1;
          }
          function Uo(n3, t2) {
            return su(n3, t2, true);
          }
          function Bo(n3, t2, r2) {
            return hu(n3, t2, mi(r2, 2), true);
          }
          function To(n3, t2) {
            if (null == n3 ? 0 : n3.length) {
              var r2 = su(n3, t2, true) - 1;
              if (Gf(n3[r2], t2))
                return r2;
            }
            return -1;
          }
          function $o(n3) {
            return n3 && n3.length ? pu(n3) : [];
          }
          function Do(n3, t2) {
            return n3 && n3.length ? pu(n3, mi(t2, 2)) : [];
          }
          function Mo(n3) {
            var t2 = null == n3 ? 0 : n3.length;
            return t2 ? au(n3, 1, t2) : [];
          }
          function Fo(n3, t2, r2) {
            return n3 && n3.length ? (t2 = r2 || t2 === X ? 1 : kc(t2), au(n3, 0, t2 < 0 ? 0 : t2)) : [];
          }
          function No(n3, t2, r2) {
            var e2 = null == n3 ? 0 : n3.length;
            return e2 ? (t2 = r2 || t2 === X ? 1 : kc(t2), t2 = e2 - t2, au(n3, t2 < 0 ? 0 : t2, e2)) : [];
          }
          function Po(n3, t2) {
            return n3 && n3.length ? bu(n3, mi(t2, 3), false, true) : [];
          }
          function qo(n3, t2) {
            return n3 && n3.length ? bu(n3, mi(t2, 3)) : [];
          }
          function Zo(n3) {
            return n3 && n3.length ? gu(n3) : [];
          }
          function Ko(n3, t2) {
            return n3 && n3.length ? gu(n3, mi(t2, 2)) : [];
          }
          function Vo(n3, t2) {
            return t2 = "function" == typeof t2 ? t2 : X, n3 && n3.length ? gu(n3, X, t2) : [];
          }
          function Go(n3) {
            if (!n3 || !n3.length)
              return [];
            var t2 = 0;
            return n3 = i(n3, function(n4) {
              if (Jf(n4))
                return t2 = Gl(n4.length, t2), true;
            }), O(t2, function(t3) {
              return c(n3, m(t3));
            });
          }
          function Ho(t2, r2) {
            if (!t2 || !t2.length)
              return [];
            var e2 = Go(t2);
            return null == r2 ? e2 : c(e2, function(t3) {
              return n2(r2, X, t3);
            });
          }
          function Jo(n3, t2) {
            return xu(n3 || [], t2 || [], Sr2);
          }
          function Yo(n3, t2) {
            return xu(n3 || [], t2 || [], fu);
          }
          function Qo(n3) {
            var t2 = Z2(n3);
            return t2.__chain__ = true, t2;
          }
          function Xo(n3, t2) {
            return t2(n3), n3;
          }
          function nf(n3, t2) {
            return t2(n3);
          }
          function tf() {
            return Qo(this);
          }
          function rf() {
            return new Y2(this.value(), this.__chain__);
          }
          function ef() {
            this.__values__ === X && (this.__values__ = jc(this.value()));
            var n3 = this.__index__ >= this.__values__.length;
            return { done: n3, value: n3 ? X : this.__values__[this.__index__++] };
          }
          function uf() {
            return this;
          }
          function of(n3) {
            for (var t2, r2 = this; r2 instanceof J2; ) {
              var e2 = eo(r2);
              e2.__index__ = 0, e2.__values__ = X, t2 ? u2.__wrapped__ = e2 : t2 = e2;
              var u2 = e2;
              r2 = r2.__wrapped__;
            }
            return u2.__wrapped__ = n3, t2;
          }
          function ff() {
            var n3 = this.__wrapped__;
            if (n3 instanceof Ct2) {
              var t2 = n3;
              return this.__actions__.length && (t2 = new Ct2(this)), t2 = t2.reverse(), t2.__actions__.push({ func: nf, args: [Eo], thisArg: X }), new Y2(t2, this.__chain__);
            }
            return this.thru(Eo);
          }
          function cf() {
            return wu(this.__wrapped__, this.__actions__);
          }
          function af(n3, t2, r2) {
            var e2 = bh(n3) ? u : Jr2;
            return r2 && Ui(n3, t2, r2) && (t2 = X), e2(n3, mi(t2, 3));
          }
          function lf(n3, t2) {
            return (bh(n3) ? i : te2)(n3, mi(t2, 3));
          }
          function sf(n3, t2) {
            return ee2(yf(n3, t2), 1);
          }
          function hf(n3, t2) {
            return ee2(yf(n3, t2), Sn);
          }
          function pf(n3, t2, r2) {
            return r2 = r2 === X ? 1 : kc(r2), ee2(yf(n3, t2), r2);
          }
          function _f(n3, t2) {
            return (bh(n3) ? r : ys)(n3, mi(t2, 3));
          }
          function vf(n3, t2) {
            return (bh(n3) ? e : ds)(n3, mi(t2, 3));
          }
          function gf(n3, t2, r2, e2) {
            n3 = Hf(n3) ? n3 : ra(n3), r2 = r2 && !e2 ? kc(r2) : 0;
            var u2 = n3.length;
            return r2 < 0 && (r2 = Gl(u2 + r2, 0)), dc(n3) ? r2 <= u2 && n3.indexOf(t2, r2) > -1 : !!u2 && y(n3, t2, r2) > -1;
          }
          function yf(n3, t2) {
            return (bh(n3) ? c : Pe)(n3, mi(t2, 3));
          }
          function df(n3, t2, r2, e2) {
            return null == n3 ? [] : (bh(t2) || (t2 = null == t2 ? [] : [t2]), r2 = e2 ? X : r2, bh(r2) || (r2 = null == r2 ? [] : [r2]), He(n3, t2, r2));
          }
          function bf(n3, t2, r2) {
            var e2 = bh(n3) ? l : j, u2 = arguments.length < 3;
            return e2(n3, mi(t2, 4), r2, u2, ys);
          }
          function wf(n3, t2, r2) {
            var e2 = bh(n3) ? s2 : j, u2 = arguments.length < 3;
            return e2(n3, mi(t2, 4), r2, u2, ds);
          }
          function mf(n3, t2) {
            return (bh(n3) ? i : te2)(n3, Uf(mi(t2, 3)));
          }
          function xf(n3) {
            return (bh(n3) ? Ir2 : iu)(n3);
          }
          function jf(n3, t2, r2) {
            return t2 = (r2 ? Ui(n3, t2, r2) : t2 === X) ? 1 : kc(t2), (bh(n3) ? Rr2 : ou)(n3, t2);
          }
          function Af(n3) {
            return (bh(n3) ? zr2 : cu)(n3);
          }
          function kf(n3) {
            if (null == n3)
              return 0;
            if (Hf(n3))
              return dc(n3) ? V(n3) : n3.length;
            var t2 = zs(n3);
            return t2 == Gn || t2 == tt ? n3.size : Me(n3).length;
          }
          function Of(n3, t2, r2) {
            var e2 = bh(n3) ? h2 : lu;
            return r2 && Ui(n3, t2, r2) && (t2 = X), e2(n3, mi(t2, 3));
          }
          function If(n3, t2) {
            if ("function" != typeof t2)
              throw new pl(en);
            return n3 = kc(n3), function() {
              if (--n3 < 1)
                return t2.apply(this, arguments);
            };
          }
          function Rf(n3, t2, r2) {
            return t2 = r2 ? X : t2, t2 = n3 && null == t2 ? n3.length : t2, ai(n3, mn, X, X, X, X, t2);
          }
          function zf(n3, t2) {
            var r2;
            if ("function" != typeof t2)
              throw new pl(en);
            return n3 = kc(n3), function() {
              return --n3 > 0 && (r2 = t2.apply(this, arguments)), n3 <= 1 && (t2 = X), r2;
            };
          }
          function Ef(n3, t2, r2) {
            t2 = r2 ? X : t2;
            var e2 = ai(n3, yn, X, X, X, X, X, t2);
            return e2.placeholder = Ef.placeholder, e2;
          }
          function Sf(n3, t2, r2) {
            t2 = r2 ? X : t2;
            var e2 = ai(n3, dn, X, X, X, X, X, t2);
            return e2.placeholder = Sf.placeholder, e2;
          }
          function Wf(n3, t2, r2) {
            function e2(t3) {
              var r3 = h3, e3 = p3;
              return h3 = p3 = X, d2 = t3, v2 = n3.apply(e3, r3);
            }
            function u2(n4) {
              return d2 = n4, g2 = Ws(f2, t2), b2 ? e2(n4) : v2;
            }
            function i2(n4) {
              var r3 = n4 - y2, e3 = n4 - d2, u3 = t2 - r3;
              return w3 ? Hl(u3, _3 - e3) : u3;
            }
            function o2(n4) {
              var r3 = n4 - y2, e3 = n4 - d2;
              return y2 === X || r3 >= t2 || r3 < 0 || w3 && e3 >= _3;
            }
            function f2() {
              var n4 = fh();
              return o2(n4) ? c2(n4) : (g2 = Ws(f2, i2(n4)), X);
            }
            function c2(n4) {
              return g2 = X, m2 && h3 ? e2(n4) : (h3 = p3 = X, v2);
            }
            function a2() {
              g2 !== X && As(g2), d2 = 0, h3 = y2 = p3 = g2 = X;
            }
            function l2() {
              return g2 === X ? v2 : c2(fh());
            }
            function s3() {
              var n4 = fh(), r3 = o2(n4);
              if (h3 = arguments, p3 = this, y2 = n4, r3) {
                if (g2 === X)
                  return u2(y2);
                if (w3)
                  return As(g2), g2 = Ws(f2, t2), e2(y2);
              }
              return g2 === X && (g2 = Ws(f2, t2)), v2;
            }
            var h3, p3, _3, v2, g2, y2, d2 = 0, b2 = false, w3 = false, m2 = true;
            if ("function" != typeof n3)
              throw new pl(en);
            return t2 = Ic(t2) || 0, fc(r2) && (b2 = !!r2.leading, w3 = "maxWait" in r2, _3 = w3 ? Gl(Ic(r2.maxWait) || 0, t2) : _3, m2 = "trailing" in r2 ? !!r2.trailing : m2), s3.cancel = a2, s3.flush = l2, s3;
          }
          function Lf(n3) {
            return ai(n3, jn);
          }
          function Cf(n3, t2) {
            if ("function" != typeof n3 || null != t2 && "function" != typeof t2)
              throw new pl(en);
            var r2 = function() {
              var e2 = arguments, u2 = t2 ? t2.apply(this, e2) : e2[0], i2 = r2.cache;
              if (i2.has(u2))
                return i2.get(u2);
              var o2 = n3.apply(this, e2);
              return r2.cache = i2.set(u2, o2) || i2, o2;
            };
            return r2.cache = new (Cf.Cache || sr2)(), r2;
          }
          function Uf(n3) {
            if ("function" != typeof n3)
              throw new pl(en);
            return function() {
              var t2 = arguments;
              switch (t2.length) {
                case 0:
                  return !n3.call(this);
                case 1:
                  return !n3.call(this, t2[0]);
                case 2:
                  return !n3.call(this, t2[0], t2[1]);
                case 3:
                  return !n3.call(this, t2[0], t2[1], t2[2]);
              }
              return !n3.apply(this, t2);
            };
          }
          function Bf(n3) {
            return zf(2, n3);
          }
          function Tf(n3, t2) {
            if ("function" != typeof n3)
              throw new pl(en);
            return t2 = t2 === X ? t2 : kc(t2), uu(n3, t2);
          }
          function $f(t2, r2) {
            if ("function" != typeof t2)
              throw new pl(en);
            return r2 = null == r2 ? 0 : Gl(kc(r2), 0), uu(function(e2) {
              var u2 = e2[r2], i2 = Ou(e2, 0, r2);
              return u2 && a(i2, u2), n2(t2, this, i2);
            });
          }
          function Df(n3, t2, r2) {
            var e2 = true, u2 = true;
            if ("function" != typeof n3)
              throw new pl(en);
            return fc(r2) && (e2 = "leading" in r2 ? !!r2.leading : e2, u2 = "trailing" in r2 ? !!r2.trailing : u2), Wf(n3, t2, { leading: e2, maxWait: t2, trailing: u2 });
          }
          function Mf(n3) {
            return Rf(n3, 1);
          }
          function Ff(n3, t2) {
            return ph(Au(t2), n3);
          }
          function Nf() {
            if (!arguments.length)
              return [];
            var n3 = arguments[0];
            return bh(n3) ? n3 : [n3];
          }
          function Pf(n3) {
            return Fr2(n3, sn);
          }
          function qf(n3, t2) {
            return t2 = "function" == typeof t2 ? t2 : X, Fr2(n3, sn, t2);
          }
          function Zf(n3) {
            return Fr2(n3, an | sn);
          }
          function Kf(n3, t2) {
            return t2 = "function" == typeof t2 ? t2 : X, Fr2(n3, an | sn, t2);
          }
          function Vf(n3, t2) {
            return null == t2 || Pr2(n3, t2, Pc(t2));
          }
          function Gf(n3, t2) {
            return n3 === t2 || n3 !== n3 && t2 !== t2;
          }
          function Hf(n3) {
            return null != n3 && oc(n3.length) && !uc(n3);
          }
          function Jf(n3) {
            return cc(n3) && Hf(n3);
          }
          function Yf(n3) {
            return n3 === true || n3 === false || cc(n3) && we(n3) == Nn;
          }
          function Qf(n3) {
            return cc(n3) && 1 === n3.nodeType && !gc(n3);
          }
          function Xf(n3) {
            if (null == n3)
              return true;
            if (Hf(n3) && (bh(n3) || "string" == typeof n3 || "function" == typeof n3.splice || mh(n3) || Oh(n3) || dh(n3)))
              return !n3.length;
            var t2 = zs(n3);
            if (t2 == Gn || t2 == tt)
              return !n3.size;
            if (Mi(n3))
              return !Me(n3).length;
            for (var r2 in n3)
              if (bl.call(n3, r2))
                return false;
            return true;
          }
          function nc(n3, t2) {
            return Se(n3, t2);
          }
          function tc(n3, t2, r2) {
            r2 = "function" == typeof r2 ? r2 : X;
            var e2 = r2 ? r2(n3, t2) : X;
            return e2 === X ? Se(n3, t2, X, r2) : !!e2;
          }
          function rc(n3) {
            if (!cc(n3))
              return false;
            var t2 = we(n3);
            return t2 == Zn || t2 == qn || "string" == typeof n3.message && "string" == typeof n3.name && !gc(n3);
          }
          function ec(n3) {
            return "number" == typeof n3 && Zl(n3);
          }
          function uc(n3) {
            if (!fc(n3))
              return false;
            var t2 = we(n3);
            return t2 == Kn || t2 == Vn || t2 == Fn || t2 == Xn;
          }
          function ic(n3) {
            return "number" == typeof n3 && n3 == kc(n3);
          }
          function oc(n3) {
            return "number" == typeof n3 && n3 > -1 && n3 % 1 == 0 && n3 <= Wn;
          }
          function fc(n3) {
            var t2 = typeof n3;
            return null != n3 && ("object" == t2 || "function" == t2);
          }
          function cc(n3) {
            return null != n3 && "object" == typeof n3;
          }
          function ac(n3, t2) {
            return n3 === t2 || Ce(n3, t2, ji(t2));
          }
          function lc(n3, t2, r2) {
            return r2 = "function" == typeof r2 ? r2 : X, Ce(n3, t2, ji(t2), r2);
          }
          function sc(n3) {
            return vc(n3) && n3 != +n3;
          }
          function hc(n3) {
            if (Es(n3))
              throw new fl(rn);
            return Ue(n3);
          }
          function pc(n3) {
            return null === n3;
          }
          function _c(n3) {
            return null == n3;
          }
          function vc(n3) {
            return "number" == typeof n3 || cc(n3) && we(n3) == Hn;
          }
          function gc(n3) {
            if (!cc(n3) || we(n3) != Yn)
              return false;
            var t2 = El(n3);
            if (null === t2)
              return true;
            var r2 = bl.call(t2, "constructor") && t2.constructor;
            return "function" == typeof r2 && r2 instanceof r2 && dl.call(r2) == jl;
          }
          function yc(n3) {
            return ic(n3) && n3 >= -Wn && n3 <= Wn;
          }
          function dc(n3) {
            return "string" == typeof n3 || !bh(n3) && cc(n3) && we(n3) == rt;
          }
          function bc(n3) {
            return "symbol" == typeof n3 || cc(n3) && we(n3) == et;
          }
          function wc(n3) {
            return n3 === X;
          }
          function mc(n3) {
            return cc(n3) && zs(n3) == it;
          }
          function xc(n3) {
            return cc(n3) && we(n3) == ot;
          }
          function jc(n3) {
            if (!n3)
              return [];
            if (Hf(n3))
              return dc(n3) ? G(n3) : Tu(n3);
            if (Ul && n3[Ul])
              return D(n3[Ul]());
            var t2 = zs(n3);
            return (t2 == Gn ? M : t2 == tt ? P : ra)(n3);
          }
          function Ac(n3) {
            if (!n3)
              return 0 === n3 ? n3 : 0;
            if (n3 = Ic(n3), n3 === Sn || n3 === -Sn) {
              return (n3 < 0 ? -1 : 1) * Ln;
            }
            return n3 === n3 ? n3 : 0;
          }
          function kc(n3) {
            var t2 = Ac(n3), r2 = t2 % 1;
            return t2 === t2 ? r2 ? t2 - r2 : t2 : 0;
          }
          function Oc(n3) {
            return n3 ? Mr2(kc(n3), 0, Un) : 0;
          }
          function Ic(n3) {
            if ("number" == typeof n3)
              return n3;
            if (bc(n3))
              return Cn;
            if (fc(n3)) {
              var t2 = "function" == typeof n3.valueOf ? n3.valueOf() : n3;
              n3 = fc(t2) ? t2 + "" : t2;
            }
            if ("string" != typeof n3)
              return 0 === n3 ? n3 : +n3;
            n3 = R(n3);
            var r2 = qt.test(n3);
            return r2 || Kt.test(n3) ? Xr(n3.slice(2), r2 ? 2 : 8) : Pt.test(n3) ? Cn : +n3;
          }
          function Rc(n3) {
            return $u(n3, qc(n3));
          }
          function zc(n3) {
            return n3 ? Mr2(kc(n3), -Wn, Wn) : 0 === n3 ? n3 : 0;
          }
          function Ec(n3) {
            return null == n3 ? "" : vu(n3);
          }
          function Sc(n3, t2) {
            var r2 = gs(n3);
            return null == t2 ? r2 : Cr2(r2, t2);
          }
          function Wc(n3, t2) {
            return v(n3, mi(t2, 3), ue2);
          }
          function Lc(n3, t2) {
            return v(n3, mi(t2, 3), oe2);
          }
          function Cc(n3, t2) {
            return null == n3 ? n3 : bs(n3, mi(t2, 3), qc);
          }
          function Uc(n3, t2) {
            return null == n3 ? n3 : ws(n3, mi(t2, 3), qc);
          }
          function Bc(n3, t2) {
            return n3 && ue2(n3, mi(t2, 3));
          }
          function Tc(n3, t2) {
            return n3 && oe2(n3, mi(t2, 3));
          }
          function $c(n3) {
            return null == n3 ? [] : fe2(n3, Pc(n3));
          }
          function Dc(n3) {
            return null == n3 ? [] : fe2(n3, qc(n3));
          }
          function Mc(n3, t2, r2) {
            var e2 = null == n3 ? X : _e2(n3, t2);
            return e2 === X ? r2 : e2;
          }
          function Fc(n3, t2) {
            return null != n3 && Ri(n3, t2, xe);
          }
          function Nc(n3, t2) {
            return null != n3 && Ri(n3, t2, je);
          }
          function Pc(n3) {
            return Hf(n3) ? Or2(n3) : Me(n3);
          }
          function qc(n3) {
            return Hf(n3) ? Or2(n3, true) : Fe(n3);
          }
          function Zc(n3, t2) {
            var r2 = {};
            return t2 = mi(t2, 3), ue2(n3, function(n4, e2, u2) {
              Br2(r2, t2(n4, e2, u2), n4);
            }), r2;
          }
          function Kc(n3, t2) {
            var r2 = {};
            return t2 = mi(t2, 3), ue2(n3, function(n4, e2, u2) {
              Br2(r2, e2, t2(n4, e2, u2));
            }), r2;
          }
          function Vc(n3, t2) {
            return Gc(n3, Uf(mi(t2)));
          }
          function Gc(n3, t2) {
            if (null == n3)
              return {};
            var r2 = c(di(n3), function(n4) {
              return [n4];
            });
            return t2 = mi(t2), Ye(n3, r2, function(n4, r3) {
              return t2(n4, r3[0]);
            });
          }
          function Hc(n3, t2, r2) {
            t2 = ku(t2, n3);
            var e2 = -1, u2 = t2.length;
            for (u2 || (u2 = 1, n3 = X); ++e2 < u2; ) {
              var i2 = null == n3 ? X : n3[no(t2[e2])];
              i2 === X && (e2 = u2, i2 = r2), n3 = uc(i2) ? i2.call(n3) : i2;
            }
            return n3;
          }
          function Jc(n3, t2, r2) {
            return null == n3 ? n3 : fu(n3, t2, r2);
          }
          function Yc(n3, t2, r2, e2) {
            return e2 = "function" == typeof e2 ? e2 : X, null == n3 ? n3 : fu(n3, t2, r2, e2);
          }
          function Qc(n3, t2, e2) {
            var u2 = bh(n3), i2 = u2 || mh(n3) || Oh(n3);
            if (t2 = mi(t2, 4), null == e2) {
              var o2 = n3 && n3.constructor;
              e2 = i2 ? u2 ? new o2() : [] : fc(n3) && uc(o2) ? gs(El(n3)) : {};
            }
            return (i2 ? r : ue2)(n3, function(n4, r2, u3) {
              return t2(e2, n4, r2, u3);
            }), e2;
          }
          function Xc(n3, t2) {
            return null == n3 || yu(n3, t2);
          }
          function na(n3, t2, r2) {
            return null == n3 ? n3 : du(n3, t2, Au(r2));
          }
          function ta(n3, t2, r2, e2) {
            return e2 = "function" == typeof e2 ? e2 : X, null == n3 ? n3 : du(n3, t2, Au(r2), e2);
          }
          function ra(n3) {
            return null == n3 ? [] : E(n3, Pc(n3));
          }
          function ea(n3) {
            return null == n3 ? [] : E(n3, qc(n3));
          }
          function ua(n3, t2, r2) {
            return r2 === X && (r2 = t2, t2 = X), r2 !== X && (r2 = Ic(r2), r2 = r2 === r2 ? r2 : 0), t2 !== X && (t2 = Ic(t2), t2 = t2 === t2 ? t2 : 0), Mr2(Ic(n3), t2, r2);
          }
          function ia(n3, t2, r2) {
            return t2 = Ac(t2), r2 === X ? (r2 = t2, t2 = 0) : r2 = Ac(r2), n3 = Ic(n3), Ae(n3, t2, r2);
          }
          function oa(n3, t2, r2) {
            if (r2 && "boolean" != typeof r2 && Ui(n3, t2, r2) && (t2 = r2 = X), r2 === X && ("boolean" == typeof t2 ? (r2 = t2, t2 = X) : "boolean" == typeof n3 && (r2 = n3, n3 = X)), n3 === X && t2 === X ? (n3 = 0, t2 = 1) : (n3 = Ac(n3), t2 === X ? (t2 = n3, n3 = 0) : t2 = Ac(t2)), n3 > t2) {
              var e2 = n3;
              n3 = t2, t2 = e2;
            }
            if (r2 || n3 % 1 || t2 % 1) {
              var u2 = Ql();
              return Hl(n3 + u2 * (t2 - n3 + Qr("1e-" + ((u2 + "").length - 1))), t2);
            }
            return tu(n3, t2);
          }
          function fa(n3) {
            return Qh(Ec(n3).toLowerCase());
          }
          function ca(n3) {
            return n3 = Ec(n3), n3 && n3.replace(Gt, ve).replace(Dr, "");
          }
          function aa(n3, t2, r2) {
            n3 = Ec(n3), t2 = vu(t2);
            var e2 = n3.length;
            r2 = r2 === X ? e2 : Mr2(kc(r2), 0, e2);
            var u2 = r2;
            return r2 -= t2.length, r2 >= 0 && n3.slice(r2, u2) == t2;
          }
          function la(n3) {
            return n3 = Ec(n3), n3 && At.test(n3) ? n3.replace(xt, ge) : n3;
          }
          function sa(n3) {
            return n3 = Ec(n3), n3 && Wt.test(n3) ? n3.replace(St, "\\$&") : n3;
          }
          function ha(n3, t2, r2) {
            n3 = Ec(n3), t2 = kc(t2);
            var e2 = t2 ? V(n3) : 0;
            if (!t2 || e2 >= t2)
              return n3;
            var u2 = (t2 - e2) / 2;
            return ri(Nl(u2), r2) + n3 + ri(Fl(u2), r2);
          }
          function pa(n3, t2, r2) {
            n3 = Ec(n3), t2 = kc(t2);
            var e2 = t2 ? V(n3) : 0;
            return t2 && e2 < t2 ? n3 + ri(t2 - e2, r2) : n3;
          }
          function _a(n3, t2, r2) {
            n3 = Ec(n3), t2 = kc(t2);
            var e2 = t2 ? V(n3) : 0;
            return t2 && e2 < t2 ? ri(t2 - e2, r2) + n3 : n3;
          }
          function va(n3, t2, r2) {
            return r2 || null == t2 ? t2 = 0 : t2 && (t2 = +t2), Yl(Ec(n3).replace(Lt, ""), t2 || 0);
          }
          function ga(n3, t2, r2) {
            return t2 = (r2 ? Ui(n3, t2, r2) : t2 === X) ? 1 : kc(t2), eu(Ec(n3), t2);
          }
          function ya() {
            var n3 = arguments, t2 = Ec(n3[0]);
            return n3.length < 3 ? t2 : t2.replace(n3[1], n3[2]);
          }
          function da(n3, t2, r2) {
            return r2 && "number" != typeof r2 && Ui(n3, t2, r2) && (t2 = r2 = X), (r2 = r2 === X ? Un : r2 >>> 0) ? (n3 = Ec(n3), n3 && ("string" == typeof t2 || null != t2 && !Ah(t2)) && (t2 = vu(t2), !t2 && T(n3)) ? Ou(G(n3), 0, r2) : n3.split(t2, r2)) : [];
          }
          function ba(n3, t2, r2) {
            return n3 = Ec(n3), r2 = null == r2 ? 0 : Mr2(kc(r2), 0, n3.length), t2 = vu(t2), n3.slice(r2, r2 + t2.length) == t2;
          }
          function wa(n3, t2, r2) {
            var e2 = Z2.templateSettings;
            r2 && Ui(n3, t2, r2) && (t2 = X), n3 = Ec(n3), t2 = Sh({}, t2, e2, li);
            var u2, i2, o2 = Sh({}, t2.imports, e2.imports, li), f2 = Pc(o2), c2 = E(o2, f2), a2 = 0, l2 = t2.interpolate || Ht, s3 = "__p += '", h3 = sl((t2.escape || Ht).source + "|" + l2.source + "|" + (l2 === It ? Ft : Ht).source + "|" + (t2.evaluate || Ht).source + "|$", "g"), p3 = "//# sourceURL=" + (bl.call(t2, "sourceURL") ? (t2.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++Zr + "]") + "\n";
            n3.replace(h3, function(t3, r3, e3, o3, f3, c3) {
              return e3 || (e3 = o3), s3 += n3.slice(a2, c3).replace(Jt, U), r3 && (u2 = true, s3 += "' +\n__e(" + r3 + ") +\n'"), f3 && (i2 = true, s3 += "';\n" + f3 + ";\n__p += '"), e3 && (s3 += "' +\n((__t = (" + e3 + ")) == null ? '' : __t) +\n'"), a2 = c3 + t3.length, t3;
            }), s3 += "';\n";
            var _3 = bl.call(t2, "variable") && t2.variable;
            if (_3) {
              if (Dt.test(_3))
                throw new fl(un);
            } else
              s3 = "with (obj) {\n" + s3 + "\n}\n";
            s3 = (i2 ? s3.replace(dt, "") : s3).replace(bt, "$1").replace(wt, "$1;"), s3 = "function(" + (_3 || "obj") + ") {\n" + (_3 ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (u2 ? ", __e = _.escape" : "") + (i2 ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + s3 + "return __p\n}";
            var v2 = Xh(function() {
              return cl(f2, p3 + "return " + s3).apply(X, c2);
            });
            if (v2.source = s3, rc(v2))
              throw v2;
            return v2;
          }
          function ma(n3) {
            return Ec(n3).toLowerCase();
          }
          function xa(n3) {
            return Ec(n3).toUpperCase();
          }
          function ja(n3, t2, r2) {
            if (n3 = Ec(n3), n3 && (r2 || t2 === X))
              return R(n3);
            if (!n3 || !(t2 = vu(t2)))
              return n3;
            var e2 = G(n3), u2 = G(t2);
            return Ou(e2, W(e2, u2), L(e2, u2) + 1).join("");
          }
          function Aa(n3, t2, r2) {
            if (n3 = Ec(n3), n3 && (r2 || t2 === X))
              return n3.slice(0, H(n3) + 1);
            if (!n3 || !(t2 = vu(t2)))
              return n3;
            var e2 = G(n3);
            return Ou(e2, 0, L(e2, G(t2)) + 1).join("");
          }
          function ka(n3, t2, r2) {
            if (n3 = Ec(n3), n3 && (r2 || t2 === X))
              return n3.replace(Lt, "");
            if (!n3 || !(t2 = vu(t2)))
              return n3;
            var e2 = G(n3);
            return Ou(e2, W(e2, G(t2))).join("");
          }
          function Oa(n3, t2) {
            var r2 = An, e2 = kn;
            if (fc(t2)) {
              var u2 = "separator" in t2 ? t2.separator : u2;
              r2 = "length" in t2 ? kc(t2.length) : r2, e2 = "omission" in t2 ? vu(t2.omission) : e2;
            }
            n3 = Ec(n3);
            var i2 = n3.length;
            if (T(n3)) {
              var o2 = G(n3);
              i2 = o2.length;
            }
            if (r2 >= i2)
              return n3;
            var f2 = r2 - V(e2);
            if (f2 < 1)
              return e2;
            var c2 = o2 ? Ou(o2, 0, f2).join("") : n3.slice(0, f2);
            if (u2 === X)
              return c2 + e2;
            if (o2 && (f2 += c2.length - f2), Ah(u2)) {
              if (n3.slice(f2).search(u2)) {
                var a2, l2 = c2;
                for (u2.global || (u2 = sl(u2.source, Ec(Nt.exec(u2)) + "g")), u2.lastIndex = 0; a2 = u2.exec(l2); )
                  var s3 = a2.index;
                c2 = c2.slice(0, s3 === X ? f2 : s3);
              }
            } else if (n3.indexOf(vu(u2), f2) != f2) {
              var h3 = c2.lastIndexOf(u2);
              h3 > -1 && (c2 = c2.slice(0, h3));
            }
            return c2 + e2;
          }
          function Ia(n3) {
            return n3 = Ec(n3), n3 && jt.test(n3) ? n3.replace(mt, ye) : n3;
          }
          function Ra(n3, t2, r2) {
            return n3 = Ec(n3), t2 = r2 ? X : t2, t2 === X ? $2(n3) ? Q(n3) : _2(n3) : n3.match(t2) || [];
          }
          function za(t2) {
            var r2 = null == t2 ? 0 : t2.length, e2 = mi();
            return t2 = r2 ? c(t2, function(n3) {
              if ("function" != typeof n3[1])
                throw new pl(en);
              return [e2(n3[0]), n3[1]];
            }) : [], uu(function(e3) {
              for (var u2 = -1; ++u2 < r2; ) {
                var i2 = t2[u2];
                if (n2(i2[0], this, e3))
                  return n2(i2[1], this, e3);
              }
            });
          }
          function Ea(n3) {
            return Nr2(Fr2(n3, an));
          }
          function Sa(n3) {
            return function() {
              return n3;
            };
          }
          function Wa(n3, t2) {
            return null == n3 || n3 !== n3 ? t2 : n3;
          }
          function La(n3) {
            return n3;
          }
          function Ca(n3) {
            return De("function" == typeof n3 ? n3 : Fr2(n3, an));
          }
          function Ua(n3) {
            return qe(Fr2(n3, an));
          }
          function Ba(n3, t2) {
            return Ze(n3, Fr2(t2, an));
          }
          function Ta(n3, t2, e2) {
            var u2 = Pc(t2), i2 = fe2(t2, u2);
            null != e2 || fc(t2) && (i2.length || !u2.length) || (e2 = t2, t2 = n3, n3 = this, i2 = fe2(t2, Pc(t2)));
            var o2 = !(fc(e2) && "chain" in e2 && !e2.chain), f2 = uc(n3);
            return r(i2, function(r2) {
              var e3 = t2[r2];
              n3[r2] = e3, f2 && (n3.prototype[r2] = function() {
                var t3 = this.__chain__;
                if (o2 || t3) {
                  var r3 = n3(this.__wrapped__);
                  return (r3.__actions__ = Tu(this.__actions__)).push({ func: e3, args: arguments, thisArg: n3 }), r3.__chain__ = t3, r3;
                }
                return e3.apply(n3, a([this.value()], arguments));
              });
            }), n3;
          }
          function $a() {
            return re._ === this && (re._ = Al), this;
          }
          function Da() {
          }
          function Ma(n3) {
            return n3 = kc(n3), uu(function(t2) {
              return Ge(t2, n3);
            });
          }
          function Fa(n3) {
            return Bi(n3) ? m(no(n3)) : Qe(n3);
          }
          function Na(n3) {
            return function(t2) {
              return null == n3 ? X : _e2(n3, t2);
            };
          }
          function Pa() {
            return [];
          }
          function qa() {
            return false;
          }
          function Za() {
            return {};
          }
          function Ka() {
            return "";
          }
          function Va() {
            return true;
          }
          function Ga(n3, t2) {
            if (n3 = kc(n3), n3 < 1 || n3 > Wn)
              return [];
            var r2 = Un, e2 = Hl(n3, Un);
            t2 = mi(t2), n3 -= Un;
            for (var u2 = O(e2, t2); ++r2 < n3; )
              t2(r2);
            return u2;
          }
          function Ha(n3) {
            return bh(n3) ? c(n3, no) : bc(n3) ? [n3] : Tu(Cs(Ec(n3)));
          }
          function Ja(n3) {
            var t2 = ++wl;
            return Ec(n3) + t2;
          }
          function Ya(n3) {
            return n3 && n3.length ? Yr2(n3, La, me) : X;
          }
          function Qa(n3, t2) {
            return n3 && n3.length ? Yr2(n3, mi(t2, 2), me) : X;
          }
          function Xa(n3) {
            return w2(n3, La);
          }
          function nl(n3, t2) {
            return w2(n3, mi(t2, 2));
          }
          function tl(n3) {
            return n3 && n3.length ? Yr2(n3, La, Ne) : X;
          }
          function rl(n3, t2) {
            return n3 && n3.length ? Yr2(n3, mi(t2, 2), Ne) : X;
          }
          function el(n3) {
            return n3 && n3.length ? k(n3, La) : 0;
          }
          function ul(n3, t2) {
            return n3 && n3.length ? k(n3, mi(t2, 2)) : 0;
          }
          x2 = null == x2 ? re : be.defaults(re.Object(), x2, be.pick(re, qr));
          var il = x2.Array, ol = x2.Date, fl = x2.Error, cl = x2.Function, al = x2.Math, ll = x2.Object, sl = x2.RegExp, hl = x2.String, pl = x2.TypeError, _l = il.prototype, vl = cl.prototype, gl = ll.prototype, yl = x2["__core-js_shared__"], dl = vl.toString, bl = gl.hasOwnProperty, wl = 0, ml = function() {
            var n3 = /[^.]+$/.exec(yl && yl.keys && yl.keys.IE_PROTO || "");
            return n3 ? "Symbol(src)_1." + n3 : "";
          }(), xl = gl.toString, jl = dl.call(ll), Al = re._, kl = sl("^" + dl.call(bl).replace(St, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), Ol = ie ? x2.Buffer : X, Il = x2.Symbol, Rl = x2.Uint8Array, zl = Ol ? Ol.allocUnsafe : X, El = F(ll.getPrototypeOf, ll), Sl = ll.create, Wl = gl.propertyIsEnumerable, Ll = _l.splice, Cl = Il ? Il.isConcatSpreadable : X, Ul = Il ? Il.iterator : X, Bl = Il ? Il.toStringTag : X, Tl = function() {
            try {
              var n3 = Ai(ll, "defineProperty");
              return n3({}, "", {}), n3;
            } catch (n4) {
            }
          }(), $l = x2.clearTimeout !== re.clearTimeout && x2.clearTimeout, Dl = ol && ol.now !== re.Date.now && ol.now, Ml = x2.setTimeout !== re.setTimeout && x2.setTimeout, Fl = al.ceil, Nl = al.floor, Pl = ll.getOwnPropertySymbols, ql = Ol ? Ol.isBuffer : X, Zl = x2.isFinite, Kl = _l.join, Vl = F(ll.keys, ll), Gl = al.max, Hl = al.min, Jl = ol.now, Yl = x2.parseInt, Ql = al.random, Xl = _l.reverse, ns = Ai(x2, "DataView"), ts = Ai(x2, "Map"), rs = Ai(x2, "Promise"), es = Ai(x2, "Set"), us = Ai(x2, "WeakMap"), is = Ai(ll, "create"), os = us && new us(), fs = {}, cs = to(ns), as = to(ts), ls = to(rs), ss = to(es), hs = to(us), ps = Il ? Il.prototype : X, _s = ps ? ps.valueOf : X, vs = ps ? ps.toString : X, gs = function() {
            function n3() {
            }
            return function(t2) {
              if (!fc(t2))
                return {};
              if (Sl)
                return Sl(t2);
              n3.prototype = t2;
              var r2 = new n3();
              return n3.prototype = X, r2;
            };
          }();
          Z2.templateSettings = { escape: kt, evaluate: Ot, interpolate: It, variable: "", imports: { _: Z2 } }, Z2.prototype = J2.prototype, Z2.prototype.constructor = Z2, Y2.prototype = gs(J2.prototype), Y2.prototype.constructor = Y2, Ct2.prototype = gs(J2.prototype), Ct2.prototype.constructor = Ct2, Xt2.prototype.clear = nr2, Xt2.prototype.delete = tr2, Xt2.prototype.get = rr2, Xt2.prototype.has = er2, Xt2.prototype.set = ur2, ir2.prototype.clear = or2, ir2.prototype.delete = fr2, ir2.prototype.get = cr2, ir2.prototype.has = ar2, ir2.prototype.set = lr2, sr2.prototype.clear = hr2, sr2.prototype.delete = pr2, sr2.prototype.get = _r2, sr2.prototype.has = vr2, sr2.prototype.set = gr2, yr2.prototype.add = yr2.prototype.push = dr2, yr2.prototype.has = br2, wr2.prototype.clear = mr2, wr2.prototype.delete = xr2, wr2.prototype.get = jr2, wr2.prototype.has = Ar2, wr2.prototype.set = kr2;
          var ys = Pu(ue2), ds = Pu(oe2, true), bs = qu(), ws = qu(true), ms = os ? function(n3, t2) {
            return os.set(n3, t2), n3;
          } : La, xs = Tl ? function(n3, t2) {
            return Tl(n3, "toString", {
              configurable: true,
              enumerable: false,
              value: Sa(t2),
              writable: true
            });
          } : La, js = uu, As = $l || function(n3) {
            return re.clearTimeout(n3);
          }, ks = es && 1 / P(new es([, -0]))[1] == Sn ? function(n3) {
            return new es(n3);
          } : Da, Os = os ? function(n3) {
            return os.get(n3);
          } : Da, Is = Pl ? function(n3) {
            return null == n3 ? [] : (n3 = ll(n3), i(Pl(n3), function(t2) {
              return Wl.call(n3, t2);
            }));
          } : Pa, Rs = Pl ? function(n3) {
            for (var t2 = []; n3; )
              a(t2, Is(n3)), n3 = El(n3);
            return t2;
          } : Pa, zs = we;
          (ns && zs(new ns(new ArrayBuffer(1))) != ct || ts && zs(new ts()) != Gn || rs && zs(rs.resolve()) != Qn || es && zs(new es()) != tt || us && zs(new us()) != it) && (zs = function(n3) {
            var t2 = we(n3), r2 = t2 == Yn ? n3.constructor : X, e2 = r2 ? to(r2) : "";
            if (e2)
              switch (e2) {
                case cs:
                  return ct;
                case as:
                  return Gn;
                case ls:
                  return Qn;
                case ss:
                  return tt;
                case hs:
                  return it;
              }
            return t2;
          });
          var Es = yl ? uc : qa, Ss = Qi(ms), Ws = Ml || function(n3, t2) {
            return re.setTimeout(n3, t2);
          }, Ls = Qi(xs), Cs = Pi(function(n3) {
            var t2 = [];
            return 46 === n3.charCodeAt(0) && t2.push(""), n3.replace(Et, function(n4, r2, e2, u2) {
              t2.push(e2 ? u2.replace(Mt, "$1") : r2 || n4);
            }), t2;
          }), Us = uu(function(n3, t2) {
            return Jf(n3) ? Hr2(n3, ee2(t2, 1, Jf, true)) : [];
          }), Bs = uu(function(n3, t2) {
            var r2 = jo(t2);
            return Jf(r2) && (r2 = X), Jf(n3) ? Hr2(n3, ee2(t2, 1, Jf, true), mi(r2, 2)) : [];
          }), Ts = uu(function(n3, t2) {
            var r2 = jo(t2);
            return Jf(r2) && (r2 = X), Jf(n3) ? Hr2(n3, ee2(t2, 1, Jf, true), X, r2) : [];
          }), $s = uu(function(n3) {
            var t2 = c(n3, ju);
            return t2.length && t2[0] === n3[0] ? ke(t2) : [];
          }), Ds = uu(function(n3) {
            var t2 = jo(n3), r2 = c(n3, ju);
            return t2 === jo(r2) ? t2 = X : r2.pop(), r2.length && r2[0] === n3[0] ? ke(r2, mi(t2, 2)) : [];
          }), Ms = uu(function(n3) {
            var t2 = jo(n3), r2 = c(n3, ju);
            return t2 = "function" == typeof t2 ? t2 : X, t2 && r2.pop(), r2.length && r2[0] === n3[0] ? ke(r2, X, t2) : [];
          }), Fs = uu(Oo), Ns = gi(function(n3, t2) {
            var r2 = null == n3 ? 0 : n3.length, e2 = Tr2(n3, t2);
            return nu(n3, c(t2, function(n4) {
              return Ci(n4, r2) ? +n4 : n4;
            }).sort(Lu)), e2;
          }), Ps = uu(function(n3) {
            return gu(ee2(n3, 1, Jf, true));
          }), qs = uu(function(n3) {
            var t2 = jo(n3);
            return Jf(t2) && (t2 = X), gu(ee2(n3, 1, Jf, true), mi(t2, 2));
          }), Zs = uu(function(n3) {
            var t2 = jo(n3);
            return t2 = "function" == typeof t2 ? t2 : X, gu(ee2(n3, 1, Jf, true), X, t2);
          }), Ks = uu(function(n3, t2) {
            return Jf(n3) ? Hr2(n3, t2) : [];
          }), Vs = uu(function(n3) {
            return mu(i(n3, Jf));
          }), Gs = uu(function(n3) {
            var t2 = jo(n3);
            return Jf(t2) && (t2 = X), mu(i(n3, Jf), mi(t2, 2));
          }), Hs = uu(function(n3) {
            var t2 = jo(n3);
            return t2 = "function" == typeof t2 ? t2 : X, mu(i(n3, Jf), X, t2);
          }), Js = uu(Go), Ys = uu(function(n3) {
            var t2 = n3.length, r2 = t2 > 1 ? n3[t2 - 1] : X;
            return r2 = "function" == typeof r2 ? (n3.pop(), r2) : X, Ho(n3, r2);
          }), Qs = gi(function(n3) {
            var t2 = n3.length, r2 = t2 ? n3[0] : 0, e2 = this.__wrapped__, u2 = function(t3) {
              return Tr2(t3, n3);
            };
            return !(t2 > 1 || this.__actions__.length) && e2 instanceof Ct2 && Ci(r2) ? (e2 = e2.slice(r2, +r2 + (t2 ? 1 : 0)), e2.__actions__.push({ func: nf, args: [u2], thisArg: X }), new Y2(e2, this.__chain__).thru(function(n4) {
              return t2 && !n4.length && n4.push(X), n4;
            })) : this.thru(u2);
          }), Xs = Fu(function(n3, t2, r2) {
            bl.call(n3, r2) ? ++n3[r2] : Br2(n3, r2, 1);
          }), nh = Ju(ho), th = Ju(po), rh = Fu(function(n3, t2, r2) {
            bl.call(n3, r2) ? n3[r2].push(t2) : Br2(n3, r2, [t2]);
          }), eh = uu(function(t2, r2, e2) {
            var u2 = -1, i2 = "function" == typeof r2, o2 = Hf(t2) ? il(t2.length) : [];
            return ys(t2, function(t3) {
              o2[++u2] = i2 ? n2(r2, t3, e2) : Ie(t3, r2, e2);
            }), o2;
          }), uh = Fu(function(n3, t2, r2) {
            Br2(n3, r2, t2);
          }), ih = Fu(function(n3, t2, r2) {
            n3[r2 ? 0 : 1].push(t2);
          }, function() {
            return [[], []];
          }), oh = uu(function(n3, t2) {
            if (null == n3)
              return [];
            var r2 = t2.length;
            return r2 > 1 && Ui(n3, t2[0], t2[1]) ? t2 = [] : r2 > 2 && Ui(t2[0], t2[1], t2[2]) && (t2 = [t2[0]]), He(n3, ee2(t2, 1), []);
          }), fh = Dl || function() {
            return re.Date.now();
          }, ch = uu(function(n3, t2, r2) {
            var e2 = _n;
            if (r2.length) {
              var u2 = N(r2, wi(ch));
              e2 |= bn;
            }
            return ai(n3, e2, t2, r2, u2);
          }), ah = uu(function(n3, t2, r2) {
            var e2 = _n | vn;
            if (r2.length) {
              var u2 = N(r2, wi(ah));
              e2 |= bn;
            }
            return ai(t2, e2, n3, r2, u2);
          }), lh = uu(function(n3, t2) {
            return Gr2(n3, 1, t2);
          }), sh = uu(function(n3, t2, r2) {
            return Gr2(n3, Ic(t2) || 0, r2);
          });
          Cf.Cache = sr2;
          var hh = js(function(t2, r2) {
            r2 = 1 == r2.length && bh(r2[0]) ? c(r2[0], z(mi())) : c(ee2(r2, 1), z(mi()));
            var e2 = r2.length;
            return uu(function(u2) {
              for (var i2 = -1, o2 = Hl(u2.length, e2); ++i2 < o2; )
                u2[i2] = r2[i2].call(this, u2[i2]);
              return n2(t2, this, u2);
            });
          }), ph = uu(function(n3, t2) {
            return ai(n3, bn, X, t2, N(t2, wi(ph)));
          }), _h = uu(function(n3, t2) {
            return ai(n3, wn, X, t2, N(t2, wi(_h)));
          }), vh = gi(function(n3, t2) {
            return ai(n3, xn, X, X, X, t2);
          }), gh = ii(me), yh = ii(function(n3, t2) {
            return n3 >= t2;
          }), dh = Re(function() {
            return arguments;
          }()) ? Re : function(n3) {
            return cc(n3) && bl.call(n3, "callee") && !Wl.call(n3, "callee");
          }, bh = il.isArray, wh = ce ? z(ce) : ze, mh = ql || qa, xh = ae ? z(ae) : Ee, jh = le ? z(le) : Le, Ah = se ? z(se) : Be, kh = he ? z(he) : Te, Oh = pe ? z(pe) : $e, Ih = ii(Ne), Rh = ii(function(n3, t2) {
            return n3 <= t2;
          }), zh = Nu(function(n3, t2) {
            if (Mi(t2) || Hf(t2))
              return $u(t2, Pc(t2), n3), X;
            for (var r2 in t2)
              bl.call(t2, r2) && Sr2(n3, r2, t2[r2]);
          }), Eh = Nu(function(n3, t2) {
            $u(t2, qc(t2), n3);
          }), Sh = Nu(function(n3, t2, r2, e2) {
            $u(t2, qc(t2), n3, e2);
          }), Wh = Nu(function(n3, t2, r2, e2) {
            $u(t2, Pc(t2), n3, e2);
          }), Lh = gi(Tr2), Ch = uu(function(n3, t2) {
            n3 = ll(n3);
            var r2 = -1, e2 = t2.length, u2 = e2 > 2 ? t2[2] : X;
            for (u2 && Ui(t2[0], t2[1], u2) && (e2 = 1); ++r2 < e2; )
              for (var i2 = t2[r2], o2 = qc(i2), f2 = -1, c2 = o2.length; ++f2 < c2; ) {
                var a2 = o2[f2], l2 = n3[a2];
                (l2 === X || Gf(l2, gl[a2]) && !bl.call(n3, a2)) && (n3[a2] = i2[a2]);
              }
            return n3;
          }), Uh = uu(function(t2) {
            return t2.push(X, si), n2(Mh, X, t2);
          }), Bh = Xu(function(n3, t2, r2) {
            null != t2 && "function" != typeof t2.toString && (t2 = xl.call(t2)), n3[t2] = r2;
          }, Sa(La)), Th = Xu(function(n3, t2, r2) {
            null != t2 && "function" != typeof t2.toString && (t2 = xl.call(t2)), bl.call(n3, t2) ? n3[t2].push(r2) : n3[t2] = [r2];
          }, mi), $h = uu(Ie), Dh = Nu(function(n3, t2, r2) {
            Ke(n3, t2, r2);
          }), Mh = Nu(function(n3, t2, r2, e2) {
            Ke(n3, t2, r2, e2);
          }), Fh = gi(function(n3, t2) {
            var r2 = {};
            if (null == n3)
              return r2;
            var e2 = false;
            t2 = c(t2, function(t3) {
              return t3 = ku(t3, n3), e2 || (e2 = t3.length > 1), t3;
            }), $u(n3, di(n3), r2), e2 && (r2 = Fr2(r2, an | ln | sn, hi));
            for (var u2 = t2.length; u2--; )
              yu(r2, t2[u2]);
            return r2;
          }), Nh = gi(function(n3, t2) {
            return null == n3 ? {} : Je(n3, t2);
          }), Ph = ci(Pc), qh = ci(qc), Zh = Vu(function(n3, t2, r2) {
            return t2 = t2.toLowerCase(), n3 + (r2 ? fa(t2) : t2);
          }), Kh = Vu(function(n3, t2, r2) {
            return n3 + (r2 ? "-" : "") + t2.toLowerCase();
          }), Vh = Vu(function(n3, t2, r2) {
            return n3 + (r2 ? " " : "") + t2.toLowerCase();
          }), Gh = Ku("toLowerCase"), Hh = Vu(function(n3, t2, r2) {
            return n3 + (r2 ? "_" : "") + t2.toLowerCase();
          }), Jh = Vu(function(n3, t2, r2) {
            return n3 + (r2 ? " " : "") + Qh(t2);
          }), Yh = Vu(function(n3, t2, r2) {
            return n3 + (r2 ? " " : "") + t2.toUpperCase();
          }), Qh = Ku("toUpperCase"), Xh = uu(function(t2, r2) {
            try {
              return n2(t2, X, r2);
            } catch (n3) {
              return rc(n3) ? n3 : new fl(n3);
            }
          }), np = gi(function(n3, t2) {
            return r(t2, function(t3) {
              t3 = no(t3), Br2(n3, t3, ch(n3[t3], n3));
            }), n3;
          }), tp = Yu(), rp = Yu(true), ep = uu(function(n3, t2) {
            return function(r2) {
              return Ie(r2, n3, t2);
            };
          }), up = uu(function(n3, t2) {
            return function(r2) {
              return Ie(n3, r2, t2);
            };
          }), ip = ti(c), op = ti(u), fp = ti(h2), cp = ui(), ap = ui(true), lp = ni(function(n3, t2) {
            return n3 + t2;
          }, 0), sp = fi("ceil"), hp = ni(function(n3, t2) {
            return n3 / t2;
          }, 1), pp = fi("floor"), _p = ni(function(n3, t2) {
            return n3 * t2;
          }, 1), vp = fi("round"), gp = ni(function(n3, t2) {
            return n3 - t2;
          }, 0);
          return Z2.after = If, Z2.ary = Rf, Z2.assign = zh, Z2.assignIn = Eh, Z2.assignInWith = Sh, Z2.assignWith = Wh, Z2.at = Lh, Z2.before = zf, Z2.bind = ch, Z2.bindAll = np, Z2.bindKey = ah, Z2.castArray = Nf, Z2.chain = Qo, Z2.chunk = uo, Z2.compact = io, Z2.concat = oo, Z2.cond = za, Z2.conforms = Ea, Z2.constant = Sa, Z2.countBy = Xs, Z2.create = Sc, Z2.curry = Ef, Z2.curryRight = Sf, Z2.debounce = Wf, Z2.defaults = Ch, Z2.defaultsDeep = Uh, Z2.defer = lh, Z2.delay = sh, Z2.difference = Us, Z2.differenceBy = Bs, Z2.differenceWith = Ts, Z2.drop = fo, Z2.dropRight = co, Z2.dropRightWhile = ao, Z2.dropWhile = lo, Z2.fill = so, Z2.filter = lf, Z2.flatMap = sf, Z2.flatMapDeep = hf, Z2.flatMapDepth = pf, Z2.flatten = _o, Z2.flattenDeep = vo, Z2.flattenDepth = go, Z2.flip = Lf, Z2.flow = tp, Z2.flowRight = rp, Z2.fromPairs = yo, Z2.functions = $c, Z2.functionsIn = Dc, Z2.groupBy = rh, Z2.initial = mo, Z2.intersection = $s, Z2.intersectionBy = Ds, Z2.intersectionWith = Ms, Z2.invert = Bh, Z2.invertBy = Th, Z2.invokeMap = eh, Z2.iteratee = Ca, Z2.keyBy = uh, Z2.keys = Pc, Z2.keysIn = qc, Z2.map = yf, Z2.mapKeys = Zc, Z2.mapValues = Kc, Z2.matches = Ua, Z2.matchesProperty = Ba, Z2.memoize = Cf, Z2.merge = Dh, Z2.mergeWith = Mh, Z2.method = ep, Z2.methodOf = up, Z2.mixin = Ta, Z2.negate = Uf, Z2.nthArg = Ma, Z2.omit = Fh, Z2.omitBy = Vc, Z2.once = Bf, Z2.orderBy = df, Z2.over = ip, Z2.overArgs = hh, Z2.overEvery = op, Z2.overSome = fp, Z2.partial = ph, Z2.partialRight = _h, Z2.partition = ih, Z2.pick = Nh, Z2.pickBy = Gc, Z2.property = Fa, Z2.propertyOf = Na, Z2.pull = Fs, Z2.pullAll = Oo, Z2.pullAllBy = Io, Z2.pullAllWith = Ro, Z2.pullAt = Ns, Z2.range = cp, Z2.rangeRight = ap, Z2.rearg = vh, Z2.reject = mf, Z2.remove = zo, Z2.rest = Tf, Z2.reverse = Eo, Z2.sampleSize = jf, Z2.set = Jc, Z2.setWith = Yc, Z2.shuffle = Af, Z2.slice = So, Z2.sortBy = oh, Z2.sortedUniq = $o, Z2.sortedUniqBy = Do, Z2.split = da, Z2.spread = $f, Z2.tail = Mo, Z2.take = Fo, Z2.takeRight = No, Z2.takeRightWhile = Po, Z2.takeWhile = qo, Z2.tap = Xo, Z2.throttle = Df, Z2.thru = nf, Z2.toArray = jc, Z2.toPairs = Ph, Z2.toPairsIn = qh, Z2.toPath = Ha, Z2.toPlainObject = Rc, Z2.transform = Qc, Z2.unary = Mf, Z2.union = Ps, Z2.unionBy = qs, Z2.unionWith = Zs, Z2.uniq = Zo, Z2.uniqBy = Ko, Z2.uniqWith = Vo, Z2.unset = Xc, Z2.unzip = Go, Z2.unzipWith = Ho, Z2.update = na, Z2.updateWith = ta, Z2.values = ra, Z2.valuesIn = ea, Z2.without = Ks, Z2.words = Ra, Z2.wrap = Ff, Z2.xor = Vs, Z2.xorBy = Gs, Z2.xorWith = Hs, Z2.zip = Js, Z2.zipObject = Jo, Z2.zipObjectDeep = Yo, Z2.zipWith = Ys, Z2.entries = Ph, Z2.entriesIn = qh, Z2.extend = Eh, Z2.extendWith = Sh, Ta(Z2, Z2), Z2.add = lp, Z2.attempt = Xh, Z2.camelCase = Zh, Z2.capitalize = fa, Z2.ceil = sp, Z2.clamp = ua, Z2.clone = Pf, Z2.cloneDeep = Zf, Z2.cloneDeepWith = Kf, Z2.cloneWith = qf, Z2.conformsTo = Vf, Z2.deburr = ca, Z2.defaultTo = Wa, Z2.divide = hp, Z2.endsWith = aa, Z2.eq = Gf, Z2.escape = la, Z2.escapeRegExp = sa, Z2.every = af, Z2.find = nh, Z2.findIndex = ho, Z2.findKey = Wc, Z2.findLast = th, Z2.findLastIndex = po, Z2.findLastKey = Lc, Z2.floor = pp, Z2.forEach = _f, Z2.forEachRight = vf, Z2.forIn = Cc, Z2.forInRight = Uc, Z2.forOwn = Bc, Z2.forOwnRight = Tc, Z2.get = Mc, Z2.gt = gh, Z2.gte = yh, Z2.has = Fc, Z2.hasIn = Nc, Z2.head = bo, Z2.identity = La, Z2.includes = gf, Z2.indexOf = wo, Z2.inRange = ia, Z2.invoke = $h, Z2.isArguments = dh, Z2.isArray = bh, Z2.isArrayBuffer = wh, Z2.isArrayLike = Hf, Z2.isArrayLikeObject = Jf, Z2.isBoolean = Yf, Z2.isBuffer = mh, Z2.isDate = xh, Z2.isElement = Qf, Z2.isEmpty = Xf, Z2.isEqual = nc, Z2.isEqualWith = tc, Z2.isError = rc, Z2.isFinite = ec, Z2.isFunction = uc, Z2.isInteger = ic, Z2.isLength = oc, Z2.isMap = jh, Z2.isMatch = ac, Z2.isMatchWith = lc, Z2.isNaN = sc, Z2.isNative = hc, Z2.isNil = _c, Z2.isNull = pc, Z2.isNumber = vc, Z2.isObject = fc, Z2.isObjectLike = cc, Z2.isPlainObject = gc, Z2.isRegExp = Ah, Z2.isSafeInteger = yc, Z2.isSet = kh, Z2.isString = dc, Z2.isSymbol = bc, Z2.isTypedArray = Oh, Z2.isUndefined = wc, Z2.isWeakMap = mc, Z2.isWeakSet = xc, Z2.join = xo, Z2.kebabCase = Kh, Z2.last = jo, Z2.lastIndexOf = Ao, Z2.lowerCase = Vh, Z2.lowerFirst = Gh, Z2.lt = Ih, Z2.lte = Rh, Z2.max = Ya, Z2.maxBy = Qa, Z2.mean = Xa, Z2.meanBy = nl, Z2.min = tl, Z2.minBy = rl, Z2.stubArray = Pa, Z2.stubFalse = qa, Z2.stubObject = Za, Z2.stubString = Ka, Z2.stubTrue = Va, Z2.multiply = _p, Z2.nth = ko2, Z2.noConflict = $a, Z2.noop = Da, Z2.now = fh, Z2.pad = ha, Z2.padEnd = pa, Z2.padStart = _a, Z2.parseInt = va, Z2.random = oa, Z2.reduce = bf, Z2.reduceRight = wf, Z2.repeat = ga, Z2.replace = ya, Z2.result = Hc, Z2.round = vp, Z2.runInContext = p2, Z2.sample = xf, Z2.size = kf, Z2.snakeCase = Hh, Z2.some = Of, Z2.sortedIndex = Wo, Z2.sortedIndexBy = Lo, Z2.sortedIndexOf = Co, Z2.sortedLastIndex = Uo, Z2.sortedLastIndexBy = Bo, Z2.sortedLastIndexOf = To, Z2.startCase = Jh, Z2.startsWith = ba, Z2.subtract = gp, Z2.sum = el, Z2.sumBy = ul, Z2.template = wa, Z2.times = Ga, Z2.toFinite = Ac, Z2.toInteger = kc, Z2.toLength = Oc, Z2.toLower = ma, Z2.toNumber = Ic, Z2.toSafeInteger = zc, Z2.toString = Ec, Z2.toUpper = xa, Z2.trim = ja, Z2.trimEnd = Aa, Z2.trimStart = ka, Z2.truncate = Oa, Z2.unescape = Ia, Z2.uniqueId = Ja, Z2.upperCase = Yh, Z2.upperFirst = Qh, Z2.each = _f, Z2.eachRight = vf, Z2.first = bo, Ta(Z2, function() {
            var n3 = {};
            return ue2(Z2, function(t2, r2) {
              bl.call(Z2.prototype, r2) || (n3[r2] = t2);
            }), n3;
          }(), { chain: false }), Z2.VERSION = nn, r(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(n3) {
            Z2[n3].placeholder = Z2;
          }), r(["drop", "take"], function(n3, t2) {
            Ct2.prototype[n3] = function(r2) {
              r2 = r2 === X ? 1 : Gl(kc(r2), 0);
              var e2 = this.__filtered__ && !t2 ? new Ct2(this) : this.clone();
              return e2.__filtered__ ? e2.__takeCount__ = Hl(r2, e2.__takeCount__) : e2.__views__.push({ size: Hl(r2, Un), type: n3 + (e2.__dir__ < 0 ? "Right" : "") }), e2;
            }, Ct2.prototype[n3 + "Right"] = function(t3) {
              return this.reverse()[n3](t3).reverse();
            };
          }), r(["filter", "map", "takeWhile"], function(n3, t2) {
            var r2 = t2 + 1, e2 = r2 == Rn || r2 == En;
            Ct2.prototype[n3] = function(n4) {
              var t3 = this.clone();
              return t3.__iteratees__.push({ iteratee: mi(n4, 3), type: r2 }), t3.__filtered__ = t3.__filtered__ || e2, t3;
            };
          }), r(["head", "last"], function(n3, t2) {
            var r2 = "take" + (t2 ? "Right" : "");
            Ct2.prototype[n3] = function() {
              return this[r2](1).value()[0];
            };
          }), r(["initial", "tail"], function(n3, t2) {
            var r2 = "drop" + (t2 ? "" : "Right");
            Ct2.prototype[n3] = function() {
              return this.__filtered__ ? new Ct2(this) : this[r2](1);
            };
          }), Ct2.prototype.compact = function() {
            return this.filter(La);
          }, Ct2.prototype.find = function(n3) {
            return this.filter(n3).head();
          }, Ct2.prototype.findLast = function(n3) {
            return this.reverse().find(n3);
          }, Ct2.prototype.invokeMap = uu(function(n3, t2) {
            return "function" == typeof n3 ? new Ct2(this) : this.map(function(r2) {
              return Ie(r2, n3, t2);
            });
          }), Ct2.prototype.reject = function(n3) {
            return this.filter(Uf(mi(n3)));
          }, Ct2.prototype.slice = function(n3, t2) {
            n3 = kc(n3);
            var r2 = this;
            return r2.__filtered__ && (n3 > 0 || t2 < 0) ? new Ct2(r2) : (n3 < 0 ? r2 = r2.takeRight(-n3) : n3 && (r2 = r2.drop(n3)), t2 !== X && (t2 = kc(t2), r2 = t2 < 0 ? r2.dropRight(-t2) : r2.take(t2 - n3)), r2);
          }, Ct2.prototype.takeRightWhile = function(n3) {
            return this.reverse().takeWhile(n3).reverse();
          }, Ct2.prototype.toArray = function() {
            return this.take(Un);
          }, ue2(Ct2.prototype, function(n3, t2) {
            var r2 = /^(?:filter|find|map|reject)|While$/.test(t2), e2 = /^(?:head|last)$/.test(t2), u2 = Z2[e2 ? "take" + ("last" == t2 ? "Right" : "") : t2], i2 = e2 || /^find/.test(t2);
            u2 && (Z2.prototype[t2] = function() {
              var t3 = this.__wrapped__, o2 = e2 ? [1] : arguments, f2 = t3 instanceof Ct2, c2 = o2[0], l2 = f2 || bh(t3), s3 = function(n4) {
                var t4 = u2.apply(Z2, a([n4], o2));
                return e2 && h3 ? t4[0] : t4;
              };
              l2 && r2 && "function" == typeof c2 && 1 != c2.length && (f2 = l2 = false);
              var h3 = this.__chain__, p3 = !!this.__actions__.length, _3 = i2 && !h3, v2 = f2 && !p3;
              if (!i2 && l2) {
                t3 = v2 ? t3 : new Ct2(this);
                var g2 = n3.apply(t3, o2);
                return g2.__actions__.push({ func: nf, args: [s3], thisArg: X }), new Y2(g2, h3);
              }
              return _3 && v2 ? n3.apply(this, o2) : (g2 = this.thru(s3), _3 ? e2 ? g2.value()[0] : g2.value() : g2);
            });
          }), r(["pop", "push", "shift", "sort", "splice", "unshift"], function(n3) {
            var t2 = _l[n3], r2 = /^(?:push|sort|unshift)$/.test(n3) ? "tap" : "thru", e2 = /^(?:pop|shift)$/.test(n3);
            Z2.prototype[n3] = function() {
              var n4 = arguments;
              if (e2 && !this.__chain__) {
                var u2 = this.value();
                return t2.apply(bh(u2) ? u2 : [], n4);
              }
              return this[r2](function(r3) {
                return t2.apply(bh(r3) ? r3 : [], n4);
              });
            };
          }), ue2(Ct2.prototype, function(n3, t2) {
            var r2 = Z2[t2];
            if (r2) {
              var e2 = r2.name + "";
              bl.call(fs, e2) || (fs[e2] = []), fs[e2].push({ name: t2, func: r2 });
            }
          }), fs[Qu(X, vn).name] = [{ name: "wrapper", func: X }], Ct2.prototype.clone = $t2, Ct2.prototype.reverse = Yt2, Ct2.prototype.value = Qt2, Z2.prototype.at = Qs, Z2.prototype.chain = tf, Z2.prototype.commit = rf, Z2.prototype.next = ef, Z2.prototype.plant = of, Z2.prototype.reverse = ff, Z2.prototype.toJSON = Z2.prototype.valueOf = Z2.prototype.value = cf, Z2.prototype.first = Z2.prototype.head, Ul && (Z2.prototype[Ul] = uf), Z2;
        }, be = de();
        "function" == typeof define && "object" == typeof define.amd && define.amd ? (re._ = be, define(function() {
          return be;
        })) : ue ? ((ue.exports = be)._ = be, ee._ = be) : re._ = be;
      }).call(exports2);
    }
  });

  // dep-runtime/node_modules/gsap/dist/gsap.min.js
  var require_gsap_min = __commonJS({
    "dep-runtime/node_modules/gsap/dist/gsap.min.js"(exports2, module2) {
      !function(t, e) {
        "object" == typeof exports2 && "undefined" != typeof module2 ? e(exports2) : "function" == typeof define && define.amd ? define(["exports"], e) : e((t = t || self).window = t.window || {});
      }(exports2, function(e) {
        "use strict";
        function _inheritsLoose(t2, e2) {
          t2.prototype = Object.create(e2.prototype), (t2.prototype.constructor = t2).__proto__ = e2;
        }
        function _assertThisInitialized(t2) {
          if (void 0 === t2)
            throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
          return t2;
        }
        function o(t2) {
          return "string" == typeof t2;
        }
        function p(t2) {
          return "function" == typeof t2;
        }
        function q(t2) {
          return "number" == typeof t2;
        }
        function r(t2) {
          return void 0 === t2;
        }
        function s2(t2) {
          return "object" == typeof t2;
        }
        function t(t2) {
          return false !== t2;
        }
        function u() {
          return "undefined" != typeof window;
        }
        function v(t2) {
          return p(t2) || o(t2);
        }
        function M(t2) {
          return (h2 = mt(t2, ot)) && he;
        }
        function N(t2, e2) {
          return console.warn("Invalid property", t2, "set to", e2, "Missing plugin? gsap.registerPlugin()");
        }
        function O(t2, e2) {
          return !e2 && console.warn(t2);
        }
        function P(t2, e2) {
          return t2 && (ot[t2] = e2) && h2 && (h2[t2] = e2) || ot;
        }
        function Q() {
          return 0;
        }
        function $2(t2) {
          var e2, r2, i2 = t2[0];
          if (s2(i2) || p(i2) || (t2 = [t2]), !(e2 = (i2._gsap || {}).harness)) {
            for (r2 = pt.length; r2-- && !pt[r2].targetTest(i2); )
              ;
            e2 = pt[r2];
          }
          for (r2 = t2.length; r2--; )
            t2[r2] && (t2[r2]._gsap || (t2[r2]._gsap = new Lt(t2[r2], e2))) || t2.splice(r2, 1);
          return t2;
        }
        function _2(t2) {
          return t2._gsap || $2(xt(t2))[0]._gsap;
        }
        function aa(t2, e2, i2) {
          return (i2 = t2[e2]) && p(i2) ? t2[e2]() : r(i2) && t2.getAttribute && t2.getAttribute(e2) || i2;
        }
        function ba(t2, e2) {
          return (t2 = t2.split(",")).forEach(e2) || t2;
        }
        function ca(t2) {
          return Math.round(1e5 * t2) / 1e5 || 0;
        }
        function da(t2) {
          return Math.round(1e7 * t2) / 1e7 || 0;
        }
        function ea(t2, e2) {
          var r2 = e2.charAt(0), i2 = parseFloat(e2.substr(2));
          return t2 = parseFloat(t2), "+" === r2 ? t2 + i2 : "-" === r2 ? t2 - i2 : "*" === r2 ? t2 * i2 : t2 / i2;
        }
        function fa(t2, e2) {
          for (var r2 = e2.length, i2 = 0; t2.indexOf(e2[i2]) < 0 && ++i2 < r2; )
            ;
          return i2 < r2;
        }
        function ga() {
          var t2, e2, r2 = ht.length, i2 = ht.slice(0);
          for (lt = {}, t2 = ht.length = 0; t2 < r2; t2++)
            (e2 = i2[t2]) && e2._lazy && (e2.render(e2._lazy[0], e2._lazy[1], true)._lazy = 0);
        }
        function ha(t2, e2, r2, i2) {
          ht.length && ga(), t2.render(e2, r2, i2), ht.length && ga();
        }
        function ia(t2) {
          var e2 = parseFloat(t2);
          return (e2 || 0 === e2) && (t2 + "").match(at).length < 2 ? e2 : o(t2) ? t2.trim() : t2;
        }
        function ja(t2) {
          return t2;
        }
        function ka(t2, e2) {
          for (var r2 in e2)
            r2 in t2 || (t2[r2] = e2[r2]);
          return t2;
        }
        function na(t2, e2) {
          for (var r2 in e2)
            "__proto__" !== r2 && "constructor" !== r2 && "prototype" !== r2 && (t2[r2] = s2(e2[r2]) ? na(t2[r2] || (t2[r2] = {}), e2[r2]) : e2[r2]);
          return t2;
        }
        function oa(t2, e2) {
          var r2, i2 = {};
          for (r2 in t2)
            r2 in e2 || (i2[r2] = t2[r2]);
          return i2;
        }
        function pa(e2) {
          var r2 = e2.parent || I, i2 = e2.keyframes ? function _setKeyframeDefaults(i3) {
            return function(t2, e3) {
              for (var r3 in e3)
                r3 in t2 || "duration" === r3 && i3 || "ease" === r3 || (t2[r3] = e3[r3]);
            };
          }(J(e2.keyframes)) : ka;
          if (t(e2.inherit))
            for (; r2; )
              i2(e2, r2.vars.defaults), r2 = r2.parent || r2._dp;
          return e2;
        }
        function ra(t2, e2, r2, i2, n3) {
          void 0 === r2 && (r2 = "_first"), void 0 === i2 && (i2 = "_last");
          var a2, s3 = t2[i2];
          if (n3)
            for (a2 = e2[n3]; s3 && s3[n3] > a2; )
              s3 = s3._prev;
          return s3 ? (e2._next = s3._next, s3._next = e2) : (e2._next = t2[r2], t2[r2] = e2), e2._next ? e2._next._prev = e2 : t2[i2] = e2, e2._prev = s3, e2.parent = e2._dp = t2, e2;
        }
        function sa(t2, e2, r2, i2) {
          void 0 === r2 && (r2 = "_first"), void 0 === i2 && (i2 = "_last");
          var n3 = e2._prev, a2 = e2._next;
          n3 ? n3._next = a2 : t2[r2] === e2 && (t2[r2] = a2), a2 ? a2._prev = n3 : t2[i2] === e2 && (t2[i2] = n3), e2._next = e2._prev = e2.parent = null;
        }
        function ta(t2, e2) {
          !t2.parent || e2 && !t2.parent.autoRemoveChildren || t2.parent.remove(t2), t2._act = 0;
        }
        function ua(t2, e2) {
          if (t2 && (!e2 || e2._end > t2._dur || e2._start < 0))
            for (var r2 = t2; r2; )
              r2._dirty = 1, r2 = r2.parent;
          return t2;
        }
        function xa(t2) {
          return t2._repeat ? gt(t2._tTime, t2 = t2.duration() + t2._rDelay) * t2 : 0;
        }
        function za(t2, e2) {
          return (t2 - e2._start) * e2._ts + (0 <= e2._ts ? 0 : e2._dirty ? e2.totalDuration() : e2._tDur);
        }
        function Aa(t2) {
          return t2._end = da(t2._start + (t2._tDur / Math.abs(t2._ts || t2._rts || V) || 0));
        }
        function Ba(t2, e2) {
          var r2 = t2._dp;
          return r2 && r2.smoothChildTiming && t2._ts && (t2._start = da(r2._time - (0 < t2._ts ? e2 / t2._ts : ((t2._dirty ? t2.totalDuration() : t2._tDur) - e2) / -t2._ts)), Aa(t2), r2._dirty || ua(r2, t2)), t2;
        }
        function Ca(t2, e2) {
          var r2;
          if ((e2._time || e2._initted && !e2._dur) && (r2 = za(t2.rawTime(), e2), (!e2._dur || bt(0, e2.totalDuration(), r2) - e2._tTime > V) && e2.render(r2, true)), ua(t2, e2)._dp && t2._initted && t2._time >= t2._dur && t2._ts) {
            if (t2._dur < t2.duration())
              for (r2 = t2; r2._dp; )
                0 <= r2.rawTime() && r2.totalTime(r2._tTime), r2 = r2._dp;
            t2._zTime = -V;
          }
        }
        function Da(t2, e2, r2, i2) {
          return e2.parent && ta(e2), e2._start = da((q(r2) ? r2 : r2 || t2 !== I ? Tt(t2, r2, e2) : t2._time) + e2._delay), e2._end = da(e2._start + (e2.totalDuration() / Math.abs(e2.timeScale()) || 0)), ra(t2, e2, "_first", "_last", t2._sort ? "_start" : 0), vt(e2) || (t2._recent = e2), i2 || Ca(t2, e2), t2;
        }
        function Ea(t2, e2) {
          return (ot.ScrollTrigger || N("scrollTrigger", e2)) && ot.ScrollTrigger.create(e2, t2);
        }
        function Fa(t2, e2, r2, i2) {
          return Xt(t2, e2), t2._initted ? !r2 && t2._pt && (t2._dur && false !== t2.vars.lazy || !t2._dur && t2.vars.lazy) && f !== Dt.frame ? (ht.push(t2), t2._lazy = [e2, i2], 1) : void 0 : 1;
        }
        function Ka(t2, e2, r2, i2) {
          var n3 = t2._repeat, a2 = da(e2) || 0, s3 = t2._tTime / t2._tDur;
          return s3 && !i2 && (t2._time *= a2 / t2._dur), t2._dur = a2, t2._tDur = n3 ? n3 < 0 ? 1e10 : da(a2 * (n3 + 1) + t2._rDelay * n3) : a2, 0 < s3 && !i2 ? Ba(t2, t2._tTime = t2._tDur * s3) : t2.parent && Aa(t2), r2 || ua(t2.parent, t2), t2;
        }
        function La(t2) {
          return t2 instanceof Ut ? ua(t2) : Ka(t2, t2._dur);
        }
        function Oa(e2, r2, i2) {
          var n3, a2, s3 = q(r2[1]), o2 = (s3 ? 2 : 1) + (e2 < 2 ? 0 : 1), u2 = r2[o2];
          if (s3 && (u2.duration = r2[1]), u2.parent = i2, e2) {
            for (n3 = u2, a2 = i2; a2 && !("immediateRender" in n3); )
              n3 = a2.vars.defaults || {}, a2 = t(a2.vars.inherit) && a2.parent;
            u2.immediateRender = t(n3.immediateRender), e2 < 2 ? u2.runBackwards = 1 : u2.startAt = r2[o2 - 1];
          }
          return new $t(r2[0], u2, r2[1 + o2]);
        }
        function Pa(t2, e2) {
          return t2 || 0 === t2 ? e2(t2) : e2;
        }
        function Ra(t2, e2) {
          return o(t2) && (e2 = st.exec(t2)) ? e2[1] : "";
        }
        function Ua(t2, e2) {
          return t2 && s2(t2) && "length" in t2 && (!e2 && !t2.length || t2.length - 1 in t2 && s2(t2[0])) && !t2.nodeType && t2 !== i;
        }
        function Ya(t2) {
          return t2.sort(function() {
            return 0.5 - Math.random();
          });
        }
        function Za(t2) {
          if (p(t2))
            return t2;
          var c2 = s2(t2) ? t2 : { each: t2 }, m2 = Bt(c2.ease), g2 = c2.from || 0, v2 = parseFloat(c2.base) || 0, y2 = {}, e2 = 0 < g2 && g2 < 1, T2 = isNaN(g2) || e2, b2 = c2.axis, w3 = g2, x2 = g2;
          return o(g2) ? w3 = x2 = { center: 0.5, edges: 0.5, end: 1 }[g2] || 0 : !e2 && T2 && (w3 = g2[0], x2 = g2[1]), function(t3, e3, r2) {
            var i2, n3, a2, s3, o2, u2, h3, l2, f2, d2 = (r2 || c2).length, _3 = y2[d2];
            if (!_3) {
              if (!(f2 = "auto" === c2.grid ? 0 : (c2.grid || [1, Y])[1])) {
                for (h3 = -Y; h3 < (h3 = r2[f2++].getBoundingClientRect().left) && f2 < d2; )
                  ;
                f2--;
              }
              for (_3 = y2[d2] = [], i2 = T2 ? Math.min(f2, d2) * w3 - 0.5 : g2 % f2, n3 = f2 === Y ? 0 : T2 ? d2 * x2 / f2 - 0.5 : g2 / f2 | 0, l2 = Y, u2 = h3 = 0; u2 < d2; u2++)
                a2 = u2 % f2 - i2, s3 = n3 - (u2 / f2 | 0), _3[u2] = o2 = b2 ? Math.abs("y" === b2 ? s3 : a2) : G(a2 * a2 + s3 * s3), h3 < o2 && (h3 = o2), o2 < l2 && (l2 = o2);
              "random" === g2 && Ya(_3), _3.max = h3 - l2, _3.min = l2, _3.v = d2 = (parseFloat(c2.amount) || parseFloat(c2.each) * (d2 < f2 ? d2 - 1 : b2 ? "y" === b2 ? d2 / f2 : f2 : Math.max(f2, d2 / f2)) || 0) * ("edges" === g2 ? -1 : 1), _3.b = d2 < 0 ? v2 - d2 : v2, _3.u = Ra(c2.amount || c2.each) || 0, m2 = m2 && d2 < 0 ? Ft(m2) : m2;
            }
            return d2 = (_3[t3] - _3.min) / _3.max || 0, da(_3.b + (m2 ? m2(d2) : d2) * _3.v) + _3.u;
          };
        }
        function $a(r2) {
          var i2 = Math.pow(10, ((r2 + "").split(".")[1] || "").length);
          return function(t2) {
            var e2 = Math.round(parseFloat(t2) / r2) * r2 * i2;
            return (e2 - e2 % 1) / i2 + (q(t2) ? 0 : Ra(t2));
          };
        }
        function _a(u2, t2) {
          var h3, l2, e2 = J(u2);
          return !e2 && s2(u2) && (h3 = e2 = u2.radius || Y, u2.values ? (u2 = xt(u2.values), (l2 = !q(u2[0])) && (h3 *= h3)) : u2 = $a(u2.increment)), Pa(t2, e2 ? p(u2) ? function(t3) {
            return l2 = u2(t3), Math.abs(l2 - t3) <= h3 ? l2 : t3;
          } : function(t3) {
            for (var e3, r2, i2 = parseFloat(l2 ? t3.x : t3), n3 = parseFloat(l2 ? t3.y : 0), a2 = Y, s3 = 0, o2 = u2.length; o2--; )
              (e3 = l2 ? (e3 = u2[o2].x - i2) * e3 + (r2 = u2[o2].y - n3) * r2 : Math.abs(u2[o2] - i2)) < a2 && (a2 = e3, s3 = o2);
            return s3 = !h3 || a2 <= h3 ? u2[s3] : t3, l2 || s3 === t3 || q(t3) ? s3 : s3 + Ra(t3);
          } : $a(u2));
        }
        function ab(t2, e2, r2, i2) {
          return Pa(J(t2) ? !e2 : true === r2 ? !!(r2 = 0) : !i2, function() {
            return J(t2) ? t2[~~(Math.random() * t2.length)] : (r2 = r2 || 1e-5) && (i2 = r2 < 1 ? Math.pow(10, (r2 + "").length - 2) : 1) && Math.floor(Math.round((t2 - r2 / 2 + Math.random() * (e2 - t2 + 0.99 * r2)) / r2) * r2 * i2) / i2;
          });
        }
        function eb(e2, r2, t2) {
          return Pa(t2, function(t3) {
            return e2[~~r2(t3)];
          });
        }
        function hb(t2) {
          for (var e2, r2, i2, n3, a2 = 0, s3 = ""; ~(e2 = t2.indexOf("random(", a2)); )
            i2 = t2.indexOf(")", e2), n3 = "[" === t2.charAt(e2 + 7), r2 = t2.substr(e2 + 7, i2 - e2 - 7).match(n3 ? at : tt), s3 += t2.substr(a2, e2 - a2) + ab(n3 ? r2 : +r2[0], n3 ? 0 : +r2[1], +r2[2] || 1e-5), a2 = i2 + 1;
          return s3 + t2.substr(a2, t2.length - a2);
        }
        function kb(t2, e2, r2) {
          var i2, n3, a2, s3 = t2.labels, o2 = Y;
          for (i2 in s3)
            (n3 = s3[i2] - e2) < 0 == !!r2 && n3 && o2 > (n3 = Math.abs(n3)) && (a2 = i2, o2 = n3);
          return a2;
        }
        function mb(t2) {
          return ta(t2), t2.scrollTrigger && t2.scrollTrigger.kill(false), t2.progress() < 1 && Ot(t2, "onInterrupt"), t2;
        }
        function rb(t2, e2, r2) {
          return (6 * (t2 += t2 < 0 ? 1 : 1 < t2 ? -1 : 0) < 1 ? e2 + (r2 - e2) * t2 * 6 : t2 < 0.5 ? r2 : 3 * t2 < 2 ? e2 + (r2 - e2) * (2 / 3 - t2) * 6 : e2) * Pt + 0.5 | 0;
        }
        function sb(t2, e2, r2) {
          var i2, n3, a2, s3, o2, u2, h3, l2, f2, d2, _3 = t2 ? q(t2) ? [t2 >> 16, t2 >> 8 & Pt, t2 & Pt] : 0 : Mt.black;
          if (!_3) {
            if ("," === t2.substr(-1) && (t2 = t2.substr(0, t2.length - 1)), Mt[t2])
              _3 = Mt[t2];
            else if ("#" === t2.charAt(0)) {
              if (t2.length < 6 && (t2 = "#" + (i2 = t2.charAt(1)) + i2 + (n3 = t2.charAt(2)) + n3 + (a2 = t2.charAt(3)) + a2 + (5 === t2.length ? t2.charAt(4) + t2.charAt(4) : "")), 9 === t2.length)
                return [(_3 = parseInt(t2.substr(1, 6), 16)) >> 16, _3 >> 8 & Pt, _3 & Pt, parseInt(t2.substr(7), 16) / 255];
              _3 = [(t2 = parseInt(t2.substr(1), 16)) >> 16, t2 >> 8 & Pt, t2 & Pt];
            } else if ("hsl" === t2.substr(0, 3))
              if (_3 = d2 = t2.match(tt), e2) {
                if (~t2.indexOf("="))
                  return _3 = t2.match(et), r2 && _3.length < 4 && (_3[3] = 1), _3;
              } else
                s3 = +_3[0] % 360 / 360, o2 = _3[1] / 100, i2 = 2 * (u2 = _3[2] / 100) - (n3 = u2 <= 0.5 ? u2 * (o2 + 1) : u2 + o2 - u2 * o2), 3 < _3.length && (_3[3] *= 1), _3[0] = rb(s3 + 1 / 3, i2, n3), _3[1] = rb(s3, i2, n3), _3[2] = rb(s3 - 1 / 3, i2, n3);
            else
              _3 = t2.match(tt) || Mt.transparent;
            _3 = _3.map(Number);
          }
          return e2 && !d2 && (i2 = _3[0] / Pt, n3 = _3[1] / Pt, a2 = _3[2] / Pt, u2 = ((h3 = Math.max(i2, n3, a2)) + (l2 = Math.min(i2, n3, a2))) / 2, h3 === l2 ? s3 = o2 = 0 : (f2 = h3 - l2, o2 = 0.5 < u2 ? f2 / (2 - h3 - l2) : f2 / (h3 + l2), s3 = h3 === i2 ? (n3 - a2) / f2 + (n3 < a2 ? 6 : 0) : h3 === n3 ? (a2 - i2) / f2 + 2 : (i2 - n3) / f2 + 4, s3 *= 60), _3[0] = ~~(s3 + 0.5), _3[1] = ~~(100 * o2 + 0.5), _3[2] = ~~(100 * u2 + 0.5)), r2 && _3.length < 4 && (_3[3] = 1), _3;
        }
        function tb(t2) {
          var r2 = [], i2 = [], n3 = -1;
          return t2.split(Ct).forEach(function(t3) {
            var e2 = t3.match(rt) || [];
            r2.push.apply(r2, e2), i2.push(n3 += e2.length + 1);
          }), r2.c = i2, r2;
        }
        function ub(t2, e2, r2) {
          var i2, n3, a2, s3, o2 = "", u2 = (t2 + o2).match(Ct), h3 = e2 ? "hsla(" : "rgba(", l2 = 0;
          if (!u2)
            return t2;
          if (u2 = u2.map(function(t3) {
            return (t3 = sb(t3, e2, 1)) && h3 + (e2 ? t3[0] + "," + t3[1] + "%," + t3[2] + "%," + t3[3] : t3.join(",")) + ")";
          }), r2 && (a2 = tb(t2), (i2 = r2.c).join(o2) !== a2.c.join(o2)))
            for (s3 = (n3 = t2.replace(Ct, "1").split(rt)).length - 1; l2 < s3; l2++)
              o2 += n3[l2] + (~i2.indexOf(l2) ? u2.shift() || h3 + "0,0,0,0)" : (a2.length ? a2 : u2.length ? u2 : r2).shift());
          if (!n3)
            for (s3 = (n3 = t2.split(Ct)).length - 1; l2 < s3; l2++)
              o2 += n3[l2] + u2[l2];
          return o2 + n3[s3];
        }
        function xb(t2) {
          var e2, r2 = t2.join(" ");
          if (Ct.lastIndex = 0, Ct.test(r2))
            return e2 = At.test(r2), t2[1] = ub(t2[1], e2), t2[0] = ub(t2[0], e2, tb(t2[1])), true;
        }
        function Gb(t2) {
          var e2 = (t2 + "").split("("), r2 = zt[e2[0]];
          return r2 && 1 < e2.length && r2.config ? r2.config.apply(null, ~t2.indexOf("{") ? [function _parseObjectInString(t3) {
            for (var e3, r3, i2, n3 = {}, a2 = t3.substr(1, t3.length - 3).split(":"), s3 = a2[0], o2 = 1, u2 = a2.length; o2 < u2; o2++)
              r3 = a2[o2], e3 = o2 !== u2 - 1 ? r3.lastIndexOf(",") : r3.length, i2 = r3.substr(0, e3), n3[s3] = isNaN(i2) ? i2.replace(Et, "").trim() : +i2, s3 = r3.substr(e3 + 1).trim();
            return n3;
          }(e2[1])] : function _valueInParentheses(t3) {
            var e3 = t3.indexOf("(") + 1, r3 = t3.indexOf(")"), i2 = t3.indexOf("(", e3);
            return t3.substring(e3, ~i2 && i2 < r3 ? t3.indexOf(")", r3 + 1) : r3);
          }(t2).split(",").map(ia)) : zt._CE && Rt.test(t2) ? zt._CE("", t2) : r2;
        }
        function Ib(t2, e2) {
          for (var r2, i2 = t2._first; i2; )
            i2 instanceof Ut ? Ib(i2, e2) : !i2.vars.yoyoEase || i2._yoyo && i2._repeat || i2._yoyo === e2 || (i2.timeline ? Ib(i2.timeline, e2) : (r2 = i2._ease, i2._ease = i2._yEase, i2._yEase = r2, i2._yoyo = e2)), i2 = i2._next;
        }
        function Kb(t2, e2, r2, i2) {
          void 0 === r2 && (r2 = function easeOut(t3) {
            return 1 - e2(1 - t3);
          }), void 0 === i2 && (i2 = function easeInOut(t3) {
            return t3 < 0.5 ? e2(2 * t3) / 2 : 1 - e2(2 * (1 - t3)) / 2;
          });
          var n3, a2 = { easeIn: e2, easeOut: r2, easeInOut: i2 };
          return ba(t2, function(t3) {
            for (var e3 in zt[t3] = ot[t3] = a2, zt[n3 = t3.toLowerCase()] = r2, a2)
              zt[n3 + ("easeIn" === e3 ? ".in" : "easeOut" === e3 ? ".out" : ".inOut")] = zt[t3 + "." + e3] = a2[e3];
          }), a2;
        }
        function Lb(e2) {
          return function(t2) {
            return t2 < 0.5 ? (1 - e2(1 - 2 * t2)) / 2 : 0.5 + e2(2 * (t2 - 0.5)) / 2;
          };
        }
        function Mb(r2, t2, e2) {
          function em(t3) {
            return 1 === t3 ? 1 : i2 * Math.pow(2, -10 * t3) * Z((t3 - a2) * n3) + 1;
          }
          var i2 = 1 <= t2 ? t2 : 1, n3 = (e2 || (r2 ? 0.3 : 0.45)) / (t2 < 1 ? t2 : 1), a2 = n3 / X * (Math.asin(1 / i2) || 0), s3 = "out" === r2 ? em : "in" === r2 ? function(t3) {
            return 1 - em(1 - t3);
          } : Lb(em);
          return n3 = X / n3, s3.config = function(t3, e3) {
            return Mb(r2, t3, e3);
          }, s3;
        }
        function Nb(e2, r2) {
          function mm(t3) {
            return t3 ? --t3 * t3 * ((r2 + 1) * t3 + r2) + 1 : 0;
          }
          void 0 === r2 && (r2 = 1.70158);
          var t2 = "out" === e2 ? mm : "in" === e2 ? function(t3) {
            return 1 - mm(1 - t3);
          } : Lb(mm);
          return t2.config = function(t3) {
            return Nb(e2, t3);
          }, t2;
        }
        var B, I, i, n2, a, h2, l, f, d, c, m, g, y, T, b, w2, x, k, C, A, D, S, z, R, E, F, U = { autoSleep: 120, force3D: "auto", nullTargetWarn: 1, units: { lineHeight: "" } }, L = { duration: 0.5, overwrite: false, delay: 0 }, Y = 1e8, V = 1 / Y, X = 2 * Math.PI, j = X / 4, K = 0, G = Math.sqrt, W = Math.cos, Z = Math.sin, H = "function" == typeof ArrayBuffer && ArrayBuffer.isView || function() {
        }, J = Array.isArray, tt = /(?:-?\.?\d|\.)+/gi, et = /[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g, rt = /[-+=.]*\d+[.e-]*\d*[a-z%]*/g, it = /[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi, nt = /[+-]=-?[.\d]+/, at = /[^,'"\[\]\s]+/gi, st = /^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i, ot = {}, ut = {}, ht = [], lt = {}, ft = {}, dt = {}, _t = 30, pt = [], ct = "", mt = function _merge(t2, e2) {
          for (var r2 in e2)
            t2[r2] = e2[r2];
          return t2;
        }, gt = function _animationCycle(t2, e2) {
          var r2 = Math.floor(t2 /= e2);
          return t2 && r2 === t2 ? r2 - 1 : r2;
        }, vt = function _isFromOrFromStart(t2) {
          var e2 = t2.data;
          return "isFromStart" === e2 || "isStart" === e2;
        }, yt = { _start: 0, endTime: Q, totalDuration: Q }, Tt = function _parsePosition(t2, e2, r2) {
          var i2, n3, a2, s3 = t2.labels, u2 = t2._recent || yt, h3 = t2.duration() >= Y ? u2.endTime(false) : t2._dur;
          return o(e2) && (isNaN(e2) || e2 in s3) ? (n3 = e2.charAt(0), a2 = "%" === e2.substr(-1), i2 = e2.indexOf("="), "<" === n3 || ">" === n3 ? (0 <= i2 && (e2 = e2.replace(/=/, "")), ("<" === n3 ? u2._start : u2.endTime(0 <= u2._repeat)) + (parseFloat(e2.substr(1)) || 0) * (a2 ? (i2 < 0 ? u2 : r2).totalDuration() / 100 : 1)) : i2 < 0 ? (e2 in s3 || (s3[e2] = h3), s3[e2]) : (n3 = parseFloat(e2.charAt(i2 - 1) + e2.substr(i2 + 1)), a2 && r2 && (n3 = n3 / 100 * (J(r2) ? r2[0] : r2).totalDuration()), 1 < i2 ? _parsePosition(t2, e2.substr(0, i2 - 1), r2) + n3 : h3 + n3)) : null == e2 ? h3 : +e2;
        }, bt = function _clamp(t2, e2, r2) {
          return r2 < t2 ? t2 : e2 < r2 ? e2 : r2;
        }, wt = [].slice, xt = function toArray(t2, e2, r2) {
          return !o(t2) || r2 || !n2 && St() ? J(t2) ? function _flatten(t3, e3, r3) {
            return void 0 === r3 && (r3 = []), t3.forEach(function(t4) {
              return o(t4) && !e3 || Ua(t4, 1) ? r3.push.apply(r3, xt(t4)) : r3.push(t4);
            }) || r3;
          }(t2, r2) : Ua(t2) ? wt.call(t2, 0) : t2 ? [t2] : [] : wt.call((e2 || a).querySelectorAll(t2), 0);
        }, kt = function mapRange(e2, t2, r2, i2, n3) {
          var a2 = t2 - e2, s3 = i2 - r2;
          return Pa(n3, function(t3) {
            return r2 + ((t3 - e2) / a2 * s3 || 0);
          });
        }, Ot = function _callback(t2, e2, r2) {
          var i2, n3, a2 = t2.vars, s3 = a2[e2];
          if (s3)
            return i2 = a2[e2 + "Params"], n3 = a2.callbackScope || t2, r2 && ht.length && ga(), i2 ? s3.apply(n3, i2) : s3.call(n3);
        }, Pt = 255, Mt = { aqua: [0, Pt, Pt], lime: [0, Pt, 0], silver: [192, 192, 192], black: [0, 0, 0], maroon: [128, 0, 0], teal: [0, 128, 128], blue: [0, 0, Pt], navy: [0, 0, 128], white: [Pt, Pt, Pt], olive: [128, 128, 0], yellow: [Pt, Pt, 0], orange: [Pt, 165, 0], gray: [128, 128, 128], purple: [128, 0, 128], green: [0, 128, 0], red: [Pt, 0, 0], pink: [Pt, 192, 203], cyan: [0, Pt, Pt], transparent: [Pt, Pt, Pt, 0] }, Ct = function() {
          var t2, e2 = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3,4}){1,2}\\b";
          for (t2 in Mt)
            e2 += "|" + t2 + "\\b";
          return new RegExp(e2 + ")", "gi");
        }(), At = /hsl[a]?\(/, Dt = (x = Date.now, k = 500, C = 33, A = x(), D = A, z = S = 1e3 / 240, T = { time: 0, frame: 0, tick: function tick() {
          Vk(true);
        }, deltaRatio: function deltaRatio(t2) {
          return b / (1e3 / (t2 || 60));
        }, wake: function wake() {
          l && (!n2 && u() && (i = n2 = window, a = i.document || {}, ot.gsap = he, (i.gsapVersions || (i.gsapVersions = [])).push(he.version), M(h2 || i.GreenSockGlobals || !i.gsap && i || {}), y = i.requestAnimationFrame), m && T.sleep(), g = y || function(t2) {
            return setTimeout(t2, z - 1e3 * T.time + 1 | 0);
          }, c = 1, Vk(2));
        }, sleep: function sleep() {
          (y ? i.cancelAnimationFrame : clearTimeout)(m), c = 0, g = Q;
        }, lagSmoothing: function lagSmoothing(t2, e2) {
          k = t2 || 1e8, C = Math.min(e2, k, 0);
        }, fps: function fps(t2) {
          S = 1e3 / (t2 || 240), z = 1e3 * T.time + S;
        }, add: function add(n3, t2, e2) {
          var a2 = t2 ? function(t3, e3, r2, i2) {
            n3(t3, e3, r2, i2), T.remove(a2);
          } : n3;
          return T.remove(n3), R[e2 ? "unshift" : "push"](a2), St(), a2;
        }, remove: function remove(t2, e2) {
          ~(e2 = R.indexOf(t2)) && R.splice(e2, 1) && e2 <= w2 && w2--;
        }, _listeners: R = [] }), St = function _wake() {
          return !c && Dt.wake();
        }, zt = {}, Rt = /^[\d.\-M][\d.\-,\s]/, Et = /["']/g, Ft = function _invertEase(e2) {
          return function(t2) {
            return 1 - e2(1 - t2);
          };
        }, Bt = function _parseEase(t2, e2) {
          return t2 && (p(t2) ? t2 : zt[t2] || Gb(t2)) || e2;
        };
        function Vk(t2) {
          var e2, r2, i2, n3, a2 = x() - D, s3 = true === t2;
          if (k < a2 && (A += a2 - C), (0 < (e2 = (i2 = (D += a2) - A) - z) || s3) && (n3 = ++T.frame, b = i2 - 1e3 * T.time, T.time = i2 /= 1e3, z += e2 + (S <= e2 ? 4 : S - e2), r2 = 1), s3 || (m = g(Vk)), r2)
            for (w2 = 0; w2 < R.length; w2++)
              R[w2](i2, b, n3, t2);
        }
        function Dm(t2) {
          return t2 < F ? E * t2 * t2 : t2 < 0.7272727272727273 ? E * Math.pow(t2 - 1.5 / 2.75, 2) + 0.75 : t2 < 0.9090909090909092 ? E * (t2 -= 2.25 / 2.75) * t2 + 0.9375 : E * Math.pow(t2 - 2.625 / 2.75, 2) + 0.984375;
        }
        ba("Linear,Quad,Cubic,Quart,Quint,Strong", function(t2, e2) {
          var r2 = e2 < 5 ? e2 + 1 : e2;
          Kb(t2 + ",Power" + (r2 - 1), e2 ? function(t3) {
            return Math.pow(t3, r2);
          } : function(t3) {
            return t3;
          }, function(t3) {
            return 1 - Math.pow(1 - t3, r2);
          }, function(t3) {
            return t3 < 0.5 ? Math.pow(2 * t3, r2) / 2 : 1 - Math.pow(2 * (1 - t3), r2) / 2;
          });
        }), zt.Linear.easeNone = zt.none = zt.Linear.easeIn, Kb("Elastic", Mb("in"), Mb("out"), Mb()), E = 7.5625, F = 1 / 2.75, Kb("Bounce", function(t2) {
          return 1 - Dm(1 - t2);
        }, Dm), Kb("Expo", function(t2) {
          return t2 ? Math.pow(2, 10 * (t2 - 1)) : 0;
        }), Kb("Circ", function(t2) {
          return -(G(1 - t2 * t2) - 1);
        }), Kb("Sine", function(t2) {
          return 1 === t2 ? 1 : 1 - W(t2 * j);
        }), Kb("Back", Nb("in"), Nb("out"), Nb()), zt.SteppedEase = zt.steps = ot.SteppedEase = { config: function config(t2, e2) {
          void 0 === t2 && (t2 = 1);
          var r2 = 1 / t2, i2 = t2 + (e2 ? 0 : 1), n3 = e2 ? 1 : 0;
          return function(t3) {
            return ((i2 * bt(0, 0.99999999, t3) | 0) + n3) * r2;
          };
        } }, L.ease = zt["quad.out"], ba("onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt", function(t2) {
          return ct += t2 + "," + t2 + "Params,";
        });
        var It, Lt = function GSCache(t2, e2) {
          this.id = K++, (t2._gsap = this).target = t2, this.harness = e2, this.get = e2 ? e2.get : aa, this.set = e2 ? e2.getSetter : Ht;
        }, Nt = ((It = Animation.prototype).delay = function delay(t2) {
          return t2 || 0 === t2 ? (this.parent && this.parent.smoothChildTiming && this.startTime(this._start + t2 - this._delay), this._delay = t2, this) : this._delay;
        }, It.duration = function duration(t2) {
          return arguments.length ? this.totalDuration(0 < this._repeat ? t2 + (t2 + this._rDelay) * this._repeat : t2) : this.totalDuration() && this._dur;
        }, It.totalDuration = function totalDuration(t2) {
          return arguments.length ? (this._dirty = 0, Ka(this, this._repeat < 0 ? t2 : (t2 - this._repeat * this._rDelay) / (this._repeat + 1))) : this._tDur;
        }, It.totalTime = function totalTime(t2, e2) {
          if (St(), !arguments.length)
            return this._tTime;
          var r2 = this._dp;
          if (r2 && r2.smoothChildTiming && this._ts) {
            for (Ba(this, t2), !r2._dp || r2.parent || Ca(r2, this); r2 && r2.parent; )
              r2.parent._time !== r2._start + (0 <= r2._ts ? r2._tTime / r2._ts : (r2.totalDuration() - r2._tTime) / -r2._ts) && r2.totalTime(r2._tTime, true), r2 = r2.parent;
            !this.parent && this._dp.autoRemoveChildren && (0 < this._ts && t2 < this._tDur || this._ts < 0 && 0 < t2 || !this._tDur && !t2) && Da(this._dp, this, this._start - this._delay);
          }
          return (this._tTime !== t2 || !this._dur && !e2 || this._initted && Math.abs(this._zTime) === V || !t2 && !this._initted && (this.add || this._ptLookup)) && (this._ts || (this._pTime = t2), ha(this, t2, e2)), this;
        }, It.time = function time(t2, e2) {
          return arguments.length ? this.totalTime(Math.min(this.totalDuration(), t2 + xa(this)) % (this._dur + this._rDelay) || (t2 ? this._dur : 0), e2) : this._time;
        }, It.totalProgress = function totalProgress(t2, e2) {
          return arguments.length ? this.totalTime(this.totalDuration() * t2, e2) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.ratio;
        }, It.progress = function progress(t2, e2) {
          return arguments.length ? this.totalTime(this.duration() * (!this._yoyo || 1 & this.iteration() ? t2 : 1 - t2) + xa(this), e2) : this.duration() ? Math.min(1, this._time / this._dur) : this.ratio;
        }, It.iteration = function iteration(t2, e2) {
          var r2 = this.duration() + this._rDelay;
          return arguments.length ? this.totalTime(this._time + (t2 - 1) * r2, e2) : this._repeat ? gt(this._tTime, r2) + 1 : 1;
        }, It.timeScale = function timeScale(t2) {
          if (!arguments.length)
            return this._rts === -V ? 0 : this._rts;
          if (this._rts === t2)
            return this;
          var e2 = this.parent && this._ts ? za(this.parent._time, this) : this._tTime;
          return this._rts = +t2 || 0, this._ts = this._ps || t2 === -V ? 0 : this._rts, this.totalTime(bt(-this._delay, this._tDur, e2), true), Aa(this), function _recacheAncestors(t3) {
            for (var e3 = t3.parent; e3 && e3.parent; )
              e3._dirty = 1, e3.totalDuration(), e3 = e3.parent;
            return t3;
          }(this);
        }, It.paused = function paused(t2) {
          return arguments.length ? (this._ps !== t2 && ((this._ps = t2) ? (this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()), this._ts = this._act = 0) : (St(), this._ts = this._rts, this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, 1 === this.progress() && Math.abs(this._zTime) !== V && (this._tTime -= V)))), this) : this._ps;
        }, It.startTime = function startTime(t2) {
          if (arguments.length) {
            this._start = t2;
            var e2 = this.parent || this._dp;
            return !e2 || !e2._sort && this.parent || Da(e2, this, t2 - this._delay), this;
          }
          return this._start;
        }, It.endTime = function endTime(e2) {
          return this._start + (t(e2) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);
        }, It.rawTime = function rawTime(t2) {
          var e2 = this.parent || this._dp;
          return e2 ? t2 && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : this._ts ? za(e2.rawTime(t2), this) : this._tTime : this._tTime;
        }, It.globalTime = function globalTime(t2) {
          for (var e2 = this, r2 = arguments.length ? t2 : e2.rawTime(); e2; )
            r2 = e2._start + r2 / (e2._ts || 1), e2 = e2._dp;
          return r2;
        }, It.repeat = function repeat(t2) {
          return arguments.length ? (this._repeat = t2 === 1 / 0 ? -2 : t2, La(this)) : -2 === this._repeat ? 1 / 0 : this._repeat;
        }, It.repeatDelay = function repeatDelay(t2) {
          if (arguments.length) {
            var e2 = this._time;
            return this._rDelay = t2, La(this), e2 ? this.time(e2) : this;
          }
          return this._rDelay;
        }, It.yoyo = function yoyo(t2) {
          return arguments.length ? (this._yoyo = t2, this) : this._yoyo;
        }, It.seek = function seek(e2, r2) {
          return this.totalTime(Tt(this, e2), t(r2));
        }, It.restart = function restart(e2, r2) {
          return this.play().totalTime(e2 ? -this._delay : 0, t(r2));
        }, It.play = function play(t2, e2) {
          return null != t2 && this.seek(t2, e2), this.reversed(false).paused(false);
        }, It.reverse = function reverse(t2, e2) {
          return null != t2 && this.seek(t2 || this.totalDuration(), e2), this.reversed(true).paused(false);
        }, It.pause = function pause(t2, e2) {
          return null != t2 && this.seek(t2, e2), this.paused(true);
        }, It.resume = function resume() {
          return this.paused(false);
        }, It.reversed = function reversed(t2) {
          return arguments.length ? (!!t2 !== this.reversed() && this.timeScale(-this._rts || (t2 ? -V : 0)), this) : this._rts < 0;
        }, It.invalidate = function invalidate() {
          return this._initted = this._act = 0, this._zTime = -V, this;
        }, It.isActive = function isActive() {
          var t2, e2 = this.parent || this._dp, r2 = this._start;
          return !(e2 && !(this._ts && this._initted && e2.isActive() && (t2 = e2.rawTime(true)) >= r2 && t2 < this.endTime(true) - V));
        }, It.eventCallback = function eventCallback(t2, e2, r2) {
          var i2 = this.vars;
          return 1 < arguments.length ? (e2 ? (i2[t2] = e2, r2 && (i2[t2 + "Params"] = r2), "onUpdate" === t2 && (this._onUpdate = e2)) : delete i2[t2], this) : i2[t2];
        }, It.then = function then(t2) {
          var i2 = this;
          return new Promise(function(e2) {
            function Un() {
              var t3 = i2.then;
              i2.then = null, p(r2) && (r2 = r2(i2)) && (r2.then || r2 === i2) && (i2.then = t3), e2(r2), i2.then = t3;
            }
            var r2 = p(t2) ? t2 : ja;
            i2._initted && 1 === i2.totalProgress() && 0 <= i2._ts || !i2._tTime && i2._ts < 0 ? Un() : i2._prom = Un;
          });
        }, It.kill = function kill() {
          mb(this);
        }, Animation);
        function Animation(t2) {
          this.vars = t2, this._delay = +t2.delay || 0, (this._repeat = t2.repeat === 1 / 0 ? -2 : t2.repeat || 0) && (this._rDelay = t2.repeatDelay || 0, this._yoyo = !!t2.yoyo || !!t2.yoyoEase), this._ts = 1, Ka(this, +t2.duration, 1, 1), this.data = t2.data, c || Dt.wake();
        }
        ka(Nt.prototype, { _time: 0, _start: 0, _end: 0, _tTime: 0, _tDur: 0, _dirty: 0, _repeat: 0, _yoyo: false, parent: null, _initted: false, _rDelay: 0, _ts: 1, _dp: 0, ratio: 0, _zTime: -V, _prom: 0, _ps: false, _rts: 1 });
        var Ut = function(n3) {
          function Timeline(e3, r2) {
            var i2;
            return void 0 === e3 && (e3 = {}), (i2 = n3.call(this, e3) || this).labels = {}, i2.smoothChildTiming = !!e3.smoothChildTiming, i2.autoRemoveChildren = !!e3.autoRemoveChildren, i2._sort = t(e3.sortChildren), I && Da(e3.parent || I, _assertThisInitialized(i2), r2), e3.reversed && i2.reverse(), e3.paused && i2.paused(true), e3.scrollTrigger && Ea(_assertThisInitialized(i2), e3.scrollTrigger), i2;
          }
          _inheritsLoose(Timeline, n3);
          var e2 = Timeline.prototype;
          return e2.to = function to(t2, e3, r2) {
            return Oa(0, arguments, this), this;
          }, e2.from = function from(t2, e3, r2) {
            return Oa(1, arguments, this), this;
          }, e2.fromTo = function fromTo(t2, e3, r2, i2) {
            return Oa(2, arguments, this), this;
          }, e2.set = function set(t2, e3, r2) {
            return e3.duration = 0, e3.parent = this, pa(e3).repeatDelay || (e3.repeat = 0), e3.immediateRender = !!e3.immediateRender, new $t(t2, e3, Tt(this, r2), 1), this;
          }, e2.call = function call(t2, e3, r2) {
            return Da(this, $t.delayedCall(0, t2, e3), r2);
          }, e2.staggerTo = function staggerTo(t2, e3, r2, i2, n4, a2, s3) {
            return r2.duration = e3, r2.stagger = r2.stagger || i2, r2.onComplete = a2, r2.onCompleteParams = s3, r2.parent = this, new $t(t2, r2, Tt(this, n4)), this;
          }, e2.staggerFrom = function staggerFrom(e3, r2, i2, n4, a2, s3, o2) {
            return i2.runBackwards = 1, pa(i2).immediateRender = t(i2.immediateRender), this.staggerTo(e3, r2, i2, n4, a2, s3, o2);
          }, e2.staggerFromTo = function staggerFromTo(e3, r2, i2, n4, a2, s3, o2, u2) {
            return n4.startAt = i2, pa(n4).immediateRender = t(n4.immediateRender), this.staggerTo(e3, r2, n4, a2, s3, o2, u2);
          }, e2.render = function render(t2, e3, r2) {
            var i2, n4, a2, s3, o2, u2, h3, l2, f2, d2, _3, p2, c2 = this._time, m2 = this._dirty ? this.totalDuration() : this._tDur, g2 = this._dur, v2 = t2 <= 0 ? 0 : da(t2), y2 = this._zTime < 0 != t2 < 0 && (this._initted || !g2);
            if (this !== I && m2 < v2 && 0 <= t2 && (v2 = m2), v2 !== this._tTime || r2 || y2) {
              if (c2 !== this._time && g2 && (v2 += this._time - c2, t2 += this._time - c2), i2 = v2, f2 = this._start, u2 = !(l2 = this._ts), y2 && (g2 || (c2 = this._zTime), !t2 && e3 || (this._zTime = t2)), this._repeat) {
                if (_3 = this._yoyo, o2 = g2 + this._rDelay, this._repeat < -1 && t2 < 0)
                  return this.totalTime(100 * o2 + t2, e3, r2);
                if (i2 = da(v2 % o2), v2 === m2 ? (s3 = this._repeat, i2 = g2) : ((s3 = ~~(v2 / o2)) && s3 === v2 / o2 && (i2 = g2, s3--), g2 < i2 && (i2 = g2)), d2 = gt(this._tTime, o2), !c2 && this._tTime && d2 !== s3 && (d2 = s3), _3 && 1 & s3 && (i2 = g2 - i2, p2 = 1), s3 !== d2 && !this._lock) {
                  var T2 = _3 && 1 & d2, b2 = T2 === (_3 && 1 & s3);
                  if (s3 < d2 && (T2 = !T2), c2 = T2 ? 0 : g2, this._lock = 1, this.render(c2 || (p2 ? 0 : da(s3 * o2)), e3, !g2)._lock = 0, this._tTime = v2, !e3 && this.parent && Ot(this, "onRepeat"), this.vars.repeatRefresh && !p2 && (this.invalidate()._lock = 1), c2 && c2 !== this._time || u2 != !this._ts || this.vars.onRepeat && !this.parent && !this._act)
                    return this;
                  if (g2 = this._dur, m2 = this._tDur, b2 && (this._lock = 2, c2 = T2 ? g2 : -1e-4, this.render(c2, true), this.vars.repeatRefresh && !p2 && this.invalidate()), this._lock = 0, !this._ts && !u2)
                    return this;
                  Ib(this, p2);
                }
              }
              if (this._hasPause && !this._forcing && this._lock < 2 && (h3 = function _findNextPauseTween(t3, e4, r3) {
                var i3;
                if (e4 < r3)
                  for (i3 = t3._first; i3 && i3._start <= r3; ) {
                    if ("isPause" === i3.data && i3._start > e4)
                      return i3;
                    i3 = i3._next;
                  }
                else
                  for (i3 = t3._last; i3 && i3._start >= r3; ) {
                    if ("isPause" === i3.data && i3._start < e4)
                      return i3;
                    i3 = i3._prev;
                  }
              }(this, da(c2), da(i2))) && (v2 -= i2 - (i2 = h3._start)), this._tTime = v2, this._time = i2, this._act = !l2, this._initted || (this._onUpdate = this.vars.onUpdate, this._initted = 1, this._zTime = t2, c2 = 0), !c2 && i2 && !e3 && (Ot(this, "onStart"), this._tTime !== v2))
                return this;
              if (c2 <= i2 && 0 <= t2)
                for (n4 = this._first; n4; ) {
                  if (a2 = n4._next, (n4._act || i2 >= n4._start) && n4._ts && h3 !== n4) {
                    if (n4.parent !== this)
                      return this.render(t2, e3, r2);
                    if (n4.render(0 < n4._ts ? (i2 - n4._start) * n4._ts : (n4._dirty ? n4.totalDuration() : n4._tDur) + (i2 - n4._start) * n4._ts, e3, r2), i2 !== this._time || !this._ts && !u2) {
                      h3 = 0, a2 && (v2 += this._zTime = -V);
                      break;
                    }
                  }
                  n4 = a2;
                }
              else {
                n4 = this._last;
                for (var w3 = t2 < 0 ? t2 : i2; n4; ) {
                  if (a2 = n4._prev, (n4._act || w3 <= n4._end) && n4._ts && h3 !== n4) {
                    if (n4.parent !== this)
                      return this.render(t2, e3, r2);
                    if (n4.render(0 < n4._ts ? (w3 - n4._start) * n4._ts : (n4._dirty ? n4.totalDuration() : n4._tDur) + (w3 - n4._start) * n4._ts, e3, r2), i2 !== this._time || !this._ts && !u2) {
                      h3 = 0, a2 && (v2 += this._zTime = w3 ? -V : V);
                      break;
                    }
                  }
                  n4 = a2;
                }
              }
              if (h3 && !e3 && (this.pause(), h3.render(c2 <= i2 ? 0 : -V)._zTime = c2 <= i2 ? 1 : -1, this._ts))
                return this._start = f2, Aa(this), this.render(t2, e3, r2);
              this._onUpdate && !e3 && Ot(this, "onUpdate", true), (v2 === m2 && this._tTime >= this.totalDuration() || !v2 && c2) && (f2 !== this._start && Math.abs(l2) === Math.abs(this._ts) || this._lock || (!t2 && g2 || !(v2 === m2 && 0 < this._ts || !v2 && this._ts < 0) || ta(this, 1), e3 || t2 < 0 && !c2 || !v2 && !c2 && m2 || (Ot(this, v2 === m2 && 0 <= t2 ? "onComplete" : "onReverseComplete", true), !this._prom || v2 < m2 && 0 < this.timeScale() || this._prom())));
            }
            return this;
          }, e2.add = function add(t2, e3) {
            var r2 = this;
            if (q(e3) || (e3 = Tt(this, e3, t2)), !(t2 instanceof Nt)) {
              if (J(t2))
                return t2.forEach(function(t3) {
                  return r2.add(t3, e3);
                }), this;
              if (o(t2))
                return this.addLabel(t2, e3);
              if (!p(t2))
                return this;
              t2 = $t.delayedCall(0, t2);
            }
            return this !== t2 ? Da(this, t2, e3) : this;
          }, e2.getChildren = function getChildren(t2, e3, r2, i2) {
            void 0 === t2 && (t2 = true), void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = true), void 0 === i2 && (i2 = -Y);
            for (var n4 = [], a2 = this._first; a2; )
              a2._start >= i2 && (a2 instanceof $t ? e3 && n4.push(a2) : (r2 && n4.push(a2), t2 && n4.push.apply(n4, a2.getChildren(true, e3, r2)))), a2 = a2._next;
            return n4;
          }, e2.getById = function getById(t2) {
            for (var e3 = this.getChildren(1, 1, 1), r2 = e3.length; r2--; )
              if (e3[r2].vars.id === t2)
                return e3[r2];
          }, e2.remove = function remove(t2) {
            return o(t2) ? this.removeLabel(t2) : p(t2) ? this.killTweensOf(t2) : (sa(this, t2), t2 === this._recent && (this._recent = this._last), ua(this));
          }, e2.totalTime = function totalTime(t2, e3) {
            return arguments.length ? (this._forcing = 1, !this._dp && this._ts && (this._start = da(Dt.time - (0 < this._ts ? t2 / this._ts : (this.totalDuration() - t2) / -this._ts))), n3.prototype.totalTime.call(this, t2, e3), this._forcing = 0, this) : this._tTime;
          }, e2.addLabel = function addLabel(t2, e3) {
            return this.labels[t2] = Tt(this, e3), this;
          }, e2.removeLabel = function removeLabel(t2) {
            return delete this.labels[t2], this;
          }, e2.addPause = function addPause(t2, e3, r2) {
            var i2 = $t.delayedCall(0, e3 || Q, r2);
            return i2.data = "isPause", this._hasPause = 1, Da(this, i2, Tt(this, t2));
          }, e2.removePause = function removePause(t2) {
            var e3 = this._first;
            for (t2 = Tt(this, t2); e3; )
              e3._start === t2 && "isPause" === e3.data && ta(e3), e3 = e3._next;
          }, e2.killTweensOf = function killTweensOf(t2, e3, r2) {
            for (var i2 = this.getTweensOf(t2, r2), n4 = i2.length; n4--; )
              Yt !== i2[n4] && i2[n4].kill(t2, e3);
            return this;
          }, e2.getTweensOf = function getTweensOf(t2, e3) {
            for (var r2, i2 = [], n4 = xt(t2), a2 = this._first, s3 = q(e3); a2; )
              a2 instanceof $t ? fa(a2._targets, n4) && (s3 ? (!Yt || a2._initted && a2._ts) && a2.globalTime(0) <= e3 && a2.globalTime(a2.totalDuration()) > e3 : !e3 || a2.isActive()) && i2.push(a2) : (r2 = a2.getTweensOf(n4, e3)).length && i2.push.apply(i2, r2), a2 = a2._next;
            return i2;
          }, e2.tweenTo = function tweenTo(t2, e3) {
            e3 = e3 || {};
            var r2, i2 = this, n4 = Tt(i2, t2), a2 = e3.startAt, s3 = e3.onStart, o2 = e3.onStartParams, u2 = e3.immediateRender, h3 = $t.to(i2, ka({ ease: e3.ease || "none", lazy: false, immediateRender: false, time: n4, overwrite: "auto", duration: e3.duration || Math.abs((n4 - (a2 && "time" in a2 ? a2.time : i2._time)) / i2.timeScale()) || V, onStart: function onStart() {
              if (i2.pause(), !r2) {
                var t3 = e3.duration || Math.abs((n4 - (a2 && "time" in a2 ? a2.time : i2._time)) / i2.timeScale());
                h3._dur !== t3 && Ka(h3, t3, 0, 1).render(h3._time, true, true), r2 = 1;
              }
              s3 && s3.apply(h3, o2 || []);
            } }, e3));
            return u2 ? h3.render(0) : h3;
          }, e2.tweenFromTo = function tweenFromTo(t2, e3, r2) {
            return this.tweenTo(e3, ka({ startAt: { time: Tt(this, t2) } }, r2));
          }, e2.recent = function recent() {
            return this._recent;
          }, e2.nextLabel = function nextLabel(t2) {
            return void 0 === t2 && (t2 = this._time), kb(this, Tt(this, t2));
          }, e2.previousLabel = function previousLabel(t2) {
            return void 0 === t2 && (t2 = this._time), kb(this, Tt(this, t2), 1);
          }, e2.currentLabel = function currentLabel(t2) {
            return arguments.length ? this.seek(t2, true) : this.previousLabel(this._time + V);
          }, e2.shiftChildren = function shiftChildren(t2, e3, r2) {
            void 0 === r2 && (r2 = 0);
            for (var i2, n4 = this._first, a2 = this.labels; n4; )
              n4._start >= r2 && (n4._start += t2, n4._end += t2), n4 = n4._next;
            if (e3)
              for (i2 in a2)
                a2[i2] >= r2 && (a2[i2] += t2);
            return ua(this);
          }, e2.invalidate = function invalidate() {
            var t2 = this._first;
            for (this._lock = 0; t2; )
              t2.invalidate(), t2 = t2._next;
            return n3.prototype.invalidate.call(this);
          }, e2.clear = function clear(t2) {
            void 0 === t2 && (t2 = true);
            for (var e3, r2 = this._first; r2; )
              e3 = r2._next, this.remove(r2), r2 = e3;
            return this._dp && (this._time = this._tTime = this._pTime = 0), t2 && (this.labels = {}), ua(this);
          }, e2.totalDuration = function totalDuration(t2) {
            var e3, r2, i2, n4 = 0, a2 = this, s3 = a2._last, o2 = Y;
            if (arguments.length)
              return a2.timeScale((a2._repeat < 0 ? a2.duration() : a2.totalDuration()) / (a2.reversed() ? -t2 : t2));
            if (a2._dirty) {
              for (i2 = a2.parent; s3; )
                e3 = s3._prev, s3._dirty && s3.totalDuration(), o2 < (r2 = s3._start) && a2._sort && s3._ts && !a2._lock ? (a2._lock = 1, Da(a2, s3, r2 - s3._delay, 1)._lock = 0) : o2 = r2, r2 < 0 && s3._ts && (n4 -= r2, (!i2 && !a2._dp || i2 && i2.smoothChildTiming) && (a2._start += r2 / a2._ts, a2._time -= r2, a2._tTime -= r2), a2.shiftChildren(-r2, false, -Infinity), o2 = 0), s3._end > n4 && s3._ts && (n4 = s3._end), s3 = e3;
              Ka(a2, a2 === I && a2._time > n4 ? a2._time : n4, 1, 1), a2._dirty = 0;
            }
            return a2._tDur;
          }, Timeline.updateRoot = function updateRoot(t2) {
            if (I._ts && (ha(I, za(t2, I)), f = Dt.frame), Dt.frame >= _t) {
              _t += U.autoSleep || 120;
              var e3 = I._first;
              if ((!e3 || !e3._ts) && U.autoSleep && Dt._listeners.length < 2) {
                for (; e3 && !e3._ts; )
                  e3 = e3._next;
                e3 || Dt.sleep();
              }
            }
          }, Timeline;
        }(Nt);
        ka(Ut.prototype, { _lock: 0, _hasPause: 0, _forcing: 0 });
        function Ub(t2, e2, r2, i2, n3, a2) {
          var u2, h3, l2, f2;
          if (ft[t2] && false !== (u2 = new ft[t2]()).init(n3, u2.rawVars ? e2[t2] : function _processVars(t3, e3, r3, i3, n4) {
            if (p(t3) && (t3 = Qt(t3, n4, e3, r3, i3)), !s2(t3) || t3.style && t3.nodeType || J(t3) || H(t3))
              return o(t3) ? Qt(t3, n4, e3, r3, i3) : t3;
            var a3, u3 = {};
            for (a3 in t3)
              u3[a3] = Qt(t3[a3], n4, e3, r3, i3);
            return u3;
          }(e2[t2], i2, n3, a2, r2), r2, i2, a2) && (r2._pt = h3 = new oe(r2._pt, n3, t2, 0, 1, u2.render, u2, 0, u2.priority), r2 !== d))
            for (l2 = r2._ptLookup[r2._targets.indexOf(n3)], f2 = u2._props.length; f2--; )
              l2[u2._props[f2]] = h3;
          return u2;
        }
        function $b(t2, r2, e2, i2) {
          var n3, a2, s3 = r2.ease || i2 || "power1.inOut";
          if (J(r2))
            a2 = e2[t2] || (e2[t2] = []), r2.forEach(function(t3, e3) {
              return a2.push({ t: e3 / (r2.length - 1) * 100, v: t3, e: s3 });
            });
          else
            for (n3 in r2)
              a2 = e2[n3] || (e2[n3] = []), "ease" === n3 || a2.push({ t: parseFloat(t2), v: r2[n3], e: s3 });
        }
        var Yt, qt, Vt = function _addPropTween(t2, e2, r2, i2, n3, a2, s3, u2, h3) {
          p(i2) && (i2 = i2(n3 || 0, t2, a2));
          var l2, f2 = t2[e2], d2 = "get" !== r2 ? r2 : p(f2) ? h3 ? t2[e2.indexOf("set") || !p(t2["get" + e2.substr(3)]) ? e2 : "get" + e2.substr(3)](h3) : t2[e2]() : f2, _3 = p(f2) ? h3 ? Zt : Wt : Gt;
          if (o(i2) && (~i2.indexOf("random(") && (i2 = hb(i2)), "=" === i2.charAt(1) && (!(l2 = ea(d2, i2) + (Ra(d2) || 0)) && 0 !== l2 || (i2 = l2))), d2 !== i2 || qt)
            return isNaN(d2 * i2) || "" === i2 ? (f2 || e2 in t2 || N(e2, i2), function _addComplexStringPropTween(t3, e3, r3, i3, n4, a3, s4) {
              var o2, u3, h4, l3, f3, d3, _4, p2, c2 = new oe(this._pt, t3, e3, 0, 1, ee, null, n4), m2 = 0, g2 = 0;
              for (c2.b = r3, c2.e = i3, r3 += "", (_4 = ~(i3 += "").indexOf("random(")) && (i3 = hb(i3)), a3 && (a3(p2 = [r3, i3], t3, e3), r3 = p2[0], i3 = p2[1]), u3 = r3.match(it) || []; o2 = it.exec(i3); )
                l3 = o2[0], f3 = i3.substring(m2, o2.index), h4 ? h4 = (h4 + 1) % 5 : "rgba(" === f3.substr(-5) && (h4 = 1), l3 !== u3[g2++] && (d3 = parseFloat(u3[g2 - 1]) || 0, c2._pt = { _next: c2._pt, p: f3 || 1 === g2 ? f3 : ",", s: d3, c: "=" === l3.charAt(1) ? ea(d3, l3) - d3 : parseFloat(l3) - d3, m: h4 && h4 < 4 ? Math.round : 0 }, m2 = it.lastIndex);
              return c2.c = m2 < i3.length ? i3.substring(m2, i3.length) : "", c2.fp = s4, (nt.test(i3) || _4) && (c2.e = 0), this._pt = c2;
            }.call(this, t2, e2, d2, i2, _3, u2 || U.stringFilter, h3)) : (l2 = new oe(this._pt, t2, e2, +d2 || 0, i2 - (d2 || 0), "boolean" == typeof f2 ? te : Jt, 0, _3), h3 && (l2.fp = h3), s3 && l2.modifier(s3, this, t2), this._pt = l2);
        }, Xt = function _initTween(e2, r2) {
          var i2, n3, a2, s3, o2, u2, h3, l2, f2, d2, p2, c2, m2, g2 = e2.vars, v2 = g2.ease, y2 = g2.startAt, T2 = g2.immediateRender, b2 = g2.lazy, w3 = g2.onUpdate, x2 = g2.onUpdateParams, k2 = g2.callbackScope, O2 = g2.runBackwards, P2 = g2.yoyoEase, M2 = g2.keyframes, C2 = g2.autoRevert, A2 = e2._dur, D2 = e2._startAt, S2 = e2._targets, z2 = e2.parent, R2 = z2 && "nested" === z2.data ? z2.parent._targets : S2, E2 = "auto" === e2._overwrite && !B, F2 = e2.timeline;
          if (!F2 || M2 && v2 || (v2 = "none"), e2._ease = Bt(v2, L.ease), e2._yEase = P2 ? Ft(Bt(true === P2 ? v2 : P2, L.ease)) : 0, P2 && e2._yoyo && !e2._repeat && (P2 = e2._yEase, e2._yEase = e2._ease, e2._ease = P2), e2._from = !F2 && !!g2.runBackwards, !F2 || M2 && !g2.stagger) {
            if (c2 = (l2 = S2[0] ? _2(S2[0]).harness : 0) && g2[l2.prop], i2 = oa(g2, ut), D2 && (ta(D2.render(-1, true)), D2._lazy = 0), y2)
              if (ta(e2._startAt = $t.set(S2, ka({ data: "isStart", overwrite: false, parent: z2, immediateRender: true, lazy: t(b2), startAt: null, delay: 0, onUpdate: w3, onUpdateParams: x2, callbackScope: k2, stagger: 0 }, y2))), r2 < 0 && !T2 && !C2 && e2._startAt.render(-1, true), T2) {
                if (0 < r2 && !C2 && (e2._startAt = 0), A2 && r2 <= 0)
                  return void (r2 && (e2._zTime = r2));
              } else
                false === C2 && (e2._startAt = 0);
            else if (O2 && A2)
              if (D2)
                C2 || (e2._startAt = 0);
              else if (r2 && (T2 = false), a2 = ka({ overwrite: false, data: "isFromStart", lazy: T2 && t(b2), immediateRender: T2, stagger: 0, parent: z2 }, i2), c2 && (a2[l2.prop] = c2), ta(e2._startAt = $t.set(S2, a2)), r2 < 0 && e2._startAt.render(-1, true), e2._zTime = r2, T2) {
                if (!r2)
                  return;
              } else
                _initTween(e2._startAt, V);
            for (e2._pt = e2._ptCache = 0, b2 = A2 && t(b2) || b2 && !A2, n3 = 0; n3 < S2.length; n3++) {
              if (h3 = (o2 = S2[n3])._gsap || $2(S2)[n3]._gsap, e2._ptLookup[n3] = d2 = {}, lt[h3.id] && ht.length && ga(), p2 = R2 === S2 ? n3 : R2.indexOf(o2), l2 && false !== (f2 = new l2()).init(o2, c2 || i2, e2, p2, R2) && (e2._pt = s3 = new oe(e2._pt, o2, f2.name, 0, 1, f2.render, f2, 0, f2.priority), f2._props.forEach(function(t2) {
                d2[t2] = s3;
              }), f2.priority && (u2 = 1)), !l2 || c2)
                for (a2 in i2)
                  ft[a2] && (f2 = Ub(a2, i2, e2, p2, o2, R2)) ? f2.priority && (u2 = 1) : d2[a2] = s3 = Vt.call(e2, o2, a2, "get", i2[a2], p2, R2, 0, g2.stringFilter);
              e2._op && e2._op[n3] && e2.kill(o2, e2._op[n3]), E2 && e2._pt && (Yt = e2, I.killTweensOf(o2, d2, e2.globalTime(r2)), m2 = !e2.parent, Yt = 0), e2._pt && b2 && (lt[h3.id] = 1);
            }
            u2 && se(e2), e2._onInit && e2._onInit(e2);
          }
          e2._onUpdate = w3, e2._initted = (!e2._op || e2._pt) && !m2, M2 && r2 <= 0 && F2.render(Y, true, true);
        }, Qt = function _parseFuncOrString(t2, e2, r2, i2, n3) {
          return p(t2) ? t2.call(e2, r2, i2, n3) : o(t2) && ~t2.indexOf("random(") ? hb(t2) : t2;
        }, jt = ct + "repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert", Kt = {};
        ba(jt + ",id,stagger,delay,duration,paused,scrollTrigger", function(t2) {
          return Kt[t2] = 1;
        });
        var $t = function(R2) {
          function Tween(e3, r2, i2, n3) {
            var a2;
            "number" == typeof r2 && (i2.duration = r2, r2 = i2, i2 = null);
            var o2, u2, h3, l2, f2, d2, _3, p2, c2 = (a2 = R2.call(this, n3 ? r2 : pa(r2)) || this).vars, m2 = c2.duration, g2 = c2.delay, y2 = c2.immediateRender, T2 = c2.stagger, b2 = c2.overwrite, w3 = c2.keyframes, x2 = c2.defaults, k2 = c2.scrollTrigger, P2 = c2.yoyoEase, M2 = r2.parent || I, C2 = (J(e3) || H(e3) ? q(e3[0]) : "length" in r2) ? [e3] : xt(e3);
            if (a2._targets = C2.length ? $2(C2) : O("GSAP target " + e3 + " not found. https://greensock.com", !U.nullTargetWarn) || [], a2._ptLookup = [], a2._overwrite = b2, w3 || T2 || v(m2) || v(g2)) {
              if (r2 = a2.vars, (o2 = a2.timeline = new Ut({ data: "nested", defaults: x2 || {} })).kill(), o2.parent = o2._dp = _assertThisInitialized(a2), o2._start = 0, T2 || v(m2) || v(g2)) {
                if (l2 = C2.length, _3 = T2 && Za(T2), s2(T2))
                  for (f2 in T2)
                    ~jt.indexOf(f2) && ((p2 = p2 || {})[f2] = T2[f2]);
                for (u2 = 0; u2 < l2; u2++)
                  (h3 = oa(r2, Kt)).stagger = 0, P2 && (h3.yoyoEase = P2), p2 && mt(h3, p2), d2 = C2[u2], h3.duration = +Qt(m2, _assertThisInitialized(a2), u2, d2, C2), h3.delay = (+Qt(g2, _assertThisInitialized(a2), u2, d2, C2) || 0) - a2._delay, !T2 && 1 === l2 && h3.delay && (a2._delay = g2 = h3.delay, a2._start += g2, h3.delay = 0), o2.to(d2, h3, _3 ? _3(u2, d2, C2) : 0), o2._ease = zt.none;
                o2.duration() ? m2 = g2 = 0 : a2.timeline = 0;
              } else if (w3) {
                pa(ka(o2.vars.defaults, { ease: "none" })), o2._ease = Bt(w3.ease || r2.ease || "none");
                var A2, D2, S2, z2 = 0;
                if (J(w3))
                  w3.forEach(function(t2) {
                    return o2.to(C2, t2, ">");
                  });
                else {
                  for (f2 in h3 = {}, w3)
                    "ease" === f2 || "easeEach" === f2 || $b(f2, w3[f2], h3, w3.easeEach);
                  for (f2 in h3)
                    for (A2 = h3[f2].sort(function(t2, e4) {
                      return t2.t - e4.t;
                    }), u2 = z2 = 0; u2 < A2.length; u2++)
                      (S2 = { ease: (D2 = A2[u2]).e, duration: (D2.t - (u2 ? A2[u2 - 1].t : 0)) / 100 * m2 })[f2] = D2.v, o2.to(C2, S2, z2), z2 += S2.duration;
                  o2.duration() < m2 && o2.to({}, { duration: m2 - o2.duration() });
                }
              }
              m2 || a2.duration(m2 = o2.duration());
            } else
              a2.timeline = 0;
            return true !== b2 || B || (Yt = _assertThisInitialized(a2), I.killTweensOf(C2), Yt = 0), Da(M2, _assertThisInitialized(a2), i2), r2.reversed && a2.reverse(), r2.paused && a2.paused(true), (y2 || !m2 && !w3 && a2._start === da(M2._time) && t(y2) && function _hasNoPausedAncestors(t2) {
              return !t2 || t2._ts && _hasNoPausedAncestors(t2.parent);
            }(_assertThisInitialized(a2)) && "nested" !== M2.data) && (a2._tTime = -V, a2.render(Math.max(0, -g2))), k2 && Ea(_assertThisInitialized(a2), k2), a2;
          }
          _inheritsLoose(Tween, R2);
          var e2 = Tween.prototype;
          return e2.render = function render(t2, e3, r2) {
            var i2, n3, a2, s3, o2, u2, h3, l2, f2, d2 = this._time, _3 = this._tDur, p2 = this._dur, c2 = _3 - V < t2 && 0 <= t2 ? _3 : t2 < V ? 0 : t2;
            if (p2) {
              if (c2 !== this._tTime || !t2 || r2 || !this._initted && this._tTime || this._startAt && this._zTime < 0 != t2 < 0) {
                if (i2 = c2, l2 = this.timeline, this._repeat) {
                  if (s3 = p2 + this._rDelay, this._repeat < -1 && t2 < 0)
                    return this.totalTime(100 * s3 + t2, e3, r2);
                  if (i2 = da(c2 % s3), c2 === _3 ? (a2 = this._repeat, i2 = p2) : ((a2 = ~~(c2 / s3)) && a2 === c2 / s3 && (i2 = p2, a2--), p2 < i2 && (i2 = p2)), (u2 = this._yoyo && 1 & a2) && (f2 = this._yEase, i2 = p2 - i2), o2 = gt(this._tTime, s3), i2 === d2 && !r2 && this._initted)
                    return this._tTime = c2, this;
                  a2 !== o2 && (l2 && this._yEase && Ib(l2, u2), !this.vars.repeatRefresh || u2 || this._lock || (this._lock = r2 = 1, this.render(da(s3 * a2), true).invalidate()._lock = 0));
                }
                if (!this._initted) {
                  if (Fa(this, t2 < 0 ? t2 : i2, r2, e3))
                    return this._tTime = 0, this;
                  if (d2 !== this._time)
                    return this;
                  if (p2 !== this._dur)
                    return this.render(t2, e3, r2);
                }
                if (this._tTime = c2, this._time = i2, !this._act && this._ts && (this._act = 1, this._lazy = 0), this.ratio = h3 = (f2 || this._ease)(i2 / p2), this._from && (this.ratio = h3 = 1 - h3), i2 && !d2 && !e3 && (Ot(this, "onStart"), this._tTime !== c2))
                  return this;
                for (n3 = this._pt; n3; )
                  n3.r(h3, n3.d), n3 = n3._next;
                l2 && l2.render(t2 < 0 ? t2 : !i2 && u2 ? -V : l2._dur * l2._ease(i2 / this._dur), e3, r2) || this._startAt && (this._zTime = t2), this._onUpdate && !e3 && (t2 < 0 && this._startAt && this._startAt.render(t2, true, r2), Ot(this, "onUpdate")), this._repeat && a2 !== o2 && this.vars.onRepeat && !e3 && this.parent && Ot(this, "onRepeat"), c2 !== this._tDur && c2 || this._tTime !== c2 || (t2 < 0 && this._startAt && !this._onUpdate && this._startAt.render(t2, true, true), !t2 && p2 || !(c2 === this._tDur && 0 < this._ts || !c2 && this._ts < 0) || ta(this, 1), e3 || t2 < 0 && !d2 || !c2 && !d2 || (Ot(this, c2 === _3 ? "onComplete" : "onReverseComplete", true), !this._prom || c2 < _3 && 0 < this.timeScale() || this._prom()));
              }
            } else
              !function _renderZeroDurationTween(t3, e4, r3, i3) {
                var n4, a3, s4, o3 = t3.ratio, u3 = e4 < 0 || !e4 && (!t3._start && function _parentPlayheadIsBeforeStart(t4) {
                  var e5 = t4.parent;
                  return e5 && e5._ts && e5._initted && !e5._lock && (e5.rawTime() < 0 || _parentPlayheadIsBeforeStart(e5));
                }(t3) && (t3._initted || !vt(t3)) || (t3._ts < 0 || t3._dp._ts < 0) && !vt(t3)) ? 0 : 1, h4 = t3._rDelay, l3 = 0;
                if (h4 && t3._repeat && (l3 = bt(0, t3._tDur, e4), a3 = gt(l3, h4), t3._yoyo && 1 & a3 && (u3 = 1 - u3), a3 !== gt(t3._tTime, h4) && (o3 = 1 - u3, t3.vars.repeatRefresh && t3._initted && t3.invalidate())), u3 !== o3 || i3 || t3._zTime === V || !e4 && t3._zTime) {
                  if (!t3._initted && Fa(t3, e4, i3, r3))
                    return;
                  for (s4 = t3._zTime, t3._zTime = e4 || (r3 ? V : 0), r3 = r3 || e4 && !s4, t3.ratio = u3, t3._from && (u3 = 1 - u3), t3._time = 0, t3._tTime = l3, n4 = t3._pt; n4; )
                    n4.r(u3, n4.d), n4 = n4._next;
                  t3._startAt && e4 < 0 && t3._startAt.render(e4, true, true), t3._onUpdate && !r3 && Ot(t3, "onUpdate"), l3 && t3._repeat && !r3 && t3.parent && Ot(t3, "onRepeat"), (e4 >= t3._tDur || e4 < 0) && t3.ratio === u3 && (u3 && ta(t3, 1), r3 || (Ot(t3, u3 ? "onComplete" : "onReverseComplete", true), t3._prom && t3._prom()));
                } else
                  t3._zTime || (t3._zTime = e4);
              }(this, t2, e3, r2);
            return this;
          }, e2.targets = function targets() {
            return this._targets;
          }, e2.invalidate = function invalidate() {
            return this._pt = this._op = this._startAt = this._onUpdate = this._lazy = this.ratio = 0, this._ptLookup = [], this.timeline && this.timeline.invalidate(), R2.prototype.invalidate.call(this);
          }, e2.resetTo = function resetTo(t2, e3, r2, i2) {
            c || Dt.wake(), this._ts || this.play();
            var n3, a2 = Math.min(this._dur, (this._dp._time - this._start) * this._ts);
            return this._initted || Xt(this, a2), n3 = this._ease(a2 / this._dur), function _updatePropTweens(t3, e4, r3, i3, n4, a3, s3) {
              var o2, u2, h3, l2 = (t3._pt && t3._ptCache || (t3._ptCache = {}))[e4];
              if (!l2)
                for (l2 = t3._ptCache[e4] = [], u2 = t3._ptLookup, h3 = t3._targets.length; h3--; ) {
                  if ((o2 = u2[h3][e4]) && o2.d && o2.d._pt)
                    for (o2 = o2.d._pt; o2 && o2.p !== e4; )
                      o2 = o2._next;
                  if (!o2)
                    return qt = 1, t3.vars[e4] = "+=0", Xt(t3, s3), qt = 0, 1;
                  l2.push(o2);
                }
              for (h3 = l2.length; h3--; )
                (o2 = l2[h3]).s = !i3 && 0 !== i3 || n4 ? o2.s + (i3 || 0) + a3 * o2.c : i3, o2.c = r3 - o2.s, o2.e && (o2.e = ca(r3) + Ra(o2.e)), o2.b && (o2.b = o2.s + Ra(o2.b));
            }(this, t2, e3, r2, i2, n3, a2) ? this.resetTo(t2, e3, r2, i2) : (Ba(this, 0), this.parent || ra(this._dp, this, "_first", "_last", this._dp._sort ? "_start" : 0), this.render(0));
          }, e2.kill = function kill(t2, e3) {
            if (void 0 === e3 && (e3 = "all"), !(t2 || e3 && "all" !== e3))
              return this._lazy = this._pt = 0, this.parent ? mb(this) : this;
            if (this.timeline) {
              var r2 = this.timeline.totalDuration();
              return this.timeline.killTweensOf(t2, e3, Yt && true !== Yt.vars.overwrite)._first || mb(this), this.parent && r2 !== this.timeline.totalDuration() && Ka(this, this._dur * this.timeline._tDur / r2, 0, 1), this;
            }
            var i2, n3, a2, s3, u2, h3, l2, f2 = this._targets, d2 = t2 ? xt(t2) : f2, p2 = this._ptLookup, c2 = this._pt;
            if ((!e3 || "all" === e3) && function _arraysMatch(t3, e4) {
              for (var r3 = t3.length, i3 = r3 === e4.length; i3 && r3-- && t3[r3] === e4[r3]; )
                ;
              return r3 < 0;
            }(f2, d2))
              return "all" === e3 && (this._pt = 0), mb(this);
            for (i2 = this._op = this._op || [], "all" !== e3 && (o(e3) && (u2 = {}, ba(e3, function(t3) {
              return u2[t3] = 1;
            }), e3 = u2), e3 = function _addAliasesToVars(t3, e4) {
              var r3, i3, n4, a3, s4 = t3[0] ? _2(t3[0]).harness : 0, o2 = s4 && s4.aliases;
              if (!o2)
                return e4;
              for (i3 in r3 = mt({}, e4), o2)
                if (i3 in r3)
                  for (n4 = (a3 = o2[i3].split(",")).length; n4--; )
                    r3[a3[n4]] = r3[i3];
              return r3;
            }(f2, e3)), l2 = f2.length; l2--; )
              if (~d2.indexOf(f2[l2]))
                for (u2 in n3 = p2[l2], "all" === e3 ? (i2[l2] = e3, s3 = n3, a2 = {}) : (a2 = i2[l2] = i2[l2] || {}, s3 = e3), s3)
                  (h3 = n3 && n3[u2]) && ("kill" in h3.d && true !== h3.d.kill(u2) || sa(this, h3, "_pt"), delete n3[u2]), "all" !== a2 && (a2[u2] = 1);
            return this._initted && !this._pt && c2 && mb(this), this;
          }, Tween.to = function to(t2, e3, r2) {
            return new Tween(t2, e3, r2);
          }, Tween.from = function from(t2, e3) {
            return Oa(1, arguments);
          }, Tween.delayedCall = function delayedCall(t2, e3, r2, i2) {
            return new Tween(e3, 0, { immediateRender: false, lazy: false, overwrite: false, delay: t2, onComplete: e3, onReverseComplete: e3, onCompleteParams: r2, onReverseCompleteParams: r2, callbackScope: i2 });
          }, Tween.fromTo = function fromTo(t2, e3, r2) {
            return Oa(2, arguments);
          }, Tween.set = function set(t2, e3) {
            return e3.duration = 0, e3.repeatDelay || (e3.repeat = 0), new Tween(t2, e3);
          }, Tween.killTweensOf = function killTweensOf(t2, e3, r2) {
            return I.killTweensOf(t2, e3, r2);
          }, Tween;
        }(Nt);
        ka($t.prototype, { _targets: [], _lazy: 0, _startAt: 0, _op: 0, _onInit: 0 }), ba("staggerTo,staggerFrom,staggerFromTo", function(r2) {
          $t[r2] = function() {
            var t2 = new Ut(), e2 = wt.call(arguments, 0);
            return e2.splice("staggerFromTo" === r2 ? 5 : 4, 0, 0), t2[r2].apply(t2, e2);
          };
        });
        function gc(t2, e2, r2) {
          return t2.setAttribute(e2, r2);
        }
        function oc(t2, e2, r2, i2) {
          i2.mSet(t2, e2, i2.m.call(i2.tween, r2, i2.mt), i2);
        }
        var Gt = function _setterPlain(t2, e2, r2) {
          return t2[e2] = r2;
        }, Wt = function _setterFunc(t2, e2, r2) {
          return t2[e2](r2);
        }, Zt = function _setterFuncWithParam(t2, e2, r2, i2) {
          return t2[e2](i2.fp, r2);
        }, Ht = function _getSetter(t2, e2) {
          return p(t2[e2]) ? Wt : r(t2[e2]) && t2.setAttribute ? gc : Gt;
        }, Jt = function _renderPlain(t2, e2) {
          return e2.set(e2.t, e2.p, Math.round(1e6 * (e2.s + e2.c * t2)) / 1e6, e2);
        }, te = function _renderBoolean(t2, e2) {
          return e2.set(e2.t, e2.p, !!(e2.s + e2.c * t2), e2);
        }, ee = function _renderComplexString(t2, e2) {
          var r2 = e2._pt, i2 = "";
          if (!t2 && e2.b)
            i2 = e2.b;
          else if (1 === t2 && e2.e)
            i2 = e2.e;
          else {
            for (; r2; )
              i2 = r2.p + (r2.m ? r2.m(r2.s + r2.c * t2) : Math.round(1e4 * (r2.s + r2.c * t2)) / 1e4) + i2, r2 = r2._next;
            i2 += e2.c;
          }
          e2.set(e2.t, e2.p, i2, e2);
        }, re = function _renderPropTweens(t2, e2) {
          for (var r2 = e2._pt; r2; )
            r2.r(t2, r2.d), r2 = r2._next;
        }, ie = function _addPluginModifier(t2, e2, r2, i2) {
          for (var n3, a2 = this._pt; a2; )
            n3 = a2._next, a2.p === i2 && a2.modifier(t2, e2, r2), a2 = n3;
        }, ne = function _killPropTweensOf(t2) {
          for (var e2, r2, i2 = this._pt; i2; )
            r2 = i2._next, i2.p === t2 && !i2.op || i2.op === t2 ? sa(this, i2, "_pt") : i2.dep || (e2 = 1), i2 = r2;
          return !e2;
        }, se = function _sortPropTweensByPriority(t2) {
          for (var e2, r2, i2, n3, a2 = t2._pt; a2; ) {
            for (e2 = a2._next, r2 = i2; r2 && r2.pr > a2.pr; )
              r2 = r2._next;
            (a2._prev = r2 ? r2._prev : n3) ? a2._prev._next = a2 : i2 = a2, (a2._next = r2) ? r2._prev = a2 : n3 = a2, a2 = e2;
          }
          t2._pt = i2;
        }, oe = (PropTween.prototype.modifier = function modifier(t2, e2, r2) {
          this.mSet = this.mSet || this.set, this.set = oc, this.m = t2, this.mt = r2, this.tween = e2;
        }, PropTween);
        function PropTween(t2, e2, r2, i2, n3, a2, s3, o2, u2) {
          this.t = e2, this.s = i2, this.c = n3, this.p = r2, this.r = a2 || Jt, this.d = s3 || this, this.set = o2 || Gt, this.pr = u2 || 0, (this._next = t2) && (t2._prev = this);
        }
        ba(ct + "parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger", function(t2) {
          return ut[t2] = 1;
        }), ot.TweenMax = ot.TweenLite = $t, ot.TimelineLite = ot.TimelineMax = Ut, I = new Ut({ sortChildren: false, defaults: L, autoRemoveChildren: true, id: "root", smoothChildTiming: true }), U.stringFilter = xb;
        var ue = { registerPlugin: function registerPlugin() {
          for (var t2 = arguments.length, e2 = new Array(t2), r2 = 0; r2 < t2; r2++)
            e2[r2] = arguments[r2];
          e2.forEach(function(t3) {
            return function _createPlugin(t4) {
              var e3 = (t4 = !t4.name && t4.default || t4).name, r3 = p(t4), i2 = e3 && !r3 && t4.init ? function() {
                this._props = [];
              } : t4, n3 = { init: Q, render: re, add: Vt, kill: ne, modifier: ie, rawVars: 0 }, a2 = { targetTest: 0, get: 0, getSetter: Ht, aliases: {}, register: 0 };
              if (St(), t4 !== i2) {
                if (ft[e3])
                  return;
                ka(i2, ka(oa(t4, n3), a2)), mt(i2.prototype, mt(n3, oa(t4, a2))), ft[i2.prop = e3] = i2, t4.targetTest && (pt.push(i2), ut[e3] = 1), e3 = ("css" === e3 ? "CSS" : e3.charAt(0).toUpperCase() + e3.substr(1)) + "Plugin";
              }
              P(e3, i2), t4.register && t4.register(he, i2, oe);
            }(t3);
          });
        }, timeline: function timeline(t2) {
          return new Ut(t2);
        }, getTweensOf: function getTweensOf(t2, e2) {
          return I.getTweensOf(t2, e2);
        }, getProperty: function getProperty(i2, t2, e2, r2) {
          o(i2) && (i2 = xt(i2)[0]);
          var n3 = _2(i2 || {}).get, a2 = e2 ? ja : ia;
          return "native" === e2 && (e2 = ""), i2 ? t2 ? a2((ft[t2] && ft[t2].get || n3)(i2, t2, e2, r2)) : function(t3, e3, r3) {
            return a2((ft[t3] && ft[t3].get || n3)(i2, t3, e3, r3));
          } : i2;
        }, quickSetter: function quickSetter(r2, e2, i2) {
          if (1 < (r2 = xt(r2)).length) {
            var n3 = r2.map(function(t2) {
              return he.quickSetter(t2, e2, i2);
            }), a2 = n3.length;
            return function(t2) {
              for (var e3 = a2; e3--; )
                n3[e3](t2);
            };
          }
          r2 = r2[0] || {};
          var s3 = ft[e2], o2 = _2(r2), u2 = o2.harness && (o2.harness.aliases || {})[e2] || e2, h3 = s3 ? function(t2) {
            var e3 = new s3();
            d._pt = 0, e3.init(r2, i2 ? t2 + i2 : t2, d, 0, [r2]), e3.render(1, e3), d._pt && re(1, d);
          } : o2.set(r2, u2);
          return s3 ? h3 : function(t2) {
            return h3(r2, u2, i2 ? t2 + i2 : t2, o2, 1);
          };
        }, quickTo: function quickTo(t2, i2, e2) {
          function iw(t3, e3, r3) {
            return n3.resetTo(i2, t3, e3, r3);
          }
          var r2, n3 = he.to(t2, mt(((r2 = {})[i2] = "+=0.1", r2.paused = true, r2), e2 || {}));
          return iw.tween = n3, iw;
        }, isTweening: function isTweening(t2) {
          return 0 < I.getTweensOf(t2, true).length;
        }, defaults: function defaults(t2) {
          return t2 && t2.ease && (t2.ease = Bt(t2.ease, L.ease)), na(L, t2 || {});
        }, config: function config(t2) {
          return na(U, t2 || {});
        }, registerEffect: function registerEffect(t2) {
          var i2 = t2.name, n3 = t2.effect, e2 = t2.plugins, a2 = t2.defaults, r2 = t2.extendTimeline;
          (e2 || "").split(",").forEach(function(t3) {
            return t3 && !ft[t3] && !ot[t3] && O(i2 + " effect requires " + t3 + " plugin.");
          }), dt[i2] = function(t3, e3, r3) {
            return n3(xt(t3), ka(e3 || {}, a2), r3);
          }, r2 && (Ut.prototype[i2] = function(t3, e3, r3) {
            return this.add(dt[i2](t3, s2(e3) ? e3 : (r3 = e3) && {}, this), r3);
          });
        }, registerEase: function registerEase(t2, e2) {
          zt[t2] = Bt(e2);
        }, parseEase: function parseEase(t2, e2) {
          return arguments.length ? Bt(t2, e2) : zt;
        }, getById: function getById(t2) {
          return I.getById(t2);
        }, exportRoot: function exportRoot(e2, r2) {
          void 0 === e2 && (e2 = {});
          var i2, n3, a2 = new Ut(e2);
          for (a2.smoothChildTiming = t(e2.smoothChildTiming), I.remove(a2), a2._dp = 0, a2._time = a2._tTime = I._time, i2 = I._first; i2; )
            n3 = i2._next, !r2 && !i2._dur && i2 instanceof $t && i2.vars.onComplete === i2._targets[0] || Da(a2, i2, i2._start - i2._delay), i2 = n3;
          return Da(I, a2, 0), a2;
        }, utils: { wrap: function wrap(e2, t2, r2) {
          var i2 = t2 - e2;
          return J(e2) ? eb(e2, wrap(0, e2.length), t2) : Pa(r2, function(t3) {
            return (i2 + (t3 - e2) % i2) % i2 + e2;
          });
        }, wrapYoyo: function wrapYoyo(e2, t2, r2) {
          var i2 = t2 - e2, n3 = 2 * i2;
          return J(e2) ? eb(e2, wrapYoyo(0, e2.length - 1), t2) : Pa(r2, function(t3) {
            return e2 + (i2 < (t3 = (n3 + (t3 - e2) % n3) % n3 || 0) ? n3 - t3 : t3);
          });
        }, distribute: Za, random: ab, snap: _a, normalize: function normalize(t2, e2, r2) {
          return kt(t2, e2, 0, 1, r2);
        }, getUnit: Ra, clamp: function clamp(e2, r2, t2) {
          return Pa(t2, function(t3) {
            return bt(e2, r2, t3);
          });
        }, splitColor: sb, toArray: xt, selector: function selector(r2) {
          return r2 = xt(r2)[0] || O("Invalid scope") || {}, function(t2) {
            var e2 = r2.current || r2.nativeElement || r2;
            return xt(t2, e2.querySelectorAll ? e2 : e2 === r2 ? O("Invalid scope") || a.createElement("div") : r2);
          };
        }, mapRange: kt, pipe: function pipe() {
          for (var t2 = arguments.length, e2 = new Array(t2), r2 = 0; r2 < t2; r2++)
            e2[r2] = arguments[r2];
          return function(t3) {
            return e2.reduce(function(t4, e3) {
              return e3(t4);
            }, t3);
          };
        }, unitize: function unitize(e2, r2) {
          return function(t2) {
            return e2(parseFloat(t2)) + (r2 || Ra(t2));
          };
        }, interpolate: function interpolate(e2, r2, t2, i2) {
          var n3 = isNaN(e2 + r2) ? 0 : function(t3) {
            return (1 - t3) * e2 + t3 * r2;
          };
          if (!n3) {
            var a2, s3, u2, h3, l2, f2 = o(e2), d2 = {};
            if (true === t2 && (i2 = 1) && (t2 = null), f2)
              e2 = { p: e2 }, r2 = { p: r2 };
            else if (J(e2) && !J(r2)) {
              for (u2 = [], h3 = e2.length, l2 = h3 - 2, s3 = 1; s3 < h3; s3++)
                u2.push(interpolate(e2[s3 - 1], e2[s3]));
              h3--, n3 = function func(t3) {
                t3 *= h3;
                var e3 = Math.min(l2, ~~t3);
                return u2[e3](t3 - e3);
              }, t2 = r2;
            } else
              i2 || (e2 = mt(J(e2) ? [] : {}, e2));
            if (!u2) {
              for (a2 in r2)
                Vt.call(d2, e2, a2, "get", r2[a2]);
              n3 = function func(t3) {
                return re(t3, d2) || (f2 ? e2.p : e2);
              };
            }
          }
          return Pa(t2, n3);
        }, shuffle: Ya }, install: M, effects: dt, ticker: Dt, updateRoot: Ut.updateRoot, plugins: ft, globalTimeline: I, core: { PropTween: oe, globals: P, Tween: $t, Timeline: Ut, Animation: Nt, getCache: _2, _removeLinkedListItem: sa, suppressOverwrites: function suppressOverwrites(t2) {
          return B = t2;
        } } };
        ba("to,from,fromTo,delayedCall,set,killTweensOf", function(t2) {
          return ue[t2] = $t[t2];
        }), Dt.add(Ut.updateRoot), d = ue.to({}, { duration: 0 });
        function sc(t2, e2) {
          for (var r2 = t2._pt; r2 && r2.p !== e2 && r2.op !== e2 && r2.fp !== e2; )
            r2 = r2._next;
          return r2;
        }
        function uc(t2, n3) {
          return { name: t2, rawVars: 1, init: function init(t3, i2, e2) {
            e2._onInit = function(t4) {
              var e3, r2;
              if (o(i2) && (e3 = {}, ba(i2, function(t5) {
                return e3[t5] = 1;
              }), i2 = e3), n3) {
                for (r2 in e3 = {}, i2)
                  e3[r2] = n3(i2[r2]);
                i2 = e3;
              }
              !function _addModifiers(t5, e4) {
                var r3, i3, n4, a2 = t5._targets;
                for (r3 in e4)
                  for (i3 = a2.length; i3--; )
                    (n4 = (n4 = t5._ptLookup[i3][r3]) && n4.d) && (n4._pt && (n4 = sc(n4, r3)), n4 && n4.modifier && n4.modifier(e4[r3], t5, a2[i3], r3));
              }(t4, i2);
            };
          } };
        }
        var he = ue.registerPlugin({ name: "attr", init: function init(t2, e2, r2, i2, n3) {
          var a2, s3;
          for (a2 in e2)
            (s3 = this.add(t2, "setAttribute", (t2.getAttribute(a2) || 0) + "", e2[a2], i2, n3, 0, 0, a2)) && (s3.op = a2), this._props.push(a2);
        } }, { name: "endArray", init: function init(t2, e2) {
          for (var r2 = e2.length; r2--; )
            this.add(t2, r2, t2[r2] || 0, e2[r2]);
        } }, uc("roundProps", $a), uc("modifiers"), uc("snap", _a)) || ue;
        $t.version = Ut.version = he.version = "3.10.4", l = 1, u() && St();
        function dd(t2, e2) {
          return e2.set(e2.t, e2.p, Math.round(1e4 * (e2.s + e2.c * t2)) / 1e4 + e2.u, e2);
        }
        function ed(t2, e2) {
          return e2.set(e2.t, e2.p, 1 === t2 ? e2.e : Math.round(1e4 * (e2.s + e2.c * t2)) / 1e4 + e2.u, e2);
        }
        function fd(t2, e2) {
          return e2.set(e2.t, e2.p, t2 ? Math.round(1e4 * (e2.s + e2.c * t2)) / 1e4 + e2.u : e2.b, e2);
        }
        function gd(t2, e2) {
          var r2 = e2.s + e2.c * t2;
          e2.set(e2.t, e2.p, ~~(r2 + (r2 < 0 ? -0.5 : 0.5)) + e2.u, e2);
        }
        function hd(t2, e2) {
          return e2.set(e2.t, e2.p, t2 ? e2.e : e2.b, e2);
        }
        function id(t2, e2) {
          return e2.set(e2.t, e2.p, 1 !== t2 ? e2.b : e2.e, e2);
        }
        function jd(t2, e2, r2) {
          return t2.style[e2] = r2;
        }
        function kd(t2, e2, r2) {
          return t2.style.setProperty(e2, r2);
        }
        function ld(t2, e2, r2) {
          return t2._gsap[e2] = r2;
        }
        function md(t2, e2, r2) {
          return t2._gsap.scaleX = t2._gsap.scaleY = r2;
        }
        function nd(t2, e2, r2, i2, n3) {
          var a2 = t2._gsap;
          a2.scaleX = a2.scaleY = r2, a2.renderTransform(n3, a2);
        }
        function od(t2, e2, r2, i2, n3) {
          var a2 = t2._gsap;
          a2[e2] = r2, a2.renderTransform(n3, a2);
        }
        function sd(t2, e2) {
          var r2 = fe.createElementNS ? fe.createElementNS((e2 || "http://www.w3.org/1999/xhtml").replace(/^https/, "http"), t2) : fe.createElement(t2);
          return r2.style ? r2 : fe.createElement(t2);
        }
        function td(t2, e2, r2) {
          var i2 = getComputedStyle(t2);
          return i2[e2] || i2.getPropertyValue(e2.replace(Ne, "-$1").toLowerCase()) || i2.getPropertyValue(e2) || !r2 && td(t2, je(e2) || e2, 1) || "";
        }
        function wd() {
          (function _windowExists() {
            return "undefined" != typeof window;
          })() && window.document && (le = window, fe = le.document, de = fe.documentElement, pe = sd("div") || { style: {} }, sd("div"), Ve = je(Ve), Xe = Ve + "Origin", pe.style.cssText = "border-width:0;line-height:0;position:absolute;padding:0", me = !!je("perspective"), _e = 1);
        }
        function xd(t2) {
          var e2, r2 = sd("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"), i2 = this.parentNode, n3 = this.nextSibling, a2 = this.style.cssText;
          if (de.appendChild(r2), r2.appendChild(this), this.style.display = "block", t2)
            try {
              e2 = this.getBBox(), this._gsapBBox = this.getBBox, this.getBBox = xd;
            } catch (t3) {
            }
          else
            this._gsapBBox && (e2 = this._gsapBBox());
          return i2 && (n3 ? i2.insertBefore(this, n3) : i2.appendChild(this)), de.removeChild(r2), this.style.cssText = a2, e2;
        }
        function yd(t2, e2) {
          for (var r2 = e2.length; r2--; )
            if (t2.hasAttribute(e2[r2]))
              return t2.getAttribute(e2[r2]);
        }
        function zd(e2) {
          var r2;
          try {
            r2 = e2.getBBox();
          } catch (t2) {
            r2 = xd.call(e2, true);
          }
          return r2 && (r2.width || r2.height) || e2.getBBox === xd || (r2 = xd.call(e2, true)), !r2 || r2.width || r2.x || r2.y ? r2 : { x: +yd(e2, ["x", "cx", "x1"]) || 0, y: +yd(e2, ["y", "cy", "y1"]) || 0, width: 0, height: 0 };
        }
        function Ad(t2) {
          return !(!t2.getCTM || t2.parentNode && !t2.ownerSVGElement || !zd(t2));
        }
        function Bd(t2, e2) {
          if (e2) {
            var r2 = t2.style;
            e2 in Fe && e2 !== Xe && (e2 = Ve), r2.removeProperty ? ("ms" !== e2.substr(0, 2) && "webkit" !== e2.substr(0, 6) || (e2 = "-" + e2), r2.removeProperty(e2.replace(Ne, "-$1").toLowerCase())) : r2.removeAttribute(e2);
          }
        }
        function Cd(t2, e2, r2, i2, n3, a2) {
          var s3 = new oe(t2._pt, e2, r2, 0, 1, a2 ? id : hd);
          return (t2._pt = s3).b = i2, s3.e = n3, t2._props.push(r2), s3;
        }
        function Ed(t2, e2, r2, i2) {
          var n3, a2, s3, o2, u2 = parseFloat(r2) || 0, h3 = (r2 + "").trim().substr((u2 + "").length) || "px", l2 = pe.style, f2 = Ue.test(e2), d2 = "svg" === t2.tagName.toLowerCase(), p2 = (d2 ? "client" : "offset") + (f2 ? "Width" : "Height"), c2 = "px" === i2, m2 = "%" === i2;
          return i2 === h3 || !u2 || Ke[i2] || Ke[h3] ? u2 : ("px" === h3 || c2 || (u2 = Ed(t2, e2, r2, "px")), o2 = t2.getCTM && Ad(t2), !m2 && "%" !== h3 || !Fe[e2] && !~e2.indexOf("adius") ? (l2[f2 ? "width" : "height"] = 100 + (c2 ? h3 : i2), a2 = ~e2.indexOf("adius") || "em" === i2 && t2.appendChild && !d2 ? t2 : t2.parentNode, o2 && (a2 = (t2.ownerSVGElement || {}).parentNode), a2 && a2 !== fe && a2.appendChild || (a2 = fe.body), (s3 = a2._gsap) && m2 && s3.width && f2 && s3.time === Dt.time ? ca(u2 / s3.width * 100) : (!m2 && "%" !== h3 || (l2.position = td(t2, "position")), a2 === t2 && (l2.position = "static"), a2.appendChild(pe), n3 = pe[p2], a2.removeChild(pe), l2.position = "absolute", f2 && m2 && ((s3 = _2(a2)).time = Dt.time, s3.width = a2[p2]), ca(c2 ? n3 * u2 / 100 : n3 && u2 ? 100 / n3 * u2 : 0))) : (n3 = o2 ? t2.getBBox()[f2 ? "width" : "height"] : t2[p2], ca(m2 ? u2 / n3 * 100 : u2 / 100 * n3)));
        }
        function Fd(t2, e2, r2, i2) {
          var n3;
          return _e || wd(), e2 in qe && "transform" !== e2 && ~(e2 = qe[e2]).indexOf(",") && (e2 = e2.split(",")[0]), Fe[e2] && "transform" !== e2 ? (n3 = He(t2, i2), n3 = "transformOrigin" !== e2 ? n3[e2] : n3.svg ? n3.origin : Je(td(t2, Xe)) + " " + n3.zOrigin + "px") : (n3 = t2.style[e2]) && "auto" !== n3 && !i2 && !~(n3 + "").indexOf("calc(") || (n3 = Ge[e2] && Ge[e2](t2, e2, r2) || td(t2, e2) || aa(t2, e2) || ("opacity" === e2 ? 1 : 0)), r2 && !~(n3 + "").trim().indexOf(" ") ? Ed(t2, e2, n3, r2) + r2 : n3;
        }
        function Gd(t2, e2, r2, i2) {
          if (!r2 || "none" === r2) {
            var n3 = je(e2, t2, 1), a2 = n3 && td(t2, n3, 1);
            a2 && a2 !== r2 ? (e2 = n3, r2 = a2) : "borderColor" === e2 && (r2 = td(t2, "borderTopColor"));
          }
          var s3, o2, u2, h3, l2, f2, d2, _3, p2, c2, m2, g2 = new oe(this._pt, t2.style, e2, 0, 1, ee), v2 = 0, y2 = 0;
          if (g2.b = r2, g2.e = i2, r2 += "", "auto" === (i2 += "") && (t2.style[e2] = i2, i2 = td(t2, e2) || i2, t2.style[e2] = r2), xb(s3 = [r2, i2]), i2 = s3[1], u2 = (r2 = s3[0]).match(rt) || [], (i2.match(rt) || []).length) {
            for (; o2 = rt.exec(i2); )
              d2 = o2[0], p2 = i2.substring(v2, o2.index), l2 ? l2 = (l2 + 1) % 5 : "rgba(" !== p2.substr(-5) && "hsla(" !== p2.substr(-5) || (l2 = 1), d2 !== (f2 = u2[y2++] || "") && (h3 = parseFloat(f2) || 0, m2 = f2.substr((h3 + "").length), "=" === d2.charAt(1) && (d2 = ea(h3, d2) + m2), _3 = parseFloat(d2), c2 = d2.substr((_3 + "").length), v2 = rt.lastIndex - c2.length, c2 || (c2 = c2 || U.units[e2] || m2, v2 === i2.length && (i2 += c2, g2.e += c2)), m2 !== c2 && (h3 = Ed(t2, e2, f2, c2) || 0), g2._pt = { _next: g2._pt, p: p2 || 1 === y2 ? p2 : ",", s: h3, c: _3 - h3, m: l2 && l2 < 4 || "zIndex" === e2 ? Math.round : 0 });
            g2.c = v2 < i2.length ? i2.substring(v2, i2.length) : "";
          } else
            g2.r = "display" === e2 && "none" === i2 ? id : hd;
          return nt.test(i2) && (g2.e = 0), this._pt = g2;
        }
        function Id(t2) {
          var e2 = t2.split(" "), r2 = e2[0], i2 = e2[1] || "50%";
          return "top" !== r2 && "bottom" !== r2 && "left" !== i2 && "right" !== i2 || (t2 = r2, r2 = i2, i2 = t2), e2[0] = $e[r2] || r2, e2[1] = $e[i2] || i2, e2.join(" ");
        }
        function Jd(t2, e2) {
          if (e2.tween && e2.tween._time === e2.tween._dur) {
            var r2, i2, n3, a2 = e2.t, s3 = a2.style, o2 = e2.u, u2 = a2._gsap;
            if ("all" === o2 || true === o2)
              s3.cssText = "", i2 = 1;
            else
              for (n3 = (o2 = o2.split(",")).length; -1 < --n3; )
                r2 = o2[n3], Fe[r2] && (i2 = 1, r2 = "transformOrigin" === r2 ? Xe : Ve), Bd(a2, r2);
            i2 && (Bd(a2, Ve), u2 && (u2.svg && a2.removeAttribute("transform"), He(a2, 1), u2.uncache = 1));
          }
        }
        function Nd(t2) {
          return "matrix(1, 0, 0, 1, 0, 0)" === t2 || "none" === t2 || !t2;
        }
        function Od(t2) {
          var e2 = td(t2, Ve);
          return Nd(e2) ? We : e2.substr(7).match(et).map(ca);
        }
        function Pd(t2, e2) {
          var r2, i2, n3, a2, s3 = t2._gsap || _2(t2), o2 = t2.style, u2 = Od(t2);
          return s3.svg && t2.getAttribute("transform") ? "1,0,0,1,0,0" === (u2 = [(n3 = t2.transform.baseVal.consolidate().matrix).a, n3.b, n3.c, n3.d, n3.e, n3.f]).join(",") ? We : u2 : (u2 !== We || t2.offsetParent || t2 === de || s3.svg || (n3 = o2.display, o2.display = "block", (r2 = t2.parentNode) && t2.offsetParent || (a2 = 1, i2 = t2.nextSibling, de.appendChild(t2)), u2 = Od(t2), n3 ? o2.display = n3 : Bd(t2, "display"), a2 && (i2 ? r2.insertBefore(t2, i2) : r2 ? r2.appendChild(t2) : de.removeChild(t2))), e2 && 6 < u2.length ? [u2[0], u2[1], u2[4], u2[5], u2[12], u2[13]] : u2);
        }
        function Qd(t2, e2, r2, i2, n3, a2) {
          var s3, o2, u2, h3 = t2._gsap, l2 = n3 || Pd(t2, true), f2 = h3.xOrigin || 0, d2 = h3.yOrigin || 0, _3 = h3.xOffset || 0, p2 = h3.yOffset || 0, c2 = l2[0], m2 = l2[1], g2 = l2[2], v2 = l2[3], y2 = l2[4], T2 = l2[5], b2 = e2.split(" "), w3 = parseFloat(b2[0]) || 0, x2 = parseFloat(b2[1]) || 0;
          r2 ? l2 !== We && (o2 = c2 * v2 - m2 * g2) && (u2 = w3 * (-m2 / o2) + x2 * (c2 / o2) - (c2 * T2 - m2 * y2) / o2, w3 = w3 * (v2 / o2) + x2 * (-g2 / o2) + (g2 * T2 - v2 * y2) / o2, x2 = u2) : (w3 = (s3 = zd(t2)).x + (~b2[0].indexOf("%") ? w3 / 100 * s3.width : w3), x2 = s3.y + (~(b2[1] || b2[0]).indexOf("%") ? x2 / 100 * s3.height : x2)), i2 || false !== i2 && h3.smooth ? (y2 = w3 - f2, T2 = x2 - d2, h3.xOffset = _3 + (y2 * c2 + T2 * g2) - y2, h3.yOffset = p2 + (y2 * m2 + T2 * v2) - T2) : h3.xOffset = h3.yOffset = 0, h3.xOrigin = w3, h3.yOrigin = x2, h3.smooth = !!i2, h3.origin = e2, h3.originIsAbsolute = !!r2, t2.style[Xe] = "0px 0px", a2 && (Cd(a2, h3, "xOrigin", f2, w3), Cd(a2, h3, "yOrigin", d2, x2), Cd(a2, h3, "xOffset", _3, h3.xOffset), Cd(a2, h3, "yOffset", p2, h3.yOffset)), t2.setAttribute("data-svg-origin", w3 + " " + x2);
        }
        function Td(t2, e2, r2) {
          var i2 = Ra(e2);
          return ca(parseFloat(e2) + parseFloat(Ed(t2, "x", r2 + "px", i2))) + i2;
        }
        function $d(t2, e2, r2, i2, n3) {
          var a2, s3, u2 = 360, h3 = o(n3), l2 = parseFloat(n3) * (h3 && ~n3.indexOf("rad") ? Be : 1) - i2, f2 = i2 + l2 + "deg";
          return h3 && ("short" === (a2 = n3.split("_")[1]) && (l2 %= u2) !== l2 % 180 && (l2 += l2 < 0 ? u2 : -u2), "cw" === a2 && l2 < 0 ? l2 = (l2 + 36e9) % u2 - ~~(l2 / u2) * u2 : "ccw" === a2 && 0 < l2 && (l2 = (l2 - 36e9) % u2 - ~~(l2 / u2) * u2)), t2._pt = s3 = new oe(t2._pt, e2, r2, i2, l2, ed), s3.e = f2, s3.u = "deg", t2._props.push(r2), s3;
        }
        function _d(t2, e2) {
          for (var r2 in e2)
            t2[r2] = e2[r2];
          return t2;
        }
        function ae(t2, e2, r2) {
          var i2, n3, a2, s3, o2, u2, h3, l2 = _d({}, r2._gsap), f2 = r2.style;
          for (n3 in l2.svg ? (a2 = r2.getAttribute("transform"), r2.setAttribute("transform", ""), f2[Ve] = e2, i2 = He(r2, 1), Bd(r2, Ve), r2.setAttribute("transform", a2)) : (a2 = getComputedStyle(r2)[Ve], f2[Ve] = e2, i2 = He(r2, 1), f2[Ve] = a2), Fe)
            (a2 = l2[n3]) !== (s3 = i2[n3]) && "perspective,force3D,transformOrigin,svgOrigin".indexOf(n3) < 0 && (o2 = Ra(a2) !== (h3 = Ra(s3)) ? Ed(r2, n3, a2, h3) : parseFloat(a2), u2 = parseFloat(s3), t2._pt = new oe(t2._pt, i2, n3, o2, u2 - o2, dd), t2._pt.u = h3 || 0, t2._props.push(n3));
          _d(i2, l2);
        }
        var le, fe, de, _e, pe, ce, me, ge = zt.Power0, ve = zt.Power1, ye = zt.Power2, Te = zt.Power3, be = zt.Power4, we = zt.Linear, xe = zt.Quad, ke = zt.Cubic, Oe = zt.Quart, Pe = zt.Quint, Me = zt.Strong, Ce = zt.Elastic, Ae = zt.Back, De = zt.SteppedEase, Se = zt.Bounce, ze = zt.Sine, Re = zt.Expo, Ee = zt.Circ, Fe = {}, Be = 180 / Math.PI, Ie = Math.PI / 180, Le = Math.atan2, Ne = /([A-Z])/g, Ue = /(left|right|width|margin|padding|x)/i, Ye = /[\s,\(]\S/, qe = { autoAlpha: "opacity,visibility", scale: "scaleX,scaleY", alpha: "opacity" }, Ve = "transform", Xe = Ve + "Origin", Qe = "O,Moz,ms,Ms,Webkit".split(","), je = function _checkPropPrefix(t2, e2, r2) {
          var i2 = (e2 || pe).style, n3 = 5;
          if (t2 in i2 && !r2)
            return t2;
          for (t2 = t2.charAt(0).toUpperCase() + t2.substr(1); n3-- && !(Qe[n3] + t2 in i2); )
            ;
          return n3 < 0 ? null : (3 === n3 ? "ms" : 0 <= n3 ? Qe[n3] : "") + t2;
        }, Ke = { deg: 1, rad: 1, turn: 1 }, $e = { top: "0%", bottom: "100%", left: "0%", right: "100%", center: "50%" }, Ge = { clearProps: function clearProps(t2, e2, r2, i2, n3) {
          if ("isFromStart" !== n3.data) {
            var a2 = t2._pt = new oe(t2._pt, e2, r2, 0, 0, Jd);
            return a2.u = i2, a2.pr = -10, a2.tween = n3, t2._props.push(r2), 1;
          }
        } }, We = [1, 0, 0, 1, 0, 0], Ze = {}, He = function _parseTransform(t2, e2) {
          var r2 = t2._gsap || new Lt(t2);
          if ("x" in r2 && !e2 && !r2.uncache)
            return r2;
          var i2, n3, a2, s3, o2, u2, h3, l2, f2, d2, _3, p2, c2, m2, g2, v2, y2, T2, b2, w3, x2, k2, O2, P2, M2, C2, A2, D2, S2, z2, R2, E2, F2 = t2.style, B2 = r2.scaleX < 0, I2 = "deg", L2 = td(t2, Xe) || "0";
          return i2 = n3 = a2 = u2 = h3 = l2 = f2 = d2 = _3 = 0, s3 = o2 = 1, r2.svg = !(!t2.getCTM || !Ad(t2)), m2 = Pd(t2, r2.svg), r2.svg && (P2 = (!r2.uncache || "0px 0px" === L2) && !e2 && t2.getAttribute("data-svg-origin"), Qd(t2, P2 || L2, !!P2 || r2.originIsAbsolute, false !== r2.smooth, m2)), p2 = r2.xOrigin || 0, c2 = r2.yOrigin || 0, m2 !== We && (T2 = m2[0], b2 = m2[1], w3 = m2[2], x2 = m2[3], i2 = k2 = m2[4], n3 = O2 = m2[5], 6 === m2.length ? (s3 = Math.sqrt(T2 * T2 + b2 * b2), o2 = Math.sqrt(x2 * x2 + w3 * w3), u2 = T2 || b2 ? Le(b2, T2) * Be : 0, (f2 = w3 || x2 ? Le(w3, x2) * Be + u2 : 0) && (o2 *= Math.abs(Math.cos(f2 * Ie))), r2.svg && (i2 -= p2 - (p2 * T2 + c2 * w3), n3 -= c2 - (p2 * b2 + c2 * x2))) : (E2 = m2[6], z2 = m2[7], A2 = m2[8], D2 = m2[9], S2 = m2[10], R2 = m2[11], i2 = m2[12], n3 = m2[13], a2 = m2[14], h3 = (g2 = Le(E2, S2)) * Be, g2 && (P2 = k2 * (v2 = Math.cos(-g2)) + A2 * (y2 = Math.sin(-g2)), M2 = O2 * v2 + D2 * y2, C2 = E2 * v2 + S2 * y2, A2 = k2 * -y2 + A2 * v2, D2 = O2 * -y2 + D2 * v2, S2 = E2 * -y2 + S2 * v2, R2 = z2 * -y2 + R2 * v2, k2 = P2, O2 = M2, E2 = C2), l2 = (g2 = Le(-w3, S2)) * Be, g2 && (v2 = Math.cos(-g2), R2 = x2 * (y2 = Math.sin(-g2)) + R2 * v2, T2 = P2 = T2 * v2 - A2 * y2, b2 = M2 = b2 * v2 - D2 * y2, w3 = C2 = w3 * v2 - S2 * y2), u2 = (g2 = Le(b2, T2)) * Be, g2 && (P2 = T2 * (v2 = Math.cos(g2)) + b2 * (y2 = Math.sin(g2)), M2 = k2 * v2 + O2 * y2, b2 = b2 * v2 - T2 * y2, O2 = O2 * v2 - k2 * y2, T2 = P2, k2 = M2), h3 && 359.9 < Math.abs(h3) + Math.abs(u2) && (h3 = u2 = 0, l2 = 180 - l2), s3 = ca(Math.sqrt(T2 * T2 + b2 * b2 + w3 * w3)), o2 = ca(Math.sqrt(O2 * O2 + E2 * E2)), g2 = Le(k2, O2), f2 = 2e-4 < Math.abs(g2) ? g2 * Be : 0, _3 = R2 ? 1 / (R2 < 0 ? -R2 : R2) : 0), r2.svg && (P2 = t2.getAttribute("transform"), r2.forceCSS = t2.setAttribute("transform", "") || !Nd(td(t2, Ve)), P2 && t2.setAttribute("transform", P2))), 90 < Math.abs(f2) && Math.abs(f2) < 270 && (B2 ? (s3 *= -1, f2 += u2 <= 0 ? 180 : -180, u2 += u2 <= 0 ? 180 : -180) : (o2 *= -1, f2 += f2 <= 0 ? 180 : -180)), e2 = e2 || r2.uncache, r2.x = i2 - ((r2.xPercent = i2 && (!e2 && r2.xPercent || (Math.round(t2.offsetWidth / 2) === Math.round(-i2) ? -50 : 0))) ? t2.offsetWidth * r2.xPercent / 100 : 0) + "px", r2.y = n3 - ((r2.yPercent = n3 && (!e2 && r2.yPercent || (Math.round(t2.offsetHeight / 2) === Math.round(-n3) ? -50 : 0))) ? t2.offsetHeight * r2.yPercent / 100 : 0) + "px", r2.z = a2 + "px", r2.scaleX = ca(s3), r2.scaleY = ca(o2), r2.rotation = ca(u2) + I2, r2.rotationX = ca(h3) + I2, r2.rotationY = ca(l2) + I2, r2.skewX = f2 + I2, r2.skewY = d2 + I2, r2.transformPerspective = _3 + "px", (r2.zOrigin = parseFloat(L2.split(" ")[2]) || 0) && (F2[Xe] = Je(L2)), r2.xOffset = r2.yOffset = 0, r2.force3D = U.force3D, r2.renderTransform = r2.svg ? ar : me ? nr : tr, r2.uncache = 0, r2;
        }, Je = function _firstTwoOnly(t2) {
          return (t2 = t2.split(" "))[0] + " " + t2[1];
        }, tr = function _renderNon3DTransforms(t2, e2) {
          e2.z = "0px", e2.rotationY = e2.rotationX = "0deg", e2.force3D = 0, nr(t2, e2);
        }, er = "0deg", rr = "0px", ir = ") ", nr = function _renderCSSTransforms(t2, e2) {
          var r2 = e2 || this, i2 = r2.xPercent, n3 = r2.yPercent, a2 = r2.x, s3 = r2.y, o2 = r2.z, u2 = r2.rotation, h3 = r2.rotationY, l2 = r2.rotationX, f2 = r2.skewX, d2 = r2.skewY, _3 = r2.scaleX, p2 = r2.scaleY, c2 = r2.transformPerspective, m2 = r2.force3D, g2 = r2.target, v2 = r2.zOrigin, y2 = "", T2 = "auto" === m2 && t2 && 1 !== t2 || true === m2;
          if (v2 && (l2 !== er || h3 !== er)) {
            var b2, w3 = parseFloat(h3) * Ie, x2 = Math.sin(w3), k2 = Math.cos(w3);
            w3 = parseFloat(l2) * Ie, b2 = Math.cos(w3), a2 = Td(g2, a2, x2 * b2 * -v2), s3 = Td(g2, s3, -Math.sin(w3) * -v2), o2 = Td(g2, o2, k2 * b2 * -v2 + v2);
          }
          c2 !== rr && (y2 += "perspective(" + c2 + ir), (i2 || n3) && (y2 += "translate(" + i2 + "%, " + n3 + "%) "), !T2 && a2 === rr && s3 === rr && o2 === rr || (y2 += o2 !== rr || T2 ? "translate3d(" + a2 + ", " + s3 + ", " + o2 + ") " : "translate(" + a2 + ", " + s3 + ir), u2 !== er && (y2 += "rotate(" + u2 + ir), h3 !== er && (y2 += "rotateY(" + h3 + ir), l2 !== er && (y2 += "rotateX(" + l2 + ir), f2 === er && d2 === er || (y2 += "skew(" + f2 + ", " + d2 + ir), 1 === _3 && 1 === p2 || (y2 += "scale(" + _3 + ", " + p2 + ir), g2.style[Ve] = y2 || "translate(0, 0)";
        }, ar = function _renderSVGTransforms(t2, e2) {
          var r2, i2, n3, a2, s3, o2 = e2 || this, u2 = o2.xPercent, h3 = o2.yPercent, l2 = o2.x, f2 = o2.y, d2 = o2.rotation, _3 = o2.skewX, p2 = o2.skewY, c2 = o2.scaleX, m2 = o2.scaleY, g2 = o2.target, v2 = o2.xOrigin, y2 = o2.yOrigin, T2 = o2.xOffset, b2 = o2.yOffset, w3 = o2.forceCSS, x2 = parseFloat(l2), k2 = parseFloat(f2);
          d2 = parseFloat(d2), _3 = parseFloat(_3), (p2 = parseFloat(p2)) && (_3 += p2 = parseFloat(p2), d2 += p2), d2 || _3 ? (d2 *= Ie, _3 *= Ie, r2 = Math.cos(d2) * c2, i2 = Math.sin(d2) * c2, n3 = Math.sin(d2 - _3) * -m2, a2 = Math.cos(d2 - _3) * m2, _3 && (p2 *= Ie, s3 = Math.tan(_3 - p2), n3 *= s3 = Math.sqrt(1 + s3 * s3), a2 *= s3, p2 && (s3 = Math.tan(p2), r2 *= s3 = Math.sqrt(1 + s3 * s3), i2 *= s3)), r2 = ca(r2), i2 = ca(i2), n3 = ca(n3), a2 = ca(a2)) : (r2 = c2, a2 = m2, i2 = n3 = 0), (x2 && !~(l2 + "").indexOf("px") || k2 && !~(f2 + "").indexOf("px")) && (x2 = Ed(g2, "x", l2, "px"), k2 = Ed(g2, "y", f2, "px")), (v2 || y2 || T2 || b2) && (x2 = ca(x2 + v2 - (v2 * r2 + y2 * n3) + T2), k2 = ca(k2 + y2 - (v2 * i2 + y2 * a2) + b2)), (u2 || h3) && (s3 = g2.getBBox(), x2 = ca(x2 + u2 / 100 * s3.width), k2 = ca(k2 + h3 / 100 * s3.height)), s3 = "matrix(" + r2 + "," + i2 + "," + n3 + "," + a2 + "," + x2 + "," + k2 + ")", g2.setAttribute("transform", s3), w3 && (g2.style[Ve] = s3);
        };
        ba("padding,margin,Width,Radius", function(e2, r2) {
          var t2 = "Right", i2 = "Bottom", n3 = "Left", o2 = (r2 < 3 ? ["Top", t2, i2, n3] : ["Top" + n3, "Top" + t2, i2 + t2, i2 + n3]).map(function(t3) {
            return r2 < 2 ? e2 + t3 : "border" + t3 + e2;
          });
          Ge[1 < r2 ? "border" + e2 : e2] = function(e3, t3, r3, i3, n4) {
            var a2, s3;
            if (arguments.length < 4)
              return a2 = o2.map(function(t4) {
                return Fd(e3, t4, r3);
              }), 5 === (s3 = a2.join(" ")).split(a2[0]).length ? a2[0] : s3;
            a2 = (i3 + "").split(" "), s3 = {}, o2.forEach(function(t4, e4) {
              return s3[t4] = a2[e4] = a2[e4] || a2[(e4 - 1) / 2 | 0];
            }), e3.init(t3, s3, n4);
          };
        });
        var sr, or, ur, hr = { name: "css", register: wd, targetTest: function targetTest(t2) {
          return t2.style && t2.nodeType;
        }, init: function init(t2, e2, r2, i2, n3) {
          var a2, s3, u2, h3, l2, f2, d2, _3, p2, c2, m2, g2, v2, y2, T2, b2 = this._props, w3 = t2.style, x2 = r2.vars.startAt;
          for (d2 in _e || wd(), e2)
            if ("autoRound" !== d2 && (s3 = e2[d2], !ft[d2] || !Ub(d2, e2, r2, i2, t2, n3))) {
              if (l2 = typeof s3, f2 = Ge[d2], "function" === l2 && (l2 = typeof (s3 = s3.call(r2, i2, t2, n3))), "string" === l2 && ~s3.indexOf("random(") && (s3 = hb(s3)), f2)
                f2(this, t2, d2, s3, r2) && (T2 = 1);
              else if ("--" === d2.substr(0, 2))
                a2 = (getComputedStyle(t2).getPropertyValue(d2) + "").trim(), s3 += "", Ct.lastIndex = 0, Ct.test(a2) || (_3 = Ra(a2), p2 = Ra(s3)), p2 ? _3 !== p2 && (a2 = Ed(t2, d2, a2, p2) + p2) : _3 && (s3 += _3), this.add(w3, "setProperty", a2, s3, i2, n3, 0, 0, d2), b2.push(d2);
              else if ("undefined" !== l2) {
                if (x2 && d2 in x2 ? (a2 = "function" == typeof x2[d2] ? x2[d2].call(r2, i2, t2, n3) : x2[d2], o(a2) && ~a2.indexOf("random(") && (a2 = hb(a2)), Ra(a2 + "") || (a2 += U.units[d2] || Ra(Fd(t2, d2)) || ""), "=" === (a2 + "").charAt(1) && (a2 = Fd(t2, d2))) : a2 = Fd(t2, d2), h3 = parseFloat(a2), (c2 = "string" === l2 && "=" === s3.charAt(1) && s3.substr(0, 2)) && (s3 = s3.substr(2)), u2 = parseFloat(s3), d2 in qe && ("autoAlpha" === d2 && (1 === h3 && "hidden" === Fd(t2, "visibility") && u2 && (h3 = 0), Cd(this, w3, "visibility", h3 ? "inherit" : "hidden", u2 ? "inherit" : "hidden", !u2)), "scale" !== d2 && "transform" !== d2 && ~(d2 = qe[d2]).indexOf(",") && (d2 = d2.split(",")[0])), m2 = d2 in Fe)
                  if (g2 || ((v2 = t2._gsap).renderTransform && !e2.parseTransform || He(t2, e2.parseTransform), y2 = false !== e2.smoothOrigin && v2.smooth, (g2 = this._pt = new oe(this._pt, w3, Ve, 0, 1, v2.renderTransform, v2, 0, -1)).dep = 1), "scale" === d2)
                    this._pt = new oe(this._pt, v2, "scaleY", v2.scaleY, (c2 ? ea(v2.scaleY, c2 + u2) : u2) - v2.scaleY || 0), b2.push("scaleY", d2), d2 += "X";
                  else {
                    if ("transformOrigin" === d2) {
                      s3 = Id(s3), v2.svg ? Qd(t2, s3, 0, y2, 0, this) : ((p2 = parseFloat(s3.split(" ")[2]) || 0) !== v2.zOrigin && Cd(this, v2, "zOrigin", v2.zOrigin, p2), Cd(this, w3, d2, Je(a2), Je(s3)));
                      continue;
                    }
                    if ("svgOrigin" === d2) {
                      Qd(t2, s3, 1, y2, 0, this);
                      continue;
                    }
                    if (d2 in Ze) {
                      $d(this, v2, d2, h3, c2 ? ea(h3, c2 + s3) : s3);
                      continue;
                    }
                    if ("smoothOrigin" === d2) {
                      Cd(this, v2, "smooth", v2.smooth, s3);
                      continue;
                    }
                    if ("force3D" === d2) {
                      v2[d2] = s3;
                      continue;
                    }
                    if ("transform" === d2) {
                      ae(this, s3, t2);
                      continue;
                    }
                  }
                else
                  d2 in w3 || (d2 = je(d2) || d2);
                if (m2 || (u2 || 0 === u2) && (h3 || 0 === h3) && !Ye.test(s3) && d2 in w3)
                  u2 = u2 || 0, (_3 = (a2 + "").substr((h3 + "").length)) !== (p2 = Ra(s3) || (d2 in U.units ? U.units[d2] : _3)) && (h3 = Ed(t2, d2, a2, p2)), this._pt = new oe(this._pt, m2 ? v2 : w3, d2, h3, (c2 ? ea(h3, c2 + u2) : u2) - h3, m2 || "px" !== p2 && "zIndex" !== d2 || false === e2.autoRound ? dd : gd), this._pt.u = p2 || 0, _3 !== p2 && "%" !== p2 && (this._pt.b = a2, this._pt.r = fd);
                else if (d2 in w3)
                  Gd.call(this, t2, d2, a2, c2 ? c2 + s3 : s3);
                else {
                  if (!(d2 in t2)) {
                    N(d2, s3);
                    continue;
                  }
                  this.add(t2, d2, a2 || t2[d2], c2 ? c2 + s3 : s3, i2, n3);
                }
                b2.push(d2);
              }
            }
          T2 && se(this);
        }, get: Fd, aliases: qe, getSetter: function getSetter(t2, e2, i2) {
          var n3 = qe[e2];
          return n3 && n3.indexOf(",") < 0 && (e2 = n3), e2 in Fe && e2 !== Xe && (t2._gsap.x || Fd(t2, "x")) ? i2 && ce === i2 ? "scale" === e2 ? md : ld : (ce = i2 || {}) && ("scale" === e2 ? nd : od) : t2.style && !r(t2.style[e2]) ? jd : ~e2.indexOf("-") ? kd : Ht(t2, e2);
        }, core: { _removeProperty: Bd, _getMatrix: Pd } };
        he.utils.checkPrefix = je, ur = ba((sr = "x,y,z,scale,scaleX,scaleY,xPercent,yPercent") + "," + (or = "rotation,rotationX,rotationY,skewX,skewY") + ",transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective", function(t2) {
          Fe[t2] = 1;
        }), ba(or, function(t2) {
          U.units[t2] = "deg", Ze[t2] = 1;
        }), qe[ur[13]] = sr + "," + or, ba("0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY", function(t2) {
          var e2 = t2.split(":");
          qe[e2[1]] = ur[e2[0]];
        }), ba("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective", function(t2) {
          U.units[t2] = "px";
        }), he.registerPlugin(hr);
        var lr = he.registerPlugin(hr) || he, fr = lr.core.Tween;
        e.Back = Ae, e.Bounce = Se, e.CSSPlugin = hr, e.Circ = Ee, e.Cubic = ke, e.Elastic = Ce, e.Expo = Re, e.Linear = we, e.Power0 = ge, e.Power1 = ve, e.Power2 = ye, e.Power3 = Te, e.Power4 = be, e.Quad = xe, e.Quart = Oe, e.Quint = Pe, e.Sine = ze, e.SteppedEase = De, e.Strong = Me, e.TimelineLite = Ut, e.TimelineMax = Ut, e.TweenLite = $t, e.TweenMax = fr, e.default = lr, e.gsap = lr;
        if (typeof window === "undefined" || window !== e) {
          Object.defineProperty(e, "__esModule", { value: true });
        } else {
          delete e.default;
        }
      });
    }
  });

  // dep-runtime/node_modules/gsap/dist/EasePack.min.js
  var require_EasePack_min = __commonJS({
    "dep-runtime/node_modules/gsap/dist/EasePack.min.js"(exports2, module2) {
      !function(e, n2) {
        "object" == typeof exports2 && "undefined" != typeof module2 ? n2(exports2) : "function" == typeof define && define.amd ? define(["exports"], n2) : n2((e = e || self).window = e.window || {});
      }(exports2, function(e) {
        "use strict";
        function f() {
          return w2 || "undefined" != typeof window && (w2 = window.gsap) && w2.registerPlugin && w2;
        }
        function g(e2, n3) {
          return !!(void 0 === e2 ? n3 : e2 && !~(e2 + "").indexOf("false"));
        }
        function h2(e2) {
          if (w2 = e2 || f()) {
            r = w2.registerEase;
            var n3, t = w2.parseEase(), o = function createConfig(t2) {
              return function(e3) {
                var n4 = 0.5 + e3 / 2;
                t2.config = function(e4) {
                  return t2(2 * (1 - e4) * e4 * n4 + e4 * e4);
                };
              };
            };
            for (n3 in t)
              t[n3].config || o(t[n3]);
            for (n3 in r("slow", a), r("expoScale", s2), r("rough", u), c)
              "version" !== n3 && w2.core.globals(n3, c[n3]);
          }
        }
        function i(e2, n3, t) {
          var o = (e2 = Math.min(1, e2 || 0.7)) < 1 ? n3 || 0 === n3 ? n3 : 0.7 : 0, r2 = (1 - e2) / 2, i2 = r2 + e2, a2 = g(t);
          return function(e3) {
            var n4 = e3 + (0.5 - e3) * o;
            return e3 < r2 ? a2 ? 1 - (e3 = 1 - e3 / r2) * e3 : n4 - (e3 = 1 - e3 / r2) * e3 * e3 * e3 * n4 : i2 < e3 ? a2 ? 1 === e3 ? 0 : 1 - (e3 = (e3 - i2) / r2) * e3 : n4 + (e3 - n4) * (e3 = (e3 - i2) / r2) * e3 * e3 * e3 : a2 ? 1 : n4;
          };
        }
        function j(n3, e2, t) {
          var o = Math.log(e2 / n3), r2 = e2 - n3;
          return t = t && w2.parseEase(t), function(e3) {
            return (n3 * Math.exp(o * (t ? t(e3) : e3)) - n3) / r2;
          };
        }
        function k(e2, n3, t) {
          this.t = e2, this.v = n3, t && (((this.next = t).prev = this).c = t.v - n3, this.gap = t.t - e2);
        }
        function l(e2) {
          "object" != typeof e2 && (e2 = { points: +e2 || 20 });
          for (var n3, t, o, r2, i2, a2, f2, s3 = e2.taper || "none", u2 = [], c2 = 0, p = 0 | (+e2.points || 20), l2 = p, v = g(e2.randomize, true), d = g(e2.clamp), h3 = w2 ? w2.parseEase(e2.template) : 0, x = 0.4 * (+e2.strength || 1); -1 < --l2; )
            n3 = v ? Math.random() : 1 / p * l2, t = h3 ? h3(n3) : n3, o = "none" === s3 ? x : "out" === s3 ? (r2 = 1 - n3) * r2 * x : "in" === s3 ? n3 * n3 * x : n3 < 0.5 ? (r2 = 2 * n3) * r2 * 0.5 * x : (r2 = 2 * (1 - n3)) * r2 * 0.5 * x, v ? t += Math.random() * o - 0.5 * o : l2 % 2 ? t += 0.5 * o : t -= 0.5 * o, d && (1 < t ? t = 1 : t < 0 && (t = 0)), u2[c2++] = { x: n3, y: t };
          for (u2.sort(function(e3, n4) {
            return e3.x - n4.x;
          }), a2 = new k(1, 1, null), l2 = p; l2--; )
            i2 = u2[l2], a2 = new k(i2.x, i2.y, a2);
          return f2 = new k(0, 0, a2.t ? a2 : a2.next), function(e3) {
            var n4 = f2;
            if (e3 > n4.t) {
              for (; n4.next && e3 >= n4.t; )
                n4 = n4.next;
              n4 = n4.prev;
            } else
              for (; n4.prev && e3 <= n4.t; )
                n4 = n4.prev;
            return (f2 = n4).v + (e3 - n4.t) / n4.gap * n4.c;
          };
        }
        var w2, r, a = i(0.7);
        (a.ease = a).config = i;
        var s2 = j(1, 2);
        s2.config = j;
        var u = l();
        (u.ease = u).config = l;
        var c = { SlowMo: a, RoughEase: u, ExpoScaleEase: s2 };
        for (var n2 in c)
          c[n2].register = h2, c[n2].version = "3.10.4";
        f() && w2.registerPlugin(a), e.EasePack = c, e.ExpoScaleEase = s2, e.RoughEase = u, e.SlowMo = a, e.default = c;
        if (typeof window === "undefined" || window !== e) {
          Object.defineProperty(e, "__esModule", { value: true });
        } else {
          delete e.default;
        }
      });
    }
  });

  // dep-runtime/node_modules/picturefill/dist/picturefill.min.js
  var require_picturefill_min = __commonJS({
    "dep-runtime/node_modules/picturefill/dist/picturefill.min.js"(exports2, module2) {
      !function(a) {
        var b = navigator.userAgent;
        a.HTMLPictureElement && /ecko/.test(b) && b.match(/rv\:(\d+)/) && RegExp.$1 < 45 && addEventListener("resize", function() {
          var b2, c = document.createElement("source"), d = function(a2) {
            var b3, d2, e2 = a2.parentNode;
            "PICTURE" === e2.nodeName.toUpperCase() ? (b3 = c.cloneNode(), e2.insertBefore(b3, e2.firstElementChild), setTimeout(function() {
              e2.removeChild(b3);
            })) : (!a2._pfLastSize || a2.offsetWidth > a2._pfLastSize) && (a2._pfLastSize = a2.offsetWidth, d2 = a2.sizes, a2.sizes += ",100vw", setTimeout(function() {
              a2.sizes = d2;
            }));
          }, e = function() {
            var a2, b3 = document.querySelectorAll("picture > img, img[srcset][sizes]");
            for (a2 = 0; a2 < b3.length; a2++)
              d(b3[a2]);
          }, f = function() {
            clearTimeout(b2), b2 = setTimeout(e, 99);
          }, g = a.matchMedia && matchMedia("(orientation: landscape)"), h2 = function() {
            f(), g && g.addListener && g.addListener(f);
          };
          return c.srcset = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==", /^[c|i]|d$/.test(document.readyState || "") ? h2() : document.addEventListener("DOMContentLoaded", h2), f;
        }());
      }(window), function(a, b, c) {
        "use strict";
        function d(a2) {
          return " " === a2 || "	" === a2 || "\n" === a2 || "\f" === a2 || "\r" === a2;
        }
        function e(b2, c2) {
          var d2 = new a.Image();
          return d2.onerror = function() {
            A[b2] = false, ba();
          }, d2.onload = function() {
            A[b2] = 1 === d2.width, ba();
          }, d2.src = c2, "pending";
        }
        function f() {
          M = false, P = a.devicePixelRatio, N = {}, O = {}, s2.DPR = P || 1, Q.width = Math.max(a.innerWidth || 0, z.clientWidth), Q.height = Math.max(a.innerHeight || 0, z.clientHeight), Q.vw = Q.width / 100, Q.vh = Q.height / 100, r = [Q.height, Q.width, P].join("-"), Q.em = s2.getEmValue(), Q.rem = Q.em;
        }
        function g(a2, b2, c2, d2) {
          var e2, f2, g2, h3;
          return "saveData" === B.algorithm ? a2 > 2.7 ? h3 = c2 + 1 : (f2 = b2 - c2, e2 = Math.pow(a2 - 0.6, 1.5), g2 = f2 * e2, d2 && (g2 += 0.1 * e2), h3 = a2 + g2) : h3 = c2 > 1 ? Math.sqrt(a2 * b2) : a2, h3 > c2;
        }
        function h2(a2) {
          var b2, c2 = s2.getSet(a2), d2 = false;
          "pending" !== c2 && (d2 = r, c2 && (b2 = s2.setRes(c2), s2.applySetCandidate(b2, a2))), a2[s2.ns].evaled = d2;
        }
        function i(a2, b2) {
          return a2.res - b2.res;
        }
        function j(a2, b2, c2) {
          var d2;
          return !c2 && b2 && (c2 = a2[s2.ns].sets, c2 = c2 && c2[c2.length - 1]), d2 = k(b2, c2), d2 && (b2 = s2.makeUrl(b2), a2[s2.ns].curSrc = b2, a2[s2.ns].curCan = d2, d2.res || aa(d2, d2.set.sizes)), d2;
        }
        function k(a2, b2) {
          var c2, d2, e2;
          if (a2 && b2) {
            for (e2 = s2.parseSet(b2), a2 = s2.makeUrl(a2), c2 = 0; c2 < e2.length; c2++)
              if (a2 === s2.makeUrl(e2[c2].url)) {
                d2 = e2[c2];
                break;
              }
          }
          return d2;
        }
        function l(a2, b2) {
          var c2, d2, e2, f2, g2 = a2.getElementsByTagName("source");
          for (c2 = 0, d2 = g2.length; d2 > c2; c2++)
            e2 = g2[c2], e2[s2.ns] = true, f2 = e2.getAttribute("srcset"), f2 && b2.push({ srcset: f2, media: e2.getAttribute("media"), type: e2.getAttribute("type"), sizes: e2.getAttribute("sizes") });
        }
        function m(a2, b2) {
          function c2(b3) {
            var c3, d2 = b3.exec(a2.substring(m2));
            return d2 ? (c3 = d2[0], m2 += c3.length, c3) : void 0;
          }
          function e2() {
            var a3, c3, d2, e3, f3, i3, j3, k3, l3, m3 = false, o2 = {};
            for (e3 = 0; e3 < h3.length; e3++)
              f3 = h3[e3], i3 = f3[f3.length - 1], j3 = f3.substring(0, f3.length - 1), k3 = parseInt(j3, 10), l3 = parseFloat(j3), X.test(j3) && "w" === i3 ? ((a3 || c3) && (m3 = true), 0 === k3 ? m3 = true : a3 = k3) : Y.test(j3) && "x" === i3 ? ((a3 || c3 || d2) && (m3 = true), 0 > l3 ? m3 = true : c3 = l3) : X.test(j3) && "h" === i3 ? ((d2 || c3) && (m3 = true), 0 === k3 ? m3 = true : d2 = k3) : m3 = true;
            m3 || (o2.url = g2, a3 && (o2.w = a3), c3 && (o2.d = c3), d2 && (o2.h = d2), d2 || c3 || a3 || (o2.d = 1), 1 === o2.d && (b2.has1x = true), o2.set = b2, n3.push(o2));
          }
          function f2() {
            for (c2(T), i2 = "", j2 = "in descriptor"; ; ) {
              if (k2 = a2.charAt(m2), "in descriptor" === j2)
                if (d(k2))
                  i2 && (h3.push(i2), i2 = "", j2 = "after descriptor");
                else {
                  if ("," === k2)
                    return m2 += 1, i2 && h3.push(i2), void e2();
                  if ("(" === k2)
                    i2 += k2, j2 = "in parens";
                  else {
                    if ("" === k2)
                      return i2 && h3.push(i2), void e2();
                    i2 += k2;
                  }
                }
              else if ("in parens" === j2)
                if (")" === k2)
                  i2 += k2, j2 = "in descriptor";
                else {
                  if ("" === k2)
                    return h3.push(i2), void e2();
                  i2 += k2;
                }
              else if ("after descriptor" === j2)
                if (d(k2))
                  ;
                else {
                  if ("" === k2)
                    return void e2();
                  j2 = "in descriptor", m2 -= 1;
                }
              m2 += 1;
            }
          }
          for (var g2, h3, i2, j2, k2, l2 = a2.length, m2 = 0, n3 = []; ; ) {
            if (c2(U), m2 >= l2)
              return n3;
            g2 = c2(V), h3 = [], "," === g2.slice(-1) ? (g2 = g2.replace(W, ""), e2()) : f2();
          }
        }
        function n2(a2) {
          function b2(a3) {
            function b3() {
              f3 && (g3.push(f3), f3 = "");
            }
            function c3() {
              g3[0] && (h4.push(g3), g3 = []);
            }
            for (var e3, f3 = "", g3 = [], h4 = [], i3 = 0, j3 = 0, k3 = false; ; ) {
              if (e3 = a3.charAt(j3), "" === e3)
                return b3(), c3(), h4;
              if (k3) {
                if ("*" === e3 && "/" === a3[j3 + 1]) {
                  k3 = false, j3 += 2, b3();
                  continue;
                }
                j3 += 1;
              } else {
                if (d(e3)) {
                  if (a3.charAt(j3 - 1) && d(a3.charAt(j3 - 1)) || !f3) {
                    j3 += 1;
                    continue;
                  }
                  if (0 === i3) {
                    b3(), j3 += 1;
                    continue;
                  }
                  e3 = " ";
                } else if ("(" === e3)
                  i3 += 1;
                else if (")" === e3)
                  i3 -= 1;
                else {
                  if ("," === e3) {
                    b3(), c3(), j3 += 1;
                    continue;
                  }
                  if ("/" === e3 && "*" === a3.charAt(j3 + 1)) {
                    k3 = true, j3 += 2;
                    continue;
                  }
                }
                f3 += e3, j3 += 1;
              }
            }
          }
          function c2(a3) {
            return k2.test(a3) && parseFloat(a3) >= 0 ? true : l2.test(a3) ? true : "0" === a3 || "-0" === a3 || "+0" === a3 ? true : false;
          }
          var e2, f2, g2, h3, i2, j2, k2 = /^(?:[+-]?[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i, l2 = /^calc\((?:[0-9a-z \.\+\-\*\/\(\)]+)\)$/i;
          for (f2 = b2(a2), g2 = f2.length, e2 = 0; g2 > e2; e2++)
            if (h3 = f2[e2], i2 = h3[h3.length - 1], c2(i2)) {
              if (j2 = i2, h3.pop(), 0 === h3.length)
                return j2;
              if (h3 = h3.join(" "), s2.matchesMedia(h3))
                return j2;
            }
          return "100vw";
        }
        b.createElement("picture");
        var o, p, q, r, s2 = {}, t = false, u = function() {
        }, v = b.createElement("img"), w2 = v.getAttribute, x = v.setAttribute, y = v.removeAttribute, z = b.documentElement, A = {}, B = { algorithm: "" }, C = "data-pfsrc", D = C + "set", E = navigator.userAgent, F = /rident/.test(E) || /ecko/.test(E) && E.match(/rv\:(\d+)/) && RegExp.$1 > 35, G = "currentSrc", H = /\s+\+?\d+(e\d+)?w/, I = /(\([^)]+\))?\s*(.+)/, J = a.picturefillCFG, K = "position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)", L = "font-size:100%!important;", M = true, N = {}, O = {}, P = a.devicePixelRatio, Q = { px: 1, "in": 96 }, R = b.createElement("a"), S = false, T = /^[ \t\n\r\u000c]+/, U = /^[, \t\n\r\u000c]+/, V = /^[^ \t\n\r\u000c]+/, W = /[,]+$/, X = /^\d+$/, Y = /^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/, Z = function(a2, b2, c2, d2) {
          a2.addEventListener ? a2.addEventListener(b2, c2, d2 || false) : a2.attachEvent && a2.attachEvent("on" + b2, c2);
        }, $2 = function(a2) {
          var b2 = {};
          return function(c2) {
            return c2 in b2 || (b2[c2] = a2(c2)), b2[c2];
          };
        }, _2 = function() {
          var a2 = /^([\d\.]+)(em|vw|px)$/, b2 = function() {
            for (var a3 = arguments, b3 = 0, c3 = a3[0]; ++b3 in a3; )
              c3 = c3.replace(a3[b3], a3[++b3]);
            return c3;
          }, c2 = $2(function(a3) {
            return "return " + b2((a3 || "").toLowerCase(), /\band\b/g, "&&", /,/g, "||", /min-([a-z-\s]+):/g, "e.$1>=", /max-([a-z-\s]+):/g, "e.$1<=", /calc([^)]+)/g, "($1)", /(\d+[\.]*[\d]*)([a-z]+)/g, "($1 * e.$2)", /^(?!(e.[a-z]|[0-9\.&=|><\+\-\*\(\)\/])).*/gi, "") + ";";
          });
          return function(b3, d2) {
            var e2;
            if (!(b3 in N))
              if (N[b3] = false, d2 && (e2 = b3.match(a2)))
                N[b3] = e2[1] * Q[e2[2]];
              else
                try {
                  N[b3] = new Function("e", c2(b3))(Q);
                } catch (f2) {
                }
            return N[b3];
          };
        }(), aa = function(a2, b2) {
          return a2.w ? (a2.cWidth = s2.calcListLength(b2 || "100vw"), a2.res = a2.w / a2.cWidth) : a2.res = a2.d, a2;
        }, ba = function(a2) {
          if (t) {
            var c2, d2, e2, f2 = a2 || {};
            if (f2.elements && 1 === f2.elements.nodeType && ("IMG" === f2.elements.nodeName.toUpperCase() ? f2.elements = [f2.elements] : (f2.context = f2.elements, f2.elements = null)), c2 = f2.elements || s2.qsa(f2.context || b, f2.reevaluate || f2.reselect ? s2.sel : s2.selShort), e2 = c2.length) {
              for (s2.setupRun(f2), S = true, d2 = 0; e2 > d2; d2++)
                s2.fillImg(c2[d2], f2);
              s2.teardownRun(f2);
            }
          }
        };
        o = a.console && console.warn ? function(a2) {
          console.warn(a2);
        } : u, G in v || (G = "src"), A["image/jpeg"] = true, A["image/gif"] = true, A["image/png"] = true, A["image/svg+xml"] = b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image", "1.1"), s2.ns = ("pf" + new Date().getTime()).substr(0, 9), s2.supSrcset = "srcset" in v, s2.supSizes = "sizes" in v, s2.supPicture = !!a.HTMLPictureElement, s2.supSrcset && s2.supPicture && !s2.supSizes && !function(a2) {
          v.srcset = "data:,a", a2.src = "data:,a", s2.supSrcset = v.complete === a2.complete, s2.supPicture = s2.supSrcset && s2.supPicture;
        }(b.createElement("img")), s2.supSrcset && !s2.supSizes ? !function() {
          var a2 = "data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==", c2 = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==", d2 = b.createElement("img"), e2 = function() {
            var a3 = d2.width;
            2 === a3 && (s2.supSizes = true), q = s2.supSrcset && !s2.supSizes, t = true, setTimeout(ba);
          };
          d2.onload = e2, d2.onerror = e2, d2.setAttribute("sizes", "9px"), d2.srcset = c2 + " 1w," + a2 + " 9w", d2.src = c2;
        }() : t = true, s2.selShort = "picture>img,img[srcset]", s2.sel = s2.selShort, s2.cfg = B, s2.DPR = P || 1, s2.u = Q, s2.types = A, s2.setSize = u, s2.makeUrl = $2(function(a2) {
          return R.href = a2, R.href;
        }), s2.qsa = function(a2, b2) {
          return "querySelector" in a2 ? a2.querySelectorAll(b2) : [];
        }, s2.matchesMedia = function() {
          return a.matchMedia && (matchMedia("(min-width: 0.1em)") || {}).matches ? s2.matchesMedia = function(a2) {
            return !a2 || matchMedia(a2).matches;
          } : s2.matchesMedia = s2.mMQ, s2.matchesMedia.apply(this, arguments);
        }, s2.mMQ = function(a2) {
          return a2 ? _2(a2) : true;
        }, s2.calcLength = function(a2) {
          var b2 = _2(a2, true) || false;
          return 0 > b2 && (b2 = false), b2;
        }, s2.supportsType = function(a2) {
          return a2 ? A[a2] : true;
        }, s2.parseSize = $2(function(a2) {
          var b2 = (a2 || "").match(I);
          return { media: b2 && b2[1], length: b2 && b2[2] };
        }), s2.parseSet = function(a2) {
          return a2.cands || (a2.cands = m(a2.srcset, a2)), a2.cands;
        }, s2.getEmValue = function() {
          var a2;
          if (!p && (a2 = b.body)) {
            var c2 = b.createElement("div"), d2 = z.style.cssText, e2 = a2.style.cssText;
            c2.style.cssText = K, z.style.cssText = L, a2.style.cssText = L, a2.appendChild(c2), p = c2.offsetWidth, a2.removeChild(c2), p = parseFloat(p, 10), z.style.cssText = d2, a2.style.cssText = e2;
          }
          return p || 16;
        }, s2.calcListLength = function(a2) {
          if (!(a2 in O) || B.uT) {
            var b2 = s2.calcLength(n2(a2));
            O[a2] = b2 ? b2 : Q.width;
          }
          return O[a2];
        }, s2.setRes = function(a2) {
          var b2;
          if (a2) {
            b2 = s2.parseSet(a2);
            for (var c2 = 0, d2 = b2.length; d2 > c2; c2++)
              aa(b2[c2], a2.sizes);
          }
          return b2;
        }, s2.setRes.res = aa, s2.applySetCandidate = function(a2, b2) {
          if (a2.length) {
            var c2, d2, e2, f2, h3, k2, l2, m2, n3, o2 = b2[s2.ns], p2 = s2.DPR;
            if (k2 = o2.curSrc || b2[G], l2 = o2.curCan || j(b2, k2, a2[0].set), l2 && l2.set === a2[0].set && (n3 = F && !b2.complete && l2.res - 0.1 > p2, n3 || (l2.cached = true, l2.res >= p2 && (h3 = l2))), !h3) {
              for (a2.sort(i), f2 = a2.length, h3 = a2[f2 - 1], d2 = 0; f2 > d2; d2++)
                if (c2 = a2[d2], c2.res >= p2) {
                  e2 = d2 - 1, h3 = a2[e2] && (n3 || k2 !== s2.makeUrl(c2.url)) && g(a2[e2].res, c2.res, p2, a2[e2].cached) ? a2[e2] : c2;
                  break;
                }
            }
            h3 && (m2 = s2.makeUrl(h3.url), o2.curSrc = m2, o2.curCan = h3, m2 !== k2 && s2.setSrc(b2, h3), s2.setSize(b2));
          }
        }, s2.setSrc = function(a2, b2) {
          var c2;
          a2.src = b2.url, "image/svg+xml" === b2.set.type && (c2 = a2.style.width, a2.style.width = a2.offsetWidth + 1 + "px", a2.offsetWidth + 1 && (a2.style.width = c2));
        }, s2.getSet = function(a2) {
          var b2, c2, d2, e2 = false, f2 = a2[s2.ns].sets;
          for (b2 = 0; b2 < f2.length && !e2; b2++)
            if (c2 = f2[b2], c2.srcset && s2.matchesMedia(c2.media) && (d2 = s2.supportsType(c2.type))) {
              "pending" === d2 && (c2 = d2), e2 = c2;
              break;
            }
          return e2;
        }, s2.parseSets = function(a2, b2, d2) {
          var e2, f2, g2, h3, i2 = b2 && "PICTURE" === b2.nodeName.toUpperCase(), j2 = a2[s2.ns];
          (j2.src === c || d2.src) && (j2.src = w2.call(a2, "src"), j2.src ? x.call(a2, C, j2.src) : y.call(a2, C)), (j2.srcset === c || d2.srcset || !s2.supSrcset || a2.srcset) && (e2 = w2.call(a2, "srcset"), j2.srcset = e2, h3 = true), j2.sets = [], i2 && (j2.pic = true, l(b2, j2.sets)), j2.srcset ? (f2 = { srcset: j2.srcset, sizes: w2.call(a2, "sizes") }, j2.sets.push(f2), g2 = (q || j2.src) && H.test(j2.srcset || ""), g2 || !j2.src || k(j2.src, f2) || f2.has1x || (f2.srcset += ", " + j2.src, f2.cands.push({ url: j2.src, d: 1, set: f2 }))) : j2.src && j2.sets.push({ srcset: j2.src, sizes: null }), j2.curCan = null, j2.curSrc = c, j2.supported = !(i2 || f2 && !s2.supSrcset || g2 && !s2.supSizes), h3 && s2.supSrcset && !j2.supported && (e2 ? (x.call(a2, D, e2), a2.srcset = "") : y.call(a2, D)), j2.supported && !j2.srcset && (!j2.src && a2.src || a2.src !== s2.makeUrl(j2.src)) && (null === j2.src ? a2.removeAttribute("src") : a2.src = j2.src), j2.parsed = true;
        }, s2.fillImg = function(a2, b2) {
          var c2, d2 = b2.reselect || b2.reevaluate;
          a2[s2.ns] || (a2[s2.ns] = {}), c2 = a2[s2.ns], (d2 || c2.evaled !== r) && ((!c2.parsed || b2.reevaluate) && s2.parseSets(a2, a2.parentNode, b2), c2.supported ? c2.evaled = r : h2(a2));
        }, s2.setupRun = function() {
          (!S || M || P !== a.devicePixelRatio) && f();
        }, s2.supPicture ? (ba = u, s2.fillImg = u) : !function() {
          var c2, d2 = a.attachEvent ? /d$|^c/ : /d$|^c|^i/, e2 = function() {
            var a2 = b.readyState || "";
            f2 = setTimeout(e2, "loading" === a2 ? 200 : 999), b.body && (s2.fillImgs(), c2 = c2 || d2.test(a2), c2 && clearTimeout(f2));
          }, f2 = setTimeout(e2, b.body ? 9 : 99), g2 = function(a2, b2) {
            var c3, d3, e3 = function() {
              var f3 = new Date() - d3;
              b2 > f3 ? c3 = setTimeout(e3, b2 - f3) : (c3 = null, a2());
            };
            return function() {
              d3 = new Date(), c3 || (c3 = setTimeout(e3, b2));
            };
          }, h3 = z.clientHeight, i2 = function() {
            M = Math.max(a.innerWidth || 0, z.clientWidth) !== Q.width || z.clientHeight !== h3, h3 = z.clientHeight, M && s2.fillImgs();
          };
          Z(a, "resize", g2(i2, 99)), Z(b, "readystatechange", e2);
        }(), s2.picturefill = ba, s2.fillImgs = ba, s2.teardownRun = u, ba._ = s2, a.picturefillCFG = { pf: s2, push: function(a2) {
          var b2 = a2.shift();
          "function" == typeof s2[b2] ? s2[b2].apply(s2, a2) : (B[b2] = a2[0], S && s2.fillImgs({ reselect: true }));
        } };
        for (; J && J.length; )
          a.picturefillCFG.push(J.shift());
        a.picturefill = ba, "object" == typeof module2 && "object" == typeof module2.exports ? module2.exports = ba : "function" == typeof define && define.amd && define("picturefill", function() {
          return ba;
        }), s2.supPicture || (A["image/webp"] = e("image/webp", "data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA=="));
      }(window, document);
    }
  });

  // dep-runtime/node_modules/jshashes/hashes.min.js
  var require_hashes_min = __commonJS({
    "dep-runtime/node_modules/jshashes/hashes.min.js"(exports2, module2) {
      (function() {
        var n2;
        function e(n3) {
          var e2, t2, r2 = "", o2 = -1, f2;
          if (n3 && n3.length) {
            f2 = n3.length;
            while ((o2 += 1) < f2) {
              e2 = n3.charCodeAt(o2);
              t2 = o2 + 1 < f2 ? n3.charCodeAt(o2 + 1) : 0;
              if (55296 <= e2 && e2 <= 56319 && 56320 <= t2 && t2 <= 57343) {
                e2 = 65536 + ((e2 & 1023) << 10) + (t2 & 1023);
                o2 += 1;
              }
              if (e2 <= 127) {
                r2 += String.fromCharCode(e2);
              } else if (e2 <= 2047) {
                r2 += String.fromCharCode(192 | e2 >>> 6 & 31, 128 | e2 & 63);
              } else if (e2 <= 65535) {
                r2 += String.fromCharCode(224 | e2 >>> 12 & 15, 128 | e2 >>> 6 & 63, 128 | e2 & 63);
              } else if (e2 <= 2097151) {
                r2 += String.fromCharCode(240 | e2 >>> 18 & 7, 128 | e2 >>> 12 & 63, 128 | e2 >>> 6 & 63, 128 | e2 & 63);
              }
            }
          }
          return r2;
        }
        function t(n3) {
          var e2, t2, r2, o2, f2, i2 = [], h3;
          e2 = t2 = r2 = o2 = f2 = 0;
          if (n3 && n3.length) {
            h3 = n3.length;
            n3 += "";
            while (e2 < h3) {
              r2 = n3.charCodeAt(e2);
              t2 += 1;
              if (r2 < 128) {
                i2[t2] = String.fromCharCode(r2);
                e2 += 1;
              } else if (r2 > 191 && r2 < 224) {
                o2 = n3.charCodeAt(e2 + 1);
                i2[t2] = String.fromCharCode((r2 & 31) << 6 | o2 & 63);
                e2 += 2;
              } else {
                o2 = n3.charCodeAt(e2 + 1);
                f2 = n3.charCodeAt(e2 + 2);
                i2[t2] = String.fromCharCode((r2 & 15) << 12 | (o2 & 63) << 6 | f2 & 63);
                e2 += 3;
              }
            }
          }
          return i2.join("");
        }
        function r(n3, e2) {
          var t2 = (n3 & 65535) + (e2 & 65535), r2 = (n3 >> 16) + (e2 >> 16) + (t2 >> 16);
          return r2 << 16 | t2 & 65535;
        }
        function o(n3, e2) {
          return n3 << e2 | n3 >>> 32 - e2;
        }
        function f(n3, e2) {
          var t2 = e2 ? "0123456789ABCDEF" : "0123456789abcdef", r2 = "", o2, f2 = 0, i2 = n3.length;
          for (; f2 < i2; f2 += 1) {
            o2 = n3.charCodeAt(f2);
            r2 += t2.charAt(o2 >>> 4 & 15) + t2.charAt(o2 & 15);
          }
          return r2;
        }
        function i(n3) {
          var e2, t2 = n3.length, r2 = "";
          for (e2 = 0; e2 < t2; e2 += 1) {
            r2 += String.fromCharCode(n3.charCodeAt(e2) & 255, n3.charCodeAt(e2) >>> 8 & 255);
          }
          return r2;
        }
        function h2(n3) {
          var e2, t2 = n3.length, r2 = "";
          for (e2 = 0; e2 < t2; e2 += 1) {
            r2 += String.fromCharCode(n3.charCodeAt(e2) >>> 8 & 255, n3.charCodeAt(e2) & 255);
          }
          return r2;
        }
        function u(n3) {
          var e2, t2 = n3.length * 32, r2 = "";
          for (e2 = 0; e2 < t2; e2 += 8) {
            r2 += String.fromCharCode(n3[e2 >> 5] >>> 24 - e2 % 32 & 255);
          }
          return r2;
        }
        function a(n3) {
          var e2, t2 = n3.length * 32, r2 = "";
          for (e2 = 0; e2 < t2; e2 += 8) {
            r2 += String.fromCharCode(n3[e2 >> 5] >>> e2 % 32 & 255);
          }
          return r2;
        }
        function c(n3) {
          var e2, t2 = n3.length * 8, r2 = Array(n3.length >> 2), o2 = r2.length;
          for (e2 = 0; e2 < o2; e2 += 1) {
            r2[e2] = 0;
          }
          for (e2 = 0; e2 < t2; e2 += 8) {
            r2[e2 >> 5] |= (n3.charCodeAt(e2 / 8) & 255) << e2 % 32;
          }
          return r2;
        }
        function l(n3) {
          var e2, t2 = n3.length * 8, r2 = Array(n3.length >> 2), o2 = r2.length;
          for (e2 = 0; e2 < o2; e2 += 1) {
            r2[e2] = 0;
          }
          for (e2 = 0; e2 < t2; e2 += 8) {
            r2[e2 >> 5] |= (n3.charCodeAt(e2 / 8) & 255) << 24 - e2 % 32;
          }
          return r2;
        }
        function D(n3, e2) {
          var t2 = e2.length, r2 = Array(), o2, f2, i2, h3, u2, a2, c2, l2;
          a2 = Array(Math.ceil(n3.length / 2));
          h3 = a2.length;
          for (o2 = 0; o2 < h3; o2 += 1) {
            a2[o2] = n3.charCodeAt(o2 * 2) << 8 | n3.charCodeAt(o2 * 2 + 1);
          }
          while (a2.length > 0) {
            u2 = Array();
            i2 = 0;
            for (o2 = 0; o2 < a2.length; o2 += 1) {
              i2 = (i2 << 16) + a2[o2];
              f2 = Math.floor(i2 / t2);
              i2 -= f2 * t2;
              if (u2.length > 0 || f2 > 0) {
                u2[u2.length] = f2;
              }
            }
            r2[r2.length] = i2;
            a2 = u2;
          }
          c2 = "";
          for (o2 = r2.length - 1; o2 >= 0; o2--) {
            c2 += e2.charAt(r2[o2]);
          }
          l2 = Math.ceil(n3.length * 8 / (Math.log(e2.length) / Math.log(2)));
          for (o2 = c2.length; o2 < l2; o2 += 1) {
            c2 = e2[0] + c2;
          }
          return c2;
        }
        function B(n3, e2) {
          var t2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", r2 = "", o2 = n3.length, f2, i2, h3;
          e2 = e2 || "=";
          for (f2 = 0; f2 < o2; f2 += 3) {
            h3 = n3.charCodeAt(f2) << 16 | (f2 + 1 < o2 ? n3.charCodeAt(f2 + 1) << 8 : 0) | (f2 + 2 < o2 ? n3.charCodeAt(f2 + 2) : 0);
            for (i2 = 0; i2 < 4; i2 += 1) {
              if (f2 * 8 + i2 * 6 > n3.length * 8) {
                r2 += e2;
              } else {
                r2 += t2.charAt(h3 >>> 6 * (3 - i2) & 63);
              }
            }
          }
          return r2;
        }
        n2 = { VERSION: "1.0.6", Base64: function() {
          var n3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", r2 = "=", o2 = false, f2 = true;
          this.encode = function(t2) {
            var o3, i2, h3, u2 = "", a2 = t2.length;
            r2 = r2 || "=";
            t2 = f2 ? e(t2) : t2;
            for (o3 = 0; o3 < a2; o3 += 3) {
              h3 = t2.charCodeAt(o3) << 16 | (o3 + 1 < a2 ? t2.charCodeAt(o3 + 1) << 8 : 0) | (o3 + 2 < a2 ? t2.charCodeAt(o3 + 2) : 0);
              for (i2 = 0; i2 < 4; i2 += 1) {
                if (o3 * 8 + i2 * 6 > a2 * 8) {
                  u2 += r2;
                } else {
                  u2 += n3.charAt(h3 >>> 6 * (3 - i2) & 63);
                }
              }
            }
            return u2;
          };
          this.decode = function(e2) {
            var o3, i2, h3, u2, a2, c2, l2, D2, B2, C, A = "", s2 = [];
            if (!e2) {
              return e2;
            }
            o3 = C = 0;
            e2 = e2.replace(new RegExp("\\" + r2, "gi"), "");
            do {
              a2 = n3.indexOf(e2.charAt(o3 += 1));
              c2 = n3.indexOf(e2.charAt(o3 += 1));
              l2 = n3.indexOf(e2.charAt(o3 += 1));
              D2 = n3.indexOf(e2.charAt(o3 += 1));
              B2 = a2 << 18 | c2 << 12 | l2 << 6 | D2;
              i2 = B2 >> 16 & 255;
              h3 = B2 >> 8 & 255;
              u2 = B2 & 255;
              C += 1;
              if (l2 === 64) {
                s2[C] = String.fromCharCode(i2);
              } else if (D2 === 64) {
                s2[C] = String.fromCharCode(i2, h3);
              } else {
                s2[C] = String.fromCharCode(i2, h3, u2);
              }
            } while (o3 < e2.length);
            A = s2.join("");
            A = f2 ? t(A) : A;
            return A;
          };
          this.setPad = function(n4) {
            r2 = n4 || r2;
            return this;
          };
          this.setTab = function(e2) {
            n3 = e2 || n3;
            return this;
          };
          this.setUTF8 = function(n4) {
            if (typeof n4 === "boolean") {
              f2 = n4;
            }
            return this;
          };
        }, CRC32: function(n3) {
          var t2 = 0, r2 = 0, o2 = 0, f2, i2, h3;
          n3 = e(n3);
          f2 = ["00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ", "79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ", "84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ", "63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ", "A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ", "51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ", "B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ", "06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ", "E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ", "12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ", "D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ", "33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ", "CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ", "9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ", "7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ", "806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ", "60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ", "AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ", "5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ", "B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ", "05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ", "F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ", "11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ", "D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ", "30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ", "C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D"].join("");
          t2 = t2 ^ -1;
          for (i2 = 0, h3 = n3.length; i2 < h3; i2 += 1) {
            o2 = (t2 ^ n3.charCodeAt(i2)) & 255;
            r2 = "0x" + f2.substr(o2 * 9, 8);
            t2 = t2 >>> 8 ^ r2;
          }
          return (t2 ^ -1) >>> 0;
        }, MD5: function(n3) {
          var t2 = n3 && typeof n3.uppercase === "boolean" ? n3.uppercase : false, i2 = n3 && typeof n3.pad === "string" ? n3.pad : "=", h3 = n3 && typeof n3.utf8 === "boolean" ? n3.utf8 : true;
          this.hex = function(n4) {
            return f(u2(n4, h3), t2);
          };
          this.b64 = function(n4) {
            return B(u2(n4), i2);
          };
          this.any = function(n4, e2) {
            return D(u2(n4, h3), e2);
          };
          this.raw = function(n4) {
            return u2(n4, h3);
          };
          this.hex_hmac = function(n4, e2) {
            return f(l2(n4, e2), t2);
          };
          this.b64_hmac = function(n4, e2) {
            return B(l2(n4, e2), i2);
          };
          this.any_hmac = function(n4, e2, t3) {
            return D(l2(n4, e2), t3);
          };
          this.vm_test = function() {
            return hex("abc").toLowerCase() === "900150983cd24fb0d6963f7d28e17f72";
          };
          this.setUpperCase = function(n4) {
            if (typeof n4 === "boolean") {
              t2 = n4;
            }
            return this;
          };
          this.setPad = function(n4) {
            i2 = n4 || i2;
            return this;
          };
          this.setUTF8 = function(n4) {
            if (typeof n4 === "boolean") {
              h3 = n4;
            }
            return this;
          };
          function u2(n4) {
            n4 = h3 ? e(n4) : n4;
            return a(C(c(n4), n4.length * 8));
          }
          function l2(n4, t3) {
            var r2, o2, f2, i3, u3;
            n4 = h3 ? e(n4) : n4;
            t3 = h3 ? e(t3) : t3;
            r2 = c(n4);
            if (r2.length > 16) {
              r2 = C(r2, n4.length * 8);
            }
            o2 = Array(16), f2 = Array(16);
            for (u3 = 0; u3 < 16; u3 += 1) {
              o2[u3] = r2[u3] ^ 909522486;
              f2[u3] = r2[u3] ^ 1549556828;
            }
            i3 = C(o2.concat(c(t3)), 512 + t3.length * 8);
            return a(C(f2.concat(i3), 512 + 128));
          }
          function C(n4, e2) {
            var t3, o2, f2, i3, h4, u3 = 1732584193, a2 = -271733879, c2 = -1732584194, l3 = 271733878;
            n4[e2 >> 5] |= 128 << e2 % 32;
            n4[(e2 + 64 >>> 9 << 4) + 14] = e2;
            for (t3 = 0; t3 < n4.length; t3 += 16) {
              o2 = u3;
              f2 = a2;
              i3 = c2;
              h4 = l3;
              u3 = s2(u3, a2, c2, l3, n4[t3 + 0], 7, -680876936);
              l3 = s2(l3, u3, a2, c2, n4[t3 + 1], 12, -389564586);
              c2 = s2(c2, l3, u3, a2, n4[t3 + 2], 17, 606105819);
              a2 = s2(a2, c2, l3, u3, n4[t3 + 3], 22, -1044525330);
              u3 = s2(u3, a2, c2, l3, n4[t3 + 4], 7, -176418897);
              l3 = s2(l3, u3, a2, c2, n4[t3 + 5], 12, 1200080426);
              c2 = s2(c2, l3, u3, a2, n4[t3 + 6], 17, -1473231341);
              a2 = s2(a2, c2, l3, u3, n4[t3 + 7], 22, -45705983);
              u3 = s2(u3, a2, c2, l3, n4[t3 + 8], 7, 1770035416);
              l3 = s2(l3, u3, a2, c2, n4[t3 + 9], 12, -1958414417);
              c2 = s2(c2, l3, u3, a2, n4[t3 + 10], 17, -42063);
              a2 = s2(a2, c2, l3, u3, n4[t3 + 11], 22, -1990404162);
              u3 = s2(u3, a2, c2, l3, n4[t3 + 12], 7, 1804603682);
              l3 = s2(l3, u3, a2, c2, n4[t3 + 13], 12, -40341101);
              c2 = s2(c2, l3, u3, a2, n4[t3 + 14], 17, -1502002290);
              a2 = s2(a2, c2, l3, u3, n4[t3 + 15], 22, 1236535329);
              u3 = w2(u3, a2, c2, l3, n4[t3 + 1], 5, -165796510);
              l3 = w2(l3, u3, a2, c2, n4[t3 + 6], 9, -1069501632);
              c2 = w2(c2, l3, u3, a2, n4[t3 + 11], 14, 643717713);
              a2 = w2(a2, c2, l3, u3, n4[t3 + 0], 20, -373897302);
              u3 = w2(u3, a2, c2, l3, n4[t3 + 5], 5, -701558691);
              l3 = w2(l3, u3, a2, c2, n4[t3 + 10], 9, 38016083);
              c2 = w2(c2, l3, u3, a2, n4[t3 + 15], 14, -660478335);
              a2 = w2(a2, c2, l3, u3, n4[t3 + 4], 20, -405537848);
              u3 = w2(u3, a2, c2, l3, n4[t3 + 9], 5, 568446438);
              l3 = w2(l3, u3, a2, c2, n4[t3 + 14], 9, -1019803690);
              c2 = w2(c2, l3, u3, a2, n4[t3 + 3], 14, -187363961);
              a2 = w2(a2, c2, l3, u3, n4[t3 + 8], 20, 1163531501);
              u3 = w2(u3, a2, c2, l3, n4[t3 + 13], 5, -1444681467);
              l3 = w2(l3, u3, a2, c2, n4[t3 + 2], 9, -51403784);
              c2 = w2(c2, l3, u3, a2, n4[t3 + 7], 14, 1735328473);
              a2 = w2(a2, c2, l3, u3, n4[t3 + 12], 20, -1926607734);
              u3 = F(u3, a2, c2, l3, n4[t3 + 5], 4, -378558);
              l3 = F(l3, u3, a2, c2, n4[t3 + 8], 11, -2022574463);
              c2 = F(c2, l3, u3, a2, n4[t3 + 11], 16, 1839030562);
              a2 = F(a2, c2, l3, u3, n4[t3 + 14], 23, -35309556);
              u3 = F(u3, a2, c2, l3, n4[t3 + 1], 4, -1530992060);
              l3 = F(l3, u3, a2, c2, n4[t3 + 4], 11, 1272893353);
              c2 = F(c2, l3, u3, a2, n4[t3 + 7], 16, -155497632);
              a2 = F(a2, c2, l3, u3, n4[t3 + 10], 23, -1094730640);
              u3 = F(u3, a2, c2, l3, n4[t3 + 13], 4, 681279174);
              l3 = F(l3, u3, a2, c2, n4[t3 + 0], 11, -358537222);
              c2 = F(c2, l3, u3, a2, n4[t3 + 3], 16, -722521979);
              a2 = F(a2, c2, l3, u3, n4[t3 + 6], 23, 76029189);
              u3 = F(u3, a2, c2, l3, n4[t3 + 9], 4, -640364487);
              l3 = F(l3, u3, a2, c2, n4[t3 + 12], 11, -421815835);
              c2 = F(c2, l3, u3, a2, n4[t3 + 15], 16, 530742520);
              a2 = F(a2, c2, l3, u3, n4[t3 + 2], 23, -995338651);
              u3 = E(u3, a2, c2, l3, n4[t3 + 0], 6, -198630844);
              l3 = E(l3, u3, a2, c2, n4[t3 + 7], 10, 1126891415);
              c2 = E(c2, l3, u3, a2, n4[t3 + 14], 15, -1416354905);
              a2 = E(a2, c2, l3, u3, n4[t3 + 5], 21, -57434055);
              u3 = E(u3, a2, c2, l3, n4[t3 + 12], 6, 1700485571);
              l3 = E(l3, u3, a2, c2, n4[t3 + 3], 10, -1894986606);
              c2 = E(c2, l3, u3, a2, n4[t3 + 10], 15, -1051523);
              a2 = E(a2, c2, l3, u3, n4[t3 + 1], 21, -2054922799);
              u3 = E(u3, a2, c2, l3, n4[t3 + 8], 6, 1873313359);
              l3 = E(l3, u3, a2, c2, n4[t3 + 15], 10, -30611744);
              c2 = E(c2, l3, u3, a2, n4[t3 + 6], 15, -1560198380);
              a2 = E(a2, c2, l3, u3, n4[t3 + 13], 21, 1309151649);
              u3 = E(u3, a2, c2, l3, n4[t3 + 4], 6, -145523070);
              l3 = E(l3, u3, a2, c2, n4[t3 + 11], 10, -1120210379);
              c2 = E(c2, l3, u3, a2, n4[t3 + 2], 15, 718787259);
              a2 = E(a2, c2, l3, u3, n4[t3 + 9], 21, -343485551);
              u3 = r(u3, o2);
              a2 = r(a2, f2);
              c2 = r(c2, i3);
              l3 = r(l3, h4);
            }
            return Array(u3, a2, c2, l3);
          }
          function A(n4, e2, t3, f2, i3, h4) {
            return r(o(r(r(e2, n4), r(f2, h4)), i3), t3);
          }
          function s2(n4, e2, t3, r2, o2, f2, i3) {
            return A(e2 & t3 | ~e2 & r2, n4, e2, o2, f2, i3);
          }
          function w2(n4, e2, t3, r2, o2, f2, i3) {
            return A(e2 & r2 | t3 & ~r2, n4, e2, o2, f2, i3);
          }
          function F(n4, e2, t3, r2, o2, f2, i3) {
            return A(e2 ^ t3 ^ r2, n4, e2, o2, f2, i3);
          }
          function E(n4, e2, t3, r2, o2, f2, i3) {
            return A(t3 ^ (e2 | ~r2), n4, e2, o2, f2, i3);
          }
        }, SHA1: function(n3) {
          var t2 = n3 && typeof n3.uppercase === "boolean" ? n3.uppercase : false, i2 = n3 && typeof n3.pad === "string" ? n3.pad : "=", h3 = n3 && typeof n3.utf8 === "boolean" ? n3.utf8 : true;
          this.hex = function(n4) {
            return f(a2(n4, h3), t2);
          };
          this.b64 = function(n4) {
            return B(a2(n4, h3), i2);
          };
          this.any = function(n4, e2) {
            return D(a2(n4, h3), e2);
          };
          this.raw = function(n4) {
            return a2(n4, h3);
          };
          this.hex_hmac = function(n4, e2) {
            return f(c2(n4, e2));
          };
          this.b64_hmac = function(n4, e2) {
            return B(c2(n4, e2), i2);
          };
          this.any_hmac = function(n4, e2, t3) {
            return D(c2(n4, e2), t3);
          };
          this.vm_test = function() {
            return hex("abc").toLowerCase() === "900150983cd24fb0d6963f7d28e17f72";
          };
          this.setUpperCase = function(n4) {
            if (typeof n4 === "boolean") {
              t2 = n4;
            }
            return this;
          };
          this.setPad = function(n4) {
            i2 = n4 || i2;
            return this;
          };
          this.setUTF8 = function(n4) {
            if (typeof n4 === "boolean") {
              h3 = n4;
            }
            return this;
          };
          function a2(n4) {
            n4 = h3 ? e(n4) : n4;
            return u(C(l(n4), n4.length * 8));
          }
          function c2(n4, t3) {
            var r2, o2, f2, i3, a3;
            n4 = h3 ? e(n4) : n4;
            t3 = h3 ? e(t3) : t3;
            r2 = l(n4);
            if (r2.length > 16) {
              r2 = C(r2, n4.length * 8);
            }
            o2 = Array(16), f2 = Array(16);
            for (i3 = 0; i3 < 16; i3 += 1) {
              o2[i3] = r2[i3] ^ 909522486;
              f2[i3] = r2[i3] ^ 1549556828;
            }
            a3 = C(o2.concat(l(t3)), 512 + t3.length * 8);
            return u(C(f2.concat(a3), 512 + 160));
          }
          function C(n4, e2) {
            var t3, f2, i3, h4, u2, a3, c3, l2, D2 = Array(80), B2 = 1732584193, C2 = -271733879, w2 = -1732584194, F = 271733878, E = -1009589776;
            n4[e2 >> 5] |= 128 << 24 - e2 % 32;
            n4[(e2 + 64 >> 9 << 4) + 15] = e2;
            for (t3 = 0; t3 < n4.length; t3 += 16) {
              h4 = B2;
              u2 = C2;
              a3 = w2;
              c3 = F;
              l2 = E;
              for (f2 = 0; f2 < 80; f2 += 1) {
                if (f2 < 16) {
                  D2[f2] = n4[t3 + f2];
                } else {
                  D2[f2] = o(D2[f2 - 3] ^ D2[f2 - 8] ^ D2[f2 - 14] ^ D2[f2 - 16], 1);
                }
                i3 = r(r(o(B2, 5), A(f2, C2, w2, F)), r(r(E, D2[f2]), s2(f2)));
                E = F;
                F = w2;
                w2 = o(C2, 30);
                C2 = B2;
                B2 = i3;
              }
              B2 = r(B2, h4);
              C2 = r(C2, u2);
              w2 = r(w2, a3);
              F = r(F, c3);
              E = r(E, l2);
            }
            return Array(B2, C2, w2, F, E);
          }
          function A(n4, e2, t3, r2) {
            if (n4 < 20) {
              return e2 & t3 | ~e2 & r2;
            }
            if (n4 < 40) {
              return e2 ^ t3 ^ r2;
            }
            if (n4 < 60) {
              return e2 & t3 | e2 & r2 | t3 & r2;
            }
            return e2 ^ t3 ^ r2;
          }
          function s2(n4) {
            return n4 < 20 ? 1518500249 : n4 < 40 ? 1859775393 : n4 < 60 ? -1894007588 : -899497514;
          }
        }, SHA256: function(n3) {
          var t2 = n3 && typeof n3.uppercase === "boolean" ? n3.uppercase : false, o2 = n3 && typeof n3.pad === "string" ? n3.pad : "=", i2 = n3 && typeof n3.utf8 === "boolean" ? n3.utf8 : true, h3;
          this.hex = function(n4) {
            return f(a2(n4, i2));
          };
          this.b64 = function(n4) {
            return B(a2(n4, i2), o2);
          };
          this.any = function(n4, e2) {
            return D(a2(n4, i2), e2);
          };
          this.raw = function(n4) {
            return a2(n4, i2);
          };
          this.hex_hmac = function(n4, e2) {
            return f(c2(n4, e2));
          };
          this.b64_hmac = function(n4, e2) {
            return B(c2(n4, e2), o2);
          };
          this.any_hmac = function(n4, e2, t3) {
            return D(c2(n4, e2), t3);
          };
          this.vm_test = function() {
            return hex("abc").toLowerCase() === "900150983cd24fb0d6963f7d28e17f72";
          };
          this.setUpperCase = function(n4) {
            if (typeof n4 === "boolean") {
              t2 = n4;
            }
            return this;
          };
          this.setPad = function(n4) {
            o2 = n4 || o2;
            return this;
          };
          this.setUTF8 = function(n4) {
            if (typeof n4 === "boolean") {
              i2 = n4;
            }
            return this;
          };
          function a2(n4, t3) {
            n4 = t3 ? e(n4) : n4;
            return u(m(l(n4), n4.length * 8));
          }
          function c2(n4, t3) {
            n4 = i2 ? e(n4) : n4;
            t3 = i2 ? e(t3) : t3;
            var r2, o3 = 0, f2 = l(n4), h4 = Array(16), a3 = Array(16);
            if (f2.length > 16) {
              f2 = m(f2, n4.length * 8);
            }
            for (; o3 < 16; o3 += 1) {
              h4[o3] = f2[o3] ^ 909522486;
              a3[o3] = f2[o3] ^ 1549556828;
            }
            r2 = m(h4.concat(l(t3)), 512 + t3.length * 8);
            return u(m(a3.concat(r2), 512 + 256));
          }
          function C(n4, e2) {
            return n4 >>> e2 | n4 << 32 - e2;
          }
          function A(n4, e2) {
            return n4 >>> e2;
          }
          function s2(n4, e2, t3) {
            return n4 & e2 ^ ~n4 & t3;
          }
          function w2(n4, e2, t3) {
            return n4 & e2 ^ n4 & t3 ^ e2 & t3;
          }
          function F(n4) {
            return C(n4, 2) ^ C(n4, 13) ^ C(n4, 22);
          }
          function E(n4) {
            return C(n4, 6) ^ C(n4, 11) ^ C(n4, 25);
          }
          function d(n4) {
            return C(n4, 7) ^ C(n4, 18) ^ A(n4, 3);
          }
          function g(n4) {
            return C(n4, 17) ^ C(n4, 19) ^ A(n4, 10);
          }
          function p(n4) {
            return C(n4, 28) ^ C(n4, 34) ^ C(n4, 39);
          }
          function y(n4) {
            return C(n4, 14) ^ C(n4, 18) ^ C(n4, 41);
          }
          function b(n4) {
            return C(n4, 1) ^ C(n4, 8) ^ A(n4, 7);
          }
          function v(n4) {
            return C(n4, 19) ^ C(n4, 61) ^ A(n4, 6);
          }
          h3 = [1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993, -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987, 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885, -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872, -1866530822, -1538233109, -1090935817, -965641998];
          function m(n4, e2) {
            var t3 = [1779033703, -1150833019, 1013904242, -1521486534, 1359893119, -1694144372, 528734635, 1541459225];
            var o3 = new Array(64);
            var f2, i3, u2, a3, c3, l2, D2, B2;
            var C2, A2, p2, y2;
            n4[e2 >> 5] |= 128 << 24 - e2 % 32;
            n4[(e2 + 64 >> 9 << 4) + 15] = e2;
            for (C2 = 0; C2 < n4.length; C2 += 16) {
              f2 = t3[0];
              i3 = t3[1];
              u2 = t3[2];
              a3 = t3[3];
              c3 = t3[4];
              l2 = t3[5];
              D2 = t3[6];
              B2 = t3[7];
              for (A2 = 0; A2 < 64; A2 += 1) {
                if (A2 < 16) {
                  o3[A2] = n4[A2 + C2];
                } else {
                  o3[A2] = r(r(r(g(o3[A2 - 2]), o3[A2 - 7]), d(o3[A2 - 15])), o3[A2 - 16]);
                }
                p2 = r(r(r(r(B2, E(c3)), s2(c3, l2, D2)), h3[A2]), o3[A2]);
                y2 = r(F(f2), w2(f2, i3, u2));
                B2 = D2;
                D2 = l2;
                l2 = c3;
                c3 = r(a3, p2);
                a3 = u2;
                u2 = i3;
                i3 = f2;
                f2 = r(p2, y2);
              }
              t3[0] = r(f2, t3[0]);
              t3[1] = r(i3, t3[1]);
              t3[2] = r(u2, t3[2]);
              t3[3] = r(a3, t3[3]);
              t3[4] = r(c3, t3[4]);
              t3[5] = r(l2, t3[5]);
              t3[6] = r(D2, t3[6]);
              t3[7] = r(B2, t3[7]);
            }
            return t3;
          }
        }, SHA512: function(n3) {
          var t2 = n3 && typeof n3.uppercase === "boolean" ? n3.uppercase : false, r2 = n3 && typeof n3.pad === "string" ? n3.pad : "=", o2 = n3 && typeof n3.utf8 === "boolean" ? n3.utf8 : true, i2;
          this.hex = function(n4) {
            return f(h3(n4));
          };
          this.b64 = function(n4) {
            return B(h3(n4), r2);
          };
          this.any = function(n4, e2) {
            return D(h3(n4), e2);
          };
          this.raw = function(n4) {
            return h3(n4, o2);
          };
          this.hex_hmac = function(n4, e2) {
            return f(a2(n4, e2));
          };
          this.b64_hmac = function(n4, e2) {
            return B(a2(n4, e2), r2);
          };
          this.any_hmac = function(n4, e2, t3) {
            return D(a2(n4, e2), t3);
          };
          this.vm_test = function() {
            return hex("abc").toLowerCase() === "900150983cd24fb0d6963f7d28e17f72";
          };
          this.setUpperCase = function(n4) {
            if (typeof n4 === "boolean") {
              t2 = n4;
            }
            return this;
          };
          this.setPad = function(n4) {
            r2 = n4 || r2;
            return this;
          };
          this.setUTF8 = function(n4) {
            if (typeof n4 === "boolean") {
              o2 = n4;
            }
            return this;
          };
          function h3(n4) {
            n4 = o2 ? e(n4) : n4;
            return u(c2(l(n4), n4.length * 8));
          }
          function a2(n4, t3) {
            n4 = o2 ? e(n4) : n4;
            t3 = o2 ? e(t3) : t3;
            var r3, f2 = 0, i3 = l(n4), h4 = Array(32), a3 = Array(32);
            if (i3.length > 32) {
              i3 = c2(i3, n4.length * 8);
            }
            for (; f2 < 32; f2 += 1) {
              h4[f2] = i3[f2] ^ 909522486;
              a3[f2] = i3[f2] ^ 1549556828;
            }
            r3 = c2(h4.concat(l(t3)), 1024 + t3.length * 8);
            return u(c2(a3.concat(r3), 1024 + 512));
          }
          function c2(n4, e2) {
            var t3, r3, o3, f2 = new Array(80), h4 = new Array(16), u2 = [new C(1779033703, -205731576), new C(-1150833019, -2067093701), new C(1013904242, -23791573), new C(-1521486534, 1595750129), new C(1359893119, -1377402159), new C(-1694144372, 725511199), new C(528734635, -79577749), new C(1541459225, 327033209)], a3 = new C(0, 0), c3 = new C(0, 0), l2 = new C(0, 0), D2 = new C(0, 0), B2 = new C(0, 0), p = new C(0, 0), y = new C(0, 0), b = new C(0, 0), v = new C(0, 0), m = new C(0, 0), x = new C(0, 0), _2 = new C(0, 0), S = new C(0, 0), U = new C(0, 0), j = new C(0, 0), M = new C(0, 0), T = new C(0, 0);
            if (i2 === void 0) {
              i2 = [new C(1116352408, -685199838), new C(1899447441, 602891725), new C(-1245643825, -330482897), new C(-373957723, -2121671748), new C(961987163, -213338824), new C(1508970993, -1241133031), new C(-1841331548, -1357295717), new C(-1424204075, -630357736), new C(-670586216, -1560083902), new C(310598401, 1164996542), new C(607225278, 1323610764), new C(1426881987, -704662302), new C(1925078388, -226784913), new C(-2132889090, 991336113), new C(-1680079193, 633803317), new C(-1046744716, -815192428), new C(-459576895, -1628353838), new C(-272742522, 944711139), new C(264347078, -1953704523), new C(604807628, 2007800933), new C(770255983, 1495990901), new C(1249150122, 1856431235), new C(1555081692, -1119749164), new C(1996064986, -2096016459), new C(-1740746414, -295247957), new C(-1473132947, 766784016), new C(-1341970488, -1728372417), new C(-1084653625, -1091629340), new C(-958395405, 1034457026), new C(-710438585, -1828018395), new C(113926993, -536640913), new C(338241895, 168717936), new C(666307205, 1188179964), new C(773529912, 1546045734), new C(1294757372, 1522805485), new C(1396182291, -1651133473), new C(1695183700, -1951439906), new C(1986661051, 1014477480), new C(-2117940946, 1206759142), new C(-1838011259, 344077627), new C(-1564481375, 1290863460), new C(-1474664885, -1136513023), new C(-1035236496, -789014639), new C(-949202525, 106217008), new C(-778901479, -688958952), new C(-694614492, 1432725776), new C(-200395387, 1467031594), new C(275423344, 851169720), new C(430227734, -1194143544), new C(506948616, 1363258195), new C(659060556, -544281703), new C(883997877, -509917016), new C(958139571, -976659869), new C(1322822218, -482243893), new C(1537002063, 2003034995), new C(1747873779, -692930397), new C(1955562222, 1575990012), new C(2024104815, 1125592928), new C(-2067236844, -1578062990), new C(-1933114872, 442776044), new C(-1866530822, 593698344), new C(-1538233109, -561857047), new C(-1090935817, -1295615723), new C(-965641998, -479046869), new C(-903397682, -366583396), new C(-779700025, 566280711), new C(-354779690, -840897762), new C(-176337025, -294727304), new C(116418474, 1914138554), new C(174292421, -1563912026), new C(289380356, -1090974290), new C(460393269, 320620315), new C(685471733, 587496836), new C(852142971, 1086792851), new C(1017036298, 365543100), new C(1126000580, -1676669620), new C(1288033470, -885112138), new C(1501505948, -60457430), new C(1607167915, 987167468), new C(1816402316, 1246189591)];
            }
            for (r3 = 0; r3 < 80; r3 += 1) {
              f2[r3] = new C(0, 0);
            }
            n4[e2 >> 5] |= 128 << 24 - (e2 & 31);
            n4[(e2 + 128 >> 10 << 5) + 31] = e2;
            o3 = n4.length;
            for (r3 = 0; r3 < o3; r3 += 32) {
              A(l2, u2[0]);
              A(D2, u2[1]);
              A(B2, u2[2]);
              A(p, u2[3]);
              A(y, u2[4]);
              A(b, u2[5]);
              A(v, u2[6]);
              A(m, u2[7]);
              for (t3 = 0; t3 < 16; t3 += 1) {
                f2[t3].h = n4[r3 + 2 * t3];
                f2[t3].l = n4[r3 + 2 * t3 + 1];
              }
              for (t3 = 16; t3 < 80; t3 += 1) {
                s2(j, f2[t3 - 2], 19);
                w2(M, f2[t3 - 2], 29);
                F(T, f2[t3 - 2], 6);
                _2.l = j.l ^ M.l ^ T.l;
                _2.h = j.h ^ M.h ^ T.h;
                s2(j, f2[t3 - 15], 1);
                s2(M, f2[t3 - 15], 8);
                F(T, f2[t3 - 15], 7);
                x.l = j.l ^ M.l ^ T.l;
                x.h = j.h ^ M.h ^ T.h;
                d(f2[t3], _2, f2[t3 - 7], x, f2[t3 - 16]);
              }
              for (t3 = 0; t3 < 80; t3 += 1) {
                S.l = y.l & b.l ^ ~y.l & v.l;
                S.h = y.h & b.h ^ ~y.h & v.h;
                s2(j, y, 14);
                s2(M, y, 18);
                w2(T, y, 9);
                _2.l = j.l ^ M.l ^ T.l;
                _2.h = j.h ^ M.h ^ T.h;
                s2(j, l2, 28);
                w2(M, l2, 2);
                w2(T, l2, 7);
                x.l = j.l ^ M.l ^ T.l;
                x.h = j.h ^ M.h ^ T.h;
                U.l = l2.l & D2.l ^ l2.l & B2.l ^ D2.l & B2.l;
                U.h = l2.h & D2.h ^ l2.h & B2.h ^ D2.h & B2.h;
                g(a3, m, _2, S, i2[t3], f2[t3]);
                E(c3, x, U);
                A(m, v);
                A(v, b);
                A(b, y);
                E(y, p, a3);
                A(p, B2);
                A(B2, D2);
                A(D2, l2);
                E(l2, a3, c3);
              }
              E(u2[0], u2[0], l2);
              E(u2[1], u2[1], D2);
              E(u2[2], u2[2], B2);
              E(u2[3], u2[3], p);
              E(u2[4], u2[4], y);
              E(u2[5], u2[5], b);
              E(u2[6], u2[6], v);
              E(u2[7], u2[7], m);
            }
            for (r3 = 0; r3 < 8; r3 += 1) {
              h4[2 * r3] = u2[r3].h;
              h4[2 * r3 + 1] = u2[r3].l;
            }
            return h4;
          }
          function C(n4, e2) {
            this.h = n4;
            this.l = e2;
          }
          function A(n4, e2) {
            n4.h = e2.h;
            n4.l = e2.l;
          }
          function s2(n4, e2, t3) {
            n4.l = e2.l >>> t3 | e2.h << 32 - t3;
            n4.h = e2.h >>> t3 | e2.l << 32 - t3;
          }
          function w2(n4, e2, t3) {
            n4.l = e2.h >>> t3 | e2.l << 32 - t3;
            n4.h = e2.l >>> t3 | e2.h << 32 - t3;
          }
          function F(n4, e2, t3) {
            n4.l = e2.l >>> t3 | e2.h << 32 - t3;
            n4.h = e2.h >>> t3;
          }
          function E(n4, e2, t3) {
            var r3 = (e2.l & 65535) + (t3.l & 65535);
            var o3 = (e2.l >>> 16) + (t3.l >>> 16) + (r3 >>> 16);
            var f2 = (e2.h & 65535) + (t3.h & 65535) + (o3 >>> 16);
            var i3 = (e2.h >>> 16) + (t3.h >>> 16) + (f2 >>> 16);
            n4.l = r3 & 65535 | o3 << 16;
            n4.h = f2 & 65535 | i3 << 16;
          }
          function d(n4, e2, t3, r3, o3) {
            var f2 = (e2.l & 65535) + (t3.l & 65535) + (r3.l & 65535) + (o3.l & 65535);
            var i3 = (e2.l >>> 16) + (t3.l >>> 16) + (r3.l >>> 16) + (o3.l >>> 16) + (f2 >>> 16);
            var h4 = (e2.h & 65535) + (t3.h & 65535) + (r3.h & 65535) + (o3.h & 65535) + (i3 >>> 16);
            var u2 = (e2.h >>> 16) + (t3.h >>> 16) + (r3.h >>> 16) + (o3.h >>> 16) + (h4 >>> 16);
            n4.l = f2 & 65535 | i3 << 16;
            n4.h = h4 & 65535 | u2 << 16;
          }
          function g(n4, e2, t3, r3, o3, f2) {
            var i3 = (e2.l & 65535) + (t3.l & 65535) + (r3.l & 65535) + (o3.l & 65535) + (f2.l & 65535), h4 = (e2.l >>> 16) + (t3.l >>> 16) + (r3.l >>> 16) + (o3.l >>> 16) + (f2.l >>> 16) + (i3 >>> 16), u2 = (e2.h & 65535) + (t3.h & 65535) + (r3.h & 65535) + (o3.h & 65535) + (f2.h & 65535) + (h4 >>> 16), a3 = (e2.h >>> 16) + (t3.h >>> 16) + (r3.h >>> 16) + (o3.h >>> 16) + (f2.h >>> 16) + (u2 >>> 16);
            n4.l = i3 & 65535 | h4 << 16;
            n4.h = u2 & 65535 | a3 << 16;
          }
        }, RMD160: function(n3) {
          var t2 = n3 && typeof n3.uppercase === "boolean" ? n3.uppercase : false, i2 = n3 && typeof n3.pad === "string" ? n3.pa : "=", h3 = n3 && typeof n3.utf8 === "boolean" ? n3.utf8 : true, u2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13], a2 = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11], l2 = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6], C = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];
          this.hex = function(n4) {
            return f(A(n4, h3));
          };
          this.b64 = function(n4) {
            return B(A(n4, h3), i2);
          };
          this.any = function(n4, e2) {
            return D(A(n4, h3), e2);
          };
          this.raw = function(n4) {
            return A(n4, h3);
          };
          this.hex_hmac = function(n4, e2) {
            return f(s2(n4, e2));
          };
          this.b64_hmac = function(n4, e2) {
            return B(s2(n4, e2), i2);
          };
          this.any_hmac = function(n4, e2, t3) {
            return D(s2(n4, e2), t3);
          };
          this.vm_test = function() {
            return hex("abc").toLowerCase() === "900150983cd24fb0d6963f7d28e17f72";
          };
          this.setUpperCase = function(n4) {
            if (typeof n4 === "boolean") {
              t2 = n4;
            }
            return this;
          };
          this.setPad = function(n4) {
            if (typeof n4 !== "undefined") {
              i2 = n4;
            }
            return this;
          };
          this.setUTF8 = function(n4) {
            if (typeof n4 === "boolean") {
              h3 = n4;
            }
            return this;
          };
          function A(n4) {
            n4 = h3 ? e(n4) : n4;
            return w2(F(c(n4), n4.length * 8));
          }
          function s2(n4, t3) {
            n4 = h3 ? e(n4) : n4;
            t3 = h3 ? e(t3) : t3;
            var r2, o2, f2 = c(n4), i3 = Array(16), u3 = Array(16);
            if (f2.length > 16) {
              f2 = F(f2, n4.length * 8);
            }
            for (r2 = 0; r2 < 16; r2 += 1) {
              i3[r2] = f2[r2] ^ 909522486;
              u3[r2] = f2[r2] ^ 1549556828;
            }
            o2 = F(i3.concat(c(t3)), 512 + t3.length * 8);
            return w2(F(u3.concat(o2), 512 + 160));
          }
          function w2(n4) {
            var e2, t3 = "", r2 = n4.length * 32;
            for (e2 = 0; e2 < r2; e2 += 8) {
              t3 += String.fromCharCode(n4[e2 >> 5] >>> e2 % 32 & 255);
            }
            return t3;
          }
          function F(n4, e2) {
            var t3, f2, i3, h4, c2 = 1732584193, D2 = 4023233417, B2 = 2562383102, A2 = 271733878, s3 = 3285377520, w3, F2, p, y, b, v, m, x, _2, S;
            n4[e2 >> 5] |= 128 << e2 % 32;
            n4[(e2 + 64 >>> 9 << 4) + 14] = e2;
            h4 = n4.length;
            for (i3 = 0; i3 < h4; i3 += 16) {
              w3 = v = c2;
              F2 = m = D2;
              p = x = B2;
              y = _2 = A2;
              b = S = s3;
              for (f2 = 0; f2 <= 79; f2 += 1) {
                t3 = r(w3, E(f2, F2, p, y));
                t3 = r(t3, n4[i3 + u2[f2]]);
                t3 = r(t3, d(f2));
                t3 = r(o(t3, l2[f2]), b);
                w3 = b;
                b = y;
                y = o(p, 10);
                p = F2;
                F2 = t3;
                t3 = r(v, E(79 - f2, m, x, _2));
                t3 = r(t3, n4[i3 + a2[f2]]);
                t3 = r(t3, g(f2));
                t3 = r(o(t3, C[f2]), S);
                v = S;
                S = _2;
                _2 = o(x, 10);
                x = m;
                m = t3;
              }
              t3 = r(D2, r(p, _2));
              D2 = r(B2, r(y, S));
              B2 = r(A2, r(b, v));
              A2 = r(s3, r(w3, m));
              s3 = r(c2, r(F2, x));
              c2 = t3;
            }
            return [c2, D2, B2, A2, s3];
          }
          function E(n4, e2, t3, r2) {
            return 0 <= n4 && n4 <= 15 ? e2 ^ t3 ^ r2 : 16 <= n4 && n4 <= 31 ? e2 & t3 | ~e2 & r2 : 32 <= n4 && n4 <= 47 ? (e2 | ~t3) ^ r2 : 48 <= n4 && n4 <= 63 ? e2 & r2 | t3 & ~r2 : 64 <= n4 && n4 <= 79 ? e2 ^ (t3 | ~r2) : "rmd160_f: j out of range";
          }
          function d(n4) {
            return 0 <= n4 && n4 <= 15 ? 0 : 16 <= n4 && n4 <= 31 ? 1518500249 : 32 <= n4 && n4 <= 47 ? 1859775393 : 48 <= n4 && n4 <= 63 ? 2400959708 : 64 <= n4 && n4 <= 79 ? 2840853838 : "rmd160_K1: j out of range";
          }
          function g(n4) {
            return 0 <= n4 && n4 <= 15 ? 1352829926 : 16 <= n4 && n4 <= 31 ? 1548603684 : 32 <= n4 && n4 <= 47 ? 1836072691 : 48 <= n4 && n4 <= 63 ? 2053994217 : 64 <= n4 && n4 <= 79 ? 0 : "rmd160_K2: j out of range";
          }
        } };
        (function(e2, t2) {
          var r2 = false;
          if (typeof exports2 === "object") {
            r2 = exports2;
            if (exports2 && typeof global === "object" && global && global === global.global) {
              e2 = global;
            }
          }
          if (typeof define === "function" && typeof define.amd === "object" && define.amd) {
            define(function() {
              return n2;
            });
          } else if (r2) {
            if (typeof module2 === "object" && module2 && module2.exports === r2) {
              module2.exports = n2;
            } else {
              r2.Hashes = n2;
            }
          } else {
            e2.Hashes = n2;
          }
        })(this);
      })();
    }
  });

  // Assets/Toyota/MainSite/vendor_manual/rslider/roundslider.min.js
  var require_roundslider_min = __commonJS({
    "Assets/Toyota/MainSite/vendor_manual/rslider/roundslider.min.js"(exports, module) {
      (function($, window, undefined) {
        "use strict";
        function $proxy(n2, t) {
          return typeof $.proxy == "function" ? $.proxy(n2, t) : function(i) {
            n2.call(t, i);
          };
        }
        function $data(n2, t, i) {
          return typeof $.data == "function" ? $.data(n2, t, i) : i ? void 0 : $(n2).hasClass("rs-control");
        }
        function $isPlainObject(n2) {
          if (typeof $.isPlainObject == "function")
            return $.isPlainObject(n2);
          var t = JSON.stringify(n2);
          return typeof n2 == "object" && n2.length === undefined && t.length > 2 && t.substr(0, 1) === "{" && t.substr(t.length - 1) === "}";
        }
        function isNumber(n2) {
          return n2 = parseFloat(n2), typeof n2 == "number" && !isNaN(n2);
        }
        function createElement(n2) {
          var t = n2.split(".");
          return $(document.createElement(t[0])).addClass(t[1] || "");
        }
        function getdistance(n2, t) {
          return Math.sqrt((n2.x - t.x) * (n2.x - t.x) + (n2.y - t.y) * (n2.y - t.y));
        }
        function setTransform(n2, t) {
          return n2.css("-webkit-transform", "rotate(" + t + "deg)"), n2.css("-moz-transform", "rotate(" + t + "deg)"), n2.css("-ms-transform", "rotate(" + t + "deg)"), n2.css("-o-transform", "rotate(" + t + "deg)"), n2.css("transform", "rotate(" + t + "deg)"), n2;
        }
        function RoundSlider(n2, t) {
          n2.id && (window[n2.id] = this), this.control = $(n2), this.options = $.extend({}, this.defaults, t), this._raise("beforeCreate") !== false ? (this._init(), this._raise("create")) : this._removeData();
        }
        function CreateRoundSlider(n2, t) {
          for (var i, r, u = 0; u < this.length; u++)
            if (i = this[u], r = $data(i, pluginName), r) {
              if ($isPlainObject(n2))
                typeof r.option == "function" ? r.option(n2) : i.id && window[i.id] && typeof window[i.id].option == "function" && window[i.id].option(n2);
              else if (typeof n2 == "string" && typeof r[n2] == "function") {
                if ((n2 === "option" || n2.indexOf("get") === 0) && t[2] === undefined)
                  return r[n2](t[1]);
                r[n2](t[1], t[2]);
              }
            } else
              $data(i, pluginName, new RoundSlider(i, n2));
          return this;
        }
        var pluginName = "roundSlider";
        $.fn[pluginName] = function(n2) {
          return CreateRoundSlider.call(this, n2, arguments);
        }, RoundSlider.prototype = { pluginName, version: "1.3", options: {}, defaults: { min: 0, max: 100, step: 1, value: null, radius: 85, width: 18, handleSize: "+0", startAngle: 0, endAngle: "+360", animation: true, showTooltip: true, editableTooltip: true, readOnly: false, disabled: false, keyboardAction: true, mouseScrollAction: false, lineCap: "square", sliderType: "default", circleShape: "full", handleShape: "round", beforeCreate: null, create: null, start: null, drag: null, change: null, stop: null, tooltipFormat: null }, _props: function() {
          return { numberType: ["min", "max", "step", "radius", "width", "startAngle"], booleanType: ["animation", "showTooltip", "editableTooltip", "readOnly", "disabled", "keyboardAction", "mouseScrollAction"], stringType: ["sliderType", "circleShape", "handleShape", "lineCap"] };
        }, control: null, _init: function() {
          var t, n2;
          this._isBrowserSupport = this._isBrowserSupported(), this._isKO = false, this._isAngular = false, this.control.is("input") && (this._isInputType = true, this._hiddenField = this.control, this.control = createElement("div"), this.control.insertAfter(this._hiddenField), this.options.value = this._hiddenField.val() || this.options.value, t = this, this._checkKO() && setTimeout(function() {
            t._checkKO();
          }, 1), this._checkAngular()), this._bindOnDrag = false, n2 = this._dataElement().attr("data-updateon"), typeof n2 == "string" ? n2 == "drag" && (this._bindOnDrag = true) : this._isAngular && (this._bindOnDrag = true), this._onInit();
        }, _onInit: function() {
          this._initialize(), this._update(), this._render();
        }, _initialize: function() {
          this._isBrowserSupport && (this._isReadOnly = false, this._checkDataType(), this._refreshCircleShape());
        }, _render: function() {
          if (this.container = createElement("div.rs-container"), this.innerContainer = createElement("div.rs-inner-container"), this.block = createElement("div.rs-block rs-outer rs-border"), this.container.append(this.innerContainer.append(this.block)), this.control.addClass("rs-control").empty().append(this.container), this._setRadius(), this._isBrowserSupport)
            this._createLayers(), this._setProperties(), this._setValue(), this._updateTooltipPos(), this._bindControlEvents("_bind"), this._checkIE();
          else {
            var n2 = createElement("div.rs-msg");
            n2.html(typeof this._throwError == "function" ? this._throwError() : this._throwError), this.control.empty().addClass("rs-error").append(n2), this._isInputType && this.control.append(this._dataElement());
          }
        }, _update: function() {
          this._validateSliderType(), this._updateStartEnd(), this._validateStartEnd(), this._handle1 = this._handle2 = this._handleDefaults(), this._analyzeModelValue(), this._validateModelValue();
        }, _createLayers: function() {
          var i = this.options.width, t = this._start, n2;
          n2 = createElement("div.rs-path rs-transition"), this._rangeSlider || this._showRange ? (this.block1 = n2.clone().addClass("rs-range-color").rsRotate(t), this.block2 = n2.clone().addClass("rs-range-color").css("opacity", "0").rsRotate(t), this.block3 = n2.clone().addClass("rs-path-color").rsRotate(t), this.block4 = n2.addClass("rs-path-color").css({ opacity: "1", "z-index": "1" }).rsRotate(t - 180), this.block.append(this.block1, this.block2, this.block3, this.block4).addClass("rs-split")) : this.block.append(n2.addClass("rs-path-color")), this.lastBlock = createElement("span.rs-block").css({ padding: i }), this.innerBlock = createElement("div.rs-inner rs-bg-color rs-border"), this.lastBlock.append(this.innerBlock), this.block.append(this.lastBlock), this._appendHandle(), this._appendOverlay(), this._appendHiddenField();
        }, _setProperties: function() {
          this._updatePre(), this._setHandleShape(), this._addAnimation(), this._appendTooltip(), this.options.showTooltip || this._removeTooltip(), this.options.disabled ? this.disable() : this.options.readOnly && this._readOnly(true), this.options.mouseScrollAction && this._bindScrollEvents("_bind");
        }, _updatePre: function() {
          this._prechange = this._predrag = this.options.value;
        }, _setValue: function() {
          if (this._rangeSlider)
            this._setHandleValue(1), this._setHandleValue(2);
          else {
            this._showRange && this._setHandleValue(1);
            var n2 = this.options.sliderType == "default" ? this._active || 1 : parseFloat(this.bar.children().attr("index"));
            this._setHandleValue(n2);
          }
        }, _appendTooltip: function() {
          this.container.children(".rs-tooltip").length === 0 && (this.tooltip = createElement("span.rs-tooltip rs-tooltip-text"), this.container.append(this.tooltip), this._tooltipEditable(), this._updateTooltip());
        }, _removeTooltip: function() {
          this.container.children(".rs-tooltip").length != 0 && this.tooltip && this.tooltip.remove();
        }, _tooltipEditable: function() {
          if (this.tooltip && this.options.showTooltip) {
            var n2;
            this.options.editableTooltip ? (this.tooltip.addClass("edit"), n2 = "_bind") : (this.tooltip.removeClass("edit"), n2 = "_unbind"), this[n2](this.tooltip, "click", this._editTooltip);
          }
        }, _editTooltip: function() {
          if (this.tooltip.hasClass("edit") && !this._isReadOnly) {
            var n2 = parseFloat(this.tooltip.css("border-left-width")) * 2;
            this.input = createElement("input.rs-input rs-tooltip-text").css({ height: this.tooltip.outerHeight() - n2, width: this.tooltip.outerWidth() - n2 }), this.tooltip.html(this.input).removeClass("edit").addClass("hover"), this.input.focus().val(this._getTooltipValue(true)), this._bind(this.input, "blur", this._focusOut), this._bind(this.input, "change", this._focusOut);
          }
        }, _focusOut: function(n2) {
          n2.type == "change" ? (this.options.value = this.input.val().replace("-", ","), this._analyzeModelValue(), this._validateModelValue(), this._setValue(), this.input.val(this._getTooltipValue(true))) : (this.tooltip.addClass("edit").removeClass("hover"), this._updateTooltip()), this._raiseEvent("change");
        }, _setHandleShape: function() {
          var n2 = this.options.handleShape;
          this._handles().removeClass("rs-handle-dot rs-handle-square"), n2 == "dot" ? this._handles().addClass("rs-handle-dot") : n2 == "square" ? this._handles().addClass("rs-handle-square") : this.options.handleShape = this.defaults.handleShape;
        }, _setHandleValue: function(n2) {
          this._active = n2;
          var t = this["_handle" + n2];
          this.options.sliderType != "min-range" && (this.bar = this._activeHandleBar()), this._changeSliderValue(t.value, t.angle);
        }, _setAnimation: function() {
          this.options.animation ? this._addAnimation() : this._removeAnimation();
        }, _addAnimation: function() {
          this.options.animation && this.control.addClass("rs-animation");
        }, _removeAnimation: function() {
          this.control.removeClass("rs-animation");
        }, _setRadius: function() {
          var t = this.options.radius, i = t * 2, n2 = this.options.circleShape, r = i, u = i, f, e;
          if (this.container.removeClass().addClass("rs-container"), n2.indexOf("half") === 0) {
            switch (n2) {
              case "half-top":
              case "half-bottom":
                r = t, u = i;
                break;
              case "half-left":
              case "half-right":
                r = i, u = t;
            }
            this.container.addClass(n2.replace("half-", "") + " half");
          } else
            n2.indexOf("quarter") === 0 ? (r = u = t, f = n2.split("-"), this.container.addClass(f[0] + " " + f[1] + " " + f[2])) : this.container.addClass("full " + n2);
          e = { height: r, width: u }, this.control.css(e), this.container.css(e);
        }, _border: function(n2) {
          return n2 ? parseFloat(this._startLine.children().css("border-bottom-width")) : parseFloat(this.block.css("border-top-width")) * 2;
        }, _appendHandle: function() {
          (this._rangeSlider || !this._showRange) && this._createHandle(1), (this._rangeSlider || this._showRange) && this._createHandle(2), this._startLine = this._addSeperator(this._start, "rs-start"), this._endLine = this._addSeperator(this._start + this._end, "rs-end"), this._refreshSeperator();
        }, _addSeperator: function(n2, t) {
          var r = createElement("span.rs-seperator rs-border"), u = this.options.width, f = this._border(), i = createElement("span.rs-bar rs-transition " + t).append(r).rsRotate(n2);
          return this.container.append(i), i;
        }, _refreshSeperator: function() {
          var i = this._startLine.add(this._endLine), r = i.children().removeAttr("style"), n2 = this.options, u = n2.width, f = this._border(), t = u + f;
          n2.lineCap == "round" && n2.circleShape != "full" ? (i.addClass("rs-rounded"), r.css({ width: t, height: t / 2 + 1 }), this._startLine.children().css("margin-top", -1).addClass(n2.sliderType == "min-range" ? "rs-range-color" : "rs-path-color"), this._endLine.children().css("margin-top", t / -2).addClass("rs-path-color")) : (i.removeClass("rs-rounded"), r.css({ width: t, "margin-top": this._border(true) / -2 }).removeClass("rs-range-color rs-path-color"));
        }, _updateSeperator: function() {
          this._startLine.rsRotate(this._start), this._endLine.rsRotate(this._start + this._end);
        }, _createHandle: function(n2) {
          var t = createElement("div.rs-handle rs-move"), u = this.options, f, r;
          (f = u.handleShape) != "round" && t.addClass("rs-handle-" + f), t.attr({ index: n2, tabIndex: "0" });
          var i = this._dataElement()[0].id, i = i ? i + "_" : "", e = i + "handle" + (u.sliderType == "range" ? "_" + (n2 == 1 ? "start" : "end") : "");
          return t.attr({ role: "slider", "aria-label": e }), r = createElement("div.rs-bar rs-transition").css("z-index", "7").append(t).rsRotate(this._start), r.addClass(u.sliderType == "range" && n2 == 2 ? "rs-second" : "rs-first"), this.container.append(r), this._refreshHandle(), this.bar = r, this._active = n2, n2 != 1 && n2 != 2 && (this["_handle" + n2] = this._handleDefaults()), this._bind(t, "focus", this._handleFocus), this._bind(t, "blur", this._handleBlur), t;
        }, _refreshHandle: function() {
          var hSize = this.options.handleSize, h, w, isSquare = true, s, diff;
          if (typeof hSize == "string" && isNumber(hSize))
            if (hSize.charAt(0) === "+" || hSize.charAt(0) === "-")
              try {
                hSize = eval(this.options.width + hSize.charAt(0) + Math.abs(parseFloat(hSize)));
              } catch (e) {
                console.warn(e);
              }
            else
              hSize.indexOf(",") && (s = hSize.split(","), isNumber(s[0]) && isNumber(s[1]) && (w = parseFloat(s[0]), h = parseFloat(s[1]), isSquare = false));
          isSquare && (h = w = isNumber(hSize) ? parseFloat(hSize) : this.options.width), diff = (this.options.width + this._border() - w) / 2, this._handles().css({ height: h, width: w, margin: -h / 2 + "px 0 0 " + diff + "px" });
        }, _handleDefaults: function() {
          return { angle: this._valueToAngle(this.options.min), value: this.options.min };
        }, _handles: function() {
          return this.container.children("div.rs-bar").find(".rs-handle");
        }, _activeHandleBar: function(n2) {
          return n2 = n2 != undefined ? n2 : this._active, $(this.container.children("div.rs-bar")[n2 - 1]);
        }, _handleArgs: function(n2) {
          n2 = n2 != undefined ? n2 : this._active;
          var t = this["_handle" + n2];
          return { element: this._activeHandleBar(n2).children(), index: n2, isActive: n2 == this._active, value: t ? t.value : null, angle: t ? t.angle : null };
        }, _dataElement: function() {
          return this._isInputType ? this._hiddenField : this.control;
        }, _raiseEvent: function(n2) {
          var t = this["_pre" + n2];
          if (t !== this.options.value)
            return this["_pre" + n2] = this.options.value, this._updateTooltip(), (n2 == "change" || this._bindOnDrag && n2 == "drag") && this._updateHidden(), this._raise(n2, { value: this.options.value, preValue: t, handle: this._handleArgs() });
        }, _elementDown: function(n2) {
          var i, r, u, t, f;
          if (!this._isReadOnly)
            if (i = $(n2.target), i.hasClass("rs-handle"))
              this._handleDown(n2);
            else {
              var e = this._getXY(n2), o = this._getCenterPoint(), s2 = getdistance(e, o), h2 = this.block.outerWidth() / 2, c = h2 - (this.options.width + this._border());
              s2 >= c && s2 <= h2 && (n2.preventDefault(), r = this.control.find(".rs-handle.rs-focus"), this.control.attr("tabindex", "0").focus().removeAttr("tabindex"), i.hasClass("rs-seperator") ? (t = i.parent().hasClass("rs-start") ? this.options.min : this.options.max, u = this._valueToAngle(t)) : (f = this._getAngleValue(e, o), u = f.angle, t = f.value), this._rangeSlider && (r = this.control.find(".rs-handle.rs-focus"), this._active = r.length == 1 ? parseFloat(r.attr("index")) : this._handle2.value - t < t - this._handle1.value ? 2 : 1, this.bar = this._activeHandleBar()), this._changeSliderValue(t, u), this._raiseEvent("change"));
            }
        }, _handleDown: function(n2) {
          n2.preventDefault();
          var t = $(n2.target);
          t.focus(), this._removeAnimation(), this._bindMouseEvents("_bind"), this.bar = t.parent(), this._active = parseFloat(t.attr("index")), this._handles().removeClass("rs-move"), this._raise("start", { value: this.options.value, handle: this._handleArgs() });
        }, _handleMove: function(n2) {
          n2.preventDefault();
          var u = this._getXY(n2), f = this._getCenterPoint(), t = this._getAngleValue(u, f, true), i, r;
          i = t.angle, r = t.value, this._changeSliderValue(r, i), this._raiseEvent("drag");
        }, _handleUp: function() {
          this._handles().addClass("rs-move"), this._bindMouseEvents("_unbind"), this._addAnimation(), this._raiseEvent("change"), this._raise("stop", { value: this.options.value, handle: this._handleArgs() });
        }, _handleFocus: function(n2) {
          if (!this._isReadOnly) {
            var t = $(n2.target);
            this._handles().removeClass("rs-focus"), t.addClass("rs-focus"), this.bar = t.parent(), this._active = parseFloat(t.attr("index")), this.options.keyboardAction && (this._bindKeyboardEvents("_unbind"), this._bindKeyboardEvents("_bind")), this.control.find("div.rs-bar").css("z-index", "7"), this.bar.css("z-index", "8");
          }
        }, _handleBlur: function() {
          this._handles().removeClass("rs-focus"), this.options.keyboardAction && this._bindKeyboardEvents("_unbind");
        }, _handleKeyDown: function(n2) {
          var t, r, i, u;
          this._isReadOnly || (t = n2.keyCode, t == 27 && this._handles().blur(), t >= 35 && t <= 40) && (t >= 37 && t <= 40 && this._removeAnimation(), r = this["_handle" + this._active], n2.preventDefault(), t == 38 || t == 37 ? i = this._round(this._limitValue(r.value + this.options.step)) : t == 39 || t == 40 ? i = this._round(this._limitValue(r.value - this._getMinusStep(r.value))) : t == 36 ? i = this._getKeyValue("Home") : t == 35 && (i = this._getKeyValue("End")), u = this._valueToAngle(i), this._changeSliderValue(i, u), this._raiseEvent("change"));
        }, _handleKeyUp: function() {
          this._addAnimation();
        }, _getMinusStep: function(n2) {
          if (n2 == this.options.max) {
            var t = (this.options.max - this.options.min) % this.options.step;
            return t == 0 ? this.options.step : t;
          }
          return this.options.step;
        }, _getKeyValue: function(n2) {
          return this._rangeSlider ? n2 == "Home" ? this._active == 1 ? this.options.min : this._handle1.value : this._active == 1 ? this._handle2.value : this.options.max : n2 == "Home" ? this.options.min : this.options.max;
        }, _elementScroll: function(n2) {
          if (!this._isReadOnly) {
            n2.preventDefault();
            var i = n2.originalEvent || n2, r, t, f, u;
            (u = i.wheelDelta ? i.wheelDelta / 60 : i.detail ? -i.detail / 2 : 0, u != 0) && (this._updateActiveHandle(n2), r = this["_handle" + this._active], t = r.value + (u > 0 ? this.options.step : -this._getMinusStep(r.value)), t = this._limitValue(t), f = this._valueToAngle(t), this._removeAnimation(), this._changeSliderValue(t, f), this._raiseEvent("change"), this._addAnimation());
          }
        }, _updateActiveHandle: function(n2) {
          var t = $(n2.target);
          t.hasClass("rs-handle") && t.parent().parent()[0] == this.control[0] && (this.bar = t.parent(), this._active = parseFloat(t.attr("index"))), this.bar.find(".rs-handle").hasClass("rs-focus") || this.bar.find(".rs-handle").focus();
        }, _bindControlEvents: function(n2) {
          this[n2](this.control, "mousedown", this._elementDown), this[n2](this.control, "touchstart", this._elementDown);
        }, _bindScrollEvents: function(n2) {
          this[n2](this.control, "mousewheel", this._elementScroll), this[n2](this.control, "DOMMouseScroll", this._elementScroll);
        }, _bindMouseEvents: function(n2) {
          this[n2]($(document), "mousemove", this._handleMove), this[n2]($(document), "mouseup", this._handleUp), this[n2]($(document), "mouseleave", this._handleUp), this[n2]($(document), "touchmove", this._handleMove), this[n2]($(document), "touchend", this._handleUp), this[n2]($(document), "touchcancel", this._handleUp);
        }, _bindKeyboardEvents: function(n2) {
          this[n2]($(document), "keydown", this._handleKeyDown), this[n2]($(document), "keyup", this._handleKeyUp);
        }, _changeSliderValue: function(n2, t) {
          var u = this._oriAngle(t), i = this._limitAngle(t);
          if (this._rangeSlider || this._showRange) {
            if (this._active == 1 && u <= this._oriAngle(this._handle2.angle) || this._active == 2 && u >= this._oriAngle(this._handle1.angle) || this._invertRange) {
              this["_handle" + this._active] = { angle: t, value: n2 }, this.options.value = this._rangeSlider ? this._handle1.value + "," + this._handle2.value : n2, this.bar.rsRotate(i), this._updateARIA(n2);
              var r = this._oriAngle(this._handle2.angle) - this._oriAngle(this._handle1.angle), f = "1", e = "0";
              r <= 180 && !(r < 0 && r > -180) && (f = "0", e = "1"), this.block2.css("opacity", f), this.block3.css("opacity", e), (this._active == 1 ? this.block4 : this.block2).rsRotate(i - 180), (this._active == 1 ? this.block1 : this.block3).rsRotate(i);
            }
          } else
            this["_handle" + this._active] = { angle: t, value: n2 }, this.options.value = n2, this.bar.rsRotate(i), this._updateARIA(n2);
        }, _updateARIA: function(n2) {
          var i = this.options.min, r = this.options.max, t;
          this.bar.children().attr({ "aria-valuenow": n2 }), this.options.sliderType == "range" ? (t = this._handles(), t.eq(0).attr({ "aria-valuemin": i }), t.eq(1).attr({ "aria-valuemax": r }), this._active == 1 ? t.eq(1).attr({ "aria-valuemin": n2 }) : t.eq(0).attr({ "aria-valuemax": n2 })) : this.bar.children().attr({ "aria-valuemin": i, "aria-valuemax": r });
        }, _checkKO: function() {
          var f = this._dataElement().data("bind"), t, i, r, n2, u;
          if (typeof f == "string" && typeof ko == "object") {
            if (t = ko.dataFor(this._dataElement()[0]), typeof t == "undefined")
              return true;
            for (i = f.split(","), n2 = 0; n2 < i.length; n2++)
              if (u = i[n2].split(":"), $.trim(u[0]) == "value") {
                r = $.trim(u[1]);
                break;
              }
            r && (this._isKO = true, ko.computed(function() {
              this.option("value", t[r]());
            }, this));
          }
        }, _checkAngular: function() {
          if (typeof angular == "object" && typeof angular.element == "function" && (this._ngName = this._dataElement().attr("ng-model"), typeof this._ngName == "string")) {
            this._isAngular = true;
            var n2 = this;
            this._scope().$watch(this._ngName, function(t) {
              n2.option("value", t);
            });
          }
        }, _scope: function() {
          return angular.element(this._dataElement()).scope();
        }, _getXY: function(n2) {
          return n2.type.indexOf("mouse") == -1 && (n2 = (n2.originalEvent || n2).changedTouches[0]), { x: n2.pageX, y: n2.pageY };
        }, _getCenterPoint: function() {
          var n2 = this.block.offset();
          return { x: n2.left + this.block.outerWidth() / 2, y: n2.top + this.block.outerHeight() / 2 };
        }, _getAngleValue: function(n2, t, i) {
          var u = Math.atan2(n2.y - t.y, t.x - n2.x), r = -u / (Math.PI / 180);
          return r < this._start && (r += 360), r = this._checkAngle(r, i), this._processStepByAngle(r);
        }, _checkAngle: function(n2, t) {
          var f = this._oriAngle(n2), i = this["_handle" + this._active].angle, r = this._oriAngle(i), u;
          if (f > this._end) {
            if (!t)
              return i;
            n2 = this._start + (r <= this._end - r ? 0 : this._end);
          } else if (t && (u = this._handleDragDistance, isNumber(u) && Math.abs(f - r) > u))
            return i;
          return n2;
        }, _processStepByAngle: function(n2) {
          var t = this._angleToValue(n2);
          return this._processStepByValue(t);
        }, _processStepByValue: function(n2) {
          var r = this.options.step, e, t, u, f, i, o;
          return e = (n2 - this.options.min) % r, t = n2 - e, u = this._limitValue(t + r), f = this._limitValue(t - r), i = n2 >= t ? n2 - t < u - n2 ? t : u : t - n2 > n2 - f ? t : f, i = this._round(i), o = this._valueToAngle(i), { value: i, angle: o };
        }, _round: function(n2) {
          var t = this.options.step.toString().split(".");
          return t[1] ? parseFloat(n2.toFixed(t[1].length)) : Math.round(n2);
        }, _oriAngle: function(n2) {
          var t = n2 - this._start;
          return t < 0 && (t += 360), t;
        }, _limitAngle: function(n2) {
          return n2 > 360 + this._start && (n2 -= 360), n2 < this._start && (n2 += 360), n2;
        }, _limitValue: function(n2) {
          return n2 < this.options.min && (n2 = this.options.min), n2 > this.options.max && (n2 = this.options.max), n2;
        }, _angleToValue: function(n2) {
          var t = this.options;
          return this._oriAngle(n2) / this._end * (t.max - t.min) + t.min;
        }, _valueToAngle: function(n2) {
          var t = this.options;
          return (n2 - t.min) / (t.max - t.min) * this._end + this._start;
        }, _appendHiddenField: function() {
          this._hiddenField = this._hiddenField || createElement("input"), this._hiddenField.attr({ type: "hidden", name: this._dataElement()[0].id || "" }), this.control.append(this._hiddenField), this._updateHidden();
        }, _updateHidden: function() {
          var n2 = this.options.value;
          this._hiddenField.val(n2), (this._isKO || this._isAngular) && this._hiddenField.trigger("change"), this._isAngular && (this._scope()[this._ngName] = n2);
        }, _updateTooltip: function() {
          this.tooltip && !this.tooltip.hasClass("hover") && this.tooltip.html(this._getTooltipValue()), this._updateTooltipPos();
        }, _updateTooltipPos: function() {
          this.tooltip && this.tooltip.css(this._getTooltipPos());
        }, _getTooltipPos: function() {
          var n2 = this.options.circleShape, t;
          if (n2 == "full" || n2 == "pie" || n2.indexOf("custom") === 0)
            return { "margin-top": -this.tooltip.outerHeight() / 2, "margin-left": -this.tooltip.outerWidth() / 2 };
          if (n2.indexOf("half") != -1) {
            switch (n2) {
              case "half-top":
              case "half-bottom":
                t = { "margin-left": -this.tooltip.outerWidth() / 2 };
                break;
              case "half-left":
              case "half-right":
                t = { "margin-top": -this.tooltip.outerHeight() / 2 };
            }
            return t;
          }
          return {};
        }, _getTooltipValue: function(n2) {
          if (this._rangeSlider) {
            var t = this.options.value.split(",");
            return n2 ? t[0] + " - " + t[1] : this._tooltipValue(t[0], 1) + " - " + this._tooltipValue(t[1], 2);
          }
          return n2 ? this.options.value : this._tooltipValue(this.options.value);
        }, _tooltipValue: function(n2, t) {
          var i = this._raise("tooltipFormat", { value: n2, handle: this._handleArgs(t) });
          return i != null && typeof i != "boolean" ? i : n2;
        }, _validateStartAngle: function() {
          var n2 = this.options.startAngle;
          return n2 = (isNumber(n2) ? parseFloat(n2) : 0) % 360, n2 < 0 && (n2 += 360), this.options.startAngle = n2, n2;
        }, _validateEndAngle: function() {
          var end = this.options.endAngle;
          if (typeof end == "string" && isNumber(end) && (end.charAt(0) === "+" || end.charAt(0) === "-"))
            try {
              end = eval(this.options.startAngle + end.charAt(0) + Math.abs(parseFloat(end)));
            } catch (e) {
              console.warn(e);
            }
          return end = (isNumber(end) ? parseFloat(end) : 360) % 360, end <= this.options.startAngle && (end += 360), end;
        }, _refreshCircleShape: function() {
          var n2 = this.options.circleShape, i = ["half-top", "half-bottom", "half-left", "half-right", "quarter-top-left", "quarter-top-right", "quarter-bottom-right", "quarter-bottom-left", "pie", "custom-half", "custom-quarter"], t;
          i.indexOf(n2) == -1 && (t = ["h1", "h2", "h3", "h4", "q1", "q2", "q3", "q4", "3/4", "ch", "cq"].indexOf(n2), n2 = t != -1 ? i[t] : n2 == "half" ? "half-top" : n2 == "quarter" ? "quarter-top-left" : "full"), this.options.circleShape = n2;
        }, _appendOverlay: function() {
          var n2 = this.options.circleShape;
          n2 == "pie" ? this._checkOverlay(".rs-overlay", 270) : (n2 == "custom-half" || n2 == "custom-quarter") && (this._checkOverlay(".rs-overlay1", 180), n2 == "custom-quarter" && this._checkOverlay(".rs-overlay2", this._end));
        }, _checkOverlay: function(n2, t) {
          var i = this.container.children(n2);
          i.length == 0 && (i = createElement("div" + n2 + " rs-transition rs-bg-color"), this.container.append(i)), i.rsRotate(this._start + t);
        }, _checkDataType: function() {
          var i = this.options, r, n2, t, u = this._props();
          for (r in u.numberType)
            n2 = u.numberType[r], t = i[n2], i[n2] = isNumber(t) ? parseFloat(t) : this.defaults[n2];
          for (r in u.booleanType)
            n2 = u.booleanType[r], t = i[n2], i[n2] = t == "false" ? false : !!t;
          for (r in u.stringType)
            n2 = u.stringType[r], t = i[n2], i[n2] = ("" + t).toLowerCase();
        }, _validateSliderType: function() {
          var n2 = this.options.sliderType.toLowerCase();
          this._rangeSlider = this._showRange = false, n2 == "range" ? this._rangeSlider = this._showRange = true : n2.indexOf("min") != -1 ? (this._showRange = true, n2 = "min-range") : n2 = "default", this.options.sliderType = n2;
        }, _updateStartEnd: function() {
          var n2 = this.options.circleShape;
          n2 != "full" && (n2.indexOf("quarter") != -1 ? this.options.endAngle = "+90" : n2.indexOf("half") != -1 ? this.options.endAngle = "+180" : n2 == "pie" && (this.options.endAngle = "+270"), n2 == "quarter-top-left" || n2 == "half-top" ? this.options.startAngle = 0 : n2 == "quarter-top-right" || n2 == "half-right" ? this.options.startAngle = 90 : n2 == "quarter-bottom-right" || n2 == "half-bottom" ? this.options.startAngle = 180 : (n2 == "quarter-bottom-left" || n2 == "half-left") && (this.options.startAngle = 270));
        }, _validateStartEnd: function() {
          this._start = this._validateStartAngle(), this._end = this._validateEndAngle();
          var n2 = this._start < this._end ? 0 : 360;
          this._end += n2 - this._start;
        }, _analyzeModelValue: function() {
          var n2 = this.options.value, t = this.options.min, f = this.options.max, u, r, i;
          n2 instanceof Array && (n2 = n2.toString()), i = typeof n2 == "string" ? n2.split(",") : [n2], this._rangeSlider ? r = typeof n2 == "string" ? i.length >= 2 ? (isNumber(i[0]) ? i[0] : t) + "," + (isNumber(i[1]) ? i[1] : f) : isNumber(i[0]) ? t + "," + i[0] : t + "," + t : isNumber(n2) ? t + "," + n2 : t + "," + t : typeof n2 == "string" ? (u = i.pop(), r = isNumber(u) ? parseFloat(u) : t) : r = isNumber(n2) ? parseFloat(n2) : t, this.options.value = r;
        }, _validateModelValue: function() {
          var r = this.options.value, i;
          if (this._rangeSlider) {
            var u = r.split(","), n2 = parseFloat(u[0]), t = parseFloat(u[1]);
            n2 = this._limitValue(n2), t = this._limitValue(t), this._invertRange || n2 > t && (t = n2), this._handle1 = this._processStepByValue(n2), this._handle2 = this._processStepByValue(t), this.options.value = this._handle1.value + "," + this._handle2.value;
          } else
            i = this._showRange ? 2 : this._active || 1, this["_handle" + i] = this._processStepByValue(this._limitValue(r)), this._showRange && (this._handle1 = this._handleDefaults()), this.options.value = this["_handle" + i].value;
        }, _isBrowserSupported: function() {
          for (var t = ["borderRadius", "WebkitBorderRadius", "MozBorderRadius", "OBorderRadius", "msBorderRadius", "KhtmlBorderRadius"], n2 = 0; n2 < t.length; n2++)
            if (document.body.style[t[n2]] !== undefined)
              return true;
        }, _throwError: function() {
          return "This browser doesn't support the border-radious property.";
        }, _checkIE: function() {
          var n2 = window.navigator.userAgent;
          (n2.indexOf("MSIE ") >= 0 || n2.indexOf("Trident/") >= 0) && this.control.css({ "-ms-touch-action": "none", "touch-action": "none" });
        }, _raise: function(n2, t) {
          var u = this.options, i = u[n2], r = true;
          return t = t || { value: u.value }, t.options = u, i && (t.type = n2, typeof i == "string" && (i = window[i]), $.isFunction(i) && (r = i.call(this, t), r = r === false ? false : r)), this.control.trigger($.Event ? $.Event(n2, t) : n2), r;
        }, _bind: function(n2, t, i) {
          $(n2).bind(t, $proxy(i, this));
        }, _unbind: function(n2, t, i) {
          $.proxy ? $(n2).unbind(t, $.proxy(i, this)) : $(n2).unbind(t);
        }, _getInstance: function() {
          return $data(this._dataElement()[0], pluginName);
        }, _removeData: function() {
          var n2 = this._dataElement()[0];
          $.removeData && $.removeData(n2, pluginName), n2.id && delete window[n2.id];
        }, _destroyControl: function() {
          this._isInputType && this._dataElement().insertAfter(this.control).attr("type", "text"), this.control.empty().removeClass("rs-control").height("").width(""), this._removeAnimation(), this._bindControlEvents("_unbind");
        }, _updateWidth: function() {
          this.lastBlock.css("padding", this.options.width), this._refreshHandle();
        }, _readOnly: function(n2) {
          this._isReadOnly = n2, this.container.removeClass("rs-readonly"), n2 && this.container.addClass("rs-readonly");
        }, _get: function(n2) {
          return this.options[n2];
        }, _set: function(n2, t) {
          var i = this._props();
          if ($.inArray(n2, i.numberType) != -1) {
            if (!isNumber(t))
              return;
            t = parseFloat(t);
          } else
            $.inArray(n2, i.booleanType) != -1 ? t = t == "false" ? false : !!t : $.inArray(n2, i.stringType) != -1 && (t = t.toLowerCase());
          if (this.options[n2] != t) {
            this.options[n2] = t;
            switch (n2) {
              case "startAngle":
              case "endAngle":
                this._validateStartEnd(), this._updateSeperator(), this._appendOverlay();
              case "min":
              case "max":
              case "step":
              case "value":
                this._analyzeModelValue(), this._validateModelValue(), this._setValue(), this._updatePre(), this._updateHidden(), this._updateTooltip();
                break;
              case "radius":
                this._setRadius(), this._updateTooltipPos();
                break;
              case "width":
                this._removeAnimation(), this._updateWidth(), this._updateTooltipPos(), this._addAnimation(), this._refreshSeperator();
                break;
              case "handleSize":
                this._refreshHandle();
                break;
              case "handleShape":
                this._setHandleShape();
                break;
              case "animation":
                this._setAnimation();
                break;
              case "showTooltip":
                this.options.showTooltip ? this._appendTooltip() : this._removeTooltip();
                break;
              case "editableTooltip":
                this._tooltipEditable(), this._updateTooltipPos();
                break;
              case "disabled":
                this.options.disabled ? this.disable() : this.enable();
                break;
              case "readOnly":
                this.options.readOnly ? this._readOnly(true) : !this.options.disabled && this._readOnly(false);
                break;
              case "mouseScrollAction":
                this._bindScrollEvents(this.options.mouseScrollAction ? "_bind" : "_unbind");
                break;
              case "lineCap":
                this._refreshSeperator();
                break;
              case "circleShape":
                this._refreshCircleShape(), this.options.circleShape == "full" && (this.options.startAngle = 0, this.options.endAngle = "+360");
              case "sliderType":
                this._destroyControl(), this._onInit();
            }
            return this;
          }
        }, option: function(n2, t) {
          if (this._getInstance() && this._isBrowserSupport) {
            if ($isPlainObject(n2)) {
              (n2.min !== undefined || n2.max !== undefined) && (n2.min !== undefined && (this.options.min = n2.min, delete n2.min), n2.max !== undefined && (this.options.max = n2.max, delete n2.max), n2.value == undefined && this._set("value", this.options.value));
              for (var i in n2)
                this._set(i, n2[i]);
            } else if (n2 && typeof n2 == "string") {
              if (t === undefined)
                return this._get(n2);
              this._set(n2, t);
            }
            return this;
          }
        }, getValue: function(n2) {
          if (this.options.sliderType == "range" && isNumber(n2)) {
            var t = parseFloat(n2);
            if (t == 1 || t == 2)
              return this["_handle" + t].value;
          }
          return this._get("value");
        }, setValue: function(n2, t) {
          if (isNumber(n2)) {
            if (isNumber(t))
              if (this.options.sliderType == "range") {
                var i = parseFloat(t), r = parseFloat(n2);
                i == 1 ? n2 = r + "," + this._handle2.value : i == 2 && (n2 = this._handle1.value + "," + r);
              } else
                this.options.sliderType == "default" && (this._active = t);
            this._set("value", n2);
          }
        }, disable: function() {
          this.options.disabled = true, this.container.addClass("rs-disabled"), this._readOnly(true);
        }, enable: function() {
          this.options.disabled = false, this.container.removeClass("rs-disabled"), this.options.readOnly || this._readOnly(false);
        }, destroy: function() {
          this._getInstance() && (this._destroyControl(), this._removeData(), this._isInputType && this.control.remove());
        } }, $.fn.rsRotate = function(n2) {
          return setTransform(this, n2);
        }, typeof $.fn.outerHeight == "undefined" && ($.fn.outerHeight = function() {
          return this[0].offsetHeight;
        }, $.fn.outerWidth = function() {
          return this[0].offsetWidth;
        }), typeof $.fn.hasClass == "undefined" && ($.fn.hasClass = function(n2) {
          return this[0].className.split(" ").indexOf(n2) !== -1;
        }), typeof $.fn.offset == "undefined" && ($.fn.offset = function() {
          return { left: this[0].offsetLeft, top: this[0].offsetTop };
        }), $.fn[pluginName].prototype = RoundSlider.prototype;
      })(jQuery, window);
    }
  });

  // Assets/Toyota/MainSite/vendor_manual/autosize/autosize.min.js
  var require_autosize_min = __commonJS({
    "Assets/Toyota/MainSite/vendor_manual/autosize/autosize.min.js"(exports2, module2) {
      !function(e, t) {
        if ("function" == typeof define && define.amd)
          define(["module", "exports"], t);
        else if ("undefined" != typeof exports2)
          t(module2, exports2);
        else {
          var n2 = { exports: {} };
          t(n2, n2.exports), e.autosize = n2.exports;
        }
      }(exports2, function(e, t) {
        "use strict";
        var n2, o, p = "function" == typeof Map ? /* @__PURE__ */ new Map() : (n2 = [], o = [], { has: function(e2) {
          return -1 < n2.indexOf(e2);
        }, get: function(e2) {
          return o[n2.indexOf(e2)];
        }, set: function(e2, t2) {
          -1 === n2.indexOf(e2) && (n2.push(e2), o.push(t2));
        }, delete: function(e2) {
          var t2 = n2.indexOf(e2);
          -1 < t2 && (n2.splice(t2, 1), o.splice(t2, 1));
        } }), c = function(e2) {
          return new Event(e2, { bubbles: true });
        };
        try {
          new Event("test");
        } catch (e2) {
          c = function(e3) {
            var t2 = document.createEvent("Event");
            return t2.initEvent(e3, true, false), t2;
          };
        }
        function r(r2) {
          if (r2 && r2.nodeName && "TEXTAREA" === r2.nodeName && !p.has(r2)) {
            var e2, n3 = null, o2 = null, i2 = null, d2 = function() {
              r2.clientWidth !== o2 && a();
            }, l2 = function(t2) {
              window.removeEventListener("resize", d2, false), r2.removeEventListener("input", a, false), r2.removeEventListener("keyup", a, false), r2.removeEventListener("autosize:destroy", l2, false), r2.removeEventListener("autosize:update", a, false), Object.keys(t2).forEach(function(e3) {
                r2.style[e3] = t2[e3];
              }), p.delete(r2);
            }.bind(r2, { height: r2.style.height, resize: r2.style.resize, overflowY: r2.style.overflowY, overflowX: r2.style.overflowX, wordWrap: r2.style.wordWrap });
            r2.addEventListener("autosize:destroy", l2, false), "onpropertychange" in r2 && "oninput" in r2 && r2.addEventListener("keyup", a, false), window.addEventListener("resize", d2, false), r2.addEventListener("input", a, false), r2.addEventListener("autosize:update", a, false), r2.style.overflowX = "hidden", r2.style.wordWrap = "break-word", p.set(r2, { destroy: l2, update: a }), "vertical" === (e2 = window.getComputedStyle(r2, null)).resize ? r2.style.resize = "none" : "both" === e2.resize && (r2.style.resize = "horizontal"), n3 = "content-box" === e2.boxSizing ? -(parseFloat(e2.paddingTop) + parseFloat(e2.paddingBottom)) : parseFloat(e2.borderTopWidth) + parseFloat(e2.borderBottomWidth), isNaN(n3) && (n3 = 0), a();
          }
          function s2(e3) {
            var t2 = r2.style.width;
            r2.style.width = "0px", r2.offsetWidth, r2.style.width = t2, r2.style.overflowY = e3;
          }
          function u() {
            if (0 !== r2.scrollHeight) {
              var e3 = function(e4) {
                for (var t3 = []; e4 && e4.parentNode && e4.parentNode instanceof Element; )
                  e4.parentNode.scrollTop && t3.push({ node: e4.parentNode, scrollTop: e4.parentNode.scrollTop }), e4 = e4.parentNode;
                return t3;
              }(r2), t2 = document.documentElement && document.documentElement.scrollTop;
              r2.style.height = "", r2.style.height = r2.scrollHeight + n3 + "px", o2 = r2.clientWidth, e3.forEach(function(e4) {
                e4.node.scrollTop = e4.scrollTop;
              }), t2 && (document.documentElement.scrollTop = t2);
            }
          }
          function a() {
            u();
            var e3 = Math.round(parseFloat(r2.style.height)), t2 = window.getComputedStyle(r2, null), n4 = "content-box" === t2.boxSizing ? Math.round(parseFloat(t2.height)) : r2.offsetHeight;
            if (n4 < e3 ? "hidden" === t2.overflowY && (s2("scroll"), u(), n4 = "content-box" === t2.boxSizing ? Math.round(parseFloat(window.getComputedStyle(r2, null).height)) : r2.offsetHeight) : "hidden" !== t2.overflowY && (s2("hidden"), u(), n4 = "content-box" === t2.boxSizing ? Math.round(parseFloat(window.getComputedStyle(r2, null).height)) : r2.offsetHeight), i2 !== n4) {
              i2 = n4;
              var o3 = c("autosize:resized");
              try {
                r2.dispatchEvent(o3);
              } catch (e4) {
              }
            }
          }
        }
        function i(e2) {
          var t2 = p.get(e2);
          t2 && t2.destroy();
        }
        function d(e2) {
          var t2 = p.get(e2);
          t2 && t2.update();
        }
        var l = null;
        "undefined" == typeof window || "function" != typeof window.getComputedStyle ? ((l = function(e2) {
          return e2;
        }).destroy = function(e2) {
          return e2;
        }, l.update = function(e2) {
          return e2;
        }) : ((l = function(e2, t2) {
          return e2 && Array.prototype.forEach.call(e2.length ? e2 : [e2], function(e3) {
            return r(e3);
          }), e2;
        }).destroy = function(e2) {
          return e2 && Array.prototype.forEach.call(e2.length ? e2 : [e2], i), e2;
        }, l.update = function(e2) {
          return e2 && Array.prototype.forEach.call(e2.length ? e2 : [e2], d), e2;
        }), t.default = l, e.exports = t.default;
      });
    }
  });

  // dep-runtime/node_modules/angular/angular.min.js
  (function(z) {
    "use strict";
    function ve(a) {
      if (D(a))
        w2(a.objectMaxDepth) && (Xb.objectMaxDepth = Yb(a.objectMaxDepth) ? a.objectMaxDepth : NaN), w2(a.urlErrorParamsEnabled) && Ga(a.urlErrorParamsEnabled) && (Xb.urlErrorParamsEnabled = a.urlErrorParamsEnabled);
      else
        return Xb;
    }
    function Yb(a) {
      return X(a) && 0 < a;
    }
    function F(a, b) {
      b = b || Error;
      return function() {
        var d = arguments[0], c;
        c = "[" + (a ? a + ":" : "") + d + "] http://errors.angularjs.org/1.8.2/" + (a ? a + "/" : "") + d;
        for (d = 1; d < arguments.length; d++) {
          c = c + (1 == d ? "?" : "&") + "p" + (d - 1) + "=";
          var e = encodeURIComponent, f;
          f = arguments[d];
          f = "function" == typeof f ? f.toString().replace(/ \{[\s\S]*$/, "") : "undefined" == typeof f ? "undefined" : "string" != typeof f ? JSON.stringify(f) : f;
          c += e(f);
        }
        return new b(c);
      };
    }
    function za(a) {
      if (null == a || $a(a))
        return false;
      if (H(a) || C(a) || x && a instanceof x)
        return true;
      var b = "length" in Object(a) && a.length;
      return X(b) && (0 <= b && b - 1 in a || "function" === typeof a.item);
    }
    function r(a, b, d) {
      var c, e;
      if (a)
        if (B(a))
          for (c in a)
            "prototype" !== c && "length" !== c && "name" !== c && a.hasOwnProperty(c) && b.call(d, a[c], c, a);
        else if (H(a) || za(a)) {
          var f = "object" !== typeof a;
          c = 0;
          for (e = a.length; c < e; c++)
            (f || c in a) && b.call(d, a[c], c, a);
        } else if (a.forEach && a.forEach !== r)
          a.forEach(b, d, a);
        else if (Pc(a))
          for (c in a)
            b.call(d, a[c], c, a);
        else if ("function" === typeof a.hasOwnProperty)
          for (c in a)
            a.hasOwnProperty(c) && b.call(d, a[c], c, a);
        else
          for (c in a)
            ta.call(a, c) && b.call(d, a[c], c, a);
      return a;
    }
    function Qc(a, b, d) {
      for (var c = Object.keys(a).sort(), e = 0; e < c.length; e++)
        b.call(d, a[c[e]], c[e]);
      return c;
    }
    function Zb(a) {
      return function(b, d) {
        a(d, b);
      };
    }
    function we() {
      return ++qb;
    }
    function $b(a, b, d) {
      for (var c = a.$$hashKey, e = 0, f = b.length; e < f; ++e) {
        var g = b[e];
        if (D(g) || B(g))
          for (var k = Object.keys(g), h2 = 0, l = k.length; h2 < l; h2++) {
            var m = k[h2], p = g[m];
            d && D(p) ? ha(p) ? a[m] = new Date(p.valueOf()) : ab(p) ? a[m] = new RegExp(p) : p.nodeName ? a[m] = p.cloneNode(true) : ac(p) ? a[m] = p.clone() : "__proto__" !== m && (D(a[m]) || (a[m] = H(p) ? [] : {}), $b(a[m], [p], true)) : a[m] = p;
          }
      }
      c ? a.$$hashKey = c : delete a.$$hashKey;
      return a;
    }
    function S(a) {
      return $b(a, Ha.call(arguments, 1), false);
    }
    function xe(a) {
      return $b(a, Ha.call(arguments, 1), true);
    }
    function fa(a) {
      return parseInt(
        a,
        10
      );
    }
    function bc(a, b) {
      return S(Object.create(a), b);
    }
    function E() {
    }
    function Ta(a) {
      return a;
    }
    function ia(a) {
      return function() {
        return a;
      };
    }
    function cc(a) {
      return B(a.toString) && a.toString !== la;
    }
    function A(a) {
      return "undefined" === typeof a;
    }
    function w2(a) {
      return "undefined" !== typeof a;
    }
    function D(a) {
      return null !== a && "object" === typeof a;
    }
    function Pc(a) {
      return null !== a && "object" === typeof a && !Rc(a);
    }
    function C(a) {
      return "string" === typeof a;
    }
    function X(a) {
      return "number" === typeof a;
    }
    function ha(a) {
      return "[object Date]" === la.call(a);
    }
    function H(a) {
      return Array.isArray(a) || a instanceof Array;
    }
    function dc(a) {
      switch (la.call(a)) {
        case "[object Error]":
          return true;
        case "[object Exception]":
          return true;
        case "[object DOMException]":
          return true;
        default:
          return a instanceof Error;
      }
    }
    function B(a) {
      return "function" === typeof a;
    }
    function ab(a) {
      return "[object RegExp]" === la.call(a);
    }
    function $a(a) {
      return a && a.window === a;
    }
    function bb(a) {
      return a && a.$evalAsync && a.$watch;
    }
    function Ga(a) {
      return "boolean" === typeof a;
    }
    function ye(a) {
      return a && X(a.length) && ze.test(la.call(a));
    }
    function ac(a) {
      return !(!a || !(a.nodeName || a.prop && a.attr && a.find));
    }
    function Ae(a) {
      var b = {};
      a = a.split(",");
      var d;
      for (d = 0; d < a.length; d++)
        b[a[d]] = true;
      return b;
    }
    function ua(a) {
      return K(a.nodeName || a[0] && a[0].nodeName);
    }
    function cb(a, b) {
      var d = a.indexOf(b);
      0 <= d && a.splice(d, 1);
      return d;
    }
    function Ia(a, b, d) {
      function c(a2, b2, c2) {
        c2--;
        if (0 > c2)
          return "...";
        var d2 = b2.$$hashKey, f2;
        if (H(a2)) {
          f2 = 0;
          for (var g2 = a2.length; f2 < g2; f2++)
            b2.push(e(a2[f2], c2));
        } else if (Pc(a2))
          for (f2 in a2)
            b2[f2] = e(a2[f2], c2);
        else if (a2 && "function" === typeof a2.hasOwnProperty)
          for (f2 in a2)
            a2.hasOwnProperty(f2) && (b2[f2] = e(a2[f2], c2));
        else
          for (f2 in a2)
            ta.call(a2, f2) && (b2[f2] = e(a2[f2], c2));
        d2 ? b2.$$hashKey = d2 : delete b2.$$hashKey;
        return b2;
      }
      function e(a2, b2) {
        if (!D(a2))
          return a2;
        var d2 = g.indexOf(a2);
        if (-1 !== d2)
          return k[d2];
        if ($a(a2) || bb(a2))
          throw oa("cpws");
        var d2 = false, e2 = f(a2);
        void 0 === e2 && (e2 = H(a2) ? [] : Object.create(Rc(a2)), d2 = true);
        g.push(a2);
        k.push(e2);
        return d2 ? c(a2, e2, b2) : e2;
      }
      function f(a2) {
        switch (la.call(a2)) {
          case "[object Int8Array]":
          case "[object Int16Array]":
          case "[object Int32Array]":
          case "[object Float32Array]":
          case "[object Float64Array]":
          case "[object Uint8Array]":
          case "[object Uint8ClampedArray]":
          case "[object Uint16Array]":
          case "[object Uint32Array]":
            return new a2.constructor(
              e(a2.buffer),
              a2.byteOffset,
              a2.length
            );
          case "[object ArrayBuffer]":
            if (!a2.slice) {
              var b2 = new ArrayBuffer(a2.byteLength);
              new Uint8Array(b2).set(new Uint8Array(a2));
              return b2;
            }
            return a2.slice(0);
          case "[object Boolean]":
          case "[object Number]":
          case "[object String]":
          case "[object Date]":
            return new a2.constructor(a2.valueOf());
          case "[object RegExp]":
            return b2 = new RegExp(a2.source, a2.toString().match(/[^/]*$/)[0]), b2.lastIndex = a2.lastIndex, b2;
          case "[object Blob]":
            return new a2.constructor([a2], { type: a2.type });
        }
        if (B(a2.cloneNode))
          return a2.cloneNode(true);
      }
      var g = [], k = [];
      d = Yb(d) ? d : NaN;
      if (b) {
        if (ye(b) || "[object ArrayBuffer]" === la.call(b))
          throw oa("cpta");
        if (a === b)
          throw oa("cpi");
        H(b) ? b.length = 0 : r(b, function(a2, c2) {
          "$$hashKey" !== c2 && delete b[c2];
        });
        g.push(a);
        k.push(b);
        return c(a, b, d);
      }
      return e(a, d);
    }
    function ec(a, b) {
      return a === b || a !== a && b !== b;
    }
    function va(a, b) {
      if (a === b)
        return true;
      if (null === a || null === b)
        return false;
      if (a !== a && b !== b)
        return true;
      var d = typeof a, c;
      if (d === typeof b && "object" === d)
        if (H(a)) {
          if (!H(b))
            return false;
          if ((d = a.length) === b.length) {
            for (c = 0; c < d; c++)
              if (!va(
                a[c],
                b[c]
              ))
                return false;
            return true;
          }
        } else {
          if (ha(a))
            return ha(b) ? ec(a.getTime(), b.getTime()) : false;
          if (ab(a))
            return ab(b) ? a.toString() === b.toString() : false;
          if (bb(a) || bb(b) || $a(a) || $a(b) || H(b) || ha(b) || ab(b))
            return false;
          d = T();
          for (c in a)
            if ("$" !== c.charAt(0) && !B(a[c])) {
              if (!va(a[c], b[c]))
                return false;
              d[c] = true;
            }
          for (c in b)
            if (!(c in d) && "$" !== c.charAt(0) && w2(b[c]) && !B(b[c]))
              return false;
          return true;
        }
      return false;
    }
    function db(a, b, d) {
      return a.concat(Ha.call(b, d));
    }
    function Va(a, b) {
      var d = 2 < arguments.length ? Ha.call(arguments, 2) : [];
      return !B(b) || b instanceof RegExp ? b : d.length ? function() {
        return arguments.length ? b.apply(a, db(d, arguments, 0)) : b.apply(a, d);
      } : function() {
        return arguments.length ? b.apply(a, arguments) : b.call(a);
      };
    }
    function Sc(a, b) {
      var d = b;
      "string" === typeof a && "$" === a.charAt(0) && "$" === a.charAt(1) ? d = void 0 : $a(b) ? d = "$WINDOW" : b && z.document === b ? d = "$DOCUMENT" : bb(b) && (d = "$SCOPE");
      return d;
    }
    function eb(a, b) {
      if (!A(a))
        return X(b) || (b = b ? 2 : null), JSON.stringify(a, Sc, b);
    }
    function Tc(a) {
      return C(a) ? JSON.parse(a) : a;
    }
    function fc(a, b) {
      a = a.replace(Be, "");
      var d = Date.parse("Jan 01, 1970 00:00:00 " + a) / 6e4;
      return Y(d) ? b : d;
    }
    function Uc(a, b) {
      a = new Date(a.getTime());
      a.setMinutes(a.getMinutes() + b);
      return a;
    }
    function gc(a, b, d) {
      d = d ? -1 : 1;
      var c = a.getTimezoneOffset();
      b = fc(b, c);
      return Uc(a, d * (b - c));
    }
    function Aa(a) {
      a = x(a).clone().empty();
      var b = x("<div></div>").append(a).html();
      try {
        return a[0].nodeType === Pa ? K(b) : b.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/, function(a2, b2) {
          return "<" + K(b2);
        });
      } catch (d) {
        return K(b);
      }
    }
    function Vc(a) {
      try {
        return decodeURIComponent(a);
      } catch (b) {
      }
    }
    function hc(a) {
      var b = {};
      r(
        (a || "").split("&"),
        function(a2) {
          var c, e, f;
          a2 && (e = a2 = a2.replace(/\+/g, "%20"), c = a2.indexOf("="), -1 !== c && (e = a2.substring(0, c), f = a2.substring(c + 1)), e = Vc(e), w2(e) && (f = w2(f) ? Vc(f) : true, ta.call(b, e) ? H(b[e]) ? b[e].push(f) : b[e] = [b[e], f] : b[e] = f));
        }
      );
      return b;
    }
    function Ce(a) {
      var b = [];
      r(a, function(a2, c) {
        H(a2) ? r(a2, function(a3) {
          b.push(ba(c, true) + (true === a3 ? "" : "=" + ba(a3, true)));
        }) : b.push(ba(c, true) + (true === a2 ? "" : "=" + ba(a2, true)));
      });
      return b.length ? b.join("&") : "";
    }
    function ic(a) {
      return ba(a, true).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+");
    }
    function ba(a, b) {
      return encodeURIComponent(a).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%3B/gi, ";").replace(/%20/g, b ? "%20" : "+");
    }
    function De(a, b) {
      var d, c, e = Qa.length;
      for (c = 0; c < e; ++c)
        if (d = Qa[c] + b, C(d = a.getAttribute(d)))
          return d;
      return null;
    }
    function Ee(a, b) {
      var d, c, e = {};
      r(Qa, function(b2) {
        b2 += "app";
        !d && a.hasAttribute && a.hasAttribute(b2) && (d = a, c = a.getAttribute(b2));
      });
      r(Qa, function(b2) {
        b2 += "app";
        var e2;
        !d && (e2 = a.querySelector("[" + b2.replace(":", "\\:") + "]")) && (d = e2, c = e2.getAttribute(b2));
      });
      d && (Fe ? (e.strictDi = null !== De(d, "strict-di"), b(d, c ? [c] : [], e)) : z.console.error("AngularJS: disabling automatic bootstrap. <script> protocol indicates an extension, document.location.href does not match."));
    }
    function Wc(a, b, d) {
      D(d) || (d = {});
      d = S({ strictDi: false }, d);
      var c = function() {
        a = x(a);
        if (a.injector()) {
          var c2 = a[0] === z.document ? "document" : Aa(a);
          throw oa("btstrpd", c2.replace(/</, "&lt;").replace(/>/, "&gt;"));
        }
        b = b || [];
        b.unshift(["$provide", function(b2) {
          b2.value("$rootElement", a);
        }]);
        d.debugInfoEnabled && b.push([
          "$compileProvider",
          function(a2) {
            a2.debugInfoEnabled(true);
          }
        ]);
        b.unshift("ng");
        c2 = fb(b, d.strictDi);
        c2.invoke(["$rootScope", "$rootElement", "$compile", "$injector", function(a2, b2, c3, d2) {
          a2.$apply(function() {
            b2.data("$injector", d2);
            c3(b2)(a2);
          });
        }]);
        return c2;
      }, e = /^NG_ENABLE_DEBUG_INFO!/, f = /^NG_DEFER_BOOTSTRAP!/;
      z && e.test(z.name) && (d.debugInfoEnabled = true, z.name = z.name.replace(e, ""));
      if (z && !f.test(z.name))
        return c();
      z.name = z.name.replace(f, "");
      ca.resumeBootstrap = function(a2) {
        r(a2, function(a3) {
          b.push(a3);
        });
        return c();
      };
      B(ca.resumeDeferredBootstrap) && ca.resumeDeferredBootstrap();
    }
    function Ge() {
      z.name = "NG_ENABLE_DEBUG_INFO!" + z.name;
      z.location.reload();
    }
    function He(a) {
      a = ca.element(a).injector();
      if (!a)
        throw oa("test");
      return a.get("$$testability");
    }
    function Xc(a, b) {
      b = b || "_";
      return a.replace(Ie, function(a2, c) {
        return (c ? b : "") + a2.toLowerCase();
      });
    }
    function Je() {
      var a;
      if (!Yc) {
        var b = rb();
        (sb = A(b) ? z.jQuery : b ? z[b] : void 0) && sb.fn.on ? (x = sb, S(sb.fn, { scope: Wa.scope, isolateScope: Wa.isolateScope, controller: Wa.controller, injector: Wa.injector, inheritedData: Wa.inheritedData })) : x = U;
        a = x.cleanData;
        x.cleanData = function(b2) {
          for (var c, e = 0, f; null != (f = b2[e]); e++)
            (c = (x._data(f) || {}).events) && c.$destroy && x(f).triggerHandler("$destroy");
          a(b2);
        };
        ca.element = x;
        Yc = true;
      }
    }
    function Ke() {
      U.legacyXHTMLReplacement = true;
    }
    function gb(a, b, d) {
      if (!a)
        throw oa("areq", b || "?", d || "required");
      return a;
    }
    function tb(a, b, d) {
      d && H(a) && (a = a[a.length - 1]);
      gb(B(a), b, "not a function, got " + (a && "object" === typeof a ? a.constructor.name || "Object" : typeof a));
      return a;
    }
    function Ja(a, b) {
      if ("hasOwnProperty" === a)
        throw oa(
          "badname",
          b
        );
    }
    function Le(a, b, d) {
      if (!b)
        return a;
      b = b.split(".");
      for (var c, e = a, f = b.length, g = 0; g < f; g++)
        c = b[g], a && (a = (e = a)[c]);
      return !d && B(a) ? Va(e, a) : a;
    }
    function ub(a) {
      for (var b = a[0], d = a[a.length - 1], c, e = 1; b !== d && (b = b.nextSibling); e++)
        if (c || a[e] !== b)
          c || (c = x(Ha.call(a, 0, e))), c.push(b);
      return c || a;
    }
    function T() {
      return /* @__PURE__ */ Object.create(null);
    }
    function jc(a) {
      if (null == a)
        return "";
      switch (typeof a) {
        case "string":
          break;
        case "number":
          a = "" + a;
          break;
        default:
          a = !cc(a) || H(a) || ha(a) ? eb(a) : a.toString();
      }
      return a;
    }
    function Me(a) {
      function b(a2, b2, c2) {
        return a2[b2] || (a2[b2] = c2());
      }
      var d = F("$injector"), c = F("ng");
      a = b(a, "angular", Object);
      a.$$minErr = a.$$minErr || F;
      return b(a, "module", function() {
        var a2 = {};
        return function(f, g, k) {
          var h2 = {};
          if ("hasOwnProperty" === f)
            throw c("badname", "module");
          g && a2.hasOwnProperty(f) && (a2[f] = null);
          return b(a2, f, function() {
            function a3(b3, c2, d2, f2) {
              f2 || (f2 = e);
              return function() {
                f2[d2 || "push"]([b3, c2, arguments]);
                return t;
              };
            }
            function b2(a4, c2, d2) {
              d2 || (d2 = e);
              return function(b3, e2) {
                e2 && B(e2) && (e2.$$moduleName = f);
                d2.push([a4, c2, arguments]);
                return t;
              };
            }
            if (!g)
              throw d(
                "nomod",
                f
              );
            var e = [], n2 = [], s2 = [], G = a3("$injector", "invoke", "push", n2), t = { _invokeQueue: e, _configBlocks: n2, _runBlocks: s2, info: function(a4) {
              if (w2(a4)) {
                if (!D(a4))
                  throw c("aobj", "value");
                h2 = a4;
                return this;
              }
              return h2;
            }, requires: g, name: f, provider: b2("$provide", "provider"), factory: b2("$provide", "factory"), service: b2("$provide", "service"), value: a3("$provide", "value"), constant: a3("$provide", "constant", "unshift"), decorator: b2("$provide", "decorator", n2), animation: b2("$animateProvider", "register"), filter: b2("$filterProvider", "register"), controller: b2(
              "$controllerProvider",
              "register"
            ), directive: b2("$compileProvider", "directive"), component: b2("$compileProvider", "component"), config: G, run: function(a4) {
              s2.push(a4);
              return this;
            } };
            k && G(k);
            return t;
          });
        };
      });
    }
    function ja(a, b) {
      if (H(a)) {
        b = b || [];
        for (var d = 0, c = a.length; d < c; d++)
          b[d] = a[d];
      } else if (D(a)) {
        for (d in b = b || {}, a)
          if ("$" !== d.charAt(0) || "$" !== d.charAt(1))
            b[d] = a[d];
      }
      return b || a;
    }
    function Ne(a, b) {
      var d = [];
      Yb(b) && (a = ca.copy(a, null, b));
      return JSON.stringify(a, function(a2, b2) {
        b2 = Sc(a2, b2);
        if (D(b2)) {
          if (0 <= d.indexOf(b2))
            return "...";
          d.push(b2);
        }
        return b2;
      });
    }
    function Oe(a) {
      S(a, { errorHandlingConfig: ve, bootstrap: Wc, copy: Ia, extend: S, merge: xe, equals: va, element: x, forEach: r, injector: fb, noop: E, bind: Va, toJson: eb, fromJson: Tc, identity: Ta, isUndefined: A, isDefined: w2, isString: C, isFunction: B, isObject: D, isNumber: X, isElement: ac, isArray: H, version: Pe, isDate: ha, callbacks: { $$counter: 0 }, getTestability: He, reloadWithDebugInfo: Ge, UNSAFE_restoreLegacyJqLiteXHTMLReplacement: Ke, $$minErr: F, $$csp: Ba, $$encodeUriSegment: ic, $$encodeUriQuery: ba, $$lowercase: K, $$stringify: jc, $$uppercase: vb });
      lc = Me(z);
      lc("ng", ["ngLocale"], ["$provide", function(a2) {
        a2.provider({ $$sanitizeUri: Qe });
        a2.provider("$compile", Zc).directive({
          a: Re,
          input: $c,
          textarea: $c,
          form: Se,
          script: Te,
          select: Ue,
          option: Ve,
          ngBind: We,
          ngBindHtml: Xe,
          ngBindTemplate: Ye,
          ngClass: Ze,
          ngClassEven: $e,
          ngClassOdd: af,
          ngCloak: bf,
          ngController: cf,
          ngForm: df,
          ngHide: ef,
          ngIf: ff,
          ngInclude: gf,
          ngInit: hf,
          ngNonBindable: jf,
          ngPluralize: kf,
          ngRef: lf,
          ngRepeat: mf,
          ngShow: nf,
          ngStyle: of,
          ngSwitch: pf,
          ngSwitchWhen: qf,
          ngSwitchDefault: rf,
          ngOptions: sf,
          ngTransclude: tf,
          ngModel: uf,
          ngList: vf,
          ngChange: wf,
          pattern: ad,
          ngPattern: ad,
          required: bd,
          ngRequired: bd,
          minlength: cd,
          ngMinlength: cd,
          maxlength: dd,
          ngMaxlength: dd,
          ngValue: xf,
          ngModelOptions: yf
        }).directive({ ngInclude: zf, input: Af }).directive(wb).directive(ed);
        a2.provider({
          $anchorScroll: Bf,
          $animate: Cf,
          $animateCss: Df,
          $$animateJs: Ef,
          $$animateQueue: Ff,
          $$AnimateRunner: Gf,
          $$animateAsyncRun: Hf,
          $browser: If,
          $cacheFactory: Jf,
          $controller: Kf,
          $document: Lf,
          $$isDocumentHidden: Mf,
          $exceptionHandler: Nf,
          $filter: fd,
          $$forceReflow: Of,
          $interpolate: Pf,
          $interval: Qf,
          $$intervalFactory: Rf,
          $http: Sf,
          $httpParamSerializer: Tf,
          $httpParamSerializerJQLike: Uf,
          $httpBackend: Vf,
          $xhrFactory: Wf,
          $jsonpCallbacks: Xf,
          $location: Yf,
          $log: Zf,
          $parse: $f,
          $rootScope: ag,
          $q: bg,
          $$q: cg,
          $sce: dg,
          $sceDelegate: eg,
          $sniffer: fg,
          $$taskTrackerFactory: gg,
          $templateCache: hg,
          $templateRequest: ig,
          $$testability: jg,
          $timeout: kg,
          $window: lg,
          $$rAF: mg,
          $$jqLite: ng,
          $$Map: og,
          $$cookieReader: pg
        });
      }]).info({ angularVersion: "1.8.2" });
    }
    function xb(a, b) {
      return b.toUpperCase();
    }
    function yb(a) {
      return a.replace(qg, xb);
    }
    function mc(a) {
      a = a.nodeType;
      return 1 === a || !a || 9 === a;
    }
    function gd(a, b) {
      var d, c, e, f = b.createDocumentFragment(), g = [], k;
      if (nc.test(a)) {
        d = f.appendChild(b.createElement("div"));
        c = (rg.exec(a) || ["", ""])[1].toLowerCase();
        e = U.legacyXHTMLReplacement ? a.replace(sg, "<$1></$2>") : a;
        if (10 > wa)
          for (c = hb[c] || hb._default, d.innerHTML = c[1] + e + c[2], k = c[0]; k--; )
            d = d.firstChild;
        else {
          c = qa[c] || [];
          for (k = c.length; -1 < --k; )
            d.appendChild(z.document.createElement(c[k])), d = d.firstChild;
          d.innerHTML = e;
        }
        g = db(g, d.childNodes);
        d = f.firstChild;
        d.textContent = "";
      } else
        g.push(b.createTextNode(a));
      f.textContent = "";
      f.innerHTML = "";
      r(g, function(a2) {
        f.appendChild(a2);
      });
      return f;
    }
    function U(a) {
      if (a instanceof U)
        return a;
      var b;
      C(a) && (a = V(a), b = true);
      if (!(this instanceof U)) {
        if (b && "<" !== a.charAt(0))
          throw oc("nosel");
        return new U(a);
      }
      if (b) {
        b = z.document;
        var d;
        a = (d = tg.exec(a)) ? [b.createElement(d[1])] : (d = gd(a, b)) ? d.childNodes : [];
        pc(this, a);
      } else
        B(a) ? hd(a) : pc(this, a);
    }
    function qc(a) {
      return a.cloneNode(true);
    }
    function zb(a, b) {
      !b && mc(a) && x.cleanData([a]);
      a.querySelectorAll && x.cleanData(a.querySelectorAll("*"));
    }
    function id(a) {
      for (var b in a)
        return false;
      return true;
    }
    function jd(a) {
      var b = a.ng339, d = b && Ka[b], c = d && d.events, d = d && d.data;
      d && !id(d) || c && !id(c) || (delete Ka[b], a.ng339 = void 0);
    }
    function kd(a, b, d, c) {
      if (w2(c))
        throw oc("offargs");
      var e = (c = Ab(a)) && c.events, f = c && c.handle;
      if (f) {
        if (b) {
          var g = function(b2) {
            var c2 = e[b2];
            w2(d) && cb(c2 || [], d);
            w2(d) && c2 && 0 < c2.length || (a.removeEventListener(b2, f), delete e[b2]);
          };
          r(b.split(" "), function(a2) {
            g(a2);
            Bb[a2] && g(Bb[a2]);
          });
        } else
          for (b in e)
            "$destroy" !== b && a.removeEventListener(b, f), delete e[b];
        jd(a);
      }
    }
    function rc(a, b) {
      var d = a.ng339;
      if (d = d && Ka[d])
        b ? delete d.data[b] : d.data = {}, jd(a);
    }
    function Ab(a, b) {
      var d = a.ng339, d = d && Ka[d];
      b && !d && (a.ng339 = d = ++ug, d = Ka[d] = { events: {}, data: {}, handle: void 0 });
      return d;
    }
    function sc(a, b, d) {
      if (mc(a)) {
        var c, e = w2(d), f = !e && b && !D(b), g = !b;
        a = (a = Ab(a, !f)) && a.data;
        if (e)
          a[yb(b)] = d;
        else {
          if (g)
            return a;
          if (f)
            return a && a[yb(b)];
          for (c in b)
            a[yb(c)] = b[c];
        }
      }
    }
    function Cb(a, b) {
      return a.getAttribute ? -1 < (" " + (a.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").indexOf(" " + b + " ") : false;
    }
    function Db(a, b) {
      if (b && a.setAttribute) {
        var d = (" " + (a.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " "), c = d;
        r(b.split(" "), function(a2) {
          a2 = V(a2);
          c = c.replace(" " + a2 + " ", " ");
        });
        c !== d && a.setAttribute("class", V(c));
      }
    }
    function Eb(a, b) {
      if (b && a.setAttribute) {
        var d = (" " + (a.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " "), c = d;
        r(b.split(" "), function(a2) {
          a2 = V(a2);
          -1 === c.indexOf(" " + a2 + " ") && (c += a2 + " ");
        });
        c !== d && a.setAttribute("class", V(c));
      }
    }
    function pc(a, b) {
      if (b)
        if (b.nodeType)
          a[a.length++] = b;
        else {
          var d = b.length;
          if ("number" === typeof d && b.window !== b) {
            if (d)
              for (var c = 0; c < d; c++)
                a[a.length++] = b[c];
          } else
            a[a.length++] = b;
        }
    }
    function ld(a, b) {
      return Fb(a, "$" + (b || "ngController") + "Controller");
    }
    function Fb(a, b, d) {
      9 === a.nodeType && (a = a.documentElement);
      for (b = H(b) ? b : [b]; a; ) {
        for (var c = 0, e = b.length; c < e; c++)
          if (w2(d = x.data(a, b[c])))
            return d;
        a = a.parentNode || 11 === a.nodeType && a.host;
      }
    }
    function md(a) {
      for (zb(a, true); a.firstChild; )
        a.removeChild(a.firstChild);
    }
    function Gb(a, b) {
      b || zb(a);
      var d = a.parentNode;
      d && d.removeChild(a);
    }
    function vg(a, b) {
      b = b || z;
      if ("complete" === b.document.readyState)
        b.setTimeout(a);
      else
        x(b).on("load", a);
    }
    function hd(a) {
      function b() {
        z.document.removeEventListener("DOMContentLoaded", b);
        z.removeEventListener("load", b);
        a();
      }
      "complete" === z.document.readyState ? z.setTimeout(a) : (z.document.addEventListener("DOMContentLoaded", b), z.addEventListener("load", b));
    }
    function nd(a, b) {
      var d = Hb[b.toLowerCase()];
      return d && od[ua(a)] && d;
    }
    function wg(a, b) {
      var d = function(c, d2) {
        c.isDefaultPrevented = function() {
          return c.defaultPrevented;
        };
        var f = b[d2 || c.type], g = f ? f.length : 0;
        if (g) {
          if (A(c.immediatePropagationStopped)) {
            var k = c.stopImmediatePropagation;
            c.stopImmediatePropagation = function() {
              c.immediatePropagationStopped = true;
              c.stopPropagation && c.stopPropagation();
              k && k.call(c);
            };
          }
          c.isImmediatePropagationStopped = function() {
            return true === c.immediatePropagationStopped;
          };
          var h2 = f.specialHandlerWrapper || xg;
          1 < g && (f = ja(f));
          for (var l = 0; l < g; l++)
            c.isImmediatePropagationStopped() || h2(a, c, f[l]);
        }
      };
      d.elem = a;
      return d;
    }
    function xg(a, b, d) {
      d.call(a, b);
    }
    function yg(a, b, d) {
      var c = b.relatedTarget;
      c && (c === a || zg.call(a, c)) || d.call(a, b);
    }
    function ng() {
      this.$get = function() {
        return S(U, { hasClass: function(a, b) {
          a.attr && (a = a[0]);
          return Cb(a, b);
        }, addClass: function(a, b) {
          a.attr && (a = a[0]);
          return Eb(a, b);
        }, removeClass: function(a, b) {
          a.attr && (a = a[0]);
          return Db(a, b);
        } });
      };
    }
    function La(a, b) {
      var d = a && a.$$hashKey;
      if (d)
        return "function" === typeof d && (d = a.$$hashKey()), d;
      d = typeof a;
      return d = "function" === d || "object" === d && null !== a ? a.$$hashKey = d + ":" + (b || we)() : d + ":" + a;
    }
    function pd() {
      this._keys = [];
      this._values = [];
      this._lastKey = NaN;
      this._lastIndex = -1;
    }
    function qd(a) {
      a = Function.prototype.toString.call(a).replace(
        Ag,
        ""
      );
      return a.match(Bg) || a.match(Cg);
    }
    function Dg(a) {
      return (a = qd(a)) ? "function(" + (a[1] || "").replace(/[\s\r\n]+/, " ") + ")" : "fn";
    }
    function fb(a, b) {
      function d(a2) {
        return function(b2, c2) {
          if (D(b2))
            r(b2, Zb(a2));
          else
            return a2(b2, c2);
        };
      }
      function c(a2, b2) {
        Ja(a2, "service");
        if (B(b2) || H(b2))
          b2 = n2.instantiate(b2);
        if (!b2.$get)
          throw Ca("pget", a2);
        return p[a2 + "Provider"] = b2;
      }
      function e(a2, b2) {
        return function() {
          var c2 = t.invoke(b2, this);
          if (A(c2))
            throw Ca("undef", a2);
          return c2;
        };
      }
      function f(a2, b2, d2) {
        return c(a2, { $get: false !== d2 ? e(a2, b2) : b2 });
      }
      function g(a2) {
        gb(A(a2) || H(a2), "modulesToLoad", "not an array");
        var b2 = [], c2;
        r(a2, function(a3) {
          function d2(a4) {
            var b3, c3;
            b3 = 0;
            for (c3 = a4.length; b3 < c3; b3++) {
              var e2 = a4[b3], f2 = n2.get(e2[0]);
              f2[e2[1]].apply(f2, e2[2]);
            }
          }
          if (!m.get(a3)) {
            m.set(a3, true);
            try {
              C(a3) ? (c2 = lc(a3), t.modules[a3] = c2, b2 = b2.concat(g(c2.requires)).concat(c2._runBlocks), d2(c2._invokeQueue), d2(c2._configBlocks)) : B(a3) ? b2.push(n2.invoke(a3)) : H(a3) ? b2.push(n2.invoke(a3)) : tb(a3, "module");
            } catch (e2) {
              throw H(a3) && (a3 = a3[a3.length - 1]), e2.message && e2.stack && -1 === e2.stack.indexOf(e2.message) && (e2 = e2.message + "\n" + e2.stack), Ca(
                "modulerr",
                a3,
                e2.stack || e2.message || e2
              );
            }
          }
        });
        return b2;
      }
      function k(a2, c2) {
        function d2(b2, e3) {
          if (a2.hasOwnProperty(b2)) {
            if (a2[b2] === h2)
              throw Ca("cdep", b2 + " <- " + l.join(" <- "));
            return a2[b2];
          }
          try {
            return l.unshift(b2), a2[b2] = h2, a2[b2] = c2(b2, e3), a2[b2];
          } catch (f2) {
            throw a2[b2] === h2 && delete a2[b2], f2;
          } finally {
            l.shift();
          }
        }
        function e2(a3, c3, f2) {
          var g2 = [];
          a3 = fb.$$annotate(a3, b, f2);
          for (var h3 = 0, k2 = a3.length; h3 < k2; h3++) {
            var l2 = a3[h3];
            if ("string" !== typeof l2)
              throw Ca("itkn", l2);
            g2.push(c3 && c3.hasOwnProperty(l2) ? c3[l2] : d2(l2, f2));
          }
          return g2;
        }
        return { invoke: function(a3, b2, c3, d3) {
          "string" === typeof c3 && (d3 = c3, c3 = null);
          c3 = e2(a3, c3, d3);
          H(a3) && (a3 = a3[a3.length - 1]);
          d3 = a3;
          if (wa || "function" !== typeof d3)
            d3 = false;
          else {
            var f2 = d3.$$ngIsClass;
            Ga(f2) || (f2 = d3.$$ngIsClass = /^class\b/.test(Function.prototype.toString.call(d3)));
            d3 = f2;
          }
          return d3 ? (c3.unshift(null), new (Function.prototype.bind.apply(a3, c3))()) : a3.apply(b2, c3);
        }, instantiate: function(a3, b2, c3) {
          var d3 = H(a3) ? a3[a3.length - 1] : a3;
          a3 = e2(a3, b2, c3);
          a3.unshift(null);
          return new (Function.prototype.bind.apply(d3, a3))();
        }, get: d2, annotate: fb.$$annotate, has: function(b2) {
          return p.hasOwnProperty(b2 + "Provider") || a2.hasOwnProperty(b2);
        } };
      }
      b = true === b;
      var h2 = {}, l = [], m = new Ib(), p = { $provide: { provider: d(c), factory: d(f), service: d(function(a2, b2) {
        return f(a2, ["$injector", function(a3) {
          return a3.instantiate(b2);
        }]);
      }), value: d(function(a2, b2) {
        return f(a2, ia(b2), false);
      }), constant: d(function(a2, b2) {
        Ja(a2, "constant");
        p[a2] = b2;
        s2[a2] = b2;
      }), decorator: function(a2, b2) {
        var c2 = n2.get(a2 + "Provider"), d2 = c2.$get;
        c2.$get = function() {
          var a3 = t.invoke(d2, c2);
          return t.invoke(b2, null, { $delegate: a3 });
        };
      } } }, n2 = p.$injector = k(p, function(a2, b2) {
        ca.isString(b2) && l.push(b2);
        throw Ca("unpr", l.join(" <- "));
      }), s2 = {}, G = k(s2, function(a2, b2) {
        var c2 = n2.get(a2 + "Provider", b2);
        return t.invoke(c2.$get, c2, void 0, a2);
      }), t = G;
      p.$injectorProvider = { $get: ia(G) };
      t.modules = n2.modules = T();
      var N = g(a), t = G.get("$injector");
      t.strictDi = b;
      r(N, function(a2) {
        a2 && t.invoke(a2);
      });
      t.loadNewModules = function(a2) {
        r(g(a2), function(a3) {
          a3 && t.invoke(a3);
        });
      };
      return t;
    }
    function Bf() {
      var a = true;
      this.disableAutoScrolling = function() {
        a = false;
      };
      this.$get = ["$window", "$location", "$rootScope", function(b, d, c) {
        function e(a2) {
          var b2 = null;
          Array.prototype.some.call(a2, function(a3) {
            if ("a" === ua(a3))
              return b2 = a3, true;
          });
          return b2;
        }
        function f(a2) {
          if (a2) {
            a2.scrollIntoView();
            var c2;
            c2 = g.yOffset;
            B(c2) ? c2 = c2() : ac(c2) ? (c2 = c2[0], c2 = "fixed" !== b.getComputedStyle(c2).position ? 0 : c2.getBoundingClientRect().bottom) : X(c2) || (c2 = 0);
            c2 && (a2 = a2.getBoundingClientRect().top, b.scrollBy(0, a2 - c2));
          } else
            b.scrollTo(0, 0);
        }
        function g(a2) {
          a2 = C(a2) ? a2 : X(a2) ? a2.toString() : d.hash();
          var b2;
          a2 ? (b2 = k.getElementById(a2)) ? f(b2) : (b2 = e(k.getElementsByName(a2))) ? f(b2) : "top" === a2 && f(null) : f(null);
        }
        var k = b.document;
        a && c.$watch(function() {
          return d.hash();
        }, function(a2, b2) {
          a2 === b2 && "" === a2 || vg(function() {
            c.$evalAsync(g);
          });
        });
        return g;
      }];
    }
    function ib(a, b) {
      if (!a && !b)
        return "";
      if (!a)
        return b;
      if (!b)
        return a;
      H(a) && (a = a.join(" "));
      H(b) && (b = b.join(" "));
      return a + " " + b;
    }
    function Eg(a) {
      C(a) && (a = a.split(" "));
      var b = T();
      r(a, function(a2) {
        a2.length && (b[a2] = true);
      });
      return b;
    }
    function ra(a) {
      return D(a) ? a : {};
    }
    function Fg(a, b, d, c, e) {
      function f() {
        pa = null;
        k();
      }
      function g() {
        t = y();
        t = A(t) ? null : t;
        va(t, P) && (t = P);
        N = P = t;
      }
      function k() {
        var a2 = N;
        g();
        if (v !== h2.url() || a2 !== t)
          v = h2.url(), N = t, r(J, function(a3) {
            a3(h2.url(), t);
          });
      }
      var h2 = this, l = a.location, m = a.history, p = a.setTimeout, n2 = a.clearTimeout, s2 = {}, G = e(d);
      h2.isMock = false;
      h2.$$completeOutstandingRequest = G.completeTask;
      h2.$$incOutstandingRequestCount = G.incTaskCount;
      h2.notifyWhenNoOutstandingRequests = G.notifyWhenNoPendingTasks;
      var t, N, v = l.href, kc = b.find("base"), pa = null, y = c.history ? function() {
        try {
          return m.state;
        } catch (a2) {
        }
      } : E;
      g();
      h2.url = function(b2, d2, e2) {
        A(e2) && (e2 = null);
        l !== a.location && (l = a.location);
        m !== a.history && (m = a.history);
        if (b2) {
          var f2 = N === e2;
          b2 = ga(b2).href;
          if (v === b2 && (!c.history || f2))
            return h2;
          var k2 = v && Da(v) === Da(b2);
          v = b2;
          N = e2;
          !c.history || k2 && f2 ? (k2 || (pa = b2), d2 ? l.replace(b2) : k2 ? (d2 = l, e2 = b2, f2 = e2.indexOf("#"), e2 = -1 === f2 ? "" : e2.substr(f2), d2.hash = e2) : l.href = b2, l.href !== b2 && (pa = b2)) : (m[d2 ? "replaceState" : "pushState"](e2, "", b2), g());
          pa && (pa = b2);
          return h2;
        }
        return (pa || l.href).replace(/#$/, "");
      };
      h2.state = function() {
        return t;
      };
      var J = [], I = false, P = null;
      h2.onUrlChange = function(b2) {
        if (!I) {
          if (c.history)
            x(a).on("popstate", f);
          x(a).on("hashchange", f);
          I = true;
        }
        J.push(b2);
        return b2;
      };
      h2.$$applicationDestroyed = function() {
        x(a).off(
          "hashchange popstate",
          f
        );
      };
      h2.$$checkUrlChange = k;
      h2.baseHref = function() {
        var a2 = kc.attr("href");
        return a2 ? a2.replace(/^(https?:)?\/\/[^/]*/, "") : "";
      };
      h2.defer = function(a2, b2, c2) {
        var d2;
        b2 = b2 || 0;
        c2 = c2 || G.DEFAULT_TASK_TYPE;
        G.incTaskCount(c2);
        d2 = p(function() {
          delete s2[d2];
          G.completeTask(a2, c2);
        }, b2);
        s2[d2] = c2;
        return d2;
      };
      h2.defer.cancel = function(a2) {
        if (s2.hasOwnProperty(a2)) {
          var b2 = s2[a2];
          delete s2[a2];
          n2(a2);
          G.completeTask(E, b2);
          return true;
        }
        return false;
      };
    }
    function If() {
      this.$get = ["$window", "$log", "$sniffer", "$document", "$$taskTrackerFactory", function(a, b, d, c, e) {
        return new Fg(
          a,
          c,
          b,
          d,
          e
        );
      }];
    }
    function Jf() {
      this.$get = function() {
        function a(a2, c) {
          function e(a3) {
            a3 !== p && (n2 ? n2 === a3 && (n2 = a3.n) : n2 = a3, f(a3.n, a3.p), f(a3, p), p = a3, p.n = null);
          }
          function f(a3, b2) {
            a3 !== b2 && (a3 && (a3.p = b2), b2 && (b2.n = a3));
          }
          if (a2 in b)
            throw F("$cacheFactory")("iid", a2);
          var g = 0, k = S({}, c, { id: a2 }), h2 = T(), l = c && c.capacity || Number.MAX_VALUE, m = T(), p = null, n2 = null;
          return b[a2] = { put: function(a3, b2) {
            if (!A(b2)) {
              if (l < Number.MAX_VALUE) {
                var c2 = m[a3] || (m[a3] = { key: a3 });
                e(c2);
              }
              a3 in h2 || g++;
              h2[a3] = b2;
              g > l && this.remove(n2.key);
              return b2;
            }
          }, get: function(a3) {
            if (l < Number.MAX_VALUE) {
              var b2 = m[a3];
              if (!b2)
                return;
              e(b2);
            }
            return h2[a3];
          }, remove: function(a3) {
            if (l < Number.MAX_VALUE) {
              var b2 = m[a3];
              if (!b2)
                return;
              b2 === p && (p = b2.p);
              b2 === n2 && (n2 = b2.n);
              f(b2.n, b2.p);
              delete m[a3];
            }
            a3 in h2 && (delete h2[a3], g--);
          }, removeAll: function() {
            h2 = T();
            g = 0;
            m = T();
            p = n2 = null;
          }, destroy: function() {
            m = k = h2 = null;
            delete b[a2];
          }, info: function() {
            return S({}, k, { size: g });
          } };
        }
        var b = {};
        a.info = function() {
          var a2 = {};
          r(b, function(b2, e) {
            a2[e] = b2.info();
          });
          return a2;
        };
        a.get = function(a2) {
          return b[a2];
        };
        return a;
      };
    }
    function hg() {
      this.$get = ["$cacheFactory", function(a) {
        return a("templates");
      }];
    }
    function Zc(a, b) {
      function d(a2, b2, c2) {
        var d2 = /^([@&]|[=<](\*?))(\??)\s*([\w$]*)$/, e2 = T();
        r(a2, function(a3, f2) {
          a3 = a3.trim();
          if (a3 in p)
            e2[f2] = p[a3];
          else {
            var g2 = a3.match(d2);
            if (!g2)
              throw $2("iscp", b2, f2, a3, c2 ? "controller bindings definition" : "isolate scope definition");
            e2[f2] = { mode: g2[1][0], collection: "*" === g2[2], optional: "?" === g2[3], attrName: g2[4] || f2 };
            g2[4] && (p[a3] = e2[f2]);
          }
        });
        return e2;
      }
      function c(a2) {
        var b2 = a2.charAt(0);
        if (!b2 || b2 !== K(b2))
          throw $2("baddir", a2);
        if (a2 !== a2.trim())
          throw $2("baddir", a2);
      }
      function e(a2) {
        var b2 = a2.require || a2.controller && a2.name;
        !H(b2) && D(b2) && r(b2, function(a3, c2) {
          var d2 = a3.match(l);
          a3.substring(d2[0].length) || (b2[c2] = d2[0] + c2);
        });
        return b2;
      }
      var f = {}, g = /^\s*directive:\s*([\w-]+)\s+(.*)$/, k = /(([\w-]+)(?::([^;]+))?;?)/, h2 = Ae("ngSrc,ngSrcset,src,srcset"), l = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/, m = /^(on[a-z]+|formaction)$/, p = T();
      this.directive = function pa(b2, d2) {
        gb(b2, "name");
        Ja(b2, "directive");
        C(b2) ? (c(b2), gb(d2, "directiveFactory"), f.hasOwnProperty(b2) || (f[b2] = [], a.factory(b2 + "Directive", ["$injector", "$exceptionHandler", function(a2, c2) {
          var d3 = [];
          r(f[b2], function(f2, g2) {
            try {
              var h3 = a2.invoke(f2);
              B(h3) ? h3 = { compile: ia(h3) } : !h3.compile && h3.link && (h3.compile = ia(h3.link));
              h3.priority = h3.priority || 0;
              h3.index = g2;
              h3.name = h3.name || b2;
              h3.require = e(h3);
              var k2 = h3, l2 = h3.restrict;
              if (l2 && (!C(l2) || !/[EACM]/.test(l2)))
                throw $2("badrestrict", l2, b2);
              k2.restrict = l2 || "EA";
              h3.$$moduleName = f2.$$moduleName;
              d3.push(h3);
            } catch (m2) {
              c2(m2);
            }
          });
          return d3;
        }])), f[b2].push(d2)) : r(b2, Zb(pa));
        return this;
      };
      this.component = function y(a2, b2) {
        function c2(a3) {
          function e2(b3) {
            return B(b3) || H(b3) ? function(c3, d3) {
              return a3.invoke(b3, this, { $element: c3, $attrs: d3 });
            } : b3;
          }
          var f2 = b2.template || b2.templateUrl ? b2.template : "", g2 = { controller: d2, controllerAs: Gg(b2.controller) || b2.controllerAs || "$ctrl", template: e2(f2), templateUrl: e2(b2.templateUrl), transclude: b2.transclude, scope: {}, bindToController: b2.bindings || {}, restrict: "E", require: b2.require };
          r(b2, function(a4, b3) {
            "$" === b3.charAt(0) && (g2[b3] = a4);
          });
          return g2;
        }
        if (!C(a2))
          return r(a2, Zb(Va(this, y))), this;
        var d2 = b2.controller || function() {
        };
        r(b2, function(a3, b3) {
          "$" === b3.charAt(0) && (c2[b3] = a3, B(d2) && (d2[b3] = a3));
        });
        c2.$inject = ["$injector"];
        return this.directive(
          a2,
          c2
        );
      };
      this.aHrefSanitizationTrustedUrlList = function(a2) {
        return w2(a2) ? (b.aHrefSanitizationTrustedUrlList(a2), this) : b.aHrefSanitizationTrustedUrlList();
      };
      Object.defineProperty(this, "aHrefSanitizationWhitelist", { get: function() {
        return this.aHrefSanitizationTrustedUrlList;
      }, set: function(a2) {
        this.aHrefSanitizationTrustedUrlList = a2;
      } });
      this.imgSrcSanitizationTrustedUrlList = function(a2) {
        return w2(a2) ? (b.imgSrcSanitizationTrustedUrlList(a2), this) : b.imgSrcSanitizationTrustedUrlList();
      };
      Object.defineProperty(
        this,
        "imgSrcSanitizationWhitelist",
        { get: function() {
          return this.imgSrcSanitizationTrustedUrlList;
        }, set: function(a2) {
          this.imgSrcSanitizationTrustedUrlList = a2;
        } }
      );
      var n2 = true;
      this.debugInfoEnabled = function(a2) {
        return w2(a2) ? (n2 = a2, this) : n2;
      };
      var s2 = false;
      this.strictComponentBindingsEnabled = function(a2) {
        return w2(a2) ? (s2 = a2, this) : s2;
      };
      var G = 10;
      this.onChangesTtl = function(a2) {
        return arguments.length ? (G = a2, this) : G;
      };
      var t = true;
      this.commentDirectivesEnabled = function(a2) {
        return arguments.length ? (t = a2, this) : t;
      };
      var N = true;
      this.cssClassDirectivesEnabled = function(a2) {
        return arguments.length ? (N = a2, this) : N;
      };
      var v = T();
      this.addPropertySecurityContext = function(a2, b2, c2) {
        var d2 = a2.toLowerCase() + "|" + b2.toLowerCase();
        if (d2 in v && v[d2] !== c2)
          throw $2("ctxoverride", a2, b2, v[d2], c2);
        v[d2] = c2;
        return this;
      };
      (function() {
        function a2(b2, c2) {
          r(c2, function(a3) {
            v[a3.toLowerCase()] = b2;
          });
        }
        a2(W.HTML, ["iframe|srcdoc", "*|innerHTML", "*|outerHTML"]);
        a2(W.CSS, ["*|style"]);
        a2(W.URL, "area|href area|ping a|href a|ping blockquote|cite body|background del|cite input|src ins|cite q|cite".split(" "));
        a2(W.MEDIA_URL, "audio|src img|src img|srcset source|src source|srcset track|src video|src video|poster".split(" "));
        a2(W.RESOURCE_URL, "*|formAction applet|code applet|codebase base|href embed|src frame|src form|action head|profile html|manifest iframe|src link|href media|src object|codebase object|data script|src".split(" "));
      })();
      this.$get = ["$injector", "$interpolate", "$exceptionHandler", "$templateRequest", "$parse", "$controller", "$rootScope", "$sce", "$animate", function(a2, b2, c2, e2, p2, M, L, u, R) {
        function q2() {
          try {
            if (!--Ja2)
              throw Ua = void 0, $2("infchng", G);
            L.$apply(function() {
              for (var a3 = 0, b3 = Ua.length; a3 < b3; ++a3)
                try {
                  Ua[a3]();
                } catch (d2) {
                  c2(d2);
                }
              Ua = void 0;
            });
          } finally {
            Ja2++;
          }
        }
        function ma(a3, b3) {
          if (!a3)
            return a3;
          if (!C(a3))
            throw $2("srcset", b3, a3.toString());
          for (var c3 = "", d2 = V(a3), e3 = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/, e3 = /\s/.test(d2) ? e3 : /(,)/, d2 = d2.split(e3), e3 = Math.floor(d2.length / 2), f2 = 0; f2 < e3; f2++)
            var g2 = 2 * f2, c3 = c3 + u.getTrustedMediaUrl(V(d2[g2])), c3 = c3 + (" " + V(d2[g2 + 1]));
          d2 = V(d2[2 * f2]).split(/\s/);
          c3 += u.getTrustedMediaUrl(V(d2[0]));
          2 === d2.length && (c3 += " " + V(d2[1]));
          return c3;
        }
        function w3(a3, b3) {
          if (b3) {
            var c3 = Object.keys(b3), d2, e3, f2;
            d2 = 0;
            for (e3 = c3.length; d2 < e3; d2++)
              f2 = c3[d2], this[f2] = b3[f2];
          } else
            this.$attr = {};
          this.$$element = a3;
        }
        function O(a3, b3, c3) {
          Fa2.innerHTML = "<span " + b3 + ">";
          b3 = Fa2.firstChild.attributes;
          var d2 = b3[0];
          b3.removeNamedItem(d2.name);
          d2.value = c3;
          a3.attributes.setNamedItem(d2);
        }
        function sa(a3, b3) {
          try {
            a3.addClass(b3);
          } catch (c3) {
          }
        }
        function da(a3, b3, c3, d2, e3) {
          a3 instanceof x || (a3 = x(a3));
          var f2 = Xa(a3, b3, a3, c3, d2, e3);
          da.$$addScopeClass(a3);
          var g2 = null;
          return function(b4, c4, d3) {
            if (!a3)
              throw $2("multilink");
            gb(b4, "scope");
            e3 && e3.needsNewScope && (b4 = b4.$parent.$new());
            d3 = d3 || {};
            var h3 = d3.parentBoundTranscludeFn, k2 = d3.transcludeControllers;
            d3 = d3.futureParentElement;
            h3 && h3.$$boundTransclude && (h3 = h3.$$boundTransclude);
            g2 || (g2 = (d3 = d3 && d3[0]) ? "foreignobject" !== ua(d3) && la.call(d3).match(/SVG/) ? "svg" : "html" : "html");
            d3 = "html" !== g2 ? x(ja2(g2, x("<div></div>").append(a3).html())) : c4 ? Wa.clone.call(a3) : a3;
            if (k2)
              for (var l2 in k2)
                d3.data("$" + l2 + "Controller", k2[l2].instance);
            da.$$addScopeInfo(d3, b4);
            c4 && c4(d3, b4);
            f2 && f2(b4, d3, d3, h3);
            c4 || (a3 = f2 = null);
            return d3;
          };
        }
        function Xa(a3, b3, c3, d2, e3, f2) {
          function g2(a4, c4, d3, e4) {
            var f3, k3, l3, m3, p4, I2, t3;
            if (n3)
              for (t3 = Array(c4.length), m3 = 0; m3 < h3.length; m3 += 3)
                f3 = h3[m3], t3[f3] = c4[f3];
            else
              t3 = c4;
            m3 = 0;
            for (p4 = h3.length; m3 < p4; )
              k3 = t3[h3[m3++]], c4 = h3[m3++], f3 = h3[m3++], c4 ? (c4.scope ? (l3 = a4.$new(), da.$$addScopeInfo(x(k3), l3)) : l3 = a4, I2 = c4.transcludeOnThisElement ? ka(a4, c4.transclude, e4) : !c4.templateOnThisElement && e4 ? e4 : !e4 && b3 ? ka(a4, b3) : null, c4(f3, l3, k3, d3, I2)) : f3 && f3(a4, k3.childNodes, void 0, e4);
          }
          for (var h3 = [], k2 = H(a3) || a3 instanceof x, l2, m2, p3, I, n3, t2 = 0; t2 < a3.length; t2++) {
            l2 = new w3();
            11 === wa && jb(a3, t2, k2);
            m2 = tc(a3[t2], [], l2, 0 === t2 ? d2 : void 0, e3);
            (f2 = m2.length ? aa2(m2, a3[t2], l2, b3, c3, null, [], [], f2) : null) && f2.scope && da.$$addScopeClass(l2.$$element);
            l2 = f2 && f2.terminal || !(p3 = a3[t2].childNodes) || !p3.length ? null : Xa(
              p3,
              f2 ? (f2.transcludeOnThisElement || !f2.templateOnThisElement) && f2.transclude : b3
            );
            if (f2 || l2)
              h3.push(t2, f2, l2), I = true, n3 = n3 || f2;
            f2 = null;
          }
          return I ? g2 : null;
        }
        function jb(a3, b3, c3) {
          var d2 = a3[b3], e3 = d2.parentNode, f2;
          if (d2.nodeType === Pa)
            for (; ; ) {
              f2 = e3 ? d2.nextSibling : a3[b3 + 1];
              if (!f2 || f2.nodeType !== Pa)
                break;
              d2.nodeValue += f2.nodeValue;
              f2.parentNode && f2.parentNode.removeChild(f2);
              c3 && f2 === a3[b3 + 1] && a3.splice(b3 + 1, 1);
            }
        }
        function ka(a3, b3, c3) {
          function d2(e4, f3, g2, h3, k2) {
            e4 || (e4 = a3.$new(false, k2), e4.$$transcluded = true);
            return b3(e4, f3, {
              parentBoundTranscludeFn: c3,
              transcludeControllers: g2,
              futureParentElement: h3
            });
          }
          var e3 = d2.$$slots = T(), f2;
          for (f2 in b3.$$slots)
            e3[f2] = b3.$$slots[f2] ? ka(a3, b3.$$slots[f2], c3) : null;
          return d2;
        }
        function tc(a3, b3, d2, e3, f2) {
          var g2 = d2.$attr, h3;
          switch (a3.nodeType) {
            case 1:
              h3 = ua(a3);
              Y2(b3, xa(h3), "E", e3, f2);
              for (var l2, m2, n3, t2, J, s3 = a3.attributes, v2 = 0, G2 = s3 && s3.length; v2 < G2; v2++) {
                var P = false, N2 = false, r2 = false, y = false, u2 = false, M2;
                l2 = s3[v2];
                m2 = l2.name;
                t2 = l2.value;
                n3 = xa(m2.toLowerCase());
                (J = n3.match(Ra2)) ? (r2 = "Attr" === J[1], y = "Prop" === J[1], u2 = "On" === J[1], m2 = m2.replace(rd, "").toLowerCase().substr(4 + J[1].length).replace(/_(.)/g, function(a4, b4) {
                  return b4.toUpperCase();
                })) : (M2 = n3.match(Sa2)) && ca2(M2[1]) && (P = m2, N2 = m2.substr(0, m2.length - 5) + "end", m2 = m2.substr(0, m2.length - 6));
                if (y || u2)
                  d2[n3] = t2, g2[n3] = l2.name, y ? Ea2(a3, b3, n3, m2) : b3.push(sd(p2, L, c2, n3, m2, false));
                else {
                  n3 = xa(m2.toLowerCase());
                  g2[n3] = m2;
                  if (r2 || !d2.hasOwnProperty(n3))
                    d2[n3] = t2, nd(a3, n3) && (d2[n3] = true);
                  Ia2(a3, b3, t2, n3, r2);
                  Y2(b3, n3, "A", e3, f2, P, N2);
                }
              }
              "input" === h3 && "hidden" === a3.getAttribute("type") && a3.setAttribute("autocomplete", "off");
              if (!Qa2)
                break;
              g2 = a3.className;
              D(g2) && (g2 = g2.animVal);
              if (C(g2) && "" !== g2)
                for (; a3 = k.exec(g2); )
                  n3 = xa(a3[2]), Y2(b3, n3, "C", e3, f2) && (d2[n3] = V(a3[3])), g2 = g2.substr(a3.index + a3[0].length);
              break;
            case Pa:
              na2(b3, a3.nodeValue);
              break;
            case 8:
              if (!Oa2)
                break;
              F2(a3, b3, d2, e3, f2);
          }
          b3.sort(ia2);
          return b3;
        }
        function F2(a3, b3, c3, d2, e3) {
          try {
            var f2 = g.exec(a3.nodeValue);
            if (f2) {
              var h3 = xa(f2[1]);
              Y2(b3, h3, "M", d2, e3) && (c3[h3] = V(f2[2]));
            }
          } catch (k2) {
          }
        }
        function U2(a3, b3, c3) {
          var d2 = [], e3 = 0;
          if (b3 && a3.hasAttribute && a3.hasAttribute(b3)) {
            do {
              if (!a3)
                throw $2("uterdir", b3, c3);
              1 === a3.nodeType && (a3.hasAttribute(b3) && e3++, a3.hasAttribute(c3) && e3--);
              d2.push(a3);
              a3 = a3.nextSibling;
            } while (0 < e3);
          } else
            d2.push(a3);
          return x(d2);
        }
        function W2(a3, b3, c3) {
          return function(d2, e3, f2, g2, h3) {
            e3 = U2(
              e3[0],
              b3,
              c3
            );
            return a3(d2, e3, f2, g2, h3);
          };
        }
        function Z2(a3, b3, c3, d2, e3, f2) {
          var g2;
          return a3 ? da(b3, c3, d2, e3, f2) : function() {
            g2 || (g2 = da(b3, c3, d2, e3, f2), b3 = c3 = f2 = null);
            return g2.apply(this, arguments);
          };
        }
        function aa2(a3, b3, d2, e3, f2, g2, h3, k2, l2) {
          function m2(a4, b4, c3, d3) {
            if (a4) {
              c3 && (a4 = W2(a4, c3, d3));
              a4.require = u2.require;
              a4.directiveName = Q;
              if (s3 === u2 || u2.$$isolateScope)
                a4 = Ba2(a4, { isolateScope: true });
              h3.push(a4);
            }
            if (b4) {
              c3 && (b4 = W2(b4, c3, d3));
              b4.require = u2.require;
              b4.directiveName = Q;
              if (s3 === u2 || u2.$$isolateScope)
                b4 = Ba2(b4, { isolateScope: true });
              k2.push(b4);
            }
          }
          function p3(a4, e4, f3, g3, l3) {
            function m3(a5, b4, c3, d3) {
              var e5;
              bb(a5) || (d3 = c3, c3 = b4, b4 = a5, a5 = void 0);
              N2 && (e5 = P2);
              c3 || (c3 = N2 ? Q2.parent() : Q2);
              if (d3) {
                var f4 = l3.$$slots[d3];
                if (f4)
                  return f4(a5, b4, e5, c3, R3);
                if (A(f4))
                  throw $2("noslot", d3, Aa(Q2));
              } else
                return l3(a5, b4, e5, c3, R3);
            }
            var n4, u3, L3, y2, G3, P2, M3, Q2;
            b3 === f3 ? (g3 = d2, Q2 = d2.$$element) : (Q2 = x(f3), g3 = new w3(Q2, d2));
            G3 = e4;
            s3 ? y2 = e4.$new(true) : t2 && (G3 = e4.$parent);
            l3 && (M3 = m3, M3.$$boundTransclude = l3, M3.isSlotFilled = function(a5) {
              return !!l3.$$slots[a5];
            });
            J && (P2 = ea2(Q2, g3, M3, J, y2, e4, s3));
            s3 && (da.$$addScopeInfo(Q2, y2, true, !(v2 && (v2 === s3 || v2 === s3.$$originalDirective))), da.$$addScopeClass(Q2, true), y2.$$isolateBindings = s3.$$isolateBindings, u3 = Da2(e4, g3, y2, y2.$$isolateBindings, s3), u3.removeWatches && y2.$on("$destroy", u3.removeWatches));
            for (n4 in P2) {
              u3 = J[n4];
              L3 = P2[n4];
              var Hg = u3.$$bindings.bindToController;
              L3.instance = L3();
              Q2.data("$" + u3.name + "Controller", L3.instance);
              L3.bindingInfo = Da2(G3, g3, L3.instance, Hg, u3);
            }
            r(J, function(a5, b4) {
              var c3 = a5.require;
              a5.bindToController && !H(c3) && D(c3) && S(P2[b4].instance, X2(b4, c3, Q2, P2));
            });
            r(P2, function(a5) {
              var b4 = a5.instance;
              if (B(b4.$onChanges))
                try {
                  b4.$onChanges(a5.bindingInfo.initialChanges);
                } catch (d3) {
                  c2(d3);
                }
              if (B(b4.$onInit))
                try {
                  b4.$onInit();
                } catch (e5) {
                  c2(e5);
                }
              B(b4.$doCheck) && (G3.$watch(function() {
                b4.$doCheck();
              }), b4.$doCheck());
              B(b4.$onDestroy) && G3.$on("$destroy", function() {
                b4.$onDestroy();
              });
            });
            n4 = 0;
            for (u3 = h3.length; n4 < u3; n4++)
              L3 = h3[n4], Ca2(L3, L3.isolateScope ? y2 : e4, Q2, g3, L3.require && X2(L3.directiveName, L3.require, Q2, P2), M3);
            var R3 = e4;
            s3 && (s3.template || null === s3.templateUrl) && (R3 = y2);
            a4 && a4(R3, f3.childNodes, void 0, l3);
            for (n4 = k2.length - 1; 0 <= n4; n4--)
              L3 = k2[n4], Ca2(L3, L3.isolateScope ? y2 : e4, Q2, g3, L3.require && X2(L3.directiveName, L3.require, Q2, P2), M3);
            r(P2, function(a5) {
              a5 = a5.instance;
              B(a5.$postLink) && a5.$postLink();
            });
          }
          l2 = l2 || {};
          for (var n3 = -Number.MAX_VALUE, t2 = l2.newScopeDirective, J = l2.controllerDirectives, s3 = l2.newIsolateScopeDirective, v2 = l2.templateDirective, L2 = l2.nonTlbTranscludeDirective, G2 = false, P = false, N2 = l2.hasElementTranscludeDirective, y = d2.$$element = x(b3), u2, Q, M2, R2 = e3, q3, ma2 = false, Jb = false, O2, sa2 = 0, C2 = a3.length; sa2 < C2; sa2++) {
            u2 = a3[sa2];
            var E2 = u2.$$start, jb2 = u2.$$end;
            E2 && (y = U2(b3, E2, jb2));
            M2 = void 0;
            if (n3 > u2.priority)
              break;
            if (O2 = u2.scope)
              u2.templateUrl || (D(O2) ? (ba2("new/isolated scope", s3 || t2, u2, y), s3 = u2) : ba2("new/isolated scope", s3, u2, y)), t2 = t2 || u2;
            Q = u2.name;
            if (!ma2 && (u2.replace && (u2.templateUrl || u2.template) || u2.transclude && !u2.$$tlb)) {
              for (O2 = sa2 + 1; ma2 = a3[O2++]; )
                if (ma2.transclude && !ma2.$$tlb || ma2.replace && (ma2.templateUrl || ma2.template)) {
                  Jb = true;
                  break;
                }
              ma2 = true;
            }
            !u2.templateUrl && u2.controller && (J = J || T(), ba2("'" + Q + "' controller", J[Q], u2, y), J[Q] = u2);
            if (O2 = u2.transclude)
              if (G2 = true, u2.$$tlb || (ba2("transclusion", L2, u2, y), L2 = u2), "element" === O2)
                N2 = true, n3 = u2.priority, M2 = y, y = d2.$$element = x(da.$$createComment(Q, d2[Q])), b3 = y[0], oa2(f2, Ha.call(M2, 0), b3), R2 = Z2(Jb, M2, e3, n3, g2 && g2.name, { nonTlbTranscludeDirective: L2 });
              else {
                var ka2 = T();
                if (D(O2)) {
                  M2 = z.document.createDocumentFragment();
                  var Xa2 = T(), F3 = T();
                  r(O2, function(a4, b4) {
                    var c3 = "?" === a4.charAt(0);
                    a4 = c3 ? a4.substring(1) : a4;
                    Xa2[a4] = b4;
                    ka2[b4] = null;
                    F3[b4] = c3;
                  });
                  r(y.contents(), function(a4) {
                    var b4 = Xa2[xa(ua(a4))];
                    b4 ? (F3[b4] = true, ka2[b4] = ka2[b4] || z.document.createDocumentFragment(), ka2[b4].appendChild(a4)) : M2.appendChild(a4);
                  });
                  r(F3, function(a4, b4) {
                    if (!a4)
                      throw $2("reqslot", b4);
                  });
                  for (var K2 in ka2)
                    ka2[K2] && (R2 = x(ka2[K2].childNodes), ka2[K2] = Z2(Jb, R2, e3));
                  M2 = x(M2.childNodes);
                } else
                  M2 = x(qc(b3)).contents();
                y.empty();
                R2 = Z2(Jb, M2, e3, void 0, void 0, { needsNewScope: u2.$$isolateScope || u2.$$newScope });
                R2.$$slots = ka2;
              }
            if (u2.template)
              if (P = true, ba2("template", v2, u2, y), v2 = u2, O2 = B(u2.template) ? u2.template(y, d2) : u2.template, O2 = Na2(O2), u2.replace) {
                g2 = u2;
                M2 = nc.test(O2) ? td(ja2(u2.templateNamespace, V(O2))) : [];
                b3 = M2[0];
                if (1 !== M2.length || 1 !== b3.nodeType)
                  throw $2("tplrt", Q, "");
                oa2(f2, y, b3);
                C2 = { $attr: {} };
                O2 = tc(b3, [], C2);
                var Ig = a3.splice(sa2 + 1, a3.length - (sa2 + 1));
                (s3 || t2) && fa2(O2, s3, t2);
                a3 = a3.concat(O2).concat(Ig);
                ga2(d2, C2);
                C2 = a3.length;
              } else
                y.html(O2);
            if (u2.templateUrl)
              P = true, ba2("template", v2, u2, y), v2 = u2, u2.replace && (g2 = u2), p3 = ha2(a3.splice(sa2, a3.length - sa2), y, d2, f2, G2 && R2, h3, k2, { controllerDirectives: J, newScopeDirective: t2 !== u2 && t2, newIsolateScopeDirective: s3, templateDirective: v2, nonTlbTranscludeDirective: L2 }), C2 = a3.length;
            else if (u2.compile)
              try {
                q3 = u2.compile(y, d2, R2);
                var Y3 = u2.$$originalDirective || u2;
                B(q3) ? m2(null, Va(Y3, q3), E2, jb2) : q3 && m2(Va(Y3, q3.pre), Va(Y3, q3.post), E2, jb2);
              } catch (ca3) {
                c2(ca3, Aa(y));
              }
            u2.terminal && (p3.terminal = true, n3 = Math.max(n3, u2.priority));
          }
          p3.scope = t2 && true === t2.scope;
          p3.transcludeOnThisElement = G2;
          p3.templateOnThisElement = P;
          p3.transclude = R2;
          l2.hasElementTranscludeDirective = N2;
          return p3;
        }
        function X2(a3, b3, c3, d2) {
          var e3;
          if (C(b3)) {
            var f2 = b3.match(l);
            b3 = b3.substring(f2[0].length);
            var g2 = f2[1] || f2[3], f2 = "?" === f2[2];
            "^^" === g2 ? c3 = c3.parent() : e3 = (e3 = d2 && d2[b3]) && e3.instance;
            if (!e3) {
              var h3 = "$" + b3 + "Controller";
              e3 = "^^" === g2 && c3[0] && 9 === c3[0].nodeType ? null : g2 ? c3.inheritedData(h3) : c3.data(h3);
            }
            if (!e3 && !f2)
              throw $2("ctreq", b3, a3);
          } else if (H(b3))
            for (e3 = [], g2 = 0, f2 = b3.length; g2 < f2; g2++)
              e3[g2] = X2(a3, b3[g2], c3, d2);
          else
            D(b3) && (e3 = {}, r(b3, function(b4, f3) {
              e3[f3] = X2(a3, b4, c3, d2);
            }));
          return e3 || null;
        }
        function ea2(a3, b3, c3, d2, e3, f2, g2) {
          var h3 = T(), k2;
          for (k2 in d2) {
            var l2 = d2[k2], m2 = { $scope: l2 === g2 || l2.$$isolateScope ? e3 : f2, $element: a3, $attrs: b3, $transclude: c3 }, p3 = l2.controller;
            "@" === p3 && (p3 = b3[l2.name]);
            m2 = M(p3, m2, true, l2.controllerAs);
            h3[l2.name] = m2;
            a3.data("$" + l2.name + "Controller", m2.instance);
          }
          return h3;
        }
        function fa2(a3, b3, c3) {
          for (var d2 = 0, e3 = a3.length; d2 < e3; d2++)
            a3[d2] = bc(a3[d2], { $$isolateScope: b3, $$newScope: c3 });
        }
        function Y2(b3, c3, e3, g2, h3, k2, l2) {
          if (c3 === h3)
            return null;
          var m2 = null;
          if (f.hasOwnProperty(c3)) {
            h3 = a2.get(c3 + "Directive");
            for (var p3 = 0, n3 = h3.length; p3 < n3; p3++)
              if (c3 = h3[p3], (A(g2) || g2 > c3.priority) && -1 !== c3.restrict.indexOf(e3)) {
                k2 && (c3 = bc(c3, { $$start: k2, $$end: l2 }));
                if (!c3.$$bindings) {
                  var I = m2 = c3, t2 = c3.name, u2 = { isolateScope: null, bindToController: null };
                  D(I.scope) && (true === I.bindToController ? (u2.bindToController = d(I.scope, t2, true), u2.isolateScope = {}) : u2.isolateScope = d(I.scope, t2, false));
                  D(I.bindToController) && (u2.bindToController = d(I.bindToController, t2, true));
                  if (u2.bindToController && !I.controller)
                    throw $2("noctrl", t2);
                  m2 = m2.$$bindings = u2;
                  D(m2.isolateScope) && (c3.$$isolateBindings = m2.isolateScope);
                }
                b3.push(c3);
                m2 = c3;
              }
          }
          return m2;
        }
        function ca2(b3) {
          if (f.hasOwnProperty(b3)) {
            for (var c3 = a2.get(b3 + "Directive"), d2 = 0, e3 = c3.length; d2 < e3; d2++)
              if (b3 = c3[d2], b3.multiElement)
                return true;
          }
          return false;
        }
        function ga2(a3, b3) {
          var c3 = b3.$attr, d2 = a3.$attr;
          r(a3, function(d3, e3) {
            "$" !== e3.charAt(0) && (b3[e3] && b3[e3] !== d3 && (d3 = d3.length ? d3 + (("style" === e3 ? ";" : " ") + b3[e3]) : b3[e3]), a3.$set(e3, d3, true, c3[e3]));
          });
          r(b3, function(b4, e3) {
            a3.hasOwnProperty(e3) || "$" === e3.charAt(0) || (a3[e3] = b4, "class" !== e3 && "style" !== e3 && (d2[e3] = c3[e3]));
          });
        }
        function ha2(a3, b3, d2, f2, g2, h3, k2, l2) {
          var m2 = [], p3, n3, t2 = b3[0], u2 = a3.shift(), J = bc(u2, { templateUrl: null, transclude: null, replace: null, $$originalDirective: u2 }), s3 = B(u2.templateUrl) ? u2.templateUrl(b3, d2) : u2.templateUrl, L2 = u2.templateNamespace;
          b3.empty();
          e2(s3).then(function(c3) {
            var e3, I;
            c3 = Na2(c3);
            if (u2.replace) {
              c3 = nc.test(c3) ? td(ja2(L2, V(c3))) : [];
              e3 = c3[0];
              if (1 !== c3.length || 1 !== e3.nodeType)
                throw $2("tplrt", u2.name, s3);
              c3 = { $attr: {} };
              oa2(f2, b3, e3);
              var v2 = tc(e3, [], c3);
              D(u2.scope) && fa2(v2, true);
              a3 = v2.concat(a3);
              ga2(d2, c3);
            } else
              e3 = t2, b3.html(c3);
            a3.unshift(J);
            p3 = aa2(a3, e3, d2, g2, b3, u2, h3, k2, l2);
            r(f2, function(a4, c4) {
              a4 === e3 && (f2[c4] = b3[0]);
            });
            for (n3 = Xa(b3[0].childNodes, g2); m2.length; ) {
              c3 = m2.shift();
              I = m2.shift();
              var y = m2.shift(), P = m2.shift(), v2 = b3[0];
              if (!c3.$$destroyed) {
                if (I !== t2) {
                  var G2 = I.className;
                  l2.hasElementTranscludeDirective && u2.replace || (v2 = qc(e3));
                  oa2(
                    y,
                    x(I),
                    v2
                  );
                  sa(x(v2), G2);
                }
                I = p3.transcludeOnThisElement ? ka(c3, p3.transclude, P) : P;
                p3(n3, c3, v2, f2, I);
              }
            }
            m2 = null;
          }).catch(function(a4) {
            dc(a4) && c2(a4);
          });
          return function(a4, b4, c3, d3, e3) {
            a4 = e3;
            b4.$$destroyed || (m2 ? m2.push(b4, c3, d3, a4) : (p3.transcludeOnThisElement && (a4 = ka(b4, p3.transclude, e3)), p3(n3, b4, c3, d3, a4)));
          };
        }
        function ia2(a3, b3) {
          var c3 = b3.priority - a3.priority;
          return 0 !== c3 ? c3 : a3.name !== b3.name ? a3.name < b3.name ? -1 : 1 : a3.index - b3.index;
        }
        function ba2(a3, b3, c3, d2) {
          function e3(a4) {
            return a4 ? " (module: " + a4 + ")" : "";
          }
          if (b3)
            throw $2(
              "multidir",
              b3.name,
              e3(b3.$$moduleName),
              c3.name,
              e3(c3.$$moduleName),
              a3,
              Aa(d2)
            );
        }
        function na2(a3, c3) {
          var d2 = b2(c3, true);
          d2 && a3.push({ priority: 0, compile: function(a4) {
            a4 = a4.parent();
            var b3 = !!a4.length;
            b3 && da.$$addBindingClass(a4);
            return function(a5, c4) {
              var e3 = c4.parent();
              b3 || da.$$addBindingClass(e3);
              da.$$addBindingInfo(e3, d2.expressions);
              a5.$watch(d2, function(a6) {
                c4[0].nodeValue = a6;
              });
            };
          } });
        }
        function ja2(a3, b3) {
          a3 = K(a3 || "html");
          switch (a3) {
            case "svg":
            case "math":
              var c3 = z.document.createElement("div");
              c3.innerHTML = "<" + a3 + ">" + b3 + "</" + a3 + ">";
              return c3.childNodes[0].childNodes;
            default:
              return b3;
          }
        }
        function qa2(a3, b3) {
          if ("srcdoc" === b3)
            return u.HTML;
          if ("src" === b3 || "ngSrc" === b3)
            return -1 === ["img", "video", "audio", "source", "track"].indexOf(a3) ? u.RESOURCE_URL : u.MEDIA_URL;
          if ("xlinkHref" === b3)
            return "image" === a3 ? u.MEDIA_URL : "a" === a3 ? u.URL : u.RESOURCE_URL;
          if ("form" === a3 && "action" === b3 || "base" === a3 && "href" === b3 || "link" === a3 && "href" === b3)
            return u.RESOURCE_URL;
          if ("a" === a3 && ("href" === b3 || "ngHref" === b3))
            return u.URL;
        }
        function ya2(a3, b3) {
          var c3 = b3.toLowerCase();
          return v[a3 + "|" + c3] || v["*|" + c3];
        }
        function za2(a3) {
          return ma(u.valueOf(a3), "ng-prop-srcset");
        }
        function Ea2(a3, b3, c3, d2) {
          if (m.test(d2))
            throw $2("nodomevents");
          a3 = ua(a3);
          var e3 = ya2(a3, d2), f2 = Ta;
          "srcset" !== d2 || "img" !== a3 && "source" !== a3 ? e3 && (f2 = u.getTrusted.bind(u, e3)) : f2 = za2;
          b3.push({ priority: 100, compile: function(a4, b4) {
            var e4 = p2(b4[c3]), g2 = p2(b4[c3], function(a5) {
              return u.valueOf(a5);
            });
            return { pre: function(a5, b5) {
              function c4() {
                var g3 = e4(a5);
                b5[0][d2] = f2(g3);
              }
              c4();
              a5.$watch(g2, c4);
            } };
          } });
        }
        function Ia2(a3, c3, d2, e3, f2) {
          var g2 = ua(a3), k2 = qa2(g2, e3), l2 = h2[e3] || f2, p3 = b2(d2, !f2, k2, l2);
          if (p3) {
            if ("multiple" === e3 && "select" === g2)
              throw $2("selmulti", Aa(a3));
            if (m.test(e3))
              throw $2("nodomevents");
            c3.push({
              priority: 100,
              compile: function() {
                return { pre: function(a4, c4, f3) {
                  c4 = f3.$$observers || (f3.$$observers = T());
                  var g3 = f3[e3];
                  g3 !== d2 && (p3 = g3 && b2(g3, true, k2, l2), d2 = g3);
                  p3 && (f3[e3] = p3(a4), (c4[e3] || (c4[e3] = [])).$$inter = true, (f3.$$observers && f3.$$observers[e3].$$scope || a4).$watch(p3, function(a5, b3) {
                    "class" === e3 && a5 !== b3 ? f3.$updateClass(a5, b3) : f3.$set(e3, a5);
                  }));
                } };
              }
            });
          }
        }
        function oa2(a3, b3, c3) {
          var d2 = b3[0], e3 = b3.length, f2 = d2.parentNode, g2, h3;
          if (a3) {
            for (g2 = 0, h3 = a3.length; g2 < h3; g2++)
              if (a3[g2] === d2) {
                a3[g2++] = c3;
                h3 = g2 + e3 - 1;
                for (var k2 = a3.length; g2 < k2; g2++, h3++)
                  h3 < k2 ? a3[g2] = a3[h3] : delete a3[g2];
                a3.length -= e3 - 1;
                a3.context === d2 && (a3.context = c3);
                break;
              }
          }
          f2 && f2.replaceChild(c3, d2);
          a3 = z.document.createDocumentFragment();
          for (g2 = 0; g2 < e3; g2++)
            a3.appendChild(b3[g2]);
          x.hasData(d2) && (x.data(c3, x.data(d2)), x(d2).off("$destroy"));
          x.cleanData(a3.querySelectorAll("*"));
          for (g2 = 1; g2 < e3; g2++)
            delete b3[g2];
          b3[0] = c3;
          b3.length = 1;
        }
        function Ba2(a3, b3) {
          return S(function() {
            return a3.apply(null, arguments);
          }, a3, b3);
        }
        function Ca2(a3, b3, d2, e3, f2, g2) {
          try {
            a3(b3, d2, e3, f2, g2);
          } catch (h3) {
            c2(h3, Aa(d2));
          }
        }
        function ra2(a3, b3) {
          if (s2)
            throw $2("missingattr", a3, b3);
        }
        function Da2(a3, c3, d2, e3, f2) {
          function g2(b3, c4, e4) {
            B(d2.$onChanges) && !ec(c4, e4) && (Ua || (a3.$$postDigest(q2), Ua = []), m2 || (m2 = {}, Ua.push(h3)), m2[b3] && (e4 = m2[b3].previousValue), m2[b3] = new Kb(e4, c4));
          }
          function h3() {
            d2.$onChanges(m2);
            m2 = void 0;
          }
          var k2 = [], l2 = {}, m2;
          r(e3, function(e4, h4) {
            var m3 = e4.attrName, n3 = e4.optional, I, t2, u2, s3;
            switch (e4.mode) {
              case "@":
                n3 || ta.call(c3, m3) || (ra2(m3, f2.name), d2[h4] = c3[m3] = void 0);
                n3 = c3.$observe(m3, function(a4) {
                  if (C(a4) || Ga(a4))
                    g2(h4, a4, d2[h4]), d2[h4] = a4;
                });
                c3.$$observers[m3].$$scope = a3;
                I = c3[m3];
                C(I) ? d2[h4] = b2(I)(a3) : Ga(I) && (d2[h4] = I);
                l2[h4] = new Kb(uc, d2[h4]);
                k2.push(n3);
                break;
              case "=":
                if (!ta.call(c3, m3)) {
                  if (n3)
                    break;
                  ra2(
                    m3,
                    f2.name
                  );
                  c3[m3] = void 0;
                }
                if (n3 && !c3[m3])
                  break;
                t2 = p2(c3[m3]);
                s3 = t2.literal ? va : ec;
                u2 = t2.assign || function() {
                  I = d2[h4] = t2(a3);
                  throw $2("nonassign", c3[m3], m3, f2.name);
                };
                I = d2[h4] = t2(a3);
                n3 = function(b3) {
                  s3(b3, d2[h4]) || (s3(b3, I) ? u2(a3, b3 = d2[h4]) : d2[h4] = b3);
                  return I = b3;
                };
                n3.$stateful = true;
                n3 = e4.collection ? a3.$watchCollection(c3[m3], n3) : a3.$watch(p2(c3[m3], n3), null, t2.literal);
                k2.push(n3);
                break;
              case "<":
                if (!ta.call(c3, m3)) {
                  if (n3)
                    break;
                  ra2(m3, f2.name);
                  c3[m3] = void 0;
                }
                if (n3 && !c3[m3])
                  break;
                t2 = p2(c3[m3]);
                var v2 = t2.literal, L2 = d2[h4] = t2(a3);
                l2[h4] = new Kb(uc, d2[h4]);
                n3 = a3[e4.collection ? "$watchCollection" : "$watch"](
                  t2,
                  function(a4, b3) {
                    if (b3 === a4) {
                      if (b3 === L2 || v2 && va(b3, L2))
                        return;
                      b3 = L2;
                    }
                    g2(h4, a4, b3);
                    d2[h4] = a4;
                  }
                );
                k2.push(n3);
                break;
              case "&":
                n3 || ta.call(c3, m3) || ra2(m3, f2.name);
                t2 = c3.hasOwnProperty(m3) ? p2(c3[m3]) : E;
                if (t2 === E && n3)
                  break;
                d2[h4] = function(b3) {
                  return t2(a3, b3);
                };
            }
          });
          return { initialChanges: l2, removeWatches: k2.length && function() {
            for (var a4 = 0, b3 = k2.length; a4 < b3; ++a4)
              k2[a4]();
          } };
        }
        var Ma2 = /^\w/, Fa2 = z.document.createElement("div"), Oa2 = t, Qa2 = N, Ja2 = G, Ua;
        w3.prototype = { $normalize: xa, $addClass: function(a3) {
          a3 && 0 < a3.length && R.addClass(this.$$element, a3);
        }, $removeClass: function(a3) {
          a3 && 0 < a3.length && R.removeClass(this.$$element, a3);
        }, $updateClass: function(a3, b3) {
          var c3 = ud(a3, b3);
          c3 && c3.length && R.addClass(this.$$element, c3);
          (c3 = ud(b3, a3)) && c3.length && R.removeClass(this.$$element, c3);
        }, $set: function(a3, b3, d2, e3) {
          var f2 = nd(this.$$element[0], a3), g2 = vd[a3], h3 = a3;
          f2 ? (this.$$element.prop(a3, b3), e3 = f2) : g2 && (this[g2] = b3, h3 = g2);
          this[a3] = b3;
          e3 ? this.$attr[a3] = e3 : (e3 = this.$attr[a3]) || (this.$attr[a3] = e3 = Xc(a3, "-"));
          "img" === ua(this.$$element) && "srcset" === a3 && (this[a3] = b3 = ma(b3, "$set('srcset', value)"));
          false !== d2 && (null === b3 || A(b3) ? this.$$element.removeAttr(e3) : Ma2.test(e3) ? f2 && false === b3 ? this.$$element.removeAttr(e3) : this.$$element.attr(e3, b3) : O(this.$$element[0], e3, b3));
          (a3 = this.$$observers) && r(a3[h3], function(a4) {
            try {
              a4(b3);
            } catch (d3) {
              c2(d3);
            }
          });
        }, $observe: function(a3, b3) {
          var c3 = this, d2 = c3.$$observers || (c3.$$observers = T()), e3 = d2[a3] || (d2[a3] = []);
          e3.push(b3);
          L.$evalAsync(function() {
            e3.$$inter || !c3.hasOwnProperty(a3) || A(c3[a3]) || b3(c3[a3]);
          });
          return function() {
            cb(e3, b3);
          };
        } };
        var Ka2 = b2.startSymbol(), La2 = b2.endSymbol(), Na2 = "{{" === Ka2 && "}}" === La2 ? Ta : function(a3) {
          return a3.replace(/\{\{/g, Ka2).replace(/}}/g, La2);
        }, Ra2 = /^ng(Attr|Prop|On)([A-Z].*)$/, Sa2 = /^(.+)Start$/;
        da.$$addBindingInfo = n2 ? function(a3, b3) {
          var c3 = a3.data("$binding") || [];
          H(b3) ? c3 = c3.concat(b3) : c3.push(b3);
          a3.data("$binding", c3);
        } : E;
        da.$$addBindingClass = n2 ? function(a3) {
          sa(a3, "ng-binding");
        } : E;
        da.$$addScopeInfo = n2 ? function(a3, b3, c3, d2) {
          a3.data(c3 ? d2 ? "$isolateScopeNoTemplate" : "$isolateScope" : "$scope", b3);
        } : E;
        da.$$addScopeClass = n2 ? function(a3, b3) {
          sa(a3, b3 ? "ng-isolate-scope" : "ng-scope");
        } : E;
        da.$$createComment = function(a3, b3) {
          var c3 = "";
          n2 && (c3 = " " + (a3 || "") + ": ", b3 && (c3 += b3 + " "));
          return z.document.createComment(c3);
        };
        return da;
      }];
    }
    function Kb(a, b) {
      this.previousValue = a;
      this.currentValue = b;
    }
    function xa(a) {
      return a.replace(rd, "").replace(Jg, function(a2, d, c) {
        return c ? d.toUpperCase() : d;
      });
    }
    function ud(a, b) {
      var d = "", c = a.split(/\s+/), e = b.split(/\s+/), f = 0;
      a:
        for (; f < c.length; f++) {
          for (var g = c[f], k = 0; k < e.length; k++)
            if (g === e[k])
              continue a;
          d += (0 < d.length ? " " : "") + g;
        }
      return d;
    }
    function td(a) {
      a = x(a);
      var b = a.length;
      if (1 >= b)
        return a;
      for (; b--; ) {
        var d = a[b];
        (8 === d.nodeType || d.nodeType === Pa && "" === d.nodeValue.trim()) && Kg.call(a, b, 1);
      }
      return a;
    }
    function Gg(a, b) {
      if (b && C(b))
        return b;
      if (C(a)) {
        var d = wd.exec(a);
        if (d)
          return d[3];
      }
    }
    function Kf() {
      var a = {};
      this.has = function(b) {
        return a.hasOwnProperty(b);
      };
      this.register = function(b, d) {
        Ja(b, "controller");
        D(b) ? S(a, b) : a[b] = d;
      };
      this.$get = ["$injector", function(b) {
        function d(a2, b2, d2, g) {
          if (!a2 || !D(a2.$scope))
            throw F("$controller")("noscp", g, b2);
          a2.$scope[b2] = d2;
        }
        return function(c, e, f, g) {
          var k, h2, l;
          f = true === f;
          g && C(g) && (l = g);
          if (C(c)) {
            g = c.match(wd);
            if (!g)
              throw xd("ctrlfmt", c);
            h2 = g[1];
            l = l || g[3];
            c = a.hasOwnProperty(h2) ? a[h2] : Le(
              e.$scope,
              h2,
              true
            );
            if (!c)
              throw xd("ctrlreg", h2);
            tb(c, h2, true);
          }
          if (f)
            return f = (H(c) ? c[c.length - 1] : c).prototype, k = Object.create(f || null), l && d(e, l, k, h2 || c.name), S(function() {
              var a2 = b.invoke(c, k, e, h2);
              a2 !== k && (D(a2) || B(a2)) && (k = a2, l && d(e, l, k, h2 || c.name));
              return k;
            }, { instance: k, identifier: l });
          k = b.instantiate(c, e, h2);
          l && d(e, l, k, h2 || c.name);
          return k;
        };
      }];
    }
    function Lf() {
      this.$get = ["$window", function(a) {
        return x(a.document);
      }];
    }
    function Mf() {
      this.$get = ["$document", "$rootScope", function(a, b) {
        function d() {
          e = c.hidden;
        }
        var c = a[0], e = c && c.hidden;
        a.on("visibilitychange", d);
        b.$on("$destroy", function() {
          a.off("visibilitychange", d);
        });
        return function() {
          return e;
        };
      }];
    }
    function Nf() {
      this.$get = ["$log", function(a) {
        return function(b, d) {
          a.error.apply(a, arguments);
        };
      }];
    }
    function vc(a) {
      return D(a) ? ha(a) ? a.toISOString() : eb(a) : a;
    }
    function Tf() {
      this.$get = function() {
        return function(a) {
          if (!a)
            return "";
          var b = [];
          Qc(a, function(a2, c) {
            null === a2 || A(a2) || B(a2) || (H(a2) ? r(a2, function(a3) {
              b.push(ba(c) + "=" + ba(vc(a3)));
            }) : b.push(ba(c) + "=" + ba(vc(a2))));
          });
          return b.join("&");
        };
      };
    }
    function Uf() {
      this.$get = function() {
        return function(a) {
          function b(a2, e, f) {
            H(a2) ? r(a2, function(a3, c) {
              b(a3, e + "[" + (D(a3) ? c : "") + "]");
            }) : D(a2) && !ha(a2) ? Qc(a2, function(a3, c) {
              b(a3, e + (f ? "" : "[") + c + (f ? "" : "]"));
            }) : (B(a2) && (a2 = a2()), d.push(ba(e) + "=" + (null == a2 ? "" : ba(vc(a2)))));
          }
          if (!a)
            return "";
          var d = [];
          b(a, "", true);
          return d.join("&");
        };
      };
    }
    function wc(a, b) {
      if (C(a)) {
        var d = a.replace(Lg, "").trim();
        if (d) {
          var c = b("Content-Type"), c = c && 0 === c.indexOf(yd), e;
          (e = c) || (e = (e = d.match(Mg)) && Ng[e[0]].test(d));
          if (e)
            try {
              a = Tc(d);
            } catch (f) {
              if (!c)
                return a;
              throw Lb("baddata", a, f);
            }
        }
      }
      return a;
    }
    function zd(a) {
      var b = T(), d;
      C(a) ? r(a.split("\n"), function(a2) {
        d = a2.indexOf(":");
        var e = K(V(a2.substr(0, d)));
        a2 = V(a2.substr(d + 1));
        e && (b[e] = b[e] ? b[e] + ", " + a2 : a2);
      }) : D(a) && r(a, function(a2, d2) {
        var f = K(d2), g = V(a2);
        f && (b[f] = b[f] ? b[f] + ", " + g : g);
      });
      return b;
    }
    function Ad(a) {
      var b;
      return function(d) {
        b || (b = zd(a));
        return d ? (d = b[K(d)], void 0 === d && (d = null), d) : b;
      };
    }
    function Bd(a, b, d, c) {
      if (B(c))
        return c(a, b, d);
      r(c, function(c2) {
        a = c2(a, b, d);
      });
      return a;
    }
    function Sf() {
      var a = this.defaults = { transformResponse: [wc], transformRequest: [function(a2) {
        return D(a2) && "[object File]" !== la.call(a2) && "[object Blob]" !== la.call(a2) && "[object FormData]" !== la.call(a2) ? eb(a2) : a2;
      }], headers: { common: { Accept: "application/json, text/plain, */*" }, post: ja(xc), put: ja(xc), patch: ja(xc) }, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", paramSerializer: "$httpParamSerializer", jsonpCallbackParam: "callback" }, b = false;
      this.useApplyAsync = function(a2) {
        return w2(a2) ? (b = !!a2, this) : b;
      };
      var d = this.interceptors = [], c = this.xsrfTrustedOrigins = [];
      Object.defineProperty(
        this,
        "xsrfWhitelistedOrigins",
        { get: function() {
          return this.xsrfTrustedOrigins;
        }, set: function(a2) {
          this.xsrfTrustedOrigins = a2;
        } }
      );
      this.$get = ["$browser", "$httpBackend", "$$cookieReader", "$cacheFactory", "$rootScope", "$q", "$injector", "$sce", function(e, f, g, k, h2, l, m, p) {
        function n2(b2) {
          function c2(a2, b3) {
            for (var d3 = 0, e2 = b3.length; d3 < e2; ) {
              var f3 = b3[d3++], g3 = b3[d3++];
              a2 = a2.then(f3, g3);
            }
            b3.length = 0;
            return a2;
          }
          function d2(a2, b3) {
            var c3, e2 = {};
            r(a2, function(a3, d3) {
              B(a3) ? (c3 = a3(b3), null != c3 && (e2[d3] = c3)) : e2[d3] = a3;
            });
            return e2;
          }
          function f2(a2) {
            var b3 = S({}, a2);
            b3.data = Bd(a2.data, a2.headers, a2.status, g2.transformResponse);
            a2 = a2.status;
            return 200 <= a2 && 300 > a2 ? b3 : l.reject(b3);
          }
          if (!D(b2))
            throw F("$http")("badreq", b2);
          if (!C(p.valueOf(b2.url)))
            throw F("$http")("badreq", b2.url);
          var g2 = S({ method: "get", transformRequest: a.transformRequest, transformResponse: a.transformResponse, paramSerializer: a.paramSerializer, jsonpCallbackParam: a.jsonpCallbackParam }, b2);
          g2.headers = function(b3) {
            var c3 = a.headers, e2 = S({}, b3.headers), f3, g3, h4, c3 = S({}, c3.common, c3[K(b3.method)]);
            a:
              for (f3 in c3) {
                g3 = K(f3);
                for (h4 in e2)
                  if (K(h4) === g3)
                    continue a;
                e2[f3] = c3[f3];
              }
            return d2(e2, ja(b3));
          }(b2);
          g2.method = vb(g2.method);
          g2.paramSerializer = C(g2.paramSerializer) ? m.get(g2.paramSerializer) : g2.paramSerializer;
          e.$$incOutstandingRequestCount("$http");
          var h3 = [], k2 = [];
          b2 = l.resolve(g2);
          r(v, function(a2) {
            (a2.request || a2.requestError) && h3.unshift(a2.request, a2.requestError);
            (a2.response || a2.responseError) && k2.push(a2.response, a2.responseError);
          });
          b2 = c2(b2, h3);
          b2 = b2.then(function(b3) {
            var c3 = b3.headers, d3 = Bd(b3.data, Ad(c3), void 0, b3.transformRequest);
            A(d3) && r(c3, function(a2, b4) {
              "content-type" === K(b4) && delete c3[b4];
            });
            A(b3.withCredentials) && !A(a.withCredentials) && (b3.withCredentials = a.withCredentials);
            return s2(b3, d3).then(f2, f2);
          });
          b2 = c2(b2, k2);
          return b2 = b2.finally(function() {
            e.$$completeOutstandingRequest(E, "$http");
          });
        }
        function s2(c2, d2) {
          function e2(a2) {
            if (a2) {
              var c3 = {};
              r(a2, function(a3, d3) {
                c3[d3] = function(c4) {
                  function d4() {
                    a3(c4);
                  }
                  b ? h2.$applyAsync(d4) : h2.$$phase ? d4() : h2.$apply(d4);
                };
              });
              return c3;
            }
          }
          function k2(a2, c3, d3, e3, f2) {
            function g2() {
              m2(c3, a2, d3, e3, f2);
            }
            R && (200 <= a2 && 300 > a2 ? R.put(O, [a2, c3, zd(d3), e3, f2]) : R.remove(O));
            b ? h2.$applyAsync(g2) : (g2(), h2.$$phase || h2.$apply());
          }
          function m2(a2, b2, d3, e3, f2) {
            b2 = -1 <= b2 ? b2 : 0;
            (200 <= b2 && 300 > b2 ? L.resolve : L.reject)({ data: a2, status: b2, headers: Ad(d3), config: c2, statusText: e3, xhrStatus: f2 });
          }
          function s3(a2) {
            m2(a2.data, a2.status, ja(a2.headers()), a2.statusText, a2.xhrStatus);
          }
          function v2() {
            var a2 = n2.pendingRequests.indexOf(c2);
            -1 !== a2 && n2.pendingRequests.splice(a2, 1);
          }
          var L = l.defer(), u = L.promise, R, q2, ma = c2.headers, x2 = "jsonp" === K(c2.method), O = c2.url;
          x2 ? O = p.getTrustedResourceUrl(O) : C(O) || (O = p.valueOf(O));
          O = G(O, c2.paramSerializer(c2.params));
          x2 && (O = t(O, c2.jsonpCallbackParam));
          n2.pendingRequests.push(c2);
          u.then(v2, v2);
          !c2.cache && !a.cache || false === c2.cache || "GET" !== c2.method && "JSONP" !== c2.method || (R = D(c2.cache) ? c2.cache : D(a.cache) ? a.cache : N);
          R && (q2 = R.get(O), w2(q2) ? q2 && B(q2.then) ? q2.then(s3, s3) : H(q2) ? m2(q2[1], q2[0], ja(q2[2]), q2[3], q2[4]) : m2(q2, 200, {}, "OK", "complete") : R.put(O, u));
          A(q2) && ((q2 = kc(c2.url) ? g()[c2.xsrfCookieName || a.xsrfCookieName] : void 0) && (ma[c2.xsrfHeaderName || a.xsrfHeaderName] = q2), f(c2.method, O, d2, k2, ma, c2.timeout, c2.withCredentials, c2.responseType, e2(c2.eventHandlers), e2(c2.uploadEventHandlers)));
          return u;
        }
        function G(a2, b2) {
          0 < b2.length && (a2 += (-1 === a2.indexOf("?") ? "?" : "&") + b2);
          return a2;
        }
        function t(a2, b2) {
          var c2 = a2.split("?");
          if (2 < c2.length)
            throw Lb("badjsonp", a2);
          c2 = hc(c2[1]);
          r(c2, function(c3, d2) {
            if ("JSON_CALLBACK" === c3)
              throw Lb("badjsonp", a2);
            if (d2 === b2)
              throw Lb("badjsonp", b2, a2);
          });
          return a2 += (-1 === a2.indexOf("?") ? "?" : "&") + b2 + "=JSON_CALLBACK";
        }
        var N = k("$http");
        a.paramSerializer = C(a.paramSerializer) ? m.get(a.paramSerializer) : a.paramSerializer;
        var v = [];
        r(d, function(a2) {
          v.unshift(C(a2) ? m.get(a2) : m.invoke(a2));
        });
        var kc = Og(c);
        n2.pendingRequests = [];
        (function(a2) {
          r(arguments, function(a3) {
            n2[a3] = function(b2, c2) {
              return n2(S({}, c2 || {}, { method: a3, url: b2 }));
            };
          });
        })("get", "delete", "head", "jsonp");
        (function(a2) {
          r(arguments, function(a3) {
            n2[a3] = function(b2, c2, d2) {
              return n2(S({}, d2 || {}, { method: a3, url: b2, data: c2 }));
            };
          });
        })("post", "put", "patch");
        n2.defaults = a;
        return n2;
      }];
    }
    function Wf() {
      this.$get = function() {
        return function() {
          return new z.XMLHttpRequest();
        };
      };
    }
    function Vf() {
      this.$get = ["$browser", "$jsonpCallbacks", "$document", "$xhrFactory", function(a, b, d, c) {
        return Pg(a, c, a.defer, b, d[0]);
      }];
    }
    function Pg(a, b, d, c, e) {
      function f(a2, b2, d2) {
        a2 = a2.replace(
          "JSON_CALLBACK",
          b2
        );
        var f2 = e.createElement("script"), m = null;
        f2.type = "text/javascript";
        f2.src = a2;
        f2.async = true;
        m = function(a3) {
          f2.removeEventListener("load", m);
          f2.removeEventListener("error", m);
          e.body.removeChild(f2);
          f2 = null;
          var g = -1, s2 = "unknown";
          a3 && ("load" !== a3.type || c.wasCalled(b2) || (a3 = { type: "error" }), s2 = a3.type, g = "error" === a3.type ? 404 : 200);
          d2 && d2(g, s2);
        };
        f2.addEventListener("load", m);
        f2.addEventListener("error", m);
        e.body.appendChild(f2);
        return m;
      }
      return function(e2, k, h2, l, m, p, n2, s2, G, t) {
        function N(a2) {
          J = "timeout" === a2;
          pa && pa();
          y && y.abort();
        }
        function v(a2, b2, c2, e3, f2, g) {
          w2(P) && d.cancel(P);
          pa = y = null;
          a2(b2, c2, e3, f2, g);
        }
        k = k || a.url();
        if ("jsonp" === K(e2))
          var q2 = c.createCallback(k), pa = f(k, q2, function(a2, b2) {
            var d2 = 200 === a2 && c.getResponse(q2);
            v(l, a2, d2, "", b2, "complete");
            c.removeCallback(q2);
          });
        else {
          var y = b(e2, k), J = false;
          y.open(e2, k, true);
          r(m, function(a2, b2) {
            w2(a2) && y.setRequestHeader(b2, a2);
          });
          y.onload = function() {
            var a2 = y.statusText || "", b2 = "response" in y ? y.response : y.responseText, c2 = 1223 === y.status ? 204 : y.status;
            0 === c2 && (c2 = b2 ? 200 : "file" === ga(k).protocol ? 404 : 0);
            v(l, c2, b2, y.getAllResponseHeaders(), a2, "complete");
          };
          y.onerror = function() {
            v(l, -1, null, null, "", "error");
          };
          y.ontimeout = function() {
            v(l, -1, null, null, "", "timeout");
          };
          y.onabort = function() {
            v(l, -1, null, null, "", J ? "timeout" : "abort");
          };
          r(G, function(a2, b2) {
            y.addEventListener(b2, a2);
          });
          r(t, function(a2, b2) {
            y.upload.addEventListener(b2, a2);
          });
          n2 && (y.withCredentials = true);
          if (s2)
            try {
              y.responseType = s2;
            } catch (I) {
              if ("json" !== s2)
                throw I;
            }
          y.send(A(h2) ? null : h2);
        }
        if (0 < p)
          var P = d(function() {
            N("timeout");
          }, p);
        else
          p && B(p.then) && p.then(function() {
            N(w2(p.$$timeoutId) ? "timeout" : "abort");
          });
      };
    }
    function Pf() {
      var a = "{{", b = "}}";
      this.startSymbol = function(b2) {
        return b2 ? (a = b2, this) : a;
      };
      this.endSymbol = function(a2) {
        return a2 ? (b = a2, this) : b;
      };
      this.$get = ["$parse", "$exceptionHandler", "$sce", function(d, c, e) {
        function f(a2) {
          return "\\\\\\" + a2;
        }
        function g(c2) {
          return c2.replace(p, a).replace(n2, b);
        }
        function k(a2, b2, c2, d2) {
          var e2 = a2.$watch(function(a3) {
            e2();
            return d2(a3);
          }, b2, c2);
          return e2;
        }
        function h2(f2, h3, n3, p2) {
          function v(a2) {
            try {
              return a2 = n3 && !r2 ? e.getTrusted(n3, a2) : e.valueOf(a2), p2 && !w2(a2) ? a2 : jc(a2);
            } catch (b2) {
              c(Ma.interr(f2, b2));
            }
          }
          var r2 = n3 === e.URL || n3 === e.MEDIA_URL;
          if (!f2.length || -1 === f2.indexOf(a)) {
            if (h3)
              return;
            h3 = g(f2);
            r2 && (h3 = e.getTrusted(n3, h3));
            h3 = ia(h3);
            h3.exp = f2;
            h3.expressions = [];
            h3.$$watchDelegate = k;
            return h3;
          }
          p2 = !!p2;
          for (var q2, y, J = 0, I = [], P, Q = f2.length, M = [], L = [], u; J < Q; )
            if (-1 !== (q2 = f2.indexOf(a, J)) && -1 !== (y = f2.indexOf(b, q2 + l)))
              J !== q2 && M.push(g(f2.substring(J, q2))), J = f2.substring(q2 + l, y), I.push(J), J = y + m, L.push(M.length), M.push("");
            else {
              J !== Q && M.push(g(f2.substring(J)));
              break;
            }
          u = 1 === M.length && 1 === L.length;
          var R = r2 && u ? void 0 : v;
          P = I.map(function(a2) {
            return d(a2, R);
          });
          if (!h3 || I.length) {
            var x2 = function(a2) {
              for (var b2 = 0, c2 = I.length; b2 < c2; b2++) {
                if (p2 && A(a2[b2]))
                  return;
                M[L[b2]] = a2[b2];
              }
              if (r2)
                return e.getTrusted(n3, u ? M[0] : M.join(""));
              n3 && 1 < M.length && Ma.throwNoconcat(f2);
              return M.join("");
            };
            return S(function(a2) {
              var b2 = 0, d2 = I.length, e2 = Array(d2);
              try {
                for (; b2 < d2; b2++)
                  e2[b2] = P[b2](a2);
                return x2(e2);
              } catch (g2) {
                c(Ma.interr(f2, g2));
              }
            }, { exp: f2, expressions: I, $$watchDelegate: function(a2, b2) {
              var c2;
              return a2.$watchGroup(P, function(d2, e2) {
                var f3 = x2(d2);
                b2.call(this, f3, d2 !== e2 ? c2 : f3, a2);
                c2 = f3;
              });
            } });
          }
        }
        var l = a.length, m = b.length, p = new RegExp(a.replace(/./g, f), "g"), n2 = new RegExp(b.replace(
          /./g,
          f
        ), "g");
        h2.startSymbol = function() {
          return a;
        };
        h2.endSymbol = function() {
          return b;
        };
        return h2;
      }];
    }
    function Qf() {
      this.$get = ["$$intervalFactory", "$window", function(a, b) {
        var d = {}, c = function(a2) {
          b.clearInterval(a2);
          delete d[a2];
        }, e = a(function(a2, c2, e2) {
          a2 = b.setInterval(a2, c2);
          d[a2] = e2;
          return a2;
        }, c);
        e.cancel = function(a2) {
          if (!a2)
            return false;
          if (!a2.hasOwnProperty("$$intervalId"))
            throw Qg("badprom");
          if (!d.hasOwnProperty(a2.$$intervalId))
            return false;
          a2 = a2.$$intervalId;
          var b2 = d[a2], e2 = b2.promise;
          e2.$$state && (e2.$$state.pur = true);
          b2.reject("canceled");
          c(a2);
          return true;
        };
        return e;
      }];
    }
    function Rf() {
      this.$get = ["$browser", "$q", "$$q", "$rootScope", function(a, b, d, c) {
        return function(e, f) {
          return function(g, k, h2, l) {
            function m() {
              p ? g.apply(null, n2) : g(s2);
            }
            var p = 4 < arguments.length, n2 = p ? Ha.call(arguments, 4) : [], s2 = 0, G = w2(l) && !l, t = (G ? d : b).defer(), r2 = t.promise;
            h2 = w2(h2) ? h2 : 0;
            r2.$$intervalId = e(function() {
              G ? a.defer(m) : c.$evalAsync(m);
              t.notify(s2++);
              0 < h2 && s2 >= h2 && (t.resolve(s2), f(r2.$$intervalId));
              G || c.$apply();
            }, k, t, G);
            return r2;
          };
        };
      }];
    }
    function Cd(a, b) {
      var d = ga(a);
      b.$$protocol = d.protocol;
      b.$$host = d.hostname;
      b.$$port = fa(d.port) || Rg[d.protocol] || null;
    }
    function Dd(a, b, d) {
      if (Sg.test(a))
        throw kb("badpath", a);
      var c = "/" !== a.charAt(0);
      c && (a = "/" + a);
      a = ga(a);
      for (var c = (c && "/" === a.pathname.charAt(0) ? a.pathname.substring(1) : a.pathname).split("/"), e = c.length; e--; )
        c[e] = decodeURIComponent(c[e]), d && (c[e] = c[e].replace(/\//g, "%2F"));
      d = c.join("/");
      b.$$path = d;
      b.$$search = hc(a.search);
      b.$$hash = decodeURIComponent(a.hash);
      b.$$path && "/" !== b.$$path.charAt(0) && (b.$$path = "/" + b.$$path);
    }
    function yc(a, b) {
      return a.slice(
        0,
        b.length
      ) === b;
    }
    function ya(a, b) {
      if (yc(b, a))
        return b.substr(a.length);
    }
    function Da(a) {
      var b = a.indexOf("#");
      return -1 === b ? a : a.substr(0, b);
    }
    function zc(a, b, d) {
      this.$$html5 = true;
      d = d || "";
      Cd(a, this);
      this.$$parse = function(a2) {
        var d2 = ya(b, a2);
        if (!C(d2))
          throw kb("ipthprfx", a2, b);
        Dd(d2, this, true);
        this.$$path || (this.$$path = "/");
        this.$$compose();
      };
      this.$$normalizeUrl = function(a2) {
        return b + a2.substr(1);
      };
      this.$$parseLinkUrl = function(c, e) {
        if (e && "#" === e[0])
          return this.hash(e.slice(1)), true;
        var f, g;
        w2(f = ya(a, c)) ? (g = f, g = d && w2(f = ya(d, f)) ? b + (ya("/", f) || f) : a + g) : w2(f = ya(b, c)) ? g = b + f : b === c + "/" && (g = b);
        g && this.$$parse(g);
        return !!g;
      };
    }
    function Ac(a, b, d) {
      Cd(a, this);
      this.$$parse = function(c) {
        var e = ya(a, c) || ya(b, c), f;
        A(e) || "#" !== e.charAt(0) ? this.$$html5 ? f = e : (f = "", A(e) && (a = c, this.replace())) : (f = ya(d, e), A(f) && (f = e));
        Dd(f, this, false);
        c = this.$$path;
        var e = a, g = /^\/[A-Z]:(\/.*)/;
        yc(f, e) && (f = f.replace(e, ""));
        g.exec(f) || (c = (f = g.exec(c)) ? f[1] : c);
        this.$$path = c;
        this.$$compose();
      };
      this.$$normalizeUrl = function(b2) {
        return a + (b2 ? d + b2 : "");
      };
      this.$$parseLinkUrl = function(b2, d2) {
        return Da(a) === Da(b2) ? (this.$$parse(b2), true) : false;
      };
    }
    function Ed(a, b, d) {
      this.$$html5 = true;
      Ac.apply(this, arguments);
      this.$$parseLinkUrl = function(c, e) {
        if (e && "#" === e[0])
          return this.hash(e.slice(1)), true;
        var f, g;
        a === Da(c) ? f = c : (g = ya(b, c)) ? f = a + d + g : b === c + "/" && (f = b);
        f && this.$$parse(f);
        return !!f;
      };
      this.$$normalizeUrl = function(b2) {
        return a + d + b2;
      };
    }
    function Mb(a) {
      return function() {
        return this[a];
      };
    }
    function Fd(a, b) {
      return function(d) {
        if (A(d))
          return this[a];
        this[a] = b(d);
        this.$$compose();
        return this;
      };
    }
    function Yf() {
      var a = "!", b = { enabled: false, requireBase: true, rewriteLinks: true };
      this.hashPrefix = function(b2) {
        return w2(b2) ? (a = b2, this) : a;
      };
      this.html5Mode = function(a2) {
        if (Ga(a2))
          return b.enabled = a2, this;
        if (D(a2)) {
          Ga(a2.enabled) && (b.enabled = a2.enabled);
          Ga(a2.requireBase) && (b.requireBase = a2.requireBase);
          if (Ga(a2.rewriteLinks) || C(a2.rewriteLinks))
            b.rewriteLinks = a2.rewriteLinks;
          return this;
        }
        return b;
      };
      this.$get = ["$rootScope", "$browser", "$sniffer", "$rootElement", "$window", function(d, c, e, f, g) {
        function k(a2, b2) {
          return a2 === b2 || ga(a2).href === ga(b2).href;
        }
        function h2(a2, b2, d2) {
          var e2 = m.url(), f2 = m.$$state;
          try {
            c.url(a2, b2, d2), m.$$state = c.state();
          } catch (g2) {
            throw m.url(e2), m.$$state = f2, g2;
          }
        }
        function l(a2, b2) {
          d.$broadcast("$locationChangeSuccess", m.absUrl(), a2, m.$$state, b2);
        }
        var m, p;
        p = c.baseHref();
        var n2 = c.url(), s2;
        if (b.enabled) {
          if (!p && b.requireBase)
            throw kb("nobase");
          s2 = n2.substring(0, n2.indexOf("/", n2.indexOf("//") + 2)) + (p || "/");
          p = e.history ? zc : Ed;
        } else
          s2 = Da(n2), p = Ac;
        var r2 = s2.substr(0, Da(s2).lastIndexOf("/") + 1);
        m = new p(s2, r2, "#" + a);
        m.$$parseLinkUrl(n2, n2);
        m.$$state = c.state();
        var t = /^\s*(javascript|mailto):/i;
        f.on("click", function(a2) {
          var e2 = b.rewriteLinks;
          if (e2 && !a2.ctrlKey && !a2.metaKey && !a2.shiftKey && 2 !== a2.which && 2 !== a2.button) {
            for (var g2 = x(a2.target); "a" !== ua(g2[0]); )
              if (g2[0] === f[0] || !(g2 = g2.parent())[0])
                return;
            if (!C(e2) || !A(g2.attr(e2))) {
              var e2 = g2.prop("href"), h3 = g2.attr("href") || g2.attr("xlink:href");
              D(e2) && "[object SVGAnimatedString]" === e2.toString() && (e2 = ga(e2.animVal).href);
              t.test(e2) || !e2 || g2.attr("target") || a2.isDefaultPrevented() || !m.$$parseLinkUrl(e2, h3) || (a2.preventDefault(), m.absUrl() !== c.url() && d.$apply());
            }
          }
        });
        m.absUrl() !== n2 && c.url(m.absUrl(), true);
        var N = true;
        c.onUrlChange(function(a2, b2) {
          yc(a2, r2) ? (d.$evalAsync(function() {
            var c2 = m.absUrl(), e2 = m.$$state, f2;
            m.$$parse(a2);
            m.$$state = b2;
            f2 = d.$broadcast("$locationChangeStart", a2, c2, b2, e2).defaultPrevented;
            m.absUrl() === a2 && (f2 ? (m.$$parse(c2), m.$$state = e2, h2(c2, false, e2)) : (N = false, l(c2, e2)));
          }), d.$$phase || d.$digest()) : g.location.href = a2;
        });
        d.$watch(function() {
          if (N || m.$$urlUpdatedByLocation) {
            m.$$urlUpdatedByLocation = false;
            var a2 = c.url(), b2 = m.absUrl(), f2 = c.state(), g2 = m.$$replace, n3 = !k(a2, b2) || m.$$html5 && e.history && f2 !== m.$$state;
            if (N || n3)
              N = false, d.$evalAsync(function() {
                var b3 = m.absUrl(), c2 = d.$broadcast("$locationChangeStart", b3, a2, m.$$state, f2).defaultPrevented;
                m.absUrl() === b3 && (c2 ? (m.$$parse(a2), m.$$state = f2) : (n3 && h2(b3, g2, f2 === m.$$state ? null : m.$$state), l(a2, f2)));
              });
          }
          m.$$replace = false;
        });
        return m;
      }];
    }
    function Zf() {
      var a = true, b = this;
      this.debugEnabled = function(b2) {
        return w2(b2) ? (a = b2, this) : a;
      };
      this.$get = ["$window", function(d) {
        function c(a2) {
          dc(a2) && (a2.stack && f ? a2 = a2.message && -1 === a2.stack.indexOf(a2.message) ? "Error: " + a2.message + "\n" + a2.stack : a2.stack : a2.sourceURL && (a2 = a2.message + "\n" + a2.sourceURL + ":" + a2.line));
          return a2;
        }
        function e(a2) {
          var b2 = d.console || {}, e2 = b2[a2] || b2.log || E;
          return function() {
            var a3 = [];
            r(arguments, function(b3) {
              a3.push(c(b3));
            });
            return Function.prototype.apply.call(e2, b2, a3);
          };
        }
        var f = wa || /\bEdge\//.test(d.navigator && d.navigator.userAgent);
        return { log: e("log"), info: e("info"), warn: e("warn"), error: e("error"), debug: function() {
          var c2 = e("debug");
          return function() {
            a && c2.apply(b, arguments);
          };
        }() };
      }];
    }
    function Tg(a) {
      return a + "";
    }
    function Ug(a, b) {
      return "undefined" !== typeof a ? a : b;
    }
    function Gd(a, b) {
      return "undefined" === typeof a ? b : "undefined" === typeof b ? a : a + b;
    }
    function Vg(a, b) {
      switch (a.type) {
        case q.MemberExpression:
          if (a.computed)
            return false;
          break;
        case q.UnaryExpression:
          return 1;
        case q.BinaryExpression:
          return "+" !== a.operator ? 1 : false;
        case q.CallExpression:
          return false;
      }
      return void 0 === b ? Hd : b;
    }
    function Z(a, b, d) {
      var c, e, f = a.isPure = Vg(a, d);
      switch (a.type) {
        case q.Program:
          c = true;
          r(a.body, function(a2) {
            Z(a2.expression, b, f);
            c = c && a2.expression.constant;
          });
          a.constant = c;
          break;
        case q.Literal:
          a.constant = true;
          a.toWatch = [];
          break;
        case q.UnaryExpression:
          Z(a.argument, b, f);
          a.constant = a.argument.constant;
          a.toWatch = a.argument.toWatch;
          break;
        case q.BinaryExpression:
          Z(a.left, b, f);
          Z(a.right, b, f);
          a.constant = a.left.constant && a.right.constant;
          a.toWatch = a.left.toWatch.concat(a.right.toWatch);
          break;
        case q.LogicalExpression:
          Z(a.left, b, f);
          Z(a.right, b, f);
          a.constant = a.left.constant && a.right.constant;
          a.toWatch = a.constant ? [] : [a];
          break;
        case q.ConditionalExpression:
          Z(a.test, b, f);
          Z(a.alternate, b, f);
          Z(a.consequent, b, f);
          a.constant = a.test.constant && a.alternate.constant && a.consequent.constant;
          a.toWatch = a.constant ? [] : [a];
          break;
        case q.Identifier:
          a.constant = false;
          a.toWatch = [a];
          break;
        case q.MemberExpression:
          Z(a.object, b, f);
          a.computed && Z(a.property, b, f);
          a.constant = a.object.constant && (!a.computed || a.property.constant);
          a.toWatch = a.constant ? [] : [a];
          break;
        case q.CallExpression:
          c = d = a.filter ? !b(a.callee.name).$stateful : false;
          e = [];
          r(a.arguments, function(a2) {
            Z(a2, b, f);
            c = c && a2.constant;
            e.push.apply(e, a2.toWatch);
          });
          a.constant = c;
          a.toWatch = d ? e : [a];
          break;
        case q.AssignmentExpression:
          Z(
            a.left,
            b,
            f
          );
          Z(a.right, b, f);
          a.constant = a.left.constant && a.right.constant;
          a.toWatch = [a];
          break;
        case q.ArrayExpression:
          c = true;
          e = [];
          r(a.elements, function(a2) {
            Z(a2, b, f);
            c = c && a2.constant;
            e.push.apply(e, a2.toWatch);
          });
          a.constant = c;
          a.toWatch = e;
          break;
        case q.ObjectExpression:
          c = true;
          e = [];
          r(a.properties, function(a2) {
            Z(a2.value, b, f);
            c = c && a2.value.constant;
            e.push.apply(e, a2.value.toWatch);
            a2.computed && (Z(a2.key, b, false), c = c && a2.key.constant, e.push.apply(e, a2.key.toWatch));
          });
          a.constant = c;
          a.toWatch = e;
          break;
        case q.ThisExpression:
          a.constant = false;
          a.toWatch = [];
          break;
        case q.LocalsExpression:
          a.constant = false, a.toWatch = [];
      }
    }
    function Id(a) {
      if (1 === a.length) {
        a = a[0].expression;
        var b = a.toWatch;
        return 1 !== b.length ? b : b[0] !== a ? b : void 0;
      }
    }
    function Jd(a) {
      return a.type === q.Identifier || a.type === q.MemberExpression;
    }
    function Kd(a) {
      if (1 === a.body.length && Jd(a.body[0].expression))
        return { type: q.AssignmentExpression, left: a.body[0].expression, right: { type: q.NGValueParameter }, operator: "=" };
    }
    function Ld(a) {
      this.$filter = a;
    }
    function Md(a) {
      this.$filter = a;
    }
    function Nb(a, b, d) {
      this.ast = new q(a, d);
      this.astCompiler = d.csp ? new Md(b) : new Ld(b);
    }
    function Bc(a) {
      return B(a.valueOf) ? a.valueOf() : Wg.call(a);
    }
    function $f() {
      var a = T(), b = { "true": true, "false": false, "null": null, undefined: void 0 }, d, c;
      this.addLiteral = function(a2, c2) {
        b[a2] = c2;
      };
      this.setIdentifierFns = function(a2, b2) {
        d = a2;
        c = b2;
        return this;
      };
      this.$get = ["$filter", function(e) {
        function f(b2, c2) {
          var d2, f2;
          switch (typeof b2) {
            case "string":
              return f2 = b2 = b2.trim(), d2 = a[f2], d2 || (d2 = new Ob(G), d2 = new Nb(d2, e, G).parse(b2), a[f2] = p(d2)), s2(d2, c2);
            case "function":
              return s2(b2, c2);
            default:
              return s2(
                E,
                c2
              );
          }
        }
        function g(a2, b2, c2) {
          return null == a2 || null == b2 ? a2 === b2 : "object" !== typeof a2 || (a2 = Bc(a2), "object" !== typeof a2 || c2) ? a2 === b2 || a2 !== a2 && b2 !== b2 : false;
        }
        function k(a2, b2, c2, d2, e2) {
          var f2 = d2.inputs, h3;
          if (1 === f2.length) {
            var k2 = g, f2 = f2[0];
            return a2.$watch(function(a3) {
              var b3 = f2(a3);
              g(b3, k2, f2.isPure) || (h3 = d2(a3, void 0, void 0, [b3]), k2 = b3 && Bc(b3));
              return h3;
            }, b2, c2, e2);
          }
          for (var l2 = [], m2 = [], n3 = 0, p2 = f2.length; n3 < p2; n3++)
            l2[n3] = g, m2[n3] = null;
          return a2.$watch(function(a3) {
            for (var b3 = false, c3 = 0, e3 = f2.length; c3 < e3; c3++) {
              var k3 = f2[c3](a3);
              if (b3 || (b3 = !g(k3, l2[c3], f2[c3].isPure)))
                m2[c3] = k3, l2[c3] = k3 && Bc(k3);
            }
            b3 && (h3 = d2(a3, void 0, void 0, m2));
            return h3;
          }, b2, c2, e2);
        }
        function h2(a2, b2, c2, d2, e2) {
          function f2() {
            h3(m2) && k2();
          }
          function g2(a3, b3, c3, d3) {
            m2 = u && d3 ? d3[0] : n3(a3, b3, c3, d3);
            h3(m2) && a3.$$postDigest(f2);
            return s3(m2);
          }
          var h3 = d2.literal ? l : w2, k2, m2, n3 = d2.$$intercepted || d2, s3 = d2.$$interceptor || Ta, u = d2.inputs && !n3.inputs;
          g2.literal = d2.literal;
          g2.constant = d2.constant;
          g2.inputs = d2.inputs;
          p(g2);
          return k2 = a2.$watch(g2, b2, c2, e2);
        }
        function l(a2) {
          var b2 = true;
          r(a2, function(a3) {
            w2(a3) || (b2 = false);
          });
          return b2;
        }
        function m(a2, b2, c2, d2) {
          var e2 = a2.$watch(function(a3) {
            e2();
            return d2(a3);
          }, b2, c2);
          return e2;
        }
        function p(a2) {
          a2.constant ? a2.$$watchDelegate = m : a2.oneTime ? a2.$$watchDelegate = h2 : a2.inputs && (a2.$$watchDelegate = k);
          return a2;
        }
        function n2(a2, b2) {
          function c2(d2) {
            return b2(a2(d2));
          }
          c2.$stateful = a2.$stateful || b2.$stateful;
          c2.$$pure = a2.$$pure && b2.$$pure;
          return c2;
        }
        function s2(a2, b2) {
          if (!b2)
            return a2;
          a2.$$interceptor && (b2 = n2(a2.$$interceptor, b2), a2 = a2.$$intercepted);
          var c2 = false, d2 = function(d3, e2, f2, g2) {
            d3 = c2 && g2 ? g2[0] : a2(d3, e2, f2, g2);
            return b2(d3);
          };
          d2.$$intercepted = a2;
          d2.$$interceptor = b2;
          d2.literal = a2.literal;
          d2.oneTime = a2.oneTime;
          d2.constant = a2.constant;
          b2.$stateful || (c2 = !a2.inputs, d2.inputs = a2.inputs ? a2.inputs : [a2], b2.$$pure || (d2.inputs = d2.inputs.map(function(a3) {
            return a3.isPure === Hd ? function(b3) {
              return a3(b3);
            } : a3;
          })));
          return p(d2);
        }
        var G = { csp: Ba().noUnsafeEval, literals: Ia(b), isIdentifierStart: B(d) && d, isIdentifierContinue: B(c) && c };
        f.$$getAst = function(a2) {
          var b2 = new Ob(G);
          return new Nb(b2, e, G).getAst(a2).ast;
        };
        return f;
      }];
    }
    function bg() {
      var a = true;
      this.$get = ["$rootScope", "$exceptionHandler", function(b, d) {
        return Nd(function(a2) {
          b.$evalAsync(a2);
        }, d, a);
      }];
      this.errorOnUnhandledRejections = function(b) {
        return w2(b) ? (a = b, this) : a;
      };
    }
    function cg() {
      var a = true;
      this.$get = ["$browser", "$exceptionHandler", function(b, d) {
        return Nd(function(a2) {
          b.defer(a2);
        }, d, a);
      }];
      this.errorOnUnhandledRejections = function(b) {
        return w2(b) ? (a = b, this) : a;
      };
    }
    function Nd(a, b, d) {
      function c() {
        return new e();
      }
      function e() {
        var a2 = this.promise = new f();
        this.resolve = function(b2) {
          h2(a2, b2);
        };
        this.reject = function(b2) {
          m(a2, b2);
        };
        this.notify = function(b2) {
          n2(a2, b2);
        };
      }
      function f() {
        this.$$state = { status: 0 };
      }
      function g() {
        for (; !w3 && x2.length; ) {
          var a2 = x2.shift();
          if (!a2.pur) {
            a2.pur = true;
            var c2 = a2.value, c2 = "Possibly unhandled rejection: " + ("function" === typeof c2 ? c2.toString().replace(/ \{[\s\S]*$/, "") : A(c2) ? "undefined" : "string" !== typeof c2 ? Ne(c2, void 0) : c2);
            dc(a2.value) ? b(a2.value, c2) : b(c2);
          }
        }
      }
      function k(c2) {
        !d || c2.pending || 2 !== c2.status || c2.pur || (0 === w3 && 0 === x2.length && a(g), x2.push(c2));
        !c2.processScheduled && c2.pending && (c2.processScheduled = true, ++w3, a(function() {
          var e2, f2, k2;
          k2 = c2.pending;
          c2.processScheduled = false;
          c2.pending = void 0;
          try {
            for (var l2 = 0, n3 = k2.length; l2 < n3; ++l2) {
              c2.pur = true;
              f2 = k2[l2][0];
              e2 = k2[l2][c2.status];
              try {
                B(e2) ? h2(f2, e2(c2.value)) : 1 === c2.status ? h2(f2, c2.value) : m(f2, c2.value);
              } catch (p2) {
                m(
                  f2,
                  p2
                ), p2 && true === p2.$$passToExceptionHandler && b(p2);
              }
            }
          } finally {
            --w3, d && 0 === w3 && a(g);
          }
        }));
      }
      function h2(a2, b2) {
        a2.$$state.status || (b2 === a2 ? p(a2, v("qcycle", b2)) : l(a2, b2));
      }
      function l(a2, b2) {
        function c2(b3) {
          g2 || (g2 = true, l(a2, b3));
        }
        function d2(b3) {
          g2 || (g2 = true, p(a2, b3));
        }
        function e2(b3) {
          n2(a2, b3);
        }
        var f2, g2 = false;
        try {
          if (D(b2) || B(b2))
            f2 = b2.then;
          B(f2) ? (a2.$$state.status = -1, f2.call(b2, c2, d2, e2)) : (a2.$$state.value = b2, a2.$$state.status = 1, k(a2.$$state));
        } catch (h3) {
          d2(h3);
        }
      }
      function m(a2, b2) {
        a2.$$state.status || p(a2, b2);
      }
      function p(a2, b2) {
        a2.$$state.value = b2;
        a2.$$state.status = 2;
        k(a2.$$state);
      }
      function n2(c2, d2) {
        var e2 = c2.$$state.pending;
        0 >= c2.$$state.status && e2 && e2.length && a(function() {
          for (var a2, c3, f2 = 0, g2 = e2.length; f2 < g2; f2++) {
            c3 = e2[f2][0];
            a2 = e2[f2][3];
            try {
              n2(c3, B(a2) ? a2(d2) : d2);
            } catch (h3) {
              b(h3);
            }
          }
        });
      }
      function s2(a2) {
        var b2 = new f();
        m(b2, a2);
        return b2;
      }
      function G(a2, b2, c2) {
        var d2 = null;
        try {
          B(c2) && (d2 = c2());
        } catch (e2) {
          return s2(e2);
        }
        return d2 && B(d2.then) ? d2.then(function() {
          return b2(a2);
        }, s2) : b2(a2);
      }
      function t(a2, b2, c2, d2) {
        var e2 = new f();
        h2(e2, a2);
        return e2.then(b2, c2, d2);
      }
      function q2(a2) {
        if (!B(a2))
          throw v("norslvr", a2);
        var b2 = new f();
        a2(function(a3) {
          h2(b2, a3);
        }, function(a3) {
          m(b2, a3);
        });
        return b2;
      }
      var v = F("$q", TypeError), w3 = 0, x2 = [];
      S(f.prototype, { then: function(a2, b2, c2) {
        if (A(a2) && A(b2) && A(c2))
          return this;
        var d2 = new f();
        this.$$state.pending = this.$$state.pending || [];
        this.$$state.pending.push([d2, a2, b2, c2]);
        0 < this.$$state.status && k(this.$$state);
        return d2;
      }, "catch": function(a2) {
        return this.then(null, a2);
      }, "finally": function(a2, b2) {
        return this.then(function(b3) {
          return G(b3, y, a2);
        }, function(b3) {
          return G(b3, s2, a2);
        }, b2);
      } });
      var y = t;
      q2.prototype = f.prototype;
      q2.defer = c;
      q2.reject = s2;
      q2.when = t;
      q2.resolve = y;
      q2.all = function(a2) {
        var b2 = new f(), c2 = 0, d2 = H(a2) ? [] : {};
        r(a2, function(a3, e2) {
          c2++;
          t(a3).then(function(a4) {
            d2[e2] = a4;
            --c2 || h2(b2, d2);
          }, function(a4) {
            m(b2, a4);
          });
        });
        0 === c2 && h2(b2, d2);
        return b2;
      };
      q2.race = function(a2) {
        var b2 = c();
        r(a2, function(a3) {
          t(a3).then(b2.resolve, b2.reject);
        });
        return b2.promise;
      };
      return q2;
    }
    function mg() {
      this.$get = ["$window", "$timeout", function(a, b) {
        var d = a.requestAnimationFrame || a.webkitRequestAnimationFrame, c = a.cancelAnimationFrame || a.webkitCancelAnimationFrame || a.webkitCancelRequestAnimationFrame, e = !!d, f = e ? function(a2) {
          var b2 = d(a2);
          return function() {
            c(b2);
          };
        } : function(a2) {
          var c2 = b(a2, 16.66, false);
          return function() {
            b.cancel(c2);
          };
        };
        f.supported = e;
        return f;
      }];
    }
    function ag() {
      function a(a2) {
        function b2() {
          this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null;
          this.$$listeners = {};
          this.$$listenerCount = {};
          this.$$watchersCount = 0;
          this.$id = ++qb;
          this.$$ChildScope = null;
          this.$$suspended = false;
        }
        b2.prototype = a2;
        return b2;
      }
      var b = 10, d = F("$rootScope"), c = null, e = null;
      this.digestTtl = function(a2) {
        arguments.length && (b = a2);
        return b;
      };
      this.$get = [
        "$exceptionHandler",
        "$parse",
        "$browser",
        function(f, g, k) {
          function h2(a2) {
            a2.currentScope.$$destroyed = true;
          }
          function l(a2) {
            9 === wa && (a2.$$childHead && l(a2.$$childHead), a2.$$nextSibling && l(a2.$$nextSibling));
            a2.$parent = a2.$$nextSibling = a2.$$prevSibling = a2.$$childHead = a2.$$childTail = a2.$root = a2.$$watchers = null;
          }
          function m() {
            this.$id = ++qb;
            this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null;
            this.$root = this;
            this.$$suspended = this.$$destroyed = false;
            this.$$listeners = {};
            this.$$listenerCount = {};
            this.$$watchersCount = 0;
            this.$$isolateBindings = null;
          }
          function p(a2) {
            if (v.$$phase)
              throw d("inprog", v.$$phase);
            v.$$phase = a2;
          }
          function n2(a2, b2) {
            do
              a2.$$watchersCount += b2;
            while (a2 = a2.$parent);
          }
          function s2(a2, b2, c2) {
            do
              a2.$$listenerCount[c2] -= b2, 0 === a2.$$listenerCount[c2] && delete a2.$$listenerCount[c2];
            while (a2 = a2.$parent);
          }
          function G() {
          }
          function t() {
            for (; y.length; )
              try {
                y.shift()();
              } catch (a2) {
                f(a2);
              }
            e = null;
          }
          function q2() {
            null === e && (e = k.defer(function() {
              v.$apply(t);
            }, null, "$applyAsync"));
          }
          m.prototype = { constructor: m, $new: function(b2, c2) {
            var d2;
            c2 = c2 || this;
            b2 ? (d2 = new m(), d2.$root = this.$root) : (this.$$ChildScope || (this.$$ChildScope = a(this)), d2 = new this.$$ChildScope());
            d2.$parent = c2;
            d2.$$prevSibling = c2.$$childTail;
            c2.$$childHead ? (c2.$$childTail.$$nextSibling = d2, c2.$$childTail = d2) : c2.$$childHead = c2.$$childTail = d2;
            (b2 || c2 !== this) && d2.$on("$destroy", h2);
            return d2;
          }, $watch: function(a2, b2, d2, e2) {
            var f2 = g(a2);
            b2 = B(b2) ? b2 : E;
            if (f2.$$watchDelegate)
              return f2.$$watchDelegate(this, b2, d2, f2, a2);
            var h3 = this, k2 = h3.$$watchers, l2 = { fn: b2, last: G, get: f2, exp: e2 || a2, eq: !!d2 };
            c = null;
            k2 || (k2 = h3.$$watchers = [], k2.$$digestWatchIndex = -1);
            k2.unshift(l2);
            k2.$$digestWatchIndex++;
            n2(this, 1);
            return function() {
              var a3 = cb(k2, l2);
              0 <= a3 && (n2(h3, -1), a3 < k2.$$digestWatchIndex && k2.$$digestWatchIndex--);
              c = null;
            };
          }, $watchGroup: function(a2, b2) {
            function c2() {
              h3 = false;
              try {
                k2 ? (k2 = false, b2(e2, e2, g2)) : b2(e2, d2, g2);
              } finally {
                for (var f3 = 0; f3 < a2.length; f3++)
                  d2[f3] = e2[f3];
              }
            }
            var d2 = Array(a2.length), e2 = Array(a2.length), f2 = [], g2 = this, h3 = false, k2 = true;
            if (!a2.length) {
              var l2 = true;
              g2.$evalAsync(function() {
                l2 && b2(e2, e2, g2);
              });
              return function() {
                l2 = false;
              };
            }
            if (1 === a2.length)
              return this.$watch(a2[0], function(a3, c3, f3) {
                e2[0] = a3;
                d2[0] = c3;
                b2(e2, a3 === c3 ? e2 : d2, f3);
              });
            r(a2, function(a3, b3) {
              var d3 = g2.$watch(a3, function(a4) {
                e2[b3] = a4;
                h3 || (h3 = true, g2.$evalAsync(c2));
              });
              f2.push(d3);
            });
            return function() {
              for (; f2.length; )
                f2.shift()();
            };
          }, $watchCollection: function(a2, b2) {
            function c2(a3) {
              e2 = a3;
              var b3, d3, g2, h4;
              if (!A(e2)) {
                if (D(e2))
                  if (za(e2))
                    for (f2 !== n3 && (f2 = n3, t2 = f2.length = 0, l2++), a3 = e2.length, t2 !== a3 && (l2++, f2.length = t2 = a3), b3 = 0; b3 < a3; b3++)
                      h4 = f2[b3], g2 = e2[b3], d3 = h4 !== h4 && g2 !== g2, d3 || h4 === g2 || (l2++, f2[b3] = g2);
                  else {
                    f2 !== p2 && (f2 = p2 = {}, t2 = 0, l2++);
                    a3 = 0;
                    for (b3 in e2)
                      ta.call(e2, b3) && (a3++, g2 = e2[b3], h4 = f2[b3], b3 in f2 ? (d3 = h4 !== h4 && g2 !== g2, d3 || h4 === g2 || (l2++, f2[b3] = g2)) : (t2++, f2[b3] = g2, l2++));
                    if (t2 > a3)
                      for (b3 in l2++, f2)
                        ta.call(e2, b3) || (t2--, delete f2[b3]);
                  }
                else
                  f2 !== e2 && (f2 = e2, l2++);
                return l2;
              }
            }
            c2.$$pure = g(a2).literal;
            c2.$stateful = !c2.$$pure;
            var d2 = this, e2, f2, h3, k2 = 1 < b2.length, l2 = 0, m2 = g(a2, c2), n3 = [], p2 = {}, s3 = true, t2 = 0;
            return this.$watch(m2, function() {
              s3 ? (s3 = false, b2(e2, e2, d2)) : b2(e2, h3, d2);
              if (k2)
                if (D(e2))
                  if (za(e2)) {
                    h3 = Array(e2.length);
                    for (var a3 = 0; a3 < e2.length; a3++)
                      h3[a3] = e2[a3];
                  } else
                    for (a3 in h3 = {}, e2)
                      ta.call(e2, a3) && (h3[a3] = e2[a3]);
                else
                  h3 = e2;
            });
          }, $digest: function() {
            var a2, g2, h3, l2, m2, n3, s3, r2 = b, q3, y2 = w3.length ? v : this, N = [], A2, z2;
            p("$digest");
            k.$$checkUrlChange();
            this === v && null !== e && (k.defer.cancel(e), t());
            c = null;
            do {
              s3 = false;
              q3 = y2;
              for (n3 = 0; n3 < w3.length; n3++) {
                try {
                  z2 = w3[n3], l2 = z2.fn, l2(z2.scope, z2.locals);
                } catch (C2) {
                  f(C2);
                }
                c = null;
              }
              w3.length = 0;
              a:
                do {
                  if (n3 = !q3.$$suspended && q3.$$watchers)
                    for (n3.$$digestWatchIndex = n3.length; n3.$$digestWatchIndex--; )
                      try {
                        if (a2 = n3[n3.$$digestWatchIndex]) {
                          if (m2 = a2.get, (g2 = m2(q3)) !== (h3 = a2.last) && !(a2.eq ? va(g2, h3) : Y(g2) && Y(h3)))
                            s3 = true, c = a2, a2.last = a2.eq ? Ia(g2, null) : g2, l2 = a2.fn, l2(g2, h3 === G ? g2 : h3, q3), 5 > r2 && (A2 = 4 - r2, N[A2] || (N[A2] = []), N[A2].push({ msg: B(a2.exp) ? "fn: " + (a2.exp.name || a2.exp.toString()) : a2.exp, newVal: g2, oldVal: h3 }));
                          else if (a2 === c) {
                            s3 = false;
                            break a;
                          }
                        }
                      } catch (E2) {
                        f(E2);
                      }
                  if (!(n3 = !q3.$$suspended && q3.$$watchersCount && q3.$$childHead || q3 !== y2 && q3.$$nextSibling))
                    for (; q3 !== y2 && !(n3 = q3.$$nextSibling); )
                      q3 = q3.$parent;
                } while (q3 = n3);
              if ((s3 || w3.length) && !r2--)
                throw v.$$phase = null, d("infdig", b, N);
            } while (s3 || w3.length);
            for (v.$$phase = null; J < x2.length; )
              try {
                x2[J++]();
              } catch (D2) {
                f(D2);
              }
            x2.length = J = 0;
            k.$$checkUrlChange();
          }, $suspend: function() {
            this.$$suspended = true;
          }, $isSuspended: function() {
            return this.$$suspended;
          }, $resume: function() {
            this.$$suspended = false;
          }, $destroy: function() {
            if (!this.$$destroyed) {
              var a2 = this.$parent;
              this.$broadcast("$destroy");
              this.$$destroyed = true;
              this === v && k.$$applicationDestroyed();
              n2(this, -this.$$watchersCount);
              for (var b2 in this.$$listenerCount)
                s2(this, this.$$listenerCount[b2], b2);
              a2 && a2.$$childHead === this && (a2.$$childHead = this.$$nextSibling);
              a2 && a2.$$childTail === this && (a2.$$childTail = this.$$prevSibling);
              this.$$prevSibling && (this.$$prevSibling.$$nextSibling = this.$$nextSibling);
              this.$$nextSibling && (this.$$nextSibling.$$prevSibling = this.$$prevSibling);
              this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = E;
              this.$on = this.$watch = this.$watchGroup = function() {
                return E;
              };
              this.$$listeners = {};
              this.$$nextSibling = null;
              l(this);
            }
          }, $eval: function(a2, b2) {
            return g(a2)(this, b2);
          }, $evalAsync: function(a2, b2) {
            v.$$phase || w3.length || k.defer(function() {
              w3.length && v.$digest();
            }, null, "$evalAsync");
            w3.push({ scope: this, fn: g(a2), locals: b2 });
          }, $$postDigest: function(a2) {
            x2.push(a2);
          }, $apply: function(a2) {
            try {
              p("$apply");
              try {
                return this.$eval(a2);
              } finally {
                v.$$phase = null;
              }
            } catch (b2) {
              f(b2);
            } finally {
              try {
                v.$digest();
              } catch (c2) {
                throw f(c2), c2;
              }
            }
          }, $applyAsync: function(a2) {
            function b2() {
              c2.$eval(a2);
            }
            var c2 = this;
            a2 && y.push(b2);
            a2 = g(a2);
            q2();
          }, $on: function(a2, b2) {
            var c2 = this.$$listeners[a2];
            c2 || (this.$$listeners[a2] = c2 = []);
            c2.push(b2);
            var d2 = this;
            do
              d2.$$listenerCount[a2] || (d2.$$listenerCount[a2] = 0), d2.$$listenerCount[a2]++;
            while (d2 = d2.$parent);
            var e2 = this;
            return function() {
              var d3 = c2.indexOf(b2);
              -1 !== d3 && (delete c2[d3], s2(e2, 1, a2));
            };
          }, $emit: function(a2, b2) {
            var c2 = [], d2, e2 = this, g2 = false, h3 = { name: a2, targetScope: e2, stopPropagation: function() {
              g2 = true;
            }, preventDefault: function() {
              h3.defaultPrevented = true;
            }, defaultPrevented: false }, k2 = db([h3], arguments, 1), l2, m2;
            do {
              d2 = e2.$$listeners[a2] || c2;
              h3.currentScope = e2;
              l2 = 0;
              for (m2 = d2.length; l2 < m2; l2++)
                if (d2[l2])
                  try {
                    d2[l2].apply(null, k2);
                  } catch (n3) {
                    f(n3);
                  }
                else
                  d2.splice(l2, 1), l2--, m2--;
              if (g2)
                break;
              e2 = e2.$parent;
            } while (e2);
            h3.currentScope = null;
            return h3;
          }, $broadcast: function(a2, b2) {
            var c2 = this, d2 = this, e2 = { name: a2, targetScope: this, preventDefault: function() {
              e2.defaultPrevented = true;
            }, defaultPrevented: false };
            if (!this.$$listenerCount[a2])
              return e2;
            for (var g2 = db([e2], arguments, 1), h3, k2; c2 = d2; ) {
              e2.currentScope = c2;
              d2 = c2.$$listeners[a2] || [];
              h3 = 0;
              for (k2 = d2.length; h3 < k2; h3++)
                if (d2[h3])
                  try {
                    d2[h3].apply(null, g2);
                  } catch (l2) {
                    f(l2);
                  }
                else
                  d2.splice(h3, 1), h3--, k2--;
              if (!(d2 = c2.$$listenerCount[a2] && c2.$$childHead || c2 !== this && c2.$$nextSibling))
                for (; c2 !== this && !(d2 = c2.$$nextSibling); )
                  c2 = c2.$parent;
            }
            e2.currentScope = null;
            return e2;
          } };
          var v = new m(), w3 = v.$$asyncQueue = [], x2 = v.$$postDigestQueue = [], y = v.$$applyAsyncQueue = [], J = 0;
          return v;
        }
      ];
    }
    function Qe() {
      var a = /^\s*(https?|s?ftp|mailto|tel|file):/, b = /^\s*((https?|ftp|file|blob):|data:image\/)/;
      this.aHrefSanitizationTrustedUrlList = function(b2) {
        return w2(b2) ? (a = b2, this) : a;
      };
      this.imgSrcSanitizationTrustedUrlList = function(a2) {
        return w2(a2) ? (b = a2, this) : b;
      };
      this.$get = function() {
        return function(d, c) {
          var e = c ? b : a, f = ga(d && d.trim()).href;
          return "" === f || f.match(e) ? d : "unsafe:" + f;
        };
      };
    }
    function Xg(a) {
      if ("self" === a)
        return a;
      if (C(a)) {
        if (-1 < a.indexOf("***"))
          throw Ea("iwcard", a);
        a = Od(a).replace(/\\\*\\\*/g, ".*").replace(/\\\*/g, "[^:/.?&;]*");
        return new RegExp("^" + a + "$");
      }
      if (ab(a))
        return new RegExp("^" + a.source + "$");
      throw Ea("imatcher");
    }
    function Pd(a) {
      var b = [];
      w2(a) && r(a, function(a2) {
        b.push(Xg(a2));
      });
      return b;
    }
    function eg() {
      this.SCE_CONTEXTS = W;
      var a = ["self"], b = [];
      this.trustedResourceUrlList = function(b2) {
        arguments.length && (a = Pd(b2));
        return a;
      };
      Object.defineProperty(this, "resourceUrlWhitelist", { get: function() {
        return this.trustedResourceUrlList;
      }, set: function(a2) {
        this.trustedResourceUrlList = a2;
      } });
      this.bannedResourceUrlList = function(a2) {
        arguments.length && (b = Pd(a2));
        return b;
      };
      Object.defineProperty(this, "resourceUrlBlacklist", { get: function() {
        return this.bannedResourceUrlList;
      }, set: function(a2) {
        this.bannedResourceUrlList = a2;
      } });
      this.$get = ["$injector", "$$sanitizeUri", function(d, c) {
        function e(a2, b2) {
          var c2;
          "self" === a2 ? (c2 = Cc(b2, Qd)) || (z.document.baseURI ? c2 = z.document.baseURI : (Na || (Na = z.document.createElement("a"), Na.href = ".", Na = Na.cloneNode(false)), c2 = Na.href), c2 = Cc(b2, c2)) : c2 = !!a2.exec(b2.href);
          return c2;
        }
        function f(a2) {
          var b2 = function(a3) {
            this.$$unwrapTrustedValue = function() {
              return a3;
            };
          };
          a2 && (b2.prototype = new a2());
          b2.prototype.valueOf = function() {
            return this.$$unwrapTrustedValue();
          };
          b2.prototype.toString = function() {
            return this.$$unwrapTrustedValue().toString();
          };
          return b2;
        }
        var g = function(a2) {
          throw Ea("unsafe");
        };
        d.has("$sanitize") && (g = d.get("$sanitize"));
        var k = f(), h2 = {};
        h2[W.HTML] = f(k);
        h2[W.CSS] = f(k);
        h2[W.MEDIA_URL] = f(k);
        h2[W.URL] = f(h2[W.MEDIA_URL]);
        h2[W.JS] = f(k);
        h2[W.RESOURCE_URL] = f(h2[W.URL]);
        return { trustAs: function(a2, b2) {
          var c2 = h2.hasOwnProperty(a2) ? h2[a2] : null;
          if (!c2)
            throw Ea("icontext", a2, b2);
          if (null === b2 || A(b2) || "" === b2)
            return b2;
          if ("string" !== typeof b2)
            throw Ea("itype", a2);
          return new c2(b2);
        }, getTrusted: function(d2, f2) {
          if (null === f2 || A(f2) || "" === f2)
            return f2;
          var k2 = h2.hasOwnProperty(d2) ? h2[d2] : null;
          if (k2 && f2 instanceof k2)
            return f2.$$unwrapTrustedValue();
          B(f2.$$unwrapTrustedValue) && (f2 = f2.$$unwrapTrustedValue());
          if (d2 === W.MEDIA_URL || d2 === W.URL)
            return c(f2.toString(), d2 === W.MEDIA_URL);
          if (d2 === W.RESOURCE_URL) {
            var k2 = ga(f2.toString()), n2, s2, r2 = false;
            n2 = 0;
            for (s2 = a.length; n2 < s2; n2++)
              if (e(a[n2], k2)) {
                r2 = true;
                break;
              }
            if (r2) {
              for (n2 = 0, s2 = b.length; n2 < s2; n2++)
                if (e(b[n2], k2)) {
                  r2 = false;
                  break;
                }
            }
            if (r2)
              return f2;
            throw Ea("insecurl", f2.toString());
          }
          if (d2 === W.HTML)
            return g(f2);
          throw Ea("unsafe");
        }, valueOf: function(a2) {
          return a2 instanceof k ? a2.$$unwrapTrustedValue() : a2;
        } };
      }];
    }
    function dg() {
      var a = true;
      this.enabled = function(b) {
        arguments.length && (a = !!b);
        return a;
      };
      this.$get = ["$parse", "$sceDelegate", function(b, d) {
        if (a && 8 > wa)
          throw Ea("iequirks");
        var c = ja(W);
        c.isEnabled = function() {
          return a;
        };
        c.trustAs = d.trustAs;
        c.getTrusted = d.getTrusted;
        c.valueOf = d.valueOf;
        a || (c.trustAs = c.getTrusted = function(a2, b2) {
          return b2;
        }, c.valueOf = Ta);
        c.parseAs = function(a2, d2) {
          var e2 = b(d2);
          return e2.literal && e2.constant ? e2 : b(d2, function(b2) {
            return c.getTrusted(a2, b2);
          });
        };
        var e = c.parseAs, f = c.getTrusted, g = c.trustAs;
        r(
          W,
          function(a2, b2) {
            var d2 = K(b2);
            c[("parse_as_" + d2).replace(Dc, xb)] = function(b3) {
              return e(a2, b3);
            };
            c[("get_trusted_" + d2).replace(Dc, xb)] = function(b3) {
              return f(a2, b3);
            };
            c[("trust_as_" + d2).replace(Dc, xb)] = function(b3) {
              return g(a2, b3);
            };
          }
        );
        return c;
      }];
    }
    function fg() {
      this.$get = ["$window", "$document", function(a, b) {
        var d = {}, c = !((!a.nw || !a.nw.process) && a.chrome && (a.chrome.app && a.chrome.app.runtime || !a.chrome.app && a.chrome.runtime && a.chrome.runtime.id)) && a.history && a.history.pushState, e = fa((/android (\d+)/.exec(K((a.navigator || {}).userAgent)) || [])[1]), f = /Boxee/i.test((a.navigator || {}).userAgent), g = b[0] || {}, k = g.body && g.body.style, h2 = false, l = false;
        k && (h2 = !!("transition" in k || "webkitTransition" in k), l = !!("animation" in k || "webkitAnimation" in k));
        return { history: !(!c || 4 > e || f), hasEvent: function(a2) {
          if ("input" === a2 && wa)
            return false;
          if (A(d[a2])) {
            var b2 = g.createElement("div");
            d[a2] = "on" + a2 in b2;
          }
          return d[a2];
        }, csp: Ba(), transitions: h2, animations: l, android: e };
      }];
    }
    function gg() {
      this.$get = ia(function(a) {
        return new Yg(a);
      });
    }
    function Yg(a) {
      function b() {
        var a2 = e.pop();
        return a2 && a2.cb;
      }
      function d(a2) {
        for (var b2 = e.length - 1; 0 <= b2; --b2) {
          var c2 = e[b2];
          if (c2.type === a2)
            return e.splice(b2, 1), c2.cb;
        }
      }
      var c = {}, e = [], f = this.ALL_TASKS_TYPE = "$$all$$", g = this.DEFAULT_TASK_TYPE = "$$default$$";
      this.completeTask = function(e2, h2) {
        h2 = h2 || g;
        try {
          e2();
        } finally {
          var l;
          l = h2 || g;
          c[l] && (c[l]--, c[f]--);
          l = c[h2];
          var m = c[f];
          if (!m || !l)
            for (l = m ? d : b; m = l(h2); )
              try {
                m();
              } catch (p) {
                a.error(p);
              }
        }
      };
      this.incTaskCount = function(a2) {
        a2 = a2 || g;
        c[a2] = (c[a2] || 0) + 1;
        c[f] = (c[f] || 0) + 1;
      };
      this.notifyWhenNoPendingTasks = function(a2, b2) {
        b2 = b2 || f;
        c[b2] ? e.push({ type: b2, cb: a2 }) : a2();
      };
    }
    function ig() {
      var a;
      this.httpOptions = function(b) {
        return b ? (a = b, this) : a;
      };
      this.$get = ["$exceptionHandler", "$templateCache", "$http", "$q", "$sce", function(b, d, c, e, f) {
        function g(k, h2) {
          g.totalPendingRequests++;
          if (!C(k) || A(d.get(k)))
            k = f.getTrustedResourceUrl(k);
          var l = c.defaults && c.defaults.transformResponse;
          H(l) ? l = l.filter(function(a2) {
            return a2 !== wc;
          }) : l === wc && (l = null);
          return c.get(k, S({ cache: d, transformResponse: l }, a)).finally(function() {
            g.totalPendingRequests--;
          }).then(
            function(a2) {
              return d.put(k, a2.data);
            },
            function(a2) {
              h2 || (a2 = Zg("tpload", k, a2.status, a2.statusText), b(a2));
              return e.reject(a2);
            }
          );
        }
        g.totalPendingRequests = 0;
        return g;
      }];
    }
    function jg() {
      this.$get = ["$rootScope", "$browser", "$location", function(a, b, d) {
        return { findBindings: function(a2, b2, d2) {
          a2 = a2.getElementsByClassName("ng-binding");
          var g = [];
          r(a2, function(a3) {
            var c = ca.element(a3).data("$binding");
            c && r(c, function(c2) {
              d2 ? new RegExp("(^|\\s)" + Od(b2) + "(\\s|\\||$)").test(c2) && g.push(a3) : -1 !== c2.indexOf(b2) && g.push(a3);
            });
          });
          return g;
        }, findModels: function(a2, b2, d2) {
          for (var g = [
            "ng-",
            "data-ng-",
            "ng\\:"
          ], k = 0; k < g.length; ++k) {
            var h2 = a2.querySelectorAll("[" + g[k] + "model" + (d2 ? "=" : "*=") + '"' + b2 + '"]');
            if (h2.length)
              return h2;
          }
        }, getLocation: function() {
          return d.url();
        }, setLocation: function(b2) {
          b2 !== d.url() && (d.url(b2), a.$digest());
        }, whenStable: function(a2) {
          b.notifyWhenNoOutstandingRequests(a2);
        } };
      }];
    }
    function kg() {
      this.$get = ["$rootScope", "$browser", "$q", "$$q", "$exceptionHandler", function(a, b, d, c, e) {
        function f(f2, h2, l) {
          B(f2) || (l = h2, h2 = f2, f2 = E);
          var m = Ha.call(arguments, 3), p = w2(l) && !l, n2 = (p ? c : d).defer(), s2 = n2.promise, r2;
          r2 = b.defer(function() {
            try {
              n2.resolve(f2.apply(null, m));
            } catch (b2) {
              n2.reject(b2), e(b2);
            } finally {
              delete g[s2.$$timeoutId];
            }
            p || a.$apply();
          }, h2, "$timeout");
          s2.$$timeoutId = r2;
          g[r2] = n2;
          return s2;
        }
        var g = {};
        f.cancel = function(a2) {
          if (!a2)
            return false;
          if (!a2.hasOwnProperty("$$timeoutId"))
            throw $g("badprom");
          if (!g.hasOwnProperty(a2.$$timeoutId))
            return false;
          a2 = a2.$$timeoutId;
          var c2 = g[a2], d2 = c2.promise;
          d2.$$state && (d2.$$state.pur = true);
          c2.reject("canceled");
          delete g[a2];
          return b.defer.cancel(a2);
        };
        return f;
      }];
    }
    function ga(a) {
      if (!C(a))
        return a;
      wa && (aa.setAttribute(
        "href",
        a
      ), a = aa.href);
      aa.setAttribute("href", a);
      a = aa.hostname;
      !ah && -1 < a.indexOf(":") && (a = "[" + a + "]");
      return { href: aa.href, protocol: aa.protocol ? aa.protocol.replace(/:$/, "") : "", host: aa.host, search: aa.search ? aa.search.replace(/^\?/, "") : "", hash: aa.hash ? aa.hash.replace(/^#/, "") : "", hostname: a, port: aa.port, pathname: "/" === aa.pathname.charAt(0) ? aa.pathname : "/" + aa.pathname };
    }
    function Og(a) {
      var b = [Qd].concat(a.map(ga));
      return function(a2) {
        a2 = ga(a2);
        return b.some(Cc.bind(null, a2));
      };
    }
    function Cc(a, b) {
      a = ga(a);
      b = ga(b);
      return a.protocol === b.protocol && a.host === b.host;
    }
    function lg() {
      this.$get = ia(z);
    }
    function Rd(a) {
      function b(a2) {
        try {
          return decodeURIComponent(a2);
        } catch (b2) {
          return a2;
        }
      }
      var d = a[0] || {}, c = {}, e = "";
      return function() {
        var a2, g, k, h2, l;
        try {
          a2 = d.cookie || "";
        } catch (m) {
          a2 = "";
        }
        if (a2 !== e)
          for (e = a2, a2 = e.split("; "), c = {}, k = 0; k < a2.length; k++)
            g = a2[k], h2 = g.indexOf("="), 0 < h2 && (l = b(g.substring(0, h2)), A(c[l]) && (c[l] = b(g.substring(h2 + 1))));
        return c;
      };
    }
    function pg() {
      this.$get = Rd;
    }
    function fd(a) {
      function b(d, c) {
        if (D(d)) {
          var e = {};
          r(d, function(a2, c2) {
            e[c2] = b(c2, a2);
          });
          return e;
        }
        return a.factory(d + "Filter", c);
      }
      this.register = b;
      this.$get = ["$injector", function(a2) {
        return function(b2) {
          return a2.get(b2 + "Filter");
        };
      }];
      b("currency", Sd);
      b("date", Td);
      b("filter", bh);
      b("json", ch);
      b("limitTo", dh);
      b("lowercase", eh);
      b("number", Ud);
      b("orderBy", Vd);
      b("uppercase", fh);
    }
    function bh() {
      return function(a, b, d, c) {
        if (!za(a)) {
          if (null == a)
            return a;
          throw F("filter")("notarray", a);
        }
        c = c || "$";
        var e;
        switch (Ec(b)) {
          case "function":
            break;
          case "boolean":
          case "null":
          case "number":
          case "string":
            e = true;
          case "object":
            b = gh(b, d, c, e);
            break;
          default:
            return a;
        }
        return Array.prototype.filter.call(
          a,
          b
        );
      };
    }
    function gh(a, b, d, c) {
      var e = D(a) && d in a;
      true === b ? b = va : B(b) || (b = function(a2, b2) {
        if (A(a2))
          return false;
        if (null === a2 || null === b2)
          return a2 === b2;
        if (D(b2) || D(a2) && !cc(a2))
          return false;
        a2 = K("" + a2);
        b2 = K("" + b2);
        return -1 !== a2.indexOf(b2);
      });
      return function(f) {
        return e && !D(f) ? Fa(f, a[d], b, d, false) : Fa(f, a, b, d, c);
      };
    }
    function Fa(a, b, d, c, e, f) {
      var g = Ec(a), k = Ec(b);
      if ("string" === k && "!" === b.charAt(0))
        return !Fa(a, b.substring(1), d, c, e);
      if (H(a))
        return a.some(function(a2) {
          return Fa(a2, b, d, c, e);
        });
      switch (g) {
        case "object":
          var h2;
          if (e) {
            for (h2 in a)
              if (h2.charAt && "$" !== h2.charAt(0) && Fa(a[h2], b, d, c, true))
                return true;
            return f ? false : Fa(a, b, d, c, false);
          }
          if ("object" === k) {
            for (h2 in b)
              if (f = b[h2], !B(f) && !A(f) && (g = h2 === c, !Fa(g ? a : a[h2], f, d, c, g, g)))
                return false;
            return true;
          }
          return d(a, b);
        case "function":
          return false;
        default:
          return d(a, b);
      }
    }
    function Ec(a) {
      return null === a ? "null" : typeof a;
    }
    function Sd(a) {
      var b = a.NUMBER_FORMATS;
      return function(a2, c, e) {
        A(c) && (c = b.CURRENCY_SYM);
        A(e) && (e = b.PATTERNS[1].maxFrac);
        var f = c ? /\u00A4/g : /\s*\u00A4\s*/g;
        return null == a2 ? a2 : Wd(a2, b.PATTERNS[1], b.GROUP_SEP, b.DECIMAL_SEP, e).replace(
          f,
          c
        );
      };
    }
    function Ud(a) {
      var b = a.NUMBER_FORMATS;
      return function(a2, c) {
        return null == a2 ? a2 : Wd(a2, b.PATTERNS[0], b.GROUP_SEP, b.DECIMAL_SEP, c);
      };
    }
    function hh(a) {
      var b = 0, d, c, e, f, g;
      -1 < (c = a.indexOf(Xd)) && (a = a.replace(Xd, ""));
      0 < (e = a.search(/e/i)) ? (0 > c && (c = e), c += +a.slice(e + 1), a = a.substring(0, e)) : 0 > c && (c = a.length);
      for (e = 0; a.charAt(e) === Fc; e++)
        ;
      if (e === (g = a.length))
        d = [0], c = 1;
      else {
        for (g--; a.charAt(g) === Fc; )
          g--;
        c -= e;
        d = [];
        for (f = 0; e <= g; e++, f++)
          d[f] = +a.charAt(e);
      }
      c > Yd && (d = d.splice(0, Yd - 1), b = c - 1, c = 1);
      return { d, e: b, i: c };
    }
    function ih(a, b, d, c) {
      var e = a.d, f = e.length - a.i;
      b = A(b) ? Math.min(Math.max(d, f), c) : +b;
      d = b + a.i;
      c = e[d];
      if (0 < d) {
        e.splice(Math.max(a.i, d));
        for (var g = d; g < e.length; g++)
          e[g] = 0;
      } else
        for (f = Math.max(0, f), a.i = 1, e.length = Math.max(1, d = b + 1), e[0] = 0, g = 1; g < d; g++)
          e[g] = 0;
      if (5 <= c)
        if (0 > d - 1) {
          for (c = 0; c > d; c--)
            e.unshift(0), a.i++;
          e.unshift(1);
          a.i++;
        } else
          e[d - 1]++;
      for (; f < Math.max(0, b); f++)
        e.push(0);
      if (b = e.reduceRight(function(a2, b2, c2, d2) {
        b2 += a2;
        d2[c2] = b2 % 10;
        return Math.floor(b2 / 10);
      }, 0))
        e.unshift(b), a.i++;
    }
    function Wd(a, b, d, c, e) {
      if (!C(a) && !X(a) || isNaN(a))
        return "";
      var f = !isFinite(a), g = false, k = Math.abs(a) + "", h2 = "";
      if (f)
        h2 = "\u221E";
      else {
        g = hh(k);
        ih(g, e, b.minFrac, b.maxFrac);
        h2 = g.d;
        k = g.i;
        e = g.e;
        f = [];
        for (g = h2.reduce(function(a2, b2) {
          return a2 && !b2;
        }, true); 0 > k; )
          h2.unshift(0), k++;
        0 < k ? f = h2.splice(k, h2.length) : (f = h2, h2 = [0]);
        k = [];
        for (h2.length >= b.lgSize && k.unshift(h2.splice(-b.lgSize, h2.length).join("")); h2.length > b.gSize; )
          k.unshift(h2.splice(-b.gSize, h2.length).join(""));
        h2.length && k.unshift(h2.join(""));
        h2 = k.join(d);
        f.length && (h2 += c + f.join(""));
        e && (h2 += "e+" + e);
      }
      return 0 > a && !g ? b.negPre + h2 + b.negSuf : b.posPre + h2 + b.posSuf;
    }
    function Pb(a, b, d, c) {
      var e = "";
      if (0 > a || c && 0 >= a)
        c ? a = -a + 1 : (a = -a, e = "-");
      for (a = "" + a; a.length < b; )
        a = Fc + a;
      d && (a = a.substr(a.length - b));
      return e + a;
    }
    function ea(a, b, d, c, e) {
      d = d || 0;
      return function(f) {
        f = f["get" + a]();
        if (0 < d || f > -d)
          f += d;
        0 === f && -12 === d && (f = 12);
        return Pb(f, b, c, e);
      };
    }
    function lb(a, b, d) {
      return function(c, e) {
        var f = c["get" + a](), g = vb((d ? "STANDALONE" : "") + (b ? "SHORT" : "") + a);
        return e[g][f];
      };
    }
    function Zd(a) {
      var b = new Date(a, 0, 1).getDay();
      return new Date(a, 0, (4 >= b ? 5 : 12) - b);
    }
    function $d(a) {
      return function(b) {
        var d = Zd(b.getFullYear());
        b = +new Date(b.getFullYear(), b.getMonth(), b.getDate() + (4 - b.getDay())) - +d;
        b = 1 + Math.round(b / 6048e5);
        return Pb(b, a);
      };
    }
    function Gc(a, b) {
      return 0 >= a.getFullYear() ? b.ERAS[0] : b.ERAS[1];
    }
    function Td(a) {
      function b(a2) {
        var b2;
        if (b2 = a2.match(d)) {
          a2 = new Date(0);
          var f = 0, g = 0, k = b2[8] ? a2.setUTCFullYear : a2.setFullYear, h2 = b2[8] ? a2.setUTCHours : a2.setHours;
          b2[9] && (f = fa(b2[9] + b2[10]), g = fa(b2[9] + b2[11]));
          k.call(a2, fa(b2[1]), fa(b2[2]) - 1, fa(b2[3]));
          f = fa(b2[4] || 0) - f;
          g = fa(b2[5] || 0) - g;
          k = fa(b2[6] || 0);
          b2 = Math.round(1e3 * parseFloat("0." + (b2[7] || 0)));
          h2.call(a2, f, g, k, b2);
        }
        return a2;
      }
      var d = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
      return function(c, d2, f) {
        var g = "", k = [], h2, l;
        d2 = d2 || "mediumDate";
        d2 = a.DATETIME_FORMATS[d2] || d2;
        C(c) && (c = jh.test(c) ? fa(c) : b(c));
        X(c) && (c = new Date(c));
        if (!ha(c) || !isFinite(c.getTime()))
          return c;
        for (; d2; )
          (l = kh.exec(d2)) ? (k = db(k, l, 1), d2 = k.pop()) : (k.push(d2), d2 = null);
        var m = c.getTimezoneOffset();
        f && (m = fc(f, m), c = gc(c, f, true));
        r(k, function(b2) {
          h2 = lh[b2];
          g += h2 ? h2(
            c,
            a.DATETIME_FORMATS,
            m
          ) : "''" === b2 ? "'" : b2.replace(/(^'|'$)/g, "").replace(/''/g, "'");
        });
        return g;
      };
    }
    function ch() {
      return function(a, b) {
        A(b) && (b = 2);
        return eb(a, b);
      };
    }
    function dh() {
      return function(a, b, d) {
        b = Infinity === Math.abs(Number(b)) ? Number(b) : fa(b);
        if (Y(b))
          return a;
        X(a) && (a = a.toString());
        if (!za(a))
          return a;
        d = !d || isNaN(d) ? 0 : fa(d);
        d = 0 > d ? Math.max(0, a.length + d) : d;
        return 0 <= b ? Hc(a, d, d + b) : 0 === d ? Hc(a, b, a.length) : Hc(a, Math.max(0, d + b), d);
      };
    }
    function Hc(a, b, d) {
      return C(a) ? a.slice(b, d) : Ha.call(a, b, d);
    }
    function Vd(a) {
      function b(b2) {
        return b2.map(function(b3) {
          var c2 = 1, d2 = Ta;
          if (B(b3))
            d2 = b3;
          else if (C(b3)) {
            if ("+" === b3.charAt(0) || "-" === b3.charAt(0))
              c2 = "-" === b3.charAt(0) ? -1 : 1, b3 = b3.substring(1);
            if ("" !== b3 && (d2 = a(b3), d2.constant))
              var e = d2(), d2 = function(a2) {
                return a2[e];
              };
          }
          return { get: d2, descending: c2 };
        });
      }
      function d(a2) {
        switch (typeof a2) {
          case "number":
          case "boolean":
          case "string":
            return true;
          default:
            return false;
        }
      }
      function c(a2, b2) {
        var c2 = 0, d2 = a2.type, h2 = b2.type;
        if (d2 === h2) {
          var h2 = a2.value, l = b2.value;
          "string" === d2 ? (h2 = h2.toLowerCase(), l = l.toLowerCase()) : "object" === d2 && (D(h2) && (h2 = a2.index), D(l) && (l = b2.index));
          h2 !== l && (c2 = h2 < l ? -1 : 1);
        } else
          c2 = "undefined" === d2 ? 1 : "undefined" === h2 ? -1 : "null" === d2 ? 1 : "null" === h2 ? -1 : d2 < h2 ? -1 : 1;
        return c2;
      }
      return function(a2, f, g, k) {
        if (null == a2)
          return a2;
        if (!za(a2))
          throw F("orderBy")("notarray", a2);
        H(f) || (f = [f]);
        0 === f.length && (f = ["+"]);
        var h2 = b(f), l = g ? -1 : 1, m = B(k) ? k : c;
        a2 = Array.prototype.map.call(a2, function(a3, b2) {
          return { value: a3, tieBreaker: { value: b2, type: "number", index: b2 }, predicateValues: h2.map(function(c2) {
            var e = c2.get(a3);
            c2 = typeof e;
            if (null === e)
              c2 = "null";
            else if ("object" === c2)
              a: {
                if (B(e.valueOf) && (e = e.valueOf(), d(e)))
                  break a;
                cc(e) && (e = e.toString(), d(e));
              }
            return { value: e, type: c2, index: b2 };
          }) };
        });
        a2.sort(function(a3, b2) {
          for (var d2 = 0, e = h2.length; d2 < e; d2++) {
            var f2 = m(a3.predicateValues[d2], b2.predicateValues[d2]);
            if (f2)
              return f2 * h2[d2].descending * l;
          }
          return (m(a3.tieBreaker, b2.tieBreaker) || c(a3.tieBreaker, b2.tieBreaker)) * l;
        });
        return a2 = a2.map(function(a3) {
          return a3.value;
        });
      };
    }
    function Ra(a) {
      B(a) && (a = { link: a });
      a.restrict = a.restrict || "AC";
      return ia(a);
    }
    function Qb(a, b, d, c, e) {
      this.$$controls = [];
      this.$error = {};
      this.$$success = {};
      this.$pending = void 0;
      this.$name = e(b.name || b.ngForm || "")(d);
      this.$dirty = false;
      this.$valid = this.$pristine = true;
      this.$submitted = this.$invalid = false;
      this.$$parentForm = mb;
      this.$$element = a;
      this.$$animate = c;
      ae(this);
    }
    function ae(a) {
      a.$$classCache = {};
      a.$$classCache[be] = !(a.$$classCache[nb] = a.$$element.hasClass(nb));
    }
    function ce(a) {
      function b(a2, b2, c2) {
        c2 && !a2.$$classCache[b2] ? (a2.$$animate.addClass(a2.$$element, b2), a2.$$classCache[b2] = true) : !c2 && a2.$$classCache[b2] && (a2.$$animate.removeClass(a2.$$element, b2), a2.$$classCache[b2] = false);
      }
      function d(a2, c2, d2) {
        c2 = c2 ? "-" + Xc(c2, "-") : "";
        b(a2, nb + c2, true === d2);
        b(a2, be + c2, false === d2);
      }
      var c = a.set, e = a.unset;
      a.clazz.prototype.$setValidity = function(a2, g, k) {
        A(g) ? (this.$pending || (this.$pending = {}), c(this.$pending, a2, k)) : (this.$pending && e(this.$pending, a2, k), de(this.$pending) && (this.$pending = void 0));
        Ga(g) ? g ? (e(this.$error, a2, k), c(this.$$success, a2, k)) : (c(this.$error, a2, k), e(this.$$success, a2, k)) : (e(this.$error, a2, k), e(this.$$success, a2, k));
        this.$pending ? (b(this, "ng-pending", true), this.$valid = this.$invalid = void 0, d(this, "", null)) : (b(this, "ng-pending", false), this.$valid = de(this.$error), this.$invalid = !this.$valid, d(this, "", this.$valid));
        g = this.$pending && this.$pending[a2] ? void 0 : this.$error[a2] ? false : this.$$success[a2] ? true : null;
        d(this, a2, g);
        this.$$parentForm.$setValidity(a2, g, this);
      };
    }
    function de(a) {
      if (a) {
        for (var b in a)
          if (a.hasOwnProperty(b))
            return false;
      }
      return true;
    }
    function Ic(a) {
      a.$formatters.push(function(b) {
        return a.$isEmpty(b) ? b : b.toString();
      });
    }
    function Sa(a, b, d, c, e, f) {
      var g = K(b[0].type);
      if (!e.android) {
        var k = false;
        b.on("compositionstart", function() {
          k = true;
        });
        b.on(
          "compositionupdate",
          function(a2) {
            if (A(a2.data) || "" === a2.data)
              k = false;
          }
        );
        b.on("compositionend", function() {
          k = false;
          l();
        });
      }
      var h2, l = function(a2) {
        h2 && (f.defer.cancel(h2), h2 = null);
        if (!k) {
          var e2 = b.val();
          a2 = a2 && a2.type;
          "password" === g || d.ngTrim && "false" === d.ngTrim || (e2 = V(e2));
          (c.$viewValue !== e2 || "" === e2 && c.$$hasNativeValidators) && c.$setViewValue(e2, a2);
        }
      };
      if (e.hasEvent("input"))
        b.on("input", l);
      else {
        var m = function(a2, b2, c2) {
          h2 || (h2 = f.defer(function() {
            h2 = null;
            b2 && b2.value === c2 || l(a2);
          }));
        };
        b.on("keydown", function(a2) {
          var b2 = a2.keyCode;
          91 === b2 || 15 < b2 && 19 > b2 || 37 <= b2 && 40 >= b2 || m(a2, this, this.value);
        });
        if (e.hasEvent("paste"))
          b.on("paste cut drop", m);
      }
      b.on("change", l);
      if (ee[g] && c.$$hasNativeValidators && g === d.type)
        b.on("keydown wheel mousedown", function(a2) {
          if (!h2) {
            var b2 = this.validity, c2 = b2.badInput, d2 = b2.typeMismatch;
            h2 = f.defer(function() {
              h2 = null;
              b2.badInput === c2 && b2.typeMismatch === d2 || l(a2);
            });
          }
        });
      c.$render = function() {
        var a2 = c.$isEmpty(c.$viewValue) ? "" : c.$viewValue;
        b.val() !== a2 && b.val(a2);
      };
    }
    function Rb(a, b) {
      return function(d, c) {
        var e, f;
        if (ha(d))
          return d;
        if (C(d)) {
          '"' === d.charAt(0) && '"' === d.charAt(d.length - 1) && (d = d.substring(1, d.length - 1));
          if (mh.test(d))
            return new Date(d);
          a.lastIndex = 0;
          if (e = a.exec(d))
            return e.shift(), f = c ? { yyyy: c.getFullYear(), MM: c.getMonth() + 1, dd: c.getDate(), HH: c.getHours(), mm: c.getMinutes(), ss: c.getSeconds(), sss: c.getMilliseconds() / 1e3 } : { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, sss: 0 }, r(e, function(a2, c2) {
              c2 < b.length && (f[b[c2]] = +a2);
            }), e = new Date(f.yyyy, f.MM - 1, f.dd, f.HH, f.mm, f.ss || 0, 1e3 * f.sss || 0), 100 > f.yyyy && e.setFullYear(f.yyyy), e;
        }
        return NaN;
      };
    }
    function ob(a, b, d, c) {
      return function(e, f, g, k, h2, l, m, p) {
        function n2(a2) {
          return a2 && !(a2.getTime && a2.getTime() !== a2.getTime());
        }
        function s2(a2) {
          return w2(a2) && !ha(a2) ? r2(a2) || void 0 : a2;
        }
        function r2(a2, b2) {
          var c2 = k.$options.getOption("timezone");
          v && v !== c2 && (b2 = Uc(b2, fc(v)));
          var e2 = d(a2, b2);
          !isNaN(e2) && c2 && (e2 = gc(e2, c2));
          return e2;
        }
        Jc(e, f, g, k, a);
        Sa(e, f, g, k, h2, l);
        var t = "time" === a || "datetimelocal" === a, q2, v;
        k.$parsers.push(function(c2) {
          if (k.$isEmpty(c2))
            return null;
          if (b.test(c2))
            return r2(c2, q2);
          k.$$parserName = a;
        });
        k.$formatters.push(function(a2) {
          if (a2 && !ha(a2))
            throw pb("datefmt", a2);
          if (n2(a2)) {
            q2 = a2;
            var b2 = k.$options.getOption("timezone");
            b2 && (v = b2, q2 = gc(q2, b2, true));
            var d2 = c;
            t && C(k.$options.getOption("timeSecondsFormat")) && (d2 = c.replace("ss.sss", k.$options.getOption("timeSecondsFormat")).replace(/:$/, ""));
            a2 = m("date")(a2, d2, b2);
            t && k.$options.getOption("timeStripZeroSeconds") && (a2 = a2.replace(/(?::00)?(?:\.000)?$/, ""));
            return a2;
          }
          v = q2 = null;
          return "";
        });
        if (w2(g.min) || g.ngMin) {
          var x2 = g.min || p(g.ngMin)(e), z2 = s2(x2);
          k.$validators.min = function(a2) {
            return !n2(a2) || A(z2) || d(a2) >= z2;
          };
          g.$observe("min", function(a2) {
            a2 !== x2 && (z2 = s2(a2), x2 = a2, k.$validate());
          });
        }
        if (w2(g.max) || g.ngMax) {
          var y = g.max || p(g.ngMax)(e), J = s2(y);
          k.$validators.max = function(a2) {
            return !n2(a2) || A(J) || d(a2) <= J;
          };
          g.$observe("max", function(a2) {
            a2 !== y && (J = s2(a2), y = a2, k.$validate());
          });
        }
      };
    }
    function Jc(a, b, d, c, e) {
      (c.$$hasNativeValidators = D(b[0].validity)) && c.$parsers.push(function(a2) {
        var d2 = b.prop("validity") || {};
        if (d2.badInput || d2.typeMismatch)
          c.$$parserName = e;
        else
          return a2;
      });
    }
    function fe(a) {
      a.$parsers.push(function(b) {
        if (a.$isEmpty(b))
          return null;
        if (nh.test(b))
          return parseFloat(b);
        a.$$parserName = "number";
      });
      a.$formatters.push(function(b) {
        if (!a.$isEmpty(b)) {
          if (!X(b))
            throw pb(
              "numfmt",
              b
            );
          b = b.toString();
        }
        return b;
      });
    }
    function na(a) {
      w2(a) && !X(a) && (a = parseFloat(a));
      return Y(a) ? void 0 : a;
    }
    function Kc(a) {
      var b = a.toString(), d = b.indexOf(".");
      return -1 === d ? -1 < a && 1 > a && (a = /e-(\d+)$/.exec(b)) ? Number(a[1]) : 0 : b.length - d - 1;
    }
    function ge(a, b, d) {
      a = Number(a);
      var c = (a | 0) !== a, e = (b | 0) !== b, f = (d | 0) !== d;
      if (c || e || f) {
        var g = c ? Kc(a) : 0, k = e ? Kc(b) : 0, h2 = f ? Kc(d) : 0, g = Math.max(g, k, h2), g = Math.pow(10, g);
        a *= g;
        b *= g;
        d *= g;
        c && (a = Math.round(a));
        e && (b = Math.round(b));
        f && (d = Math.round(d));
      }
      return 0 === (a - b) % d;
    }
    function he(a, b, d, c, e) {
      if (w2(c)) {
        a = a(c);
        if (!a.constant)
          throw pb("constexpr", d, c);
        return a(b);
      }
      return e;
    }
    function Lc(a, b) {
      function d(a2, b2) {
        if (!a2 || !a2.length)
          return [];
        if (!b2 || !b2.length)
          return a2;
        var c2 = [], d2 = 0;
        a:
          for (; d2 < a2.length; d2++) {
            for (var e2 = a2[d2], m = 0; m < b2.length; m++)
              if (e2 === b2[m])
                continue a;
            c2.push(e2);
          }
        return c2;
      }
      function c(a2) {
        if (!a2)
          return a2;
        var b2 = a2;
        H(a2) ? b2 = a2.map(c).join(" ") : D(a2) ? b2 = Object.keys(a2).filter(function(b3) {
          return a2[b3];
        }).join(" ") : C(a2) || (b2 = a2 + "");
        return b2;
      }
      a = "ngClass" + a;
      var e;
      return ["$parse", function(f) {
        return { restrict: "AC", link: function(g, k, h2) {
          function l(a2, b2) {
            var c2 = [];
            r(a2, function(a3) {
              if (0 < b2 || p[a3])
                p[a3] = (p[a3] || 0) + b2, p[a3] === +(0 < b2) && c2.push(a3);
            });
            return c2.join(" ");
          }
          function m(a2) {
            if (a2 === b) {
              var c2 = s2, c2 = l(c2 && c2.split(" "), 1);
              h2.$addClass(c2);
            } else
              c2 = s2, c2 = l(c2 && c2.split(" "), -1), h2.$removeClass(c2);
            n2 = a2;
          }
          var p = k.data("$classCounts"), n2 = true, s2;
          p || (p = T(), k.data("$classCounts", p));
          "ngClass" !== a && (e || (e = f("$index", function(a2) {
            return a2 & 1;
          })), g.$watch(e, m));
          g.$watch(f(h2[a], c), function(a2) {
            if (n2 === b) {
              var c2 = s2 && s2.split(" "), e2 = a2 && a2.split(" "), f2 = d(c2, e2), c2 = d(e2, c2), f2 = l(f2, -1), c2 = l(c2, 1);
              h2.$addClass(c2);
              h2.$removeClass(f2);
            }
            s2 = a2;
          });
        } };
      }];
    }
    function sd(a, b, d, c, e, f) {
      return { restrict: "A", compile: function(g, k) {
        var h2 = a(k[c]);
        return function(a2, c2) {
          c2.on(e, function(c3) {
            var e2 = function() {
              h2(a2, { $event: c3 });
            };
            if (b.$$phase)
              if (f)
                a2.$evalAsync(e2);
              else
                try {
                  e2();
                } catch (g2) {
                  d(g2);
                }
            else
              a2.$apply(e2);
          });
        };
      } };
    }
    function Sb(a, b, d, c, e, f, g, k, h2) {
      this.$modelValue = this.$viewValue = Number.NaN;
      this.$$rawModelValue = void 0;
      this.$validators = {};
      this.$asyncValidators = {};
      this.$parsers = [];
      this.$formatters = [];
      this.$viewChangeListeners = [];
      this.$untouched = true;
      this.$touched = false;
      this.$pristine = true;
      this.$dirty = false;
      this.$valid = true;
      this.$invalid = false;
      this.$error = {};
      this.$$success = {};
      this.$pending = void 0;
      this.$name = h2(d.name || "", false)(a);
      this.$$parentForm = mb;
      this.$options = Tb;
      this.$$updateEvents = "";
      this.$$updateEventHandler = this.$$updateEventHandler.bind(this);
      this.$$parsedNgModel = e(d.ngModel);
      this.$$parsedNgModelAssign = this.$$parsedNgModel.assign;
      this.$$ngModelGet = this.$$parsedNgModel;
      this.$$ngModelSet = this.$$parsedNgModelAssign;
      this.$$pendingDebounce = null;
      this.$$parserValid = void 0;
      this.$$parserName = "parse";
      this.$$currentValidationRunId = 0;
      this.$$scope = a;
      this.$$rootScope = a.$root;
      this.$$attr = d;
      this.$$element = c;
      this.$$animate = f;
      this.$$timeout = g;
      this.$$parse = e;
      this.$$q = k;
      this.$$exceptionHandler = b;
      ae(this);
      oh(this);
    }
    function oh(a) {
      a.$$scope.$watch(function(b) {
        b = a.$$ngModelGet(b);
        b === a.$modelValue || a.$modelValue !== a.$modelValue && b !== b || a.$$setModelValue(b);
        return b;
      });
    }
    function Mc(a) {
      this.$$options = a;
    }
    function ie(a, b) {
      r(b, function(b2, c) {
        w2(a[c]) || (a[c] = b2);
      });
    }
    function Oa(a, b) {
      a.prop("selected", b);
      a.attr("selected", b);
    }
    function je(a, b, d) {
      if (a) {
        C(a) && (a = new RegExp("^" + a + "$"));
        if (!a.test)
          throw F("ngPattern")("noregexp", b, a, Aa(d));
        return a;
      }
    }
    function Ub(a) {
      a = fa(a);
      return Y(a) ? -1 : a;
    }
    var Xb = { objectMaxDepth: 5, urlErrorParamsEnabled: true }, ke = /^\/(.+)\/([a-z]*)$/, ta = Object.prototype.hasOwnProperty, K = function(a) {
      return C(a) ? a.toLowerCase() : a;
    }, vb = function(a) {
      return C(a) ? a.toUpperCase() : a;
    }, wa, x, sb, Ha = [].slice, Kg = [].splice, ph = [].push, la = Object.prototype.toString, Rc = Object.getPrototypeOf, oa = F("ng"), ca = z.angular || (z.angular = {}), lc, qb = 0;
    wa = z.document.documentMode;
    var Y = Number.isNaN || function(a) {
      return a !== a;
    };
    E.$inject = [];
    Ta.$inject = [];
    var ze = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/, V = function(a) {
      return C(a) ? a.trim() : a;
    }, Od = function(a) {
      return a.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08");
    }, Ba = function() {
      if (!w2(Ba.rules)) {
        var a = z.document.querySelector("[ng-csp]") || z.document.querySelector("[data-ng-csp]");
        if (a) {
          var b = a.getAttribute("ng-csp") || a.getAttribute("data-ng-csp");
          Ba.rules = { noUnsafeEval: !b || -1 !== b.indexOf("no-unsafe-eval"), noInlineStyle: !b || -1 !== b.indexOf("no-inline-style") };
        } else {
          a = Ba;
          try {
            new Function(""), b = false;
          } catch (d) {
            b = true;
          }
          a.rules = { noUnsafeEval: b, noInlineStyle: false };
        }
      }
      return Ba.rules;
    }, rb = function() {
      if (w2(rb.name_))
        return rb.name_;
      var a, b, d = Qa.length, c, e;
      for (b = 0; b < d; ++b)
        if (c = Qa[b], a = z.document.querySelector("[" + c.replace(":", "\\:") + "jq]")) {
          e = a.getAttribute(c + "jq");
          break;
        }
      return rb.name_ = e;
    }, Be = /:/g, Qa = [
      "ng-",
      "data-ng-",
      "ng:",
      "x-ng-"
    ], Fe = function(a) {
      var b = a.currentScript;
      if (!b)
        return true;
      if (!(b instanceof z.HTMLScriptElement || b instanceof z.SVGScriptElement))
        return false;
      b = b.attributes;
      return [b.getNamedItem("src"), b.getNamedItem("href"), b.getNamedItem("xlink:href")].every(function(b2) {
        if (!b2)
          return true;
        if (!b2.value)
          return false;
        var c = a.createElement("a");
        c.href = b2.value;
        if (a.location.origin === c.origin)
          return true;
        switch (c.protocol) {
          case "http:":
          case "https:":
          case "ftp:":
          case "blob:":
          case "file:":
          case "data:":
            return true;
          default:
            return false;
        }
      });
    }(z.document), Ie = /[A-Z]/g, Yc = false, Pa = 3, Pe = { full: "1.8.2", major: 1, minor: 8, dot: 2, codeName: "meteoric-mining" };
    U.expando = "ng339";
    var Ka = U.cache = {}, ug = 1;
    U._data = function(a) {
      return this.cache[a[this.expando]] || {};
    };
    var qg = /-([a-z])/g, qh = /^-ms-/, Bb = { mouseleave: "mouseout", mouseenter: "mouseover" }, oc = F("jqLite"), tg = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/, nc = /<|&#?\w+;/, rg = /<([\w:-]+)/, sg = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, qa = { thead: ["table"], col: ["colgroup", "table"], tr: ["tbody", "table"], td: [
      "tr",
      "tbody",
      "table"
    ] };
    qa.tbody = qa.tfoot = qa.colgroup = qa.caption = qa.thead;
    qa.th = qa.td;
    var hb = { option: [1, '<select multiple="multiple">', "</select>"], _default: [0, "", ""] }, Nc;
    for (Nc in qa) {
      var le = qa[Nc], me = le.slice().reverse();
      hb[Nc] = [me.length, "<" + me.join("><") + ">", "</" + le.join("></") + ">"];
    }
    hb.optgroup = hb.option;
    var zg = z.Node.prototype.contains || function(a) {
      return !!(this.compareDocumentPosition(a) & 16);
    }, Wa = U.prototype = { ready: hd, toString: function() {
      var a = [];
      r(this, function(b) {
        a.push("" + b);
      });
      return "[" + a.join(", ") + "]";
    }, eq: function(a) {
      return 0 <= a ? x(this[a]) : x(this[this.length + a]);
    }, length: 0, push: ph, sort: [].sort, splice: [].splice }, Hb = {};
    r("multiple selected checked disabled readOnly required open".split(" "), function(a) {
      Hb[K(a)] = a;
    });
    var od = {};
    r("input select option textarea button form details".split(" "), function(a) {
      od[a] = true;
    });
    var vd = { ngMinlength: "minlength", ngMaxlength: "maxlength", ngMin: "min", ngMax: "max", ngPattern: "pattern", ngStep: "step" };
    r({ data: sc, removeData: rc, hasData: function(a) {
      for (var b in Ka[a.ng339])
        return true;
      return false;
    }, cleanData: function(a) {
      for (var b = 0, d = a.length; b < d; b++)
        rc(a[b]), kd(a[b]);
    } }, function(a, b) {
      U[b] = a;
    });
    r({ data: sc, inheritedData: Fb, scope: function(a) {
      return x.data(a, "$scope") || Fb(a.parentNode || a, ["$isolateScope", "$scope"]);
    }, isolateScope: function(a) {
      return x.data(a, "$isolateScope") || x.data(a, "$isolateScopeNoTemplate");
    }, controller: ld, injector: function(a) {
      return Fb(a, "$injector");
    }, removeAttr: function(a, b) {
      a.removeAttribute(b);
    }, hasClass: Cb, css: function(a, b, d) {
      b = yb(b.replace(qh, "ms-"));
      if (w2(d))
        a.style[b] = d;
      else
        return a.style[b];
    }, attr: function(a, b, d) {
      var c = a.nodeType;
      if (c !== Pa && 2 !== c && 8 !== c && a.getAttribute) {
        var c = K(b), e = Hb[c];
        if (w2(d))
          null === d || false === d && e ? a.removeAttribute(b) : a.setAttribute(b, e ? c : d);
        else
          return a = a.getAttribute(b), e && null !== a && (a = c), null === a ? void 0 : a;
      }
    }, prop: function(a, b, d) {
      if (w2(d))
        a[b] = d;
      else
        return a[b];
    }, text: function() {
      function a(a2, d) {
        if (A(d)) {
          var c = a2.nodeType;
          return 1 === c || c === Pa ? a2.textContent : "";
        }
        a2.textContent = d;
      }
      a.$dv = "";
      return a;
    }(), val: function(a, b) {
      if (A(b)) {
        if (a.multiple && "select" === ua(a)) {
          var d = [];
          r(a.options, function(a2) {
            a2.selected && d.push(a2.value || a2.text);
          });
          return d;
        }
        return a.value;
      }
      a.value = b;
    }, html: function(a, b) {
      if (A(b))
        return a.innerHTML;
      zb(a, true);
      a.innerHTML = b;
    }, empty: md }, function(a, b) {
      U.prototype[b] = function(b2, c) {
        var e, f, g = this.length;
        if (a !== md && A(2 === a.length && a !== Cb && a !== ld ? b2 : c)) {
          if (D(b2)) {
            for (e = 0; e < g; e++)
              if (a === sc)
                a(this[e], b2);
              else
                for (f in b2)
                  a(this[e], f, b2[f]);
            return this;
          }
          e = a.$dv;
          g = A(e) ? Math.min(g, 1) : g;
          for (f = 0; f < g; f++) {
            var k = a(this[f], b2, c);
            e = e ? e + k : k;
          }
          return e;
        }
        for (e = 0; e < g; e++)
          a(
            this[e],
            b2,
            c
          );
        return this;
      };
    });
    r({
      removeData: rc,
      on: function(a, b, d, c) {
        if (w2(c))
          throw oc("onargs");
        if (mc(a)) {
          c = Ab(a, true);
          var e = c.events, f = c.handle;
          f || (f = c.handle = wg(a, e));
          c = 0 <= b.indexOf(" ") ? b.split(" ") : [b];
          for (var g = c.length, k = function(b2, c2, g2) {
            var k2 = e[b2];
            k2 || (k2 = e[b2] = [], k2.specialHandlerWrapper = c2, "$destroy" === b2 || g2 || a.addEventListener(b2, f));
            k2.push(d);
          }; g--; )
            b = c[g], Bb[b] ? (k(Bb[b], yg), k(b, void 0, true)) : k(b);
        }
      },
      off: kd,
      one: function(a, b, d) {
        a = x(a);
        a.on(b, function e() {
          a.off(b, d);
          a.off(b, e);
        });
        a.on(b, d);
      },
      replaceWith: function(a, b) {
        var d, c = a.parentNode;
        zb(a);
        r(new U(b), function(b2) {
          d ? c.insertBefore(b2, d.nextSibling) : c.replaceChild(b2, a);
          d = b2;
        });
      },
      children: function(a) {
        var b = [];
        r(a.childNodes, function(a2) {
          1 === a2.nodeType && b.push(a2);
        });
        return b;
      },
      contents: function(a) {
        return a.contentDocument || a.childNodes || [];
      },
      append: function(a, b) {
        var d = a.nodeType;
        if (1 === d || 11 === d) {
          b = new U(b);
          for (var d = 0, c = b.length; d < c; d++)
            a.appendChild(b[d]);
        }
      },
      prepend: function(a, b) {
        if (1 === a.nodeType) {
          var d = a.firstChild;
          r(new U(b), function(b2) {
            a.insertBefore(b2, d);
          });
        }
      },
      wrap: function(a, b) {
        var d = x(b).eq(0).clone()[0], c = a.parentNode;
        c && c.replaceChild(d, a);
        d.appendChild(a);
      },
      remove: Gb,
      detach: function(a) {
        Gb(a, true);
      },
      after: function(a, b) {
        var d = a, c = a.parentNode;
        if (c) {
          b = new U(b);
          for (var e = 0, f = b.length; e < f; e++) {
            var g = b[e];
            c.insertBefore(g, d.nextSibling);
            d = g;
          }
        }
      },
      addClass: Eb,
      removeClass: Db,
      toggleClass: function(a, b, d) {
        b && r(b.split(" "), function(b2) {
          var e = d;
          A(e) && (e = !Cb(a, b2));
          (e ? Eb : Db)(a, b2);
        });
      },
      parent: function(a) {
        return (a = a.parentNode) && 11 !== a.nodeType ? a : null;
      },
      next: function(a) {
        return a.nextElementSibling;
      },
      find: function(a, b) {
        return a.getElementsByTagName ? a.getElementsByTagName(b) : [];
      },
      clone: qc,
      triggerHandler: function(a, b, d) {
        var c, e, f = b.type || b, g = Ab(a);
        if (g = (g = g && g.events) && g[f])
          c = { preventDefault: function() {
            this.defaultPrevented = true;
          }, isDefaultPrevented: function() {
            return true === this.defaultPrevented;
          }, stopImmediatePropagation: function() {
            this.immediatePropagationStopped = true;
          }, isImmediatePropagationStopped: function() {
            return true === this.immediatePropagationStopped;
          }, stopPropagation: E, type: f, target: a }, b.type && (c = S(
            c,
            b
          )), b = ja(g), e = d ? [c].concat(d) : [c], r(b, function(b2) {
            c.isImmediatePropagationStopped() || b2.apply(a, e);
          });
      }
    }, function(a, b) {
      U.prototype[b] = function(b2, c, e) {
        for (var f, g = 0, k = this.length; g < k; g++)
          A(f) ? (f = a(this[g], b2, c, e), w2(f) && (f = x(f))) : pc(f, a(this[g], b2, c, e));
        return w2(f) ? f : this;
      };
    });
    U.prototype.bind = U.prototype.on;
    U.prototype.unbind = U.prototype.off;
    var rh = /* @__PURE__ */ Object.create(null);
    pd.prototype = { _idx: function(a) {
      a !== this._lastKey && (this._lastKey = a, this._lastIndex = this._keys.indexOf(a));
      return this._lastIndex;
    }, _transformKey: function(a) {
      return Y(a) ? rh : a;
    }, get: function(a) {
      a = this._transformKey(a);
      a = this._idx(a);
      if (-1 !== a)
        return this._values[a];
    }, has: function(a) {
      a = this._transformKey(a);
      return -1 !== this._idx(a);
    }, set: function(a, b) {
      a = this._transformKey(a);
      var d = this._idx(a);
      -1 === d && (d = this._lastIndex = this._keys.length);
      this._keys[d] = a;
      this._values[d] = b;
    }, delete: function(a) {
      a = this._transformKey(a);
      a = this._idx(a);
      if (-1 === a)
        return false;
      this._keys.splice(a, 1);
      this._values.splice(a, 1);
      this._lastKey = NaN;
      this._lastIndex = -1;
      return true;
    } };
    var Ib = pd, og = [function() {
      this.$get = [function() {
        return Ib;
      }];
    }], Bg = /^([^(]+?)=>/, Cg = /^[^(]*\(\s*([^)]*)\)/m, sh = /,/, th = /^\s*(_?)(\S+?)\1\s*$/, Ag = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg, Ca = F("$injector");
    fb.$$annotate = function(a, b, d) {
      var c;
      if ("function" === typeof a) {
        if (!(c = a.$inject)) {
          c = [];
          if (a.length) {
            if (b)
              throw C(d) && d || (d = a.name || Dg(a)), Ca("strictdi", d);
            b = qd(a);
            r(b[1].split(sh), function(a2) {
              a2.replace(th, function(a3, b2, d2) {
                c.push(d2);
              });
            });
          }
          a.$inject = c;
        }
      } else
        H(a) ? (b = a.length - 1, tb(a[b], "fn"), c = a.slice(0, b)) : tb(a, "fn", true);
      return c;
    };
    var ne = F("$animate"), Ef = function() {
      this.$get = E;
    }, Ff = function() {
      var a = new Ib(), b = [];
      this.$get = ["$$AnimateRunner", "$rootScope", function(d, c) {
        function e(a2, b2, c2) {
          var d2 = false;
          b2 && (b2 = C(b2) ? b2.split(" ") : H(b2) ? b2 : [], r(b2, function(b3) {
            b3 && (d2 = true, a2[b3] = c2);
          }));
          return d2;
        }
        function f() {
          r(b, function(b2) {
            var c2 = a.get(b2);
            if (c2) {
              var d2 = Eg(b2.attr("class")), e2 = "", f2 = "";
              r(c2, function(a2, b3) {
                a2 !== !!d2[b3] && (a2 ? e2 += (e2.length ? " " : "") + b3 : f2 += (f2.length ? " " : "") + b3);
              });
              r(b2, function(a2) {
                e2 && Eb(a2, e2);
                f2 && Db(a2, f2);
              });
              a.delete(b2);
            }
          });
          b.length = 0;
        }
        return { enabled: E, on: E, off: E, pin: E, push: function(g, k, h2, l) {
          l && l();
          h2 = h2 || {};
          h2.from && g.css(h2.from);
          h2.to && g.css(h2.to);
          if (h2.addClass || h2.removeClass) {
            if (k = h2.addClass, l = h2.removeClass, h2 = a.get(g) || {}, k = e(h2, k, true), l = e(h2, l, false), k || l)
              a.set(g, h2), b.push(g), 1 === b.length && c.$$postDigest(f);
          }
          g = new d();
          g.complete();
          return g;
        } };
      }];
    }, Cf = ["$provide", function(a) {
      var b = this, d = null, c = null;
      this.$$registeredAnimations = /* @__PURE__ */ Object.create(null);
      this.register = function(c2, d2) {
        if (c2 && "." !== c2.charAt(0))
          throw ne("notcsel", c2);
        var g = c2 + "-animation";
        b.$$registeredAnimations[c2.substr(1)] = g;
        a.factory(
          g,
          d2
        );
      };
      this.customFilter = function(a2) {
        1 === arguments.length && (c = B(a2) ? a2 : null);
        return c;
      };
      this.classNameFilter = function(a2) {
        if (1 === arguments.length && (d = a2 instanceof RegExp ? a2 : null) && /[(\s|\/)]ng-animate[(\s|\/)]/.test(d.toString()))
          throw d = null, ne("nongcls", "ng-animate");
        return d;
      };
      this.$get = ["$$animateQueue", function(a2) {
        function b2(a3, c2, d2) {
          if (d2) {
            var e;
            a: {
              for (e = 0; e < d2.length; e++) {
                var f = d2[e];
                if (1 === f.nodeType) {
                  e = f;
                  break a;
                }
              }
              e = void 0;
            }
            !e || e.parentNode || e.previousElementSibling || (d2 = null);
          }
          d2 ? d2.after(a3) : c2.prepend(a3);
        }
        return {
          on: a2.on,
          off: a2.off,
          pin: a2.pin,
          enabled: a2.enabled,
          cancel: function(a3) {
            a3.cancel && a3.cancel();
          },
          enter: function(c2, d2, h2, l) {
            d2 = d2 && x(d2);
            h2 = h2 && x(h2);
            d2 = d2 || h2.parent();
            b2(c2, d2, h2);
            return a2.push(c2, "enter", ra(l));
          },
          move: function(c2, d2, h2, l) {
            d2 = d2 && x(d2);
            h2 = h2 && x(h2);
            d2 = d2 || h2.parent();
            b2(c2, d2, h2);
            return a2.push(c2, "move", ra(l));
          },
          leave: function(b3, c2) {
            return a2.push(b3, "leave", ra(c2), function() {
              b3.remove();
            });
          },
          addClass: function(b3, c2, d2) {
            d2 = ra(d2);
            d2.addClass = ib(d2.addclass, c2);
            return a2.push(b3, "addClass", d2);
          },
          removeClass: function(b3, c2, d2) {
            d2 = ra(d2);
            d2.removeClass = ib(
              d2.removeClass,
              c2
            );
            return a2.push(b3, "removeClass", d2);
          },
          setClass: function(b3, c2, d2, f) {
            f = ra(f);
            f.addClass = ib(f.addClass, c2);
            f.removeClass = ib(f.removeClass, d2);
            return a2.push(b3, "setClass", f);
          },
          animate: function(b3, c2, d2, f, m) {
            m = ra(m);
            m.from = m.from ? S(m.from, c2) : c2;
            m.to = m.to ? S(m.to, d2) : d2;
            m.tempClasses = ib(m.tempClasses, f || "ng-inline-animate");
            return a2.push(b3, "animate", m);
          }
        };
      }];
    }], Hf = function() {
      this.$get = ["$$rAF", function(a) {
        function b(b2) {
          d.push(b2);
          1 < d.length || a(function() {
            for (var a2 = 0; a2 < d.length; a2++)
              d[a2]();
            d = [];
          });
        }
        var d = [];
        return function() {
          var a2 = false;
          b(function() {
            a2 = true;
          });
          return function(d2) {
            a2 ? d2() : b(d2);
          };
        };
      }];
    }, Gf = function() {
      this.$get = ["$q", "$sniffer", "$$animateAsyncRun", "$$isDocumentHidden", "$timeout", function(a, b, d, c, e) {
        function f(a2) {
          this.setHost(a2);
          var b2 = d();
          this._doneCallbacks = [];
          this._tick = function(a3) {
            c() ? e(a3, 0, false) : b2(a3);
          };
          this._state = 0;
        }
        f.chain = function(a2, b2) {
          function c2() {
            if (d2 === a2.length)
              b2(true);
            else
              a2[d2](function(a3) {
                false === a3 ? b2(false) : (d2++, c2());
              });
          }
          var d2 = 0;
          c2();
        };
        f.all = function(a2, b2) {
          function c2(f2) {
            e2 = e2 && f2;
            ++d2 === a2.length && b2(e2);
          }
          var d2 = 0, e2 = true;
          r(a2, function(a3) {
            a3.done(c2);
          });
        };
        f.prototype = { setHost: function(a2) {
          this.host = a2 || {};
        }, done: function(a2) {
          2 === this._state ? a2() : this._doneCallbacks.push(a2);
        }, progress: E, getPromise: function() {
          if (!this.promise) {
            var b2 = this;
            this.promise = a(function(a2, c2) {
              b2.done(function(b3) {
                false === b3 ? c2() : a2();
              });
            });
          }
          return this.promise;
        }, then: function(a2, b2) {
          return this.getPromise().then(a2, b2);
        }, "catch": function(a2) {
          return this.getPromise()["catch"](a2);
        }, "finally": function(a2) {
          return this.getPromise()["finally"](a2);
        }, pause: function() {
          this.host.pause && this.host.pause();
        }, resume: function() {
          this.host.resume && this.host.resume();
        }, end: function() {
          this.host.end && this.host.end();
          this._resolve(true);
        }, cancel: function() {
          this.host.cancel && this.host.cancel();
          this._resolve(false);
        }, complete: function(a2) {
          var b2 = this;
          0 === b2._state && (b2._state = 1, b2._tick(function() {
            b2._resolve(a2);
          }));
        }, _resolve: function(a2) {
          2 !== this._state && (r(this._doneCallbacks, function(b2) {
            b2(a2);
          }), this._doneCallbacks.length = 0, this._state = 2);
        } };
        return f;
      }];
    }, Df = function() {
      this.$get = ["$$rAF", "$q", "$$AnimateRunner", function(a, b, d) {
        return function(b2, e) {
          function f() {
            a(function() {
              g.addClass && (b2.addClass(g.addClass), g.addClass = null);
              g.removeClass && (b2.removeClass(g.removeClass), g.removeClass = null);
              g.to && (b2.css(g.to), g.to = null);
              k || h2.complete();
              k = true;
            });
            return h2;
          }
          var g = e || {};
          g.$$prepared || (g = Ia(g));
          g.cleanupStyles && (g.from = g.to = null);
          g.from && (b2.css(g.from), g.from = null);
          var k, h2 = new d();
          return { start: f, end: f };
        };
      }];
    }, $2 = F("$compile"), uc = new function() {
    }();
    Zc.$inject = ["$provide", "$$sanitizeUriProvider"];
    Kb.prototype.isFirstChange = function() {
      return this.previousValue === uc;
    };
    var rd = /^((?:x|data)[:\-_])/i, Jg = /[:\-_]+(.)/g, xd = F("$controller"), wd = /^(\S+)(\s+as\s+([\w$]+))?$/, Of = function() {
      this.$get = ["$document", function(a) {
        return function(b) {
          b ? !b.nodeType && b instanceof x && (b = b[0]) : b = a[0].body;
          return b.offsetWidth + 1;
        };
      }];
    }, yd = "application/json", xc = { "Content-Type": yd + ";charset=utf-8" }, Mg = /^\[|^\{(?!\{)/, Ng = { "[": /]$/, "{": /}$/ }, Lg = /^\)]\}',?\n/, Lb = F("$http"), Ma = ca.$interpolateMinErr = F("$interpolate");
    Ma.throwNoconcat = function(a) {
      throw Ma("noconcat", a);
    };
    Ma.interr = function(a, b) {
      return Ma("interr", a, b.toString());
    };
    var Qg = F("$interval"), Xf = function() {
      this.$get = function() {
        function a(a2) {
          var b2 = function(a3) {
            b2.data = a3;
            b2.called = true;
          };
          b2.id = a2;
          return b2;
        }
        var b = ca.callbacks, d = {};
        return { createCallback: function(c) {
          c = "_" + (b.$$counter++).toString(36);
          var e = "angular.callbacks." + c, f = a(c);
          d[e] = b[c] = f;
          return e;
        }, wasCalled: function(a2) {
          return d[a2].called;
        }, getResponse: function(a2) {
          return d[a2].data;
        }, removeCallback: function(a2) {
          delete b[d[a2].id];
          delete d[a2];
        } };
      };
    }, uh = /^([^?#]*)(\?([^#]*))?(#(.*))?$/, Rg = { http: 80, https: 443, ftp: 21 }, kb = F("$location"), Sg = /^\s*[\\/]{2,}/, vh = { $$absUrl: "", $$html5: false, $$replace: false, $$compose: function() {
      for (var a = this.$$path, b = this.$$hash, d = Ce(this.$$search), b = b ? "#" + ic(b) : "", a = a.split("/"), c = a.length; c--; )
        a[c] = ic(a[c].replace(/%2F/g, "/"));
      this.$$url = a.join("/") + (d ? "?" + d : "") + b;
      this.$$absUrl = this.$$normalizeUrl(this.$$url);
      this.$$urlUpdatedByLocation = true;
    }, absUrl: Mb("$$absUrl"), url: function(a) {
      if (A(a))
        return this.$$url;
      var b = uh.exec(a);
      (b[1] || "" === a) && this.path(decodeURIComponent(b[1]));
      (b[2] || b[1] || "" === a) && this.search(b[3] || "");
      this.hash(b[5] || "");
      return this;
    }, protocol: Mb("$$protocol"), host: Mb("$$host"), port: Mb("$$port"), path: Fd("$$path", function(a) {
      a = null !== a ? a.toString() : "";
      return "/" === a.charAt(0) ? a : "/" + a;
    }), search: function(a, b) {
      switch (arguments.length) {
        case 0:
          return this.$$search;
        case 1:
          if (C(a) || X(a))
            a = a.toString(), this.$$search = hc(a);
          else if (D(a))
            a = Ia(a, {}), r(a, function(b2, c) {
              null == b2 && delete a[c];
            }), this.$$search = a;
          else
            throw kb("isrcharg");
          break;
        default:
          A(b) || null === b ? delete this.$$search[a] : this.$$search[a] = b;
      }
      this.$$compose();
      return this;
    }, hash: Fd("$$hash", function(a) {
      return null !== a ? a.toString() : "";
    }), replace: function() {
      this.$$replace = true;
      return this;
    } };
    r([Ed, Ac, zc], function(a) {
      a.prototype = Object.create(vh);
      a.prototype.state = function(b) {
        if (!arguments.length)
          return this.$$state;
        if (a !== zc || !this.$$html5)
          throw kb("nostate");
        this.$$state = A(b) ? null : b;
        this.$$urlUpdatedByLocation = true;
        return this;
      };
    });
    var Ya = F("$parse"), Wg = {}.constructor.prototype.valueOf, Vb = T();
    r("+ - * / % === !== == != < > <= >= && || ! = |".split(" "), function(a) {
      Vb[a] = true;
    });
    var wh = { n: "\n", f: "\f", r: "\r", t: "	", v: "\v", "'": "'", '"': '"' }, Ob = function(a) {
      this.options = a;
    };
    Ob.prototype = {
      constructor: Ob,
      lex: function(a) {
        this.text = a;
        this.index = 0;
        for (this.tokens = []; this.index < this.text.length; )
          if (a = this.text.charAt(this.index), '"' === a || "'" === a)
            this.readString(a);
          else if (this.isNumber(a) || "." === a && this.isNumber(this.peek()))
            this.readNumber();
          else if (this.isIdentifierStart(this.peekMultichar()))
            this.readIdent();
          else if (this.is(a, "(){}[].,;:?"))
            this.tokens.push({
              index: this.index,
              text: a
            }), this.index++;
          else if (this.isWhitespace(a))
            this.index++;
          else {
            var b = a + this.peek(), d = b + this.peek(2), c = Vb[b], e = Vb[d];
            Vb[a] || c || e ? (a = e ? d : c ? b : a, this.tokens.push({ index: this.index, text: a, operator: true }), this.index += a.length) : this.throwError("Unexpected next character ", this.index, this.index + 1);
          }
        return this.tokens;
      },
      is: function(a, b) {
        return -1 !== b.indexOf(a);
      },
      peek: function(a) {
        a = a || 1;
        return this.index + a < this.text.length ? this.text.charAt(this.index + a) : false;
      },
      isNumber: function(a) {
        return "0" <= a && "9" >= a && "string" === typeof a;
      },
      isWhitespace: function(a) {
        return " " === a || "\r" === a || "	" === a || "\n" === a || "\v" === a || "\xA0" === a;
      },
      isIdentifierStart: function(a) {
        return this.options.isIdentifierStart ? this.options.isIdentifierStart(a, this.codePointAt(a)) : this.isValidIdentifierStart(a);
      },
      isValidIdentifierStart: function(a) {
        return "a" <= a && "z" >= a || "A" <= a && "Z" >= a || "_" === a || "$" === a;
      },
      isIdentifierContinue: function(a) {
        return this.options.isIdentifierContinue ? this.options.isIdentifierContinue(a, this.codePointAt(a)) : this.isValidIdentifierContinue(a);
      },
      isValidIdentifierContinue: function(a, b) {
        return this.isValidIdentifierStart(a, b) || this.isNumber(a);
      },
      codePointAt: function(a) {
        return 1 === a.length ? a.charCodeAt(0) : (a.charCodeAt(0) << 10) + a.charCodeAt(1) - 56613888;
      },
      peekMultichar: function() {
        var a = this.text.charAt(this.index), b = this.peek();
        if (!b)
          return a;
        var d = a.charCodeAt(0), c = b.charCodeAt(0);
        return 55296 <= d && 56319 >= d && 56320 <= c && 57343 >= c ? a + b : a;
      },
      isExpOperator: function(a) {
        return "-" === a || "+" === a || this.isNumber(a);
      },
      throwError: function(a, b, d) {
        d = d || this.index;
        b = w2(b) ? "s " + b + "-" + this.index + " [" + this.text.substring(b, d) + "]" : " " + d;
        throw Ya("lexerr", a, b, this.text);
      },
      readNumber: function() {
        for (var a = "", b = this.index; this.index < this.text.length; ) {
          var d = K(this.text.charAt(this.index));
          if ("." === d || this.isNumber(d))
            a += d;
          else {
            var c = this.peek();
            if ("e" === d && this.isExpOperator(c))
              a += d;
            else if (this.isExpOperator(d) && c && this.isNumber(c) && "e" === a.charAt(a.length - 1))
              a += d;
            else if (!this.isExpOperator(d) || c && this.isNumber(c) || "e" !== a.charAt(a.length - 1))
              break;
            else
              this.throwError("Invalid exponent");
          }
          this.index++;
        }
        this.tokens.push({
          index: b,
          text: a,
          constant: true,
          value: Number(a)
        });
      },
      readIdent: function() {
        var a = this.index;
        for (this.index += this.peekMultichar().length; this.index < this.text.length; ) {
          var b = this.peekMultichar();
          if (!this.isIdentifierContinue(b))
            break;
          this.index += b.length;
        }
        this.tokens.push({ index: a, text: this.text.slice(a, this.index), identifier: true });
      },
      readString: function(a) {
        var b = this.index;
        this.index++;
        for (var d = "", c = a, e = false; this.index < this.text.length; ) {
          var f = this.text.charAt(this.index), c = c + f;
          if (e)
            "u" === f ? (e = this.text.substring(this.index + 1, this.index + 5), e.match(/[\da-f]{4}/i) || this.throwError("Invalid unicode escape [\\u" + e + "]"), this.index += 4, d += String.fromCharCode(parseInt(e, 16))) : d += wh[f] || f, e = false;
          else if ("\\" === f)
            e = true;
          else {
            if (f === a) {
              this.index++;
              this.tokens.push({ index: b, text: c, constant: true, value: d });
              return;
            }
            d += f;
          }
          this.index++;
        }
        this.throwError("Unterminated quote", b);
      }
    };
    var q = function(a, b) {
      this.lexer = a;
      this.options = b;
    };
    q.Program = "Program";
    q.ExpressionStatement = "ExpressionStatement";
    q.AssignmentExpression = "AssignmentExpression";
    q.ConditionalExpression = "ConditionalExpression";
    q.LogicalExpression = "LogicalExpression";
    q.BinaryExpression = "BinaryExpression";
    q.UnaryExpression = "UnaryExpression";
    q.CallExpression = "CallExpression";
    q.MemberExpression = "MemberExpression";
    q.Identifier = "Identifier";
    q.Literal = "Literal";
    q.ArrayExpression = "ArrayExpression";
    q.Property = "Property";
    q.ObjectExpression = "ObjectExpression";
    q.ThisExpression = "ThisExpression";
    q.LocalsExpression = "LocalsExpression";
    q.NGValueParameter = "NGValueParameter";
    q.prototype = {
      ast: function(a) {
        this.text = a;
        this.tokens = this.lexer.lex(a);
        a = this.program();
        0 !== this.tokens.length && this.throwError("is an unexpected token", this.tokens[0]);
        return a;
      },
      program: function() {
        for (var a = []; ; )
          if (0 < this.tokens.length && !this.peek("}", ")", ";", "]") && a.push(this.expressionStatement()), !this.expect(";"))
            return { type: q.Program, body: a };
      },
      expressionStatement: function() {
        return { type: q.ExpressionStatement, expression: this.filterChain() };
      },
      filterChain: function() {
        for (var a = this.expression(); this.expect("|"); )
          a = this.filter(a);
        return a;
      },
      expression: function() {
        return this.assignment();
      },
      assignment: function() {
        var a = this.ternary();
        if (this.expect("=")) {
          if (!Jd(a))
            throw Ya("lval");
          a = { type: q.AssignmentExpression, left: a, right: this.assignment(), operator: "=" };
        }
        return a;
      },
      ternary: function() {
        var a = this.logicalOR(), b, d;
        return this.expect("?") && (b = this.expression(), this.consume(":")) ? (d = this.expression(), { type: q.ConditionalExpression, test: a, alternate: b, consequent: d }) : a;
      },
      logicalOR: function() {
        for (var a = this.logicalAND(); this.expect("||"); )
          a = {
            type: q.LogicalExpression,
            operator: "||",
            left: a,
            right: this.logicalAND()
          };
        return a;
      },
      logicalAND: function() {
        for (var a = this.equality(); this.expect("&&"); )
          a = { type: q.LogicalExpression, operator: "&&", left: a, right: this.equality() };
        return a;
      },
      equality: function() {
        for (var a = this.relational(), b; b = this.expect("==", "!=", "===", "!=="); )
          a = { type: q.BinaryExpression, operator: b.text, left: a, right: this.relational() };
        return a;
      },
      relational: function() {
        for (var a = this.additive(), b; b = this.expect("<", ">", "<=", ">="); )
          a = {
            type: q.BinaryExpression,
            operator: b.text,
            left: a,
            right: this.additive()
          };
        return a;
      },
      additive: function() {
        for (var a = this.multiplicative(), b; b = this.expect("+", "-"); )
          a = { type: q.BinaryExpression, operator: b.text, left: a, right: this.multiplicative() };
        return a;
      },
      multiplicative: function() {
        for (var a = this.unary(), b; b = this.expect("*", "/", "%"); )
          a = { type: q.BinaryExpression, operator: b.text, left: a, right: this.unary() };
        return a;
      },
      unary: function() {
        var a;
        return (a = this.expect("+", "-", "!")) ? { type: q.UnaryExpression, operator: a.text, prefix: true, argument: this.unary() } : this.primary();
      },
      primary: function() {
        var a;
        this.expect("(") ? (a = this.filterChain(), this.consume(")")) : this.expect("[") ? a = this.arrayDeclaration() : this.expect("{") ? a = this.object() : this.selfReferential.hasOwnProperty(this.peek().text) ? a = Ia(this.selfReferential[this.consume().text]) : this.options.literals.hasOwnProperty(this.peek().text) ? a = { type: q.Literal, value: this.options.literals[this.consume().text] } : this.peek().identifier ? a = this.identifier() : this.peek().constant ? a = this.constant() : this.throwError(
          "not a primary expression",
          this.peek()
        );
        for (var b; b = this.expect("(", "[", "."); )
          "(" === b.text ? (a = { type: q.CallExpression, callee: a, arguments: this.parseArguments() }, this.consume(")")) : "[" === b.text ? (a = { type: q.MemberExpression, object: a, property: this.expression(), computed: true }, this.consume("]")) : "." === b.text ? a = { type: q.MemberExpression, object: a, property: this.identifier(), computed: false } : this.throwError("IMPOSSIBLE");
        return a;
      },
      filter: function(a) {
        a = [a];
        for (var b = { type: q.CallExpression, callee: this.identifier(), arguments: a, filter: true }; this.expect(":"); )
          a.push(this.expression());
        return b;
      },
      parseArguments: function() {
        var a = [];
        if (")" !== this.peekToken().text) {
          do
            a.push(this.filterChain());
          while (this.expect(","));
        }
        return a;
      },
      identifier: function() {
        var a = this.consume();
        a.identifier || this.throwError("is not a valid identifier", a);
        return { type: q.Identifier, name: a.text };
      },
      constant: function() {
        return { type: q.Literal, value: this.consume().value };
      },
      arrayDeclaration: function() {
        var a = [];
        if ("]" !== this.peekToken().text) {
          do {
            if (this.peek("]"))
              break;
            a.push(this.expression());
          } while (this.expect(","));
        }
        this.consume("]");
        return { type: q.ArrayExpression, elements: a };
      },
      object: function() {
        var a = [], b;
        if ("}" !== this.peekToken().text) {
          do {
            if (this.peek("}"))
              break;
            b = { type: q.Property, kind: "init" };
            this.peek().constant ? (b.key = this.constant(), b.computed = false, this.consume(":"), b.value = this.expression()) : this.peek().identifier ? (b.key = this.identifier(), b.computed = false, this.peek(":") ? (this.consume(":"), b.value = this.expression()) : b.value = b.key) : this.peek("[") ? (this.consume("["), b.key = this.expression(), this.consume("]"), b.computed = true, this.consume(":"), b.value = this.expression()) : this.throwError("invalid key", this.peek());
            a.push(b);
          } while (this.expect(","));
        }
        this.consume("}");
        return { type: q.ObjectExpression, properties: a };
      },
      throwError: function(a, b) {
        throw Ya("syntax", b.text, a, b.index + 1, this.text, this.text.substring(b.index));
      },
      consume: function(a) {
        if (0 === this.tokens.length)
          throw Ya("ueoe", this.text);
        var b = this.expect(a);
        b || this.throwError("is unexpected, expecting [" + a + "]", this.peek());
        return b;
      },
      peekToken: function() {
        if (0 === this.tokens.length)
          throw Ya(
            "ueoe",
            this.text
          );
        return this.tokens[0];
      },
      peek: function(a, b, d, c) {
        return this.peekAhead(0, a, b, d, c);
      },
      peekAhead: function(a, b, d, c, e) {
        if (this.tokens.length > a) {
          a = this.tokens[a];
          var f = a.text;
          if (f === b || f === d || f === c || f === e || !(b || d || c || e))
            return a;
        }
        return false;
      },
      expect: function(a, b, d, c) {
        return (a = this.peek(a, b, d, c)) ? (this.tokens.shift(), a) : false;
      },
      selfReferential: { "this": { type: q.ThisExpression }, $locals: { type: q.LocalsExpression } }
    };
    var Hd = 2;
    Ld.prototype = {
      compile: function(a) {
        var b = this;
        this.state = { nextId: 0, filters: {}, fn: {
          vars: [],
          body: [],
          own: {}
        }, assign: { vars: [], body: [], own: {} }, inputs: [] };
        Z(a, b.$filter);
        var d = "", c;
        this.stage = "assign";
        if (c = Kd(a))
          this.state.computing = "assign", d = this.nextId(), this.recurse(c, d), this.return_(d), d = "fn.assign=" + this.generateFunction("assign", "s,v,l");
        c = Id(a.body);
        b.stage = "inputs";
        r(c, function(a2, c2) {
          var d2 = "fn" + c2;
          b.state[d2] = { vars: [], body: [], own: {} };
          b.state.computing = d2;
          var k = b.nextId();
          b.recurse(a2, k);
          b.return_(k);
          b.state.inputs.push({ name: d2, isPure: a2.isPure });
          a2.watchId = c2;
        });
        this.state.computing = "fn";
        this.stage = "main";
        this.recurse(a);
        a = '"' + this.USE + " " + this.STRICT + '";\n' + this.filterPrefix() + "var fn=" + this.generateFunction("fn", "s,l,a,i") + d + this.watchFns() + "return fn;";
        a = new Function("$filter", "getStringValue", "ifDefined", "plus", a)(this.$filter, Tg, Ug, Gd);
        this.state = this.stage = void 0;
        return a;
      },
      USE: "use",
      STRICT: "strict",
      watchFns: function() {
        var a = [], b = this.state.inputs, d = this;
        r(b, function(b2) {
          a.push("var " + b2.name + "=" + d.generateFunction(b2.name, "s"));
          b2.isPure && a.push(b2.name, ".isPure=" + JSON.stringify(b2.isPure) + ";");
        });
        b.length && a.push("fn.inputs=[" + b.map(function(a2) {
          return a2.name;
        }).join(",") + "];");
        return a.join("");
      },
      generateFunction: function(a, b) {
        return "function(" + b + "){" + this.varsPrefix(a) + this.body(a) + "};";
      },
      filterPrefix: function() {
        var a = [], b = this;
        r(this.state.filters, function(d, c) {
          a.push(d + "=$filter(" + b.escape(c) + ")");
        });
        return a.length ? "var " + a.join(",") + ";" : "";
      },
      varsPrefix: function(a) {
        return this.state[a].vars.length ? "var " + this.state[a].vars.join(",") + ";" : "";
      },
      body: function(a) {
        return this.state[a].body.join("");
      },
      recurse: function(a, b, d, c, e, f) {
        var g, k, h2 = this, l, m, p;
        c = c || E;
        if (!f && w2(a.watchId))
          b = b || this.nextId(), this.if_("i", this.lazyAssign(b, this.computedMember("i", a.watchId)), this.lazyRecurse(a, b, d, c, e, true));
        else
          switch (a.type) {
            case q.Program:
              r(a.body, function(b2, c2) {
                h2.recurse(b2.expression, void 0, void 0, function(a2) {
                  k = a2;
                });
                c2 !== a.body.length - 1 ? h2.current().body.push(k, ";") : h2.return_(k);
              });
              break;
            case q.Literal:
              m = this.escape(a.value);
              this.assign(b, m);
              c(b || m);
              break;
            case q.UnaryExpression:
              this.recurse(
                a.argument,
                void 0,
                void 0,
                function(a2) {
                  k = a2;
                }
              );
              m = a.operator + "(" + this.ifDefined(k, 0) + ")";
              this.assign(b, m);
              c(m);
              break;
            case q.BinaryExpression:
              this.recurse(a.left, void 0, void 0, function(a2) {
                g = a2;
              });
              this.recurse(a.right, void 0, void 0, function(a2) {
                k = a2;
              });
              m = "+" === a.operator ? this.plus(g, k) : "-" === a.operator ? this.ifDefined(g, 0) + a.operator + this.ifDefined(k, 0) : "(" + g + ")" + a.operator + "(" + k + ")";
              this.assign(b, m);
              c(m);
              break;
            case q.LogicalExpression:
              b = b || this.nextId();
              h2.recurse(a.left, b);
              h2.if_("&&" === a.operator ? b : h2.not(b), h2.lazyRecurse(
                a.right,
                b
              ));
              c(b);
              break;
            case q.ConditionalExpression:
              b = b || this.nextId();
              h2.recurse(a.test, b);
              h2.if_(b, h2.lazyRecurse(a.alternate, b), h2.lazyRecurse(a.consequent, b));
              c(b);
              break;
            case q.Identifier:
              b = b || this.nextId();
              d && (d.context = "inputs" === h2.stage ? "s" : this.assign(this.nextId(), this.getHasOwnProperty("l", a.name) + "?l:s"), d.computed = false, d.name = a.name);
              h2.if_("inputs" === h2.stage || h2.not(h2.getHasOwnProperty("l", a.name)), function() {
                h2.if_("inputs" === h2.stage || "s", function() {
                  e && 1 !== e && h2.if_(
                    h2.isNull(h2.nonComputedMember("s", a.name)),
                    h2.lazyAssign(h2.nonComputedMember("s", a.name), "{}")
                  );
                  h2.assign(b, h2.nonComputedMember("s", a.name));
                });
              }, b && h2.lazyAssign(b, h2.nonComputedMember("l", a.name)));
              c(b);
              break;
            case q.MemberExpression:
              g = d && (d.context = this.nextId()) || this.nextId();
              b = b || this.nextId();
              h2.recurse(a.object, g, void 0, function() {
                h2.if_(h2.notNull(g), function() {
                  a.computed ? (k = h2.nextId(), h2.recurse(a.property, k), h2.getStringValue(k), e && 1 !== e && h2.if_(h2.not(h2.computedMember(g, k)), h2.lazyAssign(h2.computedMember(g, k), "{}")), m = h2.computedMember(g, k), h2.assign(
                    b,
                    m
                  ), d && (d.computed = true, d.name = k)) : (e && 1 !== e && h2.if_(h2.isNull(h2.nonComputedMember(g, a.property.name)), h2.lazyAssign(h2.nonComputedMember(g, a.property.name), "{}")), m = h2.nonComputedMember(g, a.property.name), h2.assign(b, m), d && (d.computed = false, d.name = a.property.name));
                }, function() {
                  h2.assign(b, "undefined");
                });
                c(b);
              }, !!e);
              break;
            case q.CallExpression:
              b = b || this.nextId();
              a.filter ? (k = h2.filter(a.callee.name), l = [], r(a.arguments, function(a2) {
                var b2 = h2.nextId();
                h2.recurse(a2, b2);
                l.push(b2);
              }), m = k + "(" + l.join(",") + ")", h2.assign(b, m), c(b)) : (k = h2.nextId(), g = {}, l = [], h2.recurse(a.callee, k, g, function() {
                h2.if_(h2.notNull(k), function() {
                  r(a.arguments, function(b2) {
                    h2.recurse(b2, a.constant ? void 0 : h2.nextId(), void 0, function(a2) {
                      l.push(a2);
                    });
                  });
                  m = g.name ? h2.member(g.context, g.name, g.computed) + "(" + l.join(",") + ")" : k + "(" + l.join(",") + ")";
                  h2.assign(b, m);
                }, function() {
                  h2.assign(b, "undefined");
                });
                c(b);
              }));
              break;
            case q.AssignmentExpression:
              k = this.nextId();
              g = {};
              this.recurse(a.left, void 0, g, function() {
                h2.if_(h2.notNull(g.context), function() {
                  h2.recurse(a.right, k);
                  m = h2.member(
                    g.context,
                    g.name,
                    g.computed
                  ) + a.operator + k;
                  h2.assign(b, m);
                  c(b || m);
                });
              }, 1);
              break;
            case q.ArrayExpression:
              l = [];
              r(a.elements, function(b2) {
                h2.recurse(b2, a.constant ? void 0 : h2.nextId(), void 0, function(a2) {
                  l.push(a2);
                });
              });
              m = "[" + l.join(",") + "]";
              this.assign(b, m);
              c(b || m);
              break;
            case q.ObjectExpression:
              l = [];
              p = false;
              r(a.properties, function(a2) {
                a2.computed && (p = true);
              });
              p ? (b = b || this.nextId(), this.assign(b, "{}"), r(a.properties, function(a2) {
                a2.computed ? (g = h2.nextId(), h2.recurse(a2.key, g)) : g = a2.key.type === q.Identifier ? a2.key.name : "" + a2.key.value;
                k = h2.nextId();
                h2.recurse(a2.value, k);
                h2.assign(h2.member(b, g, a2.computed), k);
              })) : (r(a.properties, function(b2) {
                h2.recurse(b2.value, a.constant ? void 0 : h2.nextId(), void 0, function(a2) {
                  l.push(h2.escape(b2.key.type === q.Identifier ? b2.key.name : "" + b2.key.value) + ":" + a2);
                });
              }), m = "{" + l.join(",") + "}", this.assign(b, m));
              c(b || m);
              break;
            case q.ThisExpression:
              this.assign(b, "s");
              c(b || "s");
              break;
            case q.LocalsExpression:
              this.assign(b, "l");
              c(b || "l");
              break;
            case q.NGValueParameter:
              this.assign(b, "v"), c(b || "v");
          }
      },
      getHasOwnProperty: function(a, b) {
        var d = a + "." + b, c = this.current().own;
        c.hasOwnProperty(d) || (c[d] = this.nextId(false, a + "&&(" + this.escape(b) + " in " + a + ")"));
        return c[d];
      },
      assign: function(a, b) {
        if (a)
          return this.current().body.push(a, "=", b, ";"), a;
      },
      filter: function(a) {
        this.state.filters.hasOwnProperty(a) || (this.state.filters[a] = this.nextId(true));
        return this.state.filters[a];
      },
      ifDefined: function(a, b) {
        return "ifDefined(" + a + "," + this.escape(b) + ")";
      },
      plus: function(a, b) {
        return "plus(" + a + "," + b + ")";
      },
      return_: function(a) {
        this.current().body.push("return ", a, ";");
      },
      if_: function(a, b, d) {
        if (true === a)
          b();
        else {
          var c = this.current().body;
          c.push("if(", a, "){");
          b();
          c.push("}");
          d && (c.push("else{"), d(), c.push("}"));
        }
      },
      not: function(a) {
        return "!(" + a + ")";
      },
      isNull: function(a) {
        return a + "==null";
      },
      notNull: function(a) {
        return a + "!=null";
      },
      nonComputedMember: function(a, b) {
        var d = /[^$_a-zA-Z0-9]/g;
        return /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(b) ? a + "." + b : a + '["' + b.replace(d, this.stringEscapeFn) + '"]';
      },
      computedMember: function(a, b) {
        return a + "[" + b + "]";
      },
      member: function(a, b, d) {
        return d ? this.computedMember(a, b) : this.nonComputedMember(
          a,
          b
        );
      },
      getStringValue: function(a) {
        this.assign(a, "getStringValue(" + a + ")");
      },
      lazyRecurse: function(a, b, d, c, e, f) {
        var g = this;
        return function() {
          g.recurse(a, b, d, c, e, f);
        };
      },
      lazyAssign: function(a, b) {
        var d = this;
        return function() {
          d.assign(a, b);
        };
      },
      stringEscapeRegex: /[^ a-zA-Z0-9]/g,
      stringEscapeFn: function(a) {
        return "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);
      },
      escape: function(a) {
        if (C(a))
          return "'" + a.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'";
        if (X(a))
          return a.toString();
        if (true === a)
          return "true";
        if (false === a)
          return "false";
        if (null === a)
          return "null";
        if ("undefined" === typeof a)
          return "undefined";
        throw Ya("esc");
      },
      nextId: function(a, b) {
        var d = "v" + this.state.nextId++;
        a || this.current().vars.push(d + (b ? "=" + b : ""));
        return d;
      },
      current: function() {
        return this.state[this.state.computing];
      }
    };
    Md.prototype = { compile: function(a) {
      var b = this;
      Z(a, b.$filter);
      var d, c;
      if (d = Kd(a))
        c = this.recurse(d);
      d = Id(a.body);
      var e;
      d && (e = [], r(d, function(a2, c2) {
        var d2 = b.recurse(a2);
        d2.isPure = a2.isPure;
        a2.input = d2;
        e.push(d2);
        a2.watchId = c2;
      }));
      var f = [];
      r(
        a.body,
        function(a2) {
          f.push(b.recurse(a2.expression));
        }
      );
      a = 0 === a.body.length ? E : 1 === a.body.length ? f[0] : function(a2, b2) {
        var c2;
        r(f, function(d2) {
          c2 = d2(a2, b2);
        });
        return c2;
      };
      c && (a.assign = function(a2, b2, d2) {
        return c(a2, d2, b2);
      });
      e && (a.inputs = e);
      return a;
    }, recurse: function(a, b, d) {
      var c, e, f = this, g;
      if (a.input)
        return this.inputs(a.input, a.watchId);
      switch (a.type) {
        case q.Literal:
          return this.value(a.value, b);
        case q.UnaryExpression:
          return e = this.recurse(a.argument), this["unary" + a.operator](e, b);
        case q.BinaryExpression:
          return c = this.recurse(a.left), e = this.recurse(a.right), this["binary" + a.operator](c, e, b);
        case q.LogicalExpression:
          return c = this.recurse(a.left), e = this.recurse(a.right), this["binary" + a.operator](c, e, b);
        case q.ConditionalExpression:
          return this["ternary?:"](this.recurse(a.test), this.recurse(a.alternate), this.recurse(a.consequent), b);
        case q.Identifier:
          return f.identifier(a.name, b, d);
        case q.MemberExpression:
          return c = this.recurse(a.object, false, !!d), a.computed || (e = a.property.name), a.computed && (e = this.recurse(a.property)), a.computed ? this.computedMember(
            c,
            e,
            b,
            d
          ) : this.nonComputedMember(c, e, b, d);
        case q.CallExpression:
          return g = [], r(a.arguments, function(a2) {
            g.push(f.recurse(a2));
          }), a.filter && (e = this.$filter(a.callee.name)), a.filter || (e = this.recurse(a.callee, true)), a.filter ? function(a2, c2, d2, f2) {
            for (var p = [], n2 = 0; n2 < g.length; ++n2)
              p.push(g[n2](a2, c2, d2, f2));
            a2 = e.apply(void 0, p, f2);
            return b ? { context: void 0, name: void 0, value: a2 } : a2;
          } : function(a2, c2, d2, f2) {
            var p = e(a2, c2, d2, f2), n2;
            if (null != p.value) {
              n2 = [];
              for (var s2 = 0; s2 < g.length; ++s2)
                n2.push(g[s2](a2, c2, d2, f2));
              n2 = p.value.apply(p.context, n2);
            }
            return b ? { value: n2 } : n2;
          };
        case q.AssignmentExpression:
          return c = this.recurse(a.left, true, 1), e = this.recurse(a.right), function(a2, d2, f2, g2) {
            var p = c(a2, d2, f2, g2);
            a2 = e(a2, d2, f2, g2);
            p.context[p.name] = a2;
            return b ? { value: a2 } : a2;
          };
        case q.ArrayExpression:
          return g = [], r(a.elements, function(a2) {
            g.push(f.recurse(a2));
          }), function(a2, c2, d2, e2) {
            for (var f2 = [], n2 = 0; n2 < g.length; ++n2)
              f2.push(g[n2](a2, c2, d2, e2));
            return b ? { value: f2 } : f2;
          };
        case q.ObjectExpression:
          return g = [], r(a.properties, function(a2) {
            a2.computed ? g.push({ key: f.recurse(a2.key), computed: true, value: f.recurse(a2.value) }) : g.push({ key: a2.key.type === q.Identifier ? a2.key.name : "" + a2.key.value, computed: false, value: f.recurse(a2.value) });
          }), function(a2, c2, d2, e2) {
            for (var f2 = {}, n2 = 0; n2 < g.length; ++n2)
              g[n2].computed ? f2[g[n2].key(a2, c2, d2, e2)] = g[n2].value(a2, c2, d2, e2) : f2[g[n2].key] = g[n2].value(a2, c2, d2, e2);
            return b ? { value: f2 } : f2;
          };
        case q.ThisExpression:
          return function(a2) {
            return b ? { value: a2 } : a2;
          };
        case q.LocalsExpression:
          return function(a2, c2) {
            return b ? { value: c2 } : c2;
          };
        case q.NGValueParameter:
          return function(a2, c2, d2) {
            return b ? { value: d2 } : d2;
          };
      }
    }, "unary+": function(a, b) {
      return function(d, c, e, f) {
        d = a(d, c, e, f);
        d = w2(d) ? +d : 0;
        return b ? { value: d } : d;
      };
    }, "unary-": function(a, b) {
      return function(d, c, e, f) {
        d = a(d, c, e, f);
        d = w2(d) ? -d : -0;
        return b ? { value: d } : d;
      };
    }, "unary!": function(a, b) {
      return function(d, c, e, f) {
        d = !a(d, c, e, f);
        return b ? { value: d } : d;
      };
    }, "binary+": function(a, b, d) {
      return function(c, e, f, g) {
        var k = a(c, e, f, g);
        c = b(c, e, f, g);
        k = Gd(k, c);
        return d ? { value: k } : k;
      };
    }, "binary-": function(a, b, d) {
      return function(c, e, f, g) {
        var k = a(c, e, f, g);
        c = b(c, e, f, g);
        k = (w2(k) ? k : 0) - (w2(c) ? c : 0);
        return d ? { value: k } : k;
      };
    }, "binary*": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) * b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "binary/": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) / b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "binary%": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) % b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "binary===": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) === b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "binary!==": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) !== b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "binary==": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) == b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "binary!=": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) != b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "binary<": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) < b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "binary>": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) > b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "binary<=": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) <= b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "binary>=": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) >= b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "binary&&": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) && b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "binary||": function(a, b, d) {
      return function(c, e, f, g) {
        c = a(c, e, f, g) || b(c, e, f, g);
        return d ? { value: c } : c;
      };
    }, "ternary?:": function(a, b, d, c) {
      return function(e, f, g, k) {
        e = a(e, f, g, k) ? b(e, f, g, k) : d(e, f, g, k);
        return c ? { value: e } : e;
      };
    }, value: function(a, b) {
      return function() {
        return b ? { context: void 0, name: void 0, value: a } : a;
      };
    }, identifier: function(a, b, d) {
      return function(c, e, f, g) {
        c = e && a in e ? e : c;
        d && 1 !== d && c && null == c[a] && (c[a] = {});
        e = c ? c[a] : void 0;
        return b ? { context: c, name: a, value: e } : e;
      };
    }, computedMember: function(a, b, d, c) {
      return function(e, f, g, k) {
        var h2 = a(e, f, g, k), l, m;
        null != h2 && (l = b(e, f, g, k), l += "", c && 1 !== c && h2 && !h2[l] && (h2[l] = {}), m = h2[l]);
        return d ? { context: h2, name: l, value: m } : m;
      };
    }, nonComputedMember: function(a, b, d, c) {
      return function(e, f, g, k) {
        e = a(e, f, g, k);
        c && 1 !== c && e && null == e[b] && (e[b] = {});
        f = null != e ? e[b] : void 0;
        return d ? { context: e, name: b, value: f } : f;
      };
    }, inputs: function(a, b) {
      return function(d, c, e, f) {
        return f ? f[b] : a(d, c, e);
      };
    } };
    Nb.prototype = { constructor: Nb, parse: function(a) {
      a = this.getAst(a);
      var b = this.astCompiler.compile(a.ast), d = a.ast;
      b.literal = 0 === d.body.length || 1 === d.body.length && (d.body[0].expression.type === q.Literal || d.body[0].expression.type === q.ArrayExpression || d.body[0].expression.type === q.ObjectExpression);
      b.constant = a.ast.constant;
      b.oneTime = a.oneTime;
      return b;
    }, getAst: function(a) {
      var b = false;
      a = a.trim();
      ":" === a.charAt(0) && ":" === a.charAt(1) && (b = true, a = a.substring(2));
      return {
        ast: this.ast.ast(a),
        oneTime: b
      };
    } };
    var Ea = F("$sce"), W = { HTML: "html", CSS: "css", MEDIA_URL: "mediaUrl", URL: "url", RESOURCE_URL: "resourceUrl", JS: "js" }, Dc = /_([a-z])/g, Zg = F("$templateRequest"), $g = F("$timeout"), aa = z.document.createElement("a"), Qd = ga(z.location.href), Na;
    aa.href = "http://[::1]";
    var ah = "[::1]" === aa.hostname;
    Rd.$inject = ["$document"];
    fd.$inject = ["$provide"];
    var Yd = 22, Xd = ".", Fc = "0";
    Sd.$inject = ["$locale"];
    Ud.$inject = ["$locale"];
    var lh = {
      yyyy: ea("FullYear", 4, 0, false, true),
      yy: ea("FullYear", 2, 0, true, true),
      y: ea("FullYear", 1, 0, false, true),
      MMMM: lb("Month"),
      MMM: lb("Month", true),
      MM: ea("Month", 2, 1),
      M: ea("Month", 1, 1),
      LLLL: lb("Month", false, true),
      dd: ea("Date", 2),
      d: ea("Date", 1),
      HH: ea("Hours", 2),
      H: ea("Hours", 1),
      hh: ea("Hours", 2, -12),
      h: ea("Hours", 1, -12),
      mm: ea("Minutes", 2),
      m: ea("Minutes", 1),
      ss: ea("Seconds", 2),
      s: ea("Seconds", 1),
      sss: ea("Milliseconds", 3),
      EEEE: lb("Day"),
      EEE: lb("Day", true),
      a: function(a, b) {
        return 12 > a.getHours() ? b.AMPMS[0] : b.AMPMS[1];
      },
      Z: function(a, b, d) {
        a = -1 * d;
        return a = (0 <= a ? "+" : "") + (Pb(Math[0 < a ? "floor" : "ceil"](a / 60), 2) + Pb(Math.abs(a % 60), 2));
      },
      ww: $d(2),
      w: $d(1),
      G: Gc,
      GG: Gc,
      GGG: Gc,
      GGGG: function(a, b) {
        return 0 >= a.getFullYear() ? b.ERANAMES[0] : b.ERANAMES[1];
      }
    }, kh = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/, jh = /^-?\d+$/;
    Td.$inject = ["$locale"];
    var eh = ia(K), fh = ia(vb);
    Vd.$inject = ["$parse"];
    var Re = ia({ restrict: "E", compile: function(a, b) {
      if (!b.href && !b.xlinkHref)
        return function(a2, b2) {
          if ("a" === b2[0].nodeName.toLowerCase()) {
            var e = "[object SVGAnimatedString]" === la.call(b2.prop("href")) ? "xlink:href" : "href";
            b2.on("click", function(a3) {
              b2.attr(e) || a3.preventDefault();
            });
          }
        };
    } }), wb = {};
    r(Hb, function(a, b) {
      function d(a2, d2, e2) {
        a2.$watch(e2[c], function(a3) {
          e2.$set(b, !!a3);
        });
      }
      if ("multiple" !== a) {
        var c = xa("ng-" + b), e = d;
        "checked" === a && (e = function(a2, b2, e2) {
          e2.ngModel !== e2[c] && d(a2, b2, e2);
        });
        wb[c] = function() {
          return { restrict: "A", priority: 100, link: e };
        };
      }
    });
    r(vd, function(a, b) {
      wb[b] = function() {
        return { priority: 100, link: function(a2, c, e) {
          if ("ngPattern" === b && "/" === e.ngPattern.charAt(0) && (c = e.ngPattern.match(ke))) {
            e.$set("ngPattern", new RegExp(
              c[1],
              c[2]
            ));
            return;
          }
          a2.$watch(e[b], function(a3) {
            e.$set(b, a3);
          });
        } };
      };
    });
    r(["src", "srcset", "href"], function(a) {
      var b = xa("ng-" + a);
      wb[b] = ["$sce", function(d) {
        return { priority: 99, link: function(c, e, f) {
          var g = a, k = a;
          "href" === a && "[object SVGAnimatedString]" === la.call(e.prop("href")) && (k = "xlinkHref", f.$attr[k] = "xlink:href", g = null);
          f.$set(b, d.getTrustedMediaUrl(f[b]));
          f.$observe(b, function(b2) {
            b2 ? (f.$set(k, b2), wa && g && e.prop(g, f[k])) : "href" === a && f.$set(k, null);
          });
        } };
      }];
    });
    var mb = { $addControl: E, $getControls: ia([]), $$renameControl: function(a, b) {
      a.$name = b;
    }, $removeControl: E, $setValidity: E, $setDirty: E, $setPristine: E, $setSubmitted: E, $$setSubmitted: E };
    Qb.$inject = ["$element", "$attrs", "$scope", "$animate", "$interpolate"];
    Qb.prototype = {
      $rollbackViewValue: function() {
        r(this.$$controls, function(a) {
          a.$rollbackViewValue();
        });
      },
      $commitViewValue: function() {
        r(this.$$controls, function(a) {
          a.$commitViewValue();
        });
      },
      $addControl: function(a) {
        Ja(a.$name, "input");
        this.$$controls.push(a);
        a.$name && (this[a.$name] = a);
        a.$$parentForm = this;
      },
      $getControls: function() {
        return ja(this.$$controls);
      },
      $$renameControl: function(a, b) {
        var d = a.$name;
        this[d] === a && delete this[d];
        this[b] = a;
        a.$name = b;
      },
      $removeControl: function(a) {
        a.$name && this[a.$name] === a && delete this[a.$name];
        r(this.$pending, function(b, d) {
          this.$setValidity(d, null, a);
        }, this);
        r(this.$error, function(b, d) {
          this.$setValidity(d, null, a);
        }, this);
        r(this.$$success, function(b, d) {
          this.$setValidity(d, null, a);
        }, this);
        cb(this.$$controls, a);
        a.$$parentForm = mb;
      },
      $setDirty: function() {
        this.$$animate.removeClass(this.$$element, Za);
        this.$$animate.addClass(
          this.$$element,
          Wb
        );
        this.$dirty = true;
        this.$pristine = false;
        this.$$parentForm.$setDirty();
      },
      $setPristine: function() {
        this.$$animate.setClass(this.$$element, Za, Wb + " ng-submitted");
        this.$dirty = false;
        this.$pristine = true;
        this.$submitted = false;
        r(this.$$controls, function(a) {
          a.$setPristine();
        });
      },
      $setUntouched: function() {
        r(this.$$controls, function(a) {
          a.$setUntouched();
        });
      },
      $setSubmitted: function() {
        for (var a = this; a.$$parentForm && a.$$parentForm !== mb; )
          a = a.$$parentForm;
        a.$$setSubmitted();
      },
      $$setSubmitted: function() {
        this.$$animate.addClass(
          this.$$element,
          "ng-submitted"
        );
        this.$submitted = true;
        r(this.$$controls, function(a) {
          a.$$setSubmitted && a.$$setSubmitted();
        });
      }
    };
    ce({ clazz: Qb, set: function(a, b, d) {
      var c = a[b];
      c ? -1 === c.indexOf(d) && c.push(d) : a[b] = [d];
    }, unset: function(a, b, d) {
      var c = a[b];
      c && (cb(c, d), 0 === c.length && delete a[b]);
    } });
    var oe = function(a) {
      return ["$timeout", "$parse", function(b, d) {
        function c(a2) {
          return "" === a2 ? d('this[""]').assign : d(a2).assign || E;
        }
        return { name: "form", restrict: a ? "EAC" : "E", require: ["form", "^^?form"], controller: Qb, compile: function(d2, f) {
          d2.addClass(Za).addClass(nb);
          var g = f.name ? "name" : a && f.ngForm ? "ngForm" : false;
          return { pre: function(a2, d3, e, f2) {
            var p = f2[0];
            if (!("action" in e)) {
              var n2 = function(b2) {
                a2.$apply(function() {
                  p.$commitViewValue();
                  p.$setSubmitted();
                });
                b2.preventDefault();
              };
              d3[0].addEventListener("submit", n2);
              d3.on("$destroy", function() {
                b(function() {
                  d3[0].removeEventListener("submit", n2);
                }, 0, false);
              });
            }
            (f2[1] || p.$$parentForm).$addControl(p);
            var s2 = g ? c(p.$name) : E;
            g && (s2(a2, p), e.$observe(g, function(b2) {
              p.$name !== b2 && (s2(a2, void 0), p.$$parentForm.$$renameControl(p, b2), s2 = c(p.$name), s2(a2, p));
            }));
            d3.on("$destroy", function() {
              p.$$parentForm.$removeControl(p);
              s2(a2, void 0);
              S(p, mb);
            });
          } };
        } };
      }];
    }, Se = oe(), df = oe(true), mh = /^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/, xh = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i, yh = /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/, nh = /^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/, pe = /^(\d{4,})-(\d{2})-(\d{2})$/, qe = /^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/, Oc = /^(\d{4,})-W(\d\d)$/, re = /^(\d{4,})-(\d\d)$/, se = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/, ee = T();
    r(["date", "datetime-local", "month", "time", "week"], function(a) {
      ee[a] = true;
    });
    var te = { text: function(a, b, d, c, e, f) {
      Sa(a, b, d, c, e, f);
      Ic(c);
    }, date: ob("date", pe, Rb(pe, ["yyyy", "MM", "dd"]), "yyyy-MM-dd"), "datetime-local": ob(
      "datetimelocal",
      qe,
      Rb(qe, "yyyy MM dd HH mm ss sss".split(" ")),
      "yyyy-MM-ddTHH:mm:ss.sss"
    ), time: ob("time", se, Rb(se, ["HH", "mm", "ss", "sss"]), "HH:mm:ss.sss"), week: ob("week", Oc, function(a, b) {
      if (ha(a))
        return a;
      if (C(a)) {
        Oc.lastIndex = 0;
        var d = Oc.exec(a);
        if (d) {
          var c = +d[1], e = +d[2], f = d = 0, g = 0, k = 0, h2 = Zd(c), e = 7 * (e - 1);
          b && (d = b.getHours(), f = b.getMinutes(), g = b.getSeconds(), k = b.getMilliseconds());
          return new Date(c, 0, h2.getDate() + e, d, f, g, k);
        }
      }
      return NaN;
    }, "yyyy-Www"), month: ob("month", re, Rb(re, ["yyyy", "MM"]), "yyyy-MM"), number: function(a, b, d, c, e, f, g, k) {
      Jc(a, b, d, c, "number");
      fe(c);
      Sa(
        a,
        b,
        d,
        c,
        e,
        f
      );
      var h2;
      if (w2(d.min) || d.ngMin) {
        var l = d.min || k(d.ngMin)(a);
        h2 = na(l);
        c.$validators.min = function(a2, b2) {
          return c.$isEmpty(b2) || A(h2) || b2 >= h2;
        };
        d.$observe("min", function(a2) {
          a2 !== l && (h2 = na(a2), l = a2, c.$validate());
        });
      }
      if (w2(d.max) || d.ngMax) {
        var m = d.max || k(d.ngMax)(a), p = na(m);
        c.$validators.max = function(a2, b2) {
          return c.$isEmpty(b2) || A(p) || b2 <= p;
        };
        d.$observe("max", function(a2) {
          a2 !== m && (p = na(a2), m = a2, c.$validate());
        });
      }
      if (w2(d.step) || d.ngStep) {
        var n2 = d.step || k(d.ngStep)(a), s2 = na(n2);
        c.$validators.step = function(a2, b2) {
          return c.$isEmpty(b2) || A(s2) || ge(b2, h2 || 0, s2);
        };
        d.$observe("step", function(a2) {
          a2 !== n2 && (s2 = na(a2), n2 = a2, c.$validate());
        });
      }
    }, url: function(a, b, d, c, e, f) {
      Sa(a, b, d, c, e, f);
      Ic(c);
      c.$validators.url = function(a2, b2) {
        var d2 = a2 || b2;
        return c.$isEmpty(d2) || xh.test(d2);
      };
    }, email: function(a, b, d, c, e, f) {
      Sa(a, b, d, c, e, f);
      Ic(c);
      c.$validators.email = function(a2, b2) {
        var d2 = a2 || b2;
        return c.$isEmpty(d2) || yh.test(d2);
      };
    }, radio: function(a, b, d, c) {
      var e = !d.ngTrim || "false" !== V(d.ngTrim);
      A(d.name) && b.attr("name", ++qb);
      b.on("change", function(a2) {
        var g;
        b[0].checked && (g = d.value, e && (g = V(g)), c.$setViewValue(g, a2 && a2.type));
      });
      c.$render = function() {
        var a2 = d.value;
        e && (a2 = V(a2));
        b[0].checked = a2 === c.$viewValue;
      };
      d.$observe("value", c.$render);
    }, range: function(a, b, d, c, e, f) {
      function g(a2, c2) {
        b.attr(a2, d[a2]);
        var e2 = d[a2];
        d.$observe(a2, function(a3) {
          a3 !== e2 && (e2 = a3, c2(a3));
        });
      }
      function k(a2) {
        p = na(a2);
        Y(c.$modelValue) || (m ? (a2 = b.val(), p > a2 && (a2 = p, b.val(a2)), c.$setViewValue(a2)) : c.$validate());
      }
      function h2(a2) {
        n2 = na(a2);
        Y(c.$modelValue) || (m ? (a2 = b.val(), n2 < a2 && (b.val(n2), a2 = n2 < p ? p : n2), c.$setViewValue(a2)) : c.$validate());
      }
      function l(a2) {
        s2 = na(a2);
        Y(c.$modelValue) || (m ? c.$viewValue !== b.val() && c.$setViewValue(b.val()) : c.$validate());
      }
      Jc(a, b, d, c, "range");
      fe(c);
      Sa(a, b, d, c, e, f);
      var m = c.$$hasNativeValidators && "range" === b[0].type, p = m ? 0 : void 0, n2 = m ? 100 : void 0, s2 = m ? 1 : void 0, r2 = b[0].validity;
      a = w2(d.min);
      e = w2(d.max);
      f = w2(d.step);
      var q2 = c.$render;
      c.$render = m && w2(r2.rangeUnderflow) && w2(r2.rangeOverflow) ? function() {
        q2();
        c.$setViewValue(b.val());
      } : q2;
      a && (p = na(d.min), c.$validators.min = m ? function() {
        return true;
      } : function(a2, b2) {
        return c.$isEmpty(b2) || A(p) || b2 >= p;
      }, g("min", k));
      e && (n2 = na(d.max), c.$validators.max = m ? function() {
        return true;
      } : function(a2, b2) {
        return c.$isEmpty(b2) || A(n2) || b2 <= n2;
      }, g("max", h2));
      f && (s2 = na(d.step), c.$validators.step = m ? function() {
        return !r2.stepMismatch;
      } : function(a2, b2) {
        return c.$isEmpty(b2) || A(s2) || ge(b2, p || 0, s2);
      }, g("step", l));
    }, checkbox: function(a, b, d, c, e, f, g, k) {
      var h2 = he(k, a, "ngTrueValue", d.ngTrueValue, true), l = he(k, a, "ngFalseValue", d.ngFalseValue, false);
      b.on("change", function(a2) {
        c.$setViewValue(b[0].checked, a2 && a2.type);
      });
      c.$render = function() {
        b[0].checked = c.$viewValue;
      };
      c.$isEmpty = function(a2) {
        return false === a2;
      };
      c.$formatters.push(function(a2) {
        return va(a2, h2);
      });
      c.$parsers.push(function(a2) {
        return a2 ? h2 : l;
      });
    }, hidden: E, button: E, submit: E, reset: E, file: E }, $c = ["$browser", "$sniffer", "$filter", "$parse", function(a, b, d, c) {
      return { restrict: "E", require: ["?ngModel"], link: { pre: function(e, f, g, k) {
        k[0] && (te[K(g.type)] || te.text)(e, f, g, k[0], b, a, d, c);
      } } };
    }], Af = function() {
      var a = { configurable: true, enumerable: false, get: function() {
        return this.getAttribute("value") || "";
      }, set: function(a2) {
        this.setAttribute("value", a2);
      } };
      return { restrict: "E", priority: 200, compile: function(b, d) {
        if ("hidden" === K(d.type))
          return { pre: function(b2, d2, f, g) {
            b2 = d2[0];
            b2.parentNode && b2.parentNode.insertBefore(b2, b2.nextSibling);
            Object.defineProperty && Object.defineProperty(b2, "value", a);
          } };
      } };
    }, zh = /^(true|false|\d+)$/, xf = function() {
      function a(a2, d, c) {
        var e = w2(c) ? c : 9 === wa ? "" : null;
        a2.prop("value", e);
        d.$set("value", c);
      }
      return { restrict: "A", priority: 100, compile: function(b, d) {
        return zh.test(d.ngValue) ? function(b2, d2, f) {
          b2 = b2.$eval(f.ngValue);
          a(d2, f, b2);
        } : function(b2, d2, f) {
          b2.$watch(
            f.ngValue,
            function(b3) {
              a(d2, f, b3);
            }
          );
        };
      } };
    }, We = ["$compile", function(a) {
      return { restrict: "AC", compile: function(b) {
        a.$$addBindingClass(b);
        return function(b2, c, e) {
          a.$$addBindingInfo(c, e.ngBind);
          c = c[0];
          b2.$watch(e.ngBind, function(a2) {
            c.textContent = jc(a2);
          });
        };
      } };
    }], Ye = ["$interpolate", "$compile", function(a, b) {
      return { compile: function(d) {
        b.$$addBindingClass(d);
        return function(c, d2, f) {
          c = a(d2.attr(f.$attr.ngBindTemplate));
          b.$$addBindingInfo(d2, c.expressions);
          d2 = d2[0];
          f.$observe("ngBindTemplate", function(a2) {
            d2.textContent = A(a2) ? "" : a2;
          });
        };
      } };
    }], Xe = ["$sce", "$parse", "$compile", function(a, b, d) {
      return { restrict: "A", compile: function(c, e) {
        var f = b(e.ngBindHtml), g = b(e.ngBindHtml, function(b2) {
          return a.valueOf(b2);
        });
        d.$$addBindingClass(c);
        return function(b2, c2, e2) {
          d.$$addBindingInfo(c2, e2.ngBindHtml);
          b2.$watch(g, function() {
            var d2 = f(b2);
            c2.html(a.getTrustedHtml(d2) || "");
          });
        };
      } };
    }], wf = ia({ restrict: "A", require: "ngModel", link: function(a, b, d, c) {
      c.$viewChangeListeners.push(function() {
        a.$eval(d.ngChange);
      });
    } }), Ze = Lc("", true), af = Lc("Odd", 0), $e = Lc("Even", 1), bf = Ra({ compile: function(a, b) {
      b.$set("ngCloak", void 0);
      a.removeClass("ng-cloak");
    } }), cf = [function() {
      return { restrict: "A", scope: true, controller: "@", priority: 500 };
    }], ed = {}, Ah = { blur: true, focus: true };
    r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), function(a) {
      var b = xa("ng-" + a);
      ed[b] = ["$parse", "$rootScope", "$exceptionHandler", function(d, c, e) {
        return sd(d, c, e, b, a, Ah[a]);
      }];
    });
    var ff = ["$animate", "$compile", function(a, b) {
      return {
        multiElement: true,
        transclude: "element",
        priority: 600,
        terminal: true,
        restrict: "A",
        $$tlb: true,
        link: function(d, c, e, f, g) {
          var k, h2, l;
          d.$watch(e.ngIf, function(d2) {
            d2 ? h2 || g(function(d3, f2) {
              h2 = f2;
              d3[d3.length++] = b.$$createComment("end ngIf", e.ngIf);
              k = { clone: d3 };
              a.enter(d3, c.parent(), c);
            }) : (l && (l.remove(), l = null), h2 && (h2.$destroy(), h2 = null), k && (l = ub(k.clone), a.leave(l).done(function(a2) {
              false !== a2 && (l = null);
            }), k = null));
          });
        }
      };
    }], gf = ["$templateRequest", "$anchorScroll", "$animate", function(a, b, d) {
      return {
        restrict: "ECA",
        priority: 400,
        terminal: true,
        transclude: "element",
        controller: ca.noop,
        compile: function(c, e) {
          var f = e.ngInclude || e.src, g = e.onload || "", k = e.autoscroll;
          return function(c2, e2, m, p, n2) {
            var r2 = 0, q2, t, x2, v = function() {
              t && (t.remove(), t = null);
              q2 && (q2.$destroy(), q2 = null);
              x2 && (d.leave(x2).done(function(a2) {
                false !== a2 && (t = null);
              }), t = x2, x2 = null);
            };
            c2.$watch(f, function(f2) {
              var m2 = function(a2) {
                false === a2 || !w2(k) || k && !c2.$eval(k) || b();
              }, t2 = ++r2;
              f2 ? (a(f2, true).then(function(a2) {
                if (!c2.$$destroyed && t2 === r2) {
                  var b2 = c2.$new();
                  p.template = a2;
                  a2 = n2(b2, function(a3) {
                    v();
                    d.enter(a3, null, e2).done(m2);
                  });
                  q2 = b2;
                  x2 = a2;
                  q2.$emit(
                    "$includeContentLoaded",
                    f2
                  );
                  c2.$eval(g);
                }
              }, function() {
                c2.$$destroyed || t2 !== r2 || (v(), c2.$emit("$includeContentError", f2));
              }), c2.$emit("$includeContentRequested", f2)) : (v(), p.template = null);
            });
          };
        }
      };
    }], zf = ["$compile", function(a) {
      return { restrict: "ECA", priority: -400, require: "ngInclude", link: function(b, d, c, e) {
        la.call(d[0]).match(/SVG/) ? (d.empty(), a(gd(e.template, z.document).childNodes)(b, function(a2) {
          d.append(a2);
        }, { futureParentElement: d })) : (d.html(e.template), a(d.contents())(b));
      } };
    }], hf = Ra({ priority: 450, compile: function() {
      return { pre: function(a, b, d) {
        a.$eval(d.ngInit);
      } };
    } }), vf = function() {
      return { restrict: "A", priority: 100, require: "ngModel", link: function(a, b, d, c) {
        var e = d.ngList || ", ", f = "false" !== d.ngTrim, g = f ? V(e) : e;
        c.$parsers.push(function(a2) {
          if (!A(a2)) {
            var b2 = [];
            a2 && r(a2.split(g), function(a3) {
              a3 && b2.push(f ? V(a3) : a3);
            });
            return b2;
          }
        });
        c.$formatters.push(function(a2) {
          if (H(a2))
            return a2.join(e);
        });
        c.$isEmpty = function(a2) {
          return !a2 || !a2.length;
        };
      } };
    }, nb = "ng-valid", be = "ng-invalid", Za = "ng-pristine", Wb = "ng-dirty", pb = F("ngModel");
    Sb.$inject = "$scope $exceptionHandler $attrs $element $parse $animate $timeout $q $interpolate".split(" ");
    Sb.prototype = { $$initGetterSetters: function() {
      if (this.$options.getOption("getterSetter")) {
        var a = this.$$parse(this.$$attr.ngModel + "()"), b = this.$$parse(this.$$attr.ngModel + "($$$p)");
        this.$$ngModelGet = function(b2) {
          var c = this.$$parsedNgModel(b2);
          B(c) && (c = a(b2));
          return c;
        };
        this.$$ngModelSet = function(a2, c) {
          B(this.$$parsedNgModel(a2)) ? b(a2, { $$$p: c }) : this.$$parsedNgModelAssign(a2, c);
        };
      } else if (!this.$$parsedNgModel.assign)
        throw pb("nonassign", this.$$attr.ngModel, Aa(this.$$element));
    }, $render: E, $isEmpty: function(a) {
      return A(a) || "" === a || null === a || a !== a;
    }, $$updateEmptyClasses: function(a) {
      this.$isEmpty(a) ? (this.$$animate.removeClass(this.$$element, "ng-not-empty"), this.$$animate.addClass(this.$$element, "ng-empty")) : (this.$$animate.removeClass(this.$$element, "ng-empty"), this.$$animate.addClass(this.$$element, "ng-not-empty"));
    }, $setPristine: function() {
      this.$dirty = false;
      this.$pristine = true;
      this.$$animate.removeClass(this.$$element, Wb);
      this.$$animate.addClass(this.$$element, Za);
    }, $setDirty: function() {
      this.$dirty = true;
      this.$pristine = false;
      this.$$animate.removeClass(
        this.$$element,
        Za
      );
      this.$$animate.addClass(this.$$element, Wb);
      this.$$parentForm.$setDirty();
    }, $setUntouched: function() {
      this.$touched = false;
      this.$untouched = true;
      this.$$animate.setClass(this.$$element, "ng-untouched", "ng-touched");
    }, $setTouched: function() {
      this.$touched = true;
      this.$untouched = false;
      this.$$animate.setClass(this.$$element, "ng-touched", "ng-untouched");
    }, $rollbackViewValue: function() {
      this.$$timeout.cancel(this.$$pendingDebounce);
      this.$viewValue = this.$$lastCommittedViewValue;
      this.$render();
    }, $validate: function() {
      if (!Y(this.$modelValue)) {
        var a = this.$$lastCommittedViewValue, b = this.$$rawModelValue, d = this.$valid, c = this.$modelValue, e = this.$options.getOption("allowInvalid"), f = this;
        this.$$runValidators(b, a, function(a2) {
          e || d === a2 || (f.$modelValue = a2 ? b : void 0, f.$modelValue !== c && f.$$writeModelToScope());
        });
      }
    }, $$runValidators: function(a, b, d) {
      function c() {
        var c2 = true;
        r(h2.$validators, function(d2, e2) {
          var g2 = Boolean(d2(a, b));
          c2 = c2 && g2;
          f(e2, g2);
        });
        return c2 ? true : (r(h2.$asyncValidators, function(a2, b2) {
          f(b2, null);
        }), false);
      }
      function e() {
        var c2 = [], d2 = true;
        r(h2.$asyncValidators, function(e2, g2) {
          var h3 = e2(a, b);
          if (!h3 || !B(h3.then))
            throw pb("nopromise", h3);
          f(g2, void 0);
          c2.push(h3.then(function() {
            f(g2, true);
          }, function() {
            d2 = false;
            f(g2, false);
          }));
        });
        c2.length ? h2.$$q.all(c2).then(function() {
          g(d2);
        }, E) : g(true);
      }
      function f(a2, b2) {
        k === h2.$$currentValidationRunId && h2.$setValidity(a2, b2);
      }
      function g(a2) {
        k === h2.$$currentValidationRunId && d(a2);
      }
      this.$$currentValidationRunId++;
      var k = this.$$currentValidationRunId, h2 = this;
      (function() {
        var a2 = h2.$$parserName;
        if (A(h2.$$parserValid))
          f(a2, null);
        else
          return h2.$$parserValid || (r(h2.$validators, function(a3, b2) {
            f(b2, null);
          }), r(h2.$asyncValidators, function(a3, b2) {
            f(b2, null);
          })), f(a2, h2.$$parserValid), h2.$$parserValid;
        return true;
      })() ? c() ? e() : g(false) : g(false);
    }, $commitViewValue: function() {
      var a = this.$viewValue;
      this.$$timeout.cancel(this.$$pendingDebounce);
      if (this.$$lastCommittedViewValue !== a || "" === a && this.$$hasNativeValidators)
        this.$$updateEmptyClasses(a), this.$$lastCommittedViewValue = a, this.$pristine && this.$setDirty(), this.$$parseAndValidate();
    }, $$parseAndValidate: function() {
      var a = this.$$lastCommittedViewValue, b = this;
      this.$$parserValid = A(a) ? void 0 : true;
      this.$setValidity(this.$$parserName, null);
      this.$$parserName = "parse";
      if (this.$$parserValid) {
        for (var d = 0; d < this.$parsers.length; d++)
          if (a = this.$parsers[d](a), A(a)) {
            this.$$parserValid = false;
            break;
          }
      }
      Y(this.$modelValue) && (this.$modelValue = this.$$ngModelGet(this.$$scope));
      var c = this.$modelValue, e = this.$options.getOption("allowInvalid");
      this.$$rawModelValue = a;
      e && (this.$modelValue = a, b.$modelValue !== c && b.$$writeModelToScope());
      this.$$runValidators(a, this.$$lastCommittedViewValue, function(d2) {
        e || (b.$modelValue = d2 ? a : void 0, b.$modelValue !== c && b.$$writeModelToScope());
      });
    }, $$writeModelToScope: function() {
      this.$$ngModelSet(this.$$scope, this.$modelValue);
      r(this.$viewChangeListeners, function(a) {
        try {
          a();
        } catch (b) {
          this.$$exceptionHandler(b);
        }
      }, this);
    }, $setViewValue: function(a, b) {
      this.$viewValue = a;
      this.$options.getOption("updateOnDefault") && this.$$debounceViewValueCommit(b);
    }, $$debounceViewValueCommit: function(a) {
      var b = this.$options.getOption("debounce");
      X(b[a]) ? b = b[a] : X(b["default"]) && -1 === this.$options.getOption("updateOn").indexOf(a) ? b = b["default"] : X(b["*"]) && (b = b["*"]);
      this.$$timeout.cancel(this.$$pendingDebounce);
      var d = this;
      0 < b ? this.$$pendingDebounce = this.$$timeout(function() {
        d.$commitViewValue();
      }, b) : this.$$rootScope.$$phase ? this.$commitViewValue() : this.$$scope.$apply(function() {
        d.$commitViewValue();
      });
    }, $overrideModelOptions: function(a) {
      this.$options = this.$options.createChild(a);
      this.$$setUpdateOnEvents();
    }, $processModelValue: function() {
      var a = this.$$format();
      this.$viewValue !== a && (this.$$updateEmptyClasses(a), this.$viewValue = this.$$lastCommittedViewValue = a, this.$render(), this.$$runValidators(this.$modelValue, this.$viewValue, E));
    }, $$format: function() {
      for (var a = this.$formatters, b = a.length, d = this.$modelValue; b--; )
        d = a[b](d);
      return d;
    }, $$setModelValue: function(a) {
      this.$modelValue = this.$$rawModelValue = a;
      this.$$parserValid = void 0;
      this.$processModelValue();
    }, $$setUpdateOnEvents: function() {
      this.$$updateEvents && this.$$element.off(this.$$updateEvents, this.$$updateEventHandler);
      if (this.$$updateEvents = this.$options.getOption("updateOn"))
        this.$$element.on(
          this.$$updateEvents,
          this.$$updateEventHandler
        );
    }, $$updateEventHandler: function(a) {
      this.$$debounceViewValueCommit(a && a.type);
    } };
    ce({ clazz: Sb, set: function(a, b) {
      a[b] = true;
    }, unset: function(a, b) {
      delete a[b];
    } });
    var uf = ["$rootScope", function(a) {
      return { restrict: "A", require: ["ngModel", "^?form", "^?ngModelOptions"], controller: Sb, priority: 1, compile: function(b) {
        b.addClass(Za).addClass("ng-untouched").addClass(nb);
        return { pre: function(a2, b2, e, f) {
          var g = f[0];
          b2 = f[1] || g.$$parentForm;
          if (f = f[2])
            g.$options = f.$options;
          g.$$initGetterSetters();
          b2.$addControl(g);
          e.$observe("name", function(a3) {
            g.$name !== a3 && g.$$parentForm.$$renameControl(g, a3);
          });
          a2.$on("$destroy", function() {
            g.$$parentForm.$removeControl(g);
          });
        }, post: function(b2, c, e, f) {
          function g() {
            k.$setTouched();
          }
          var k = f[0];
          k.$$setUpdateOnEvents();
          c.on("blur", function() {
            k.$touched || (a.$$phase ? b2.$evalAsync(g) : b2.$apply(g));
          });
        } };
      } };
    }], Tb, Bh = /(\s+|^)default(\s+|$)/;
    Mc.prototype = { getOption: function(a) {
      return this.$$options[a];
    }, createChild: function(a) {
      var b = false;
      a = S({}, a);
      r(a, function(d, c) {
        "$inherit" === d ? "*" === c ? b = true : (a[c] = this.$$options[c], "updateOn" === c && (a.updateOnDefault = this.$$options.updateOnDefault)) : "updateOn" === c && (a.updateOnDefault = false, a[c] = V(d.replace(Bh, function() {
          a.updateOnDefault = true;
          return " ";
        })));
      }, this);
      b && (delete a["*"], ie(a, this.$$options));
      ie(a, Tb.$$options);
      return new Mc(a);
    } };
    Tb = new Mc({ updateOn: "", updateOnDefault: true, debounce: 0, getterSetter: false, allowInvalid: false, timezone: null });
    var yf = function() {
      function a(a2, d) {
        this.$$attrs = a2;
        this.$$scope = d;
      }
      a.$inject = ["$attrs", "$scope"];
      a.prototype = { $onInit: function() {
        var a2 = this.parentCtrl ? this.parentCtrl.$options : Tb, d = this.$$scope.$eval(this.$$attrs.ngModelOptions);
        this.$options = a2.createChild(d);
      } };
      return { restrict: "A", priority: 10, require: { parentCtrl: "?^^ngModelOptions" }, bindToController: true, controller: a };
    }, jf = Ra({ terminal: true, priority: 1e3 }), Ch = F("ngOptions"), Dh = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([$\w][$\w]*)|(?:\(\s*([$\w][$\w]*)\s*,\s*([$\w][$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/, sf = ["$compile", "$document", "$parse", function(a, b, d) {
      function c(a2, b2, c2) {
        function e2(a3, b3, c3, d2, f3) {
          this.selectValue = a3;
          this.viewValue = b3;
          this.label = c3;
          this.group = d2;
          this.disabled = f3;
        }
        function f2(a3) {
          var b3;
          if (!r2 && za(a3))
            b3 = a3;
          else {
            b3 = [];
            for (var c3 in a3)
              a3.hasOwnProperty(c3) && "$" !== c3.charAt(0) && b3.push(c3);
          }
          return b3;
        }
        var p = a2.match(Dh);
        if (!p)
          throw Ch("iexp", a2, Aa(b2));
        var n2 = p[5] || p[7], r2 = p[6];
        a2 = / as /.test(p[0]) && p[1];
        var q2 = p[9];
        b2 = d(p[2] ? p[1] : n2);
        var t = a2 && d(a2) || b2, w3 = q2 && d(q2), v = q2 ? function(a3, b3) {
          return w3(c2, b3);
        } : function(a3) {
          return La(a3);
        }, x2 = function(a3, b3) {
          return v(a3, B2(a3, b3));
        }, A2 = d(p[2] || p[1]), y = d(p[3] || ""), J = d(p[4] || ""), I = d(p[8]), z2 = {}, B2 = r2 ? function(a3, b3) {
          z2[r2] = b3;
          z2[n2] = a3;
          return z2;
        } : function(a3) {
          z2[n2] = a3;
          return z2;
        };
        return { trackBy: q2, getTrackByValue: x2, getWatchables: d(I, function(a3) {
          var b3 = [];
          a3 = a3 || [];
          for (var d2 = f2(a3), e3 = d2.length, g = 0; g < e3; g++) {
            var k = a3 === d2 ? g : d2[g], l = a3[k], k = B2(l, k), l = v(l, k);
            b3.push(l);
            if (p[2] || p[1])
              l = A2(c2, k), b3.push(l);
            p[4] && (k = J(c2, k), b3.push(k));
          }
          return b3;
        }), getOptions: function() {
          for (var a3 = [], b3 = {}, d2 = I(c2) || [], g = f2(d2), k = g.length, n3 = 0; n3 < k; n3++) {
            var p2 = d2 === g ? n3 : g[n3], r3 = B2(d2[p2], p2), s2 = t(c2, r3), p2 = v(s2, r3), w4 = A2(c2, r3), z3 = y(c2, r3), r3 = J(c2, r3), s2 = new e2(p2, s2, w4, z3, r3);
            a3.push(s2);
            b3[p2] = s2;
          }
          return { items: a3, selectValueMap: b3, getOptionFromViewValue: function(a4) {
            return b3[x2(a4)];
          }, getViewValueFromOption: function(a4) {
            return q2 ? Ia(a4.viewValue) : a4.viewValue;
          } };
        } };
      }
      var e = z.document.createElement("option"), f = z.document.createElement("optgroup");
      return { restrict: "A", terminal: true, require: ["select", "ngModel"], link: { pre: function(a2, b2, c2, d2) {
        d2[0].registerOption = E;
      }, post: function(d2, k, h2, l) {
        function m(a2) {
          var b2 = (a2 = v.getOptionFromViewValue(a2)) && a2.element;
          b2 && !b2.selected && (b2.selected = true);
          return a2;
        }
        function p(a2, b2) {
          a2.element = b2;
          b2.disabled = a2.disabled;
          a2.label !== b2.label && (b2.label = a2.label, b2.textContent = a2.label);
          b2.value = a2.selectValue;
        }
        var n2 = l[0], q2 = l[1], A2 = h2.multiple;
        l = 0;
        for (var t = k.children(), z2 = t.length; l < z2; l++)
          if ("" === t[l].value) {
            n2.hasEmptyOption = true;
            n2.emptyOption = t.eq(l);
            break;
          }
        k.empty();
        l = !!n2.emptyOption;
        x(e.cloneNode(false)).val("?");
        var v, B2 = c(h2.ngOptions, k, d2), C2 = b[0].createDocumentFragment();
        n2.generateUnknownOptionValue = function(a2) {
          return "?";
        };
        A2 ? (n2.writeValue = function(a2) {
          if (v) {
            var b2 = a2 && a2.map(m) || [];
            v.items.forEach(function(a3) {
              a3.element.selected && -1 === Array.prototype.indexOf.call(b2, a3) && (a3.element.selected = false);
            });
          }
        }, n2.readValue = function() {
          var a2 = k.val() || [], b2 = [];
          r(a2, function(a3) {
            (a3 = v.selectValueMap[a3]) && !a3.disabled && b2.push(v.getViewValueFromOption(a3));
          });
          return b2;
        }, B2.trackBy && d2.$watchCollection(function() {
          if (H(q2.$viewValue))
            return q2.$viewValue.map(function(a2) {
              return B2.getTrackByValue(a2);
            });
        }, function() {
          q2.$render();
        })) : (n2.writeValue = function(a2) {
          if (v) {
            var b2 = k[0].options[k[0].selectedIndex], c2 = v.getOptionFromViewValue(a2);
            b2 && b2.removeAttribute("selected");
            c2 ? (k[0].value !== c2.selectValue && (n2.removeUnknownOption(), k[0].value = c2.selectValue, c2.element.selected = true), c2.element.setAttribute("selected", "selected")) : n2.selectUnknownOrEmptyOption(a2);
          }
        }, n2.readValue = function() {
          var a2 = v.selectValueMap[k.val()];
          return a2 && !a2.disabled ? (n2.unselectEmptyOption(), n2.removeUnknownOption(), v.getViewValueFromOption(a2)) : null;
        }, B2.trackBy && d2.$watch(function() {
          return B2.getTrackByValue(q2.$viewValue);
        }, function() {
          q2.$render();
        }));
        l && (a(n2.emptyOption)(d2), k.prepend(n2.emptyOption), 8 === n2.emptyOption[0].nodeType ? (n2.hasEmptyOption = false, n2.registerOption = function(a2, b2) {
          "" === b2.val() && (n2.hasEmptyOption = true, n2.emptyOption = b2, n2.emptyOption.removeClass("ng-scope"), q2.$render(), b2.on("$destroy", function() {
            var a3 = n2.$isEmptyOptionSelected();
            n2.hasEmptyOption = false;
            n2.emptyOption = void 0;
            a3 && q2.$render();
          }));
        }) : n2.emptyOption.removeClass("ng-scope"));
        d2.$watchCollection(B2.getWatchables, function() {
          var a2 = v && n2.readValue();
          if (v)
            for (var b2 = v.items.length - 1; 0 <= b2; b2--) {
              var c2 = v.items[b2];
              w2(c2.group) ? Gb(c2.element.parentNode) : Gb(c2.element);
            }
          v = B2.getOptions();
          var d3 = {};
          v.items.forEach(function(a3) {
            var b3;
            if (w2(a3.group)) {
              b3 = d3[a3.group];
              b3 || (b3 = f.cloneNode(false), C2.appendChild(b3), b3.label = null === a3.group ? "null" : a3.group, d3[a3.group] = b3);
              var c3 = e.cloneNode(false);
              b3.appendChild(c3);
              p(a3, c3);
            } else
              b3 = e.cloneNode(false), C2.appendChild(b3), p(a3, b3);
          });
          k[0].appendChild(C2);
          q2.$render();
          q2.$isEmpty(a2) || (b2 = n2.readValue(), (B2.trackBy || A2 ? va(a2, b2) : a2 === b2) || (q2.$setViewValue(b2), q2.$render()));
        });
      } } };
    }], kf = [
      "$locale",
      "$interpolate",
      "$log",
      function(a, b, d) {
        var c = /{}/g, e = /^when(Minus)?(.+)$/;
        return { link: function(f, g, k) {
          function h2(a2) {
            g.text(a2 || "");
          }
          var l = k.count, m = k.$attr.when && g.attr(k.$attr.when), p = k.offset || 0, n2 = f.$eval(m) || {}, q2 = {}, w3 = b.startSymbol(), t = b.endSymbol(), x2 = w3 + l + "-" + p + t, v = ca.noop, z2;
          r(k, function(a2, b2) {
            var c2 = e.exec(b2);
            c2 && (c2 = (c2[1] ? "-" : "") + K(c2[2]), n2[c2] = g.attr(k.$attr[b2]));
          });
          r(n2, function(a2, d2) {
            q2[d2] = b(a2.replace(c, x2));
          });
          f.$watch(l, function(b2) {
            var c2 = parseFloat(b2), e2 = Y(c2);
            e2 || c2 in n2 || (c2 = a.pluralCat(c2 - p));
            c2 === z2 || e2 && Y(z2) || (v(), e2 = q2[c2], A(e2) ? (null != b2 && d.debug("ngPluralize: no rule defined for '" + c2 + "' in " + m), v = E, h2()) : v = f.$watch(e2, h2), z2 = c2);
          });
        } };
      }
    ], ue = F("ngRef"), lf = ["$parse", function(a) {
      return { priority: -1, restrict: "A", compile: function(b, d) {
        var c = xa(ua(b)), e = a(d.ngRef), f = e.assign || function() {
          throw ue("nonassign", d.ngRef);
        };
        return function(a2, b2, h2) {
          var l;
          if (h2.hasOwnProperty("ngRefRead"))
            if ("$element" === h2.ngRefRead)
              l = b2;
            else {
              if (l = b2.data("$" + h2.ngRefRead + "Controller"), !l)
                throw ue("noctrl", h2.ngRefRead, d.ngRef);
            }
          else
            l = b2.data("$" + c + "Controller");
          l = l || b2;
          f(a2, l);
          b2.on("$destroy", function() {
            e(a2) === l && f(a2, null);
          });
        };
      } };
    }], mf = ["$parse", "$animate", "$compile", function(a, b, d) {
      var c = F("ngRepeat"), e = function(a2, b2, c2, d2, e2, f2, g2) {
        a2[c2] = d2;
        e2 && (a2[e2] = f2);
        a2.$index = b2;
        a2.$first = 0 === b2;
        a2.$last = b2 === g2 - 1;
        a2.$middle = !(a2.$first || a2.$last);
        a2.$odd = !(a2.$even = 0 === (b2 & 1));
      }, f = function(a2, b2, c2) {
        return La(c2);
      }, g = function(a2, b2) {
        return b2;
      };
      return { restrict: "A", multiElement: true, transclude: "element", priority: 1e3, terminal: true, $$tlb: true, compile: function(k, h2) {
        var l = h2.ngRepeat, m = d.$$createComment(
          "end ngRepeat",
          l
        ), p = l.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
        if (!p)
          throw c("iexp", l);
        var n2 = p[1], q2 = p[2], w3 = p[3], t = p[4], p = n2.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/);
        if (!p)
          throw c("iidexp", n2);
        var x2 = p[3] || p[1], v = p[2];
        if (w3 && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(w3) || /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(w3)))
          throw c("badident", w3);
        var A2;
        if (t) {
          var z2 = { $id: La }, y = a(t);
          A2 = function(a2, b2, c2, d2) {
            v && (z2[v] = b2);
            z2[x2] = c2;
            z2.$index = d2;
            return y(a2, z2);
          };
        }
        return function(a2, d2, h3, k2, n3) {
          var p2 = T();
          a2.$watchCollection(q2, function(h4) {
            var k3, q3, t2 = d2[0], s2, y2 = T(), B2, C2, E2, D2, H2, F2, K2;
            w3 && (a2[w3] = h4);
            if (za(h4))
              H2 = h4, q3 = A2 || f;
            else
              for (K2 in q3 = A2 || g, H2 = [], h4)
                ta.call(h4, K2) && "$" !== K2.charAt(0) && H2.push(K2);
            B2 = H2.length;
            K2 = Array(B2);
            for (k3 = 0; k3 < B2; k3++)
              if (C2 = h4 === H2 ? k3 : H2[k3], E2 = h4[C2], D2 = q3(a2, C2, E2, k3), p2[D2])
                F2 = p2[D2], delete p2[D2], y2[D2] = F2, K2[k3] = F2;
              else {
                if (y2[D2])
                  throw r(K2, function(a3) {
                    a3 && a3.scope && (p2[a3.id] = a3);
                  }), c("dupes", l, D2, E2);
                K2[k3] = { id: D2, scope: void 0, clone: void 0 };
                y2[D2] = true;
              }
            z2 && (z2[x2] = void 0);
            for (s2 in p2) {
              F2 = p2[s2];
              D2 = ub(F2.clone);
              b.leave(D2);
              if (D2[0].parentNode)
                for (k3 = 0, q3 = D2.length; k3 < q3; k3++)
                  D2[k3].$$NG_REMOVED = true;
              F2.scope.$destroy();
            }
            for (k3 = 0; k3 < B2; k3++)
              if (C2 = h4 === H2 ? k3 : H2[k3], E2 = h4[C2], F2 = K2[k3], F2.scope) {
                s2 = t2;
                do
                  s2 = s2.nextSibling;
                while (s2 && s2.$$NG_REMOVED);
                F2.clone[0] !== s2 && b.move(ub(F2.clone), null, t2);
                t2 = F2.clone[F2.clone.length - 1];
                e(F2.scope, k3, x2, E2, v, C2, B2);
              } else
                n3(function(a3, c2) {
                  F2.scope = c2;
                  var d3 = m.cloneNode(false);
                  a3[a3.length++] = d3;
                  b.enter(a3, null, t2);
                  t2 = d3;
                  F2.clone = a3;
                  y2[F2.id] = F2;
                  e(F2.scope, k3, x2, E2, v, C2, B2);
                });
            p2 = y2;
          });
        };
      } };
    }], nf = ["$animate", function(a) {
      return {
        restrict: "A",
        multiElement: true,
        link: function(b, d, c) {
          b.$watch(c.ngShow, function(b2) {
            a[b2 ? "removeClass" : "addClass"](d, "ng-hide", { tempClasses: "ng-hide-animate" });
          });
        }
      };
    }], ef = ["$animate", function(a) {
      return { restrict: "A", multiElement: true, link: function(b, d, c) {
        b.$watch(c.ngHide, function(b2) {
          a[b2 ? "addClass" : "removeClass"](d, "ng-hide", { tempClasses: "ng-hide-animate" });
        });
      } };
    }], of = Ra(function(a, b, d) {
      a.$watchCollection(d.ngStyle, function(a2, d2) {
        d2 && a2 !== d2 && r(d2, function(a3, c) {
          b.css(c, "");
        });
        a2 && b.css(a2);
      });
    }), pf = ["$animate", "$compile", function(a, b) {
      return { require: "ngSwitch", controller: ["$scope", function() {
        this.cases = {};
      }], link: function(d, c, e, f) {
        var g = [], k = [], h2 = [], l = [], m = function(a2, b2) {
          return function(c2) {
            false !== c2 && a2.splice(b2, 1);
          };
        };
        d.$watch(e.ngSwitch || e.on, function(c2) {
          for (var d2, e2; h2.length; )
            a.cancel(h2.pop());
          d2 = 0;
          for (e2 = l.length; d2 < e2; ++d2) {
            var q2 = ub(k[d2].clone);
            l[d2].$destroy();
            (h2[d2] = a.leave(q2)).done(m(h2, d2));
          }
          k.length = 0;
          l.length = 0;
          (g = f.cases["!" + c2] || f.cases["?"]) && r(g, function(c3) {
            c3.transclude(function(d3, e3) {
              l.push(e3);
              var f2 = c3.element;
              d3[d3.length++] = b.$$createComment("end ngSwitchWhen");
              k.push({ clone: d3 });
              a.enter(d3, f2.parent(), f2);
            });
          });
        });
      } };
    }], qf = Ra({ transclude: "element", priority: 1200, require: "^ngSwitch", multiElement: true, link: function(a, b, d, c, e) {
      a = d.ngSwitchWhen.split(d.ngSwitchWhenSeparator).sort().filter(function(a2, b2, c2) {
        return c2[b2 - 1] !== a2;
      });
      r(a, function(a2) {
        c.cases["!" + a2] = c.cases["!" + a2] || [];
        c.cases["!" + a2].push({ transclude: e, element: b });
      });
    } }), rf = Ra({ transclude: "element", priority: 1200, require: "^ngSwitch", multiElement: true, link: function(a, b, d, c, e) {
      c.cases["?"] = c.cases["?"] || [];
      c.cases["?"].push({
        transclude: e,
        element: b
      });
    } }), Eh = F("ngTransclude"), tf = ["$compile", function(a) {
      return { restrict: "EAC", compile: function(b) {
        var d = a(b.contents());
        b.empty();
        return function(a2, b2, f, g, k) {
          function h2() {
            d(a2, function(a3) {
              b2.append(a3);
            });
          }
          if (!k)
            throw Eh("orphan", Aa(b2));
          f.ngTransclude === f.$attr.ngTransclude && (f.ngTransclude = "");
          f = f.ngTransclude || f.ngTranscludeSlot;
          k(
            function(a3, c) {
              var d2;
              if (d2 = a3.length)
                a: {
                  d2 = 0;
                  for (var f2 = a3.length; d2 < f2; d2++) {
                    var g2 = a3[d2];
                    if (g2.nodeType !== Pa || g2.nodeValue.trim()) {
                      d2 = true;
                      break a;
                    }
                  }
                  d2 = void 0;
                }
              d2 ? b2.append(a3) : (h2(), c.$destroy());
            },
            null,
            f
          );
          f && !k.isSlotFilled(f) && h2();
        };
      } };
    }], Te = ["$templateCache", function(a) {
      return { restrict: "E", terminal: true, compile: function(b, d) {
        "text/ng-template" === d.type && a.put(d.id, b[0].text);
      } };
    }], Fh = { $setViewValue: E, $render: E }, Gh = ["$element", "$scope", function(a, b) {
      function d() {
        g || (g = true, b.$$postDigest(function() {
          g = false;
          e.ngModelCtrl.$render();
        }));
      }
      function c(a2) {
        k || (k = true, b.$$postDigest(function() {
          b.$$destroyed || (k = false, e.ngModelCtrl.$setViewValue(e.readValue()), a2 && e.ngModelCtrl.$render());
        }));
      }
      var e = this, f = new Ib();
      e.selectValueMap = {};
      e.ngModelCtrl = Fh;
      e.multiple = false;
      e.unknownOption = x(z.document.createElement("option"));
      e.hasEmptyOption = false;
      e.emptyOption = void 0;
      e.renderUnknownOption = function(b2) {
        b2 = e.generateUnknownOptionValue(b2);
        e.unknownOption.val(b2);
        a.prepend(e.unknownOption);
        Oa(e.unknownOption, true);
        a.val(b2);
      };
      e.updateUnknownOption = function(b2) {
        b2 = e.generateUnknownOptionValue(b2);
        e.unknownOption.val(b2);
        Oa(e.unknownOption, true);
        a.val(b2);
      };
      e.generateUnknownOptionValue = function(a2) {
        return "? " + La(a2) + " ?";
      };
      e.removeUnknownOption = function() {
        e.unknownOption.parent() && e.unknownOption.remove();
      };
      e.selectEmptyOption = function() {
        e.emptyOption && (a.val(""), Oa(e.emptyOption, true));
      };
      e.unselectEmptyOption = function() {
        e.hasEmptyOption && Oa(e.emptyOption, false);
      };
      b.$on("$destroy", function() {
        e.renderUnknownOption = E;
      });
      e.readValue = function() {
        var b2 = a.val(), b2 = b2 in e.selectValueMap ? e.selectValueMap[b2] : b2;
        return e.hasOption(b2) ? b2 : null;
      };
      e.writeValue = function(b2) {
        var c2 = a[0].options[a[0].selectedIndex];
        c2 && Oa(x(c2), false);
        e.hasOption(b2) ? (e.removeUnknownOption(), c2 = La(b2), a.val(c2 in e.selectValueMap ? c2 : b2), Oa(x(a[0].options[a[0].selectedIndex]), true)) : e.selectUnknownOrEmptyOption(b2);
      };
      e.addOption = function(a2, b2) {
        if (8 !== b2[0].nodeType) {
          Ja(a2, '"option value"');
          "" === a2 && (e.hasEmptyOption = true, e.emptyOption = b2);
          var c2 = f.get(a2) || 0;
          f.set(a2, c2 + 1);
          d();
        }
      };
      e.removeOption = function(a2) {
        var b2 = f.get(a2);
        b2 && (1 === b2 ? (f.delete(a2), "" === a2 && (e.hasEmptyOption = false, e.emptyOption = void 0)) : f.set(a2, b2 - 1));
      };
      e.hasOption = function(a2) {
        return !!f.get(a2);
      };
      e.$hasEmptyOption = function() {
        return e.hasEmptyOption;
      };
      e.$isUnknownOptionSelected = function() {
        return a[0].options[0] === e.unknownOption[0];
      };
      e.$isEmptyOptionSelected = function() {
        return e.hasEmptyOption && a[0].options[a[0].selectedIndex] === e.emptyOption[0];
      };
      e.selectUnknownOrEmptyOption = function(a2) {
        null == a2 && e.emptyOption ? (e.removeUnknownOption(), e.selectEmptyOption()) : e.unknownOption.parent().length ? e.updateUnknownOption(a2) : e.renderUnknownOption(a2);
      };
      var g = false, k = false;
      e.registerOption = function(a2, b2, f2, g2, k2) {
        if (f2.$attr.ngValue) {
          var q2, r2;
          f2.$observe("value", function(a3) {
            var d2, f3 = b2.prop("selected");
            w2(r2) && (e.removeOption(q2), delete e.selectValueMap[r2], d2 = true);
            r2 = La(a3);
            q2 = a3;
            e.selectValueMap[r2] = a3;
            e.addOption(a3, b2);
            b2.attr("value", r2);
            d2 && f3 && c();
          });
        } else
          g2 ? f2.$observe("value", function(a3) {
            e.readValue();
            var d2, f3 = b2.prop("selected");
            w2(q2) && (e.removeOption(q2), d2 = true);
            q2 = a3;
            e.addOption(a3, b2);
            d2 && f3 && c();
          }) : k2 ? a2.$watch(k2, function(a3, d2) {
            f2.$set("value", a3);
            var g3 = b2.prop("selected");
            d2 !== a3 && e.removeOption(d2);
            e.addOption(a3, b2);
            d2 && g3 && c();
          }) : e.addOption(f2.value, b2);
        f2.$observe("disabled", function(a3) {
          if ("true" === a3 || a3 && b2.prop("selected"))
            e.multiple ? c(true) : (e.ngModelCtrl.$setViewValue(null), e.ngModelCtrl.$render());
        });
        b2.on("$destroy", function() {
          var a3 = e.readValue(), b3 = f2.value;
          e.removeOption(b3);
          d();
          (e.multiple && a3 && -1 !== a3.indexOf(b3) || a3 === b3) && c(true);
        });
      };
    }], Ue = function() {
      return { restrict: "E", require: ["select", "?ngModel"], controller: Gh, priority: 1, link: { pre: function(a, b, d, c) {
        var e = c[0], f = c[1];
        if (f) {
          if (e.ngModelCtrl = f, b.on("change", function() {
            e.removeUnknownOption();
            a.$apply(function() {
              f.$setViewValue(e.readValue());
            });
          }), d.multiple) {
            e.multiple = true;
            e.readValue = function() {
              var a2 = [];
              r(b.find("option"), function(b2) {
                b2.selected && !b2.disabled && (b2 = b2.value, a2.push(b2 in e.selectValueMap ? e.selectValueMap[b2] : b2));
              });
              return a2;
            };
            e.writeValue = function(a2) {
              r(b.find("option"), function(b2) {
                var c2 = !!a2 && (-1 !== Array.prototype.indexOf.call(a2, b2.value) || -1 !== Array.prototype.indexOf.call(a2, e.selectValueMap[b2.value]));
                c2 !== b2.selected && Oa(x(b2), c2);
              });
            };
            var g, k = NaN;
            a.$watch(function() {
              k !== f.$viewValue || va(g, f.$viewValue) || (g = ja(f.$viewValue), f.$render());
              k = f.$viewValue;
            });
            f.$isEmpty = function(a2) {
              return !a2 || 0 === a2.length;
            };
          }
        } else
          e.registerOption = E;
      }, post: function(a, b, d, c) {
        var e = c[1];
        if (e) {
          var f = c[0];
          e.$render = function() {
            f.writeValue(e.$viewValue);
          };
        }
      } } };
    }, Ve = ["$interpolate", function(a) {
      return { restrict: "E", priority: 100, compile: function(b, d) {
        var c, e;
        w2(d.ngValue) || (w2(d.value) ? c = a(d.value, true) : (e = a(b.text(), true)) || d.$set("value", b.text()));
        return function(a2, b2, d2) {
          var h2 = b2.parent();
          (h2 = h2.data("$selectController") || h2.parent().data("$selectController")) && h2.registerOption(a2, b2, d2, c, e);
        };
      } };
    }], bd = ["$parse", function(a) {
      return { restrict: "A", require: "?ngModel", link: function(b, d, c, e) {
        if (e) {
          var f = c.hasOwnProperty("required") || a(c.ngRequired)(b);
          c.ngRequired || (c.required = true);
          e.$validators.required = function(a2, b2) {
            return !f || !e.$isEmpty(b2);
          };
          c.$observe("required", function(a2) {
            f !== a2 && (f = a2, e.$validate());
          });
        }
      } };
    }], ad = ["$parse", function(a) {
      return { restrict: "A", require: "?ngModel", compile: function(b, d) {
        var c, e;
        d.ngPattern && (c = d.ngPattern, e = "/" === d.ngPattern.charAt(0) && ke.test(d.ngPattern) ? function() {
          return d.ngPattern;
        } : a(d.ngPattern));
        return function(a2, b2, d2, h2) {
          if (h2) {
            var l = d2.pattern;
            d2.ngPattern ? l = e(a2) : c = d2.pattern;
            var m = je(l, c, b2);
            d2.$observe("pattern", function(a3) {
              var d3 = m;
              m = je(a3, c, b2);
              (d3 && d3.toString()) !== (m && m.toString()) && h2.$validate();
            });
            h2.$validators.pattern = function(a3, b3) {
              return h2.$isEmpty(b3) || A(m) || m.test(b3);
            };
          }
        };
      } };
    }], dd = ["$parse", function(a) {
      return { restrict: "A", require: "?ngModel", link: function(b, d, c, e) {
        if (e) {
          var f = c.maxlength || a(c.ngMaxlength)(b), g = Ub(f);
          c.$observe("maxlength", function(a2) {
            f !== a2 && (g = Ub(a2), f = a2, e.$validate());
          });
          e.$validators.maxlength = function(a2, b2) {
            return 0 > g || e.$isEmpty(b2) || b2.length <= g;
          };
        }
      } };
    }], cd = ["$parse", function(a) {
      return { restrict: "A", require: "?ngModel", link: function(b, d, c, e) {
        if (e) {
          var f = c.minlength || a(c.ngMinlength)(b), g = Ub(f) || -1;
          c.$observe("minlength", function(a2) {
            f !== a2 && (g = Ub(a2) || -1, f = a2, e.$validate());
          });
          e.$validators.minlength = function(a2, b2) {
            return e.$isEmpty(b2) || b2.length >= g;
          };
        }
      } };
    }];
    z.angular.bootstrap ? z.console && console.log("WARNING: Tried to load AngularJS more than once.") : (Je(), Oe(ca), ca.module("ngLocale", [], ["$provide", function(a) {
      function b(a2) {
        a2 += "";
        var b2 = a2.indexOf(".");
        return -1 == b2 ? 0 : a2.length - b2 - 1;
      }
      a.value("$locale", { DATETIME_FORMATS: {
        AMPMS: ["AM", "PM"],
        DAY: "Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),
        ERANAMES: ["Before Christ", "Anno Domini"],
        ERAS: ["BC", "AD"],
        FIRSTDAYOFWEEK: 6,
        MONTH: "January February March April May June July August September October November December".split(" "),
        SHORTDAY: "Sun Mon Tue Wed Thu Fri Sat".split(" "),
        SHORTMONTH: "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),
        STANDALONEMONTH: "January February March April May June July August September October November December".split(" "),
        WEEKENDRANGE: [5, 6],
        fullDate: "EEEE, MMMM d, y",
        longDate: "MMMM d, y",
        medium: "MMM d, y h:mm:ss a",
        mediumDate: "MMM d, y",
        mediumTime: "h:mm:ss a",
        "short": "M/d/yy h:mm a",
        shortDate: "M/d/yy",
        shortTime: "h:mm a"
      }, NUMBER_FORMATS: { CURRENCY_SYM: "$", DECIMAL_SEP: ".", GROUP_SEP: ",", PATTERNS: [{ gSize: 3, lgSize: 3, maxFrac: 3, minFrac: 0, minInt: 1, negPre: "-", negSuf: "", posPre: "", posSuf: "" }, { gSize: 3, lgSize: 3, maxFrac: 2, minFrac: 2, minInt: 1, negPre: "-\xA4", negSuf: "", posPre: "\xA4", posSuf: "" }] }, id: "en-us", localeID: "en_US", pluralCat: function(a2, c) {
        var e = a2 | 0, f = c;
        void 0 === f && (f = Math.min(b(a2), 3));
        Math.pow(10, f);
        return 1 == e && 0 == f ? "one" : "other";
      } });
    }]), x(function() {
      Ee(z.document, Wc);
    }));
  })(window);
  !window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend(window.angular.element("<style>").text('@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}'));

  // esbuild/entrypoints/vendor-minified.bundle.js
  var import_ng_debottle = __toESM(require_ng_debottle());

  // dep-runtime/node_modules/angular-animate/angular-animate.min.js
  (function(Y, z) {
    "use strict";
    function Fa(a, b, c) {
      if (!a)
        throw Pa("areq", b || "?", c || "required");
      return a;
    }
    function Ga(a, b) {
      if (!a && !b)
        return "";
      if (!a)
        return b;
      if (!b)
        return a;
      Z(a) && (a = a.join(" "));
      Z(b) && (b = b.join(" "));
      return a + " " + b;
    }
    function Qa(a) {
      var b = {};
      a && (a.to || a.from) && (b.to = a.to, b.from = a.from);
      return b;
    }
    function $2(a, b, c) {
      var d = "";
      a = Z(a) ? a : a && G(a) && a.length ? a.split(/\s+/) : [];
      s2(a, function(a2, k) {
        a2 && 0 < a2.length && (d += 0 < k ? " " : "", d += c ? b + a2 : a2 + b);
      });
      return d;
    }
    function Ha(a) {
      if (a instanceof A)
        switch (a.length) {
          case 0:
            return a;
          case 1:
            if (1 === a[0].nodeType)
              return a;
            break;
          default:
            return A(va(a));
        }
      if (1 === a.nodeType)
        return A(a);
    }
    function va(a) {
      if (!a[0])
        return a;
      for (var b = 0; b < a.length; b++) {
        var c = a[b];
        if (1 === c.nodeType)
          return c;
      }
    }
    function Ra(a, b, c) {
      s2(b, function(b2) {
        a.addClass(b2, c);
      });
    }
    function Sa(a, b, c) {
      s2(b, function(b2) {
        a.removeClass(b2, c);
      });
    }
    function aa(a) {
      return function(b, c) {
        c.addClass && (Ra(a, b, c.addClass), c.addClass = null);
        c.removeClass && (Sa(a, b, c.removeClass), c.removeClass = null);
      };
    }
    function pa(a) {
      a = a || {};
      if (!a.$$prepared) {
        var b = a.domOperation || N;
        a.domOperation = function() {
          a.$$domOperationFired = true;
          b();
          b = N;
        };
        a.$$prepared = true;
      }
      return a;
    }
    function ha(a, b) {
      Ia(a, b);
      Ja(a, b);
    }
    function Ia(a, b) {
      b.from && (a.css(b.from), b.from = null);
    }
    function Ja(a, b) {
      b.to && (a.css(b.to), b.to = null);
    }
    function T(a, b, c) {
      var d = b.options || {};
      c = c.options || {};
      var f = (d.addClass || "") + " " + (c.addClass || ""), k = (d.removeClass || "") + " " + (c.removeClass || "");
      a = Ta(a.attr("class"), f, k);
      c.preparationClasses && (d.preparationClasses = ba(c.preparationClasses, d.preparationClasses), delete c.preparationClasses);
      f = d.domOperation !== N ? d.domOperation : null;
      wa(d, c);
      f && (d.domOperation = f);
      d.addClass = a.addClass ? a.addClass : null;
      d.removeClass = a.removeClass ? a.removeClass : null;
      b.addClass = d.addClass;
      b.removeClass = d.removeClass;
      return d;
    }
    function Ta(a, b, c) {
      function d(a2) {
        G(a2) && (a2 = a2.split(" "));
        var c2 = {};
        s2(a2, function(a3) {
          a3.length && (c2[a3] = true);
        });
        return c2;
      }
      var f = {};
      a = d(a);
      b = d(b);
      s2(b, function(a2, c2) {
        f[c2] = 1;
      });
      c = d(c);
      s2(c, function(a2, c2) {
        f[c2] = 1 === f[c2] ? null : -1;
      });
      var k = { addClass: "", removeClass: "" };
      s2(f, function(c2, b2) {
        var d2, f2;
        1 === c2 ? (d2 = "addClass", f2 = !a[b2] || a[b2 + "-remove"]) : -1 === c2 && (d2 = "removeClass", f2 = a[b2] || a[b2 + "-add"]);
        f2 && (k[d2].length && (k[d2] += " "), k[d2] += b2);
      });
      return k;
    }
    function K(a) {
      return a instanceof A ? a[0] : a;
    }
    function Ua(a, b, c, d) {
      a = "";
      c && (a = $2(c, "ng-", true));
      d.addClass && (a = ba(a, $2(d.addClass, "-add")));
      d.removeClass && (a = ba(a, $2(d.removeClass, "-remove")));
      a.length && (d.preparationClasses = a, b.addClass(a));
    }
    function xa(a, b) {
      var c = b ? "paused" : "", d = ca + "PlayState";
      ma(a, [d, c]);
      return [d, c];
    }
    function ma(a, b) {
      a.style[b[0]] = b[1];
    }
    function ba(a, b) {
      return a ? b ? a + " " + b : a : b;
    }
    function Ka(a, b, c) {
      var d = /* @__PURE__ */ Object.create(null), f = a.getComputedStyle(b) || {};
      s2(c, function(a2, c2) {
        var b2 = f[a2];
        if (b2) {
          var L = b2.charAt(0);
          if ("-" === L || "+" === L || 0 <= L)
            b2 = Va(b2);
          0 === b2 && (b2 = null);
          d[c2] = b2;
        }
      });
      return d;
    }
    function Va(a) {
      var b = 0;
      a = a.split(/\s*,\s*/);
      s2(a, function(a2) {
        "s" === a2.charAt(a2.length - 1) && (a2 = a2.substring(0, a2.length - 1));
        a2 = parseFloat(a2) || 0;
        b = b ? Math.max(a2, b) : a2;
      });
      return b;
    }
    function ya(a) {
      return 0 === a || null != a;
    }
    function La(a, b) {
      var c = M, d = a + "s";
      b ? c += "Duration" : d += " linear all";
      return [c, d];
    }
    function Ma(a, b, c) {
      s2(
        c,
        function(c2) {
          a[c2] = za(a[c2]) ? a[c2] : b.style.getPropertyValue(c2);
        }
      );
    }
    var M, Aa, ca, Ba;
    void 0 === Y.ontransitionend && void 0 !== Y.onwebkittransitionend ? (M = "WebkitTransition", Aa = "webkitTransitionEnd transitionend") : (M = "transition", Aa = "transitionend");
    void 0 === Y.onanimationend && void 0 !== Y.onwebkitanimationend ? (ca = "WebkitAnimation", Ba = "webkitAnimationEnd animationend") : (ca = "animation", Ba = "animationend");
    var qa = ca + "Delay", Ca = ca + "Duration", na = M + "Delay", Na = M + "Duration", Pa = z.$$minErr("ng"), ra = { blockTransitions: function(a, b) {
      var c = b ? "-" + b + "s" : "";
      ma(a, [na, c]);
      return [na, c];
    } }, Wa = { transitionDuration: Na, transitionDelay: na, transitionProperty: M + "Property", animationDuration: Ca, animationDelay: qa, animationIterationCount: ca + "IterationCount" }, Xa = { transitionDuration: Na, transitionDelay: na, animationDuration: Ca, animationDelay: qa }, Da, wa, s2, Z, za, sa, Ea, ta, G, R, A, N;
    z.module("ngAnimate", [], function() {
      N = z.noop;
      Da = z.copy;
      wa = z.extend;
      A = z.element;
      s2 = z.forEach;
      Z = z.isArray;
      G = z.isString;
      ta = z.isObject;
      R = z.isUndefined;
      za = z.isDefined;
      Ea = z.isFunction;
      sa = z.isElement;
    }).info({ angularVersion: "1.8.2" }).directive("ngAnimateSwap", ["$animate", function(a) {
      return { restrict: "A", transclude: "element", terminal: true, priority: 550, link: function(b, c, d, f, k) {
        var e, Q;
        b.$watchCollection(d.ngAnimateSwap || d["for"], function(b2) {
          e && a.leave(e);
          Q && (Q.$destroy(), Q = null);
          (b2 || 0 === b2) && k(function(b3, d2) {
            e = b3;
            Q = d2;
            a.enter(b3, null, c);
          });
        });
      } };
    }]).directive("ngAnimateChildren", ["$interpolate", function(a) {
      return { link: function(b, c, d) {
        function f(a2) {
          c.data("$$ngAnimateChildren", "on" === a2 || "true" === a2);
        }
        var k = d.ngAnimateChildren;
        G(k) && 0 === k.length ? c.data("$$ngAnimateChildren", true) : (f(a(k)(b)), d.$observe("ngAnimateChildren", f));
      } };
    }]).factory("$$rAFScheduler", ["$$rAF", function(a) {
      function b(a2) {
        d = d.concat(a2);
        c();
      }
      function c() {
        if (d.length) {
          for (var b2 = d.shift(), e = 0; e < b2.length; e++)
            b2[e]();
          f || a(function() {
            f || c();
          });
        }
      }
      var d, f;
      d = b.queue = [];
      b.waitUntilQuiet = function(b2) {
        f && f();
        f = a(function() {
          f = null;
          b2();
          c();
        });
      };
      return b;
    }]).provider("$$animateQueue", ["$animateProvider", function(a) {
      function b(a2) {
        return {
          addClass: a2.addClass,
          removeClass: a2.removeClass,
          from: a2.from,
          to: a2.to
        };
      }
      function c(a2) {
        if (!a2)
          return null;
        a2 = a2.split(" ");
        var b2 = /* @__PURE__ */ Object.create(null);
        s2(a2, function(a3) {
          b2[a3] = true;
        });
        return b2;
      }
      function d(a2, b2) {
        if (a2 && b2) {
          var d2 = c(b2);
          return a2.split(" ").some(function(a3) {
            return d2[a3];
          });
        }
      }
      function f(a2, b2, c2) {
        return e[a2].some(function(a3) {
          return a3(b2, c2);
        });
      }
      function k(a2, b2) {
        var c2 = 0 < (a2.addClass || "").length, d2 = 0 < (a2.removeClass || "").length;
        return b2 ? c2 && d2 : c2 || d2;
      }
      var e = this.rules = { skip: [], cancel: [], join: [] };
      e.join.push(function(a2, b2) {
        return !a2.structural && k(a2);
      });
      e.skip.push(function(a2, b2) {
        return !a2.structural && !k(a2);
      });
      e.skip.push(function(a2, b2) {
        return "leave" === b2.event && a2.structural;
      });
      e.skip.push(function(a2, b2) {
        return b2.structural && 2 === b2.state && !a2.structural;
      });
      e.cancel.push(function(a2, b2) {
        return b2.structural && a2.structural;
      });
      e.cancel.push(function(a2, b2) {
        return 2 === b2.state && a2.structural;
      });
      e.cancel.push(function(a2, b2) {
        if (b2.structural)
          return false;
        var c2 = a2.addClass, f2 = a2.removeClass, k2 = b2.addClass, e2 = b2.removeClass;
        return R(c2) && R(f2) || R(k2) && R(e2) ? false : d(c2, e2) || d(f2, k2);
      });
      this.$get = [
        "$$rAF",
        "$rootScope",
        "$rootElement",
        "$document",
        "$$Map",
        "$$animation",
        "$$AnimateRunner",
        "$templateRequest",
        "$$jqLite",
        "$$forceReflow",
        "$$isDocumentHidden",
        function(c2, d2, e2, C, U, oa, H, u, t, I, da) {
          function ia(a2) {
            O.delete(a2.target);
          }
          function v() {
            var a2 = false;
            return function(b2) {
              a2 ? b2() : d2.$$postDigest(function() {
                a2 = true;
                b2();
              });
            };
          }
          function ua(a2, b2, c3) {
            var g2 = [], l2 = m[c3];
            l2 && s2(l2, function(l3) {
              Oa.call(l3.node, b2) ? g2.push(l3.callback) : "leave" === c3 && Oa.call(l3.node, a2) && g2.push(l3.callback);
            });
            return g2;
          }
          function h2(a2, b2, c3) {
            var l2 = va(b2);
            return a2.filter(function(a3) {
              return !(a3.node === l2 && (!c3 || a3.callback === c3));
            });
          }
          function q(a2, J, w2) {
            function e3(a3, b2, l2, g2) {
              u2(function() {
                var a4 = ua(ia2, m2, b2);
                a4.length ? c2(function() {
                  s2(a4, function(a5) {
                    a5(h3, l2, g2);
                  });
                  "close" !== l2 || m2.parentNode || D.off(m2);
                }) : "close" !== l2 || m2.parentNode || D.off(m2);
              });
              a3.progress(b2, l2, g2);
            }
            function I2(a3) {
              var b2 = h3, c3 = n2;
              c3.preparationClasses && (b2.removeClass(c3.preparationClasses), c3.preparationClasses = null);
              c3.activeClasses && (b2.removeClass(c3.activeClasses), c3.activeClasses = null);
              W(h3, n2);
              ha(h3, n2);
              n2.domOperation();
              q2.complete(!a3);
            }
            var n2 = Da(w2), h3 = Ha(a2), m2 = K(h3), ia2 = m2 && m2.parentNode, n2 = pa(n2), q2 = new H(), u2 = v();
            Z(n2.addClass) && (n2.addClass = n2.addClass.join(" "));
            n2.addClass && !G(n2.addClass) && (n2.addClass = null);
            Z(n2.removeClass) && (n2.removeClass = n2.removeClass.join(" "));
            n2.removeClass && !G(n2.removeClass) && (n2.removeClass = null);
            n2.from && !ta(n2.from) && (n2.from = null);
            n2.to && !ta(n2.to) && (n2.to = null);
            if (!(B && m2 && fa(m2, J, w2) && Ya(m2, n2)))
              return I2(), q2;
            var x = 0 <= ["enter", "move", "leave"].indexOf(J), r = da(), P2 = r || O.get(m2);
            w2 = !P2 && y.get(m2) || {};
            var p = !!w2.state;
            P2 || p && 1 === w2.state || (P2 = !E(m2, ia2, J));
            if (P2)
              return r && e3(q2, J, "start", b(n2)), I2(), r && e3(q2, J, "close", b(n2)), q2;
            x && F(m2);
            r = { structural: x, element: h3, event: J, addClass: n2.addClass, removeClass: n2.removeClass, close: I2, options: n2, runner: q2 };
            if (p) {
              if (f("skip", r, w2)) {
                if (2 === w2.state)
                  return I2(), q2;
                T(h3, w2, r);
                return w2.runner;
              }
              if (f("cancel", r, w2))
                if (2 === w2.state)
                  w2.runner.end();
                else if (w2.structural)
                  w2.close();
                else
                  return T(h3, w2, r), w2.runner;
              else if (f("join", r, w2))
                if (2 === w2.state)
                  T(h3, r, {});
                else
                  return Ua(t, h3, x ? J : null, n2), J = r.event = w2.event, n2 = T(h3, w2, r), w2.runner;
            } else
              T(h3, r, {});
            (p = r.structural) || (p = "animate" === r.event && 0 < Object.keys(r.options.to || {}).length || k(r));
            if (!p)
              return I2(), g(m2), q2;
            var C2 = (w2.counter || 0) + 1;
            r.counter = C2;
            l(m2, 1, r);
            d2.$$postDigest(function() {
              h3 = Ha(a2);
              var c3 = y.get(m2), d3 = !c3, c3 = c3 || {}, t2 = 0 < (h3.parent() || []).length && ("animate" === c3.event || c3.structural || k(c3));
              if (d3 || c3.counter !== C2 || !t2) {
                d3 && (W(h3, n2), ha(h3, n2));
                if (d3 || x && c3.event !== J)
                  n2.domOperation(), q2.end();
                t2 || g(m2);
              } else
                J = !c3.structural && k(c3, true) ? "setClass" : c3.event, l(m2, 2), c3 = oa(h3, J, c3.options), q2.setHost(c3), e3(q2, J, "start", b(n2)), c3.done(function(a3) {
                  I2(!a3);
                  (a3 = y.get(m2)) && a3.counter === C2 && g(m2);
                  e3(q2, J, "close", b(n2));
                });
            });
            return q2;
          }
          function F(a2) {
            a2 = a2.querySelectorAll("[data-ng-animate]");
            s2(a2, function(a3) {
              var b2 = parseInt(a3.getAttribute("data-ng-animate"), 10), c3 = y.get(a3);
              if (c3)
                switch (b2) {
                  case 2:
                    c3.runner.end();
                  case 1:
                    y.delete(a3);
                }
            });
          }
          function g(a2) {
            a2.removeAttribute("data-ng-animate");
            y.delete(a2);
          }
          function E(a2, b2, c3) {
            c3 = C[0].body;
            var l2 = K(e2), g2 = a2 === c3 || "HTML" === a2.nodeName, d3 = a2 === l2, t2 = false, m2 = O.get(a2), h3;
            for ((a2 = A.data(a2, "$ngAnimatePin")) && (b2 = K(a2)); b2; ) {
              d3 || (d3 = b2 === l2);
              if (1 !== b2.nodeType)
                break;
              a2 = y.get(b2) || {};
              if (!t2) {
                var f2 = O.get(b2);
                if (true === f2 && false !== m2) {
                  m2 = true;
                  break;
                } else
                  false === f2 && (m2 = false);
                t2 = a2.structural;
              }
              if (R(h3) || true === h3)
                a2 = A.data(b2, "$$ngAnimateChildren"), za(a2) && (h3 = a2);
              if (t2 && false === h3)
                break;
              g2 || (g2 = b2 === c3);
              if (g2 && d3)
                break;
              if (!d3 && (a2 = A.data(b2, "$ngAnimatePin"))) {
                b2 = K(a2);
                continue;
              }
              b2 = b2.parentNode;
            }
            return (!t2 || h3) && true !== m2 && d3 && g2;
          }
          function l(a2, b2, c3) {
            c3 = c3 || {};
            c3.state = b2;
            a2.setAttribute("data-ng-animate", b2);
            c3 = (b2 = y.get(a2)) ? wa(b2, c3) : c3;
            y.set(a2, c3);
          }
          var y = new U(), O = new U(), B = null, P = d2.$watch(function() {
            return 0 === u.totalPendingRequests;
          }, function(a2) {
            a2 && (P(), d2.$$postDigest(function() {
              d2.$$postDigest(function() {
                null === B && (B = true);
              });
            }));
          }), m = /* @__PURE__ */ Object.create(null);
          U = a.customFilter();
          var la = a.classNameFilter();
          I = function() {
            return true;
          };
          var fa = U || I, Ya = la ? function(a2, b2) {
            var c3 = [a2.getAttribute("class"), b2.addClass, b2.removeClass].join(" ");
            return la.test(c3);
          } : I, W = aa(t), Oa = Y.Node.prototype.contains || function(a2) {
            return this === a2 || !!(this.compareDocumentPosition(a2) & 16);
          }, D = { on: function(a2, b2, c3) {
            var l2 = va(b2);
            m[a2] = m[a2] || [];
            m[a2].push({ node: l2, callback: c3 });
            A(b2).on("$destroy", function() {
              y.get(l2) || D.off(a2, b2, c3);
            });
          }, off: function(a2, b2, c3) {
            if (1 !== arguments.length || G(arguments[0])) {
              var l2 = m[a2];
              l2 && (m[a2] = 1 === arguments.length ? null : h2(l2, b2, c3));
            } else
              for (l2 in b2 = arguments[0], m)
                m[l2] = h2(m[l2], b2);
          }, pin: function(a2, b2) {
            Fa(sa(a2), "element", "not an element");
            Fa(sa(b2), "parentElement", "not an element");
            a2.data("$ngAnimatePin", b2);
          }, push: function(a2, b2, c3, l2) {
            c3 = c3 || {};
            c3.domOperation = l2;
            return q(a2, b2, c3);
          }, enabled: function(a2, b2) {
            var c3 = arguments.length;
            if (0 === c3)
              b2 = !!B;
            else if (sa(a2)) {
              var l2 = K(a2);
              if (1 === c3)
                b2 = !O.get(l2);
              else {
                if (!O.has(l2))
                  A(a2).on(
                    "$destroy",
                    ia
                  );
                O.set(l2, !b2);
              }
            } else
              b2 = B = !!a2;
            return b2;
          } };
          return D;
        }
      ];
    }]).provider("$$animateCache", function() {
      var a = 0, b = /* @__PURE__ */ Object.create(null);
      this.$get = [function() {
        return { cacheKey: function(b2, d, f, k) {
          var e = b2.parentNode;
          b2 = [e.$$ngAnimateParentKey || (e.$$ngAnimateParentKey = ++a), d, b2.getAttribute("class")];
          f && b2.push(f);
          k && b2.push(k);
          return b2.join(" ");
        }, containsCachedAnimationWithoutDuration: function(a2) {
          return (a2 = b[a2]) && !a2.isValid || false;
        }, flush: function() {
          b = /* @__PURE__ */ Object.create(null);
        }, count: function(a2) {
          return (a2 = b[a2]) ? a2.total : 0;
        }, get: function(a2) {
          return (a2 = b[a2]) && a2.value;
        }, put: function(a2, d, f) {
          b[a2] ? (b[a2].total++, b[a2].value = d) : b[a2] = { total: 1, value: d, isValid: f };
        } };
      }];
    }).provider("$$animation", ["$animateProvider", function(a) {
      var b = this.drivers = [];
      this.$get = ["$$jqLite", "$rootScope", "$injector", "$$AnimateRunner", "$$Map", "$$rAFScheduler", "$$animateCache", function(a2, d, f, k, e, Q, L) {
        function x(a3) {
          function b2(a4) {
            if (a4.processed)
              return a4;
            a4.processed = true;
            var d3 = a4.domNode, t = d3.parentNode;
            f2.set(d3, a4);
            for (var h2; t; ) {
              if (h2 = f2.get(t)) {
                h2.processed || (h2 = b2(h2));
                break;
              }
              t = t.parentNode;
            }
            (h2 || c).children.push(a4);
            return a4;
          }
          var c = { children: [] }, d2, f2 = new e();
          for (d2 = 0; d2 < a3.length; d2++) {
            var da = a3[d2];
            f2.set(da.domNode, a3[d2] = { domNode: da.domNode, element: da.element, fn: da.fn, children: [] });
          }
          for (d2 = 0; d2 < a3.length; d2++)
            b2(a3[d2]);
          return function(a4) {
            var b3 = [], c2 = [], d3;
            for (d3 = 0; d3 < a4.children.length; d3++)
              c2.push(a4.children[d3]);
            a4 = c2.length;
            var t = 0, f3 = [];
            for (d3 = 0; d3 < c2.length; d3++) {
              var g = c2[d3];
              0 >= a4 && (a4 = t, t = 0, b3.push(f3), f3 = []);
              f3.push(g);
              g.children.forEach(function(a5) {
                t++;
                c2.push(a5);
              });
              a4--;
            }
            f3.length && b3.push(f3);
            return b3;
          }(c);
        }
        var C = [], U = aa(a2);
        return function(e2, H, u) {
          function t(a3) {
            a3 = a3.hasAttribute("ng-animate-ref") ? [a3] : a3.querySelectorAll("[ng-animate-ref]");
            var b2 = [];
            s2(a3, function(a4) {
              var c = a4.getAttribute("ng-animate-ref");
              c && c.length && b2.push(a4);
            });
            return b2;
          }
          function I(a3) {
            var b2 = [], c = {};
            s2(a3, function(a4, d3) {
              var l = K(a4.element), g3 = 0 <= ["enter", "move"].indexOf(a4.event), l = a4.structural ? t(l) : [];
              if (l.length) {
                var f2 = g3 ? "to" : "from";
                s2(l, function(a5) {
                  var b3 = a5.getAttribute("ng-animate-ref");
                  c[b3] = c[b3] || {};
                  c[b3][f2] = { animationID: d3, element: A(a5) };
                });
              } else
                b2.push(a4);
            });
            var d2 = {}, g2 = {};
            s2(c, function(c2, t2) {
              var f2 = c2.from, e3 = c2.to;
              if (f2 && e3) {
                var h3 = a3[f2.animationID], k2 = a3[e3.animationID], E2 = f2.animationID.toString();
                if (!g2[E2]) {
                  var I2 = g2[E2] = { structural: true, beforeStart: function() {
                    h3.beforeStart();
                    k2.beforeStart();
                  }, close: function() {
                    h3.close();
                    k2.close();
                  }, classes: da(h3.classes, k2.classes), from: h3, to: k2, anchors: [] };
                  I2.classes.length ? b2.push(I2) : (b2.push(h3), b2.push(k2));
                }
                g2[E2].anchors.push({ out: f2.element, "in": e3.element });
              } else
                f2 = f2 ? f2.animationID : e3.animationID, e3 = f2.toString(), d2[e3] || (d2[e3] = true, b2.push(a3[f2]));
            });
            return b2;
          }
          function da(a3, b2) {
            a3 = a3.split(" ");
            b2 = b2.split(" ");
            for (var c = [], d2 = 0; d2 < a3.length; d2++) {
              var g2 = a3[d2];
              if ("ng-" !== g2.substring(0, 3)) {
                for (var t2 = 0; t2 < b2.length; t2++)
                  if (g2 === b2[t2]) {
                    c.push(g2);
                    break;
                  }
              }
            }
            return c.join(" ");
          }
          function ia(a3) {
            for (var c = b.length - 1; 0 <= c; c--) {
              var d2 = f.get(b[c])(a3);
              if (d2)
                return d2;
            }
          }
          function v(a3, b2) {
            function c(a4) {
              (a4 = a4.data("$$animationRunner")) && a4.setHost(b2);
            }
            a3.from && a3.to ? (c(a3.from.element), c(a3.to.element)) : c(a3.element);
          }
          function ua() {
            var a3 = e2.data("$$animationRunner");
            !a3 || "leave" === H && u.$$domOperationFired || a3.end();
          }
          function h2(b2) {
            e2.off(
              "$destroy",
              ua
            );
            e2.removeData("$$animationRunner");
            U(e2, u);
            ha(e2, u);
            u.domOperation();
            E && a2.removeClass(e2, E);
            F.complete(!b2);
          }
          u = pa(u);
          var q = 0 <= ["enter", "move", "leave"].indexOf(H), F = new k({ end: function() {
            h2();
          }, cancel: function() {
            h2(true);
          } });
          if (!b.length)
            return h2(), F;
          var g = Ga(e2.attr("class"), Ga(u.addClass, u.removeClass)), E = u.tempClasses;
          E && (g += " " + E, u.tempClasses = null);
          q && e2.data("$$animatePrepareClasses", "ng-" + H + "-prepare");
          e2.data("$$animationRunner", F);
          C.push({ element: e2, classes: g, event: H, structural: q, options: u, beforeStart: function() {
            E = (E ? E + " " : "") + "ng-animate";
            a2.addClass(e2, E);
            var b2 = e2.data("$$animatePrepareClasses");
            b2 && a2.removeClass(e2, b2);
          }, close: h2 });
          e2.on("$destroy", ua);
          if (1 < C.length)
            return F;
          d.$$postDigest(function() {
            var b2 = [];
            s2(C, function(a3) {
              a3.element.data("$$animationRunner") ? b2.push(a3) : a3.close();
            });
            C.length = 0;
            var d2 = I(b2), g2 = [];
            s2(d2, function(a3) {
              var b3 = a3.from ? a3.from.element : a3.element, c = u.addClass, d3 = L.cacheKey(b3[0], a3.event, (c ? c + " " : "") + "ng-animate", u.removeClass);
              g2.push({ element: b3, domNode: K(b3), fn: function() {
                var b4, c2 = a3.close;
                if (L.containsCachedAnimationWithoutDuration(d3))
                  c2();
                else {
                  a3.beforeStart();
                  if ((a3.anchors ? a3.from.element || a3.to.element : a3.element).data("$$animationRunner")) {
                    var g3 = ia(a3);
                    g3 && (b4 = g3.start);
                  }
                  b4 ? (b4 = b4(), b4.done(function(a4) {
                    c2(!a4);
                  }), v(a3, b4)) : c2();
                }
              } });
            });
            for (var d2 = x(g2), t2 = 0; t2 < d2.length; t2++)
              for (var f2 = d2[t2], e3 = 0; e3 < f2.length; e3++) {
                var h3 = f2[e3], k2 = h3.element;
                d2[t2][e3] = h3.fn;
                0 === t2 ? k2.removeData("$$animatePrepareClasses") : (h3 = k2.data("$$animatePrepareClasses")) && a2.addClass(k2, h3);
              }
            Q(d2);
          });
          return F;
        };
      }];
    }]).provider("$animateCss", ["$animateProvider", function(a) {
      this.$get = [
        "$window",
        "$$jqLite",
        "$$AnimateRunner",
        "$timeout",
        "$$animateCache",
        "$$forceReflow",
        "$sniffer",
        "$$rAFScheduler",
        "$$animateQueue",
        function(a2, c, d, f, k, e, Q, L, x) {
          function C(d2, f2, e2, x2) {
            var v, s3 = "stagger-" + e2;
            0 < k.count(e2) && (v = k.get(s3), v || (f2 = $2(f2, "-stagger"), c.addClass(d2, f2), v = Ka(a2, d2, x2), v.animationDuration = Math.max(v.animationDuration, 0), v.transitionDuration = Math.max(v.transitionDuration, 0), c.removeClass(d2, f2), k.put(s3, v, true)));
            return v || {};
          }
          function U(a3) {
            u.push(a3);
            L.waitUntilQuiet(function() {
              k.flush();
              for (var a4 = e(), b = 0; b < u.length; b++)
                u[b](a4);
              u.length = 0;
            });
          }
          function z2(c2, d2, f2, e2) {
            d2 = k.get(f2);
            d2 || (d2 = Ka(a2, c2, Wa), "infinite" === d2.animationIterationCount && (d2.animationIterationCount = 1));
            k.put(f2, d2, e2 || 0 < d2.transitionDuration || 0 < d2.animationDuration);
            c2 = d2;
            f2 = c2.animationDelay;
            e2 = c2.transitionDelay;
            c2.maxDelay = f2 && e2 ? Math.max(f2, e2) : f2 || e2;
            c2.maxDuration = Math.max(c2.animationDuration * c2.animationIterationCount, c2.transitionDuration);
            return c2;
          }
          var H = aa(c), u = [];
          return function(a3, b) {
            function e2() {
              v();
            }
            function L2() {
              v(true);
            }
            function v(b2) {
              if (!(P || la && m)) {
                P = true;
                m = false;
                V && !g.$$skipPreparationClasses && c.removeClass(a3, V);
                ba2 && c.removeClass(a3, ba2);
                xa(l, false);
                ra.blockTransitions(l, false);
                s2(y, function(a4) {
                  l.style[a4[0]] = "";
                });
                H(a3, g);
                ha(a3, g);
                Object.keys(E).length && s2(E, function(a4, b3) {
                  a4 ? l.style.setProperty(b3, a4) : l.style.removeProperty(b3);
                });
                if (g.onDone)
                  g.onDone();
                w2 && w2.length && a3.off(w2.join(" "), q);
                var d2 = a3.data("$$animateCss");
                d2 && (f.cancel(d2[0].timer), a3.removeData("$$animateCss"));
                fa && fa.complete(!b2);
              }
            }
            function u2(a4) {
              p.blockTransition && ra.blockTransitions(l, a4);
              p.blockKeyframeAnimation && xa(l, !!a4);
            }
            function h2() {
              fa = new d({
                end: e2,
                cancel: L2
              });
              U(N);
              v();
              return { $$willAnimate: false, start: function() {
                return fa;
              }, end: e2 };
            }
            function q(a4) {
              a4.stopPropagation();
              var b2 = a4.originalEvent || a4;
              b2.target === l && (a4 = b2.$manualTimeStamp || Date.now(), b2 = parseFloat(b2.elapsedTime.toFixed(3)), Math.max(a4 - J, 0) >= G2 && b2 >= D && (la = true, v()));
            }
            function F() {
              function b2() {
                if (!P) {
                  u2(false);
                  s2(y, function(a4) {
                    l.style[a4[0]] = a4[1];
                  });
                  H(a3, g);
                  c.addClass(a3, ba2);
                  if (p.recalculateTimingStyles) {
                    T2 = l.getAttribute("class") + " " + V;
                    ka = k.cacheKey(l, ja, g.addClass, g.removeClass);
                    r = z2(l, T2, ka, false);
                    ga = r.maxDelay;
                    W = Math.max(ga, 0);
                    D = r.maxDuration;
                    if (0 === D) {
                      v();
                      return;
                    }
                    p.hasTransitions = 0 < r.transitionDuration;
                    p.hasAnimations = 0 < r.animationDuration;
                  }
                  p.applyAnimationDelay && (ga = "boolean" !== typeof g.delay && ya(g.delay) ? parseFloat(g.delay) : ga, W = Math.max(ga, 0), r.animationDelay = ga, ea = [qa, ga + "s"], y.push(ea), l.style[ea[0]] = ea[1]);
                  G2 = 1e3 * W;
                  R2 = 1e3 * D;
                  if (g.easing) {
                    var e4, h4 = g.easing;
                    p.hasTransitions && (e4 = M + "TimingFunction", y.push([e4, h4]), l.style[e4] = h4);
                    p.hasAnimations && (e4 = ca + "TimingFunction", y.push([e4, h4]), l.style[e4] = h4);
                  }
                  r.transitionDuration && w2.push(Aa);
                  r.animationDuration && w2.push(Ba);
                  J = Date.now();
                  var m2 = G2 + 1.5 * R2;
                  e4 = J + m2;
                  var h4 = a3.data("$$animateCss") || [], F2 = true;
                  if (h4.length) {
                    var n3 = h4[0];
                    (F2 = e4 > n3.expectedEndTime) ? f.cancel(n3.timer) : h4.push(v);
                  }
                  F2 && (m2 = f(d2, m2, false), h4[0] = { timer: m2, expectedEndTime: e4 }, h4.push(v), a3.data("$$animateCss", h4));
                  if (w2.length)
                    a3.on(w2.join(" "), q);
                  g.to && (g.cleanupStyles && Ma(E, l, Object.keys(g.to)), Ja(a3, g));
                }
              }
              function d2() {
                var b3 = a3.data("$$animateCss");
                if (b3) {
                  for (var c2 = 1; c2 < b3.length; c2++)
                    b3[c2]();
                  a3.removeData("$$animateCss");
                }
              }
              if (!P)
                if (l.parentNode) {
                  var e3 = function(a4) {
                    if (la)
                      m && a4 && (m = false, v());
                    else if (m = !a4, r.animationDuration)
                      if (a4 = xa(l, m), m)
                        y.push(a4);
                      else {
                        var b3 = y, c2 = b3.indexOf(a4);
                        0 <= a4 && b3.splice(c2, 1);
                      }
                  }, h3 = 0 < aa2 && (r.transitionDuration && 0 === X.transitionDuration || r.animationDuration && 0 === X.animationDuration) && Math.max(X.animationDelay, X.transitionDelay);
                  h3 ? f(b2, Math.floor(h3 * aa2 * 1e3), false) : b2();
                  A2.resume = function() {
                    e3(true);
                  };
                  A2.pause = function() {
                    e3(false);
                  };
                } else
                  v();
            }
            var g = b || {};
            g.$$prepared || (g = pa(Da(g)));
            var E = {}, l = K(a3);
            if (!l || !l.parentNode || !x.enabled())
              return h2();
            var y = [], O = a3.attr("class"), B = Qa(g), P, m, la, fa, A2, W, G2, D, R2, J, w2 = [];
            if (0 === g.duration || !Q.animations && !Q.transitions)
              return h2();
            var ja = g.event && Z(g.event) ? g.event.join(" ") : g.event, Y2 = ja && g.structural, n2 = "", S = "";
            Y2 ? n2 = $2(ja, "ng-", true) : ja && (n2 = ja);
            g.addClass && (S += $2(g.addClass, "-add"));
            g.removeClass && (S.length && (S += " "), S += $2(g.removeClass, "-remove"));
            g.applyClassesEarly && S.length && H(a3, g);
            var V = [n2, S].join(" ").trim(), T2 = O + " " + V, O = B.to && 0 < Object.keys(B.to).length;
            if (!(0 < (g.keyframeStyle || "").length || O || V))
              return h2();
            var X, ka = k.cacheKey(l, ja, g.addClass, g.removeClass);
            if (k.containsCachedAnimationWithoutDuration(ka))
              return V = null, h2();
            0 < g.stagger ? (B = parseFloat(g.stagger), X = { transitionDelay: B, animationDelay: B, transitionDuration: 0, animationDuration: 0 }) : X = C(l, V, ka, Xa);
            g.$$skipPreparationClasses || c.addClass(a3, V);
            g.transitionStyle && (B = [M, g.transitionStyle], ma(l, B), y.push(B));
            0 <= g.duration && (B = 0 < l.style[M].length, B = La(g.duration, B), ma(l, B), y.push(B));
            g.keyframeStyle && (B = [ca, g.keyframeStyle], ma(l, B), y.push(B));
            var aa2 = X ? 0 <= g.staggerIndex ? g.staggerIndex : k.count(ka) : 0;
            (n2 = 0 === aa2) && !g.skipBlocking && ra.blockTransitions(l, 9999);
            var r = z2(l, T2, ka, !Y2), ga = r.maxDelay;
            W = Math.max(ga, 0);
            D = r.maxDuration;
            var p = {};
            p.hasTransitions = 0 < r.transitionDuration;
            p.hasAnimations = 0 < r.animationDuration;
            p.hasTransitionAll = p.hasTransitions && "all" === r.transitionProperty;
            p.applyTransitionDuration = O && (p.hasTransitions && !p.hasTransitionAll || p.hasAnimations && !p.hasTransitions);
            p.applyAnimationDuration = g.duration && p.hasAnimations;
            p.applyTransitionDelay = ya(g.delay) && (p.applyTransitionDuration || p.hasTransitions);
            p.applyAnimationDelay = ya(g.delay) && p.hasAnimations;
            p.recalculateTimingStyles = 0 < S.length;
            if (p.applyTransitionDuration || p.applyAnimationDuration)
              D = g.duration ? parseFloat(g.duration) : D, p.applyTransitionDuration && (p.hasTransitions = true, r.transitionDuration = D, B = 0 < l.style[M + "Property"].length, y.push(La(D, B))), p.applyAnimationDuration && (p.hasAnimations = true, r.animationDuration = D, y.push([Ca, D + "s"]));
            if (0 === D && !p.recalculateTimingStyles)
              return h2();
            var ba2 = $2(V, "-active");
            if (null != g.delay) {
              var ea;
              "boolean" !== typeof g.delay && (ea = parseFloat(g.delay), W = Math.max(ea, 0));
              p.applyTransitionDelay && y.push([na, ea + "s"]);
              p.applyAnimationDelay && y.push([qa, ea + "s"]);
            }
            null == g.duration && 0 < r.transitionDuration && (p.recalculateTimingStyles = p.recalculateTimingStyles || n2);
            G2 = 1e3 * W;
            R2 = 1e3 * D;
            g.skipBlocking || (p.blockTransition = 0 < r.transitionDuration, p.blockKeyframeAnimation = 0 < r.animationDuration && 0 < X.animationDelay && 0 === X.animationDuration);
            g.from && (g.cleanupStyles && Ma(E, l, Object.keys(g.from)), Ia(a3, g));
            p.blockTransition || p.blockKeyframeAnimation ? u2(D) : g.skipBlocking || ra.blockTransitions(l, false);
            return { $$willAnimate: true, end: e2, start: function() {
              if (!P)
                return A2 = { end: e2, cancel: L2, resume: null, pause: null }, fa = new d(A2), U(F), fa;
            } };
          };
        }
      ];
    }]).provider("$$animateCssDriver", ["$$animationProvider", function(a) {
      a.drivers.push("$$animateCssDriver");
      this.$get = ["$animateCss", "$rootScope", "$$AnimateRunner", "$rootElement", "$sniffer", "$$jqLite", "$document", function(a2, c, d, f, k, e, Q) {
        function L(a3) {
          return a3.replace(/\bng-\S+\b/g, "");
        }
        function x(a3, b) {
          G(a3) && (a3 = a3.split(" "));
          G(b) && (b = b.split(" "));
          return a3.filter(function(a4) {
            return -1 === b.indexOf(a4);
          }).join(" ");
        }
        function C(c2, e2, f2) {
          function k2(a3) {
            var b = {}, c3 = K(a3).getBoundingClientRect();
            s2(["width", "height", "top", "left"], function(a4) {
              var d2 = c3[a4];
              switch (a4) {
                case "top":
                  d2 += H.scrollTop;
                  break;
                case "left":
                  d2 += H.scrollLeft;
              }
              b[a4] = Math.floor(d2) + "px";
            });
            return b;
          }
          function v() {
            var c3 = L(f2.attr("class") || ""), d2 = x(c3, q), c3 = x(q, c3), d2 = a2(h2, { to: k2(f2), addClass: "ng-anchor-in " + d2, removeClass: "ng-anchor-out " + c3, delay: true });
            return d2.$$willAnimate ? d2 : null;
          }
          function C2() {
            h2.remove();
            e2.removeClass("ng-animate-shim");
            f2.removeClass("ng-animate-shim");
          }
          var h2 = A(K(e2).cloneNode(true)), q = L(h2.attr("class") || "");
          e2.addClass("ng-animate-shim");
          f2.addClass("ng-animate-shim");
          h2.addClass("ng-anchor");
          u.append(h2);
          var F;
          c2 = function() {
            var c3 = a2(h2, { addClass: "ng-anchor-out", delay: true, from: k2(e2) });
            return c3.$$willAnimate ? c3 : null;
          }();
          if (!c2 && (F = v(), !F))
            return C2();
          var g = c2 || F;
          return { start: function() {
            function a3() {
              c3 && c3.end();
            }
            var b, c3 = g.start();
            c3.done(function() {
              c3 = null;
              if (!F && (F = v()))
                return c3 = F.start(), c3.done(function() {
                  c3 = null;
                  C2();
                  b.complete();
                }), c3;
              C2();
              b.complete();
            });
            return b = new d({ end: a3, cancel: a3 });
          } };
        }
        function z2(a3, b, c2, e2) {
          var f2 = oa(a3, N), k2 = oa(b, N), h2 = [];
          s2(e2, function(a4) {
            (a4 = C(c2, a4.out, a4["in"])) && h2.push(a4);
          });
          if (f2 || k2 || 0 !== h2.length)
            return { start: function() {
              function a4() {
                s2(b2, function(a5) {
                  a5.end();
                });
              }
              var b2 = [];
              f2 && b2.push(f2.start());
              k2 && b2.push(k2.start());
              s2(h2, function(a5) {
                b2.push(a5.start());
              });
              var c3 = new d({ end: a4, cancel: a4 });
              d.all(b2, function(a5) {
                c3.complete(a5);
              });
              return c3;
            } };
        }
        function oa(c2) {
          var d2 = c2.element, e2 = c2.options || {};
          c2.structural && (e2.event = c2.event, e2.structural = true, e2.applyClassesEarly = true, "leave" === c2.event && (e2.onDone = e2.domOperation));
          e2.preparationClasses && (e2.event = ba(e2.event, e2.preparationClasses));
          c2 = a2(d2, e2);
          return c2.$$willAnimate ? c2 : null;
        }
        if (!k.animations && !k.transitions)
          return N;
        var H = Q[0].body;
        c = K(f);
        var u = A(c.parentNode && 11 === c.parentNode.nodeType || H.contains(c) ? c : H);
        return function(a3) {
          return a3.from && a3.to ? z2(a3.from, a3.to, a3.classes, a3.anchors) : oa(a3);
        };
      }];
    }]).provider("$$animateJs", ["$animateProvider", function(a) {
      this.$get = ["$injector", "$$AnimateRunner", "$$jqLite", function(b, c, d) {
        function f(c2) {
          c2 = Z(c2) ? c2 : c2.split(" ");
          for (var d2 = [], f2 = {}, k2 = 0; k2 < c2.length; k2++) {
            var s3 = c2[k2], z2 = a.$$registeredAnimations[s3];
            z2 && !f2[s3] && (d2.push(b.get(z2)), f2[s3] = true);
          }
          return d2;
        }
        var k = aa(d);
        return function(a2, b2, d2, x) {
          function C() {
            x.domOperation();
            k(a2, x);
          }
          function z2(a3, b3, d3, f2, e) {
            switch (d3) {
              case "animate":
                b3 = [b3, f2.from, f2.to, e];
                break;
              case "setClass":
                b3 = [b3, t, I, e];
                break;
              case "addClass":
                b3 = [b3, t, e];
                break;
              case "removeClass":
                b3 = [b3, I, e];
                break;
              default:
                b3 = [b3, e];
            }
            b3.push(f2);
            if (a3 = a3.apply(
              a3,
              b3
            )) {
              if (Ea(a3.start) && (a3 = a3.start()), a3 instanceof c)
                a3.done(e);
              else if (Ea(a3))
                return a3;
            }
            return N;
          }
          function A2(a3, b3, d3, e, f2) {
            var h3 = [];
            s2(e, function(e2) {
              var l = e2[f2];
              l && h3.push(function() {
                var e3, f3, h4 = false, k2 = function(a4) {
                  h4 || (h4 = true, (f3 || N)(a4), e3.complete(!a4));
                };
                e3 = new c({ end: function() {
                  k2();
                }, cancel: function() {
                  k2(true);
                } });
                f3 = z2(l, a3, b3, d3, function(a4) {
                  k2(false === a4);
                });
                return e3;
              });
            });
            return h3;
          }
          function H(a3, b3, d3, e, f2) {
            var h3 = A2(a3, b3, d3, e, f2);
            if (0 === h3.length) {
              var k2, q2;
              "beforeSetClass" === f2 ? (k2 = A2(a3, "removeClass", d3, e, "beforeRemoveClass"), q2 = A2(a3, "addClass", d3, e, "beforeAddClass")) : "setClass" === f2 && (k2 = A2(a3, "removeClass", d3, e, "removeClass"), q2 = A2(a3, "addClass", d3, e, "addClass"));
              k2 && (h3 = h3.concat(k2));
              q2 && (h3 = h3.concat(q2));
            }
            if (0 !== h3.length)
              return function(a4) {
                var b4 = [];
                h3.length && s2(h3, function(a5) {
                  b4.push(a5());
                });
                b4.length ? c.all(b4, a4) : a4();
                return function(a5) {
                  s2(b4, function(b5) {
                    a5 ? b5.cancel() : b5.end();
                  });
                };
              };
          }
          var u = false;
          3 === arguments.length && ta(d2) && (x = d2, d2 = null);
          x = pa(x);
          d2 || (d2 = a2.attr("class") || "", x.addClass && (d2 += " " + x.addClass), x.removeClass && (d2 += " " + x.removeClass));
          var t = x.addClass, I = x.removeClass, G2 = f(d2), K2, v;
          if (G2.length) {
            var M2, h2;
            "leave" === b2 ? (h2 = "leave", M2 = "afterLeave") : (h2 = "before" + b2.charAt(0).toUpperCase() + b2.substr(1), M2 = b2);
            "enter" !== b2 && "move" !== b2 && (K2 = H(a2, b2, x, G2, h2));
            v = H(a2, b2, x, G2, M2);
          }
          if (K2 || v) {
            var q;
            return { $$willAnimate: true, end: function() {
              q ? q.end() : (u = true, C(), ha(a2, x), q = new c(), q.complete(true));
              return q;
            }, start: function() {
              function b3(c2) {
                u = true;
                C();
                ha(a2, x);
                q.complete(c2);
              }
              if (q)
                return q;
              q = new c();
              var d3, f2 = [];
              K2 && f2.push(function(a3) {
                d3 = K2(a3);
              });
              f2.length ? f2.push(function(a3) {
                C();
                a3(true);
              }) : C();
              v && f2.push(function(a3) {
                d3 = v(a3);
              });
              q.setHost({ end: function() {
                u || ((d3 || N)(void 0), b3(void 0));
              }, cancel: function() {
                u || ((d3 || N)(true), b3(true));
              } });
              c.chain(f2, b3);
              return q;
            } };
          }
        };
      }];
    }]).provider("$$animateJsDriver", ["$$animationProvider", function(a) {
      a.drivers.push("$$animateJsDriver");
      this.$get = ["$$animateJs", "$$AnimateRunner", function(a2, c) {
        function d(c2) {
          return a2(c2.element, c2.event, c2.classes, c2.options);
        }
        return function(a3) {
          if (a3.from && a3.to) {
            var b = d(a3.from), e = d(a3.to);
            if (b || e)
              return { start: function() {
                function a4() {
                  return function() {
                    s2(d2, function(a5) {
                      a5.end();
                    });
                  };
                }
                var d2 = [];
                b && d2.push(b.start());
                e && d2.push(e.start());
                c.all(d2, function(a5) {
                  f.complete(a5);
                });
                var f = new c({ end: a4(), cancel: a4() });
                return f;
              } };
          } else
            return d(a3);
        };
      }];
    }]);
  })(window, window.angular);

  // dep-runtime/node_modules/angular-cookies/angular-cookies.min.js
  (function(n2, e) {
    "use strict";
    function m(d, k, l) {
      var a = l.baseHref(), h2 = d[0];
      return function(f, b, c) {
        var d2, g;
        c = c || {};
        g = c.expires;
        d2 = e.isDefined(c.path) ? c.path : a;
        e.isUndefined(b) && (g = "Thu, 01 Jan 1970 00:00:00 GMT", b = "");
        e.isString(g) && (g = new Date(g));
        b = encodeURIComponent(f) + "=" + encodeURIComponent(b);
        b = b + (d2 ? ";path=" + d2 : "") + (c.domain ? ";domain=" + c.domain : "");
        b += g ? ";expires=" + g.toUTCString() : "";
        b += c.secure ? ";secure" : "";
        b += c.samesite ? ";samesite=" + c.samesite : "";
        c = b.length + 1;
        4096 < c && k.warn("Cookie '" + f + "' possibly not set or overflowed because it was too large (" + c + " > 4096 bytes)!");
        h2.cookie = b;
      };
    }
    e.module("ngCookies", ["ng"]).info({ angularVersion: "1.8.2" }).provider("$cookies", [function() {
      var d = this.defaults = {};
      this.$get = ["$$cookieReader", "$$cookieWriter", function(k, l) {
        return { get: function(a) {
          return k()[a];
        }, getObject: function(a) {
          return (a = this.get(a)) ? e.fromJson(a) : a;
        }, getAll: function() {
          return k();
        }, put: function(a, h2, f) {
          l(a, h2, f ? e.extend({}, d, f) : d);
        }, putObject: function(a, d2, f) {
          this.put(a, e.toJson(d2), f);
        }, remove: function(a, h2) {
          l(a, void 0, h2 ? e.extend({}, d, h2) : d);
        } };
      }];
    }]);
    m.$inject = ["$document", "$log", "$browser"];
    e.module("ngCookies").provider("$$cookieWriter", function() {
      this.$get = m;
    });
  })(window, window.angular);

  // dep-runtime/node_modules/angular-sanitize/angular-sanitize.min.js
  (function(s2, e) {
    "use strict";
    function O(e2) {
      var g2 = [];
      B(g2, D).chars(e2);
      return g2.join("");
    }
    var C = e.$$minErr("$sanitize"), E, g, F, G, H, q, D, I, J, B;
    e.module("ngSanitize", []).provider("$sanitize", function() {
      function h2(a, d) {
        return A(a.split(","), d);
      }
      function A(a, d) {
        var c = {}, b;
        for (b = 0; b < a.length; b++)
          c[d ? q(a[b]) : a[b]] = true;
        return c;
      }
      function t(a, d) {
        d && d.length && g(a, A(d));
      }
      function P(a) {
        for (var d = {}, c = 0, b = a.length; c < b; c++) {
          var k = a[c];
          d[k.name] = k.value;
        }
        return d;
      }
      function K(a) {
        return a.replace(/&/g, "&amp;").replace(Q, function(a2) {
          var c = a2.charCodeAt(0);
          a2 = a2.charCodeAt(1);
          return "&#" + (1024 * (c - 55296) + (a2 - 56320) + 65536) + ";";
        }).replace(u, function(a2) {
          return "&#" + a2.charCodeAt(0) + ";";
        }).replace(/</g, "&lt;").replace(/>/g, "&gt;");
      }
      function z(a) {
        for (; a; ) {
          if (a.nodeType === s2.Node.ELEMENT_NODE)
            for (var d = a.attributes, c = 0, b = d.length; c < b; c++) {
              var k = d[c], f2 = k.name.toLowerCase();
              if ("xmlns:ns1" === f2 || 0 === f2.lastIndexOf("ns1:", 0))
                a.removeAttributeNode(k), c--, b--;
            }
          (d = a.firstChild) && z(d);
          a = v("nextSibling", a);
        }
      }
      function v(a, d) {
        var c = d[a];
        if (c && I.call(d, c))
          throw C(
            "elclob",
            d.outerHTML || d.outerText
          );
        return c;
      }
      var y = false, f = false;
      this.$get = ["$$sanitizeUri", function(a) {
        y = true;
        f && g(m, l);
        return function(d) {
          var c = [];
          J(d, B(c, function(b, c2) {
            return !/^unsafe:/.test(a(b, c2));
          }));
          return c.join("");
        };
      }];
      this.enableSvg = function(a) {
        return H(a) ? (f = a, this) : f;
      };
      this.addValidElements = function(a) {
        y || (G(a) && (a = { htmlElements: a }), t(l, a.svgElements), t(r, a.htmlVoidElements), t(m, a.htmlVoidElements), t(m, a.htmlElements));
        return this;
      };
      this.addValidAttrs = function(a) {
        y || g(L, A(a, true));
        return this;
      };
      E = e.bind;
      g = e.extend;
      F = e.forEach;
      G = e.isArray;
      H = e.isDefined;
      q = e.$$lowercase;
      D = e.noop;
      J = function(a, d) {
        null === a || void 0 === a ? a = "" : "string" !== typeof a && (a = "" + a);
        var c = M(a);
        if (!c)
          return "";
        var b = 5;
        do {
          if (0 === b)
            throw C("uinput");
          b--;
          a = c.innerHTML;
          c = M(a);
        } while (a !== c.innerHTML);
        for (b = c.firstChild; b; ) {
          switch (b.nodeType) {
            case 1:
              d.start(b.nodeName.toLowerCase(), P(b.attributes));
              break;
            case 3:
              d.chars(b.textContent);
          }
          var k;
          if (!(k = b.firstChild) && (1 === b.nodeType && d.end(b.nodeName.toLowerCase()), k = v("nextSibling", b), !k))
            for (; null == k; ) {
              b = v("parentNode", b);
              if (b === c)
                break;
              k = v("nextSibling", b);
              1 === b.nodeType && d.end(b.nodeName.toLowerCase());
            }
          b = k;
        }
        for (; b = c.firstChild; )
          c.removeChild(b);
      };
      B = function(a, d) {
        var c = false, b = E(a, a.push);
        return { start: function(a2, f2) {
          a2 = q(a2);
          !c && w2[a2] && (c = a2);
          c || true !== m[a2] || (b("<"), b(a2), F(f2, function(c2, f3) {
            var e2 = q(f3), h3 = "img" === a2 && "src" === e2 || "background" === e2;
            true !== L[e2] || true === N[e2] && !d(c2, h3) || (b(" "), b(f3), b('="'), b(K(c2)), b('"'));
          }), b(">"));
        }, end: function(a2) {
          a2 = q(a2);
          c || true !== m[a2] || true === r[a2] || (b("</"), b(a2), b(">"));
          a2 == c && (c = false);
        }, chars: function(a2) {
          c || b(K(a2));
        } };
      };
      I = s2.Node.prototype.contains || function(a) {
        return !!(this.compareDocumentPosition(a) & 16);
      };
      var Q = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, u = /([^#-~ |!])/g, r = h2("area,br,col,hr,img,wbr"), x = h2("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"), p = h2("rp,rt"), n2 = g({}, p, x), x = g({}, x, h2("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul")), p = g({}, p, h2("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")), l = h2("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan"), w2 = h2("script,style"), m = g({}, r, x, p, n2), N = h2("background,cite,href,longdesc,src,xlink:href,xml:base"), n2 = h2("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"), p = h2(
        "accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan",
        true
      ), L = g({}, N, p, n2), M = function(a, d) {
        function c(b2) {
          b2 = "<remove></remove>" + b2;
          try {
            var c2 = new a.DOMParser().parseFromString(b2, "text/html").body;
            c2.firstChild.remove();
            return c2;
          } catch (d2) {
          }
        }
        var b;
        try {
          b = !!c("");
        } catch (f2) {
          b = false;
        }
        if (b)
          return c;
        if (!d || !d.implementation)
          throw C("noinert");
        b = d.implementation.createHTMLDocument("inert");
        var e2 = (b.documentElement || b.getDocumentElement()).querySelector("body");
        return function(a2) {
          e2.innerHTML = a2;
          d.documentMode && z(e2);
          return e2;
        };
      }(s2, s2.document);
    }).info({ angularVersion: "1.8.2" });
    e.module("ngSanitize").filter("linky", ["$sanitize", function(h2) {
      var g2 = /((s?ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i, t = /^mailto:/i, q2 = e.$$minErr("linky"), s3 = e.isDefined, z = e.isFunction, v = e.isObject, y = e.isString;
      return function(f, e2, u) {
        function r(e3) {
          e3 && l.push(O(e3));
        }
        function x(f2, h3) {
          var g3, a = p(f2);
          l.push("<a ");
          for (g3 in a)
            l.push(g3 + '="' + a[g3] + '" ');
          !s3(e2) || "target" in a || l.push('target="', e2, '" ');
          l.push('href="', f2.replace(/"/g, "&quot;"), '">');
          r(h3);
          l.push("</a>");
        }
        if (null == f || "" === f)
          return f;
        if (!y(f))
          throw q2("notstring", f);
        for (var p = z(u) ? u : v(u) ? function() {
          return u;
        } : function() {
          return {};
        }, n2 = f, l = [], w2, m; f = n2.match(g2); )
          w2 = f[0], f[2] || f[4] || (w2 = (f[3] ? "http://" : "mailto:") + w2), m = f.index, r(n2.substr(0, m)), x(w2, f[0].replace(t, "")), n2 = n2.substring(m + f[0].length);
        r(n2);
        return h2(l.join(""));
      };
    }]);
  })(window, window.angular);

  // dep-runtime/node_modules/angulartics/dist/angulartics.min.js
  !function(a, b) {
    "use strict";
    function c() {
      function b2(a2) {
        return function() {
          k.waitForVendorCount && (m[a2] || (m[a2] = []), m[a2].push(arguments));
        };
      }
      function c2(b3, c3, d3) {
        return n2[b3] || (n2[b3] = []), n2[b3].push(c3), o[c3] = d3, function() {
          if (!this.settings.optOut) {
            var c4 = Array.prototype.slice.apply(arguments);
            return this.$inject(["$q", a.bind(this, function(d4) {
              return d4.all(n2[b3].map(function(b4) {
                var e3 = o[b4] || {};
                if (e3.async) {
                  var f3 = d4.defer(), g3 = a.copy(c4);
                  return g3.unshift(f3.resolve), b4.apply(this, g3), f3.promise;
                }
                return d4.when(b4.apply(this, c4));
              }, this));
            })]);
          }
        };
      }
      function d2(a2, b3) {
        b3 ? setTimeout(a2, b3) : a2();
      }
      function e2(b3, e3, f3) {
        if (!j2.developerMode) {
          p[b3] = c2(b3, e3, f3);
          var g3 = j2[b3], h4 = g3 ? g3.bufferFlushDelay : null, i3 = null !== h4 ? h4 : j2.bufferFlushDelay;
          a.forEach(m[b3], function(a2, b4) {
            d2(function() {
              e3.apply(this, a2);
            }, b4 * i3);
          });
        }
      }
      function f2(a2) {
        return a2.replace(/^./, function(a3) {
          return a3.toUpperCase();
        });
      }
      function g2(a2) {
        var d3 = "register" + f2(a2);
        q[d3] = function(b3, c3) {
          e2(a2, b3, c3);
        }, p[a2] = c2(a2, b2(a2));
      }
      function h3(b3, c3, d3) {
        a.forEach(c3, d3);
        for (var e3 in b3)
          i2[e3] = b3[e3];
      }
      var i2 = this, j2 = {
        pageTracking: { autoTrackFirstPage: true, autoTrackVirtualPages: true, trackRelativePath: false, trackRoutes: true, trackStates: true, autoBasePath: false, basePath: "", excludedRoutes: [], queryKeysWhitelisted: [], queryKeysBlacklisted: [], filterUrlSegments: [] },
        eventTracking: {},
        bufferFlushDelay: 1e3,
        trackExceptions: false,
        optOut: false,
        developerMode: false
      }, l = ["pageTrack", "eventTrack", "exceptionTrack", "transactionTrack", "setAlias", "setUsername", "setUserProperties", "setUserPropertiesOnce", "setSuperProperties", "setSuperPropertiesOnce", "incrementProperty", "userTimings", "clearCookies"], m = {}, n2 = {}, o = {}, p = { settings: j2 };
      p.setOptOut = function(a2) {
        this.settings.optOut = a2, s2();
      }, p.getOptOut = function() {
        return this.settings.optOut;
      };
      var q = { $get: ["$injector", function(a2) {
        return r(a2);
      }], api: p, settings: j2, virtualPageviews: function(a2) {
        this.settings.pageTracking.autoTrackVirtualPages = a2;
      }, trackStates: function(a2) {
        this.settings.pageTracking.trackStates = a2;
      }, trackRoutes: function(a2) {
        this.settings.pageTracking.trackRoutes = a2;
      }, excludeRoutes: function(a2) {
        this.settings.pageTracking.excludedRoutes = a2;
      }, queryKeysWhitelist: function(a2) {
        this.settings.pageTracking.queryKeysWhitelisted = a2;
      }, queryKeysBlacklist: function(a2) {
        this.settings.pageTracking.queryKeysBlacklisted = a2;
      }, filterUrlSegments: function(a2) {
        this.settings.pageTracking.filterUrlSegments = a2;
      }, firstPageview: function(a2) {
        this.settings.pageTracking.autoTrackFirstPage = a2;
      }, withBase: function(b3) {
        this.settings.pageTracking.basePath = b3 ? a.element(document).find("base").attr("href") : "";
      }, withAutoBase: function(a2) {
        this.settings.pageTracking.autoBasePath = a2;
      }, trackExceptions: function(a2) {
        this.settings.trackExceptions = a2;
      }, developerMode: function(a2) {
        this.settings.developerMode = a2;
      } }, r = function(b3) {
        return a.extend(p, { $inject: b3.invoke });
      }, s2 = function() {
        h3(q, l, g2);
      };
      h3(q, l, g2);
    }
    function d(b2, c2, d2, e2) {
      function f2(a2) {
        for (var b3 = 0; b3 < d2.settings.pageTracking.excludedRoutes.length; b3++) {
          var c3 = d2.settings.pageTracking.excludedRoutes[b3];
          if (c3 instanceof RegExp && c3.test(a2) || a2.indexOf(c3) > -1)
            return true;
        }
        return false;
      }
      function g2(a2, b3) {
        for (var c3 = [], d3 = 0; d3 < a2.length; d3++)
          b3.indexOf(a2[d3]) === -1 && c3.push(a2[d3]);
        return c3;
      }
      function h3(a2, b3, c3) {
        if (/\?/.test(a2) && b3.length > 0) {
          for (var d3 = a2.split("?"), e3 = d3[0], f3 = d3[1].split("&"), h4 = [], i3 = 0; i3 < b3.length; i3++)
            for (var j3 = b3[i3], k3 = 0; k3 < f3.length; k3++)
              (j3 instanceof RegExp && j3.test(f3[k3]) || f3[k3].indexOf(j3) > -1) && h4.push(f3[k3]);
          var l2 = "white" == c3 ? h4 : g2(f3, h4);
          return l2.length > 0 ? e3 + "?" + l2.join("&") : e3;
        }
        return a2;
      }
      function i2(a2) {
        return h3(a2, d2.settings.pageTracking.queryKeysWhitelisted, "white");
      }
      function j2(a2) {
        return h3(a2, d2.settings.pageTracking.queryKeysBlacklisted, "black");
      }
      function k2(a2) {
        var b3 = d2.settings.pageTracking.filterUrlSegments;
        if (b3.length > 0) {
          for (var c3 = a2.split("?"), e3 = c3[0], f3 = e3.split("/"), g3 = 0; g3 < b3.length; g3++)
            for (var h4 = b3[g3], i3 = 1; i3 < f3.length; i3++)
              (h4 instanceof RegExp && h4.test(f3[i3]) || f3[i3].indexOf(h4) > -1) && (f3[i3] = "FILTERED");
          return f3.join("/");
        }
        return a2;
      }
      function l(a2, b3) {
        f2(a2) || (a2 = i2(a2), a2 = j2(a2), a2 = k2(a2), d2.pageTrack(a2, b3));
      }
      if (d2.settings.pageTracking.autoTrackFirstPage) {
        var m = true;
        if (e2.has("$route")) {
          var n2 = e2.get("$route");
          if (n2)
            for (var o in n2.routes) {
              m = false;
              break;
            }
          else
            null === n2 && (m = false);
        } else if (e2.has("$state")) {
          var p = e2.get("$state");
          p.get().length > 1 && (m = false);
        }
        m && (d2.settings.pageTracking.autoBasePath && (d2.settings.pageTracking.basePath = c2.location.pathname), e2.invoke(["$location", function(a2) {
          if (d2.settings.pageTracking.trackRelativePath) {
            var b3 = d2.settings.pageTracking.basePath + a2.url();
            l(b3, a2);
          } else
            l(a2.absUrl(), a2);
        }]));
      }
      if (d2.settings.pageTracking.autoTrackVirtualPages) {
        d2.settings.pageTracking.autoBasePath && (d2.settings.pageTracking.basePath = c2.location.pathname + "#");
        var m = true;
        if (d2.settings.pageTracking.trackRoutes && e2.has("$route")) {
          var n2 = e2.get("$route");
          if (n2)
            for (var o in n2.routes) {
              m = false;
              break;
            }
          else
            null === n2 && (m = false);
          b2.$on("$routeChangeSuccess", function(a2, b3) {
            b3 && (b3.$$route || b3).redirectTo || e2.invoke(["$location", function(a3) {
              var b4 = d2.settings.pageTracking.basePath + a3.url();
              l(b4, a3);
            }]);
          });
        }
        d2.settings.pageTracking.trackStates && (e2.has("$state") && !e2.has("$transitions") && (m = false, b2.$on("$stateChangeSuccess", function(a2, b3) {
          e2.invoke(["$location", function(a3) {
            var b4 = d2.settings.pageTracking.basePath + a3.url();
            l(b4, a3);
          }]);
        })), e2.has("$state") && e2.has("$transitions") && (m = false, e2.invoke(["$transitions", function(a2) {
          a2.onSuccess({}, function(a3) {
            var b3 = a3.options();
            b3.notify && e2.invoke(["$location", function(a4) {
              var b4 = d2.settings.pageTracking.basePath + a4.url();
              l(b4, a4);
            }]);
          });
        }]))), m && b2.$on("$locationChangeSuccess", function(a2, b3) {
          b3 && (b3.$$route || b3).redirectTo || e2.invoke(["$location", function(a3) {
            if (d2.settings.pageTracking.trackRelativePath) {
              var b4 = d2.settings.pageTracking.basePath + a3.url();
              l(b4, a3);
            } else
              l(a3.absUrl(), a3);
          }]);
        });
      }
      d2.settings.developerMode && a.forEach(d2, function(a2, b3) {
        "function" == typeof a2 && (d2[b3] = function() {
        });
      });
    }
    function e(b2) {
      return { restrict: "A", link: function(c2, d2, e2) {
        var f2 = e2.analyticsOn || "click", g2 = {};
        a.forEach(e2.$attr, function(a2, b3) {
          i(b3) && (g2[j(b3)] = e2[b3], e2.$observe(b3, function(a3) {
            g2[j(b3)] = a3;
          }));
        }), a.element(d2[0]).on(f2, function(f3) {
          var i2 = e2.analyticsEvent || h2(d2[0]);
          g2.eventType = f3.type, e2.analyticsIf && !c2.$eval(e2.analyticsIf) || (e2.analyticsProperties && a.extend(g2, c2.$eval(e2.analyticsProperties)), b2.eventTrack(i2, g2));
        });
      } };
    }
    function f(a2) {
      a2.decorator("$exceptionHandler", ["$delegate", "$injector", function(a3, b2) {
        return function(c2, d2) {
          var e2 = a3(c2, d2), f2 = b2.get("$analytics");
          return f2.settings.trackExceptions && f2.exceptionTrack(c2, d2), e2;
        };
      }]);
    }
    function g(a2) {
      return ["a:", "button:", "button:button", "button:submit", "input:button", "input:submit"].indexOf(a2.tagName.toLowerCase() + ":" + (a2.type || "")) >= 0;
    }
    function h2(a2) {
      return g(a2) ? a2.innerText || a2.value : a2.id || a2.name || a2.tagName;
    }
    function i(a2) {
      return "analytics" === a2.substr(0, 9) && ["On", "Event", "If", "Properties", "EventType"].indexOf(a2.substr(9)) === -1;
    }
    function j(a2) {
      var b2 = a2.slice(9);
      return "undefined" != typeof b2 && null !== b2 && b2.length > 0 ? b2.substring(0, 1).toLowerCase() + b2.substring(1) : b2;
    }
    var k = window.angulartics || (window.angulartics = {});
    k.waitForVendorCount = 0, k.waitForVendorApi = function(a2, b2, c2, d2, e2) {
      e2 || k.waitForVendorCount++, d2 || (d2 = c2, c2 = void 0), !Object.prototype.hasOwnProperty.call(window, a2) || void 0 !== c2 && void 0 === window[a2][c2] ? setTimeout(function() {
        k.waitForVendorApi(a2, b2, c2, d2, true);
      }, b2) : (k.waitForVendorCount--, d2(window[a2]));
    }, a.module("angulartics", []).provider("$analytics", c).run(["$rootScope", "$window", "$analytics", "$injector", d]).directive("analyticsOn", ["$analytics", e]).config(["$provide", f]);
  }(angular);

  // esbuild/entrypoints/vendor-minified.bundle.js
  var import_lodash_min = __toESM(require_lodash_min());

  // dep-runtime/node_modules/orientationchangeend/dist/orientationchangeend.min.js
  !function n(e, t, o) {
    function i(u2, f) {
      if (!t[u2]) {
        if (!e[u2]) {
          var a = "function" == typeof __require && __require;
          if (!f && a)
            return a(u2, true);
          if (r)
            return r(u2, true);
          throw new Error("Cannot find module '" + u2 + "'");
        }
        var d = t[u2] = { exports: {} };
        e[u2][0].call(d.exports, function(n2) {
          var t2 = e[u2][1][n2];
          return i(t2 ? t2 : n2);
        }, d, d.exports, n, e, t, o);
      }
      return t[u2].exports;
    }
    for (var r = "function" == typeof __require && __require, u = 0; u < o.length; u++)
      i(o[u]);
    return i;
  }({ 1: [function(n2, e) {
    (function(n3) {
      function t() {
        var n4 = {}, e2 = {};
        return n4.on = function(n5, t2) {
          var o = { name: n5, handler: t2 };
          return e2[n5] = e2[n5] || [], e2[n5].unshift(o), o;
        }, n4.off = function(n5) {
          var t2 = e2[n5.name].indexOf(n5);
          -1 != t2 && e2[n5.name].splice(t2, 1);
        }, n4.trigger = function(n5, t2) {
          var o, i = e2[n5];
          if (i)
            for (o = i.length; o--; )
              i[o].handler(t2);
        }, n4;
      }
      n3.gajus = n3.gajus || {}, n3.gajus.Sister = t, e.exports = t;
    }).call(this, "undefined" != typeof self ? self : "undefined" != typeof window ? window : {});
  }, {}], 2: [function(n2, e) {
    (function(t) {
      var o, i = n2("sister");
      o = function r(n3) {
        var e2, o2, u;
        return this instanceof r ? (u = i(), e2 = this, e2.on = u.on, n3 = n3 || {}, n3.noChangeCountToEnd = n3.noChangeCountToEnd || 100, n3.noEndTimeout = 1e3, n3.debug = n3.debug || false, void t.addEventListener("orientationchange", function() {
          var e3, i2, r2, f, a, d;
          r2 = function(n4) {
            clearInterval(e3), clearTimeout(i2), e3 = null, i2 = null, n4 && u.trigger("orientationchangeend");
          }, o2 && o2(false), o2 = r2, e3 = setInterval(function() {
            t.innerWidth === f && t.innerHeight === a ? (d++, d === n3.noChangeCountToEnd && (n3.debug && console.debug("setInterval"), r2(true))) : (f = t.innerWidth, a = t.innerHeight, d = 0);
          }), i2 = setTimeout(function() {
            n3.debug && console.debug("setTimeout"), r2(true);
          }, n3.noEndTimeout);
        })) : new r(n3);
      }, t.gajus = t.gajus || {}, t.gajus.orientationchangeend = o, e.exports = o;
    }).call(this, "undefined" != typeof self ? self : "undefined" != typeof window ? window : {});
  }, { sister: 1 }] }, {}, [2]);

  // esbuild/entrypoints/vendor-minified.bundle.js
  var import_gsap_min = __toESM(require_gsap_min());
  var import_EasePack_min = __toESM(require_EasePack_min());
  var import_picturefill_min = __toESM(require_picturefill_min());

  // dep-runtime/node_modules/angular-bind-html-compile-ci-dev/angular-bind-html-compile.min.js
  !function(a) {
    "use strict";
    var b = a.module("angular-bind-html-compile", []);
    b.directive("bindHtmlCompile", ["$compile", function(a2) {
      return { restrict: "A", link: function(b2, c, d) {
        b2.$watch(function() {
          return b2.$eval(d.bindHtmlCompile);
        }, function(e) {
          c.html(e && e.toString());
          var f = b2;
          d.bindHtmlScope && (f = b2.$eval(d.bindHtmlScope)), a2(c.contents())(f);
        });
      } };
    }]);
  }(window.angular);

  // esbuild/entrypoints/vendor-minified.bundle.js
  var import_hashes_min = __toESM(require_hashes_min());

  // dep-runtime/node_modules/object-fit-images/dist/ofi.min.js
  var objectFitImages = function() {
    "use strict";
    function t(t2, e2) {
      return "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='" + t2 + "' height='" + e2 + "'%3E%3C/svg%3E";
    }
    function e(t2) {
      if (t2.srcset && !p && window.picturefill) {
        var e2 = window.picturefill._;
        t2[e2.ns] && t2[e2.ns].evaled || e2.fillImg(t2, { reselect: true }), t2[e2.ns].curSrc || (t2[e2.ns].supported = false, e2.fillImg(t2, { reselect: true })), t2.currentSrc = t2[e2.ns].curSrc || t2.src;
      }
    }
    function i(t2) {
      for (var e2, i2 = getComputedStyle(t2).fontFamily, r2 = {}; null !== (e2 = u.exec(i2)); )
        r2[e2[1]] = e2[2];
      return r2;
    }
    function r(e2, i2, r2) {
      var n3 = t(i2 || 1, r2 || 0);
      b.call(e2, "src") !== n3 && h2.call(e2, "src", n3);
    }
    function n2(t2, e2) {
      t2.naturalWidth ? e2(t2) : setTimeout(n2, 100, t2, e2);
    }
    function c(t2) {
      var c2 = i(t2), o2 = t2[l];
      if (c2["object-fit"] = c2["object-fit"] || "fill", !o2.img) {
        if ("fill" === c2["object-fit"])
          return;
        if (!o2.skipTest && f && !c2["object-position"])
          return;
      }
      if (!o2.img) {
        o2.img = new Image(t2.width, t2.height), o2.img.srcset = b.call(t2, "data-ofi-srcset") || t2.srcset, o2.img.src = b.call(t2, "data-ofi-src") || t2.src, h2.call(t2, "data-ofi-src", t2.src), t2.srcset && h2.call(t2, "data-ofi-srcset", t2.srcset), r(t2, t2.naturalWidth || t2.width, t2.naturalHeight || t2.height), t2.srcset && (t2.srcset = "");
        try {
          s2(t2);
        } catch (t3) {
          window.console && console.warn("https://bit.ly/ofi-old-browser");
        }
      }
      e(o2.img), t2.style.backgroundImage = 'url("' + (o2.img.currentSrc || o2.img.src).replace(/"/g, '\\"') + '")', t2.style.backgroundPosition = c2["object-position"] || "center", t2.style.backgroundRepeat = "no-repeat", t2.style.backgroundOrigin = "content-box", /scale-down/.test(c2["object-fit"]) ? n2(o2.img, function() {
        o2.img.naturalWidth > t2.width || o2.img.naturalHeight > t2.height ? t2.style.backgroundSize = "contain" : t2.style.backgroundSize = "auto";
      }) : t2.style.backgroundSize = c2["object-fit"].replace("none", "auto").replace("fill", "100% 100%"), n2(o2.img, function(e2) {
        r(t2, e2.naturalWidth, e2.naturalHeight);
      });
    }
    function s2(t2) {
      var e2 = { get: function(e3) {
        return t2[l].img[e3 ? e3 : "src"];
      }, set: function(e3, i2) {
        return t2[l].img[i2 ? i2 : "src"] = e3, h2.call(t2, "data-ofi-" + i2, e3), c(t2), e3;
      } };
      Object.defineProperty(t2, "src", e2), Object.defineProperty(t2, "currentSrc", { get: function() {
        return e2.get("currentSrc");
      } }), Object.defineProperty(t2, "srcset", { get: function() {
        return e2.get("srcset");
      }, set: function(t3) {
        return e2.set(t3, "srcset");
      } });
    }
    function o() {
      function t2(t3, e2) {
        return t3[l] && t3[l].img && ("src" === e2 || "srcset" === e2) ? t3[l].img : t3;
      }
      d || (HTMLImageElement.prototype.getAttribute = function(e2) {
        return b.call(t2(this, e2), e2);
      }, HTMLImageElement.prototype.setAttribute = function(e2, i2) {
        return h2.call(t2(this, e2), e2, String(i2));
      });
    }
    function a(t2, e2) {
      var i2 = !y && !t2;
      if (e2 = e2 || {}, t2 = t2 || "img", d && !e2.skipTest || !m)
        return false;
      "img" === t2 ? t2 = document.getElementsByTagName("img") : "string" == typeof t2 ? t2 = document.querySelectorAll(t2) : "length" in t2 || (t2 = [t2]);
      for (var r2 = 0; r2 < t2.length; r2++)
        t2[r2][l] = t2[r2][l] || { skipTest: e2.skipTest }, c(t2[r2]);
      i2 && (document.body.addEventListener("load", function(t3) {
        "IMG" === t3.target.tagName && a(t3.target, { skipTest: e2.skipTest });
      }, true), y = true, t2 = "img"), e2.watchMQ && window.addEventListener("resize", a.bind(null, t2, { skipTest: e2.skipTest }));
    }
    var l = "bfred-it:object-fit-images", u = /(object-fit|object-position)\s*:\s*([-.\w\s%]+)/g, g = "undefined" == typeof Image ? { style: { "object-position": 1 } } : new Image(), f = "object-fit" in g.style, d = "object-position" in g.style, m = "background-size" in g.style, p = "string" == typeof g.currentSrc, b = g.getAttribute, h2 = g.setAttribute, y = false;
    return a.supportsObjectFit = f, a.supportsObjectPosition = d, o(), a;
  }();

  // Assets/Toyota/MainSite/vendor_manual/owl-carousel/owl.carousel.min.js
  !function(a, b, c, d) {
    function e(b2, c2) {
      this.settings = null, this.options = a.extend({}, e.Defaults, c2), this.$element = a(b2), this._handlers = {}, this._plugins = {}, this._supress = {}, this._current = null, this._speed = null, this._coordinates = [], this._breakpoint = null, this._width = null, this._items = [], this._clones = [], this._mergers = [], this._widths = [], this._invalidated = {}, this._pipe = [], this._drag = { time: null, target: null, pointer: null, stage: { start: null, current: null }, direction: null }, this._states = { current: {}, tags: { initializing: ["busy"], animating: ["busy"], dragging: ["interacting"] } }, a.each(["onResize", "onThrottledResize"], a.proxy(function(b3, c3) {
        this._handlers[c3] = a.proxy(this[c3], this);
      }, this)), a.each(e.Plugins, a.proxy(function(a2, b3) {
        this._plugins[a2.charAt(0).toLowerCase() + a2.slice(1)] = new b3(this);
      }, this)), a.each(e.Workers, a.proxy(function(b3, c3) {
        this._pipe.push({ filter: c3.filter, run: a.proxy(c3.run, this) });
      }, this)), this.setup(), this.initialize();
    }
    e.Defaults = { items: 3, loop: false, center: false, rewind: false, mouseDrag: true, touchDrag: true, pullDrag: true, freeDrag: false, margin: 0, stagePadding: 0, merge: false, mergeFit: true, autoWidth: false, startPosition: 0, rtl: false, smartSpeed: 250, fluidSpeed: false, dragEndSpeed: false, responsive: {}, responsiveRefreshRate: 200, responsiveBaseElement: b, fallbackEasing: "swing", info: false, nestedItemSelector: false, itemElement: "div", stageElement: "div", refreshClass: "owl-refresh", loadedClass: "owl-loaded", loadingClass: "owl-loading", rtlClass: "owl-rtl", responsiveClass: "owl-responsive", dragClass: "owl-drag", itemClass: "owl-item", stageClass: "owl-stage", stageOuterClass: "owl-stage-outer", grabClass: "owl-grab" }, e.Width = { Default: "default", Inner: "inner", Outer: "outer" }, e.Type = { Event: "event", State: "state" }, e.Plugins = {}, e.Workers = [{ filter: ["width", "settings"], run: function() {
      this._width = this.$element.width();
    } }, { filter: ["width", "items", "settings"], run: function(a2) {
      a2.current = this._items && this._items[this.relative(this._current)];
    } }, { filter: ["items", "settings"], run: function() {
      this.$stage.children(".cloned").remove();
    } }, { filter: ["width", "items", "settings"], run: function(a2) {
      var b2 = this.settings.margin || "", c2 = !this.settings.autoWidth, d2 = this.settings.rtl, e2 = { width: "auto", "margin-left": d2 ? b2 : "", "margin-right": d2 ? "" : b2 };
      !c2 && this.$stage.children().css(e2), a2.css = e2;
    } }, { filter: ["width", "items", "settings"], run: function(a2) {
      var b2 = (this.width() / this.settings.items).toFixed(3) - this.settings.margin, c2 = null, d2 = this._items.length, e2 = !this.settings.autoWidth, f = [];
      for (a2.items = { merge: false, width: b2 }; d2--; )
        c2 = this._mergers[d2], c2 = this.settings.mergeFit && Math.min(c2, this.settings.items) || c2, a2.items.merge = c2 > 1 || a2.items.merge, f[d2] = e2 ? b2 * c2 : this._items[d2].width();
      this._widths = f;
    } }, { filter: ["items", "settings"], run: function() {
      var b2 = [], c2 = this._items, d2 = this.settings, e2 = Math.max(2 * d2.items, 4), f = 2 * Math.ceil(c2.length / 2), g = d2.loop && c2.length ? d2.rewind ? e2 : Math.max(e2, f) : 0, h2 = "", i = "";
      for (g /= 2; g--; )
        b2.push(this.normalize(b2.length / 2, true)), h2 += c2[b2[b2.length - 1]][0].outerHTML, b2.push(this.normalize(c2.length - 1 - (b2.length - 1) / 2, true)), i = c2[b2[b2.length - 1]][0].outerHTML + i;
      this._clones = b2, a(h2).addClass("cloned").appendTo(this.$stage), a(i).addClass("cloned").prependTo(this.$stage);
    } }, { filter: ["width", "items", "settings"], run: function() {
      for (var a2 = this.settings.rtl ? 1 : -1, b2 = this._clones.length + this._items.length, c2 = -1, d2 = 0, e2 = 0, f = []; ++c2 < b2; )
        d2 = f[c2 - 1] || 0, e2 = this._widths[this.relative(c2)] + this.settings.margin, f.push(d2 + e2 * a2);
      this._coordinates = f;
    } }, { filter: ["width", "items", "settings"], run: function() {
      var a2 = this.settings.stagePadding, b2 = this._coordinates, c2 = { width: Math.ceil(Math.abs(b2[b2.length - 1])) + 2 * a2, "padding-left": a2 || "", "padding-right": a2 || "" };
      this.$stage.css(c2);
    } }, { filter: ["width", "items", "settings"], run: function(a2) {
      var b2 = this._coordinates.length, c2 = !this.settings.autoWidth, d2 = this.$stage.children();
      if (c2 && a2.items.merge)
        for (; b2--; )
          a2.css.width = this._widths[this.relative(b2)], d2.eq(b2).css(a2.css);
      else
        c2 && (a2.css.width = a2.items.width, d2.css(a2.css));
    } }, { filter: ["items"], run: function() {
      this._coordinates.length < 1 && this.$stage.removeAttr("style");
    } }, { filter: ["width", "items", "settings"], run: function(a2) {
      a2.current = a2.current ? this.$stage.children().index(a2.current) : 0, a2.current = Math.max(this.minimum(), Math.min(this.maximum(), a2.current)), this.reset(a2.current);
    } }, { filter: ["position"], run: function() {
      this.animate(this.coordinates(this._current));
    } }, { filter: ["width", "position", "items", "settings"], run: function() {
      var a2, b2, c2, d2, e2 = this.settings.rtl ? 1 : -1, f = 2 * this.settings.stagePadding, g = this.coordinates(this.current()) + f, h2 = g + this.width() * e2, i = [];
      for (c2 = 0, d2 = this._coordinates.length; d2 > c2; c2++)
        a2 = this._coordinates[c2 - 1] || 0, b2 = Math.abs(this._coordinates[c2]) + f * e2, (this.op(a2, "<=", g) && this.op(a2, ">", h2) || this.op(b2, "<", g) && this.op(b2, ">", h2)) && i.push(c2);
      this.$stage.children(".active").removeClass("active"), this.$stage.children(":eq(" + i.join("), :eq(") + ")").addClass("active"), this.settings.center && (this.$stage.children(".center").removeClass("center"), this.$stage.children().eq(this.current()).addClass("center"));
    } }], e.prototype.initialize = function() {
      if (this.enter("initializing"), this.trigger("initialize"), this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl), this.settings.autoWidth && !this.is("pre-loading")) {
        var b2, c2, e2;
        b2 = this.$element.find("img"), c2 = this.settings.nestedItemSelector ? "." + this.settings.nestedItemSelector : d, e2 = this.$element.children(c2).width(), b2.length && 0 >= e2 && this.preloadAutoWidthImages(b2);
      }
      this.$element.addClass(this.options.loadingClass), this.$stage = a("<" + this.settings.stageElement + ' class="' + this.settings.stageClass + '"/>').wrap('<div class="' + this.settings.stageOuterClass + '"/>'), this.$element.append(this.$stage.parent()), this.replace(this.$element.children().not(this.$stage.parent())), this.$element.is(":visible") ? this.refresh() : this.invalidate("width"), this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass), this.registerEventHandlers(), this.leave("initializing"), this.trigger("initialized");
    }, e.prototype.setup = function() {
      var b2 = this.viewport(), c2 = this.options.responsive, d2 = -1, e2 = null;
      c2 ? (a.each(c2, function(a2) {
        b2 >= a2 && a2 > d2 && (d2 = Number(a2));
      }), e2 = a.extend({}, this.options, c2[d2]), "function" == typeof e2.stagePadding && (e2.stagePadding = e2.stagePadding()), delete e2.responsive, e2.responsiveClass && this.$element.attr("class", this.$element.attr("class").replace(new RegExp("(" + this.options.responsiveClass + "-)\\S+\\s", "g"), "$1" + d2))) : e2 = a.extend({}, this.options), this.trigger("change", { property: { name: "settings", value: e2 } }), this._breakpoint = d2, this.settings = e2, this.invalidate("settings"), this.trigger("changed", { property: { name: "settings", value: this.settings } });
    }, e.prototype.optionsLogic = function() {
      this.settings.autoWidth && (this.settings.stagePadding = false, this.settings.merge = false);
    }, e.prototype.prepare = function(b2) {
      var c2 = this.trigger("prepare", { content: b2 });
      return c2.data || (c2.data = a("<" + this.settings.itemElement + "/>").addClass(this.options.itemClass).append(b2)), this.trigger("prepared", { content: c2.data }), c2.data;
    }, e.prototype.update = function() {
      for (var b2 = 0, c2 = this._pipe.length, d2 = a.proxy(function(a2) {
        return this[a2];
      }, this._invalidated), e2 = {}; c2 > b2; )
        (this._invalidated.all || a.grep(this._pipe[b2].filter, d2).length > 0) && this._pipe[b2].run(e2), b2++;
      this._invalidated = {}, !this.is("valid") && this.enter("valid");
    }, e.prototype.width = function(a2) {
      switch (a2 = a2 || e.Width.Default) {
        case e.Width.Inner:
        case e.Width.Outer:
          return this._width;
        default:
          return this._width - 2 * this.settings.stagePadding + this.settings.margin;
      }
    }, e.prototype.refresh = function() {
      this.enter("refreshing"), this.trigger("refresh"), this.setup(), this.optionsLogic(), this.$element.addClass(this.options.refreshClass), this.update(), this.$element.removeClass(this.options.refreshClass), this.leave("refreshing"), this.trigger("refreshed");
    }, e.prototype.onThrottledResize = function() {
      b.clearTimeout(this.resizeTimer), this.resizeTimer = b.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate);
    }, e.prototype.onResize = function() {
      return this._items.length ? this._width === this.$element.width() ? false : this.$element.is(":visible") ? (this.enter("resizing"), this.trigger("resize").isDefaultPrevented() ? (this.leave("resizing"), false) : (this.invalidate("width"), this.refresh(), this.leave("resizing"), void this.trigger("resized"))) : false : false;
    }, e.prototype.registerEventHandlers = function() {
      a.support.transition && this.$stage.on(a.support.transition.end + ".owl.core", a.proxy(this.onTransitionEnd, this)), this.settings.responsive !== false && this.on(b, "resize", this._handlers.onThrottledResize), this.settings.mouseDrag && (this.$element.addClass(this.options.dragClass), this.$stage.on("mousedown.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on("dragstart.owl.core selectstart.owl.core", function() {
        return false;
      })), this.settings.touchDrag && (this.$stage.on("touchstart.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on("touchcancel.owl.core", a.proxy(this.onDragEnd, this)));
    }, e.prototype.onDragStart = function(b2) {
      var d2 = null;
      3 !== b2.which && (a.support.transform ? (d2 = this.$stage.css("transform").replace(/.*\(|\)| /g, "").split(","), d2 = { x: d2[16 === d2.length ? 12 : 4], y: d2[16 === d2.length ? 13 : 5] }) : (d2 = this.$stage.position(), d2 = { x: this.settings.rtl ? d2.left + this.$stage.width() - this.width() + this.settings.margin : d2.left, y: d2.top }), this.is("animating") && (a.support.transform ? this.animate(d2.x) : this.$stage.stop(), this.invalidate("position")), this.$element.toggleClass(this.options.grabClass, "mousedown" === b2.type), this.speed(0), this._drag.time = new Date().getTime(), this._drag.target = a(b2.target), this._drag.stage.start = d2, this._drag.stage.current = d2, this._drag.pointer = this.pointer(b2), a(c).on("mouseup.owl.core touchend.owl.core", a.proxy(this.onDragEnd, this)), a(c).one("mousemove.owl.core touchmove.owl.core", a.proxy(function(b3) {
        var d3 = this.difference(this._drag.pointer, this.pointer(b3));
        a(c).on("mousemove.owl.core touchmove.owl.core", a.proxy(this.onDragMove, this)), Math.abs(d3.x) < Math.abs(d3.y) && this.is("valid") || (b3.preventDefault(), this.enter("dragging"), this.trigger("drag"));
      }, this)));
    }, e.prototype.onDragMove = function(a2) {
      var b2 = null, c2 = null, d2 = null, e2 = this.difference(this._drag.pointer, this.pointer(a2)), f = this.difference(this._drag.stage.start, e2);
      this.is("dragging") && (a2.preventDefault(), this.settings.loop ? (b2 = this.coordinates(this.minimum()), c2 = this.coordinates(this.maximum() + 1) - b2, f.x = ((f.x - b2) % c2 + c2) % c2 + b2) : (b2 = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()), c2 = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()), d2 = this.settings.pullDrag ? -1 * e2.x / 5 : 0, f.x = Math.max(Math.min(f.x, b2 + d2), c2 + d2)), this._drag.stage.current = f, this.animate(f.x));
    }, e.prototype.onDragEnd = function(b2) {
      var d2 = this.difference(this._drag.pointer, this.pointer(b2)), e2 = this._drag.stage.current, f = d2.x > 0 ^ this.settings.rtl ? "left" : "right";
      a(c).off(".owl.core"), this.$element.removeClass(this.options.grabClass), (0 !== d2.x && this.is("dragging") || !this.is("valid")) && (this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed), this.current(this.closest(e2.x, 0 !== d2.x ? f : this._drag.direction)), this.invalidate("position"), this.update(), this._drag.direction = f, (Math.abs(d2.x) > 3 || new Date().getTime() - this._drag.time > 300) && this._drag.target.one("click.owl.core", function() {
        return false;
      })), this.is("dragging") && (this.leave("dragging"), this.trigger("dragged"));
    }, e.prototype.closest = function(b2, c2) {
      var d2 = -1, e2 = 30, f = this.width(), g = this.coordinates();
      return this.settings.freeDrag || a.each(g, a.proxy(function(a2, h2) {
        return "left" === c2 && b2 > h2 - e2 && h2 + e2 > b2 ? d2 = a2 : "right" === c2 && b2 > h2 - f - e2 && h2 - f + e2 > b2 ? d2 = a2 + 1 : this.op(b2, "<", h2) && this.op(b2, ">", g[a2 + 1] || h2 - f) && (d2 = "left" === c2 ? a2 + 1 : a2), -1 === d2;
      }, this)), this.settings.loop || (this.op(b2, ">", g[this.minimum()]) ? d2 = b2 = this.minimum() : this.op(b2, "<", g[this.maximum()]) && (d2 = b2 = this.maximum())), d2;
    }, e.prototype.animate = function(b2) {
      var c2 = this.speed() > 0;
      this.is("animating") && this.onTransitionEnd(), c2 && (this.enter("animating"), this.trigger("translate")), a.support.transform3d && a.support.transition ? this.$stage.css({ transform: "translate3d(" + b2 + "px,0px,0px)", transition: this.speed() / 1e3 + "s" }) : c2 ? this.$stage.animate({ left: b2 + "px" }, this.speed(), this.settings.fallbackEasing, a.proxy(this.onTransitionEnd, this)) : this.$stage.css({ left: b2 + "px" });
    }, e.prototype.is = function(a2) {
      return this._states.current[a2] && this._states.current[a2] > 0;
    }, e.prototype.current = function(a2) {
      if (a2 === d)
        return this._current;
      if (0 === this._items.length)
        return d;
      if (a2 = this.normalize(a2), this._current !== a2) {
        var b2 = this.trigger("change", { property: { name: "position", value: a2 } });
        b2.data !== d && (a2 = this.normalize(b2.data)), this._current = a2, this.invalidate("position"), this.trigger("changed", { property: { name: "position", value: this._current } });
      }
      return this._current;
    }, e.prototype.invalidate = function(b2) {
      return "string" === a.type(b2) && (this._invalidated[b2] = true, this.is("valid") && this.leave("valid")), a.map(this._invalidated, function(a2, b3) {
        return b3;
      });
    }, e.prototype.reset = function(a2) {
      a2 = this.normalize(a2), a2 !== d && (this._speed = 0, this._current = a2, this.suppress(["translate", "translated"]), this.animate(this.coordinates(a2)), this.release(["translate", "translated"]));
    }, e.prototype.normalize = function(a2, b2) {
      var c2 = this._items.length, e2 = b2 ? 0 : this._clones.length;
      return !this.isNumeric(a2) || 1 > c2 ? a2 = d : (0 > a2 || a2 >= c2 + e2) && (a2 = ((a2 - e2 / 2) % c2 + c2) % c2 + e2 / 2), a2;
    }, e.prototype.relative = function(a2) {
      return a2 -= this._clones.length / 2, this.normalize(a2, true);
    }, e.prototype.maximum = function(a2) {
      var b2, c2, d2, e2 = this.settings, f = this._coordinates.length;
      if (e2.loop)
        f = this._clones.length / 2 + this._items.length - 1;
      else if (e2.autoWidth || e2.merge) {
        for (b2 = this._items.length, c2 = this._items[--b2].width(), d2 = this.$element.width(); b2-- && (c2 += this._items[b2].width() + this.settings.margin, !(c2 > d2)); )
          ;
        f = b2 + 1;
      } else
        f = e2.center ? this._items.length - 1 : this._items.length - e2.items;
      return a2 && (f -= this._clones.length / 2), Math.max(f, 0);
    }, e.prototype.minimum = function(a2) {
      return a2 ? 0 : this._clones.length / 2;
    }, e.prototype.items = function(a2) {
      return a2 === d ? this._items.slice() : (a2 = this.normalize(a2, true), this._items[a2]);
    }, e.prototype.mergers = function(a2) {
      return a2 === d ? this._mergers.slice() : (a2 = this.normalize(a2, true), this._mergers[a2]);
    }, e.prototype.clones = function(b2) {
      var c2 = this._clones.length / 2, e2 = c2 + this._items.length, f = function(a2) {
        return a2 % 2 === 0 ? e2 + a2 / 2 : c2 - (a2 + 1) / 2;
      };
      return b2 === d ? a.map(this._clones, function(a2, b3) {
        return f(b3);
      }) : a.map(this._clones, function(a2, c3) {
        return a2 === b2 ? f(c3) : null;
      });
    }, e.prototype.speed = function(a2) {
      return a2 !== d && (this._speed = a2), this._speed;
    }, e.prototype.coordinates = function(b2) {
      var c2, e2 = 1, f = b2 - 1;
      return b2 === d ? a.map(this._coordinates, a.proxy(function(a2, b3) {
        return this.coordinates(b3);
      }, this)) : (this.settings.center ? (this.settings.rtl && (e2 = -1, f = b2 + 1), c2 = this._coordinates[b2], c2 += (this.width() - c2 + (this._coordinates[f] || 0)) / 2 * e2) : c2 = this._coordinates[f] || 0, c2 = Math.ceil(c2));
    }, e.prototype.duration = function(a2, b2, c2) {
      return 0 === c2 ? 0 : Math.min(Math.max(Math.abs(b2 - a2), 1), 6) * Math.abs(c2 || this.settings.smartSpeed);
    }, e.prototype.to = function(a2, b2) {
      var c2 = this.current(), d2 = null, e2 = a2 - this.relative(c2), f = (e2 > 0) - (0 > e2), g = this._items.length, h2 = this.minimum(), i = this.maximum();
      this.settings.loop ? (!this.settings.rewind && Math.abs(e2) > g / 2 && (e2 += -1 * f * g), a2 = c2 + e2, d2 = ((a2 - h2) % g + g) % g + h2, d2 !== a2 && i >= d2 - e2 && d2 - e2 > 0 && (c2 = d2 - e2, a2 = d2, this.reset(c2))) : this.settings.rewind ? (i += 1, a2 = (a2 % i + i) % i) : a2 = Math.max(h2, Math.min(i, a2)), this.speed(this.duration(c2, a2, b2)), this.current(a2), this.$element.is(":visible") && this.update();
    }, e.prototype.next = function(a2) {
      a2 = a2 || false, this.to(this.relative(this.current()) + 1, a2);
    }, e.prototype.prev = function(a2) {
      a2 = a2 || false, this.to(this.relative(this.current()) - 1, a2);
    }, e.prototype.onTransitionEnd = function(a2) {
      return a2 !== d && (a2.stopPropagation(), (a2.target || a2.srcElement || a2.originalTarget) !== this.$stage.get(0)) ? false : (this.leave("animating"), void this.trigger("translated"));
    }, e.prototype.viewport = function() {
      var d2;
      if (this.options.responsiveBaseElement !== b)
        d2 = a(this.options.responsiveBaseElement).width();
      else if (b.innerWidth)
        d2 = b.innerWidth;
      else {
        if (!c.documentElement || !c.documentElement.clientWidth)
          throw "Can not detect viewport width.";
        d2 = c.documentElement.clientWidth;
      }
      return d2;
    }, e.prototype.replace = function(b2) {
      this.$stage.empty(), this._items = [], b2 && (b2 = b2 instanceof jQuery ? b2 : a(b2)), this.settings.nestedItemSelector && (b2 = b2.find("." + this.settings.nestedItemSelector)), b2.filter(function() {
        return 1 === this.nodeType;
      }).each(a.proxy(function(a2, b3) {
        b3 = this.prepare(b3), this.$stage.append(b3), this._items.push(b3), this._mergers.push(1 * b3.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1);
      }, this)), this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0), this.invalidate("items");
    }, e.prototype.add = function(b2, c2) {
      var e2 = this.relative(this._current);
      c2 = c2 === d ? this._items.length : this.normalize(c2, true), b2 = b2 instanceof jQuery ? b2 : a(b2), this.trigger("add", { content: b2, position: c2 }), b2 = this.prepare(b2), 0 === this._items.length || c2 === this._items.length ? (0 === this._items.length && this.$stage.append(b2), 0 !== this._items.length && this._items[c2 - 1].after(b2), this._items.push(b2), this._mergers.push(1 * b2.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)) : (this._items[c2].before(b2), this._items.splice(c2, 0, b2), this._mergers.splice(c2, 0, 1 * b2.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)), this._items[e2] && this.reset(this._items[e2].index()), this.invalidate("items"), this.trigger("added", { content: b2, position: c2 });
    }, e.prototype.remove = function(a2) {
      a2 = this.normalize(a2, true), a2 !== d && (this.trigger("remove", { content: this._items[a2], position: a2 }), this._items[a2].remove(), this._items.splice(a2, 1), this._mergers.splice(a2, 1), this.invalidate("items"), this.trigger("removed", { content: null, position: a2 }));
    }, e.prototype.preloadAutoWidthImages = function(b2) {
      b2.each(a.proxy(function(b3, c2) {
        this.enter("pre-loading"), c2 = a(c2), a(new Image()).one("load", a.proxy(function(a2) {
          c2.attr("src", a2.target.src), c2.css("opacity", 1), this.leave("pre-loading"), !this.is("pre-loading") && !this.is("initializing") && this.refresh();
        }, this)).attr("src", c2.attr("src") || c2.attr("data-src") || c2.attr("data-src-retina"));
      }, this));
    }, e.prototype.destroy = function() {
      this.$element.off(".owl.core"), this.$stage.off(".owl.core"), a(c).off(".owl.core"), this.settings.responsive !== false && (b.clearTimeout(this.resizeTimer), this.off(b, "resize", this._handlers.onThrottledResize));
      for (var d2 in this._plugins)
        this._plugins[d2].destroy();
      this.$stage.children(".cloned").remove(), this.$stage.unwrap(), this.$stage.children().contents().unwrap(), this.$stage.children().unwrap(), this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class", this.$element.attr("class").replace(new RegExp(this.options.responsiveClass + "-\\S+\\s", "g"), "")).removeData("owl.carousel");
    }, e.prototype.op = function(a2, b2, c2) {
      var d2 = this.settings.rtl;
      switch (b2) {
        case "<":
          return d2 ? a2 > c2 : c2 > a2;
        case ">":
          return d2 ? c2 > a2 : a2 > c2;
        case ">=":
          return d2 ? c2 >= a2 : a2 >= c2;
        case "<=":
          return d2 ? a2 >= c2 : c2 >= a2;
      }
    }, e.prototype.on = function(a2, b2, c2, d2) {
      a2.addEventListener ? a2.addEventListener(b2, c2, d2) : a2.attachEvent && a2.attachEvent("on" + b2, c2);
    }, e.prototype.off = function(a2, b2, c2, d2) {
      a2.removeEventListener ? a2.removeEventListener(b2, c2, d2) : a2.detachEvent && a2.detachEvent("on" + b2, c2);
    }, e.prototype.trigger = function(b2, c2, d2, f, g) {
      var h2 = { item: { count: this._items.length, index: this.current() } }, i = a.camelCase(a.grep(["on", b2, d2], function(a2) {
        return a2;
      }).join("-").toLowerCase()), j = a.Event([b2, "owl", d2 || "carousel"].join(".").toLowerCase(), a.extend({ relatedTarget: this }, h2, c2));
      return this._supress[b2] || (a.each(this._plugins, function(a2, b3) {
        b3.onTrigger && b3.onTrigger(j);
      }), this.register({ type: e.Type.Event, name: b2 }), this.$element.trigger(j), this.settings && "function" == typeof this.settings[i] && this.settings[i].call(this, j)), j;
    }, e.prototype.enter = function(b2) {
      a.each([b2].concat(this._states.tags[b2] || []), a.proxy(function(a2, b3) {
        this._states.current[b3] === d && (this._states.current[b3] = 0), this._states.current[b3]++;
      }, this));
    }, e.prototype.leave = function(b2) {
      a.each([b2].concat(this._states.tags[b2] || []), a.proxy(function(a2, b3) {
        this._states.current[b3]--;
      }, this));
    }, e.prototype.register = function(b2) {
      if (b2.type === e.Type.Event) {
        if (a.event.special[b2.name] || (a.event.special[b2.name] = {}), !a.event.special[b2.name].owl) {
          var c2 = a.event.special[b2.name]._default;
          a.event.special[b2.name]._default = function(a2) {
            return !c2 || !c2.apply || a2.namespace && -1 !== a2.namespace.indexOf("owl") ? a2.namespace && a2.namespace.indexOf("owl") > -1 : c2.apply(this, arguments);
          }, a.event.special[b2.name].owl = true;
        }
      } else
        b2.type === e.Type.State && (this._states.tags[b2.name] ? this._states.tags[b2.name] = this._states.tags[b2.name].concat(b2.tags) : this._states.tags[b2.name] = b2.tags, this._states.tags[b2.name] = a.grep(this._states.tags[b2.name], a.proxy(function(c3, d2) {
          return a.inArray(c3, this._states.tags[b2.name]) === d2;
        }, this)));
    }, e.prototype.suppress = function(b2) {
      a.each(b2, a.proxy(function(a2, b3) {
        this._supress[b3] = true;
      }, this));
    }, e.prototype.release = function(b2) {
      a.each(b2, a.proxy(function(a2, b3) {
        delete this._supress[b3];
      }, this));
    }, e.prototype.pointer = function(a2) {
      var c2 = { x: null, y: null };
      return a2 = a2.originalEvent || a2 || b.event, a2 = a2.touches && a2.touches.length ? a2.touches[0] : a2.changedTouches && a2.changedTouches.length ? a2.changedTouches[0] : a2, a2.pageX ? (c2.x = a2.pageX, c2.y = a2.pageY) : (c2.x = a2.clientX, c2.y = a2.clientY), c2;
    }, e.prototype.isNumeric = function(a2) {
      return !isNaN(parseFloat(a2));
    }, e.prototype.difference = function(a2, b2) {
      return { x: a2.x - b2.x, y: a2.y - b2.y };
    }, a.fn.owlCarousel = function(b2) {
      var c2 = Array.prototype.slice.call(arguments, 1);
      return this.each(function() {
        var d2 = a(this), f = d2.data("owl.carousel");
        f || (f = new e(this, "object" == typeof b2 && b2), d2.data("owl.carousel", f), a.each(["next", "prev", "to", "destroy", "refresh", "replace", "add", "remove"], function(b3, c3) {
          f.register({ type: e.Type.Event, name: c3 }), f.$element.on(c3 + ".owl.carousel.core", a.proxy(function(a2) {
            a2.namespace && a2.relatedTarget !== this && (this.suppress([c3]), f[c3].apply(this, [].slice.call(arguments, 1)), this.release([c3]));
          }, f));
        })), "string" == typeof b2 && "_" !== b2.charAt(0) && f[b2].apply(f, c2);
      });
    }, a.fn.owlCarousel.Constructor = e;
  }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) {
    var e = function(b2) {
      this._core = b2, this._interval = null, this._visible = null, this._handlers = { "initialized.owl.carousel": a.proxy(function(a2) {
        a2.namespace && this._core.settings.autoRefresh && this.watch();
      }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers);
    };
    e.Defaults = { autoRefresh: true, autoRefreshInterval: 500 }, e.prototype.watch = function() {
      this._interval || (this._visible = this._core.$element.is(":visible"), this._interval = b.setInterval(a.proxy(this.refresh, this), this._core.settings.autoRefreshInterval));
    }, e.prototype.refresh = function() {
      this._core.$element.is(":visible") !== this._visible && (this._visible = !this._visible, this._core.$element.toggleClass("owl-hidden", !this._visible), this._visible && this._core.invalidate("width") && this._core.refresh());
    }, e.prototype.destroy = function() {
      var a2, c2;
      b.clearInterval(this._interval);
      for (a2 in this._handlers)
        this._core.$element.off(a2, this._handlers[a2]);
      for (c2 in Object.getOwnPropertyNames(this))
        "function" != typeof this[c2] && (this[c2] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.AutoRefresh = e;
  }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) {
    var e = function(b2) {
      this._core = b2, this._loaded = [], this._handlers = { "initialized.owl.carousel change.owl.carousel resized.owl.carousel": a.proxy(function(b3) {
        if (b3.namespace && this._core.settings && this._core.settings.lazyLoad && (b3.property && "position" == b3.property.name || "initialized" == b3.type))
          for (var c2 = this._core.settings, e2 = c2.center && Math.ceil(c2.items / 2) || c2.items, f = c2.center && -1 * e2 || 0, g = (b3.property && b3.property.value !== d ? b3.property.value : this._core.current()) + f, h2 = this._core.clones().length, i = a.proxy(function(a2, b4) {
            this.load(b4);
          }, this); f++ < e2; )
            this.load(h2 / 2 + this._core.relative(g)), h2 && a.each(this._core.clones(this._core.relative(g)), i), g++;
      }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers);
    };
    e.Defaults = { lazyLoad: false }, e.prototype.load = function(c2) {
      var d2 = this._core.$stage.children().eq(c2), e2 = d2 && d2.find(".owl-lazy");
      !e2 || a.inArray(d2.get(0), this._loaded) > -1 || (e2.each(a.proxy(function(c3, d3) {
        var e3, f = a(d3), g = b.devicePixelRatio > 1 && f.attr("data-src-retina") || f.attr("data-src");
        this._core.trigger("load", { element: f, url: g }, "lazy"), f.is("img") ? f.one("load.owl.lazy", a.proxy(function() {
          f.css("opacity", 1), this._core.trigger("loaded", { element: f, url: g }, "lazy");
        }, this)).attr("src", g) : (e3 = new Image(), e3.onload = a.proxy(function() {
          f.css({ "background-image": "url(" + g + ")", opacity: "1" }), this._core.trigger("loaded", { element: f, url: g }, "lazy");
        }, this), e3.src = g);
      }, this)), this._loaded.push(d2.get(0)));
    }, e.prototype.destroy = function() {
      var a2, b2;
      for (a2 in this.handlers)
        this._core.$element.off(a2, this.handlers[a2]);
      for (b2 in Object.getOwnPropertyNames(this))
        "function" != typeof this[b2] && (this[b2] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.Lazy = e;
  }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) {
    var e = function(b2) {
      this._core = b2, this._handlers = { "initialized.owl.carousel refreshed.owl.carousel": a.proxy(function(a2) {
        a2.namespace && this._core.settings.autoHeight && this.update();
      }, this), "changed.owl.carousel": a.proxy(function(a2) {
        a2.namespace && this._core.settings.autoHeight && "position" == a2.property.name && this.update();
      }, this), "loaded.owl.lazy": a.proxy(function(a2) {
        a2.namespace && this._core.settings.autoHeight && a2.element.closest("." + this._core.settings.itemClass).index() === this._core.current() && this.update();
      }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers);
    };
    e.Defaults = { autoHeight: false, autoHeightClass: "owl-height" }, e.prototype.update = function() {
      var b2 = this._core._current, c2 = b2 + this._core.settings.items, d2 = this._core.$stage.children().toArray().slice(b2, c2), e2 = [], f = 0;
      a.each(d2, function(b3, c3) {
        e2.push(a(c3).height());
      }), f = Math.max.apply(null, e2), this._core.$stage.parent().height(f).addClass(this._core.settings.autoHeightClass);
    }, e.prototype.destroy = function() {
      var a2, b2;
      for (a2 in this._handlers)
        this._core.$element.off(a2, this._handlers[a2]);
      for (b2 in Object.getOwnPropertyNames(this))
        "function" != typeof this[b2] && (this[b2] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.AutoHeight = e;
  }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) {
    var e = function(b2) {
      this._core = b2, this._videos = {}, this._playing = null, this._handlers = { "initialized.owl.carousel": a.proxy(function(a2) {
        a2.namespace && this._core.register({ type: "state", name: "playing", tags: ["interacting"] });
      }, this), "resize.owl.carousel": a.proxy(function(a2) {
        a2.namespace && this._core.settings.video && this.isInFullScreen() && a2.preventDefault();
      }, this), "refreshed.owl.carousel": a.proxy(function(a2) {
        a2.namespace && this._core.is("resizing") && this._core.$stage.find(".cloned .owl-video-frame").remove();
      }, this), "changed.owl.carousel": a.proxy(function(a2) {
        a2.namespace && "position" === a2.property.name && this._playing && this.stop();
      }, this), "prepared.owl.carousel": a.proxy(function(b3) {
        if (b3.namespace) {
          var c2 = a(b3.content).find(".owl-video");
          c2.length && (c2.css("display", "none"), this.fetch(c2, a(b3.content)));
        }
      }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers), this._core.$element.on("click.owl.video", ".owl-video-play-icon", a.proxy(function(a2) {
        this.play(a2);
      }, this));
    };
    e.Defaults = { video: false, videoHeight: false, videoWidth: false }, e.prototype.fetch = function(a2, b2) {
      var c2 = function() {
        return a2.attr("data-vimeo-id") ? "vimeo" : a2.attr("data-vzaar-id") ? "vzaar" : "youtube";
      }(), d2 = a2.attr("data-vimeo-id") || a2.attr("data-youtube-id") || a2.attr("data-vzaar-id"), e2 = a2.attr("data-width") || this._core.settings.videoWidth, f = a2.attr("data-height") || this._core.settings.videoHeight, g = a2.attr("href");
      if (!g)
        throw new Error("Missing video URL.");
      if (d2 = g.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/), d2[3].indexOf("youtu") > -1)
        c2 = "youtube";
      else if (d2[3].indexOf("vimeo") > -1)
        c2 = "vimeo";
      else {
        if (!(d2[3].indexOf("vzaar") > -1))
          throw new Error("Video URL not supported.");
        c2 = "vzaar";
      }
      d2 = d2[6], this._videos[g] = { type: c2, id: d2, width: e2, height: f }, b2.attr("data-video", g), this.thumbnail(a2, this._videos[g]);
    }, e.prototype.thumbnail = function(b2, c2) {
      var d2, e2, f, g = c2.width && c2.height ? 'style="width:' + c2.width + "px;height:" + c2.height + 'px;"' : "", h2 = b2.find("img"), i = "src", j = "", k = this._core.settings, l = function(a2) {
        e2 = '<div class="owl-video-play-icon"></div>', d2 = k.lazyLoad ? '<div class="owl-video-tn ' + j + '" ' + i + '="' + a2 + '"></div>' : '<div class="owl-video-tn" style="opacity:1;background-image:url(' + a2 + ')"></div>', b2.after(d2), b2.after(e2);
      };
      return b2.wrap('<div class="owl-video-wrapper"' + g + "></div>"), this._core.settings.lazyLoad && (i = "data-src", j = "owl-lazy"), h2.length ? (l(h2.attr(i)), h2.remove(), false) : void ("youtube" === c2.type ? (f = "//img.youtube.com/vi/" + c2.id + "/hqdefault.jpg", l(f)) : "vimeo" === c2.type ? a.ajax({ type: "GET", url: "//vimeo.com/api/v2/video/" + c2.id + ".json", jsonp: "callback", dataType: "jsonp", success: function(a2) {
        f = a2[0].thumbnail_large, l(f);
      } }) : "vzaar" === c2.type && a.ajax({ type: "GET", url: "//vzaar.com/api/videos/" + c2.id + ".json", jsonp: "callback", dataType: "jsonp", success: function(a2) {
        f = a2.framegrab_url, l(f);
      } }));
    }, e.prototype.stop = function() {
      this._core.trigger("stop", null, "video"), this._playing.find(".owl-video-frame").remove(), this._playing.removeClass("owl-video-playing"), this._playing = null, this._core.leave("playing"), this._core.trigger("stopped", null, "video");
    }, e.prototype.play = function(b2) {
      var c2, d2 = a(b2.target), e2 = d2.closest("." + this._core.settings.itemClass), f = this._videos[e2.attr("data-video")], g = f.width || "100%", h2 = f.height || this._core.$stage.height();
      this._playing || (this._core.enter("playing"), this._core.trigger("play", null, "video"), e2 = this._core.items(this._core.relative(e2.index())), this._core.reset(e2.index()), "youtube" === f.type ? c2 = '<iframe width="' + g + '" height="' + h2 + '" src="//www.youtube.com/embed/' + f.id + "?autoplay=1&v=" + f.id + '" frameborder="0" allowfullscreen></iframe>' : "vimeo" === f.type ? c2 = '<iframe src="//player.vimeo.com/video/' + f.id + '?autoplay=1" width="' + g + '" height="' + h2 + '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>' : "vzaar" === f.type && (c2 = '<iframe frameborder="0"height="' + h2 + '"width="' + g + '" allowfullscreen mozallowfullscreen webkitAllowFullScreen src="//view.vzaar.com/' + f.id + '/player?autoplay=true"></iframe>'), a('<div class="owl-video-frame">' + c2 + "</div>").insertAfter(e2.find(".owl-video")), this._playing = e2.addClass("owl-video-playing"));
    }, e.prototype.isInFullScreen = function() {
      var b2 = c.fullscreenElement || c.mozFullScreenElement || c.webkitFullscreenElement;
      return b2 && a(b2).parent().hasClass("owl-video-frame");
    }, e.prototype.destroy = function() {
      var a2, b2;
      this._core.$element.off("click.owl.video");
      for (a2 in this._handlers)
        this._core.$element.off(a2, this._handlers[a2]);
      for (b2 in Object.getOwnPropertyNames(this))
        "function" != typeof this[b2] && (this[b2] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.Video = e;
  }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) {
    var e = function(b2) {
      this.core = b2, this.core.options = a.extend({}, e.Defaults, this.core.options), this.swapping = true, this.previous = d, this.next = d, this.handlers = { "change.owl.carousel": a.proxy(function(a2) {
        a2.namespace && "position" == a2.property.name && (this.previous = this.core.current(), this.next = a2.property.value);
      }, this), "drag.owl.carousel dragged.owl.carousel translated.owl.carousel": a.proxy(function(a2) {
        a2.namespace && (this.swapping = "translated" == a2.type);
      }, this), "translate.owl.carousel": a.proxy(function(a2) {
        a2.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn) && this.swap();
      }, this) }, this.core.$element.on(this.handlers);
    };
    e.Defaults = { animateOut: false, animateIn: false }, e.prototype.swap = function() {
      if (1 === this.core.settings.items && a.support.animation && a.support.transition) {
        this.core.speed(0);
        var b2, c2 = a.proxy(this.clear, this), d2 = this.core.$stage.children().eq(this.previous), e2 = this.core.$stage.children().eq(this.next), f = this.core.settings.animateIn, g = this.core.settings.animateOut;
        this.core.current() !== this.previous && (g && (b2 = this.core.coordinates(this.previous) - this.core.coordinates(this.next), d2.one(a.support.animation.end, c2).css({ left: b2 + "px" }).addClass("animated owl-animated-out").addClass(g)), f && e2.one(a.support.animation.end, c2).addClass("animated owl-animated-in").addClass(f));
      }
    }, e.prototype.clear = function(b2) {
      a(b2.target).css({ left: "" }).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut), this.core.onTransitionEnd();
    }, e.prototype.destroy = function() {
      var a2, b2;
      for (a2 in this.handlers)
        this.core.$element.off(a2, this.handlers[a2]);
      for (b2 in Object.getOwnPropertyNames(this))
        "function" != typeof this[b2] && (this[b2] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.Animate = e;
  }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) {
    var e = function(b2) {
      this._core = b2, this._timeout = null, this._paused = false, this._handlers = { "changed.owl.carousel": a.proxy(function(a2) {
        a2.namespace && "settings" === a2.property.name ? this._core.settings.autoplay ? this.play() : this.stop() : a2.namespace && "position" === a2.property.name && this._core.settings.autoplay && this._setAutoPlayInterval();
      }, this), "initialized.owl.carousel": a.proxy(function(a2) {
        a2.namespace && this._core.settings.autoplay && this.play();
      }, this), "play.owl.autoplay": a.proxy(function(a2, b3, c2) {
        a2.namespace && this.play(b3, c2);
      }, this), "stop.owl.autoplay": a.proxy(function(a2) {
        a2.namespace && this.stop();
      }, this), "mouseover.owl.autoplay": a.proxy(function() {
        this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.pause();
      }, this), "mouseleave.owl.autoplay": a.proxy(function() {
        this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.play();
      }, this), "touchstart.owl.core": a.proxy(function() {
        this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.pause();
      }, this), "touchend.owl.core": a.proxy(function() {
        this._core.settings.autoplayHoverPause && this.play();
      }, this) }, this._core.$element.on(this._handlers), this._core.options = a.extend({}, e.Defaults, this._core.options);
    };
    e.Defaults = { autoplay: false, autoplayTimeout: 5e3, autoplayHoverPause: false, autoplaySpeed: false }, e.prototype.play = function(a2, b2) {
      this._paused = false, this._core.is("rotating") || (this._core.enter("rotating"), this._setAutoPlayInterval());
    }, e.prototype._getNextTimeout = function(d2, e2) {
      return this._timeout && b.clearTimeout(this._timeout), b.setTimeout(a.proxy(function() {
        this._paused || this._core.is("busy") || this._core.is("interacting") || c.hidden || this._core.next(e2 || this._core.settings.autoplaySpeed);
      }, this), d2 || this._core.settings.autoplayTimeout);
    }, e.prototype._setAutoPlayInterval = function() {
      this._timeout = this._getNextTimeout();
    }, e.prototype.stop = function() {
      this._core.is("rotating") && (b.clearTimeout(this._timeout), this._core.leave("rotating"));
    }, e.prototype.pause = function() {
      this._core.is("rotating") && (this._paused = true);
    }, e.prototype.destroy = function() {
      var a2, b2;
      this.stop();
      for (a2 in this._handlers)
        this._core.$element.off(a2, this._handlers[a2]);
      for (b2 in Object.getOwnPropertyNames(this))
        "function" != typeof this[b2] && (this[b2] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.autoplay = e;
  }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) {
    "use strict";
    var e = function(b2) {
      this._core = b2, this._initialized = false, this._pages = [], this._controls = {}, this._templates = [], this.$element = this._core.$element, this._overrides = { next: this._core.next, prev: this._core.prev, to: this._core.to }, this._handlers = { "prepared.owl.carousel": a.proxy(function(b3) {
        b3.namespace && this._core.settings.dotsData && this._templates.push('<div class="' + this._core.settings.dotClass + '">' + a(b3.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot") + "</div>");
      }, this), "added.owl.carousel": a.proxy(function(a2) {
        a2.namespace && this._core.settings.dotsData && this._templates.splice(a2.position, 0, this._templates.pop());
      }, this), "remove.owl.carousel": a.proxy(function(a2) {
        a2.namespace && this._core.settings.dotsData && this._templates.splice(a2.position, 1);
      }, this), "changed.owl.carousel": a.proxy(function(a2) {
        a2.namespace && "position" == a2.property.name && this.draw();
      }, this), "initialized.owl.carousel": a.proxy(function(a2) {
        a2.namespace && !this._initialized && (this._core.trigger("initialize", null, "navigation"), this.initialize(), this.update(), this.draw(), this._initialized = true, this._core.trigger("initialized", null, "navigation"));
      }, this), "refreshed.owl.carousel": a.proxy(function(a2) {
        a2.namespace && this._initialized && (this._core.trigger("refresh", null, "navigation"), this.update(), this.draw(), this._core.trigger("refreshed", null, "navigation"));
      }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this.$element.on(this._handlers);
    };
    e.Defaults = { nav: false, navText: ["prev", "next"], navSpeed: false, navElement: "div", navContainer: false, navContainerClass: "owl-nav", navClass: ["owl-prev", "owl-next"], slideBy: 1, dotClass: "owl-dot", dotsClass: "owl-dots", dots: true, dotsEach: false, dotsData: false, dotsSpeed: false, dotsContainer: false }, e.prototype.initialize = function() {
      var b2, c2 = this._core.settings;
      this._controls.$relative = (c2.navContainer ? a(c2.navContainer) : a("<div>").addClass(c2.navContainerClass).appendTo(this.$element)).addClass("disabled"), this._controls.$previous = a("<" + c2.navElement + ">").addClass(c2.navClass[0]).html(c2.navText[0]).prependTo(this._controls.$relative).on("click", a.proxy(function(a2) {
        this.prev(c2.navSpeed);
      }, this)), this._controls.$next = a("<" + c2.navElement + ">").addClass(c2.navClass[1]).html(c2.navText[1]).appendTo(this._controls.$relative).on("click", a.proxy(function(a2) {
        this.next(c2.navSpeed);
      }, this)), c2.dotsData || (this._templates = [a("<div>").addClass(c2.dotClass).append(a("<span>")).prop("outerHTML")]), this._controls.$absolute = (c2.dotsContainer ? a(c2.dotsContainer) : a("<div>").addClass(c2.dotsClass).appendTo(this.$element)).addClass("disabled"), this._controls.$absolute.on("click", "div", a.proxy(function(b3) {
        var d2 = a(b3.target).parent().is(this._controls.$absolute) ? a(b3.target).index() : a(b3.target).parent().index();
        b3.preventDefault(), this.to(d2, c2.dotsSpeed);
      }, this));
      for (b2 in this._overrides)
        this._core[b2] = a.proxy(this[b2], this);
    }, e.prototype.destroy = function() {
      var a2, b2, c2, d2;
      for (a2 in this._handlers)
        this.$element.off(a2, this._handlers[a2]);
      for (b2 in this._controls)
        this._controls[b2].remove();
      for (d2 in this.overides)
        this._core[d2] = this._overrides[d2];
      for (c2 in Object.getOwnPropertyNames(this))
        "function" != typeof this[c2] && (this[c2] = null);
    }, e.prototype.update = function() {
      var a2, b2, c2, d2 = this._core.clones().length / 2, e2 = d2 + this._core.items().length, f = this._core.maximum(true), g = this._core.settings, h2 = g.center || g.autoWidth || g.dotsData ? 1 : g.dotsEach || g.items;
      if ("page" !== g.slideBy && (g.slideBy = Math.min(g.slideBy, g.items)), g.dots || "page" == g.slideBy)
        for (this._pages = [], a2 = d2, b2 = 0, c2 = 0; e2 > a2; a2++) {
          if (b2 >= h2 || 0 === b2) {
            if (this._pages.push({ start: Math.min(f, a2 - d2), end: a2 - d2 + h2 - 1 }), Math.min(f, a2 - d2) === f)
              break;
            b2 = 0, ++c2;
          }
          b2 += this._core.mergers(this._core.relative(a2));
        }
    }, e.prototype.draw = function() {
      var b2, c2 = this._core.settings, d2 = this._core.items().length <= c2.items, e2 = this._core.relative(this._core.current()), f = c2.loop || c2.rewind;
      this._controls.$relative.toggleClass("disabled", !c2.nav || d2), c2.nav && (this._controls.$previous.toggleClass("disabled", !f && e2 <= this._core.minimum(true)), this._controls.$next.toggleClass("disabled", !f && e2 >= this._core.maximum(true))), this._controls.$absolute.toggleClass("disabled", !c2.dots || d2), c2.dots && (b2 = this._pages.length - this._controls.$absolute.children().length, c2.dotsData && 0 !== b2 ? this._controls.$absolute.html(this._templates.join("")) : b2 > 0 ? this._controls.$absolute.append(new Array(b2 + 1).join(this._templates[0])) : 0 > b2 && this._controls.$absolute.children().slice(b2).remove(), this._controls.$absolute.find(".active").removeClass("active"), this._controls.$absolute.children().eq(a.inArray(this.current(), this._pages)).addClass("active"));
    }, e.prototype.onTrigger = function(b2) {
      var c2 = this._core.settings;
      b2.page = { index: a.inArray(this.current(), this._pages), count: this._pages.length, size: c2 && (c2.center || c2.autoWidth || c2.dotsData ? 1 : c2.dotsEach || c2.items) };
    }, e.prototype.current = function() {
      var b2 = this._core.relative(this._core.current());
      return a.grep(this._pages, a.proxy(function(a2, c2) {
        return a2.start <= b2 && a2.end >= b2;
      }, this)).pop();
    }, e.prototype.getPosition = function(b2) {
      var c2, d2, e2 = this._core.settings;
      return "page" == e2.slideBy ? (c2 = a.inArray(this.current(), this._pages), d2 = this._pages.length, b2 ? ++c2 : --c2, c2 = this._pages[(c2 % d2 + d2) % d2].start) : (c2 = this._core.relative(this._core.current()), d2 = this._core.items().length, b2 ? c2 += e2.slideBy : c2 -= e2.slideBy), c2;
    }, e.prototype.next = function(b2) {
      a.proxy(this._overrides.to, this._core)(this.getPosition(true), b2);
    }, e.prototype.prev = function(b2) {
      a.proxy(this._overrides.to, this._core)(this.getPosition(false), b2);
    }, e.prototype.to = function(b2, c2, d2) {
      var e2;
      !d2 && this._pages.length ? (e2 = this._pages.length, a.proxy(this._overrides.to, this._core)(this._pages[(b2 % e2 + e2) % e2].start, c2)) : a.proxy(this._overrides.to, this._core)(b2, c2);
    }, a.fn.owlCarousel.Constructor.Plugins.Navigation = e;
  }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) {
    "use strict";
    var e = function(c2) {
      this._core = c2, this._hashes = {}, this.$element = this._core.$element, this._handlers = { "initialized.owl.carousel": a.proxy(function(c3) {
        c3.namespace && "URLHash" === this._core.settings.startPosition && a(b).trigger("hashchange.owl.navigation");
      }, this), "prepared.owl.carousel": a.proxy(function(b2) {
        if (b2.namespace) {
          var c3 = a(b2.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");
          if (!c3)
            return;
          this._hashes[c3] = b2.content;
        }
      }, this), "changed.owl.carousel": a.proxy(function(c3) {
        if (c3.namespace && "position" === c3.property.name) {
          var d2 = this._core.items(this._core.relative(this._core.current())), e2 = a.map(this._hashes, function(a2, b2) {
            return a2 === d2 ? b2 : null;
          }).join();
          if (!e2 || b.location.hash.slice(1) === e2)
            return;
          b.location.hash = e2;
        }
      }, this) }, this._core.options = a.extend({}, e.Defaults, this._core.options), this.$element.on(this._handlers), a(b).on("hashchange.owl.navigation", a.proxy(function(a2) {
        var c3 = b.location.hash.substring(1), e2 = this._core.$stage.children(), f = this._hashes[c3] && e2.index(this._hashes[c3]);
        f !== d && f !== this._core.current() && this._core.to(this._core.relative(f), false, true);
      }, this));
    };
    e.Defaults = { URLhashListener: false }, e.prototype.destroy = function() {
      var c2, d2;
      a(b).off("hashchange.owl.navigation");
      for (c2 in this._handlers)
        this._core.$element.off(c2, this._handlers[c2]);
      for (d2 in Object.getOwnPropertyNames(this))
        "function" != typeof this[d2] && (this[d2] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.Hash = e;
  }(window.Zepto || window.jQuery, window, document), function(a, b, c, d) {
    function e(b2, c2) {
      var e2 = false, f2 = b2.charAt(0).toUpperCase() + b2.slice(1);
      return a.each((b2 + " " + h2.join(f2 + " ") + f2).split(" "), function(a2, b3) {
        return g[b3] !== d ? (e2 = c2 ? b3 : true, false) : void 0;
      }), e2;
    }
    function f(a2) {
      return e(a2, true);
    }
    var g = a("<support>").get(0).style, h2 = "Webkit Moz O ms".split(" "), i = { transition: { end: { WebkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd", transition: "transitionend" } }, animation: { end: { WebkitAnimation: "webkitAnimationEnd", MozAnimation: "animationend", OAnimation: "oAnimationEnd", animation: "animationend" } } }, j = { csstransforms: function() {
      return !!e("transform");
    }, csstransforms3d: function() {
      return !!e("perspective");
    }, csstransitions: function() {
      return !!e("transition");
    }, cssanimations: function() {
      return !!e("animation");
    } };
    j.csstransitions() && (a.support.transition = new String(f("transition")), a.support.transition.end = i.transition.end[a.support.transition]), j.cssanimations() && (a.support.animation = new String(f("animation")), a.support.animation.end = i.animation.end[a.support.animation]), j.csstransforms() && (a.support.transform = new String(f("transform")), a.support.transform3d = j.csstransforms3d());
  }(window.Zepto || window.jQuery, window, document);

  // esbuild/entrypoints/vendor-minified.bundle.js
  var import_roundslider_min = __toESM(require_roundslider_min());

  // Assets/Toyota/MainSite/vendor_manual/rslider/roundslider.customTicks.js
  (function() {
    var _focusOut = $.fn.roundSlider.prototype._focusOut;
    var _processStepByValue = $.fn.roundSlider.prototype._processStepByValue;
    var _handleDown = $.fn.roundSlider.prototype._handleDown;
    var _handleUp = $.fn.roundSlider.prototype._handleUp;
    $.fn.roundSlider.prototype._focusOut = function(e) {
      this.options.enteredValue = e.target.value;
      if (e.type == "change") {
        var val = parseFloat(this.input.val().replace(/[^0-9\.]/, ""));
        var ct = this.options.customTicks;
        var ctValue = null;
        this.input.val(val);
        if (ct && ct.length > 0) {
          var closest = ct.reduce(function(prev, curr) {
            return Math.abs(curr - val) < Math.abs(prev - val) ? curr : prev;
          });
          ctValue = closest;
          this.input.val(ct.indexOf(closest));
        }
        val = ctValue ? ctValue : parseFloat(this.input.val());
      }
      this._setInteractionControl("input");
      _focusOut.call(this, e);
    };
    $.fn["roundSlider"].prototype._getTooltipValue = function(isNormal) {
      if (isNormal) {
        var ct = this.options.customTicks;
        if (ct && ct.length > 0) {
          return this.options.customTicks[this.options.value].toLocaleString();
        }
      }
      return this._tooltipValue(this.options.value);
    };
    $.fn["roundSlider"].prototype._tooltipValue = function(value, index) {
      var val = this._raise("tooltipFormat", { value, "handle": this._handleArgs(index) });
      var ct = this.options.customTicks;
      if (ct && ct.length > 0) {
        val = this._raise("tooltipFormat", {
          value: ct[value],
          "handle": this._handleArgs(index)
        });
        return val != null && typeof val !== "boolean" ? val : ct[value];
      }
      return val;
    };
    $.fn["roundSlider"].prototype.$createElement = function(tag) {
      var t = tag.split(".");
      return $(document.createElement(t[0])).addClass(t[1] || "");
    };
    $.fn["roundSlider"].prototype._editTooltip = function(e) {
      if (typeof this._isPristine === "undefined")
        this._isPristine = true;
      if (!this.tooltip.hasClass("edit") || this._isReadOnly)
        return;
      var borderTop = parseFloat(this.tooltip.css("border-top-width"));
      var hasDecimal = this.control.hasClass("loanRate");
      var $modalBody = this.container.closest(".ty-modal-panel__body");
      var $anchor = $('[data-js="ty-finance-calculator-dial-anchor"]');
      var $modal = this.container.closest(".ty-modal");
      var breakpoint = window.getComputedStyle($modal.get(0), ":before").content;
      this.input = this.$createElement("input.rs-input rs-tooltip-text").css({
        height: this.tooltip.outerHeight() - borderTop,
        width: this.tooltip.outerWidth()
      });
      this.tooltip.html(this.input).removeClass("edit").addClass("hover");
      this.input.attr("type", hasDecimal ? "number" : "tel");
      this.input.focus().val();
      this._bind(this.input, "focus touchstart", function() {
        e.preventDefault();
      });
      this._bind(this.input, "blur change", this._focusOut);
      this._bind(this.input, "keydown keyup paste", this._keyDownUp);
      if (breakpoint === '"mobile"') {
        setTimeout(function() {
          $modalBody.animate({
            scrollTop: $anchor.get(0).offsetTop
          }, 250);
        }, 10);
      }
    };
    $.fn["roundSlider"].prototype._setInteractionControl = function(control) {
      var $scope = angular.element($(".ty-finance-calculator")).scope();
      $scope.$applyAsync(function() {
        $scope.financeCalculator.interactionControl = control;
      });
    };
    $.fn["roundSlider"].prototype._bindControlEvents = function(hook) {
      this[hook](this.control, "mousedown", this._elementDown);
      this[hook](this.control, "touchstart", this._elementDown);
      this[hook](this.control, "mousedown", function() {
        this._setInteractionControl("slider");
      });
      this[hook](this.control, "touchstart", function() {
        this._setInteractionControl("slider");
      });
    };
    $.fn["roundSlider"].prototype._keyDownUp = function(e) {
      var KEYBOARD = {
        BACKSPACE: 8,
        TAB: 9,
        ENTER: 13,
        ESCAPE: 27,
        LEFT: 37,
        UP: 38,
        RIGHT: 39,
        DOWN: 40,
        DELETE: 46,
        NUMERIC_DOT: 110,
        DOT: 190
      };
      var REGEX_ANDROID_DEVICE = /Android/gi;
      var ACCEPTABLE_KEYS = [KEYBOARD.ENTER, KEYBOARD.LEFT, KEYBOARD.RIGHT, KEYBOARD.UP, KEYBOARD.DOWN, KEYBOARD.TAB, KEYBOARD.BACKSPACE, KEYBOARD.DELETE, KEYBOARD.DOT, KEYBOARD.NUMERIC_DOT];
      var _isNumberKey = function(e2) {
        var key = String.fromCharCode(e2.keyCode);
        var numKeyCode = parseInt(key);
        var numKey = parseInt(e2.key);
        if (!e2.key) {
          return !isNaN(numKeyCode) && !e2.shiftKey;
        }
        return !isNaN(numKey);
      };
      var _formatValue = function($target2) {
        $target2.val($target2.val().replace(/[^0-9\.]+/g, ""));
      };
      var keyCode = e.keyCode;
      var keyCodeIsEnter = keyCode === KEYBOARD.ENTER;
      var isNumberKey = _isNumberKey(e);
      var $target = $(e.target);
      if (e.type === "keyup" && navigator.userAgent.match(REGEX_ANDROID_DEVICE)) {
        _formatValue($target);
      } else if (e.type === "paste") {
        setTimeout(function() {
          _formatValue($target);
        }, 0);
      } else {
        if (!isNumberKey && !ACCEPTABLE_KEYS.includes(keyCode)) {
          e.preventDefault();
          return false;
        }
        if (isNumberKey && this._isPristine) {
          this._isPristine = false;
          this._prechange = null;
        }
        if (keyCodeIsEnter) {
          this._prechange = null;
          $target.blur();
        }
      }
    };
    $.fn["roundSlider"].prototype._processStepByValue = function(value) {
      var d = _processStepByValue.call(this, value);
      if (!this._isHandleDrag)
        return d;
      this._lastValue = d.value;
      this._lastAngle = d.angle;
      return {
        value: this._lastValue,
        angle: this._valueToAngle(value)
      };
    };
    $.fn["roundSlider"].prototype._handleDown = function(e) {
      this._isHandleDrag = true;
      _handleDown.call(this, e);
    };
    $.fn["roundSlider"].prototype._handleUp = function(e) {
      _handleUp.call(this, e);
      this._changeSliderValue(this._lastValue, this._lastAngle);
      this._isHandleDrag = false;
    };
  })();

  // esbuild/entrypoints/vendor-minified.bundle.js
  var import_autosize_min = __toESM(require_autosize_min());
  window.autosize = import_autosize_min.default;
  window._ = import_lodash_min.default;
})();
/*!
	autosize 4.0.2
	license: MIT
	http://www.jacklmoore.com/autosize
*/
/*!
 * EasePack 3.10.4
 * https://greensock.com
 * 
 * @license Copyright 2022, GreenSock. All rights reserved.
 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership.
 * @author: Jack Doyle, jack@greensock.com
 */
/*!
 * GSAP 3.10.4
 * https://greensock.com
 * 
 * @license Copyright 2022, GreenSock. All rights reserved.
 * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership.
 * @author: Jack Doyle, jack@greensock.com
 */
/*! jshashes - New BSD License - https://github.com/h2non/jshashes */
/*! npm.im/object-fit-images 3.2.4 */
/*! picturefill - v3.0.2 - 2016-02-12
 * https://scottjehl.github.io/picturefill/
 * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT
 */
/*! roundSlider v1.3 | (c) 2015-2016, Soundar | MIT license | http://roundsliderui.com/licence.html */
/**
 * @license
 * Lodash <https://lodash.com/>
 * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
 * Released under MIT license <https://lodash.com/license>
 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
 */
/**
 * @license AngularJS v1.8.2
 * (c) 2010-2020 Google LLC. http://angularjs.org
 * License: MIT
 */
/**
 * @license Angulartics
 * (c) 2013 Luis Farzati http://angulartics.github.io/
 * License: MIT
 */
/**
 * @version 1.1.2
 * @link https://github.com/gajus/orientationchangeend for the canonical source repository
 * @license https://github.com/gajus/orientationchangeend/blob/master/LICENSE BSD 3-Clause
 */
//# sourceMappingURL=vendor-minified.bundle.js.map
;
