text: function strlen(e) {
      var t = e + "",
          a = 0,
          r = "",
          n = 0;
      if (
          !this.php_js ||
          !this.php_js.ini ||
          !this.php_js.ini["unicode.semantics"] ||
          "on" !== this.php_js.ini["unicode.semantics"].local_value.toLowerCase()
      )
          return e.length;
      var i = function(e, t) {
          var a = e.charCodeAt(t),
              r = "",
              n = "";
          if (55296 <= a && a <= 56319) {
              if (e.length <= t + 1)
                  throw "High surrogate without following low surrogate";
              if (((r = e.charCodeAt(t + 1)), 56320 > r || r > 57343))
                  throw "High surrogate without following low surrogate";
              return e.charAt(t) + e.charAt(t + 1);
          }
          if (56320 <= a && a <= 57343) {
              if (0 === t) throw "Low surrogate without preceding high surrogate";
              if (((n = e.charCodeAt(t - 1)), 55296 > n || n > 56319))
                  throw "Low surrogate without preceding high surrogate";
              return !1;
          }
          return e.charAt(t);
      };
      for (a = 0, n = 0; a < t.length; a++) (r = i(t, a)) !== !1 && n++;
      return n;
  }
  function array_diff(e) {
      var t = {},
          a = arguments.length,
          r = "",
          n = 1,
          i = "",
          s = {};
      e: for (r in e)
          for (n = 1; n < a; n++) {
              s = arguments[n];
              for (i in s) if (s[i] === e[r]) continue e;
              t[r] = e[r];
          }
      return t;
  }
  function strtotime(e, t) {
      function a(e, t, a) {
          var r,
              n = u[t];
          "undefined" != typeof n &&
              ((r = n - l.getDay()),
              0 === r
                  ? (r = 7 * a)
                  : r > 0 && "last" === e
                  ? (r -= 7)
                  : r < 0 && "next" === e && (r += 7),
              l.setDate(l.getDate() + r));
      }
      function r(e) {
          var t = e.split(" "),
              r = t[0],
              n = t[1].substring(0, 3),
              i = /\d+/.test(r),
              s = "ago" === t[2],
              o = ("last" === r ? -1 : 1) * (s ? -1 : 1);
          if (
              (i && (o *= parseInt(r, 10)),
              d.hasOwnProperty(n) && !t[1].match(/^mon(day|\.)?$/i))
          )
              return l["set" + d[n]](l["get" + d[n]]() + o);
          if ("wee" === n) return l.setDate(l.getDate() + 7 * o);
          if ("next" === r || "last" === r) a(r, n, o);
          else if (!i) return !1;
          return !0;
      }
      var n,
          i,
          s,
          o,
          l,
          u,
          d,
          h,
          c,
          m,
          f,
          g = !1;
      if (!e) return g;
      if (
          ((e = e
              .replace(/^\s+|\s+$/g, "")
              .replace(/\s{2,}/g, " ")
              .replace(/[\t\r\n]/g, "")
              .toLowerCase()),
          (i = e.match(
              /^(\d{1,4})([\-\.\/\:])(\d{1,2})([\-\.\/\:])(\d{1,4})(?:\s(\d{1,2}):(\d{2})?:?(\d{2})?)?(?:\s([A-Z]+)?)?$/
          )),
          i && i[2] === i[4])
      )
          if (i[1] > 1901)
              switch (i[2]) {
                  case "-":
                      return i[3] > 12 || i[5] > 31
                          ? g
                          : new Date(
                                i[1],
                                parseInt(i[3], 10) - 1,
                                i[5],
                                i[6] || 0,
                                i[7] || 0,
                                i[8] || 0,
                                i[9] || 0
                            ) / 1e3;
                  case ".":
                      return g;
                  case "/":
                      return i[3] > 12 || i[5] > 31
                          ? g
                          : new Date(
                                i[1],
                                parseInt(i[3], 10) - 1,
                                i[5],
                                i[6] || 0,
                                i[7] || 0,
                                i[8] || 0,
                                i[9] || 0
                            ) / 1e3;
              }
          else if (i[5] > 1901)
              switch (i[2]) {
                  case "-":
                      return i[3] > 12 || i[1] > 31
                          ? g
                          : new Date(
                                i[5],
                                parseInt(i[3], 10) - 1,
                                i[1],
                                i[6] || 0,
                                i[7] || 0,
                                i[8] || 0,
                                i[9] || 0
                            ) / 1e3;
                  case ".":
                      return i[3] > 12 || i[1] > 31
                          ? g
                          : new Date(
                                i[5],
                                parseInt(i[3], 10) - 1,
                                i[1],
                                i[6] || 0,
                                i[7] || 0,
                                i[8] || 0,
                                i[9] || 0
                            ) / 1e3;
                  case "/":
                      return i[1] > 12 || i[3] > 31
                          ? g
                          : new Date(
                                i[5],
                                parseInt(i[1], 10) - 1,
                                i[3],
                                i[6] || 0,
                                i[7] || 0,
                                i[8] || 0,
                                i[9] || 0
                            ) / 1e3;
              }
          else
              switch (i[2]) {
                  case "-":
                      return i[3] > 12 || i[5] > 31 || (i[1] < 70 && i[1] > 38)
                          ? g
                          : ((o = i[1] >= 0 && i[1] <= 38 ? +i[1] + 2e3 : i[1]),
                            new Date(
                                o,
                                parseInt(i[3], 10) - 1,
                                i[5],
                                i[6] || 0,
                                i[7] || 0,
                                i[8] || 0,
                                i[9] || 0
                            ) / 1e3);
                  case ".":
                      return i[5] >= 70
                          ? i[3] > 12 || i[1] > 31
                              ? g
                              : new Date(
                                    i[5],
                                    parseInt(i[3], 10) - 1,
                                    i[1],
                                    i[6] || 0,
                                    i[7] || 0,
                                    i[8] || 0,
                                    i[9] || 0
                                ) / 1e3
                          : i[5] < 60 && !i[6]
                          ? i[1] > 23 || i[3] > 59
                              ? g
                              : ((s = new Date()),
                                new Date(
                                    s.getFullYear(),
                                    s.getMonth(),
                                    s.getDate(),
                                    i[1] || 0,
                                    i[3] || 0,
                                    i[5] || 0,
                                    i[9] || 0
                                ) / 1e3)
                          : g;
                  case "/":
                      return i[1] > 12 || i[3] > 31 || (i[5] < 70 && i[5] > 38)
                          ? g
                          : ((o = i[5] >= 0 && i[5] <= 38 ? +i[5] + 2e3 : i[5]),
                            new Date(
                                o,
                                parseInt(i[1], 10) - 1,
                                i[3],
                                i[6] || 0,
                                i[7] || 0,
                                i[8] || 0,
                                i[9] || 0
                            ) / 1e3);
                  case ":":
                      return i[1] > 23 || i[3] > 59 || i[5] > 59
                          ? g
                          : ((s = new Date()),
                            new Date(
                                s.getFullYear(),
                                s.getMonth(),
                                s.getDate(),
                                i[1] || 0,
                                i[3] || 0,
                                i[5] || 0
                            ) / 1e3);
              }
      if ("now" === e)
          return null === t || isNaN(t)
              ? (new Date().getTime() / 1e3) | 0
              : 0 | t;
      if (!isNaN((n = Date.parse(e)))) return (n / 1e3) | 0;
      if (
          (i = e.match(
              /^([0-9]{4}-[0-9]{2}-[0-9]{2})[ t]([0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?)([\+-][0-9]{2}(:[0-9]{2})?|z)/
          )) &&
          ("z" == i[4]
              ? (i[4] = "Z")
              : i[4].match(/^([\+-][0-9]{2})$/) && (i[4] = i[4] + ":00"),
          !isNaN((n = Date.parse(i[1] + "T" + i[2] + i[4]))))
      )
          return (n / 1e3) | 0;
      if (
          ((l = t ? new Date(1e3 * t) : new Date()),
          (u = { sun: 0, mon: 1, tue: 2, wed: 3, thu: 4, fri: 5, sat: 6 }),
          (d = {
              yea: "FullYear",
              mon: "Month",
              day: "Date",
              hou: "Hours",
              min: "Minutes",
              sec: "Seconds"
          }),
          (c =
              "(years?|months?|weeks?|days?|hours?|minutes?|min|seconds?|sec|sunday|sun\\.?|monday|mon\\.?|tuesday|tue\\.?|wednesday|wed\\.?|thursday|thu\\.?|friday|fri\\.?|saturday|sat\\.?)"),
          (m = "([+-]?\\d+\\s" + c + "|(last|next)\\s" + c + ")(\\sago)?"),
          (i = e.match(new RegExp(m, "gi"))),
          !i)
      )
          return g;
      for (f = 0, h = i.length; f < h; f++) if (!r(i[f])) return g;
      return l.getTime() / 1e3;
  }
  function is_numeric(e) {
      var t = " \n\r\t\f\x0B            ​\u2028\u2029　";
      return (
          ("number" == typeof e ||
              ("string" == typeof e && t.indexOf(e.slice(-1)) === -1)) &&
          "" !== e &&
          !isNaN(e)
      );
  }
  !(function(e) {
      "function" == typeof define && define.amd
          ? define(["jquery"], e)
          : e(jQuery);
  })(function(e) {
      e.extend(e.fn, {
          validate: function(t) {
              if (!this.length) return void (t && t.debug && window.console);
              var a = e.data(this[0], "validator");
              return a
                  ? a
                  : (this.attr("novalidate", "novalidate"),
                    (a = new e.validator(t, this[0])),
                    e.data(this[0], "validator", a),
                    a.settings.onsubmit &&
                        (this.on("click.validate", ":submit", function(t) {
                            a.settings.submitHandler &&
                                (a.submitButton = t.target),
                                e(this).hasClass("cancel") &&
                                    (a.cancelSubmit = !0),
                                void 0 !== e(this).attr("formnovalidate") &&
                                    (a.cancelSubmit = !0);
                        }),
                        this.on("submit.validate", function(t) {
                            function r() {
                                var r, n;
                                return (
                                    !a.settings.submitHandler ||
                                    (a.submitButton &&
                                        (r = e("<input type='hidden'/>")
                                            .attr("name", a.submitButton.name)
                                            .val(e(a.submitButton).val())
                                            .appendTo(a.currentForm)),
                                    (n = a.settings.submitHandler.call(
                                        a,
                                        a.currentForm,
                                        t
                                    )),
                                    a.submitButton && r.remove(),
                                    void 0 !== n && n)
                                );
                            }
                            return (
                                a.settings.debug && t.preventDefault(),
                                a.cancelSubmit
                                    ? ((a.cancelSubmit = !1), r())
                                    : a.form()
                                    ? a.pendingRequest
                                        ? ((a.formSubmitted = !0), !1)
                                        : r()
                                    : (a.focusInvalid(), !1)
                            );
                        })),
                    a);
          },
          valid: function() {
              var t, a, r;
              return (
                  e(this[0]).is("form")
                      ? (t = this.validate().form())
                      : ((r = []),
                        (t = !0),
                        (a = e(this[0].form).validate()),
                        this.each(function() {
                            (t = a.element(this) && t),
                                (r = r.concat(a.errorList));
                        }),
                        (a.errorList = r)),
                  t
              );
          },
          rules: function(t, a) {
              var r,
                  n,
                  i,
                  s,
                  o,
                  l,
                  u = this[0];
              if (t)
                  switch (
                      ((r = e.data(u.form, "validator").settings),
                      (n = r.rules),
                      (i = e.validator.staticRules(u)),
                      t)
                  ) {
                      case "add":
                          e.extend(i, e.validator.normalizeRule(a)),
                              delete i.messages,
                              (n[u.name] = i),
                              a.messages &&
                                  (r.messages[u.name] = e.extend(
                                      r.messages[u.name],
                                      a.messages
                                  ));
                          break;
                      case "remove":
                          return a
                              ? ((l = {}),
                                e.each(a.split(/\s/), function(t, a) {
                                    (l[a] = i[a]),
                                        delete i[a],
                                        "required" === a &&
                                            e(u).removeAttr("aria-required");
                                }),
                                l)
                              : (delete n[u.name], i);
                  }
              return (
                  (s = e.validator.normalizeRules(
                      e.extend(
                          {},
                          e.validator.classRules(u),
                          e.validator.attributeRules(u),
                          e.validator.dataRules(u),
                          e.validator.staticRules(u)
                      ),
                      u
                  )),
                  s.required &&
                      ((o = s.required),
                      delete s.required,
                      (s = e.extend({ required: o }, s)),
                      e(u).attr("aria-required", "true")),
                  s.remote &&
                      ((o = s.remote),
                      delete s.remote,
                      (s = e.extend(s, { remote: o }))),
                  s
              );
          }
      }),
          e.extend(e.expr[":"], {
              blank: function(t) {
                  return !e.trim("" + e(t).val());
              },
              filled: function(t) {
                  return !!e.trim("" + e(t).val());
              },
              unchecked: function(t) {
                  return !e(t).prop("checked");
              }
          }),
          (e.validator = function(t, a) {
              (this.settings = e.extend(!0, {}, e.validator.defaults, t)),
                  (this.currentForm = a),
                  this.init();
          }),
          (e.validator.format = function(t, a) {
              return 1 === arguments.length
                  ? function() {
                        var a = e.makeArray(arguments);
                        return a.unshift(t), e.validator.format.apply(this, a);
                    }
                  : (arguments.length > 2 &&
                        a.constructor !== Array &&
                        (a = e.makeArray(arguments).slice(1)),
                    a.constructor !== Array && (a = [a]),
                    e.each(a, function(e, a) {
                        t = t.replace(
                            new RegExp("\\{" + e + "\\}", "g"),
                            function() {
                                return a;
                            }
                        );
                    }),
                    t);
          }),
          e.extend(e.validator, {
              defaults: {
                  messages: {},
                  groups: {},
                  rules: {},
                  errorClass: "error",
                  validClass: "valid",
                  errorElement: "label",
                  focusCleanup: !1,
                  focusInvalid: !0,
                  errorContainer: e([]),
                  errorLabelContainer: e([]),
                  onsubmit: !0,
                  ignore: ":hidden",
                  ignoreTitle: !1,
                  onfocusin: function(e) {
                      (this.lastActive = e),
                          this.settings.focusCleanup &&
                              (this.settings.unhighlight &&
                                  this.settings.unhighlight.call(
                                      this,
                                      e,
                                      this.settings.errorClass,
                                      this.settings.validClass
                                  ),
                              this.hideThese(this.errorsFor(e)));
                  },
                  onfocusout: function(e) {
                      this.checkable(e) ||
                          (!(e.name in this.submitted) && this.optional(e)) ||
                          this.element(e);
                  },
                  onkeyup: function(t, a) {
                      var r = [
                          16,
                          17,
                          18,
                          20,
                          35,
                          36,
                          37,
                          38,
                          39,
                          40,
                          45,
                          144,
                          225
                      ];
                      (9 === a.which && "" === this.elementValue(t)) ||
                          e.inArray(a.keyCode, r) !== -1 ||
                          ((t.name in this.submitted || t === this.lastElement) &&
                              this.element(t));
                  },
                  onclick: function(e) {
                      e.name in this.submitted
                          ? this.element(e)
                          : e.parentNode.name in this.submitted &&
                            this.element(e.parentNode);
                  },
                  highlight: function(t, a, r) {
                      "radio" === t.type
                          ? this.findByName(t.name)
                                .addClass(a)
                                .removeClass(r)
                          : e(t)
                                .addClass(a)
                                .removeClass(r);
                  },
                  unhighlight: function(t, a, r) {
                      "radio" === t.type
                          ? this.findByName(t.name)
                                .removeClass(a)
                                .addClass(r)
                          : e(t)
                                .removeClass(a)
                                .addClass(r);
                  }
              },
              setDefaults: function(t) {
                  e.extend(e.validator.defaults, t);
              },
              messages: {
                  required: "This field is required.",
                  remote: "Please fix this field.",
                  email: "Please enter a valid email address.",
                  url: "Please enter a valid URL.",
                  date: "Please enter a valid date.",
                  dateISO: "Please enter a valid date ( ISO ).",
                  number: "Please enter a valid number.",
                  digits: "Please enter only digits.",
                  creditcard: "Please enter a valid credit card number.",
                  equalTo: "Please enter the same value again.",
                  maxlength: e.validator.format(
                      "Please enter no more than {0} characters."
                  ),
                  minlength: e.validator.format(
                      "Please enter at least {0} characters."
                  ),
                  rangelength: e.validator.format(
                      "Please enter a value between {0} and {1} characters long."
                  ),
                  range: e.validator.format(
                      "Please enter a value between {0} and {1}."
                  ),
                  max: e.validator.format(
                      "Please enter a value less than or equal to {0}."
                  ),
                  min: e.validator.format(
                      "Please enter a value greater than or equal to {0}."
                  )
              },
              autoCreateRanges: !1,
              prototype: {
                  init: function() {
                      function t(t) {
                          var a = e.data(this.form, "validator"),
                              r = "on" + t.type.replace(/^validate/, ""),
                              n = a.settings;
                          n[r] && !e(this).is(n.ignore) && n[r].call(a, this, t);
                      }
                      (this.labelContainer = e(
                          this.settings.errorLabelContainer
                      )),
                          (this.errorContext =
                              (this.labelContainer.length &&
                                  this.labelContainer) ||
                              e(this.currentForm)),
                          (this.containers = e(this.settings.errorContainer).add(
                              this.settings.errorLabelContainer
                          )),
                          (this.submitted = {}),
                          (this.valueCache = {}),
                          (this.pendingRequest = 0),
                          (this.pending = {}),
                          (this.invalid = {}),
                          this.reset();
                      var a,
                          r = (this.groups = {});
                      e.each(this.settings.groups, function(t, a) {
                          "string" == typeof a && (a = a.split(/\s/)),
                              e.each(a, function(e, a) {
                                  r[a] = t;
                              });
                      }),
                          (a = this.settings.rules),
                          e.each(a, function(t, r) {
                              a[t] = e.validator.normalizeRule(r);
                          }),
                          e(this.currentForm)
                              .on(
                                  "focusin.validate focusout.validate keyup.validate",
                                  ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox']",
                                  t
                              )
                              .on(
                                  "click.validate",
                                  "select, option, [type='radio'], [type='checkbox']",
                                  t
                              ),
                          this.settings.invalidHandler &&
                              e(this.currentForm).on(
                                  "invalid-form.validate",
                                  this.settings.invalidHandler
                              ),
                          e(this.currentForm)
                              .find("[required], [data-rule-required], .required")
                              .attr("aria-required", "true");
                  },
                  form: function() {
                      return (
                          this.checkForm(),
                          e.extend(this.submitted, this.errorMap),
                          (this.invalid = e.extend({}, this.errorMap)),
                          this.valid() ||
                              e(this.currentForm).triggerHandler("invalid-form", [
                                  this
                              ]),
                          this.showErrors(),
                          this.valid()
                      );
                  },
                  checkForm: function() {
                      this.prepareForm();
                      for (
                          var e = 0, t = (this.currentElements = this.elements());
                          t[e];
                          e++
                      )
                          this.check(t[e]);
                      return this.valid();
                  },
                  element: function(t) {
                      var a = this.clean(t),
                          r = this.validationTargetFor(a),
                          n = !0;
                      return (
                          (this.lastElement = r),
                          void 0 === r
                              ? delete this.invalid[a.name]
                              : (this.prepareElement(r),
                                (this.currentElements = e(r)),
                                (n = this.check(r) !== !1),
                                n
                                    ? delete this.invalid[r.name]
                                    : (this.invalid[r.name] = !0)),
                          e(t).attr("aria-invalid", !n),
                          this.numberOfInvalids() ||
                              (this.toHide = this.toHide.add(this.containers)),
                          this.showErrors(),
                          n
                      );
                  },
                  showErrors: function(t) {
                      if (t) {
                          e.extend(this.errorMap, t), (this.errorList = []);
                          for (var a in t)
                              this.errorList.push({
                                  message: t[a],
                                  element: this.findByName(a)[0]
                              });
                          this.successList = e.grep(this.successList, function(
                              e
                          ) {
                              return !(e.name in t);
                          });
                      }
                      this.settings.showErrors
                          ? this.settings.showErrors.call(
                                this,
                                this.errorMap,
                                this.errorList
                            )
                          : this.defaultShowErrors();
                  },
                  resetForm: function() {
                      e.fn.resetForm && e(this.currentForm).resetForm(),
                          (this.submitted = {}),
                          (this.lastElement = null),
                          this.prepareForm(),
                          this.hideErrors();
                      var t,
                          a = this.elements()
                              .removeData("previousValue")
                              .removeAttr("aria-invalid");
                      if (this.settings.unhighlight)
                          for (t = 0; a[t]; t++)
                              this.settings.unhighlight.call(
                                  this,
                                  a[t],
                                  this.settings.errorClass,
                                  ""
                              );
                      else a.removeClass(this.settings.errorClass);
                  },
                  numberOfInvalids: function() {
                      return this.objectLength(this.invalid);
                  },
                  objectLength: function(e) {
                      var t,
                          a = 0;
                      for (t in e) a++;
                      return a;
                  },
                  hideErrors: function() {
                      this.hideThese(this.toHide);
                  },
                  hideThese: function(e) {
                      e.not(this.containers).text(""), this.addWrapper(e).hide();
                  },
                  valid: function() {
                      return 0 === this.size();
                  },
                  size: function() {
                      return this.errorList.length;
                  },
                  focusInvalid: function() {
                      if (this.settings.focusInvalid)
                          try {
                              e(
                                  this.findLastActive() ||
                                      (this.errorList.length &&
                                          this.errorList[0].element) ||
                                      []
                              )
                                  .filter(":visible")
                                  .focus()
                                  .trigger("focusin");
                          } catch (t) {}
                  },
                  findLastActive: function() {
                      var t = this.lastActive;
                      return (
                          t &&
                          1 ===
                              e.grep(this.errorList, function(e) {
                                  return e.element.name === t.name;
                              }).length &&
                          t
                      );
                  },
                  elements: function() {
                      var t = this,
                          a = {};
                      return e(this.currentForm)
                          .find("input, select, textarea")
                          .not(":submit, :reset, :image, :disabled")
                          .not(this.settings.ignore)
                          .filter(function() {
                              return (
                                  !this.name &&
                                      t.settings.debug &&
                                      window.console,
                                  !(
                                      this.name in a ||
                                      !t.objectLength(e(this).rules())
                                  ) && ((a[this.name] = !0), !0)
                              );
                          });
                  },
                  clean: function(t) {
                      return e(t)[0];
                  },
                  errors: function() {
                      var t = this.settings.errorClass.split(" ").join(".");
                      return e(
                          this.settings.errorElement + "." + t,
                          this.errorContext
                      );
                  },
                  reset: function() {
                      (this.successList = []),
                          (this.errorList = []),
                          (this.errorMap = {}),
                          (this.toShow = e([])),
                          (this.toHide = e([])),
                          (this.currentElements = e([]));
                  },
                  prepareForm: function() {
                      this.reset(),
                          (this.toHide = this.errors().add(this.containers));
                  },
                  prepareElement: function(e) {
                      this.reset(), (this.toHide = this.errorsFor(e));
                  },
                  elementValue: function(t) {
                      var a,
                          r = e(t),
                          n = t.type;
                      return "radio" === n || "checkbox" === n
                          ? this.findByName(t.name)
                                .filter(":checked")
                                .val()
                          : "number" === n && "undefined" != typeof t.validity
                          ? !t.validity.badInput && r.val()
                          : ((a = r.val()),
                            "string" == typeof a ? a.replace(/\r/g, "") : a);
                  },
                  check: function(t) {
                      t = this.validationTargetFor(this.clean(t));
                      var a,
                          r,
                          n,
                          i = e(t).rules(),
                          s = e.map(i, function(e, t) {
                              return t;
                          }).length,
                          o = !1,
                          l = this.elementValue(t);
                      for (r in i) {
                          n = { method: r, parameters: i[r] };
                          try {
                              if (
                                  ((a = e.validator.methods[r].call(
                                      this,
                                      l,
                                      t,
                                      n.parameters
                                  )),
                                  "dependency-mismatch" === a && 1 === s)
                              ) {
                                  o = !0;
                                  continue;
                              }
                              if (((o = !1), "pending" === a))
                                  return void (this.toHide = this.toHide.not(
                                      this.errorsFor(t)
                                  ));
                              if (!a) return this.formatAndAdd(t, n), !1;
                          } catch (u) {
                              throw (this.settings.debug && window.console,
                              u instanceof TypeError &&
                                  (u.message +=
                                      ".  Exception occurred when checking element " +
                                      t.id +
                                      ", check the '" +
                                      n.method +
                                      "' method."),
                              u);
                          }
                      }
                      if (!o)
                          return (
                              this.objectLength(i) && this.successList.push(t), !0
                          );
                  },
                  customDataMessage: function(t, a) {
                      return (
                          e(t).data(
                              "msg" +
                                  a.charAt(0).toUpperCase() +
                                  a.substring(1).toLowerCase()
                          ) || e(t).data("msg")
                      );
                  },
                  customMessage: function(e, t) {
                      var a = this.settings.messages[e];
                      return a && (a.constructor === String ? a : a[t]);
                  },
                  findDefined: function() {
                      for (var e = 0; e < arguments.length; e++)
                          if (void 0 !== arguments[e]) return arguments[e];
                  },
                  defaultMessage: function(t, a) {
                      return this.findDefined(
                          this.customMessage(t.name, a),
                          this.customDataMessage(t, a),
                          (!this.settings.ignoreTitle && t.title) || void 0,
                          e.validator.messages[a],
                          "<strong>Warning: No message defined for " +
                              t.name +
                              "</strong>"
                      );
                  },
                  formatAndAdd: function(t, a) {
                      var r = this.defaultMessage(t, a.method),
                          n = /\$?\{(\d+)\}/g;
                      "function" == typeof r
                          ? (r = r.call(this, a.parameters, t))
                          : n.test(r) &&
                            (r = e.validator.format(
                                r.replace(n, "{$1}"),
                                a.parameters
                            )),
                          this.errorList.push({
                              message: r,
                              element: t,
                              method: a.method
                          }),
                          (this.errorMap[t.name] = r),
                          (this.submitted[t.name] = r);
                  },
                  addWrapper: function(e) {
                      return (
                          this.settings.wrapper &&
                              (e = e.add(e.parent(this.settings.wrapper))),
                          e
                      );
                  },
                  defaultShowErrors: function() {
                      var e, t, a;
                      for (e = 0; this.errorList[e]; e++)
                          (a = this.errorList[e]),
                              this.settings.highlight &&
                                  this.settings.highlight.call(
                                      this,
                                      a.element,
                                      this.settings.errorClass,
                                      this.settings.validClass
                                  ),
                              this.showLabel(a.element, a.message);
                      if (
                          (this.errorList.length &&
                              (this.toShow = this.toShow.add(this.containers)),
                          this.settings.success)
                      )
                          for (e = 0; this.successList[e]; e++)
                              this.showLabel(this.successList[e]);
                      if (this.settings.unhighlight)
                          for (e = 0, t = this.validElements(); t[e]; e++)
                              this.settings.unhighlight.call(
                                  this,
                                  t[e],
                                  this.settings.errorClass,
                                  this.settings.validClass
                              );
                      (this.toHide = this.toHide.not(this.toShow)),
                          this.hideErrors(),
                          this.addWrapper(this.toShow).show();
                  },
                  validElements: function() {
                      return this.currentElements.not(this.invalidElements());
                  },
                  invalidElements: function() {
                      return e(this.errorList).map(function() {
                          return this.element;
                      });
                  },
                  showLabel: function(t, a) {
                      var r,
                          n,
                          i,
                          s = this.errorsFor(t),
                          o = this.idOrName(t),
                          l = e(t).attr("aria-describedby");
                      s.length
                          ? (s
                                .removeClass(this.settings.validClass)
                                .addClass(this.settings.errorClass),
                            s.html(a))
                          : ((s = e("<" + this.settings.errorElement + ">")
                                .attr("id", o + "-error")
                                .addClass(this.settings.errorClass)
                                .html(a || "")),
                            (r = s),
                            this.settings.wrapper &&
                                (r = s
                                    .hide()
                                    .show()
                                    .wrap("<" + this.settings.wrapper + "/>")
                                    .parent()),
                            this.labelContainer.length
                                ? this.labelContainer.append(r)
                                : this.settings.errorPlacement
                                ? this.settings.errorPlacement(r, e(t))
                                : r.insertAfter(t),
                            s.is("label")
                                ? s.attr("for", o)
                                : 0 ===
                                      s.parents("label[for='" + o + "']")
                                          .length &&
                                  ((i = s
                                      .attr("id")
                                      .replace(/(:|\.|\[|\]|\$)/g, "\\$1")),
                                  l
                                      ? l.match(new RegExp("\\b" + i + "\\b")) ||
                                        (l += " " + i)
                                      : (l = i),
                                  e(t).attr("aria-describedby", l),
                                  (n = this.groups[t.name]),
                                  n &&
                                      e.each(this.groups, function(t, a) {
                                          a === n &&
                                              e(
                                                  "[name='" + t + "']",
                                                  this.currentForm
                                              ).attr(
                                                  "aria-describedby",
                                                  s.attr("id")
                                              );
                                      }))),
                          !a &&
                              this.settings.success &&
                              (s.text(""),
                              "string" == typeof this.settings.success
                                  ? s.addClass(this.settings.success)
                                  : this.settings.success(s, t)),
                          (this.toShow = this.toShow.add(s));
                  },
                  errorsFor: function(t) {
                      var a = this.idOrName(t),
                          r = e(t).attr("aria-describedby"),
                          n = "label[for='" + a + "'], label[for='" + a + "'] *";
                      return (
                          r && (n = n + ", #" + r.replace(/\s+/g, ", #")),
                          this.errors().filter(n)
                      );
                  },
                  idOrName: function(e) {
                      return (
                          this.groups[e.name] ||
                          (this.checkable(e) ? e.name : e.id || e.name)
                      );
                  },
                  validationTargetFor: function(t) {
                      return (
                          this.checkable(t) && (t = this.findByName(t.name)),
                          e(t).not(this.settings.ignore)[0]
                      );
                  },
                  checkable: function(e) {
                      return /radio|checkbox/i.test(e.type);
                  },
                  findByName: function(t) {
                      return e(this.currentForm).find("[name='" + t + "']");
                  },
                  getLength: function(t, a) {
                      switch (a.nodeName.toLowerCase()) {
                          case "select":
                              return e("option:selected", a).length;
                          case "input":
                              if (this.checkable(a))
                                  return this.findByName(a.name).filter(
                                      ":checked"
                                  ).length;
                      }
                      return t.length;
                  },
                  depend: function(e, t) {
                      return (
                          !this.dependTypes[typeof e] ||
                          this.dependTypes[typeof e](e, t)
                      );
                  },
                  dependTypes: {
                      boolean: function(e) {
                          return e;
                      },
                      string: function(t, a) {
                          return !!e(t, a.form).length;
                      },
                      function: function(e, t) {
                          return e(t);
                      }
                  },
                  optional: function(t) {
                      var a = this.elementValue(t);
                      return (
                          !e.validator.methods.required.call(this, a, t) &&
                          "dependency-mismatch"
                      );
                  },
                  startRequest: function(e) {
                      this.pending[e.name] ||
                          (this.pendingRequest++, (this.pending[e.name] = !0));
                  },
                  stopRequest: function(t, a) {
                      this.pendingRequest--,
                          this.pendingRequest < 0 && (this.pendingRequest = 0),
                          delete this.pending[t.name],
                          a &&
                          0 === this.pendingRequest &&
                          this.formSubmitted &&
                          this.form()
                              ? (e(this.currentForm).submit(),
                                (this.formSubmitted = !1))
                              : !a &&
                                0 === this.pendingRequest &&
                                this.formSubmitted &&
                                (e(
                                    this.currentForm
                                ).triggerHandler("invalid-form", [this]),
                                (this.formSubmitted = !1));
                  },
                  previousValue: function(t) {
                      return (
                          e.data(t, "previousValue") ||
                          e.data(t, "previousValue", {
                              old: null,
                              valid: !0,
                              message: this.defaultMessage(t, "remote")
                          })
                      );
                  },
                  destroy: function() {
                      this.resetForm(),
                          e(this.currentForm)
                              .off(".validate")
                              .removeData("validator");
                  }
              },
              classRuleSettings: {
                  required: { required: !0 },
                  email: { email: !0 },
                  url: { url: !0 },
                  date: { date: !0 },
                  dateISO: { dateISO: !0 },
                  number: { number: !0 },
                  digits: { digits: !0 },
                  creditcard: { creditcard: !0 }
              },
              addClassRules: function(t, a) {
                  t.constructor === String
                      ? (this.classRuleSettings[t] = a)
                      : e.extend(this.classRuleSettings, t);
              },
              classRules: function(t) {
                  var a = {},
                      r = e(t).attr("class");
                  return (
                      r &&
                          e.each(r.split(" "), function() {
                              this in e.validator.classRuleSettings &&
                                  e.extend(
                                      a,
                                      e.validator.classRuleSettings[this]
                                  );
                          }),
                      a
                  );
              },
              normalizeAttributeRule: function(e, t, a, r) {
                  /min|max/.test(a) &&
                      (null === t || /number|range|text/.test(t)) &&
                      ((r = Number(r)), isNaN(r) && (r = void 0)),
                      r || 0 === r
                          ? (e[a] = r)
                          : t === a && "range" !== t && (e[a] = !0);
              },
              attributeRules: function(t) {
                  var a,
                      r,
                      n = {},
                      i = e(t),
                      s = t.getAttribute("type");
                  for (a in e.validator.methods)
                      "required" === a
                          ? ((r = t.getAttribute(a)),
                            "" === r && (r = !0),
                            (r = !!r))
                          : (r = i.attr(a)),
                          this.normalizeAttributeRule(n, s, a, r);
                  return (
                      n.maxlength &&
                          /-1|2147483647|524288/.test(n.maxlength) &&
                          delete n.maxlength,
                      n
                  );
              },
              dataRules: function(t) {
                  var a,
                      r,
                      n = {},
                      i = e(t),
                      s = t.getAttribute("type");
                  for (a in e.validator.methods)
                      (r = i.data(
                          "rule" +
                              a.charAt(0).toUpperCase() +
                              a.substring(1).toLowerCase()
                      )),
                          this.normalizeAttributeRule(n, s, a, r);
                  return n;
              },
              staticRules: function(t) {
                  var a = {},
                      r = e.data(t.form, "validator");
                  return (
                      r.settings.rules &&
                          (a =
                              e.validator.normalizeRule(
                                  r.settings.rules[t.name]
                              ) || {}),
                      a
                  );
              },
              normalizeRules: function(t, a) {
                  return (
                      e.each(t, function(r, n) {
                          if (n === !1) return void delete t[r];
                          if (n.param || n.depends) {
                              var i = !0;
                              switch (typeof n.depends) {
                                  case "string":
                                      i = !!e(n.depends, a.form).length;
                                      break;
                                  case "function":
                                      i = n.depends.call(a, a);
                              }
                              i
                                  ? (t[r] = void 0 === n.param || n.param)
                                  : delete t[r];
                          }
                      }),
                      e.each(t, function(r, n) {
                          t[r] = e.isFunction(n) ? n(a) : n;
                      }),
                      e.each(["minlength", "maxlength"], function() {
                          t[this] && (t[this] = Number(t[this]));
                      }),
                      e.each(["rangelength", "range"], function() {
                          var a;
                          t[this] &&
                              (e.isArray(t[this])
                                  ? (t[this] = [
                                        Number(t[this][0]),
                                        Number(t[this][1])
                                    ])
                                  : "string" == typeof t[this] &&
                                    ((a = t[this]
                                        .replace(/[\[\]]/g, "")
                                        .split(/[\s,]+/)),
                                    (t[this] = [Number(a[0]), Number(a[1])])));
                      }),
                      e.validator.autoCreateRanges &&
                          (null != t.min &&
                              null != t.max &&
                              ((t.range = [t.min, t.max]),
                              delete t.min,
                              delete t.max),
                          null != t.minlength &&
                              null != t.maxlength &&
                              ((t.rangelength = [t.minlength, t.maxlength]),
                              delete t.minlength,
                              delete t.maxlength)),
                      t
                  );
              },
              normalizeRule: function(t) {
                  if ("string" == typeof t) {
                      var a = {};
                      e.each(t.split(/\s/), function() {
                          a[this] = !0;
                      }),
                          (t = a);
                  }
                  return t;
              },
              addMethod: function(t, a, r) {
                  (e.validator.methods[t] = a),
                      (e.validator.messages[t] =
                          void 0 !== r ? r : e.validator.messages[t]),
                      a.length < 3 &&
                          e.validator.addClassRules(
                              t,
                              e.validator.normalizeRule(t)
                          );
              },
              methods: {
                  required: function(t, a, r) {
                      if (!this.depend(r, a)) return "dependency-mismatch";
                      if ("select" === a.nodeName.toLowerCase()) {
                          var n = e(a).val();
                          return n && n.length > 0;
                      }
                      return this.checkable(a)
                          ? this.getLength(t, a) > 0
                          : t.length > 0;
                  },
                  email: function(e, t) {
                      return (
                          this.optional(t) ||
                          /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[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])?)*$/.test(
                              e
                          )
                      );
                  },
                  url: function(e, t) {
                      return (
                          this.optional(t) ||
                          /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(
                              e
                          )
                      );
                  },
                  date: function(e, t) {
                      return (
                          this.optional(t) ||
                          !/Invalid|NaN/.test(new Date(e).toString())
                      );
                  },
                  dateISO: function(e, t) {
                      return (
                          this.optional(t) ||
                          /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(
                              e
                          )
                      );
                  },
                  number: function(e, t) {
                      return (
                          this.optional(t) ||
                          /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(e)
                      );
                  },
                  digits: function(e, t) {
                      return this.optional(t) || /^\d+$/.test(e);
                  },
                  creditcard: function(e, t) {
                      if (this.optional(t)) return "dependency-mismatch";
                      if (/[^0-9 \-]+/.test(e)) return !1;
                      var a,
                          r,
                          n = 0,
                          i = 0,
                          s = !1;
                      if (
                          ((e = e.replace(/\D/g, "")),
                          e.length < 13 || e.length > 19)
                      )
                          return !1;
                      for (a = e.length - 1; a >= 0; a--)
                          (r = e.charAt(a)),
                              (i = parseInt(r, 10)),
                              s && (i *= 2) > 9 && (i -= 9),
                              (n += i),
                              (s = !s);
                      return n % 10 === 0;
                  },
                  minlength: function(t, a, r) {
                      var n = e.isArray(t) ? t.length : this.getLength(t, a);
                      return this.optional(a) || n >= r;
                  },
                  maxlength: function(t, a, r) {
                      var n = e.isArray(t) ? t.length : this.getLength(t, a);
                      return this.optional(a) || n <= r;
                  },
                  rangelength: function(t, a, r) {
                      var n = e.isArray(t) ? t.length : this.getLength(t, a);
                      return this.optional(a) || (n >= r[0] && n <= r[1]);
                  },
                  min: function(e, t, a) {
                      return this.optional(t) || e >= a;
                  },
                  max: function(e, t, a) {
                      return this.optional(t) || e <= a;
                  },
                  range: function(e, t, a) {
                      return this.optional(t) || (e >= a[0] && e <= a[1]);
                  },
                  equalTo: function(t, a, r) {
                      var n = e(r);
                      return (
                          this.settings.onfocusout &&
                              n
                                  .off(".validate-equalTo")
                                  .on("blur.validate-equalTo", function() {
                                      e(a).valid();
                                  }),
                          t === n.val()
                      );
                  },
                  remote: function(t, a, r) {
                      if (this.optional(a)) return "dependency-mismatch";
                      var n,
                          i,
                          s = this.previousValue(a);
                      return (
                          this.settings.messages[a.name] ||
                              (this.settings.messages[a.name] = {}),
                          (s.originalMessage = this.settings.messages[
                              a.name
                          ].remote),
                          (this.settings.messages[a.name].remote = s.message),
                          (r = ("string" == typeof r && { url: r }) || r),
                          s.old === t
                              ? s.valid
                              : ((s.old = t),
                                (n = this),
                                this.startRequest(a),
                                (i = {}),
                                (i[a.name] = t),
                                e.ajax(
                                    e.extend(
                                        !0,
                                        {
                                            mode: "abort",
                                            port: "validate" + a.name,
                                            dataType: "json",
                                            data: i,
                                            context: n.currentForm,
                                            success: function(r) {
                                                var i,
                                                    o,
                                                    l,
                                                    u = r === !0 || "true" === r;
                                                (n.settings.messages[
                                                    a.name
                                                ].remote = s.originalMessage),
                                                    u
                                                        ? ((l = n.formSubmitted),
                                                          n.prepareElement(a),
                                                          (n.formSubmitted = l),
                                                          n.successList.push(a),
                                                          delete n.invalid[
                                                              a.name
                                                          ],
                                                          n.showErrors())
                                                        : ((i = {}),
                                                          (o =
                                                              r ||
                                                              n.defaultMessage(
                                                                  a,
                                                                  "remote"
                                                              )),
                                                          (i[
                                                              a.name
                                                          ] = s.message = e.isFunction(
                                                              o
                                                          )
                                                              ? o(t)
                                                              : o),
                                                          (n.invalid[
                                                              a.name
                                                          ] = !0),
                                                          n.showErrors(i)),
                                                    (s.valid = u),
                                                    n.stopRequest(a, u);
                                            }
                                        },
                                        r
                                    )
                                ),
                                "pending")
                      );
                  }
              }
          });
      var t,
          a = {};
      e.ajaxPrefilter
          ? e.ajaxPrefilter(function(e, t, r) {
                var n = e.port;
                "abort" === e.mode && (a[n] && a[n].abort(), (a[n] = r));
            })
          : ((t = e.ajax),
            (e.ajax = function(r) {
                var n = ("mode" in r ? r : e.ajaxSettings).mode,
                    i = ("port" in r ? r : e.ajaxSettings).port;
                return "abort" === n
                    ? (a[i] && a[i].abort(),
                      (a[i] = t.apply(this, arguments)),
                      a[i])
                    : t.apply(this, arguments);
            }));
  });
  var DateFormatter;
  !(function() {
      "use strict";
      var e, t, a, r, n, i, s;
      (i = 864e5),
          (s = 3600),
          (e = function(e, t) {
              return (
                  "string" == typeof e &&
                  "string" == typeof t &&
                  e.toLowerCase() === t.toLowerCase()
              );
          }),
          (t = function(e, a, r) {
              var n = e.toString();
              return (r = r || "0"), n.length < a ? t(r + n, a) : n;
          }),
          (a = function(e) {
              var t, r;
              for (e = e || {}, t = 1; t < arguments.length; t++)
                  if ((r = arguments[t]))
                      for (var n in r)
                          r.hasOwnProperty(n) &&
                              ("object" == typeof r[n]
                                  ? a(e[n], r[n])
                                  : (e[n] = r[n]));
              return e;
          }),
          (r = function(e, t) {
              for (var a = 0; a < t.length; a++)
                  if (t[a].toLowerCase() === e.toLowerCase()) return a;
              return -1;
          }),
          (n = {
              dateSettings: {
                  days: [
                      "Sunday",
                      "Monday",
                      "Tuesday",
                      "Wednesday",
                      "Thursday",
                      "Friday",
                      "Saturday"
                  ],
                  daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                  months: [
                      "January",
                      "February",
                      "March",
                      "April",
                      "May",
                      "June",
                      "July",
                      "August",
                      "September",
                      "October",
                      "November",
                      "December"
                  ],
                  monthsShort: [
                      "Jan",
                      "Feb",
                      "Mar",
                      "Apr",
                      "May",
                      "Jun",
                      "Jul",
                      "Aug",
                      "Sep",
                      "Oct",
                      "Nov",
                      "Dec"
                  ],
                  meridiem: ["AM", "PM"],
                  ordinal: function(e) {
                      var t = e % 10,
                          a = { 1: "st", 2: "nd", 3: "rd" };
                      return 1 !== Math.floor((e % 100) / 10) && a[t]
                          ? a[t]
                          : "th";
                  }
              },
              separators: /[ \-+\/\.T:@]/g,
              validParts: /[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,
              intParts: /[djwNzmnyYhHgGis]/g,
              tzParts: /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
              tzClip: /[^-+\dA-Z]/g
          }),
          (DateFormatter = function(e) {
              var t = this,
                  r = a(n, e);
              (t.dateSettings = r.dateSettings),
                  (t.separators = r.separators),
                  (t.validParts = r.validParts),
                  (t.intParts = r.intParts),
                  (t.tzParts = r.tzParts),
                  (t.tzClip = r.tzClip);
          }),
          (DateFormatter.prototype = {
              constructor: DateFormatter,
              getMonth: function(e) {
                  var t,
                      a = this;
                  return (
                      (t = r(e, a.dateSettings.monthsShort) + 1),
                      0 === t && (t = r(e, a.dateSettings.months) + 1),
                      t
                  );
              },
              parseDate: function(t, a) {
                  var r,
                      n,
                      i,
                      s,
                      o,
                      l,
                      u,
                      d,
                      h,
                      c,
                      m = this,
                      f = !1,
                      g = !1,
                      p = m.dateSettings,
                      v = {
                          date: null,
                          year: null,
                          month: null,
                          day: null,
                          hour: 0,
                          min: 0,
                          sec: 0
                      };
                  if (!t) return null;
                  if (t instanceof Date) return t;
                  if ("U" === a)
                      return (i = parseInt(t)), i ? new Date(1e3 * i) : t;
                  switch (typeof t) {
                      case "number":
                          return new Date(t);
                      case "string":
                          break;
                      default:
                          return null;
                  }
                  if (((r = a.match(m.validParts)), !r || 0 === r.length))
                      throw new Error("Invalid date format definition.");
                  for (
                      n = t.replace(m.separators, "\0").split("\0"), i = 0;
                      i < n.length;
                      i++
                  )
                      switch (((s = n[i]), (o = parseInt(s)), r[i])) {
                          case "y":
                          case "Y":
                              if (!o) return null;
                              (h = s.length),
                                  (v.year =
                                      2 === h
                                          ? parseInt((o < 70 ? "20" : "19") + s)
                                          : o),
                                  (f = !0);
                              break;
                          case "m":
                          case "n":
                          case "M":
                          case "F":
                              if (isNaN(o)) {
                                  if (((l = m.getMonth(s)), !(l > 0)))
                                      return null;
                                  v.month = l;
                              } else {
                                  if (!(o >= 1 && o <= 12)) return null;
                                  v.month = o;
                              }
                              f = !0;
                              break;
                          case "d":
                          case "j":
                              if (!(o >= 1 && o <= 31)) return null;
                              (v.day = o), (f = !0);
                              break;
                          case "g":
                          case "h":
                              if (
                                  ((u =
                                      r.indexOf("a") > -1
                                          ? r.indexOf("a")
                                          : r.indexOf("A") > -1
                                          ? r.indexOf("A")
                                          : -1),
                                  (c = n[u]),
                                  u !== -1)
                              )
                                  (d = e(c, p.meridiem[0])
                                      ? 0
                                      : e(c, p.meridiem[1])
                                      ? 12
                                      : -1),
                                      o >= 1 && o <= 12 && d !== -1
                                          ? (v.hour = o % 12 === 0 ? d : o + d)
                                          : o >= 0 && o <= 23 && (v.hour = o);
                              else {
                                  if (!(o >= 0 && o <= 23)) return null;
                                  v.hour = o;
                              }
                              g = !0;
                              break;
                          case "G":
                          case "H":
                              if (!(o >= 0 && o <= 23)) return null;
                              (v.hour = o), (g = !0);
                              break;
                          case "i":
                              if (!(o >= 0 && o <= 59)) return null;
                              (v.min = o), (g = !0);
                              break;
                          case "s":
                              if (!(o >= 0 && o <= 59)) return null;
                              (v.sec = o), (g = !0);
                      }
                  if (f === !0 && v.year && v.month && v.day)
                      v.date = new Date(
                          v.year,
                          v.month - 1,
                          v.day,
                          v.hour,
                          v.min,
                          v.sec,
                          0
                      );
                  else {
                      if (g !== !0) return null;
                      v.date = new Date(0, 0, 0, v.hour, v.min, v.sec, 0);
                  }
                  return v.date;
              },
              guessDate: function(e, t) {
                  if ("string" != typeof e) return e;
                  var a,
                      r,
                      n,
                      i,
                      s,
                      o,
                      l = this,
                      u = e.replace(l.separators, "\0").split("\0"),
                      d = /^[djmn]/g,
                      h = t.match(l.validParts),
                      c = new Date(),
                      m = 0;
                  if (!d.test(h[0])) return e;
                  for (n = 0; n < u.length; n++) {
                      if (
                          ((m = 2),
                          (s = u[n]),
                          (o = parseInt(s.substr(0, 2))),
                          isNaN(o))
                      )
                          return null;
                      switch (n) {
                          case 0:
                              "m" === h[0] || "n" === h[0]
                                  ? c.setMonth(o - 1)
                                  : c.setDate(o);
                              break;
                          case 1:
                              "m" === h[0] || "n" === h[0]
                                  ? c.setDate(o)
                                  : c.setMonth(o - 1);
                              break;
                          case 2:
                              if (
                                  ((r = c.getFullYear()),
                                  (a = s.length),
                                  (m = a < 4 ? a : 4),
                                  (r = parseInt(
                                      a < 4
                                          ? r.toString().substr(0, 4 - a) + s
                                          : s.substr(0, 4)
                                  )),
                                  !r)
                              )
                                  return null;
                              c.setFullYear(r);
                              break;
                          case 3:
                              c.setHours(o);
                              break;
                          case 4:
                              c.setMinutes(o);
                              break;
                          case 5:
                              c.setSeconds(o);
                      }
                      (i = s.substr(m)), i.length > 0 && u.splice(n + 1, 0, i);
                  }
                  return c;
              },
              parseFormat: function(e, a) {
                  var r,
                      n = this,
                      o = n.dateSettings,
                      l = /\\?(.?)/gi,
                      u = function(e, t) {
                          return r[e] ? r[e]() : t;
                      };
                  return (
                      (r = {
                          d: function() {
                              return t(r.j(), 2);
                          },
                          D: function() {
                              return o.daysShort[r.w()];
                          },
                          j: function() {
                              return a.getDate();
                          },
                          l: function() {
                              return o.days[r.w()];
                          },
                          N: function() {
                              return r.w() || 7;
                          },
                          w: function() {
                              return a.getDay();
                          },
                          z: function() {
                              var e = new Date(r.Y(), r.n() - 1, r.j()),
                                  t = new Date(r.Y(), 0, 1);
                              return Math.round((e - t) / i);
                          },
                          W: function() {
                              var e = new Date(
                                      r.Y(),
                                      r.n() - 1,
                                      r.j() - r.N() + 3
                                  ),
                                  a = new Date(e.getFullYear(), 0, 4);
                              return t(1 + Math.round((e - a) / i / 7), 2);
                          },
                          F: function() {
                              return o.months[a.getMonth()];
                          },
                          m: function() {
                              return t(r.n(), 2);
                          },
                          M: function() {
                              return o.monthsShort[a.getMonth()];
                          },
                          n: function() {
                              return a.getMonth() + 1;
                          },
                          t: function() {
                              return new Date(r.Y(), r.n(), 0).getDate();
                          },
                          L: function() {
                              var e = r.Y();
                              return (e % 4 === 0 && e % 100 !== 0) ||
                                  e % 400 === 0
                                  ? 1
                                  : 0;
                          },
                          o: function() {
                              var e = r.n(),
                                  t = r.W(),
                                  a = r.Y();
                              return (
                                  a +
                                  (12 === e && t < 9
                                      ? 1
                                      : 1 === e && t > 9
                                      ? -1
                                      : 0)
                              );
                          },
                          Y: function() {
                              return a.getFullYear();
                          },
                          y: function() {
                              return r
                                  .Y()
                                  .toString()
                                  .slice(-2);
                          },
                          a: function() {
                              return r.A().toLowerCase();
                          },
                          A: function() {
                              var e = r.G() < 12 ? 0 : 1;
                              return o.meridiem[e];
                          },
                          B: function() {
                              var e = a.getUTCHours() * s,
                                  r = 60 * a.getUTCMinutes(),
                                  n = a.getUTCSeconds();
                              return t(
                                  Math.floor((e + r + n + s) / 86.4) % 1e3,
                                  3
                              );
                          },
                          g: function() {
                              return r.G() % 12 || 12;
                          },
                          G: function() {
                              return a.getHours();
                          },
                          h: function() {
                              return t(r.g(), 2);
                          },
                          H: function() {
                              return t(r.G(), 2);
                          },
                          i: function() {
                              return t(a.getMinutes(), 2);
                          },
                          s: function() {
                              return t(a.getSeconds(), 2);
                          },
                          u: function() {
                              return t(1e3 * a.getMilliseconds(), 6);
                          },
                          e: function() {
                              var e = /\((.*)\)/.exec(String(a))[1];
                              return e || "Coordinated Universal Time";
                          },
                          I: function() {
                              var e = new Date(r.Y(), 0),
                                  t = Date.UTC(r.Y(), 0),
                                  a = new Date(r.Y(), 6),
                                  n = Date.UTC(r.Y(), 6);
                              return e - t !== a - n ? 1 : 0;
                          },
                          O: function() {
                              var e = a.getTimezoneOffset(),
                                  r = Math.abs(e);
                              return (
                                  (e > 0 ? "-" : "+") +
                                  t(100 * Math.floor(r / 60) + (r % 60), 4)
                              );
                          },
                          P: function() {
                              var e = r.O();
                              return e.substr(0, 3) + ":" + e.substr(3, 2);
                          },
                          T: function() {
                              var e = (String(a).match(n.tzParts) || [""])
                                  .pop()
                                  .replace(n.tzClip, "");
                              return e || "UTC";
                          },
                          Z: function() {
                              return 60 * -a.getTimezoneOffset();
                          },
                          c: function() {
                              return "Y-m-d\\TH:i:sP".replace(l, u);
                          },
                          r: function() {
                              return "D, d M Y H:i:s O".replace(l, u);
                          },
                          U: function() {
                              return a.getTime() / 1e3 || 0;
                          }
                      }),
                      u(e, e)
                  );
              },
              formatDate: function(e, t) {
                  var a,
                      r,
                      n,
                      i,
                      s,
                      o = this,
                      l = "",
                      u = "\\";
                  if ("string" == typeof e && ((e = o.parseDate(e, t)), !e))
                      return null;
                  if (e instanceof Date) {
                      for (n = t.length, a = 0; a < n; a++)
                          (s = t.charAt(a)),
                              "S" !== s &&
                                  s !== u &&
                                  (a > 0 && t.charAt(a - 1) === u
                                      ? (l += s)
                                      : ((i = o.parseFormat(s, e)),
                                        a !== n - 1 &&
                                            o.intParts.test(s) &&
                                            "S" === t.charAt(a + 1) &&
                                            ((r = parseInt(i) || 0),
                                            (i += o.dateSettings.ordinal(r))),
                                        (l += i)));
                      return l;
                  }
                  return "";
              }
          });
  })();
  var laravelValidation;
  (laravelValidation = {
      implicitRules: ["Required", "Confirmed"],
      init: function() {
          ($.validator.classRuleSettings = {}),
              ($.validator.attributeRules = function() {
                  this.rules = {};
              }),
              ($.validator.dataRules = this.arrayRules),
              ($.validator.prototype.arrayRulesCache = {}),
              this.setupValidations();
      },
      arrayRules: function(e) {
          var t = {},
              a = $.data(e.form, "validator"),
              r = a.arrayRulesCache;
          return e.name.indexOf("[") === -1
              ? t
              : (e.name in r || (r[e.name] = {}),
                $.each(a.settings.rules, function(a, n) {
                    if (a in r[e.name]) $.extend(t, r[e.name][a]);
                    else {
                        r[e.name][a] = {};
                        var i = laravelValidation.helpers.regexFromWildcard(a);
                        if (e.name.match(i)) {
                            var s = $.validator.normalizeRule(n) || {};
                            (r[e.name][a] = s), $.extend(t, s);
                        }
                    }
                }),
                t);
      },
      setupValidations: function() {
          $.validator.addMethod(
              "laravelValidation",
              function(e, t, a) {
                  var r = this,
                      n = !0,
                      i = this.previousValue(t),
                      s = [];
                  return (
                      $.each(a, function(e, t) {
                          t[3] ||
                          laravelValidation.implicitRules.indexOf(t[0]) !== -1
                              ? s.unshift(t)
                              : s.push(t);
                      }),
                      $.each(s, function(a, s) {
                          var o =
                                  s[3] ||
                                  laravelValidation.implicitRules.indexOf(
                                      s[0]
                                  ) !== -1,
                              l = s[0],
                              u = s[2];
                          return !o && r.optional(t)
                              ? ((n = "dependency-mismatch"), !1)
                              : ((n =
                                    void 0 !== laravelValidation.methods[l] &&
                                    laravelValidation.methods[l].call(
                                        r,
                                        e,
                                        t,
                                        s[1],
                                        function(a) {
                                            if (
                                                ((r.settings.messages[
                                                    t.name
                                                ].laravelValidationRemote =
                                                    i.originalMessage),
                                                a)
                                            ) {
                                                var n = r.formSubmitted;
                                                r.prepareElement(t),
                                                    (r.formSubmitted = n),
                                                    r.successList.push(t),
                                                    delete r.invalid[t.name],
                                                    r.showErrors();
                                            } else {
                                                var s = {};
                                                (s[
                                                    t.name
                                                ] = i.message = $.isFunction(u)
                                                    ? u(e)
                                                    : u),
                                                    (r.invalid[t.name] = !0),
                                                    r.showErrors(s);
                                            }
                                            r.showErrors(r.errorMap),
                                                (i.valid = a);
                                        }
                                    )),
                                n !== !0
                                    ? (r.settings.messages[t.name] ||
                                          (r.settings.messages[t.name] = {}),
                                      (r.settings.messages[
                                          t.name
                                      ].laravelValidation = u),
                                      !1)
                                    : void 0);
                      }),
                      n
                  );
              },
              ""
          ),
              $.validator.addMethod(
                  "laravelValidationRemote",
                  function(e, t, a) {
                      var r = !1,
                          n = a[0][1],
                          i = t.name,
                          s = n[1],
                          o = n[2];
                      if (
                          ($.each(a, function(e, t) {
                              r = r || t[3];
                          }),
                          !r && this.optional(t))
                      )
                          return "dependency-mismatch";
                      var l,
                          u,
                          d = this.previousValue(t);
                      this.settings.messages[t.name] ||
                          (this.settings.messages[t.name] = {}),
                          (d.originalMessage = this.settings.messages[
                              t.name
                          ].laravelValidationRemote),
                          (this.settings.messages[
                              t.name
                          ].laravelValidationRemote = d.message);
                      var h = ("string" == typeof h && { url: h }) || h;
                      if (
                          laravelValidation.helpers.arrayEquals(d.old, e) ||
                          d.old === e
                      )
                          return d.valid;
                      (d.old = e),
                          (l = this),
                          this.startRequest(t),
                          (u = $(l.currentForm).serializeArray()),
                          u.push({ name: "_jsvalidation", value: i }),
                          u.push({
                              name: "_jsvalidation_validate_all",
                              value: o
                          });
                      var c = $(l.currentForm).attr("method");
                      return (
                          $(l.currentForm).find('input[name="_method"]').length &&
                              (c = $(l.currentForm)
                                  .find('input[name="_method"]')
                                  .val()),
                          $.ajax(
                              $.extend(
                                  !0,
                                  {
                                      mode: "abort",
                                      port: "validate" + t.name,
                                      dataType: "json",
                                      data: u,
                                      context: l.currentForm,
                                      url: $(l.currentForm).attr("action"),
                                      type: c,
                                      beforeSend: function(e) {
                                          if (
                                              "get" !==
                                                  $(l.currentForm)
                                                      .attr("method")
                                                      .toLowerCase() &&
                                              s
                                          )
                                              return e.setRequestHeader(
                                                  "X-XSRF-TOKEN",
                                                  s
                                              );
                                      }
                                  },
                                  h
                              )
                          ).always(function(a, r) {
                              var n, i, s, o;
                              if ("error" === r)
                                  (o = !1),
                                      (a = laravelValidation.helpers.parseErrorResponse(
                                          a
                                      ));
                              else {
                                  if ("success" !== r) return;
                                  o = a === !0 || "true" === a;
                              }
                              (l.settings.messages[
                                  t.name
                              ].laravelValidationRemote = d.originalMessage),
                                  o
                                      ? ((s = l.formSubmitted),
                                        l.prepareElement(t),
                                        (l.formSubmitted = s),
                                        l.successList.push(t),
                                        delete l.invalid[t.name],
                                        l.showErrors())
                                      : ((n = {}),
                                        (i = a || l.defaultMessage(t, "remote")),
                                        (n[t.name] = d.message = $.isFunction(i)
                                            ? i(e)
                                            : i[0]),
                                        (l.invalid[t.name] = !0),
                                        l.showErrors(n)),
                                  l.showErrors(l.errorMap),
                                  (d.valid = o),
                                  l.stopRequest(t, o);
                          }),
                          "pending"
                      );
                  },
                  ""
              );
      }
  }),
      $(function() {
          laravelValidation.init();
      }),
      $.extend(!0, laravelValidation, {
          helpers: {
              numericRules: ["Integer", "Numeric"],
              fileinfo: function(e, t) {
                  var a = e.value;
                  return (
                      (t = "undefined" != typeof t ? t : 0),
                      null !== e.files &&
                          "undefined" != typeof e.files[t] && {
                              file: a,
                              extension: a.substr(a.lastIndexOf(".") + 1),
                              size: e.files[t].size / 1024,
                              type: e.files[t].type
                          }
                  );
              },
              selector: function(e) {
                  var t = [];
                  $.isArray(e) || (e = [e]);
                  for (var a = 0; a < e.length; a++)
                      t.push("[name='" + e[a] + "']");
                  return t.join();
              },
              hasNumericRules: function(e) {
                  return this.hasRules(e, this.numericRules);
              },
              hasRules: function(e, t) {
                  var a = !1;
                  "string" == typeof t && (t = [t]);
                  var r = $.data(e.form, "validator"),
                      n = [],
                      i = r.arrayRulesCache;
                  return (
                      e.name in i &&
                          $.each(i[e.name], function(e, t) {
                              n.push(t);
                          }),
                      e.name in r.settings.rules &&
                          n.push(r.settings.rules[e.name]),
                      $.each(n, function(e, r) {
                          if ("laravelValidation" in r)
                              for (
                                  var n = r.laravelValidation, i = 0;
                                  i < n.length;
                                  i++
                              )
                                  if ($.inArray(n[i][0], t) !== -1)
                                      return (a = !0), !1;
                      }),
                      a
                  );
              },
              strlen: function(e) {
                  return strlen(e);
              },
              getSize: function(e, t, a) {
                  return this.hasNumericRules(t) && this.is_numeric(a)
                      ? parseFloat(a)
                      : $.isArray(a)
                      ? parseFloat(a.length)
                      : "file" === t.type
                      ? parseFloat(Math.floor(this.fileinfo(t).size))
                      : parseFloat(this.strlen(a));
              },
              getLaravelValidation: function(e, t) {
                  var a = void 0;
                  return (
                      $.each($.validator.staticRules(t), function(t, r) {
                          "laravelValidation" === t &&
                              $.each(r, function(t, r) {
                                  r[0] === e && (a = r);
                              });
                      }),
                      a
                  );
              },
              parseTime: function(e, t) {
                  var a = !1,
                      r = new DateFormatter();
                  if ("object" === $.type(t)) {
                      var n = this.getLaravelValidation("DateFormat", t);
                      t = void 0 !== n ? n[1][0] : null;
                  }
                  return (
                      null == t
                          ? (a = this.strtotime(e))
                          : ((a = r.parseDate(e, t)),
                            a && (a = Math.round(a.getTime() / 1e3))),
                      a
                  );
              },
              guessDate: function(e, t) {
                  var a = new DateFormatter();
                  return a.guessDate(e, t);
              },
              strtotime: function(e, t) {
                  return strtotime(e, t);
              },
              is_numeric: function(e) {
                  return is_numeric(e);
              },
              arrayDiff: function(e, t) {
                  return array_diff(e, t);
              },
              arrayEquals: function(e, t) {
                  return (
                      !(!$.isArray(e) || !$.isArray(t)) &&
                      e.length === t.length &&
                          $.isEmptyObject(this.arrayDiff(e, t))
                  );
              },
              dependentElement: function(e, t, a) {
                  var r = e.findByName(a);
                  if (void 0 !== r[0] && e.settings.onfocusout) {
                      var n = "blur";
                      ("SELECT" !== r[0].tagName &&
                          "OPTION" !== r[0].tagName &&
                          "checkbox" !== r[0].type &&
                          "radio" !== r[0].type) ||
                          (n = "click");
                      var i = ".validate-laravelValidation";
                      r.off(i)
                          .off(n + i + "-" + t.name)
                          .on(n + i + "-" + t.name, function() {
                              $(t).valid();
                          });
                  }
                  return r[0];
              },
              parseErrorResponse: function(e) {
                  var t = ["Whoops, looks like something went wrong."];
                  if ("responseText" in e) {
                      var a = e.responseText.match(/<h1\s*>(.*)<\/h1\s*>/i);
                      $.isArray(a) && (t = [a[1]]);
                  }
                  return t;
              },
              escapeRegExp: function(e) {
                  return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
              },
              regexFromWildcard: function(e) {
                  var t = e.split("[*]");
                  1 === t.length && t.push("");
                  var a = t.map(function(e, t) {
                      return (
                          t % 2 === 0 ? (e += "[") : (e = "]" + e),
                          laravelValidation.helpers.escapeRegExp(e)
                      );
                  });
                  return new RegExp("^" + a.join(".*") + "$");
              }
          }
      }),
      $.extend(!0, laravelValidation, {
          helpers: {
              isTimezone: function(e) {
                  var t = {
                          africa: [
                              "abidjan",
                              "accra",
                              "addis_ababa",
                              "algiers",
                              "asmara",
                              "bamako",
                              "bangui",
                              "banjul",
                              "bissau",
                              "blantyre",
                              "brazzaville",
                              "bujumbura",
                              "cairo",
                              "casablanca",
                              "ceuta",
                              "conakry",
                              "dakar",
                              "dar_es_salaam",
                              "djibouti",
                              "douala",
                              "el_aaiun",
                              "freetown",
                              "gaborone",
                              "harare",
                              "johannesburg",
                              "juba",
                              "kampala",
                              "khartoum",
                              "kigali",
                              "kinshasa",
                              "lagos",
                              "libreville",
                              "lome",
                              "luanda",
                              "lubumbashi",
                              "lusaka",
                              "malabo",
                              "maputo",
                              "maseru",
                              "mbabane",
                              "mogadishu",
                              "monrovia",
                              "nairobi",
                              "ndjamena",
                              "niamey",
                              "nouakchott",
                              "ouagadougou",
                              "porto-novo",
                              "sao_tome",
                              "tripoli",
                              "tunis",
                              "windhoek"
                          ],
                          america: [
                              "adak",
                              "anchorage",
                              "anguilla",
                              "antigua",
                              "araguaina",
                              "argentina/buenos_aires",
                              "argentina/catamarca",
                              "argentina/cordoba",
                              "argentina/jujuy",
                              "argentina/la_rioja",
                              "argentina/mendoza",
                              "argentina/rio_gallegos",
                              "argentina/salta",
                              "argentina/san_juan",
                              "argentina/san_luis",
                              "argentina/tucuman",
                              "argentina/ushuaia",
                              "aruba",
                              "asuncion",
                              "atikokan",
                              "bahia",
                              "bahia_banderas",
                              "barbados",
                              "belem",
                              "belize",
                              "blanc-sablon",
                              "boa_vista",
                              "bogota",
                              "boise",
                              "cambridge_bay",
                              "campo_grande",
                              "cancun",
                              "caracas",
                              "cayenne",
                              "cayman",
                              "chicago",
                              "chihuahua",
                              "costa_rica",
                              "creston",
                              "cuiaba",
                              "curacao",
                              "danmarkshavn",
                              "dawson",
                              "dawson_creek",
                              "denver",
                              "detroit",
                              "dominica",
                              "edmonton",
                              "eirunepe",
                              "el_salvador",
                              "fortaleza",
                              "glace_bay",
                              "godthab",
                              "goose_bay",
                              "grand_turk",
                              "grenada",
                              "guadeloupe",
                              "guatemala",
                              "guayaquil",
                              "guyana",
                              "halifax",
                              "havana",
                              "hermosillo",
                              "indiana/indianapolis",
                              "indiana/knox",
                              "indiana/marengo",
                              "indiana/petersburg",
                              "indiana/tell_city",
                              "indiana/vevay",
                              "indiana/vincennes",
                              "indiana/winamac",
                              "inuvik",
                              "iqaluit",
                              "jamaica",
                              "juneau",
                              "kentucky/louisville",
                              "kentucky/monticello",
                              "kralendijk",
                              "la_paz",
                              "lima",
                              "los_angeles",
                              "lower_princes",
                              "maceio",
                              "managua",
                              "manaus",
                              "marigot",
                              "martinique",
                              "matamoros",
                              "mazatlan",
                              "menominee",
                              "merida",
                              "metlakatla",
                              "mexico_city",
                              "miquelon",
                              "moncton",
                              "monterrey",
                              "montevideo",
                              "montreal",
                              "montserrat",
                              "nassau",
                              "new_york",
                              "nipigon",
                              "nome",
                              "noronha",
                              "north_dakota/beulah",
                              "north_dakota/center",
                              "north_dakota/new_salem",
                              "ojinaga",
                              "panama",
                              "pangnirtung",
                              "paramaribo",
                              "phoenix",
                              "port-au-prince",
                              "port_of_spain",
                              "porto_velho",
                              "puerto_rico",
                              "rainy_river",
                              "rankin_inlet",
                              "recife",
                              "regina",
                              "resolute",
                              "rio_branco",
                              "santa_isabel",
                              "santarem",
                              "santiago",
                              "santo_domingo",
                              "sao_paulo",
                              "scoresbysund",
                              "shiprock",
                              "sitka",
                              "st_barthelemy",
                              "st_johns",
                              "st_kitts",
                              "st_lucia",
                              "st_thomas",
                              "st_vincent",
                              "swift_current",
                              "tegucigalpa",
                              "thule",
                              "thunder_bay",
                              "tijuana",
                              "toronto",
                              "tortola",
                              "vancouver",
                              "whitehorse",
                              "winnipeg",
                              "yakutat",
                              "yellowknife"
                          ],
                          antarctica: [
                              "casey",
                              "davis",
                              "dumontdurville",
                              "macquarie",
                              "mawson",
                              "mcmurdo",
                              "palmer",
                              "rothera",
                              "south_pole",
                              "syowa",
                              "vostok"
                          ],
                          arctic: ["longyearbyen"],
                          asia: [
                              "aden",
                              "almaty",
                              "amman",
                              "anadyr",
                              "aqtau",
                              "aqtobe",
                              "ashgabat",
                              "baghdad",
                              "bahrain",
                              "baku",
                              "bangkok",
                              "beirut",
                              "bishkek",
                              "brunei",
                              "choibalsan",
                              "chongqing",
                              "colombo",
                              "damascus",
                              "dhaka",
                              "dili",
                              "dubai",
                              "dushanbe",
                              "gaza",
                              "harbin",
                              "hebron",
                              "ho_chi_minh",
                              "hong_kong",
                              "hovd",
                              "irkutsk",
                              "jakarta",
                              "jayapura",
                              "jerusalem",
                              "kabul",
                              "kamchatka",
                              "karachi",
                              "kashgar",
                              "kathmandu",
                              "khandyga",
                              "kolkata",
                              "krasnoyarsk",
                              "kuala_lumpur",
                              "kuching",
                              "kuwait",
                              "macau",
                              "magadan",
                              "makassar",
                              "manila",
                              "muscat",
                              "nicosia",
                              "novokuznetsk",
                              "novosibirsk",
                              "omsk",
                              "oral",
                              "phnom_penh",
                              "pontianak",
                              "pyongyang",
                              "qatar",
                              "qyzylorda",
                              "rangoon",
                              "riyadh",
                              "sakhalin",
                              "samarkand",
                              "seoul",
                              "shanghai",
                              "singapore",
                              "taipei",
                              "tashkent",
                              "tbilisi",
                              "tehran",
                              "thimphu",
                              "tokyo",
                              "ulaanbaatar",
                              "urumqi",
                              "ust-nera",
                              "vientiane",
                              "vladivostok",
                              "yakutsk",
                              "yekaterinburg",
                              "yerevan"
                          ],
                          atlantic: [
                              "azores",
                              "bermuda",
                              "canary",
                              "cape_verde",
                              "faroe",
                              "madeira",
                              "reykjavik",
                              "south_georgia",
                              "st_helena",
                              "stanley"
                          ],
                          australia: [
                              "adelaide",
                              "brisbane",
                              "broken_hill",
                              "currie",
                              "darwin",
                              "eucla",
                              "hobart",
                              "lindeman",
                              "lord_howe",
                              "melbourne",
                              "perth",
                              "sydney"
                          ],
                          europe: [
                              "amsterdam",
                              "andorra",
                              "athens",
                              "belgrade",
                              "berlin",
                              "bratislava",
                              "brussels",
                              "bucharest",
                              "budapest",
                              "busingen",
                              "chisinau",
                              "copenhagen",
                              "dublin",
                              "gibraltar",
                              "guernsey",
                              "helsinki",
                              "isle_of_man",
                              "istanbul",
                              "jersey",
                              "kaliningrad",
                              "kiev",
                              "lisbon",
                              "ljubljana",
                              "london",
                              "luxembourg",
                              "madrid",
                              "malta",
                              "mariehamn",
                              "minsk",
                              "monaco",
                              "moscow",
                              "oslo",
                              "paris",
                              "podgorica",
                              "prague",
                              "riga",
                              "rome",
                              "samara",
                              "san_marino",
                              "sarajevo",
                              "simferopol",
                              "skopje",
                              "sofia",
                              "stockholm",
                              "tallinn",
                              "tirane",
                              "uzhgorod",
                              "vaduz",
                              "vatican",
                              "vienna",
                              "vilnius",
                              "volgograd",
                              "warsaw",
                              "zagreb",
                              "zaporozhye",
                              "zurich"
                          ],
                          indian: [
                              "antananarivo",
                              "chagos",
                              "christmas",
                              "cocos",
                              "comoro",
                              "kerguelen",
                              "mahe",
                              "maldives",
                              "mauritius",
                              "mayotte",
                              "reunion"
                          ],
                          pacific: [
                              "apia",
                              "auckland",
                              "chatham",
                              "chuuk",
                              "easter",
                              "efate",
                              "enderbury",
                              "fakaofo",
                              "fiji",
                              "funafuti",
                              "galapagos",
                              "gambier",
                              "guadalcanal",
                              "guam",
                              "honolulu",
                              "johnston",
                              "kiritimati",
                              "kosrae",
                              "kwajalein",
                              "majuro",
                              "marquesas",
                              "midway",
                              "nauru",
                              "niue",
                              "norfolk",
                              "noumea",
                              "pago_pago",
                              "palau",
                              "pitcairn",
                              "pohnpei",
                              "port_moresby",
                              "rarotonga",
                              "saipan",
                              "tahiti",
                              "tarawa",
                              "tongatapu",
                              "wake",
                              "wallis"
                          ],
                          utc: [""]
                      },
                      a = e.split("/", 2),
                      r = a[0].toLowerCase(),
                      n = "";
                  return (
                      a[1] && (n = a[1].toLowerCase()),
                      r in t && (0 === t[r].length || t[r].indexOf(n) !== -1)
                  );
              }
          }
      }),
      $.extend(!0, laravelValidation, {
          methods: {
              helpers: laravelValidation.helpers,
              jsRemoteTimer: 0,
              Sometimes: function() {
                  return !0;
              },
              Bail: function() {
                  return !0;
              },
              Nullable: function() {
                  return !0;
              },
              Filled: function(e, t) {
                  return $.validator.methods.required.call(this, e, t, !0);
              },
              Required: function(e, t) {
                  return $.validator.methods.required.call(this, e, t);
              },
              RequiredWith: function(e, t, a) {
                  var r = this,
                      n = !1,
                      i = this;
                  return (
                      $.each(a, function(e, a) {
                          var s = laravelValidation.helpers.dependentElement(
                              i,
                              t,
                              a
                          );
                          n =
                              n ||
                              (void 0 !== s &&
                                  $.validator.methods.required.call(
                                      r,
                                      i.elementValue(s),
                                      s,
                                      !0
                                  ));
                      }),
                      !n || $.validator.methods.required.call(this, e, t, !0)
                  );
              },
              RequiredWithAll: function(e, t, a) {
                  var r = this,
                      n = !0,
                      i = this;
                  return (
                      $.each(a, function(e, a) {
                          var s = laravelValidation.helpers.dependentElement(
                              i,
                              t,
                              a
                          );
                          n =
                              n &&
                              void 0 !== s &&
                              $.validator.methods.required.call(
                                  r,
                                  i.elementValue(s),
                                  s,
                                  !0
                              );
                      }),
                      !n || $.validator.methods.required.call(this, e, t, !0)
                  );
              },
              RequiredWithout: function(e, t, a) {
                  var r = this,
                      n = !1,
                      i = this;
                  return (
                      $.each(a, function(e, a) {
                          var s = laravelValidation.helpers.dependentElement(
                              i,
                              t,
                              a
                          );
                          n =
                              n ||
                              void 0 === s ||
                              !$.validator.methods.required.call(
                                  r,
                                  i.elementValue(s),
                                  s,
                                  !0
                              );
                      }),
                      !n || $.validator.methods.required.call(this, e, t, !0)
                  );
              },
              RequiredWithoutAll: function(e, t, a) {
                  var r = this,
                      n = !0,
                      i = this;
                  return (
                      $.each(a, function(e, a) {
                          var s = laravelValidation.helpers.dependentElement(
                              i,
                              t,
                              a
                          );
                          n =
                              n &&
                              (void 0 === s ||
                                  !$.validator.methods.required.call(
                                      r,
                                      i.elementValue(s),
                                      s,
                                      !0
                                  ));
                      }),
                      !n || $.validator.methods.required.call(this, e, t, !0)
                  );
              },
              RequiredIf: function(e, t, a) {
                  var r = laravelValidation.helpers.dependentElement(
                      this,
                      t,
                      a[0]
                  );
                  if (void 0 !== r) {
                      var n = String(this.elementValue(r));
                      if ("undefined" != typeof n) {
                          var i = a.slice(1);
                          if ($.inArray(n, i) !== -1)
                              return $.validator.methods.required.call(
                                  this,
                                  e,
                                  t,
                                  !0
                              );
                      }
                  }
                  return !0;
              },
              RequiredUnless: function(e, t, a) {
                  var r = laravelValidation.helpers.dependentElement(
                      this,
                      t,
                      a[0]
                  );
                  if (void 0 !== r) {
                      var n = String(this.elementValue(r));
                      if ("undefined" != typeof n) {
                          var i = a.slice(1);
                          if ($.inArray(n, i) !== -1) return !0;
                      }
                  }
                  return $.validator.methods.required.call(this, e, t, !0);
              },
              Confirmed: function(e, t, a) {
                  return laravelValidation.methods.Same.call(this, e, t, a);
              },
              Same: function(e, t, a) {
                  var r = laravelValidation.helpers.dependentElement(
                      this,
                      t,
                      a[0]
                  );
                  return (
                      void 0 !== r && String(e) === String(this.elementValue(r))
                  );
              },
              InArray: function(e, t, a) {
                  if ("undefined" == typeof a[0]) return !1;
                  for (
                      var r = this.elements(),
                          n = !1,
                          i = laravelValidation.helpers.regexFromWildcard(a[0]),
                          s = 0;
                      s < r.length;
                      s++
                  ) {
                      var o = r[s].name;
                      if (o.match(i)) {
                          var l = laravelValidation.methods.Same.call(
                              this,
                              e,
                              t,
                              [o]
                          );
                          n = n || l;
                      }
                  }
                  return n;
              },
              Distinct: function(e, t, a) {
                  if ("undefined" == typeof a[0]) return !1;
                  for (
                      var r = this.elements(),
                          n = !1,
                          i = laravelValidation.helpers.regexFromWildcard(a[0]),
                          s = 0;
                      s < r.length;
                      s++
                  ) {
                      var o = r[s].name;
                      if (o !== t.name && o.match(i)) {
                          var l = laravelValidation.methods.Same.call(
                              this,
                              e,
                              t,
                              [o]
                          );
                          n = n || l;
                      }
                  }
                  return !n;
              },
              Different: function(e, t, a) {
                  return !laravelValidation.methods.Same.call(this, e, t, a);
              },
              Accepted: function(e) {
                  var t = new RegExp("^(?:(yes|on|1|true))$", "i");
                  return t.test(e);
              },
              Array: function(e, t) {
                  return (
                      (t.name.indexOf("[") !== -1 &&
                          t.name.indexOf("]") !== -1) ||
                      $.isArray(e)
                  );
              },
              Boolean: function(e) {
                  var t = new RegExp("^(?:(true|false|1|0))$", "i");
                  return t.test(e);
              },
              Integer: function(e) {
                  var t = new RegExp("^(?:-?\\d+)$", "i");
                  return t.test(e);
              },
              Numeric: function(e, t) {
                  return $.validator.methods.number.call(this, e, t, !0);
              },
              String: function(e) {
                  return "string" == typeof e;
              },
              Digits: function(e, t, a) {
                  return (
                      $.validator.methods.number.call(this, e, t, !0) &&
                      e.length === parseInt(a, 10)
                  );
              },
              DigitsBetween: function(e, t, a) {
                  return (
                      $.validator.methods.number.call(this, e, t, !0) &&
                      e.length >= parseFloat(a[0]) &&
                      e.length <= parseFloat(a[1])
                  );
              },
              Size: function(e, t, a) {
                  return (
                      laravelValidation.helpers.getSize(this, t, e) ===
                      parseFloat(a[0])
                  );
              },
              Between: function(e, t, a) {
                  return (
                      laravelValidation.helpers.getSize(this, t, e) >=
                          parseFloat(a[0]) &&
                      laravelValidation.helpers.getSize(this, t, e) <=
                          parseFloat(a[1])
                  );
              },
              Min: function(e, t, a) {
                  return (
                      laravelValidation.helpers.getSize(this, t, e) >=
                      parseFloat(a[0])
                  );
              },
              Max: function(e, t, a) {
                  return (
                      laravelValidation.helpers.getSize(this, t, e) <=
                      parseFloat(a[0])
                  );
              },
              In: function(e, t, a) {
                  if (
                      $.isArray(e) &&
                      laravelValidation.helpers.hasRules(t, "Array")
                  ) {
                      var r = laravelValidation.helpers.arrayDiff(e, a);
                      return 0 === Object.keys(r).length;
                  }
                  return a.indexOf(e.toString()) !== -1;
              },
              NotIn: function(e, t, a) {
                  return a.indexOf(e.toString()) === -1;
              },
              Ip: function(e) {
                  return (
                      /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(
                          e
                      ) ||
                      /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(
                          e
                      )
                  );
              },
              Email: function(e, t) {
                  return $.validator.methods.email.call(this, e, t, !0);
              },
              Url: function(e, t) {
                  return $.validator.methods.url.call(this, e, t, !0);
              },
              File: function(e, t) {
                  return (
                      !(
                          window.File &&
                          window.FileReader &&
                          window.FileList &&
                          window.Blob
                      ) ||
                      ("files" in t && t.files.length > 0)
                  );
              },
              Mimes: function(e, t, a) {
                  if (
                      !(
                          window.File &&
                          window.FileReader &&
                          window.FileList &&
                          window.Blob
                      )
                  )
                      return !0;
                  var r = $.map(a, function(e) {
                          return e.toLowerCase();
                      }),
                      n = laravelValidation.helpers.fileinfo(t);
                  return n !== !1 && r.indexOf(n.extension.toLowerCase()) !== -1;
              },
              Mimetypes: function(e, t, a) {
                  if (
                      !(
                          window.File &&
                          window.FileReader &&
                          window.FileList &&
                          window.Blob
                      )
                  )
                      return !0;
                  var r = $.map(a, function(e) {
                          return e.toLowerCase();
                      }),
                      n = laravelValidation.helpers.fileinfo(t);
                  return n !== !1 && r.indexOf(n.type.toLowerCase()) !== -1;
              },
              Image: function(e, t) {
                  return laravelValidation.methods.Mimes.call(this, e, t, [
                      "jpg",
                      "png",
                      "gif",
                      "bmp",
                      "svg",
                      "jpeg"
                  ]);
              },
              Dimensions: function(value, element, params, callback) {
                  if (
                      !(
                          window.File &&
                          window.FileReader &&
                          window.FileList &&
                          window.Blob
                      )
                  )
                      return !0;
                  if (
                      null === element.files ||
                      "undefined" == typeof element.files[0]
                  )
                      return !1;
                  var fr = new FileReader();
                  return (
                      (fr.onload = function() {
                          var img = new Image();
                          (img.onload = function() {
                              var height = parseFloat(img.naturalHeight),
                                  width = parseFloat(img.naturalWidth),
                                  ratio = width / height,
                                  notValid =
                                      (params.width &&
                                          parseFloat(params.width !== width)) ||
                                      (params.min_width &&
                                          parseFloat(params.min_width) > width) ||
                                      (params.max_width &&
                                          parseFloat(params.max_width) < width) ||
                                      (params.height &&
                                          parseFloat(params.height) !== height) ||
                                      (params.min_height &&
                                          parseFloat(params.min_height) >
                                              height) ||
                                      (params.max_height &&
                                          parseFloat(params.max_height) <
                                              height) ||
                                      (params.ratio &&
                                          ratio !==
                                              parseFloat(eval(params.ratio)));
                              callback(!notValid);
                          }),
                              (img.onerror = function() {
                                  callback(!1);
                              }),
                              (img.src = fr.result);
                      }),
                      fr.readAsDataURL(element.files[0]),
                      "pending"
                  );
              },
              Alpha: function(e) {
                  if ("string" != typeof e) return !1;
                  var t = new RegExp("^(?:^[a-zà-ü]+$)$", "i");
                  return t.test(e);
              },
              AlphaNum: function(e) {
                  if ("string" != typeof e) return !1;
                  var t = new RegExp("^(?:^[a-z0-9à-ü]+$)$", "i");
                  return t.test(e);
              },
              AlphaDash: function(e) {
                  if ("string" != typeof e) return !1;
                  var t = new RegExp("^(?:^[a-z0-9à-ü_-]+$)$", "i");
                  return t.test(e);
              },
              Regex: function(e, t, a) {
                  var r = ["x", "s", "u", "X", "U", "A"],
                      n = new RegExp(
                          "^(?:/)(.*\\/?[^/]*|[^/]*)(?:/)([gmixXsuUAJ]*)?$"
                      ),
                      i = a[0].match(n);
                  if (null === i) return !1;
                  var s = [];
                  if (void 0 !== i[2]) {
                      s = i[2].split("");
                      for (var o = 0; o < s.length < o; o++)
                          if (r.indexOf(s[o]) !== -1) return !0;
                  }
                  var l = new RegExp("^(?:" + i[1] + ")$", s.join());
                  return l.test(e);
              },
              Date: function(e) {
                  return laravelValidation.helpers.strtotime(e) !== !1;
              },
              DateFormat: function(e, t, a) {
                  return laravelValidation.helpers.parseTime(e, a[0]) !== !1;
              },
              Before: function(e, t, a) {
                  var r = parseFloat(a);
                  if (isNaN(r)) {
                      var n = laravelValidation.helpers.dependentElement(
                          this,
                          t,
                          a
                      );
                      if (void 0 === n) return !1;
                      r = laravelValidation.helpers.parseTime(
                          this.elementValue(n),
                          n
                      );
                  }
                  var i = laravelValidation.helpers.parseTime(e, t);
                  return i !== !1 && i < r;
              },
              After: function(e, t, a) {
                  var r = parseFloat(a);
                  if (isNaN(r)) {
                      var n = laravelValidation.helpers.dependentElement(
                          this,
                          t,
                          a
                      );
                      if (void 0 === n) return !1;
                      r = laravelValidation.helpers.parseTime(
                          this.elementValue(n),
                          n
                      );
                  }
                  var i = laravelValidation.helpers.parseTime(e, t);
                  return i !== !1 && i > r;
              },
              Timezone: function(e) {
                  return laravelValidation.helpers.isTimezone(e);
              },
              Json: function(e) {
                  var t = !0;
                  try {
                      JSON.parse(e);
                  } catch (a) {
                      t = !1;
                  }
                  return t;
              }
          }
      });
  