/**
* @license AngularJS v1.2.5
* (c) 2010-2014 Google, Inc. http://angularjs.org
* License: MIT
*/
!(function (
window, document, undefined
) {
"use strict";
function minErr(
module
) {
return function (
) {
var message,
i,
code = arguments[0],
prefix = "[" + (module ? module + ":" : "") + code + "] ",
template = arguments[1],
templateArgs = arguments,
stringify = function (
obj
) {
return "function" == typeof obj
? obj.toString(
).replace(
/ \{[\s\S]*$/,
""
)
: void 0 === obj
? "undefined"
: "string" != typeof obj
? JSON.stringify(
obj
)
: obj;
};
for (
message =
(message =
prefix +
template.replace(
/\{\d+\}/g,
function (
match
) {
var arg,
index = +match.slice(
1,
-1
);
return index + 2 < templateArgs.length
? "function" == typeof (arg = templateArgs[index + 2])
? arg.toString(
).replace(
/ ?\{[\s\S]*$/,
""
)
: void 0 === arg
? "undefined"
: "string" != typeof arg
? toJson(
arg
)
: arg
: match;
}
)) +
"\nhttp://errors.angularjs.org/1.2.5/" +
(module ? module + "/" : "") +
code,
i = 2;
i < arguments.length;
i++
)
message =
message +
(2 == i ? "?" : "&") +
"p" +
(i - 2) +
"=" +
encodeURIComponent(
stringify(
arguments[i]
)
);
return new Error(
message
);
};
}
var lowercase = function (
string
) {
return isString(
string
)
? string.toLowerCase(
)
: string;
},
uppercase = function (
string
) {
return isString(
string
)
? string.toUpperCase(
)
: string;
};
"i" !== "I".toLowerCase(
) &&
((lowercase = function (
s
) {
return isString(
s
)
? s.replace(
/[A-Z]/g,
function (
ch
) {
return String.fromCharCode(
32 | ch.charCodeAt(
0
)
);
}
)
: s;
}),
(uppercase = function (
s
) {
return isString(
s
)
? s.replace(
/[a-z]/g,
function (
ch
) {
return String.fromCharCode(
-33 & ch.charCodeAt(
0
)
);
}
)
: s;
}));
var msie,
jqLite,
jQuery,
angularModule,
nodeName_,
slice = [].slice,
push = [].push,
toString = Object.prototype.toString,
ngMinErr = minErr(
"ng"
),
angular = (window.angular, window.angular || (window.angular = {
})),
uid = ["0", "0", "0",];
function isArrayLike(
obj
) {
if (null == obj || isWindow(
obj
)) return !1;
var length = obj.length;
return (
!(1 !== obj.nodeType || !length) ||
isString(
obj
) ||
isArray(
obj
) ||
0 === length ||
("number" == typeof length && length > 0 && length - 1 in obj)
);
}
function forEach(
obj, iterator, context
) {
var key;
if (obj)
if (isFunction(
obj
))
for (key in obj)
"prototype" != key &&
"length" != key &&
"name" != key &&
obj.hasOwnProperty(
key
) &&
iterator.call(
context,
obj[key],
key
);
else if (obj.forEach && obj.forEach !== forEach)
obj.forEach(
iterator,
context
);
else if (isArrayLike(
obj
))
for (key = 0; key < obj.length; key++)
iterator.call(
context,
obj[key],
key
);
else
for (key in obj)
obj.hasOwnProperty(
key
) && iterator.call(
context,
obj[key],
key
);
return obj;
}
function sortedKeys(
obj
) {
var keys = [];
for (var key in obj) obj.hasOwnProperty(
key
) && keys.push(
key
);
return keys.sort(
);
}
function reverseParams(
iteratorFn
) {
return function (
value, key
) {
iteratorFn(
key,
value
);
};
}
function nextUid(
) {
for (var digit, index = uid.length; index; ) {
if ((index--, 57 == (digit = uid[index].charCodeAt(
0
))))
return (uid[index] = "A"), uid.join(
""
);
if (90 != digit)
return (uid[index] = String.fromCharCode(
digit + 1
)), uid.join(
""
);
uid[index] = "0";
}
return uid.unshift(
"0"
), uid.join(
""
);
}
function setHashKey(
obj, h
) {
h ? (obj.$$hashKey = h) : delete obj.$$hashKey;
}
function extend(
dst
) {
var h = dst.$$hashKey;
return (
forEach(
arguments,
function (
obj
) {
obj !== dst &&
forEach(
obj,
function (
value, key
) {
dst[key] = value;
}
);
}
),
setHashKey(
dst,
h
),
dst
);
}
function int(
str
) {
return parseInt(
str,
10
);
}
function inherit(
parent, extra
) {
return extend(
new (extend(
function (
) {},
{
prototype: parent,
}
))(
),
extra
);
}
function noop(
) {}
function identity(
$
) {
return $;
}
function valueFn(
value
) {
return function (
) {
return value;
};
}
function isUndefined(
value
) {
return void 0 === value;
}
function isDefined(
value
) {
return void 0 !== value;
}
function isObject(
value
) {
return null != value && "object" == typeof value;
}
function isString(
value
) {
return "string" == typeof value;
}
function isNumber(
value
) {
return "number" == typeof value;
}
function isDate(
value
) {
return "[object Date]" === toString.call(
value
);
}
function isArray(
value
) {
return "[object Array]" === toString.call(
value
);
}
function isFunction(
value
) {
return "function" == typeof value;
}
function isRegExp(
value
) {
return "[object RegExp]" === toString.call(
value
);
}
function isWindow(
obj
) {
return obj && obj.document && obj.location && obj.alert && obj.setInterval;
}
function isScope(
obj
) {
return obj && obj.$evalAsync && obj.$watch;
}
(msie = int(
(/msie (\d+)/.exec(
lowercase(
navigator.userAgent
)
) || [])[1]
)),
isNaN(
msie
) &&
(msie = int(
(/trident\/.*; rv:(\d+)/.exec(
lowercase(
navigator.userAgent
)
) || [])[1],
)),
(noop.$inject = []),
(identity.$inject = []);
var trim = String.prototype.trim
? function (
value
) {
return isString(
value
)
? value.trim(
)
: value;
}
: function (
value
) {
return isString(
value
)
? value.replace(
/^\s\s*/,
""
).replace(
/\s\s*$/,
""
)
: value;
};
function isElement(
node
) {
return !(!node || !(node.nodeName || (node.on && node.find)));
}
function indexOf(
array, obj
) {
if (array.indexOf) return array.indexOf(
obj
);
for (var i = 0; i < array.length; i++) if (obj === array[i]) return i;
return -1;
}
function arrayRemove(
array, value
) {
var index = indexOf(
array,
value
);
return index >= 0 && array.splice(
index,
1
), value;
}
function copy(
source, destination
) {
if (isWindow(
source
) || isScope(
source
))
throw ngMinErr(
"cpws",
"Can't copy! Making copies of Window or Scope instances is not supported.",
);
if (destination) {
if (source === destination)
throw ngMinErr(
"cpi",
"Can't copy! Source and destination are identical.",
);
if (isArray(
source
)) {
destination.length = 0;
for (var i = 0; i < source.length; i++)
destination.push(
copy(
source[i]
)
);
} else {
var h = destination.$$hashKey;
for (var key in (forEach(
destination,
function (
value, key
) {
delete destination[key];
}
),
source))
destination[key] = copy(
source[key]
);
setHashKey(
destination,
h
);
}
} else
(destination = source),
source &&
(isArray(
source
)
? (destination = copy(
source,
[]
))
: isDate(
source
)
? (destination = new Date(
source.getTime(
)
))
: isRegExp(
source
)
? (destination = new RegExp(
source.source
))
: isObject(
source
) && (destination = copy(
source,
{
}
)));
return destination;
}
function equals(
o1, o2
) {
if (o1 === o2) return !0;
if (null === o1 || null === o2) return !1;
if (o1 != o1 && o2 != o2) return !0;
var length,
key,
keySet,
t1 = typeof o1;
if (t1 == typeof o2 && "object" == t1) {
if (!isArray(
o1
)) {
if (isDate(
o1
)) return isDate(
o2
) && o1.getTime(
) == o2.getTime(
);
if (isRegExp(
o1
) && isRegExp(
o2
)) return o1.toString(
) == o2.toString(
);
if (
isScope(
o1
) ||
isScope(
o2
) ||
isWindow(
o1
) ||
isWindow(
o2
) ||
isArray(
o2
)
)
return !1;
for (key in ((keySet = {
}), o1))
if ("$" !== key.charAt(
0
) && !isFunction(
o1[key]
)) {
if (!equals(
o1[key],
o2[key]
)) return !1;
keySet[key] = !0;
}
for (key in o2)
if (
!keySet.hasOwnProperty(
key
) &&
"$" !== key.charAt(
0
) &&
undefined !== o2[key] &&
!isFunction(
o2[key]
)
)
return !1;
return !0;
}
if (!isArray(
o2
)) return !1;
if ((length = o1.length) == o2.length) {
for (key = 0; key < length; key++)
if (!equals(
o1[key],
o2[key]
)) return !1;
return !0;
}
}
return !1;
}
function csp(
) {
return (
(document.securityPolicy && document.securityPolicy.isActive) ||
(document.querySelector &&
!(
!document.querySelector(
"[ng-csp]"
) &&
!document.querySelector(
"[data-ng-csp]"
)
))
);
}
function concat(
array1, array2, index
) {
return array1.concat(
slice.call(
array2,
index
)
);
}
function sliceArgs(
args, startIndex
) {
return slice.call(
args,
startIndex || 0
);
}
function bind(
self, fn
) {
var curryArgs = arguments.length > 2
? sliceArgs(
arguments,
2
)
: [];
return !isFunction(
fn
) || fn instanceof RegExp
? fn
: curryArgs.length
? function (
) {
return arguments.length
? fn.apply(
self,
curryArgs.concat(
slice.call(
arguments,
0
)
)
)
: fn.apply(
self,
curryArgs
);
}
: function (
) {
return arguments.length
? fn.apply(
self,
arguments
)
: fn.call(
self
);
};
}
function toJsonReplacer(
key, value
) {
var val = value;
return (
"string" == typeof key && "$" === key.charAt(
0
)
? (val = undefined)
: isWindow(
value
)
? (val = "$WINDOW")
: value && document === value
? (val = "$DOCUMENT")
: isScope(
value
) && (val = "$SCOPE"),
val
);
}
function toJson(
obj, pretty
) {
if (void 0 !== obj)
return JSON.stringify(
obj,
toJsonReplacer,
pretty ? " " : null
);
}
function fromJson(
json
) {
return isString(
json
)
? JSON.parse(
json
)
: json;
}
function toBoolean(
value
) {
if (value && 0 !== value.length) {
var v = lowercase(
"" + value
);
value = !(
"f" == v ||
"0" == v ||
"false" == v ||
"no" == v ||
"n" == v ||
"[]" == v
);
} else value = !1;
return value;
}
function startingTag(
element
) {
element = jqLite(
element
).clone(
);
try {
element.empty(
);
} catch (e) {}
var elemHtml = jqLite(
"
"
).append(
element
).html(
);
try {
return 3 === element[0].nodeType
? lowercase(
elemHtml
)
: elemHtml
.match(
/^(<[^>]+>)/
)[1]
.replace(
/^<([\w\-]+)/,
function (
match, nodeName
) {
return "<" + lowercase(
nodeName
);
}
);
} catch (e) {
return lowercase(
elemHtml
);
}
}
function tryDecodeURIComponent(
value
) {
try {
return decodeURIComponent(
value
);
} catch (e) {}
}
function parseKeyValue(
keyValue
) {
var key_value,
key,
obj = {
};
return (
forEach(
(keyValue || "").split(
"&"
),
function (
keyValue
) {
if (
keyValue &&
((key_value = keyValue.split(
"="
)),
isDefined(
(key = tryDecodeURIComponent(
key_value[0]
))
))
) {
var val =
!isDefined(
key_value[1]
) || tryDecodeURIComponent(
key_value[1]
);
obj[key]
? isArray(
obj[key]
)
? obj[key].push(
val
)
: (obj[key] = [obj[key], val,])
: (obj[key] = val);
}
}
),
obj
);
}
function toKeyValue(
obj
) {
var parts = [];
return (
forEach(
obj,
function (
value, key
) {
isArray(
value
)
? forEach(
value,
function (
arrayValue
) {
parts.push(
encodeUriQuery(
key,
!0
) +
(!0 === arrayValue
? ""
: "=" + encodeUriQuery(
arrayValue,
!0
)),
);
}
)
: parts.push(
encodeUriQuery(
key,
!0
) +
(!0 === value
? ""
: "=" + encodeUriQuery(
value,
!0
)),
);
}
),
parts.length
? parts.join(
"&"
)
: ""
);
}
function encodeUriSegment(
val
) {
return encodeUriQuery(
val,
!0
)
.replace(
/%26/gi,
"&"
)
.replace(
/%3D/gi,
"="
)
.replace(
/%2B/gi,
"+"
);
}
function encodeUriQuery(
val, pctEncodeSpaces
) {
return encodeURIComponent(
val
)
.replace(
/%40/gi,
"@"
)
.replace(
/%3A/gi,
":"
)
.replace(
/%24/g,
"$"
)
.replace(
/%2C/gi,
","
)
.replace(
/%20/g,
pctEncodeSpaces ? "%20" : "+"
);
}
function bootstrap(
element, modules
) {
var doBootstrap = function (
) {
if ((element = jqLite(
element
)).injector(
)) {
var tag = element[0] === document
? "document"
: startingTag(
element
);
throw ngMinErr(
"btstrpd",
"App Already Bootstrapped with this Element '{0}'",
tag,
);
}
(modules = modules || []).unshift(
[
"$provide",
function (
$provide
) {
$provide.value(
"$rootElement",
element
);
},
]
),
modules.unshift(
"ng"
);
var injector = createInjector(
modules
);
return (
injector.invoke(
[
"$rootScope",
"$rootElement",
"$compile",
"$injector",
"$animate",
function (
scope, element, compile, injector, animate
) {
scope.$apply(
function (
) {
element.data(
"$injector",
injector
), compile(
element
)(
scope
);
}
);
},
]
),
injector
);
},
NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;
if (window && !NG_DEFER_BOOTSTRAP.test(
window.name
)) return doBootstrap(
);
(window.name = window.name.replace(
NG_DEFER_BOOTSTRAP,
""
)),
(angular.resumeBootstrap = function (
extraModules
) {
forEach(
extraModules,
function (
module
) {
modules.push(
module
);
}
),
doBootstrap(
);
});
}
nodeName_ =
msie < 9
? function (
element
) {
return (element = element.nodeName ? element : element[0])
.scopeName && "HTML" != element.scopeName
? uppercase(
element.scopeName + ":" + element.nodeName
)
: element.nodeName;
}
: function (
element
) {
return element.nodeName ? element.nodeName : element[0].nodeName;
};
var SNAKE_CASE_REGEXP = /[A-Z]/g;
function snake_case(
name, separator
) {
return (
(separator = separator || "_"),
name.replace(
SNAKE_CASE_REGEXP,
function (
letter, pos
) {
return (pos ? separator : "") + letter.toLowerCase(
);
}
)
);
}
function assertArg(
arg, name, reason
) {
if (!arg)
throw ngMinErr(
"areq",
"Argument '{0}' is {1}",
name || "?",
reason || "required",
);
return arg;
}
function assertArgFn(
arg, name, acceptArrayAnnotation
) {
return (
acceptArrayAnnotation && isArray(
arg
) && (arg = arg[arg.length - 1]),
assertArg(
isFunction(
arg
),
name,
"not a function, got " +
(arg && "object" == typeof arg
? arg.constructor.name || "Object"
: typeof arg),
),
arg
);
}
function assertNotHasOwnProperty(
name, context
) {
if ("hasOwnProperty" === name)
throw ngMinErr(
"badname",
"hasOwnProperty is not a valid {0} name",
context,
);
}
function getter(
obj, path, bindFnToScope
) {
if (!path) return obj;
for (
var key,
keys = path.split(
"."
),
lastInstance = obj,
len = keys.length,
i = 0;
i < len;
i++
)
(key = keys[i]), obj && (obj = (lastInstance = obj)[key]);
return !bindFnToScope && isFunction(
obj
)
? bind(
lastInstance,
obj
)
: obj;
}
function getBlockElements(
nodes
) {
var startNode = nodes[0],
endNode = nodes[nodes.length - 1];
if (startNode === endNode) return jqLite(
startNode
);
var element = startNode,
elements = [element,];
do {
if (!(element = element.nextSibling)) break;
elements.push(
element
);
} while (element !== endNode);
return jqLite(
elements
);
}
var version = {
full: "1.2.5",
major: 1,
minor: 2,
dot: 5,
codeName: "singularity-expansion",
};
var jqCache = (JQLite.cache = {
}),
jqName = (JQLite.expando = "ng-" + new Date(
).getTime(
)),
jqId = 1,
addEventListenerFn = window.document.addEventListener
? function (
element, type, fn
) {
element.addEventListener(
type,
fn,
!1
);
}
: function (
element, type, fn
) {
element.attachEvent(
"on" + type,
fn
);
},
removeEventListenerFn = window.document.removeEventListener
? function (
element, type, fn
) {
element.removeEventListener(
type,
fn,
!1
);
}
: function (
element, type, fn
) {
element.detachEvent(
"on" + type,
fn
);
};
var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g,
MOZ_HACK_REGEXP = /^moz([A-Z])/,
jqLiteMinErr = minErr(
"jqLite"
);
function camelCase(
name
) {
return name
.replace(
SPECIAL_CHARS_REGEXP,
function (
_, separator, letter, offset
) {
return offset
? letter.toUpperCase(
)
: letter;
}
)
.replace(
MOZ_HACK_REGEXP,
"Moz$1"
);
}
function jqLitePatchJQueryRemove(
name,
dispatchThis,
filterElems,
getterIfNoArguments,
) {
var originalJqFn = jQuery.fn[name];
function removePatch(
param
) {
var set,
setIndex,
setLength,
element,
childIndex,
childLength,
children,
list = filterElems && param
? [this.filter(
param
),]
: [this,],
fireEvent = dispatchThis;
if (!getterIfNoArguments || null != param)
for (; list.length; )
for (
setIndex = 0, setLength = (set = list.shift(
)).length;
setIndex < setLength;
setIndex++
)
for (
element = jqLite(
set[setIndex]
),
fireEvent
? element.triggerHandler(
"$destroy"
)
: (fireEvent = !fireEvent),
childIndex = 0,
childLength = (children = element.children(
)).length;
childIndex < childLength;
childIndex++
)
list.push(
jQuery(
children[childIndex]
)
);
return originalJqFn.apply(
this,
arguments
);
}
(originalJqFn = originalJqFn.$original || originalJqFn),
(removePatch.$original = originalJqFn),
(jQuery.fn[name] = removePatch);
}
function JQLite(
element
) {
if (element instanceof JQLite) return element;
if (!(this instanceof JQLite)) {
if (isString(
element
) && "<" != element.charAt(
0
))
throw jqLiteMinErr(
"nosel",
"Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element",
);
return new JQLite(
element
);
}
if (isString(
element
)) {
var div = document.createElement(
"div"
);
(div.innerHTML = "
" + element),
div.removeChild(
div.firstChild
),
jqLiteAddNodes(
this,
div.childNodes
),
jqLite(
document.createDocumentFragment(
)
).append(
this
);
} else jqLiteAddNodes(
this,
element
);
}
function jqLiteClone(
element
) {
return element.cloneNode(
!0
);
}
function jqLiteDealoc(
element
) {
jqLiteRemoveData(
element
);
for (
var i = 0, children = element.childNodes || [];
i < children.length;
i++
)
jqLiteDealoc(
children[i]
);
}
function jqLiteOff(
element, type, fn, unsupported
) {
if (isDefined(
unsupported
))
throw jqLiteMinErr(
"offargs",
"jqLite#off() does not support the `selector` argument",
);
var events = jqLiteExpandoStore(
element,
"events"
);
jqLiteExpandoStore(
element,
"handle"
) &&
(isUndefined(
type
)
? forEach(
events,
function (
eventHandler, type
) {
removeEventListenerFn(
element,
type,
eventHandler
),
delete events[type];
}
)
: forEach(
type.split(
" "
),
function (
type
) {
isUndefined(
fn
)
? (removeEventListenerFn(
element,
type,
events[type]
),
delete events[type])
: arrayRemove(
events[type] || [],
fn
);
}
));
}
function jqLiteRemoveData(
element, name
) {
var expandoId = element[jqName],
expandoStore = jqCache[expandoId];
if (expandoStore) {
if (name) return void delete jqCache[expandoId].data[name];
expandoStore.handle &&
(expandoStore.events.$destroy && expandoStore.handle(
{
},
"$destroy"
),
jqLiteOff(
element
)),
delete jqCache[expandoId],
(element[jqName] = undefined);
}
}
function jqLiteExpandoStore(
element, key, value
) {
var expandoId = element[jqName],
expandoStore = jqCache[expandoId || -1];
if (!isDefined(
value
)) return expandoStore && expandoStore[key];
expandoStore ||
((element[jqName] = expandoId = ++jqId),
(expandoStore = jqCache[expandoId] = {
})),
(expandoStore[key] = value);
}
function jqLiteData(
element, key, value
) {
var data = jqLiteExpandoStore(
element,
"data"
),
isSetter = isDefined(
value
),
keyDefined = !isSetter && isDefined(
key
),
isSimpleGetter = keyDefined && !isObject(
key
);
if (
(data ||
isSimpleGetter ||
jqLiteExpandoStore(
element,
"data", (
data = {
})
),
isSetter)
)
data[key] = value;
else {
if (!keyDefined) return data;
if (isSimpleGetter) return data && data[key];
extend(
data,
key
);
}
}
function jqLiteHasClass(
element, selector
) {
return (
!!element.getAttribute &&
(" " + (element.getAttribute(
"class"
) || "") + " ")
.replace(
/[\n\t]/g,
" "
)
.indexOf(
" " + selector + " "
) > -1
);
}
function jqLiteRemoveClass(
element, cssClasses
) {
cssClasses &&
element.setAttribute &&
forEach(
cssClasses.split(
" "
),
function (
cssClass
) {
element.setAttribute(
"class",
trim(
(" " + (element.getAttribute(
"class"
) || "") + " ")
.replace(
/[\n\t]/g,
" "
)
.replace(
" " + trim(
cssClass
) + " ",
" "
),
),
);
}
);
}
function jqLiteAddClass(
element, cssClasses
) {
if (cssClasses && element.setAttribute) {
var existingClasses = (
" " +
(element.getAttribute(
"class"
) || "") +
" "
).replace(
/[\n\t]/g,
" "
);
forEach(
cssClasses.split(
" "
),
function (
cssClass
) {
(cssClass = trim(
cssClass
)),
-1 === existingClasses.indexOf(
" " + cssClass + " "
) &&
(existingClasses += cssClass + " ");
}
),
element.setAttribute(
"class",
trim(
existingClasses
)
);
}
}
function jqLiteAddNodes(
root, elements
) {
if (elements) {
elements =
elements.nodeName || !isDefined(
elements.length
) || isWindow(
elements
)
? [elements,]
: elements;
for (var i = 0; i < elements.length; i++) root.push(
elements[i]
);
}
}
function jqLiteController(
element, name
) {
return jqLiteInheritedData(
element,
"$" + (name || "ngController") + "Controller",
);
}
function jqLiteInheritedData(
element, name, value
) {
9 == (element = jqLite(
element
))[0].nodeType &&
(element = element.find(
"html"
));
for (var names = isArray(
name
)
? name
: [name,]; element.length; ) {
for (var i = 0, ii = names.length; i < ii; i++)
if (undefined !== (value = element.data(
names[i]
))) return value;
element = element.parent(
);
}
}
function jqLiteEmpty(
element
) {
for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++)
jqLiteDealoc(
childNodes[i]
);
for (; element.firstChild; ) element.removeChild(
element.firstChild
);
}
var JQLitePrototype = (JQLite.prototype = {
ready: function (
fn
) {
var fired = !1;
function trigger(
) {
fired || ((fired = !0), fn(
));
}
"complete" === document.readyState
? setTimeout(
trigger
)
: (this.on(
"DOMContentLoaded",
trigger
),
JQLite(
window
).on(
"load",
trigger
));
},
toString: function (
) {
var value = [];
return (
forEach(
this,
function (
e
) {
value.push(
"" + e
);
}
),
"[" + value.join(
", "
) + "]"
);
},
eq: function (
index
) {
return jqLite(
index >= 0 ? this[index] : this[this.length + index]
);
},
length: 0,
push: push,
sort: [].sort,
splice: [].splice,
}),
BOOLEAN_ATTR = {
};
forEach(
"multiple,selected,checked,disabled,readOnly,required,open".split(
","
),
function (
value
) {
BOOLEAN_ATTR[lowercase(
value
)] = value;
},
);
var BOOLEAN_ELEMENTS = {
};
function getBooleanAttrName(
element, name
) {
var booleanAttr = BOOLEAN_ATTR[name.toLowerCase(
)];
return booleanAttr && BOOLEAN_ELEMENTS[element.nodeName] && booleanAttr;
}
function hashKey(
obj
) {
var key,
objType = typeof obj;
return (
"object" == objType && null !== obj
? "function" == typeof (key = obj.$$hashKey)
? (key = obj.$$hashKey(
))
: undefined === key && (key = obj.$$hashKey = nextUid(
))
: (key = obj),
objType + ":" + key
);
}
function HashMap(
array
) {
forEach(
array,
this.put,
this
);
}
forEach(
"input,select,option,textarea,button,form,details".split(
","
),
function (
value
) {
BOOLEAN_ELEMENTS[uppercase(
value
)] = !0;
},
),
forEach(
{
data: jqLiteData,
inheritedData: jqLiteInheritedData,
scope: function (
element
) {
return (
jqLite(
element
).data(
"$scope"
) ||
jqLiteInheritedData(
element.parentNode || element,
[
"$isolateScope",
"$scope",
]
)
);
},
isolateScope: function (
element
) {
return (
jqLite(
element
).data(
"$isolateScope"
) ||
jqLite(
element
).data(
"$isolateScopeNoTemplate"
)
);
},
controller: jqLiteController,
injector: function (
element
) {
return jqLiteInheritedData(
element,
"$injector"
);
},
removeAttr: function (
element, name
) {
element.removeAttribute(
name
);
},
hasClass: jqLiteHasClass,
css: function (
element, name, value
) {
var val;
if (((name = camelCase(
name
)), !isDefined(
value
)))
return (
msie <= 8 &&
"" ===
(val = element.currentStyle && element.currentStyle[name]) &&
(val = "auto"),
(val = val || element.style[name]),
msie <= 8 && (val = "" === val ? undefined : val),
val
);
element.style[name] = value;
},
attr: function (
element, name, value
) {
var lowercasedName = lowercase(
name
);
if (BOOLEAN_ATTR[lowercasedName]) {
if (!isDefined(
value
))
return element[name] ||
(element.attributes.getNamedItem(
name
) || noop).specified
? lowercasedName
: undefined;
value
? ((element[name] = !0),
element.setAttribute(
name,
lowercasedName
))
: ((element[name] = !1), element.removeAttribute(
lowercasedName
));
} else if (isDefined(
value
)) element.setAttribute(
name,
value
);
else if (element.getAttribute) {
var ret = element.getAttribute(
name,
2
);
return null === ret ? undefined : ret;
}
},
prop: function (
element, name, value
) {
if (!isDefined(
value
)) return element[name];
element[name] = value;
},
text: (function (
) {
var NODE_TYPE_TEXT_PROPERTY = [];
return (
msie < 9
? ((NODE_TYPE_TEXT_PROPERTY[1] = "innerText"),
(NODE_TYPE_TEXT_PROPERTY[3] = "nodeValue"))
: (NODE_TYPE_TEXT_PROPERTY[1] = NODE_TYPE_TEXT_PROPERTY[3] =
"textContent"),
(getText.$dv = ""),
getText
);
function getText(
element, value
) {
var textProp = NODE_TYPE_TEXT_PROPERTY[element.nodeType];
if (isUndefined(
value
)) return textProp ? element[textProp] : "";
element[textProp] = value;
}
})(
),
val: function (
element, value
) {
if (isUndefined(
value
)) {
if ("SELECT" === nodeName_(
element
) && element.multiple) {
var result = [];
return (
forEach(
element.options,
function (
option
) {
option.selected && result.push(
option.value || option.text
);
}
),
0 === result.length ? null : result
);
}
return element.value;
}
element.value = value;
},
html: function (
element, value
) {
if (isUndefined(
value
)) return element.innerHTML;
for (
var i = 0, childNodes = element.childNodes;
i < childNodes.length;
i++
)
jqLiteDealoc(
childNodes[i]
);
element.innerHTML = value;
},
empty: jqLiteEmpty,
},
function (
fn, name
) {
JQLite.prototype[name] = function (
arg1, arg2
) {
var i, key;
if (
fn !== jqLiteEmpty &&
undefined ===
(2 == fn.length &&
fn !== jqLiteHasClass &&
fn !== jqLiteController
? arg1
: arg2)
) {
if (isObject(
arg1
)) {
for (i = 0; i < this.length; i++)
if (fn === jqLiteData) fn(
this[i],
arg1
);
else for (key in arg1) fn(
this[i],
key,
arg1[key]
);
return this;
}
for (
var value = fn.$dv,
jj =
undefined === value
? Math.min(
this.length,
1
)
: this.length,
j = 0;
j < jj;
j++
) {
var nodeValue = fn(
this[j],
arg1,
arg2
);
value = value ? value + nodeValue : nodeValue;
}
return value;
}
for (i = 0; i < this.length; i++) fn(
this[i],
arg1,
arg2
);
return this;
};
},
),
forEach(
{
removeData: jqLiteRemoveData,
dealoc: jqLiteDealoc,
on: function onFn(
element, type, fn, unsupported
) {
if (isDefined(
unsupported
))
throw jqLiteMinErr(
"onargs",
"jqLite#on() does not support the `selector` or `eventData` parameters",
);
var events = jqLiteExpandoStore(
element,
"events"
),
handle = jqLiteExpandoStore(
element,
"handle"
);
events || jqLiteExpandoStore(
element,
"events", (
events = {
})
),
handle ||
jqLiteExpandoStore(
element,
"handle",
(handle = (function (
element, events
) {
var eventHandler = function (
event, type
) {
if (
(event.preventDefault ||
(event.preventDefault = function (
) {
event.returnValue = !1;
}),
event.stopPropagation ||
(event.stopPropagation = function (
) {
event.cancelBubble = !0;
}),
event.target ||
(event.target = event.srcElement || document),
isUndefined(
event.defaultPrevented
))
) {
var prevent = event.preventDefault;
(event.preventDefault = function (
) {
(event.defaultPrevented = !0), prevent.call(
event
);
}),
(event.defaultPrevented = !1);
}
(event.isDefaultPrevented = function (
) {
return event.defaultPrevented || !1 === event.returnValue;
}),
forEach(
events[type || event.type],
function (
fn
) {
fn.call(
element,
event
);
}
),
msie <= 8
? ((event.preventDefault = null),
(event.stopPropagation = null),
(event.isDefaultPrevented = null))
: (delete event.preventDefault,
delete event.stopPropagation,
delete event.isDefaultPrevented);
};
return (eventHandler.elem = element), eventHandler;
})(
element,
events
)),
),
forEach(
type.split(
" "
),
function (
type
) {
var eventFns = events[type];
if (!eventFns) {
if ("mouseenter" == type || "mouseleave" == type) {
var contains =
document.body.contains ||
document.body.compareDocumentPosition
? function (
a, b
) {
var adown = 9 === a.nodeType ? a.documentElement : a,
bup = b && b.parentNode;
return (
a === bup ||
!(
!bup ||
1 !== bup.nodeType ||
!(adown.contains
? adown.contains(
bup
)
: a.compareDocumentPosition &&
16 & a.compareDocumentPosition(
bup
))
)
);
}
: function (
a, b
) {
if (b)
for (; (b = b.parentNode); ) if (b === a) return !0;
return !1;
};
events[type] = [];
onFn(
element,
{
mouseleave: "mouseout",
mouseenter: "mouseover",
}[type],
function (
event
) {
var related = event.relatedTarget;
(related &&
(related === this || contains(
this,
related
))) ||
handle(
event,
type
);
},
);
} else
addEventListenerFn(
element,
type,
handle
),
(events[type] = []);
eventFns = events[type];
}
eventFns.push(
fn
);
}
);
},
off: jqLiteOff,
replaceWith: function (
element, replaceNode
) {
var index,
parent = element.parentNode;
jqLiteDealoc(
element
),
forEach(
new JQLite(
replaceNode
),
function (
node
) {
index
? parent.insertBefore(
node,
index.nextSibling
)
: parent.replaceChild(
node,
element
),
(index = node);
}
);
},
children: function (
element
) {
var children = [];
return (
forEach(
element.childNodes,
function (
element
) {
1 === element.nodeType && children.push(
element
);
}
),
children
);
},
contents: function (
element
) {
return element.childNodes || [];
},
append: function (
element, node
) {
forEach(
new JQLite(
node
),
function (
child
) {
(1 !== element.nodeType && 11 !== element.nodeType) ||
element.appendChild(
child
);
}
);
},
prepend: function (
element, node
) {
if (1 === element.nodeType) {
var index = element.firstChild;
forEach(
new JQLite(
node
),
function (
child
) {
element.insertBefore(
child,
index
);
}
);
}
},
wrap: function (
element, wrapNode
) {
wrapNode = jqLite(
wrapNode
)[0];
var parent = element.parentNode;
parent && parent.replaceChild(
wrapNode,
element
),
wrapNode.appendChild(
element
);
},
remove: function (
element
) {
jqLiteDealoc(
element
);
var parent = element.parentNode;
parent && parent.removeChild(
element
);
},
after: function (
element, newElement
) {
var index = element,
parent = element.parentNode;
forEach(
new JQLite(
newElement
),
function (
node
) {
parent.insertBefore(
node,
index.nextSibling
), (index = node);
}
);
},
addClass: jqLiteAddClass,
removeClass: jqLiteRemoveClass,
toggleClass: function (
element, selector, condition
) {
isUndefined(
condition
) &&
(condition = !jqLiteHasClass(
element,
selector
)),
(condition ? jqLiteAddClass : jqLiteRemoveClass)(
element,
selector
);
},
parent: function (
element
) {
var parent = element.parentNode;
return parent && 11 !== parent.nodeType ? parent : null;
},
next: function (
element
) {
if (element.nextElementSibling) return element.nextElementSibling;
for (
var elm = element.nextSibling;
null != elm && 1 !== elm.nodeType;
)
elm = elm.nextSibling;
return elm;
},
find: function (
element, selector
) {
return element.getElementsByTagName
? element.getElementsByTagName(
selector
)
: [];
},
clone: jqLiteClone,
triggerHandler: function (
element, eventName, eventData
) {
var eventFns = (jqLiteExpandoStore(
element,
"events"
) || {
})[
eventName
];
eventData = eventData || [];
var event = [{
preventDefault: noop,
stopPropagation: noop,
},];
forEach(
eventFns,
function (
fn
) {
fn.apply(
element,
event.concat(
eventData
)
);
}
);
},
},
function (
fn, name
) {
(JQLite.prototype[name] = function (
arg1, arg2, arg3
) {
for (var value, i = 0; i < this.length; i++)
isUndefined(
value
)
? isDefined(
(value = fn(
this[i],
arg1,
arg2,
arg3
))
) &&
(value = jqLite(
value
))
: jqLiteAddNodes(
value,
fn(
this[i],
arg1,
arg2,
arg3
)
);
return isDefined(
value
)
? value
: this;
}),
(JQLite.prototype.bind = JQLite.prototype.on),
(JQLite.prototype.unbind = JQLite.prototype.off);
},
),
(HashMap.prototype = {
put: function (
key, value
) {
this[hashKey(
key
)] = value;
},
get: function (
key
) {
return this[hashKey(
key
)];
},
remove: function (
key
) {
var value = this[(key = hashKey(
key
))];
return delete this[key], value;
},
});
var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m,
FN_ARG_SPLIT = /,/,
FN_ARG = /^\s*(_?)(\S+?)\1\s*$/,
STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
$injectorMinErr = minErr(
"$injector"
);
function annotate(
fn
) {
var $inject, last;
return (
"function" == typeof fn
? ($inject = fn.$inject) ||
(($inject = []),
fn.length &&
forEach(
fn
.toString(
)
.replace(
STRIP_COMMENTS,
""
)
.match(
FN_ARGS
)[1]
.split(
FN_ARG_SPLIT
),
function (
arg
) {
arg.replace(
FN_ARG,
function (
all, underscore, name
) {
$inject.push(
name
);
}
);
},
),
(fn.$inject = $inject))
: isArray(
fn
)
? (assertArgFn(
fn[(last = fn.length - 1)],
"fn"
),
($inject = fn.slice(
0,
last
)))
: assertArgFn(
fn,
"fn",
!0
),
$inject
);
}
function createInjector(
modulesToLoad
) {
var INSTANTIATING = {
},
path = [],
loadedModules = new HashMap(
),
providerCache = {
$provide: {
provider: supportObject(
provider
),
factory: supportObject(
factory
),
service: supportObject(
function (
name, constructor
) {
return factory(
name,
[
"$injector",
function (
$injector
) {
return $injector.instantiate(
constructor
);
},
]
);
}
),
value: supportObject(
function (
name, val
) {
return factory(
name,
valueFn(
val
)
);
}
),
constant: supportObject(
function (
name, value
) {
assertNotHasOwnProperty(
name,
"constant"
),
(providerCache[name] = value),
(instanceCache[name] = value);
}
),
decorator: function (
serviceName, decorFn
) {
var origProvider = providerInjector.get(
serviceName + "Provider"
),
orig$get = origProvider.$get;
origProvider.$get = function (
) {
var origInstance = instanceInjector.invoke(
orig$get,
origProvider,
);
return instanceInjector.invoke(
decorFn,
null,
{
$delegate: origInstance,
}
);
};
},
},
},
providerInjector = (providerCache.$injector = createInternalInjector(
providerCache,
function (
) {
throw $injectorMinErr(
"unpr",
"Unknown provider: {0}",
path.join(
" <- "
),
);
},
)),
instanceCache = {
},
instanceInjector = (instanceCache.$injector = createInternalInjector(
instanceCache,
function (
servicename
) {
var provider = providerInjector.get(
servicename + "Provider"
);
return instanceInjector.invoke(
provider.$get,
provider
);
},
));
return (
forEach(
(function loadModules(
modulesToLoad
) {
var moduleFn,
invokeQueue,
i,
ii,
runBlocks = [];
return (
forEach(
modulesToLoad,
function (
module
) {
if (!loadedModules.get(
module
)) {
loadedModules.put(
module,
!0
);
try {
if (isString(
module
))
for (
moduleFn = angularModule(
module
),
runBlocks = runBlocks
.concat(
loadModules(
moduleFn.requires
)
)
.concat(
moduleFn._runBlocks
),
invokeQueue = moduleFn._invokeQueue,
i = 0,
ii = invokeQueue.length;
i < ii;
i++
) {
var invokeArgs = invokeQueue[i],
provider = providerInjector.get(
invokeArgs[0]
);
provider[invokeArgs[1]].apply(
provider,
invokeArgs[2]
);
}
else
isFunction(
module
) || isArray(
module
)
? runBlocks.push(
providerInjector.invoke(
module
)
)
: assertArgFn(
module,
"module"
);
} catch (e) {
throw (
(isArray(
module
) && (module = module[module.length - 1]),
e.message &&
e.stack &&
-1 == e.stack.indexOf(
e.message
) &&
(e = e.message + "\n" + e.stack),
$injectorMinErr(
"modulerr",
"Failed to instantiate module {0} due to:\n{1}",
module,
e.stack || e.message || e,
))
);
}
}
}
),
runBlocks
);
})(
modulesToLoad
),
function (
fn
) {
instanceInjector.invoke(
fn || noop
);
},
),
instanceInjector
);
function supportObject(
delegate
) {
return function (
key, value
) {
if (!isObject(
key
)) return delegate(
key,
value
);
forEach(
key,
reverseParams(
delegate
)
);
};
}
function provider(
name, provider_
) {
if (
(assertNotHasOwnProperty(
name,
"service"
),
(isFunction(
provider_
) || isArray(
provider_
)) &&
(provider_ = providerInjector.instantiate(
provider_
)),
!provider_.$get)
)
throw $injectorMinErr(
"pget",
"Provider '{0}' must define $get factory method.",
name,
);
return (providerCache[name + "Provider"] = provider_);
}
function factory(
name, factoryFn
) {
return provider(
name,
{
$get: factoryFn,
}
);
}
function createInternalInjector(
cache, factory
) {
function getService(
serviceName
) {
if (cache.hasOwnProperty(
serviceName
)) {
if (cache[serviceName] === INSTANTIATING)
throw $injectorMinErr(
"cdep",
"Circular dependency found: {0}",
path.join(
" <- "
),
);
return cache[serviceName];
}
try {
return (
path.unshift(
serviceName
),
(cache[serviceName] = INSTANTIATING),
(cache[serviceName] = factory(
serviceName
))
);
} finally {
path.shift(
);
}
}
function invoke(
fn, self, locals
) {
var length,
i,
key,
args = [],
$inject = annotate(
fn
);
for (i = 0, length = $inject.length; i < length; i++) {
if ("string" != typeof (key = $inject[i]))
throw $injectorMinErr(
"itkn",
"Incorrect injection token! Expected service name as string, got {0}",
key,
);
args.push(
locals && locals.hasOwnProperty(
key
)
? locals[key]
: getService(
key
),
);
}
return fn.$inject || (fn = fn[length]), fn.apply(
self,
args
);
}
return {
invoke: invoke,
instantiate: function (
Type, locals
) {
var instance,
returnedValue,
Constructor = function (
) {};
return (
(Constructor.prototype = (isArray(
Type
)
? Type[Type.length - 1]
: Type
).prototype),
isObject(
(returnedValue = invoke(
Type,
(instance = new Constructor(
)),
locals,
)),
) || isFunction(
returnedValue
)
? returnedValue
: instance
);
},
get: getService,
annotate: annotate,
has: function (
name
) {
return (
providerCache.hasOwnProperty(
name + "Provider"
) ||
cache.hasOwnProperty(
name
)
);
},
};
}
}
function $AnchorScrollProvider(
) {
var autoScrollingEnabled = !0;
(this.disableAutoScrolling = function (
) {
autoScrollingEnabled = !1;
}),
(this.$get = [
"$window",
"$location",
"$rootScope",
function (
$window, $location, $rootScope
) {
var document = $window.document;
function scroll(
) {
var elm,
list,
result,
hash = $location.hash(
);
hash
? (elm = document.getElementById(
hash
))
? elm.scrollIntoView(
)
: ((list = document.getElementsByName(
hash
)),
(result = null),
forEach(
list,
function (
element
) {
result ||
"a" !== lowercase(
element.nodeName
) ||
(result = element);
}
),
(elm = result)
? elm.scrollIntoView(
)
: "top" === hash && $window.scrollTo(
0,
0
))
: $window.scrollTo(
0,
0
);
}
return (
autoScrollingEnabled &&
$rootScope.$watch(
function (
) {
return $location.hash(
);
},
function (
) {
$rootScope.$evalAsync(
scroll
);
},
),
scroll
);
},
]);
}
var $animateMinErr = minErr(
"$animate"
),
$AnimateProvider = [
"$provide",
function (
$provide
) {
(this.$$selectors = {
}),
(this.register = function (
name, factory
) {
var key = name + "-animation";
if (name && "." != name.charAt(
0
))
throw $animateMinErr(
"notcsel",
"Expecting class selector starting with '.' got '{0}'.",
name,
);
(this.$$selectors[name.substr(
1
)] = key),
$provide.factory(
key,
factory
);
}),
(this.$get = [
"$timeout",
function (
$timeout
) {
return {
enter: function (
element, parent, after, done
) {
after
? after.after(
element
)
: ((parent && parent[0]) || (parent = after.parent(
)),
parent.append(
element
)),
done && $timeout(
done,
0,
!1
);
},
leave: function (
element, done
) {
element.remove(
), done && $timeout(
done,
0,
!1
);
},
move: function (
element, parent, after, done
) {
this.enter(
element,
parent,
after,
done
);
},
addClass: function (
element, className, done
) {
(className = isString(
className
)
? className
: isArray(
className
)
? className.join(
" "
)
: ""),
forEach(
element,
function (
element
) {
jqLiteAddClass(
element,
className
);
}
),
done && $timeout(
done,
0,
!1
);
},
removeClass: function (
element, className, done
) {
(className = isString(
className
)
? className
: isArray(
className
)
? className.join(
" "
)
: ""),
forEach(
element,
function (
element
) {
jqLiteRemoveClass(
element,
className
);
}
),
done && $timeout(
done,
0,
!1
);
},
enabled: noop,
};
},
]);
},
];
function Browser(
window, document, $log, $sniffer
) {
var self = this,
rawDocument = document[0],
location = window.location,
history = window.history,
setTimeout = window.setTimeout,
clearTimeout = window.clearTimeout,
pendingDeferIds = {
};
self.isMock = !1;
var outstandingRequestCount = 0,
outstandingRequestCallbacks = [];
function completeOutstandingRequest(
fn
) {
try {
fn.apply(
null,
sliceArgs(
arguments,
1
)
);
} finally {
if (0 === --outstandingRequestCount)
for (; outstandingRequestCallbacks.length; )
try {
outstandingRequestCallbacks.pop(
)(
);
} catch (e) {
$log.error(
e
);
}
}
}
(self.$$completeOutstandingRequest = completeOutstandingRequest),
(self.$$incOutstandingRequestCount = function (
) {
outstandingRequestCount++;
}),
(self.notifyWhenNoOutstandingRequests = function (
callback
) {
forEach(
pollFns,
function (
pollFn
) {
pollFn(
);
}
),
0 === outstandingRequestCount
? callback(
)
: outstandingRequestCallbacks.push(
callback
);
});
var pollTimeout,
pollFns = [];
self.addPollFn = function (
fn
) {
return (
isUndefined(
pollTimeout
) &&
(function (
interval, setTimeout
) {
!(function check(
) {
forEach(
pollFns,
function (
pollFn
) {
pollFn(
);
}
),
(pollTimeout = setTimeout(
check,
interval
));
})(
);
})(
100,
setTimeout
),
pollFns.push(
fn
),
fn
);
};
var lastBrowserUrl = location.href,
baseElement = document.find(
"base"
),
newLocation = null;
self.url = function (
url, replace
) {
if ((location !== window.location && (location = window.location), url)) {
if (lastBrowserUrl == url) return;
return (
(lastBrowserUrl = url),
$sniffer.history
? replace
? history.replaceState(
null,
"",
url
)
: (history.pushState(
null,
"",
url
),
baseElement.attr(
"href",
baseElement.attr(
"href"
)
))
: ((newLocation = url),
replace
? location.replace(
url
)
: (location.href = url)),
self
);
}
return newLocation || location.href.replace(
/%27/g,
"'"
);
};
var urlChangeListeners = [],
urlChangeInit = !1;
function fireUrlChange(
) {
(newLocation = null),
lastBrowserUrl != self.url(
) &&
((lastBrowserUrl = self.url(
)),
forEach(
urlChangeListeners,
function (
listener
) {
listener(
self.url(
)
);
}
));
}
(self.onUrlChange = function (
callback
) {
return (
urlChangeInit ||
($sniffer.history && jqLite(
window
).on(
"popstate",
fireUrlChange
),
$sniffer.hashchange
? jqLite(
window
).on(
"hashchange",
fireUrlChange
)
: self.addPollFn(
fireUrlChange
),
(urlChangeInit = !0)),
urlChangeListeners.push(
callback
),
callback
);
}),
(self.baseHref = function (
) {
var href = baseElement.attr(
"href"
);
return href
? href.replace(
/^https?\:\/\/[^\/]*/,
""
)
: "";
});
var lastCookies = {
},
lastCookieString = "",
cookiePath = self.baseHref(
);
(self.cookies = function (
name, value
) {
var cookieLength, cookieArray, cookie, i, index;
if (!name) {
if (rawDocument.cookie !== lastCookieString)
for (
cookieArray = (lastCookieString = rawDocument.cookie).split(
"; "
),
lastCookies = {
},
i = 0;
i < cookieArray.length;
i++
)
(index = (cookie = cookieArray[i]).indexOf(
"="
)) > 0 &&
((name = unescape(
cookie.substring(
0,
index
)
)),
undefined === lastCookies[name] &&
(lastCookies[name] = unescape(
cookie.substring(
index + 1
)
)));
return lastCookies;
}
undefined === value
? (rawDocument.cookie =
escape(
name
) +
"=;path=" +
cookiePath +
";expires=Thu, 01 Jan 1970 00:00:00 GMT")
: isString(
value
) &&
(cookieLength =
(rawDocument.cookie =
escape(
name
) + "=" + escape(
value
) + ";path=" + cookiePath)
.length + 1) > 4096 &&
$log.warn(
"Cookie '" +
name +
"' possibly not set or overflowed because it was too large (" +
cookieLength +
" > 4096 bytes)!",
);
}),
(self.defer = function (
fn, delay
) {
var timeoutId;
return (
outstandingRequestCount++,
(timeoutId = setTimeout(
function (
) {
delete pendingDeferIds[timeoutId], completeOutstandingRequest(
fn
);
},
delay || 0
)),
(pendingDeferIds[timeoutId] = !0),
timeoutId
);
}),
(self.defer.cancel = function (
deferId
) {
return (
!!pendingDeferIds[deferId] &&
(delete pendingDeferIds[deferId],
clearTimeout(
deferId
),
completeOutstandingRequest(
noop
),
!0)
);
});
}
function $BrowserProvider(
) {
this.$get = [
"$window",
"$log",
"$sniffer",
"$document",
function (
$window, $log, $sniffer, $document
) {
return new Browser(
$window,
$document,
$log,
$sniffer
);
},
];
}
function $CacheFactoryProvider(
) {
this.$get = function (
) {
var caches = {
};
function cacheFactory(
cacheId, options
) {
if (cacheId in caches)
throw minErr(
"$cacheFactory"
)(
"iid",
"CacheId '{0}' is already taken!",
cacheId,
);
var size = 0,
stats = extend(
{
},
options,
{
id: cacheId,
}
),
data = {
},
capacity = (options && options.capacity) || Number.MAX_VALUE,
lruHash = {
},
freshEnd = null,
staleEnd = null;
return (caches[cacheId] = {
put: function (
key, value
) {
if (
(refresh(
lruHash[key] || (lruHash[key] = {
key: key,
})
),
!isUndefined(
value
))
)
return (
key in data || size++,
(data[key] = value),
size > capacity && this.remove(
staleEnd.key
),
value
);
},
get: function (
key
) {
var lruEntry = lruHash[key];
if (lruEntry) return refresh(
lruEntry
), data[key];
},
remove: function (
key
) {
var lruEntry = lruHash[key];
lruEntry &&
(lruEntry == freshEnd && (freshEnd = lruEntry.p),
lruEntry == staleEnd && (staleEnd = lruEntry.n),
link(
lruEntry.n,
lruEntry.p
),
delete lruHash[key],
delete data[key],
size--);
},
removeAll: function (
) {
(data = {
}),
(size = 0),
(lruHash = {
}),
(freshEnd = staleEnd = null);
},
destroy: function (
) {
(data = null),
(stats = null),
(lruHash = null),
delete caches[cacheId];
},
info: function (
) {
return extend(
{
},
stats,
{
size: size,
}
);
},
});
function refresh(
entry
) {
entry != freshEnd &&
(staleEnd
? staleEnd == entry && (staleEnd = entry.n)
: (staleEnd = entry),
link(
entry.n,
entry.p
),
link(
entry,
freshEnd
),
((freshEnd = entry).n = null));
}
function link(
nextEntry, prevEntry
) {
nextEntry != prevEntry &&
(nextEntry && (nextEntry.p = prevEntry),
prevEntry && (prevEntry.n = nextEntry));
}
}
return (
(cacheFactory.info = function (
) {
var info = {
};
return (
forEach(
caches,
function (
cache, cacheId
) {
info[cacheId] = cache.info(
);
}
),
info
);
}),
(cacheFactory.get = function (
cacheId
) {
return caches[cacheId];
}),
cacheFactory
);
};
}
function $TemplateCacheProvider(
) {
this.$get = [
"$cacheFactory",
function (
$cacheFactory
) {
return $cacheFactory(
"templates"
);
},
];
}
var $compileMinErr = minErr(
"$compile"
);
function $CompileProvider(
$provide, $$sanitizeUriProvider
) {
var hasDirectives = {
},
COMMENT_DIRECTIVE_REGEXP = /^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,
CLASS_DIRECTIVE_REGEXP = /(([\d\w\-_]+)(?:\:([^;]+))?;?)/,
EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/;
(this.directive = function registerDirective(
name, directiveFactory
) {
return (
assertNotHasOwnProperty(
name,
"directive"
),
isString(
name
)
? (assertArg(
directiveFactory,
"directiveFactory"
),
hasDirectives.hasOwnProperty(
name
) ||
((hasDirectives[name] = []),
$provide.factory(
name + "Directive",
[
"$injector",
"$exceptionHandler",
function (
$injector, $exceptionHandler
) {
var directives = [];
return (
forEach(
hasDirectives[name],
function (
directiveFactory, index
) {
try {
var directive = $injector.invoke(
directiveFactory
);
isFunction(
directive
)
? (directive = {
compile: valueFn(
directive
),
})
: !directive.compile &&
directive.link &&
(directive.compile = valueFn(
directive.link
)),
(directive.priority = directive.priority || 0),
(directive.index = index),
(directive.name = directive.name || name),
(directive.require =
directive.require ||
(directive.controller && directive.name)),
(directive.restrict = directive.restrict || "A"),
directives.push(
directive
);
} catch (e) {
$exceptionHandler(
e
);
}
},
),
directives
);
},
]
)),
hasDirectives[name].push(
directiveFactory
))
: forEach(
name,
reverseParams(
registerDirective
)
),
this
);
}),
(this.aHrefSanitizationWhitelist = function (
regexp
) {
return isDefined(
regexp
)
? ($$sanitizeUriProvider.aHrefSanitizationWhitelist(
regexp
), this)
: $$sanitizeUriProvider.aHrefSanitizationWhitelist(
);
}),
(this.imgSrcSanitizationWhitelist = function (
regexp
) {
return isDefined(
regexp
)
? ($$sanitizeUriProvider.imgSrcSanitizationWhitelist(
regexp
), this)
: $$sanitizeUriProvider.imgSrcSanitizationWhitelist(
);
}),
(this.$get = [
"$injector",
"$interpolate",
"$exceptionHandler",
"$http",
"$templateCache",
"$parse",
"$controller",
"$rootScope",
"$document",
"$sce",
"$animate",
"$$sanitizeUri",
function (
$injector,
$interpolate,
$exceptionHandler,
$http,
$templateCache,
$parse,
$controller,
$rootScope,
$document,
$sce,
$animate,
$$sanitizeUri,
) {
var Attributes = function (
element, attr
) {
(this.$$element = element), (this.$attr = attr || {
});
};
Attributes.prototype = {
$normalize: directiveNormalize,
$addClass: function (
classVal
) {
classVal &&
classVal.length > 0 &&
$animate.addClass(
this.$$element,
classVal
);
},
$removeClass: function (
classVal
) {
classVal &&
classVal.length > 0 &&
$animate.removeClass(
this.$$element,
classVal
);
},
$updateClass: function (
newClasses, oldClasses
) {
this.$removeClass(
tokenDifference(
oldClasses,
newClasses
)
),
this.$addClass(
tokenDifference(
newClasses,
oldClasses
)
);
},
$set: function (
key, value, writeAttr, attrName
) {
var nodeName,
booleanKey = getBooleanAttrName(
this.$$element[0],
key
);
booleanKey &&
(this.$$element.prop(
key,
value
), (attrName = booleanKey)),
(this[key] = value),
attrName
? (this.$attr[key] = attrName)
: (attrName = this.$attr[key]) ||
(this.$attr[key] = attrName = snake_case(
key,
"-"
)),
(("A" === (nodeName = nodeName_(
this.$$element
)) &&
"href" === key) ||
("IMG" === nodeName && "src" === key)) &&
(this[key] = value = $$sanitizeUri(
value,
"src" === key
)),
!1 !== writeAttr &&
(null == value
? this.$$element.removeAttr(
attrName
)
: this.$$element.attr(
attrName,
value
));
var $$observers = this.$$observers;
$$observers &&
forEach(
$$observers[key],
function (
fn
) {
try {
fn(
value
);
} catch (e) {
$exceptionHandler(
e
);
}
}
);
},
$observe: function (
key, fn
) {
var attrs = this,
$$observers = attrs.$$observers || (attrs.$$observers = {
}),
listeners = $$observers[key] || ($$observers[key] = []);
return (
listeners.push(
fn
),
$rootScope.$evalAsync(
function (
) {
listeners.$$inter || fn(
attrs[key]
);
}
),
fn
);
},
};
var startSymbol = $interpolate.startSymbol(
),
endSymbol = $interpolate.endSymbol(
),
denormalizeTemplate =
"{{" == startSymbol || "}}" == endSymbol
? identity
: function (
template
) {
return template
.replace(
/\{\{/g,
startSymbol
)
.replace(
/}}/g,
endSymbol
);
},
NG_ATTR_BINDING = /^ngAttr[A-Z]/;
return compile;
function compile(
$compileNodes,
transcludeFn,
maxPriority,
ignoreDirective,
previousCompileContext,
) {
$compileNodes instanceof jqLite ||
($compileNodes = jqLite(
$compileNodes
)),
forEach(
$compileNodes,
function (
node, index
) {
3 == node.nodeType &&
node.nodeValue.match(
/\S+/
) &&
($compileNodes[index] = node = jqLite(
node
)
.wrap(
"
"
)
.parent(
)[0]);
}
);
var compositeLinkFn = compileNodes(
$compileNodes,
transcludeFn,
$compileNodes,
maxPriority,
ignoreDirective,
previousCompileContext,
);
return function (
scope, cloneConnectFn, transcludeControllers
) {
assertArg(
scope,
"scope"
);
var $linkNode = cloneConnectFn
? JQLitePrototype.clone.call(
$compileNodes
)
: $compileNodes;
forEach(
transcludeControllers,
function (
instance, name
) {
$linkNode.data(
"$" + name + "Controller",
instance
);
}
);
for (var i = 0, ii = $linkNode.length; i < ii; i++) {
var node = $linkNode[i];
(1 != node.nodeType && 9 != node.nodeType) ||
$linkNode.eq(
i
).data(
"$scope",
scope
);
}
return (
safeAddClass(
$linkNode,
"ng-scope"
),
cloneConnectFn && cloneConnectFn(
$linkNode,
scope
),
compositeLinkFn && compositeLinkFn(
scope,
$linkNode,
$linkNode
),
$linkNode
);
};
}
function safeAddClass(
$element, className
) {
try {
$element.addClass(
className
);
} catch (e) {}
}
function compileNodes(
nodeList,
transcludeFn,
$rootElement,
maxPriority,
ignoreDirective,
previousCompileContext,
) {
for (
var nodeLinkFn,
childLinkFn,
directives,
attrs,
linkFnFound,
linkFns = [],
i = 0;
i < nodeList.length;
i++
)
(attrs = new Attributes(
)),
(childLinkFn =
((nodeLinkFn = (directives = collectDirectives(
nodeList[i],
[],
attrs,
0 === i ? maxPriority : undefined,
ignoreDirective,
)).length
? applyDirectivesToNode(
directives,
nodeList[i],
attrs,
transcludeFn,
$rootElement,
null,
[],
[],
previousCompileContext,
)
: null) &&
nodeLinkFn.terminal) ||
!nodeList[i].childNodes ||
!nodeList[i].childNodes.length
? null
: compileNodes(
nodeList[i].childNodes,
nodeLinkFn ? nodeLinkFn.transclude : transcludeFn,
)),
linkFns.push(
nodeLinkFn
),
linkFns.push(
childLinkFn
),
(linkFnFound = linkFnFound || nodeLinkFn || childLinkFn),
(previousCompileContext = null);
return linkFnFound
? function (
scope, nodeList, $rootElement, boundTranscludeFn
) {
var nodeLinkFn,
childLinkFn,
node,
$node,
childScope,
childTranscludeFn,
i,
ii,
n,
stableNodeList = [];
for (i = 0, ii = nodeList.length; i < ii; i++)
stableNodeList.push(
nodeList[i]
);
for (i = 0, n = 0, ii = linkFns.length; i < ii; n++)
(node = stableNodeList[n]),
(nodeLinkFn = linkFns[i++]),
(childLinkFn = linkFns[i++]),
($node = jqLite(
node
)),
nodeLinkFn
? (nodeLinkFn.scope
? ((childScope = scope.$new(
)),
$node.data(
"$scope",
childScope
),
safeAddClass(
$node,
"ng-scope"
))
: (childScope = scope),
(childTranscludeFn = nodeLinkFn.transclude),
nodeLinkFn(
childLinkFn,
childScope,
node,
$rootElement,
childTranscludeFn ||
(!boundTranscludeFn && transcludeFn)
? createBoundTranscludeFn(
scope,
childTranscludeFn || transcludeFn,
)
: boundTranscludeFn,
))
: childLinkFn &&
childLinkFn(
scope,
node.childNodes,
undefined,
boundTranscludeFn,
);
}
: null;
}
function createBoundTranscludeFn(
scope, transcludeFn
) {
return function (
transcludedScope, cloneFn, controllers
) {
var scopeCreated = !1;
transcludedScope ||
(((transcludedScope = scope.$new(
)).$$transcluded = !0),
(scopeCreated = !0));
var clone = transcludeFn(
transcludedScope,
cloneFn,
controllers
);
return (
scopeCreated &&
clone.on(
"$destroy",
bind(
transcludedScope,
transcludedScope.$destroy
),
),
clone
);
};
}
function collectDirectives(
node,
directives,
attrs,
maxPriority,
ignoreDirective,
) {
var match,
className,
nodeType = node.nodeType,
attrsMap = attrs.$attr;
switch (nodeType) {
case 1:
addDirective(
directives,
directiveNormalize(
nodeName_(
node
).toLowerCase(
)
),
"E",
maxPriority,
ignoreDirective,
);
for (
var attr,
name,
nName,
ngAttrName,
value,
nAttrs = node.attributes,
j = 0,
jj = nAttrs && nAttrs.length;
j < jj;
j++
) {
var attrStartName = !1,
attrEndName = !1;
if (
((attr = nAttrs[j]), !msie || msie >= 8 || attr.specified)
) {
(ngAttrName = directiveNormalize(
(name = attr.name)
)),
NG_ATTR_BINDING.test(
ngAttrName
) &&
(name = snake_case(
ngAttrName.substr(
6
),
"-"
));
var directiveNName = ngAttrName.replace(
/(Start|End)$/,
""
);
ngAttrName === directiveNName + "Start" &&
((attrStartName = name),
(attrEndName = name.substr(
0,
name.length - 5
) + "end"),
(name = name.substr(
0,
name.length - 6
))),
(attrsMap[
(nName = directiveNormalize(
name.toLowerCase(
)
))
] = name),
(attrs[nName] = value = trim(
msie && "href" == name
? decodeURIComponent(
node.getAttribute(
name,
2
)
)
: attr.value,
)),
getBooleanAttrName(
node,
nName
) && (attrs[nName] = !0),
addAttrInterpolateDirective(
node,
directives,
value,
nName,
),
addDirective(
directives,
nName,
"A",
maxPriority,
ignoreDirective,
attrStartName,
attrEndName,
);
}
}
if (isString(
(className = node.className)
) && "" !== className)
for (; (match = CLASS_DIRECTIVE_REGEXP.exec(
className
)); )
addDirective(
directives,
(nName = directiveNormalize(
match[2]
)),
"C",
maxPriority,
ignoreDirective,
) && (attrs[nName] = trim(
match[3]
)),
(className = className.substr(
match.index + match[0].length,
));
break;
case 3:
!(function (
directives, text
) {
var interpolateFn = $interpolate(
text,
!0
);
interpolateFn &&
directives.push(
{
priority: 0,
compile: valueFn(
function (
scope, node
) {
var parent = node.parent(
),
bindings = parent.data(
"$binding"
) || [];
bindings.push(
interpolateFn
),
safeAddClass(
parent.data(
"$binding",
bindings
),
"ng-binding",
),
scope.$watch(
interpolateFn,
function (
value
) {
node[0].nodeValue = value;
}
);
}
),
}
);
})(
directives,
node.nodeValue
);
break;
case 8:
try {
(match = COMMENT_DIRECTIVE_REGEXP.exec(
node.nodeValue
)) &&
addDirective(
directives,
(nName = directiveNormalize(
match[1]
)),
"M",
maxPriority,
ignoreDirective,
) &&
(attrs[nName] = trim(
match[2]
));
} catch (e) {}
}
return directives.sort(
byPriority
), directives;
}
function groupScan(
node, attrStart, attrEnd
) {
var nodes = [],
depth = 0;
if (
attrStart &&
node.hasAttribute &&
node.hasAttribute(
attrStart
)
) {
do {
if (!node)
throw $compileMinErr(
"uterdir",
"Unterminated attribute, found '{0}' but no matching '{1}' found.",
attrStart,
attrEnd,
);
1 == node.nodeType &&
(node.hasAttribute(
attrStart
) && depth++,
node.hasAttribute(
attrEnd
) && depth--),
nodes.push(
node
),
(node = node.nextSibling);
} while (depth > 0);
} else nodes.push(
node
);
return jqLite(
nodes
);
}
function groupElementsLinkFnWrapper(
linkFn, attrStart, attrEnd
) {
return function (
scope, element, attrs, controllers, transcludeFn
) {
return (
(element = groupScan(
element[0],
attrStart,
attrEnd
)),
linkFn(
scope,
element,
attrs,
controllers,
transcludeFn
)
);
};
}
function applyDirectivesToNode(
directives,
compileNode,
templateAttrs,
transcludeFn,
jqCollection,
originalReplaceDirective,
preLinkFns,
postLinkFns,
previousCompileContext,
) {
previousCompileContext = previousCompileContext || {
};
for (
var newScopeDirective,
directive,
directiveName,
$template,
linkFn,
directiveValue,
terminalPriority = -Number.MAX_VALUE,
controllerDirectives =
previousCompileContext.controllerDirectives,
newIsolateScopeDirective =
previousCompileContext.newIsolateScopeDirective,
templateDirective = previousCompileContext.templateDirective,
nonTlbTranscludeDirective =
previousCompileContext.nonTlbTranscludeDirective,
hasTranscludeDirective = !1,
hasElementTranscludeDirective = !1,
$compileNode = (templateAttrs.$$element = jqLite(
compileNode
)),
replaceDirective = originalReplaceDirective,
childTranscludeFn = transcludeFn,
i = 0,
ii = directives.length;
i < ii;
i++
) {
var attrStart = (directive = directives[i]).$$start,
attrEnd = directive.$$end;
if (
(attrStart &&
($compileNode = groupScan(
compileNode,
attrStart,
attrEnd
)),
($template = undefined),
terminalPriority > directive.priority)
)
break;
if (
((directiveValue = directive.scope) &&
((newScopeDirective = newScopeDirective || directive),
directive.templateUrl ||
(assertNoDuplicate(
"new/isolated scope",
newIsolateScopeDirective,
directive,
$compileNode,
),
isObject(
directiveValue
) &&
(newIsolateScopeDirective = directive))),
(directiveName = directive.name),
!directive.templateUrl &&
directive.controller &&
((directiveValue = directive.controller),
assertNoDuplicate(
"'" + directiveName + "' controller",
(controllerDirectives = controllerDirectives || {
})[
directiveName
],
directive,
$compileNode,
),
(controllerDirectives[directiveName] = directive)),
(directiveValue = directive.transclude) &&
((hasTranscludeDirective = !0),
directive.$$tlb ||
(assertNoDuplicate(
"transclusion",
nonTlbTranscludeDirective,
directive,
$compileNode,
),
(nonTlbTranscludeDirective = directive)),
"element" == directiveValue
? ((hasElementTranscludeDirective = !0),
(terminalPriority = directive.priority),
($template = groupScan(
compileNode,
attrStart,
attrEnd
)),
($compileNode = templateAttrs.$$element = jqLite(
document.createComment(
" " +
directiveName +
": " +
templateAttrs[directiveName] +
" ",
),
)),
(compileNode = $compileNode[0]),
replaceWith(
jqCollection,
jqLite(
sliceArgs(
$template
)
),
compileNode,
),
(childTranscludeFn = compile(
$template,
transcludeFn,
terminalPriority,
replaceDirective && replaceDirective.name,
{
nonTlbTranscludeDirective: nonTlbTranscludeDirective,
},
)))
: (($template = jqLite(
jqLiteClone(
compileNode
),
).contents(
)),
$compileNode.empty(
),
(childTranscludeFn = compile(
$template,
transcludeFn
)))),
directive.template)
)
if (
(assertNoDuplicate(
"template",
templateDirective,
directive,
$compileNode,
),
(templateDirective = directive),
(directiveValue = isFunction(
directive.template
)
? directive.template(
$compileNode,
templateAttrs
)
: directive.template),
(directiveValue = denormalizeTemplate(
directiveValue
)),
directive.replace)
) {
if (
((replaceDirective = directive),
($template = jqLite(
"
" + trim(
directiveValue
) + "
",
).contents(
)),
(compileNode = $template[0]),
1 != $template.length || 1 !== compileNode.nodeType)
)
throw $compileMinErr(
"tplrt",
"Template for directive '{0}' must have exactly one root element. {1}",
directiveName,
"",
);
replaceWith(
jqCollection,
$compileNode,
compileNode
);
var newTemplateAttrs = {
$attr: {
},
},
templateDirectives = collectDirectives(
compileNode,
[],
newTemplateAttrs,
),
unprocessedDirectives = directives.splice(
i + 1,
directives.length - (i + 1),
);
newIsolateScopeDirective &&
markDirectivesAsIsolate(
templateDirectives
),
(directives = directives
.concat(
templateDirectives
)
.concat(
unprocessedDirectives
)),
mergeTemplateAttributes(
templateAttrs,
newTemplateAttrs
),
(ii = directives.length);
} else $compileNode.html(
directiveValue
);
if (directive.templateUrl)
assertNoDuplicate(
"template",
templateDirective,
directive,
$compileNode,
),
(templateDirective = directive),
directive.replace && (replaceDirective = directive),
(nodeLinkFn = compileTemplateUrl(
directives.splice(
i,
directives.length - i
),
$compileNode,
templateAttrs,
jqCollection,
childTranscludeFn,
preLinkFns,
postLinkFns,
{
controllerDirectives: controllerDirectives,
newIsolateScopeDirective: newIsolateScopeDirective,
templateDirective: templateDirective,
nonTlbTranscludeDirective: nonTlbTranscludeDirective,
},
)),
(ii = directives.length);
else if (directive.compile)
try {
isFunction(
(linkFn = directive.compile(
$compileNode,
templateAttrs,
childTranscludeFn,
)),
)
? addLinkFns(
null,
linkFn,
attrStart,
attrEnd
)
: linkFn &&
addLinkFns(
linkFn.pre,
linkFn.post,
attrStart,
attrEnd
);
} catch (e) {
$exceptionHandler(
e,
startingTag(
$compileNode
)
);
}
directive.terminal &&
((nodeLinkFn.terminal = !0),
(terminalPriority = Math.max(
terminalPriority,
directive.priority,
)));
}
return (
(nodeLinkFn.scope =
newScopeDirective && !0 === newScopeDirective.scope),
(nodeLinkFn.transclude =
hasTranscludeDirective && childTranscludeFn),
nodeLinkFn
);
function addLinkFns(
pre, post, attrStart, attrEnd
) {
pre &&
(attrStart &&
(pre = groupElementsLinkFnWrapper(
pre,
attrStart,
attrEnd
)),
(pre.require = directive.require),
(newIsolateScopeDirective === directive ||
directive.$$isolateScope) &&
(pre = cloneAndAnnotateFn(
pre,
{
isolateScope: !0,
}
)),
preLinkFns.push(
pre
)),
post &&
(attrStart &&
(post = groupElementsLinkFnWrapper(
post,
attrStart,
attrEnd,
)),
(post.require = directive.require),
(newIsolateScopeDirective === directive ||
directive.$$isolateScope) &&
(post = cloneAndAnnotateFn(
post,
{
isolateScope: !0,
}
)),
postLinkFns.push(
post
));
}
function getControllers(
require, $element, elementControllers
) {
var value,
retrievalMethod = "data",
optional = !1;
if (isString(
require
)) {
for (; "^" == (value = require.charAt(
0
)) || "?" == value; )
(require = require.substr(
1
)),
"^" == value && (retrievalMethod = "inheritedData"),
(optional = optional || "?" == value);
if (
((value = null),
elementControllers &&
"data" === retrievalMethod &&
(value = elementControllers[require]),
!(value =
value ||
$element[retrievalMethod](
"$" + require + "Controller"
)) &&
!optional)
)
throw $compileMinErr(
"ctreq",
"Controller '{0}', required by directive '{1}', can't be found!",
require,
directiveName,
);
return value;
}
return (
isArray(
require
) &&
((value = []),
forEach(
require,
function (
require
) {
value.push(
getControllers(
require,
$element,
elementControllers
),
);
}
)),
value
);
}
function nodeLinkFn(
childLinkFn,
scope,
linkNode,
$rootElement,
boundTranscludeFn,
) {
var attrs,
$element,
i,
ii,
linkFn,
controller,
isolateScope,
transcludeFn,
elementControllers = {
};
if (
((attrs =
compileNode === linkNode
? templateAttrs
: (function (
src, dst
) {
for (var key in ((dst = dst || {
}), src))
src.hasOwnProperty(
key
) &&
"$$" !== key.substr(
0,
2
) &&
(dst[key] = src[key]);
return dst;
})(
templateAttrs,
new Attributes(
jqLite(
linkNode
),
templateAttrs.$attr
),
)),
($element = attrs.$$element),
newIsolateScopeDirective)
) {
var LOCAL_REGEXP = /^\s*([@=&])(\??)\s*(\w*)\s*$/,
$linkNode = jqLite(
linkNode
);
(isolateScope = scope.$new(
!0
)),
templateDirective &&
templateDirective ===
newIsolateScopeDirective.$$originalDirective
? $linkNode.data(
"$isolateScope",
isolateScope
)
: $linkNode.data(
"$isolateScopeNoTemplate",
isolateScope
),
safeAddClass(
$linkNode,
"ng-isolate-scope"
),
forEach(
newIsolateScopeDirective.scope,
function (
definition, scopeName
) {
var lastValue,
parentGet,
parentSet,
compare,
match = definition.match(
LOCAL_REGEXP
) || [],
attrName = match[3] || scopeName,
optional = "?" == match[2],
mode = match[1];
switch (
((isolateScope.$$isolateBindings[scopeName] =
mode + attrName),
mode)
) {
case "@":
attrs.$observe(
attrName,
function (
value
) {
isolateScope[scopeName] = value;
}
),
(attrs.$$observers[attrName].$$scope = scope),
attrs[attrName] &&
(isolateScope[scopeName] = $interpolate(
attrs[attrName],
)(
scope
));
break;
case "=":
if (optional && !attrs[attrName]) return;
(parentGet = $parse(
attrs[attrName]
)),
(compare = parentGet.literal
? equals
: function (
a, b
) {
return a === b;
}),
(parentSet =
parentGet.assign ||
function (
) {
throw (
((lastValue = isolateScope[
scopeName
] = parentGet(
scope
)),
$compileMinErr(
"nonassign",
"Expression '{0}' used with directive '{1}' is non-assignable!",
attrs[attrName],
newIsolateScopeDirective.name,
))
);
}),
(lastValue = isolateScope[scopeName] = parentGet(
scope,
)),
isolateScope.$watch(
function (
) {
var parentValue = parentGet(
scope
);
return (
compare(
parentValue,
isolateScope[scopeName],
) ||
(compare(
parentValue,
lastValue
)
? parentSet(
scope,
(parentValue =
isolateScope[scopeName]),
)
: (isolateScope[
scopeName
] = parentValue)),
(lastValue = parentValue)
);
},
null,
parentGet.literal,
);
break;
case "&":
(parentGet = $parse(
attrs[attrName]
)),
(isolateScope[scopeName] = function (
locals
) {
return parentGet(
scope,
locals
);
});
break;
default:
throw $compileMinErr(
"iscp",
"Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}",
newIsolateScopeDirective.name,
scopeName,
definition,
);
}
},
);
}
for (
transcludeFn =
boundTranscludeFn &&
function (
scope, cloneAttachFn
) {
var transcludeControllers;
arguments.length < 2 &&
((cloneAttachFn = scope), (scope = undefined));
hasElementTranscludeDirective &&
(transcludeControllers = elementControllers);
return boundTranscludeFn(
scope,
cloneAttachFn,
transcludeControllers,
);
},
controllerDirectives &&
forEach(
controllerDirectives,
function (
directive
) {
var controllerInstance,
locals = {
$scope:
directive === newIsolateScopeDirective ||
directive.$$isolateScope
? isolateScope
: scope,
$element: $element,
$attrs: attrs,
$transclude: transcludeFn,
};
"@" == (controller = directive.controller) &&
(controller = attrs[directive.name]),
(controllerInstance = $controller(
controller,
locals
)),
(elementControllers[
directive.name
] = controllerInstance),
hasElementTranscludeDirective ||
$element.data(
"$" + directive.name + "Controller",
controllerInstance,
),
directive.controllerAs &&
(locals.$scope[
directive.controllerAs
] = controllerInstance);
}
),
i = 0,
ii = preLinkFns.length;
i < ii;
i++
)
try {
(linkFn = preLinkFns[i])(
linkFn.isolateScope ? isolateScope : scope,
$element,
attrs,
linkFn.require &&
getControllers(
linkFn.require,
$element,
elementControllers,
),
transcludeFn,
);
} catch (e) {
$exceptionHandler(
e,
startingTag(
$element
)
);
}
var scopeToChild = scope;
for (
newIsolateScopeDirective &&
(newIsolateScopeDirective.template ||
null === newIsolateScopeDirective.templateUrl) &&
(scopeToChild = isolateScope),
childLinkFn &&
childLinkFn(
scopeToChild,
linkNode.childNodes,
undefined,
boundTranscludeFn,
),
i = postLinkFns.length - 1;
i >= 0;
i--
)
try {
(linkFn = postLinkFns[i])(
linkFn.isolateScope ? isolateScope : scope,
$element,
attrs,
linkFn.require &&
getControllers(
linkFn.require,
$element,
elementControllers,
),
transcludeFn,
);
} catch (e) {
$exceptionHandler(
e,
startingTag(
$element
)
);
}
}
}
function markDirectivesAsIsolate(
directives
) {
for (var j = 0, jj = directives.length; j < jj; j++)
directives[j] = inherit(
directives[j],
{
$$isolateScope: !0,
}
);
}
function addDirective(
tDirectives,
name,
location,
maxPriority,
ignoreDirective,
startAttrName,
endAttrName,
) {
if (name === ignoreDirective) return null;
var match = null;
if (hasDirectives.hasOwnProperty(
name
))
for (
var directive,
directives = $injector.get(
name + "Directive"
),
i = 0,
ii = directives.length;
i < ii;
i++
)
try {
(directive = directives[i]),
(undefined === maxPriority ||
maxPriority > directive.priority) &&
-1 != directive.restrict.indexOf(
location
) &&
(startAttrName &&
(directive = inherit(
directive,
{
$$start: startAttrName,
$$end: endAttrName,
}
)),
tDirectives.push(
directive
),
(match = directive));
} catch (e) {
$exceptionHandler(
e
);
}
return match;
}
function mergeTemplateAttributes(
dst, src
) {
var srcAttr = src.$attr,
dstAttr = dst.$attr,
$element = dst.$$element;
forEach(
dst,
function (
value, key
) {
"$" != key.charAt(
0
) &&
(src[key] &&
(value += ("style" === key ? ";" : " ") + src[key]),
dst.$set(
key,
value,
!0,
srcAttr[key]
));
}
),
forEach(
src,
function (
value, key
) {
"class" == key
? (safeAddClass(
$element,
value
),
(dst.class = (dst.class ? dst.class + " " : "") + value))
: "style" == key
? ($element.attr(
"style",
$element.attr(
"style"
) + ";" + value,
),
(dst.style = (dst.style ? dst.style + ";" : "") + value))
: "$" == key.charAt(
0
) ||
dst.hasOwnProperty(
key
) ||
((dst[key] = value), (dstAttr[key] = srcAttr[key]));
}
);
}
function compileTemplateUrl(
directives,
$compileNode,
tAttrs,
$rootElement,
childTranscludeFn,
preLinkFns,
postLinkFns,
previousCompileContext,
) {
var afterTemplateNodeLinkFn,
afterTemplateChildLinkFn,
linkQueue = [],
beforeTemplateCompileNode = $compileNode[0],
origAsyncDirective = directives.shift(
),
derivedSyncDirective = extend(
{
},
origAsyncDirective,
{
templateUrl: null,
transclude: null,
replace: null,
$$originalDirective: origAsyncDirective,
}
),
templateUrl = isFunction(
origAsyncDirective.templateUrl
)
? origAsyncDirective.templateUrl(
$compileNode,
tAttrs
)
: origAsyncDirective.templateUrl;
return (
$compileNode.empty(
),
$http
.get(
$sce.getTrustedResourceUrl(
templateUrl
),
{
cache: $templateCache,
}
)
.success(
function (
content
) {
var compileNode,
tempTemplateAttrs,
$template,
childBoundTranscludeFn;
if (
((content = denormalizeTemplate(
content
)),
origAsyncDirective.replace)
) {
if (
(($template = jqLite(
"
" + trim(
content
) + "
",
).contents(
)),
(compileNode = $template[0]),
1 != $template.length || 1 !== compileNode.nodeType)
)
throw $compileMinErr(
"tplrt",
"Template for directive '{0}' must have exactly one root element. {1}",
origAsyncDirective.name,
templateUrl,
);
(tempTemplateAttrs = {
$attr: {
},
}),
replaceWith(
$rootElement,
$compileNode,
compileNode
);
var templateDirectives = collectDirectives(
compileNode,
[],
tempTemplateAttrs,
);
isObject(
origAsyncDirective.scope
) &&
markDirectivesAsIsolate(
templateDirectives
),
(directives = templateDirectives.concat(
directives
)),
mergeTemplateAttributes(
tAttrs,
tempTemplateAttrs
);
} else (compileNode = beforeTemplateCompileNode), $compileNode.html(
content
);
for (
directives.unshift(
derivedSyncDirective
),
afterTemplateNodeLinkFn = applyDirectivesToNode(
directives,
compileNode,
tAttrs,
childTranscludeFn,
$compileNode,
origAsyncDirective,
preLinkFns,
postLinkFns,
previousCompileContext,
),
forEach(
$rootElement,
function (
node, i
) {
node == compileNode &&
($rootElement[i] = $compileNode[0]);
}
),
afterTemplateChildLinkFn = compileNodes(
$compileNode[0].childNodes,
childTranscludeFn,
);
linkQueue.length;
) {
var scope = linkQueue.shift(
),
beforeTemplateLinkNode = linkQueue.shift(
),
linkRootElement = linkQueue.shift(
),
boundTranscludeFn = linkQueue.shift(
),
linkNode = $compileNode[0];
beforeTemplateLinkNode !== beforeTemplateCompileNode &&
((linkNode = jqLiteClone(
compileNode
)),
replaceWith(
linkRootElement,
jqLite(
beforeTemplateLinkNode
),
linkNode,
)),
(childBoundTranscludeFn = afterTemplateNodeLinkFn.transclude
? createBoundTranscludeFn(
scope,
afterTemplateNodeLinkFn.transclude,
)
: boundTranscludeFn),
afterTemplateNodeLinkFn(
afterTemplateChildLinkFn,
scope,
linkNode,
$rootElement,
childBoundTranscludeFn,
);
}
linkQueue = null;
}
)
.error(
function (
response, code, headers, config
) {
throw $compileMinErr(
"tpload",
"Failed to load template: {0}",
config.url,
);
}
),
function (
ignoreChildLinkFn,
scope,
node,
rootElement,
boundTranscludeFn,
) {
linkQueue
? (linkQueue.push(
scope
),
linkQueue.push(
node
),
linkQueue.push(
rootElement
),
linkQueue.push(
boundTranscludeFn
))
: afterTemplateNodeLinkFn(
afterTemplateChildLinkFn,
scope,
node,
rootElement,
boundTranscludeFn,
);
}
);
}
function byPriority(
a, b
) {
var diff = b.priority - a.priority;
return 0 !== diff
? diff
: a.name !== b.name
? a.name < b.name
? -1
: 1
: a.index - b.index;
}
function assertNoDuplicate(
what,
previousDirective,
directive,
element,
) {
if (previousDirective)
throw $compileMinErr(
"multidir",
"Multiple directives [{0}, {1}] asking for {2} on: {3}",
previousDirective.name,
directive.name,
what,
startingTag(
element
),
);
}
function addAttrInterpolateDirective(
node, directives, value, name
) {
var interpolateFn = $interpolate(
value,
!0
);
if (interpolateFn) {
if ("multiple" === name && "SELECT" === nodeName_(
node
))
throw $compileMinErr(
"selmulti",
"Binding to the 'multiple' attribute is not supported. Element: {0}",
startingTag(
node
),
);
directives.push(
{
priority: 100,
compile: function (
) {
return {
pre: function (
scope, element, attr
) {
var $$observers =
attr.$$observers || (attr.$$observers = {
});
if (EVENT_HANDLER_ATTR_REGEXP.test(
name
))
throw $compileMinErr(
"nodomevents",
"Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.",
);
(interpolateFn = $interpolate(
attr[name],
!0,
(function (
node, attrNormalizedName
) {
if ("srcdoc" == attrNormalizedName) return $sce.HTML;
var tag = nodeName_(
node
);
return "xlinkHref" == attrNormalizedName ||
("FORM" == tag && "action" == attrNormalizedName) ||
("IMG" != tag &&
("src" == attrNormalizedName ||
"ngSrc" == attrNormalizedName))
? $sce.RESOURCE_URL
: void 0;
})(
node,
name
),
)) &&
((attr[name] = interpolateFn(
scope
)),
((
$$observers[name] || ($$observers[name] = [])
).$$inter = !0),
(
(attr.$$observers &&
attr.$$observers[name].$$scope) ||
scope
).$watch(
interpolateFn,
function (
newValue, oldValue
) {
"class" === name && newValue != oldValue
? attr.$updateClass(
newValue,
oldValue
)
: attr.$set(
name,
newValue
);
}
));
},
};
},
}
);
}
}
function replaceWith(
$rootElement, elementsToRemove, newNode
) {
var i,
ii,
firstElementToRemove = elementsToRemove[0],
removeCount = elementsToRemove.length,
parent = firstElementToRemove.parentNode;
if ($rootElement)
for (i = 0, ii = $rootElement.length; i < ii; i++)
if ($rootElement[i] == firstElementToRemove) {
$rootElement[i++] = newNode;
for (
var j = i,
j2 = j + removeCount - 1,
jj = $rootElement.length;
j < jj;
j++, j2++
)
j2 < jj
? ($rootElement[j] = $rootElement[j2])
: delete $rootElement[j];
$rootElement.length -= removeCount - 1;
break;
}
parent && parent.replaceChild(
newNode,
firstElementToRemove
);
var fragment = document.createDocumentFragment(
);
fragment.appendChild(
firstElementToRemove
),
(newNode[jqLite.expando] = firstElementToRemove[jqLite.expando]);
for (var k = 1, kk = elementsToRemove.length; k < kk; k++) {
var element = elementsToRemove[k];
jqLite(
element
).remove(
),
fragment.appendChild(
element
),
delete elementsToRemove[k];
}
(elementsToRemove[0] = newNode), (elementsToRemove.length = 1);
}
function cloneAndAnnotateFn(
fn, annotation
) {
return extend(
function (
) {
return fn.apply(
null,
arguments
);
},
fn,
annotation,
);
}
},
]);
}
$CompileProvider.$inject = ["$provide", "$$sanitizeUriProvider",];
var PREFIX_REGEXP = /^(x[\:\-_]|data[\:\-_])/i;
function directiveNormalize(
name
) {
return camelCase(
name.replace(
PREFIX_REGEXP,
""
)
);
}
function tokenDifference(
str1, str2
) {
var values = "",
tokens1 = str1.split(
/\s+/
),
tokens2 = str2.split(
/\s+/
);
outer: for (var i = 0; i < tokens1.length; i++) {
for (var token = tokens1[i], j = 0; j < tokens2.length; j++)
if (token == tokens2[j]) continue outer;
values += (values.length > 0 ? " " : "") + token;
}
return values;
}
function $ControllerProvider(
) {
var controllers = {
},
CNTRL_REG = /^(\S+)(\s+as\s+(\w+))?$/;
(this.register = function (
name, constructor
) {
assertNotHasOwnProperty(
name,
"controller"
),
isObject(
name
)
? extend(
controllers,
name
)
: (controllers[name] = constructor);
}),
(this.$get = [
"$injector",
"$window",
function (
$injector, $window
) {
return function (
expression, locals
) {
var instance, match, constructor, identifier;
if (
(isString(
expression
) &&
((constructor = (match = expression.match(
CNTRL_REG
))[1]),
(identifier = match[3]),
assertArgFn(
(expression = controllers.hasOwnProperty(
constructor
)
? controllers[constructor]
: getter(
locals.$scope,
constructor,
!0
) ||
getter(
$window,
constructor,
!0
)),
constructor,
!0,
)),
(instance = $injector.instantiate(
expression,
locals
)),
identifier)
) {
if (!locals || "object" != typeof locals.$scope)
throw minErr(
"$controller"
)(
"noscp",
"Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",
constructor || expression.name,
identifier,
);
locals.$scope[identifier] = instance;
}
return instance;
};
},
]);
}
function $DocumentProvider(
) {
this.$get = [
"$window",
function (
window
) {
return jqLite(
window.document
);
},
];
}
function $ExceptionHandlerProvider(
) {
this.$get = [
"$log",
function (
$log
) {
return function (
exception, cause
) {
$log.error.apply(
$log,
arguments
);
};
},
];
}
function parseHeaders(
headers
) {
var key,
val,
i,
parsed = {
};
return headers
? (forEach(
headers.split(
"\n"
),
function (
line
) {
(i = line.indexOf(
":"
)),
(key = lowercase(
trim(
line.substr(
0,
i
)
)
)),
(val = trim(
line.substr(
i + 1
)
)),
key &&
(parsed[key] ? (parsed[key] += ", " + val) : (parsed[key] = val));
}
),
parsed)
: parsed;
}
function headersGetter(
headers
) {
var headersObj = isObject(
headers
)
? headers
: undefined;
return function (
name
) {
return (
headersObj || (headersObj = parseHeaders(
headers
)),
name
? headersObj[lowercase(
name
)] || null
: headersObj
);
};
}
function transformData(
data, headers, fns
) {
return isFunction(
fns
)
? fns(
data,
headers
)
: (forEach(
fns,
function (
fn
) {
data = fn(
data,
headers
);
}
),
data);
}
function isSuccess(
status
) {
return 200 <= status && status < 300;
}
function $HttpProvider(
) {
var JSON_START = /^\s*(\[|\{[^\{])/,
JSON_END = /[\}\]]\s*$/,
PROTECTION_PREFIX = /^\)\]\}',?\n/,
CONTENT_TYPE_APPLICATION_JSON = {
"Content-Type": "application/json;charset=utf-8",
},
defaults = (this.defaults = {
transformResponse: [
function (
data
) {
return (
isString(
data
) &&
((data = data.replace(
PROTECTION_PREFIX,
""
)),
JSON_START.test(
data
) &&
JSON_END.test(
data
) &&
(data = fromJson(
data
))),
data
);
},
],
transformRequest: [
function (
d
) {
return isObject(
d
) &&
((obj = d), "[object File]" !== toString.call(
obj
))
? toJson(
d
)
: d;
var obj;
},
],
headers: {
common: {
Accept: "application/json, text/plain, */*",
},
post: CONTENT_TYPE_APPLICATION_JSON,
put: CONTENT_TYPE_APPLICATION_JSON,
patch: CONTENT_TYPE_APPLICATION_JSON,
},
xsrfCookieName: "XSRF-TOKEN",
xsrfHeaderName: "X-XSRF-TOKEN",
}),
interceptorFactories = (this.interceptors = []),
responseInterceptorFactories = (this.responseInterceptors = []);
this.$get = [
"$httpBackend",
"$browser",
"$cacheFactory",
"$rootScope",
"$q",
"$injector",
function (
$httpBackend,
$browser,
$cacheFactory,
$rootScope,
$q,
$injector,
) {
var defaultCache = $cacheFactory(
"$http"
),
reversedInterceptors = [];
function $http(
requestConfig
) {
var config = {
transformRequest: defaults.transformRequest,
transformResponse: defaults.transformResponse,
},
headers = (function (
config
) {
var defHeaderName,
lowercaseDefHeaderName,
reqHeaderName,
defHeaders = defaults.headers,
reqHeaders = extend(
{
},
config.headers
);
execHeaders(
(defHeaders = extend(
{
},
defHeaders.common,
defHeaders[lowercase(
config.method
)],
)),
),
execHeaders(
reqHeaders
);
defaultHeadersIteration: for (defHeaderName in defHeaders) {
for (reqHeaderName in ((lowercaseDefHeaderName = lowercase(
defHeaderName,
)),
reqHeaders))
if (lowercase(
reqHeaderName
) === lowercaseDefHeaderName)
continue defaultHeadersIteration;
reqHeaders[defHeaderName] = defHeaders[defHeaderName];
}
return reqHeaders;
function execHeaders(
headers
) {
var headerContent;
forEach(
headers,
function (
headerFn, header
) {
isFunction(
headerFn
) &&
(null != (headerContent = headerFn(
))
? (headers[header] = headerContent)
: delete headers[header]);
}
);
}
})(
requestConfig
);
extend(
config,
requestConfig
),
(config.headers = headers),
(config.method = uppercase(
config.method
));
var xsrfValue = urlIsSameOrigin(
config.url
)
? $browser.cookies(
)[
config.xsrfCookieName || defaults.xsrfCookieName
]
: undefined;
xsrfValue &&
(headers[
config.xsrfHeaderName || defaults.xsrfHeaderName
] = xsrfValue);
var chain = [
function (
config
) {
headers = config.headers;
var reqData = transformData(
config.data,
headersGetter(
headers
),
config.transformRequest,
);
return (
isUndefined(
config.data
) &&
forEach(
headers,
function (
value, header
) {
"content-type" === lowercase(
header
) &&
delete headers[header];
}
),
isUndefined(
config.withCredentials
) &&
!isUndefined(
defaults.withCredentials
) &&
(config.withCredentials = defaults.withCredentials),
(function (
config, reqData, reqHeaders
) {
var cache,
cachedResp,
deferred = $q.defer(
),
promise = deferred.promise,
url = (function (
url, params
) {
if (!params) return url;
var parts = [];
return (
(function (
obj, iterator, context
) {
for (
var keys = sortedKeys(
obj
), i = 0;
i < keys.length;
i++
)
iterator.call(
context,
obj[keys[i]],
keys[i]
);
})(
params,
function (
value, key
) {
null === value ||
isUndefined(
value
) ||
(isArray(
value
) || (value = [value,]),
forEach(
value,
function (
v
) {
isObject(
v
) && (v = toJson(
v
)),
parts.push(
encodeUriQuery(
key
) +
"=" +
encodeUriQuery(
v
),
);
}
));
}
),
url +
(-1 == url.indexOf(
"?"
)
? "?"
: "&") +
parts.join(
"&"
)
);
})(
config.url,
config.params
);
$http.pendingRequests.push(
config
),
promise.then(
removePendingReq,
removePendingReq
),
(config.cache || defaults.cache) &&
!1 !== config.cache &&
"GET" == config.method &&
(cache = isObject(
config.cache
)
? config.cache
: isObject(
defaults.cache
)
? defaults.cache
: defaultCache);
if (cache)
if (isDefined(
(cachedResp = cache.get(
url
))
)) {
if (cachedResp.then)
return (
cachedResp.then(
removePendingReq,
removePendingReq
),
cachedResp
);
isArray(
cachedResp
)
? resolvePromise(
cachedResp[1],
cachedResp[0],
copy(
cachedResp[2]
),
)
: resolvePromise(
cachedResp,
200,
{
}
);
} else cache.put(
url,
promise
);
isUndefined(
cachedResp
) &&
$httpBackend(
config.method,
url,
reqData,
done,
reqHeaders,
config.timeout,
config.withCredentials,
config.responseType,
);
return promise;
function done(
status, response, headersString
) {
cache &&
(isSuccess(
status
)
? cache.put(
url,
[
status,
response,
parseHeaders(
headersString
),
]
)
: cache.remove(
url
)),
resolvePromise(
response,
status,
headersString
),
$rootScope.$$phase || $rootScope.$apply(
);
}
function resolvePromise(
response, status, headers
) {
(isSuccess(
(status = Math.max(
status,
0
))
)
? deferred.resolve
: deferred.reject)(
{
data: response,
status: status,
headers: headersGetter(
headers
),
config: config,
}
);
}
function removePendingReq(
) {
var idx = indexOf(
$http.pendingRequests,
config
);
-1 !== idx && $http.pendingRequests.splice(
idx,
1
);
}
})(
config,
reqData,
headers
).then(
transformResponse,
transformResponse,
)
);
},
undefined,
],
promise = $q.when(
config
);
for (
forEach(
reversedInterceptors,
function (
interceptor
) {
(interceptor.request || interceptor.requestError) &&
chain.unshift(
interceptor.request,
interceptor.requestError
),
(interceptor.response || interceptor.responseError) &&
chain.push(
interceptor.response,
interceptor.responseError
);
}
);
chain.length;
) {
var thenFn = chain.shift(
),
rejectFn = chain.shift(
);
promise = promise.then(
thenFn,
rejectFn
);
}
return (
(promise.success = function (
fn
) {
return (
promise.then(
function (
response
) {
fn(
response.data,
response.status,
response.headers,
config
);
}
),
promise
);
}),
(promise.error = function (
fn
) {
return (
promise.then(
null,
function (
response
) {
fn(
response.data,
response.status,
response.headers,
config
);
}
),
promise
);
}),
promise
);
function transformResponse(
response
) {
var resp = extend(
{
},
response,
{
data: transformData(
response.data,
response.headers,
config.transformResponse,
),
}
);
return isSuccess(
response.status
)
? resp
: $q.reject(
resp
);
}
}
return (
forEach(
interceptorFactories,
function (
interceptorFactory
) {
reversedInterceptors.unshift(
isString(
interceptorFactory
)
? $injector.get(
interceptorFactory
)
: $injector.invoke(
interceptorFactory
),
);
}
),
forEach(
responseInterceptorFactories,
function (
interceptorFactory, index
) {
var responseFn = isString(
interceptorFactory
)
? $injector.get(
interceptorFactory
)
: $injector.invoke(
interceptorFactory
);
reversedInterceptors.splice(
index,
0,
{
response: function (
response
) {
return responseFn(
$q.when(
response
)
);
},
responseError: function (
response
) {
return responseFn(
$q.reject(
response
)
);
},
}
);
},
),
($http.pendingRequests = []),
(function (
names
) {
forEach(
arguments,
function (
name
) {
$http[name] = function (
url, config
) {
return $http(
extend(
config || {
},
{
method: name,
url: url,
}
)
);
};
}
);
})(
"get",
"delete",
"head",
"jsonp"
),
(function (
name
) {
forEach(
arguments,
function (
name
) {
$http[name] = function (
url, data, config
) {
return $http(
extend(
config || {
},
{
method: name,
url: url,
data: data,
}
),
);
};
}
);
})(
"post",
"put"
),
($http.defaults = defaults),
$http
);
},
];
}
var XHR =
window.XMLHttpRequest ||
function (
) {
try {
return new ActiveXObject(
"Msxml2.XMLHTTP.6.0"
);
} catch (e1) {}
try {
return new ActiveXObject(
"Msxml2.XMLHTTP.3.0"
);
} catch (e2) {}
try {
return new ActiveXObject(
"Msxml2.XMLHTTP"
);
} catch (e3) {}
throw minErr(
"$httpBackend"
)(
"noxhr",
"This browser does not support XMLHttpRequest.",
);
};
function $HttpBackendProvider(
) {
this.$get = [
"$browser",
"$window",
"$document",
function (
$browser, $window, $document
) {
return (function (
$browser,
XHR,
$browserDefer,
callbacks,
rawDocument,
) {
var ABORTED = -1;
return function (
method,
url,
post,
callback,
headers,
timeout,
withCredentials,
responseType,
) {
var status;
if (
($browser.$$incOutstandingRequestCount(
),
(url = url || $browser.url(
)),
"jsonp" == lowercase(
method
))
) {
var callbackId = "_" + (callbacks.counter++).toString(
36
);
callbacks[callbackId] = function (
data
) {
callbacks[callbackId].data = data;
};
var jsonpDone = jsonpReq(
url.replace(
"JSON_CALLBACK",
"angular.callbacks." + callbackId
),
function (
) {
callbacks[callbackId].data
? completeRequest(
callback,
200,
callbacks[callbackId].data
)
: completeRequest(
callback,
status || -2
),
delete callbacks[callbackId];
},
);
} else {
var xhr = new XHR(
);
xhr.open(
method,
url,
!0
),
forEach(
headers,
function (
value, key
) {
isDefined(
value
) && xhr.setRequestHeader(
key,
value
);
}
),
(xhr.onreadystatechange = function (
) {
if (4 == xhr.readyState) {
var responseHeaders = null,
response = null;
status !== ABORTED &&
((responseHeaders = xhr.getAllResponseHeaders(
)),
(response = xhr.responseType
? xhr.response
: xhr.responseText)),
completeRequest(
callback,
status || xhr.status,
response,
responseHeaders,
);
}
}),
withCredentials && (xhr.withCredentials = !0),
responseType && (xhr.responseType = responseType),
xhr.send(
post || null
);
}
if (timeout > 0)
var timeoutId = $browserDefer(
timeoutRequest,
timeout
);
else timeout && timeout.then && timeout.then(
timeoutRequest
);
function timeoutRequest(
) {
(status = ABORTED), jsonpDone && jsonpDone(
), xhr && xhr.abort(
);
}
function completeRequest(
callback,
status,
response,
headersString,
) {
var protocol = urlResolve(
url
).protocol;
timeoutId && $browserDefer.cancel(
timeoutId
),
(jsonpDone = xhr = null),
callback(
(status =
1223 ==
(status =
"file" == protocol && 0 === status
? response
? 200
: 404
: status)
? 204
: status),
response,
headersString,
),
$browser.$$completeOutstandingRequest(
noop
);
}
};
function jsonpReq(
url, done
) {
var script = rawDocument.createElement(
"script"
),
doneWrapper = function (
) {
(script.onreadystatechange = script.onload = script.onerror = null),
rawDocument.body.removeChild(
script
),
done && done(
);
};
return (
(script.type = "text/javascript"),
(script.src = url),
msie && msie <= 8
? (script.onreadystatechange = function (
) {
/loaded|complete/.test(
script.readyState
) && doneWrapper(
);
})
: (script.onload = script.onerror = function (
) {
doneWrapper(
);
}),
rawDocument.body.appendChild(
script
),
doneWrapper
);
}
})(
$browser,
XHR,
$browser.defer,
$window.angular.callbacks,
$document[0],
);
},
];
}
var $interpolateMinErr = minErr(
"$interpolate"
);
function $InterpolateProvider(
) {
var startSymbol = "{{",
endSymbol = "}}";
(this.startSymbol = function (
value
) {
return value ? ((startSymbol = value), this) : startSymbol;
}),
(this.endSymbol = function (
value
) {
return value ? ((endSymbol = value), this) : endSymbol;
}),
(this.$get = [
"$parse",
"$exceptionHandler",
"$sce",
function (
$parse, $exceptionHandler, $sce
) {
var startSymbolLength = startSymbol.length,
endSymbolLength = endSymbol.length;
function $interpolate(
text, mustHaveExpression, trustedContext
) {
for (
var startIndex,
endIndex,
fn,
exp,
index = 0,
parts = [],
length = text.length,
hasInterpolation = !1,
concat = [];
index < length;
)
-1 != (startIndex = text.indexOf(
startSymbol,
index
)) &&
-1 !=
(endIndex = text.indexOf(
endSymbol,
startIndex + startSymbolLength,
))
? (index != startIndex &&
parts.push(
text.substring(
index,
startIndex
)
),
parts.push(
(fn = $parse(
(exp = text.substring(
startIndex + startSymbolLength,
endIndex,
)),
)),
),
(fn.exp = exp),
(index = endIndex + endSymbolLength),
(hasInterpolation = !0))
: (index != length && parts.push(
text.substring(
index
)
),
(index = length));
if (
((length = parts.length) || (parts.push(
""
), (length = 1)),
trustedContext && parts.length > 1)
)
throw $interpolateMinErr(
"noconcat",
"Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce",
text,
);
if (!mustHaveExpression || hasInterpolation)
return (
(concat.length = length),
((fn = function (
context
) {
try {
for (var part, i = 0, ii = length; i < ii; i++)
"function" == typeof (part = parts[i]) &&
((part = part(
context
)),
null ===
(part = trustedContext
? $sce.getTrusted(
trustedContext,
part
)
: $sce.valueOf(
part
)) || isUndefined(
part
)
? (part = "")
: "string" != typeof part && (part = toJson(
part
))),
(concat[i] = part);
return concat.join(
""
);
} catch (err) {
var newErr = $interpolateMinErr(
"interr",
"Can't interpolate: {0}\n{1}",
text,
err.toString(
),
);
$exceptionHandler(
newErr
);
}
}).exp = text),
(fn.parts = parts),
fn
);
}
return (
($interpolate.startSymbol = function (
) {
return startSymbol;
}),
($interpolate.endSymbol = function (
) {
return endSymbol;
}),
$interpolate
);
},
]);
}
function $IntervalProvider(
) {
this.$get = [
"$rootScope",
"$window",
"$q",
function (
$rootScope, $window, $q
) {
var intervals = {
};
function interval(
fn, delay, count, invokeApply
) {
var setInterval = $window.setInterval,
clearInterval = $window.clearInterval,
deferred = $q.defer(
),
promise = deferred.promise,
iteration = 0,
skipApply = isDefined(
invokeApply
) && !invokeApply;
return (
(count = isDefined(
count
)
? count
: 0),
promise.then(
null,
null,
fn
),
(promise.$$intervalId = setInterval(
function (
) {
deferred.notify(
iteration++
),
count > 0 &&
iteration >= count &&
(deferred.resolve(
iteration
),
clearInterval(
promise.$$intervalId
),
delete intervals[promise.$$intervalId]),
skipApply || $rootScope.$apply(
);
},
delay
)),
(intervals[promise.$$intervalId] = deferred),
promise
);
}
return (
(interval.cancel = function (
promise
) {
return (
!(!promise || !(promise.$$intervalId in intervals)) &&
(intervals[promise.$$intervalId].reject(
"canceled"
),
clearInterval(
promise.$$intervalId
),
delete intervals[promise.$$intervalId],
!0)
);
}),
interval
);
},
];
}
function $LocaleProvider(
) {
this.$get = function (
) {
return {
id: "en-us",
NUMBER_FORMATS: {
DECIMAL_SEP: ".",
GROUP_SEP: ",",
PATTERNS: [
{
minInt: 1,
minFrac: 0,
maxFrac: 3,
posPre: "",
posSuf: "",
negPre: "-",
negSuf: "",
gSize: 3,
lgSize: 3,
},
{
minInt: 1,
minFrac: 2,
maxFrac: 2,
posPre: "¤",
posSuf: "",
negPre: "(¤",
negSuf: ")",
gSize: 3,
lgSize: 3,
},
],
CURRENCY_SYM: "$",
},
DATETIME_FORMATS: {
MONTH: "January,February,March,April,May,June,July,August,September,October,November,December".split(
",",
),
SHORTMONTH: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(
",",
),
DAY: "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(
",",
),
SHORTDAY: "Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(
","
),
AMPMS: ["AM", "PM",],
medium: "MMM d, y h:mm:ss a",
short: "M/d/yy h:mm a",
fullDate: "EEEE, MMMM d, y",
longDate: "MMMM d, y",
mediumDate: "MMM d, y",
shortDate: "M/d/yy",
mediumTime: "h:mm:ss a",
shortTime: "h:mm a",
},
pluralCat: function (
num
) {
return 1 === num ? "one" : "other";
},
};
};
}
var PATH_MATCH = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/,
DEFAULT_PORTS = {
http: 80,
https: 443,
ftp: 21,
},
$locationMinErr = minErr(
"$location"
);
function encodePath(
path
) {
for (var segments = path.split(
"/"
), i = segments.length; i--; )
segments[i] = encodeUriSegment(
segments[i]
);
return segments.join(
"/"
);
}
function parseAbsoluteUrl(
absoluteUrl, locationObj, appBase
) {
var parsedUrl = urlResolve(
absoluteUrl,
appBase
);
(locationObj.$$protocol = parsedUrl.protocol),
(locationObj.$$host = parsedUrl.hostname),
(locationObj.$$port =
int(
parsedUrl.port
) || DEFAULT_PORTS[parsedUrl.protocol] || null);
}
function parseAppUrl(
relativeUrl, locationObj, appBase
) {
var prefixed = "/" !== relativeUrl.charAt(
0
);
prefixed && (relativeUrl = "/" + relativeUrl);
var match = urlResolve(
relativeUrl,
appBase
);
(locationObj.$$path = decodeURIComponent(
prefixed && "/" === match.pathname.charAt(
0
)
? match.pathname.substring(
1
)
: match.pathname,
)),
(locationObj.$$search = parseKeyValue(
match.search
)),
(locationObj.$$hash = decodeURIComponent(
match.hash
)),
locationObj.$$path &&
"/" != locationObj.$$path.charAt(
0
) &&
(locationObj.$$path = "/" + locationObj.$$path);
}
function beginsWith(
begin, whole
) {
if (0 === whole.indexOf(
begin
)) return whole.substr(
begin.length
);
}
function stripHash(
url
) {
var index = url.indexOf(
"#"
);
return -1 == index
? url
: url.substr(
0,
index
);
}
function stripFile(
url
) {
return url.substr(
0,
stripHash(
url
).lastIndexOf(
"/"
) + 1
);
}
function LocationHtml5Url(
appBase, basePrefix
) {
(this.$$html5 = !0), (basePrefix = basePrefix || "");
var appBaseNoFile = stripFile(
appBase
);
parseAbsoluteUrl(
appBase,
this,
appBase
),
(this.$$parse = function (
url
) {
var pathUrl = beginsWith(
appBaseNoFile,
url
);
if (!isString(
pathUrl
))
throw $locationMinErr(
"ipthprfx",
'Invalid url "{0}", missing path prefix "{1}".',
url,
appBaseNoFile,
);
parseAppUrl(
pathUrl,
this,
appBase
),
this.$$path || (this.$$path = "/"),
this.$$compose(
);
}),
(this.$$compose = function (
) {
var search = toKeyValue(
this.$$search
),
hash = this.$$hash
? "#" + encodeUriSegment(
this.$$hash
)
: "";
(this.$$url =
encodePath(
this.$$path
) + (search ? "?" + search : "") + hash),
(this.$$absUrl = appBaseNoFile + this.$$url.substr(
1
));
}),
(this.$$rewrite = function (
url
) {
var appUrl, prevAppUrl;
return undefined !== (appUrl = beginsWith(
appBase,
url
))
? ((prevAppUrl = appUrl),
undefined !== (appUrl = beginsWith(
basePrefix,
appUrl
))
? appBaseNoFile + (beginsWith(
"/",
appUrl
) || appUrl)
: appBase + prevAppUrl)
: undefined !== (appUrl = beginsWith(
appBaseNoFile,
url
))
? appBaseNoFile + appUrl
: appBaseNoFile == url + "/"
? appBaseNoFile
: void 0;
});
}
function LocationHashbangUrl(
appBase, hashPrefix
) {
var appBaseNoFile = stripFile(
appBase
);
parseAbsoluteUrl(
appBase,
this,
appBase
),
(this.$$parse = function (
url
) {
var withoutBaseUrl =
beginsWith(
appBase,
url
) || beginsWith(
appBaseNoFile,
url
),
withoutHashUrl =
"#" == withoutBaseUrl.charAt(
0
)
? beginsWith(
hashPrefix,
withoutBaseUrl
)
: this.$$html5
? withoutBaseUrl
: "";
if (!isString(
withoutHashUrl
))
throw $locationMinErr(
"ihshprfx",
'Invalid url "{0}", missing hash prefix "{1}".',
url,
hashPrefix,
);
parseAppUrl(
withoutHashUrl,
this,
appBase
),
(this.$$path = (function (
path, url, base
) {
var firstPathSegmentMatch,
windowsFilePathExp = /^\/?.*?:(\/.*)/;
0 === url.indexOf(
base
) && (url = url.replace(
base,
""
));
if (windowsFilePathExp.exec(
url
)) return path;
return (firstPathSegmentMatch = windowsFilePathExp.exec(
path
))
? firstPathSegmentMatch[1]
: path;
})(
this.$$path,
withoutHashUrl,
appBase
)),
this.$$compose(
);
}),
(this.$$compose = function (
) {
var search = toKeyValue(
this.$$search
),
hash = this.$$hash
? "#" + encodeUriSegment(
this.$$hash
)
: "";
(this.$$url =
encodePath(
this.$$path
) + (search ? "?" + search : "") + hash),
(this.$$absUrl =
appBase + (this.$$url ? hashPrefix + this.$$url : ""));
}),
(this.$$rewrite = function (
url
) {
if (stripHash(
appBase
) == stripHash(
url
)) return url;
});
}
function LocationHashbangInHtml5Url(
appBase, hashPrefix
) {
(this.$$html5 = !0), LocationHashbangUrl.apply(
this,
arguments
);
var appBaseNoFile = stripFile(
appBase
);
this.$$rewrite = function (
url
) {
var appUrl;
return appBase == stripHash(
url
)
? url
: (appUrl = beginsWith(
appBaseNoFile,
url
))
? appBase + hashPrefix + appUrl
: appBaseNoFile === url + "/"
? appBaseNoFile
: void 0;
};
}
function locationGetter(
property
) {
return function (
) {
return this[property];
};
}
function locationGetterSetter(
property, preprocess
) {
return function (
value
) {
return isUndefined(
value
)
? this[property]
: ((this[property] = preprocess(
value
)), this.$$compose(
), this);
};
}
function $LocationProvider(
) {
var hashPrefix = "",
html5Mode = !1;
(this.hashPrefix = function (
prefix
) {
return isDefined(
prefix
)
? ((hashPrefix = prefix), this)
: hashPrefix;
}),
(this.html5Mode = function (
mode
) {
return isDefined(
mode
)
? ((html5Mode = mode), this)
: html5Mode;
}),
(this.$get = [
"$rootScope",
"$browser",
"$sniffer",
"$rootElement",
function (
$rootScope, $browser, $sniffer, $rootElement
) {
var $location,
LocationMode,
appBase,
url,
baseHref = $browser.baseHref(
),
initialUrl = $browser.url(
);
html5Mode
? ((appBase =
(url = initialUrl).substring(
0,
url.indexOf(
"/",
url.indexOf(
"//"
) + 2
),
) + (baseHref || "/")),
(LocationMode = $sniffer.history
? LocationHtml5Url
: LocationHashbangInHtml5Url))
: ((appBase = stripHash(
initialUrl
)),
(LocationMode = LocationHashbangUrl)),
($location = new LocationMode(
appBase,
"#" + hashPrefix
)).$$parse(
$location.$$rewrite(
initialUrl
),
),
$rootElement.on(
"click",
function (
event
) {
if (!event.ctrlKey && !event.metaKey && 2 != event.which) {
for (
var elm = jqLite(
event.target
);
"a" !== lowercase(
elm[0].nodeName
);
)
if (elm[0] === $rootElement[0] || !(elm = elm.parent(
))[0])
return;
var absHref = elm.prop(
"href"
),
rewrittenUrl = $location.$$rewrite(
absHref
);
absHref &&
!elm.attr(
"target"
) &&
rewrittenUrl &&
!event.isDefaultPrevented(
) &&
(event.preventDefault(
),
rewrittenUrl != $browser.url(
) &&
($location.$$parse(
rewrittenUrl
),
$rootScope.$apply(
),
(window.angular["ff-684208-preventDefault"] = !0)));
}
}
),
$location.absUrl(
) != initialUrl &&
$browser.url(
$location.absUrl(
),
!0
),
$browser.onUrlChange(
function (
newUrl
) {
if ($location.absUrl(
) != newUrl) {
if (
$rootScope.$broadcast(
"$locationChangeStart",
newUrl,
$location.absUrl(
),
).defaultPrevented
)
return void $browser.url(
$location.absUrl(
)
);
$rootScope.$evalAsync(
function (
) {
var oldUrl = $location.absUrl(
);
$location.$$parse(
newUrl
), afterLocationChange(
oldUrl
);
}
),
$rootScope.$$phase || $rootScope.$digest(
);
}
}
);
var changeCounter = 0;
return (
$rootScope.$watch(
function (
) {
var oldUrl = $browser.url(
),
currentReplace = $location.$$replace;
return (
(changeCounter && oldUrl == $location.absUrl(
)) ||
(changeCounter++,
$rootScope.$evalAsync(
function (
) {
$rootScope.$broadcast(
"$locationChangeStart",
$location.absUrl(
),
oldUrl,
).defaultPrevented
? $location.$$parse(
oldUrl
)
: ($browser.url(
$location.absUrl(
),
currentReplace
),
afterLocationChange(
oldUrl
));
}
)),
($location.$$replace = !1),
changeCounter
);
}
),
$location
);
function afterLocationChange(
oldUrl
) {
$rootScope.$broadcast(
"$locationChangeSuccess",
$location.absUrl(
),
oldUrl,
);
}
},
]);
}
function $LogProvider(
) {
var debug = !0,
self = this;
(this.debugEnabled = function (
flag
) {
return isDefined(
flag
)
? ((debug = flag), this)
: debug;
}),
(this.$get = [
"$window",
function (
$window
) {
return {
log: consoleLog(
"log"
),
info: consoleLog(
"info"
),
warn: consoleLog(
"warn"
),
error: consoleLog(
"error"
),
debug:
((fn = consoleLog(
"debug"
)),
function (
) {
debug && fn.apply(
self,
arguments
);
}),
};
var fn;
function formatError(
arg
) {
return (
arg instanceof Error &&
(arg.stack
? (arg =
arg.message && -1 === arg.stack.indexOf(
arg.message
)
? "Error: " + arg.message + "\n" + arg.stack
: arg.stack)
: arg.sourceURL &&
(arg =
arg.message + "\n" + arg.sourceURL + ":" + arg.line)),
arg
);
}
function consoleLog(
type
) {
var console = $window.console || {
},
logFn = console[type] || console.log || noop;
return logFn.apply
? function (
) {
var args = [];
return (
forEach(
arguments,
function (
arg
) {
args.push(
formatError(
arg
)
);
}
),
logFn.apply(
console,
args
)
);
}
: function (
arg1, arg2
) {
logFn(
arg1,
null == arg2 ? "" : arg2
);
};
}
},
]);
}
LocationHashbangInHtml5Url.prototype = LocationHashbangUrl.prototype = LocationHtml5Url.prototype = {
$$html5: !1,
$$replace: !1,
absUrl: locationGetter(
"$$absUrl"
),
url: function (
url, replace
) {
if (isUndefined(
url
)) return this.$$url;
var match = PATH_MATCH.exec(
url
);
return (
match[1] && this.path(
decodeURIComponent(
match[1]
)
),
(match[2] || match[1]) && this.search(
match[3] || ""
),
this.hash(
match[5] || "",
replace
),
this
);
},
protocol: locationGetter(
"$$protocol"
),
host: locationGetter(
"$$host"
),
port: locationGetter(
"$$port"
),
path: locationGetterSetter(
"$$path",
function (
path
) {
return "/" == path.charAt(
0
)
? path
: "/" + path;
}
),
search: function (
search, paramValue
) {
switch (arguments.length) {
case 0:
return this.$$search;
case 1:
if (isString(
search
)) this.$$search = parseKeyValue(
search
);
else {
if (!isObject(
search
))
throw $locationMinErr(
"isrcharg",
"The first argument of the `$location#search()` call must be a string or an object.",
);
this.$$search = search;
}
break;
default:
isUndefined(
paramValue
) || null === paramValue
? delete this.$$search[search]
: (this.$$search[search] = paramValue);
}
return this.$$compose(
), this;
},
hash: locationGetterSetter(
"$$hash",
identity
),
replace: function (
) {
return (this.$$replace = !0), this;
},
};
var promiseWarning,
$parseMinErr = minErr(
"$parse"
),
promiseWarningCache = {
};
function ensureSafeMemberName(
name, fullExpression
) {
if ("constructor" === name)
throw $parseMinErr(
"isecfld",
'Referencing "constructor" field in Angular expressions is disallowed! Expression: {0}',
fullExpression,
);
return name;
}
function ensureSafeObject(
obj, fullExpression
) {
if (obj) {
if (obj.constructor === obj)
throw $parseMinErr(
"isecfn",
"Referencing Function in Angular expressions is disallowed! Expression: {0}",
fullExpression,
);
if (obj.document && obj.location && obj.alert && obj.setInterval)
throw $parseMinErr(
"isecwindow",
"Referencing the Window in Angular expressions is disallowed! Expression: {0}",
fullExpression,
);
if (obj.children && (obj.nodeName || (obj.on && obj.find)))
throw $parseMinErr(
"isecdom",
"Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",
fullExpression,
);
}
return obj;
}
var OPERATORS = {
null: function (
) {
return null;
},
true: function (
) {
return !0;
},
false: function (
) {
return !1;
},
undefined: noop,
"+": function (
self, locals, a, b
) {
return (
(a = a(
self,
locals
)),
(b = b(
self,
locals
)),
isDefined(
a
)
? isDefined(
b
)
? a + b
: a
: isDefined(
b
)
? b
: undefined
);
},
"-": function (
self, locals, a, b
) {
return (
(a = a(
self,
locals
)),
(b = b(
self,
locals
)),
(isDefined(
a
)
? a
: 0) - (isDefined(
b
)
? b
: 0)
);
},
"*": function (
self, locals, a, b
) {
return a(
self,
locals
) * b(
self,
locals
);
},
"/": function (
self, locals, a, b
) {
return a(
self,
locals
) / b(
self,
locals
);
},
"%": function (
self, locals, a, b
) {
return a(
self,
locals
) % b(
self,
locals
);
},
"^": function (
self, locals, a, b
) {
return a(
self,
locals
) ^ b(
self,
locals
);
},
"=": noop,
"===": function (
self, locals, a, b
) {
return a(
self,
locals
) === b(
self,
locals
);
},
"!==": function (
self, locals, a, b
) {
return a(
self,
locals
) !== b(
self,
locals
);
},
"==": function (
self, locals, a, b
) {
return a(
self,
locals
) == b(
self,
locals
);
},
"!=": function (
self, locals, a, b
) {
return a(
self,
locals
) != b(
self,
locals
);
},
"<": function (
self, locals, a, b
) {
return a(
self,
locals
) < b(
self,
locals
);
},
">": function (
self, locals, a, b
) {
return a(
self,
locals
) > b(
self,
locals
);
},
"<=": function (
self, locals, a, b
) {
return a(
self,
locals
) <= b(
self,
locals
);
},
">=": function (
self, locals, a, b
) {
return a(
self,
locals
) >= b(
self,
locals
);
},
"&&": function (
self, locals, a, b
) {
return a(
self,
locals
) && b(
self,
locals
);
},
"||": function (
self, locals, a, b
) {
return a(
self,
locals
) || b(
self,
locals
);
},
"&": function (
self, locals, a, b
) {
return a(
self,
locals
) & b(
self,
locals
);
},
"|": function (
self, locals, a, b
) {
return b(
self,
locals
)(
self,
locals,
a(
self,
locals
)
);
},
"!": function (
self, locals, a
) {
return !a(
self,
locals
);
},
},
ESCAPE = {
n: "\n",
f: "\f",
r: "\r",
t: "\t",
v: "\v",
"'": "'",
'"': '"',
},
Lexer = function (
options
) {
this.options = options;
};
Lexer.prototype = {
constructor: Lexer,
lex: function (
text
) {
var token;
(this.text = text),
(this.index = 0),
(this.ch = undefined),
(this.lastCh = ":"),
(this.tokens = []);
for (var json = []; this.index < this.text.length; ) {
if (((this.ch = this.text.charAt(
this.index
)), this.is(
"\"'"
)))
this.readString(
this.ch
);
else if (
this.isNumber(
this.ch
) ||
(this.is(
"."
) && this.isNumber(
this.peek(
)
))
)
this.readNumber(
);
else if (this.isIdent(
this.ch
))
this.readIdent(
),
this.was(
"{,"
) &&
"{" === json[0] &&
(token = this.tokens[this.tokens.length - 1]) &&
(token.json = -1 === token.text.indexOf(
"."
));
else if (this.is(
"(){}[].,;:?"
))
this.tokens.push(
{
index: this.index,
text: this.ch,
json: (this.was(
":[,"
) && this.is(
"{["
)) || this.is(
"}]:,"
),
}
),
this.is(
"{["
) && json.unshift(
this.ch
),
this.is(
"}]"
) && json.shift(
),
this.index++;
else {
if (this.isWhitespace(
this.ch
)) {
this.index++;
continue;
}
var ch2 = this.ch + this.peek(
),
ch3 = ch2 + this.peek(
2
),
fn = OPERATORS[this.ch],
fn2 = OPERATORS[ch2],
fn3 = OPERATORS[ch3];
fn3
? (this.tokens.push(
{
index: this.index,
text: ch3,
fn: fn3,
}
),
(this.index += 3))
: fn2
? (this.tokens.push(
{
index: this.index,
text: ch2,
fn: fn2,
}
),
(this.index += 2))
: fn
? (this.tokens.push(
{
index: this.index,
text: this.ch,
fn: fn,
json: this.was(
"[,:"
) && this.is(
"+-"
),
}
),
(this.index += 1))
: this.throwError(
"Unexpected next character ",
this.index,
this.index + 1,
);
}
this.lastCh = this.ch;
}
return this.tokens;
},
is: function (
chars
) {
return -1 !== chars.indexOf(
this.ch
);
},
was: function (
chars
) {
return -1 !== chars.indexOf(
this.lastCh
);
},
peek: function (
i
) {
var num = i || 1;
return (
this.index + num < this.text.length &&
this.text.charAt(
this.index + num
)
);
},
isNumber: function (
ch
) {
return "0" <= ch && ch <= "9";
},
isWhitespace: function (
ch
) {
return (
" " === ch ||
"\r" === ch ||
"\t" === ch ||
"\n" === ch ||
"\v" === ch ||
"Â " === ch
);
},
isIdent: function (
ch
) {
return (
("a" <= ch && ch <= "z") ||
("A" <= ch && ch <= "Z") ||
"_" === ch ||
"$" === ch
);
},
isExpOperator: function (
ch
) {
return "-" === ch || "+" === ch || this.isNumber(
ch
);
},
throwError: function (
error, start, end
) {
end = end || this.index;
var colStr = isDefined(
start
)
? "s " +
start +
"-" +
this.index +
" [" +
this.text.substring(
start,
end
) +
"]"
: " " + end;
throw $parseMinErr(
"lexerr",
"Lexer Error: {0} at column{1} in expression [{2}].",
error,
colStr,
this.text,
);
},
readNumber: function (
) {
for (
var number = "", start = this.index;
this.index < this.text.length;
) {
var ch = lowercase(
this.text.charAt(
this.index
)
);
if ("." == ch || this.isNumber(
ch
)) number += ch;
else {
var peekCh = this.peek(
);
if ("e" == ch && this.isExpOperator(
peekCh
)) number += ch;
else if (
this.isExpOperator(
ch
) &&
peekCh &&
this.isNumber(
peekCh
) &&
"e" == number.charAt(
number.length - 1
)
)
number += ch;
else {
if (
!this.isExpOperator(
ch
) ||
(peekCh && this.isNumber(
peekCh
)) ||
"e" != number.charAt(
number.length - 1
)
)
break;
this.throwError(
"Invalid exponent"
);
}
}
this.index++;
}
(number *= 1),
this.tokens.push(
{
index: start,
text: number,
json: !0,
fn: function (
) {
return number;
},
}
);
},
readIdent: function (
) {
for (
var lastDot,
peekIndex,
methodName,
ch,
parser = this,
ident = "",
start = this.index;
this.index < this.text.length &&
("." === (ch = this.text.charAt(
this.index
)) ||
this.isIdent(
ch
) ||
this.isNumber(
ch
));
)
"." === ch && (lastDot = this.index), (ident += ch), this.index++;
if (lastDot)
for (peekIndex = this.index; peekIndex < this.text.length; ) {
if ("(" === (ch = this.text.charAt(
peekIndex
))) {
(methodName = ident.substr(
lastDot - start + 1
)),
(ident = ident.substr(
0,
lastDot - start
)),
(this.index = peekIndex);
break;
}
if (!this.isWhitespace(
ch
)) break;
peekIndex++;
}
var token = {
index: start,
text: ident,
};
if (OPERATORS.hasOwnProperty(
ident
))
(token.fn = OPERATORS[ident]), (token.json = OPERATORS[ident]);
else {
var getter = getterFn(
ident,
this.options,
this.text
);
token.fn = extend(
function (
self, locals
) {
return getter(
self,
locals
);
},
{
assign: function (
self, value
) {
return setter(
self,
ident,
value,
parser.text,
parser.options
);
},
},
);
}
this.tokens.push(
token
),
methodName &&
(this.tokens.push(
{
index: lastDot,
text: ".",
json: !1,
}
),
this.tokens.push(
{
index: lastDot + 1,
text: methodName,
json: !1,
}
));
},
readString: function (
quote
) {
var start = this.index;
this.index++;
for (
var string = "", rawString = quote, escape = !1;
this.index < this.text.length;
) {
var ch = this.text.charAt(
this.index
);
if (((rawString += ch), escape)) {
if ("u" === ch) {
var hex = this.text.substring(
this.index + 1,
this.index + 5
);
hex.match(
/[\da-f]{4}/i
) ||
this.throwError(
"Invalid unicode escape [\\u" + hex + "]"
),
(this.index += 4),
(string += String.fromCharCode(
parseInt(
hex,
16
)
));
} else {
var rep = ESCAPE[ch];
string += rep || ch;
}
escape = !1;
} else if ("\\" === ch) escape = !0;
else {
if (ch === quote)
return (
this.index++,
void this.tokens.push(
{
index: start,
text: rawString,
string: string,
json: !0,
fn: function (
) {
return string;
},
}
)
);
string += ch;
}
this.index++;
}
this.throwError(
"Unterminated quote",
start
);
},
};
var Parser = function (
lexer, $filter, options
) {
(this.lexer = lexer), (this.$filter = $filter), (this.options = options);
};
function setter(
obj, path, setValue, fullExp, options
) {
options = options || {
};
for (var key, element = path.split(
"."
), i = 0; element.length > 1; i++) {
var propertyObj =
obj[(key = ensureSafeMemberName(
element.shift(
),
fullExp
))];
propertyObj || ((propertyObj = {
}), (obj[key] = propertyObj)),
(obj = propertyObj).then &&
options.unwrapPromises &&
(promiseWarning(
fullExp
),
"$$v" in obj ||
(function (
promise
) {
promise.then(
function (
val
) {
promise.$$v = val;
}
);
})(
obj
),
undefined === obj.$$v && (obj.$$v = {
}),
(obj = obj.$$v));
}
return (
(obj[(key = ensureSafeMemberName(
element.shift(
),
fullExp
))] = setValue),
setValue
);
}
(Parser.ZERO = function (
) {
return 0;
}),
(Parser.prototype = {
constructor: Parser,
parse: function (
text, json
) {
(this.text = text),
(this.json = json),
(this.tokens = this.lexer.lex(
text
)),
json &&
((this.assignment = this.logicalOR),
(this.functionCall = this.fieldAccess = this.objectIndex = this.filterChain = function (
) {
this.throwError(
"is not valid json",
{
text: text,
index: 0,
}
);
}));
var value = json
? this.primary(
)
: this.statements(
);
return (
0 !== this.tokens.length &&
this.throwError(
"is an unexpected token",
this.tokens[0]
),
(value.literal = !!value.literal),
(value.constant = !!value.constant),
value
);
},
primary: function (
) {
var primary, next, context;
if (this.expect(
"("
)) (primary = this.filterChain(
)), this.consume(
")"
);
else if (this.expect(
"["
)) primary = this.arrayDeclaration(
);
else if (this.expect(
"{"
)) primary = this.object(
);
else {
var token = this.expect(
);
(primary = token.fn) ||
this.throwError(
"not a primary expression",
token
),
token.json && ((primary.constant = !0), (primary.literal = !0));
}
for (; (next = this.expect(
"(",
"[",
"."
)); )
"(" === next.text
? ((primary = this.functionCall(
primary,
context
)),
(context = null))
: "[" === next.text
? ((context = primary), (primary = this.objectIndex(
primary
)))
: "." === next.text
? ((context = primary), (primary = this.fieldAccess(
primary
)))
: this.throwError(
"IMPOSSIBLE"
);
return primary;
},
throwError: function (
msg, token
) {
throw $parseMinErr(
"syntax",
"Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",
token.text,
msg,
token.index + 1,
this.text,
this.text.substring(
token.index
),
);
},
peekToken: function (
) {
if (0 === this.tokens.length)
throw $parseMinErr(
"ueoe",
"Unexpected end of expression: {0}",
this.text,
);
return this.tokens[0];
},
peek: function (
e1, e2, e3, e4
) {
if (this.tokens.length > 0) {
var token = this.tokens[0],
t = token.text;
if (
t === e1 ||
t === e2 ||
t === e3 ||
t === e4 ||
(!e1 && !e2 && !e3 && !e4)
)
return token;
}
return !1;
},
expect: function (
e1, e2, e3, e4
) {
var token = this.peek(
e1,
e2,
e3,
e4
);
return (
!!token &&
(this.json &&
!token.json &&
this.throwError(
"is not valid json",
token
),
this.tokens.shift(
),
token)
);
},
consume: function (
e1
) {
this.expect(
e1
) ||
this.throwError(
"is unexpected, expecting [" + e1 + "]",
this.peek(
)
);
},
unaryFn: function (
fn, right
) {
return extend(
function (
self, locals
) {
return fn(
self,
locals,
right
);
},
{
constant: right.constant,
},
);
},
ternaryFn: function (
left, middle, right
) {
return extend(
function (
self, locals
) {
return left(
self,
locals
)
? middle(
self,
locals
)
: right(
self,
locals
);
},
{
constant: left.constant && middle.constant && right.constant,
},
);
},
binaryFn: function (
left, fn, right
) {
return extend(
function (
self, locals
) {
return fn(
self,
locals,
left,
right
);
},
{
constant: left.constant && right.constant,
},
);
},
statements: function (
) {
for (var statements = []; ; )
if (
(this.tokens.length > 0 &&
!this.peek(
"}",
")",
";",
"]"
) &&
statements.push(
this.filterChain(
)
),
!this.expect(
";"
))
)
return 1 === statements.length
? statements[0]
: function (
self, locals
) {
for (var value, i = 0; i < statements.length; i++) {
var statement = statements[i];
statement && (value = statement(
self,
locals
));
}
return value;
};
},
filterChain: function (
) {
for (var token, left = this.expression(
); ; ) {
if (!(token = this.expect(
"|"
))) return left;
left = this.binaryFn(
left,
token.fn,
this.filter(
)
);
}
},
filter: function (
) {
for (
var token = this.expect(
), fn = this.$filter(
token.text
), argsFn = [];
;
) {
if (!(token = this.expect(
":"
))) {
var fnInvoke = function (
self, locals, input
) {
for (var args = [input,], i = 0; i < argsFn.length; i++)
args.push(
argsFn[i](
self,
locals
)
);
return fn.apply(
self,
args
);
};
return function (
) {
return fnInvoke;
};
}
argsFn.push(
this.expression(
)
);
}
},
expression: function (
) {
return this.assignment(
);
},
assignment: function (
) {
var right,
token,
left = this.ternary(
);
return (token = this.expect(
"="
))
? (left.assign ||
this.throwError(
"implies assignment but [" +
this.text.substring(
0,
token.index
) +
"] can not be assigned to",
token,
),
(right = this.ternary(
)),
function (
scope, locals
) {
return left.assign(
scope,
right(
scope,
locals
),
locals
);
})
: left;
},
ternary: function (
) {
var middle,
token,
left = this.logicalOR(
);
return (token = this.expect(
"?"
))
? ((middle = this.ternary(
)),
(token = this.expect(
":"
))
? this.ternaryFn(
left,
middle,
this.ternary(
)
)
: void this.throwError(
"expected :",
token
))
: left;
},
logicalOR: function (
) {
for (var token, left = this.logicalAND(
); ; ) {
if (!(token = this.expect(
"||"
))) return left;
left = this.binaryFn(
left,
token.fn,
this.logicalAND(
)
);
}
},
logicalAND: function (
) {
var token,
left = this.equality(
);
return (
(token = this.expect(
"&&"
)) &&
(left = this.binaryFn(
left,
token.fn,
this.logicalAND(
)
)),
left
);
},
equality: function (
) {
var token,
left = this.relational(
);
return (
(token = this.expect(
"==",
"!=",
"===",
"!=="
)) &&
(left = this.binaryFn(
left,
token.fn,
this.equality(
)
)),
left
);
},
relational: function (
) {
var token,
left = this.additive(
);
return (
(token = this.expect(
"<",
">",
"<=",
">="
)) &&
(left = this.binaryFn(
left,
token.fn,
this.relational(
)
)),
left
);
},
additive: function (
) {
for (
var token, left = this.multiplicative(
);
(token = this.expect(
"+",
"-"
));
)
left = this.binaryFn(
left,
token.fn,
this.multiplicative(
)
);
return left;
},
multiplicative: function (
) {
for (
var token, left = this.unary(
);
(token = this.expect(
"*",
"/",
"%"
));
)
left = this.binaryFn(
left,
token.fn,
this.unary(
)
);
return left;
},
unary: function (
) {
var token;
return this.expect(
"+"
)
? this.primary(
)
: (token = this.expect(
"-"
))
? this.binaryFn(
Parser.ZERO,
token.fn,
this.unary(
)
)
: (token = this.expect(
"!"
))
? this.unaryFn(
token.fn,
this.unary(
)
)
: this.primary(
);
},
fieldAccess: function (
object
) {
var parser = this,
field = this.expect(
).text,
getter = getterFn(
field,
this.options,
this.text
);
return extend(
function (
scope, locals, self
) {
return getter(
self || object(
scope,
locals
),
locals
);
},
{
assign: function (
scope, value, locals
) {
return setter(
object(
scope,
locals
),
field,
value,
parser.text,
parser.options,
);
},
},
);
},
objectIndex: function (
obj
) {
var parser = this,
indexFn = this.expression(
);
return (
this.consume(
"]"
),
extend(
function (
self, locals
) {
var v,
p,
o = obj(
self,
locals
),
i = indexFn(
self,
locals
);
if (o)
return (
(v = ensureSafeObject(
o[i],
parser.text
)) &&
v.then &&
parser.options.unwrapPromises &&
((p = v),
"$$v" in v ||
((p.$$v = undefined),
p.then(
function (
val
) {
p.$$v = val;
}
)),
(v = v.$$v)),
v
);
},
{
assign: function (
self, value, locals
) {
var key = indexFn(
self,
locals
);
return (ensureSafeObject(
obj(
self,
locals
),
parser.text
)[
key
] = value);
},
},
)
);
},
functionCall: function (
fn, contextGetter
) {
var argsFn = [];
if (")" !== this.peekToken(
).text)
do {
argsFn.push(
this.expression(
)
);
} while (this.expect(
","
));
this.consume(
")"
);
var parser = this;
return function (
scope, locals
) {
for (
var args = [],
context = contextGetter
? contextGetter(
scope,
locals
)
: scope,
i = 0;
i < argsFn.length;
i++
)
args.push(
argsFn[i](
scope,
locals
)
);
var fnPtr = fn(
scope,
locals,
context
) || noop;
return (
ensureSafeObject(
context,
parser.text
),
ensureSafeObject(
fnPtr,
parser.text
),
ensureSafeObject(
fnPtr.apply
? fnPtr.apply(
context,
args
)
: fnPtr(
args[0],
args[1],
args[2],
args[3],
args[4]
),
parser.text,
)
);
};
},
arrayDeclaration: function (
) {
var elementFns = [],
allConstant = !0;
if ("]" !== this.peekToken(
).text)
do {
var elementFn = this.expression(
);
elementFns.push(
elementFn
),
elementFn.constant || (allConstant = !1);
} while (this.expect(
","
));
return (
this.consume(
"]"
),
extend(
function (
self, locals
) {
for (var array = [], i = 0; i < elementFns.length; i++)
array.push(
elementFns[i](
self,
locals
)
);
return array;
},
{
literal: !0,
constant: allConstant,
},
)
);
},
object: function (
) {
var keyValues = [],
allConstant = !0;
if ("}" !== this.peekToken(
).text)
do {
var token = this.expect(
),
key = token.string || token.text;
this.consume(
":"
);
var value = this.expression(
);
keyValues.push(
{
key: key,
value: value,
}
),
value.constant || (allConstant = !1);
} while (this.expect(
","
));
return (
this.consume(
"}"
),
extend(
function (
self, locals
) {
for (var object = {
}, i = 0; i < keyValues.length; i++) {
var keyValue = keyValues[i];
object[keyValue.key] = keyValue.value(
self,
locals
);
}
return object;
},
{
literal: !0,
constant: allConstant,
},
)
);
},
});
var getterFnCache = {
};
function cspSafeGetterFn(
key0, key1, key2, key3, key4, fullExp, options
) {
return (
ensureSafeMemberName(
key0,
fullExp
),
ensureSafeMemberName(
key1,
fullExp
),
ensureSafeMemberName(
key2,
fullExp
),
ensureSafeMemberName(
key3,
fullExp
),
ensureSafeMemberName(
key4,
fullExp
),
options.unwrapPromises
? function (
scope, locals
) {
var promise,
pathVal = locals && locals.hasOwnProperty(
key0
)
? locals
: scope;
return null == pathVal
? pathVal
: ((pathVal = pathVal[key0]) &&
pathVal.then &&
(promiseWarning(
fullExp
),
"$$v" in pathVal ||
(((promise = pathVal).$$v = undefined),
promise.then(
function (
val
) {
promise.$$v = val;
}
)),
(pathVal = pathVal.$$v)),
key1 && null != pathVal
? ((pathVal = pathVal[key1]) &&
pathVal.then &&
(promiseWarning(
fullExp
),
"$$v" in pathVal ||
(((promise = pathVal).$$v = undefined),
promise.then(
function (
val
) {
promise.$$v = val;
}
)),
(pathVal = pathVal.$$v)),
key2 && null != pathVal
? ((pathVal = pathVal[key2]) &&
pathVal.then &&
(promiseWarning(
fullExp
),
"$$v" in pathVal ||
(((promise = pathVal).$$v = undefined),
promise.then(
function (
val
) {
promise.$$v = val;
}
)),
(pathVal = pathVal.$$v)),
key3 && null != pathVal
? ((pathVal = pathVal[key3]) &&
pathVal.then &&
(promiseWarning(
fullExp
),
"$$v" in pathVal ||
(((promise = pathVal).$$v = undefined),
promise.then(
function (
val
) {
promise.$$v = val;
}
)),
(pathVal = pathVal.$$v)),
key4 && null != pathVal
? ((pathVal = pathVal[key4]) &&
pathVal.then &&
(promiseWarning(
fullExp
),
"$$v" in pathVal ||
(((promise = pathVal).$$v = undefined),
promise.then(
function (
val
) {
promise.$$v = val;
}
)),
(pathVal = pathVal.$$v)),
pathVal)
: pathVal)
: pathVal)
: pathVal)
: pathVal);
}
: function (
scope, locals
) {
var pathVal =
locals && locals.hasOwnProperty(
key0
)
? locals
: scope;
return null == pathVal
? pathVal
: ((pathVal = pathVal[key0]),
key1 && null != pathVal
? ((pathVal = pathVal[key1]),
key2 && null != pathVal
? ((pathVal = pathVal[key2]),
key3 && null != pathVal
? ((pathVal = pathVal[key3]),
key4 && null != pathVal
? (pathVal = pathVal[key4])
: pathVal)
: pathVal)
: pathVal)
: pathVal);
}
);
}
function getterFn(
path, options, fullExp
) {
if (getterFnCache.hasOwnProperty(
path
)) return getterFnCache[path];
var fn,
pathKeys = path.split(
"."
),
pathKeysLength = pathKeys.length;
if (options.csp)
fn =
pathKeysLength < 6
? cspSafeGetterFn(
pathKeys[0],
pathKeys[1],
pathKeys[2],
pathKeys[3],
pathKeys[4],
fullExp,
options,
)
: function (
scope, locals
) {
var val,
i = 0;
do {
(val = cspSafeGetterFn(
pathKeys[i++],
pathKeys[i++],
pathKeys[i++],
pathKeys[i++],
pathKeys[i++],
fullExp,
options,
)(
scope,
locals
)),
(locals = undefined),
(scope = val);
} while (i < pathKeysLength);
return val;
};
else {
var code = "var l, fn, p;\n";
forEach(
pathKeys,
function (
key, index
) {
ensureSafeMemberName(
key,
fullExp
),
(code +=
"if(s === null || s === undefined) return s;\nl=s;\ns=" +
(index ? "s" : '((k&&k.hasOwnProperty("' + key + '"))?k:s)') +
'["' +
key +
'"];\n' +
(options.unwrapPromises
? 'if (s && s.then) {\n pw("' +
fullExp.replace(
/(["\r\n])/g,
"\\$1"
) +
'");\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v=v;});\n}\n s=s.$$v\n}\n'
: ""));
}
),
(code += "return s;");
var evaledFnGetter = new Function(
"s",
"k",
"pw",
code
);
(evaledFnGetter.toString = function (
) {
return code;
}),
(fn = function (
scope, locals
) {
return evaledFnGetter(
scope,
locals,
promiseWarning
);
});
}
return "hasOwnProperty" !== path && (getterFnCache[path] = fn), fn;
}
function $ParseProvider(
) {
var cache = {
},
$parseOptions = {
csp: !1,
unwrapPromises: !1,
logPromiseWarnings: !0,
};
(this.unwrapPromises = function (
value
) {
return isDefined(
value
)
? (($parseOptions.unwrapPromises = !!value), this)
: $parseOptions.unwrapPromises;
}),
(this.logPromiseWarnings = function (
value
) {
return isDefined(
value
)
? (($parseOptions.logPromiseWarnings = value), this)
: $parseOptions.logPromiseWarnings;
}),
(this.$get = [
"$filter",
"$sniffer",
"$log",
function (
$filter, $sniffer, $log
) {
return (
($parseOptions.csp = $sniffer.csp),
(promiseWarning = function (
fullExp
) {
$parseOptions.logPromiseWarnings &&
!promiseWarningCache.hasOwnProperty(
fullExp
) &&
((promiseWarningCache[fullExp] = !0),
$log.warn(
"[$parse] Promise found in the expression `" +
fullExp +
"`. Automatic unwrapping of promises in Angular expressions is deprecated.",
));
}),
function (
exp
) {
var parsedExpression;
switch (typeof exp) {
case "string":
if (cache.hasOwnProperty(
exp
)) return cache[exp];
var lexer = new Lexer(
$parseOptions
);
return (
(parsedExpression = new Parser(
lexer,
$filter,
$parseOptions,
).parse(
exp,
!1
)),
"hasOwnProperty" !== exp && (cache[exp] = parsedExpression),
parsedExpression
);
case "function":
return exp;
default:
return noop;
}
}
);
},
]);
}
function $QProvider(
) {
this.$get = [
"$rootScope",
"$exceptionHandler",
function (
$rootScope, $exceptionHandler
) {
return (function (
nextTick, exceptionHandler
) {
var defer = function (
) {
var value,
deferred,
pending = [];
return (deferred = {
resolve: function (
val
) {
if (pending) {
var callbacks = pending;
(pending = undefined),
(value = ref(
val
)),
callbacks.length &&
nextTick(
function (
) {
for (
var callback, i = 0, ii = callbacks.length;
i < ii;
i++
)
(callback = callbacks[i]),
value.then(
callback[0],
callback[1],
callback[2]
);
}
);
}
},
reject: function (
reason
) {
deferred.resolve(
reject(
reason
)
);
},
notify: function (
progress
) {
if (pending) {
var callbacks = pending;
pending.length &&
nextTick(
function (
) {
for (var i = 0, ii = callbacks.length; i < ii; i++)
callbacks[i][2](
progress
);
}
);
}
},
promise: {
then: function (
callback, errback, progressback
) {
var result = defer(
),
wrappedCallback = function (
value
) {
try {
result.resolve(
(isFunction(
callback
)
? callback
: defaultCallback)(
value,
),
);
} catch (e) {
result.reject(
e
), exceptionHandler(
e
);
}
},
wrappedErrback = function (
reason
) {
try {
result.resolve(
(isFunction(
errback
)
? errback
: defaultErrback)(
reason,
),
);
} catch (e) {
result.reject(
e
), exceptionHandler(
e
);
}
},
wrappedProgressback = function (
progress
) {
try {
result.notify(
(isFunction(
progressback
)
? progressback
: defaultCallback)(
progress
),
);
} catch (e) {
exceptionHandler(
e
);
}
};
return (
pending
? pending.push(
[
wrappedCallback,
wrappedErrback,
wrappedProgressback,
]
)
: value.then(
wrappedCallback,
wrappedErrback,
wrappedProgressback,
),
result.promise
);
},
catch: function (
callback
) {
return this.then(
null,
callback
);
},
finally: function (
callback
) {
function makePromise(
value, resolved
) {
var result = defer(
);
return (
resolved
? result.resolve(
value
)
: result.reject(
value
),
result.promise
);
}
function handleCallback(
value, isResolved
) {
var callbackOutput = null;
try {
callbackOutput = (callback || defaultCallback)(
);
} catch (e) {
return makePromise(
e,
!1
);
}
return callbackOutput && isFunction(
callbackOutput.then
)
? callbackOutput.then(
function (
) {
return makePromise(
value,
isResolved
);
},
function (
error
) {
return makePromise(
error,
!1
);
},
)
: makePromise(
value,
isResolved
);
}
return this.then(
function (
value
) {
return handleCallback(
value,
!0
);
},
function (
error
) {
return handleCallback(
error,
!1
);
},
);
},
},
});
},
ref = function (
value
) {
return value && isFunction(
value.then
)
? value
: {
then: function (
callback
) {
var result = defer(
);
return (
nextTick(
function (
) {
result.resolve(
callback(
value
)
);
}
),
result.promise
);
},
};
},
reject = function (
reason
) {
return {
then: function (
callback, errback
) {
var result = defer(
);
return (
nextTick(
function (
) {
try {
result.resolve(
(isFunction(
errback
)
? errback
: defaultErrback)(
reason,
),
);
} catch (e) {
result.reject(
e
), exceptionHandler(
e
);
}
}
),
result.promise
);
},
};
},
when = function (
value, callback, errback, progressback
) {
var done,
result = defer(
),
wrappedCallback = function (
value
) {
try {
return (isFunction(
callback
)
? callback
: defaultCallback)(
value,
);
} catch (e) {
return exceptionHandler(
e
), reject(
e
);
}
},
wrappedErrback = function (
reason
) {
try {
return (isFunction(
errback
)
? errback
: defaultErrback)(
reason,
);
} catch (e) {
return exceptionHandler(
e
), reject(
e
);
}
},
wrappedProgressback = function (
progress
) {
try {
return (isFunction(
progressback
)
? progressback
: defaultCallback)(
progress
);
} catch (e) {
exceptionHandler(
e
);
}
};
return (
nextTick(
function (
) {
ref(
value
).then(
function (
value
) {
done ||
((done = !0),
result.resolve(
ref(
value
).then(
wrappedCallback,
wrappedErrback,
wrappedProgressback,
),
));
},
function (
reason
) {
done ||
((done = !0), result.resolve(
wrappedErrback(
reason
)
));
},
function (
progress
) {
done || result.notify(
wrappedProgressback(
progress
)
);
},
);
}
),
result.promise
);
};
function defaultCallback(
value
) {
return value;
}
function defaultErrback(
reason
) {
return reject(
reason
);
}
function all(
promises
) {
var deferred = defer(
),
counter = 0,
results = isArray(
promises
)
? []
: {
};
return (
forEach(
promises,
function (
promise, key
) {
counter++,
ref(
promise
).then(
function (
value
) {
results.hasOwnProperty(
key
) ||
((results[key] = value),
--counter || deferred.resolve(
results
));
},
function (
reason
) {
results.hasOwnProperty(
key
) || deferred.reject(
reason
);
},
);
}
),
0 === counter && deferred.resolve(
results
),
deferred.promise
);
}
return {
defer: defer,
reject: reject,
when: when,
all: all,
};
})(
function (
callback
) {
$rootScope.$evalAsync(
callback
);
},
$exceptionHandler
);
},
];
}
function $RootScopeProvider(
) {
var TTL = 10,
$rootScopeMinErr = minErr(
"$rootScope"
),
lastDirtyWatch = null;
(this.digestTtl = function (
value
) {
return arguments.length && (TTL = value), TTL;
}),
(this.$get = [
"$injector",
"$exceptionHandler",
"$parse",
"$browser",
function (
$injector, $exceptionHandler, $parse, $browser
) {
function Scope(
) {
(this.$id = nextUid(
)),
(this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null),
(this.this = this.$root = this),
(this.$$destroyed = !1),
(this.$$asyncQueue = []),
(this.$$postDigestQueue = []),
(this.$$listeners = {
}),
(this.$$isolateBindings = {
});
}
Scope.prototype = {
constructor: Scope,
$new: function (
isolate
) {
var ChildScope, child;
return (
isolate
? (((child = new Scope(
)).$root = this.$root),
(child.$$asyncQueue = this.$$asyncQueue),
(child.$$postDigestQueue = this.$$postDigestQueue))
: (((ChildScope = function (
) {}).prototype = this),
((child = new ChildScope(
)).$id = nextUid(
))),
(child.this = child),
(child.$$listeners = {
}),
(child.$parent = this),
(child.$$watchers = child.$$nextSibling = child.$$childHead = child.$$childTail = null),
(child.$$prevSibling = this.$$childTail),
this.$$childHead
? ((this.$$childTail.$$nextSibling = child),
(this.$$childTail = child))
: (this.$$childHead = this.$$childTail = child),
child
);
},
$watch: function (
watchExp, listener, objectEquality
) {
var get = compileToFn(
watchExp,
"watch"
),
array = this.$$watchers,
watcher = {
fn: listener,
last: initWatchVal,
get: get,
exp: watchExp,
eq: !!objectEquality,
};
if (((lastDirtyWatch = null), !isFunction(
listener
))) {
var listenFn = compileToFn(
listener || noop,
"listener"
);
watcher.fn = function (
newVal, oldVal, scope
) {
listenFn(
scope
);
};
}
if ("string" == typeof watchExp && get.constant) {
var originalFn = watcher.fn;
watcher.fn = function (
newVal, oldVal, scope
) {
originalFn.call(
this,
newVal,
oldVal,
scope
),
arrayRemove(
array,
watcher
);
};
}
return (
array || (array = this.$$watchers = []),
array.unshift(
watcher
),
function (
) {
arrayRemove(
array,
watcher
);
}
);
},
$watchCollection: function (
obj, listener
) {
var oldValue,
newValue,
self = this,
changeDetected = 0,
objGetter = $parse(
obj
),
internalArray = [],
internalObject = {
},
oldLength = 0;
return this.$watch(
function (
) {
var newLength, key;
if (isObject(
(newValue = objGetter(
self
))
))
if (isArrayLike(
newValue
)) {
oldValue !== internalArray &&
((oldLength = (oldValue = internalArray).length = 0),
changeDetected++),
(newLength = newValue.length),
oldLength !== newLength &&
(changeDetected++,
(oldValue.length = oldLength = newLength));
for (var i = 0; i < newLength; i++)
oldValue[i] !== newValue[i] &&
(changeDetected++, (oldValue[i] = newValue[i]));
} else {
for (key in (oldValue !== internalObject &&
((oldValue = internalObject = {
}),
(oldLength = 0),
changeDetected++),
(newLength = 0),
newValue))
newValue.hasOwnProperty(
key
) &&
(newLength++,
oldValue.hasOwnProperty(
key
)
? oldValue[key] !== newValue[key] &&
(changeDetected++,
(oldValue[key] = newValue[key]))
: (oldLength++,
(oldValue[key] = newValue[key]),
changeDetected++));
if (oldLength > newLength)
for (key in (changeDetected++, oldValue))
oldValue.hasOwnProperty(
key
) &&
!newValue.hasOwnProperty(
key
) &&
(oldLength--, delete oldValue[key]);
}
else
oldValue !== newValue &&
((oldValue = newValue), changeDetected++);
return changeDetected;
},
function (
) {
listener(
newValue,
oldValue,
self
);
},
);
},
$digest: function (
) {
var watch,
value,
last,
watchers,
length,
dirty,
next,
current,
logIdx,
logMsg,
asyncTask,
asyncQueue = this.$$asyncQueue,
postDigestQueue = this.$$postDigestQueue,
ttl = TTL,
watchLog = [];
beginPhase(
"$digest"
), (lastDirtyWatch = null);
do {
for (dirty = !1, current = this; asyncQueue.length; ) {
try {
(asyncTask = asyncQueue.shift(
)).scope.$eval(
asyncTask.expression,
);
} catch (e) {
clearPhase(
), $exceptionHandler(
e
);
}
lastDirtyWatch = null;
}
traverseScopesLoop: do {
if ((watchers = current.$$watchers))
for (length = watchers.length; length--; )
try {
if ((watch = watchers[length]))
if (
(value = watch.get(
current
)) ===
(last = watch.last) ||
(watch.eq
? equals(
value,
last
)
: "number" == typeof value &&
"number" == typeof last &&
isNaN(
value
) &&
isNaN(
last
))
) {
if (watch === lastDirtyWatch) {
dirty = !1;
break traverseScopesLoop;
}
} else
(dirty = !0),
(lastDirtyWatch = watch),
(watch.last = watch.eq
? copy(
value
)
: value),
watch.fn(
value,
last === initWatchVal ? value : last,
current,
),
ttl < 5 &&
(watchLog[(logIdx = 4 - ttl)] ||
(watchLog[logIdx] = []),
(logMsg = isFunction(
watch.exp
)
? "fn: " +
(watch.exp.name || watch.exp.toString(
))
: watch.exp),
(logMsg +=
"; newVal: " +
toJson(
value
) +
"; oldVal: " +
toJson(
last
)),
watchLog[logIdx].push(
logMsg
));
} catch (e) {
clearPhase(
), $exceptionHandler(
e
);
}
if (
!(next =
current.$$childHead ||
(current !== this && current.$$nextSibling))
)
for (
;
current !== this && !(next = current.$$nextSibling);
)
current = current.$parent;
} while ((current = next));
if (dirty && !ttl--)
throw (
(clearPhase(
),
$rootScopeMinErr(
"infdig",
"{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",
TTL,
toJson(
watchLog
),
))
);
} while (dirty || asyncQueue.length);
for (clearPhase(
); postDigestQueue.length; )
try {
postDigestQueue.shift(
)(
);
} catch (e) {
$exceptionHandler(
e
);
}
},
$destroy: function (
) {
if (!this.$$destroyed) {
var parent = this.$parent;
this.$broadcast(
"$destroy"
),
(this.$$destroyed = !0),
this !== $rootScope &&
(parent.$$childHead == this &&
(parent.$$childHead = this.$$nextSibling),
parent.$$childTail == this &&
(parent.$$childTail = this.$$prevSibling),
this.$$prevSibling &&
(this.$$prevSibling.$$nextSibling = this.$$nextSibling),
this.$$nextSibling &&
(this.$$nextSibling.$$prevSibling = this.$$prevSibling),
(this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null));
}
},
$eval: function (
expr, locals
) {
return $parse(
expr
)(
this,
locals
);
},
$evalAsync: function (
expr
) {
$rootScope.$$phase ||
$rootScope.$$asyncQueue.length ||
$browser.defer(
function (
) {
$rootScope.$$asyncQueue.length && $rootScope.$digest(
);
}
),
this.$$asyncQueue.push(
{
scope: this,
expression: expr,
}
);
},
$$postDigest: function (
fn
) {
this.$$postDigestQueue.push(
fn
);
},
$apply: function (
expr
) {
try {
return beginPhase(
"$apply"
), this.$eval(
expr
);
} catch (e) {
$exceptionHandler(
e
);
} finally {
clearPhase(
);
try {
$rootScope.$digest(
);
} catch (e) {
throw ($exceptionHandler(
e
), e);
}
}
},
$on: function (
name, listener
) {
var namedListeners = this.$$listeners[name];
return (
namedListeners ||
(this.$$listeners[name] = namedListeners = []),
namedListeners.push(
listener
),
function (
) {
namedListeners[indexOf(
namedListeners,
listener
)] = null;
}
);
},
$emit: function (
name, args
) {
var namedListeners,
i,
length,
empty = [],
scope = this,
stopPropagation = !1,
event = {
name: name,
targetScope: scope,
stopPropagation: function (
) {
stopPropagation = !0;
},
preventDefault: function (
) {
event.defaultPrevented = !0;
},
defaultPrevented: !1,
},
listenerArgs = concat(
[event,],
arguments,
1
);
do {
for (
namedListeners = scope.$$listeners[name] || empty,
event.currentScope = scope,
i = 0,
length = namedListeners.length;
i < length;
i++
)
if (namedListeners[i])
try {
namedListeners[i].apply(
null,
listenerArgs
);
} catch (e) {
$exceptionHandler(
e
);
}
else namedListeners.splice(
i,
1
), i--, length--;
if (stopPropagation) return event;
scope = scope.$parent;
} while (scope);
return event;
},
$broadcast: function (
name, args
) {
var listeners,
i,
length,
target = this,
current = target,
next = target,
event = {
name: name,
targetScope: target,
preventDefault: function (
) {
event.defaultPrevented = !0;
},
defaultPrevented: !1,
},
listenerArgs = concat(
[event,],
arguments,
1
);
do {
for (
current = next,
event.currentScope = current,
i = 0,
length = (listeners = current.$$listeners[name] || [])
.length;
i < length;
i++
)
if (listeners[i])
try {
listeners[i].apply(
null,
listenerArgs
);
} catch (e) {
$exceptionHandler(
e
);
}
else listeners.splice(
i,
1
), i--, length--;
if (
!(next =
current.$$childHead ||
(current !== target && current.$$nextSibling))
)
for (
;
current !== target && !(next = current.$$nextSibling);
)
current = current.$parent;
} while ((current = next));
return event;
},
};
var $rootScope = new Scope(
);
return $rootScope;
function beginPhase(
phase
) {
if ($rootScope.$$phase)
throw $rootScopeMinErr(
"inprog",
"{0} already in progress",
$rootScope.$$phase,
);
$rootScope.$$phase = phase;
}
function clearPhase(
) {
$rootScope.$$phase = null;
}
function compileToFn(
exp, name
) {
var fn = $parse(
exp
);
return assertArgFn(
fn,
name
), fn;
}
function initWatchVal(
) {}
},
]);
}
function $$SanitizeUriProvider(
) {
var aHrefSanitizationWhitelist = /^\s*(https?|ftp|mailto|tel|file):/,
imgSrcSanitizationWhitelist = /^\s*(https?|ftp|file):|data:image\//;
(this.aHrefSanitizationWhitelist = function (
regexp
) {
return isDefined(
regexp
)
? ((aHrefSanitizationWhitelist = regexp), this)
: aHrefSanitizationWhitelist;
}),
(this.imgSrcSanitizationWhitelist = function (
regexp
) {
return isDefined(
regexp
)
? ((imgSrcSanitizationWhitelist = regexp), this)
: imgSrcSanitizationWhitelist;
}),
(this.$get = function (
) {
return function (
uri, isImage
) {
var normalizedVal,
regex = isImage
? imgSrcSanitizationWhitelist
: aHrefSanitizationWhitelist;
return (msie && !(msie >= 8)) ||
"" === (normalizedVal = urlResolve(
uri
).href) ||
normalizedVal.match(
regex
)
? uri
: "unsafe:" + normalizedVal;
};
});
}
var $sceMinErr = minErr(
"$sce"
),
SCE_CONTEXTS = {
HTML: "html",
CSS: "css",
URL: "url",
RESOURCE_URL: "resourceUrl",
JS: "js",
};
function adjustMatchers(
matchers
) {
var adjustedMatchers = [];
return (
isDefined(
matchers
) &&
forEach(
matchers,
function (
matcher
) {
adjustedMatchers.push(
(function (
matcher
) {
if ("self" === matcher) return matcher;
if (isString(
matcher
)) {
if (matcher.indexOf(
"***"
) > -1)
throw $sceMinErr(
"iwcard",
"Illegal sequence *** in string matcher. String: {0}",
matcher,
);
return (
(matcher = ((s = matcher),
s
.replace(
/([-()\[\]{}+?*.$\^|,:# to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.",
);
var sce = copy(
SCE_CONTEXTS
);
(sce.isEnabled = function (
) {
return enabled;
}),
(sce.trustAs = $sceDelegate.trustAs),
(sce.getTrusted = $sceDelegate.getTrusted),
(sce.valueOf = $sceDelegate.valueOf),
enabled ||
((sce.trustAs = sce.getTrusted = function (
type, value
) {
return value;
}),
(sce.valueOf = identity)),
(sce.parseAs = function (
type, expr
) {
var parsed = $parse(
expr
);
return parsed.literal && parsed.constant
? parsed
: function (
self, locals
) {
return sce.getTrusted(
type,
parsed(
self,
locals
)
);
};
});
var parse = sce.parseAs,
getTrusted = sce.getTrusted,
trustAs = sce.trustAs;
return (
forEach(
SCE_CONTEXTS,
function (
enumValue, name
) {
var lName = lowercase(
name
);
(sce[camelCase(
"parse_as_" + lName
)] = function (
expr
) {
return parse(
enumValue,
expr
);
}),
(sce[camelCase(
"get_trusted_" + lName
)] = function (
value
) {
return getTrusted(
enumValue,
value
);
}),
(sce[camelCase(
"trust_as_" + lName
)] = function (
value
) {
return trustAs(
enumValue,
value
);
});
}
),
sce
);
},
]);
}
function $SnifferProvider(
) {
this.$get = [
"$window",
"$document",
function (
$window, $document
) {
var vendorPrefix,
match,
eventSupport = {
},
android = int(
(/android (\d+)/.exec(
lowercase(
($window.navigator || {
}).userAgent
),
) || [])[1],
),
boxee = /Boxee/i.test(
($window.navigator || {
}).userAgent
),
document = $document[0] || {
},
documentMode = document.documentMode,
vendorRegex = /^(Moz|webkit|O|ms)(?=[A-Z])/,
bodyStyle = document.body && document.body.style,
transitions = !1,
animations = !1;
if (bodyStyle) {
for (var prop in bodyStyle)
if ((match = vendorRegex.exec(
prop
))) {
vendorPrefix =
(vendorPrefix = match[0]).substr(
0,
1
).toUpperCase(
) +
vendorPrefix.substr(
1
);
break;
}
vendorPrefix ||
(vendorPrefix = "WebkitOpacity" in bodyStyle && "webkit"),
(transitions = !(
!("transition" in bodyStyle) &&
!(vendorPrefix + "Transition" in bodyStyle)
)),
(animations = !(
!("animation" in bodyStyle) &&
!(vendorPrefix + "Animation" in bodyStyle)
)),
!android ||
(transitions && animations) ||
((transitions = isString(
document.body.style.webkitTransition
)),
(animations = isString(
document.body.style.webkitAnimation
)));
}
return {
history: !(
!$window.history ||
!$window.history.pushState ||
android < 4 ||
boxee
),
hashchange:
"onhashchange" in $window && (!documentMode || documentMode > 7),
hasEvent: function (
event
) {
if ("input" == event && 9 == msie) return !1;
if (isUndefined(
eventSupport[event]
)) {
var divElm = document.createElement(
"div"
);
eventSupport[event] = "on" + event in divElm;
}
return eventSupport[event];
},
csp: csp(
),
vendorPrefix: vendorPrefix,
transitions: transitions,
animations: animations,
msie: msie,
msieDocumentMode: documentMode,
};
},
];
}
function $TimeoutProvider(
) {
this.$get = [
"$rootScope",
"$browser",
"$q",
"$exceptionHandler",
function (
$rootScope, $browser, $q, $exceptionHandler
) {
var deferreds = {
};
function timeout(
fn, delay, invokeApply
) {
var timeoutId,
deferred = $q.defer(
),
promise = deferred.promise,
skipApply = isDefined(
invokeApply
) && !invokeApply;
return (
(timeoutId = $browser.defer(
function (
) {
try {
deferred.resolve(
fn(
)
);
} catch (e) {
deferred.reject(
e
), $exceptionHandler(
e
);
} finally {
delete deferreds[promise.$$timeoutId];
}
skipApply || $rootScope.$apply(
);
},
delay
)),
(promise.$$timeoutId = timeoutId),
(deferreds[timeoutId] = deferred),
promise
);
}
return (
(timeout.cancel = function (
promise
) {
return (
!(!promise || !(promise.$$timeoutId in deferreds)) &&
(deferreds[promise.$$timeoutId].reject(
"canceled"
),
delete deferreds[promise.$$timeoutId],
$browser.defer.cancel(
promise.$$timeoutId
))
);
}),
timeout
);
},
];
}
var urlParsingNode = document.createElement(
"a"
),
originUrl = urlResolve(
window.location.href,
!0
);
function urlResolve(
url, base
) {
var href = url;
return (
msie &&
(urlParsingNode.setAttribute(
"href",
href
),
(href = urlParsingNode.href)),
urlParsingNode.setAttribute(
"href",
href
),
{
href: urlParsingNode.href,
protocol: urlParsingNode.protocol
? urlParsingNode.protocol.replace(
/:$/,
""
)
: "",
host: urlParsingNode.host,
search: urlParsingNode.search
? urlParsingNode.search.replace(
/^\?/,
""
)
: "",
hash: urlParsingNode.hash
? urlParsingNode.hash.replace(
/^#/,
""
)
: "",
hostname: urlParsingNode.hostname,
port: urlParsingNode.port,
pathname:
"/" === urlParsingNode.pathname.charAt(
0
)
? urlParsingNode.pathname
: "/" + urlParsingNode.pathname,
}
);
}
function urlIsSameOrigin(
requestUrl
) {
var parsed = isString(
requestUrl
)
? urlResolve(
requestUrl
)
: requestUrl;
return (
parsed.protocol === originUrl.protocol && parsed.host === originUrl.host
);
}
function $WindowProvider(
) {
this.$get = valueFn(
window
);
}
function $FilterProvider(
$provide
) {
function register(
name, factory
) {
if (isObject(
name
)) {
var filters = {
};
return (
forEach(
name,
function (
filter, key
) {
filters[key] = register(
key,
filter
);
}
),
filters
);
}
return $provide.factory(
name + "Filter",
factory
);
}
(this.register = register),
(this.$get = [
"$injector",
function (
$injector
) {
return function (
name
) {
return $injector.get(
name + "Filter"
);
};
},
]),
register(
"currency",
currencyFilter
),
register(
"date",
dateFilter
),
register(
"filter",
filterFilter
),
register(
"json",
jsonFilter
),
register(
"limitTo",
limitToFilter
),
register(
"lowercase",
lowercaseFilter
),
register(
"number",
numberFilter
),
register(
"orderBy",
orderByFilter
),
register(
"uppercase",
uppercaseFilter
);
}
function filterFilter(
) {
return function (
array, expression, comparator
) {
if (!isArray(
array
)) return array;
var comparatorType = typeof comparator,
predicates = [];
(predicates.check = function (
value
) {
for (var j = 0; j < predicates.length; j++)
if (!predicates[j](
value
)) return !1;
return !0;
}),
"function" !== comparatorType &&
(comparator =
"boolean" === comparatorType && comparator
? function (
obj, text
) {
return angular.equals(
obj,
text
);
}
: function (
obj, text
) {
return (
(text = ("" + text).toLowerCase(
)),
("" + obj).toLowerCase(
).indexOf(
text
) > -1
);
});
var search = function (
obj, text
) {
if ("string" == typeof text && "!" === text.charAt(
0
))
return !search(
obj,
text.substr(
1
)
);
switch (typeof obj) {
case "boolean":
case "number":
case "string":
return comparator(
obj,
text
);
case "object":
switch (typeof text) {
case "object":
return comparator(
obj,
text
);
default:
for (var objKey in obj)
if ("$" !== objKey.charAt(
0
) && search(
obj[objKey],
text
))
return !0;
}
return !1;
case "array":
for (var i = 0; i < obj.length; i++)
if (search(
obj[i],
text
)) return !0;
return !1;
default:
return !1;
}
};
switch (typeof expression) {
case "boolean":
case "number":
case "string":
expression = {
$: expression,
};
case "object":
for (var key in expression)
"$" == key
? (function (
) {
if (expression[key]) {
var path = key;
predicates.push(
function (
value
) {
return search(
value,
expression[path]
);
}
);
}
})(
)
: (function (
) {
if (void 0 !== expression[key]) {
var path = key;
predicates.push(
function (
value
) {
return search(
getter(
value,
path
),
expression[path]
);
}
);
}
})(
);
break;
case "function":
predicates.push(
expression
);
break;
default:
return array;
}
for (var filtered = [], j = 0; j < array.length; j++) {
var value = array[j];
predicates.check(
value
) && filtered.push(
value
);
}
return filtered;
};
}
function currencyFilter(
$locale
) {
var formats = $locale.NUMBER_FORMATS;
return function (
amount, currencySymbol
) {
return (
isUndefined(
currencySymbol
) && (currencySymbol = formats.CURRENCY_SYM),
formatNumber(
amount,
formats.PATTERNS[1],
formats.GROUP_SEP,
formats.DECIMAL_SEP,
2,
).replace(
/\u00A4/g,
currencySymbol
)
);
};
}
function numberFilter(
$locale
) {
var formats = $locale.NUMBER_FORMATS;
return function (
number, fractionSize
) {
return formatNumber(
number,
formats.PATTERNS[0],
formats.GROUP_SEP,
formats.DECIMAL_SEP,
fractionSize,
);
};
}
($FilterProvider.$inject = ["$provide",]),
(currencyFilter.$inject = ["$locale",]),
(numberFilter.$inject = ["$locale",]);
function formatNumber(
number, pattern, groupSep, decimalSep, fractionSize
) {
if (isNaN(
number
) || !isFinite(
number
)) return "";
var isNegative = number < 0,
numStr = (number = Math.abs(
number
)) + "",
formatedText = "",
parts = [],
hasExponent = !1;
if (-1 !== numStr.indexOf(
"e"
)) {
var match = numStr.match(
/([\d\.]+)e(-?)(\d+)/
);
match && "-" == match[2] && match[3] > fractionSize + 1
? (numStr = "0")
: ((formatedText = numStr), (hasExponent = !0));
}
if (hasExponent)
fractionSize > 0 &&
number > -1 &&
number < 1 &&
(formatedText = number.toFixed(
fractionSize
));
else {
var fractionLen = (numStr.split(
"."
)[1] || "").length;
isUndefined(
fractionSize
) &&
(fractionSize = Math.min(
Math.max(
pattern.minFrac,
fractionLen
),
pattern.maxFrac,
));
var pow = Math.pow(
10,
fractionSize
),
fraction = ("" + (number = Math.round(
number * pow
) / pow)).split(
"."
),
whole = fraction[0];
fraction = fraction[1] || "";
var i,
pos = 0,
lgroup = pattern.lgSize,
group = pattern.gSize;
if (whole.length >= lgroup + group)
for (pos = whole.length - lgroup, i = 0; i < pos; i++)
(pos - i) % group == 0 && 0 !== i && (formatedText += groupSep),
(formatedText += whole.charAt(
i
));
for (i = pos; i < whole.length; i++)
(whole.length - i) % lgroup == 0 &&
0 !== i &&
(formatedText += groupSep),
(formatedText += whole.charAt(
i
));
for (; fraction.length < fractionSize; ) fraction += "0";
fractionSize &&
"0" !== fractionSize &&
(formatedText += decimalSep + fraction.substr(
0,
fractionSize
));
}
return (
parts.push(
isNegative ? pattern.negPre : pattern.posPre
),
parts.push(
formatedText
),
parts.push(
isNegative ? pattern.negSuf : pattern.posSuf
),
parts.join(
""
)
);
}
function padNumber(
num, digits, trim
) {
var neg = "";
for (
num < 0 && ((neg = "-"), (num = -num)), num = "" + num;
num.length < digits;
)
num = "0" + num;
return trim && (num = num.substr(
num.length - digits
)), neg + num;
}
function dateGetter(
name, size, offset, trim
) {
return (
(offset = offset || 0),
function (
date
) {
var value = date["get" + name](
);
return (
(offset > 0 || value > -offset) && (value += offset),
0 === value && -12 == offset && (value = 12),
padNumber(
value,
size,
trim
)
);
}
);
}
function dateStrGetter(
name, shortForm
) {
return function (
date, formats
) {
var value = date["get" + name](
);
return formats[uppercase(
shortForm ? "SHORT" + name : name
)][value];
};
}
var DATE_FORMATS = {
yyyy: dateGetter(
"FullYear",
4
),
yy: dateGetter(
"FullYear",
2,
0,
!0
),
y: dateGetter(
"FullYear",
1
),
MMMM: dateStrGetter(
"Month"
),
MMM: dateStrGetter(
"Month",
!0
),
MM: dateGetter(
"Month",
2,
1
),
M: dateGetter(
"Month",
1,
1
),
dd: dateGetter(
"Date",
2
),
d: dateGetter(
"Date",
1
),
HH: dateGetter(
"Hours",
2
),
H: dateGetter(
"Hours",
1
),
hh: dateGetter(
"Hours",
2,
-12
),
h: dateGetter(
"Hours",
1,
-12
),
mm: dateGetter(
"Minutes",
2
),
m: dateGetter(
"Minutes",
1
),
ss: dateGetter(
"Seconds",
2
),
s: dateGetter(
"Seconds",
1
),
sss: dateGetter(
"Milliseconds",
3
),
EEEE: dateStrGetter(
"Day"
),
EEE: dateStrGetter(
"Day",
!0
),
a: function (
date, formats
) {
return date.getHours(
) < 12
? formats.AMPMS[0]
: formats.AMPMS[1];
},
Z: function (
date
) {
var zone = -1 * date.getTimezoneOffset(
),
paddedZone = zone >= 0 ? "+" : "";
return (paddedZone +=
padNumber(
Math[zone > 0 ? "floor" : "ceil"](
zone / 60
),
2
) +
padNumber(
Math.abs(
zone % 60
),
2
));
},
},
DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,
NUMBER_STRING = /^\-?\d+$/;
function dateFilter(
$locale
) {
var R_ISO8601_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
return function (
date, format
) {
var fn,
match,
text = "",
parts = [];
if (
((format = format || "mediumDate"),
(format = $locale.DATETIME_FORMATS[format] || format),
isString(
date
) &&
(date = NUMBER_STRING.test(
date
)
? int(
date
)
: (function (
string
) {
var match;
if ((match = string.match(
R_ISO8601_STR
))) {
var date = new Date(
0
),
tzHour = 0,
tzMin = 0,
dateSetter = match[8]
? date.setUTCFullYear
: date.setFullYear,
timeSetter = match[8] ? date.setUTCHours : date.setHours;
match[9] &&
((tzHour = int(
match[9] + match[10]
)),
(tzMin = int(
match[9] + match[11]
))),
dateSetter.call(
date,
int(
match[1]
),
int(
match[2]
) - 1,
int(
match[3]
),
);
var h = int(
match[4] || 0
) - tzHour,
m = int(
match[5] || 0
) - tzMin,
s = int(
match[6] || 0
),
ms = Math.round(
1e3 * parseFloat(
"0." + (match[7] || 0)
)
);
return timeSetter.call(
date,
h,
m,
s,
ms
), date;
}
return string;
})(
date
)),
isNumber(
date
) && (date = new Date(
date
)),
!isDate(
date
))
)
return date;
for (; format; )
(match = DATE_FORMATS_SPLIT.exec(
format
))
? (format = (parts = concat(
parts,
match,
1
)).pop(
))
: (parts.push(
format
), (format = null));
return (
forEach(
parts,
function (
value
) {
text += (fn = DATE_FORMATS[value])
? fn(
date,
$locale.DATETIME_FORMATS
)
: value.replace(
/(^'|'$)/g,
""
).replace(
/''/g,
"'"
);
}
),
text
);
};
}
function jsonFilter(
) {
return function (
object
) {
return toJson(
object,
!0
);
};
}
dateFilter.$inject = ["$locale",];
var lowercaseFilter = valueFn(
lowercase
),
uppercaseFilter = valueFn(
uppercase
);
function limitToFilter(
) {
return function (
input, limit
) {
if (!isArray(
input
) && !isString(
input
)) return input;
if (((limit = int(
limit
)), isString(
input
)))
return limit
? limit >= 0
? input.slice(
0,
limit
)
: input.slice(
limit,
input.length
)
: "";
var i,
n,
out = [];
for (
limit > input.length
? (limit = input.length)
: limit < -input.length && (limit = -input.length),
limit > 0
? ((i = 0), (n = limit))
: ((i = input.length + limit), (n = input.length));
i < n;
i++
)
out.push(
input[i]
);
return out;
};
}
function orderByFilter(
$parse
) {
return function (
array, sortPredicate, reverseOrder
) {
if (!isArray(
array
)) return array;
if (!sortPredicate) return array;
var iterator, context, results;
(sortPredicate = isArray(
sortPredicate
)
? sortPredicate
: [sortPredicate,]),
(iterator = function (
predicate
) {
var descending = !1,
get = predicate || identity;
return (
isString(
predicate
) &&
(("+" != predicate.charAt(
0
) && "-" != predicate.charAt(
0
)) ||
((descending = "-" == predicate.charAt(
0
)),
(predicate = predicate.substring(
1
))),
(get = $parse(
predicate
))),
reverseComparator(
function (
a, b
) {
return (
(v1 = get(
a
)),
(v2 = get(
b
)),
(t1 = typeof v1) == (t2 = typeof v2)
? ("string" == t1 &&
((v1 = v1.toLowerCase(
)), (v2 = v2.toLowerCase(
))),
v1 === v2 ? 0 : v1 < v2 ? -1 : 1)
: t1 < t2
? -1
: 1
);
var v1, v2, t1, t2;
},
descending
)
);
}),
(results = []),
forEach(
sortPredicate,
function (
value, index, list
) {
results.push(
iterator.call(
context,
value,
index,
list
)
);
}
),
(sortPredicate = results);
for (var arrayCopy = [], i = 0; i < array.length; i++)
arrayCopy.push(
array[i]
);
return arrayCopy.sort(
reverseComparator(
function (
o1, o2
) {
for (var i = 0; i < sortPredicate.length; i++) {
var comp = sortPredicate[i](
o1,
o2
);
if (0 !== comp) return comp;
}
return 0;
},
reverseOrder
),
);
function reverseComparator(
comp, descending
) {
return toBoolean(
descending
)
? function (
a, b
) {
return comp(
b,
a
);
}
: comp;
}
};
}
function ngDirective(
directive
) {
return (
isFunction(
directive
) && (directive = {
link: directive,
}),
(directive.restrict = directive.restrict || "AC"),
valueFn(
directive
)
);
}
orderByFilter.$inject = ["$parse",];
var htmlAnchorDirective = valueFn(
{
restrict: "E",
compile: function (
element, attr
) {
if (
(msie <= 8 &&
(attr.href || attr.name || attr.$set(
"href",
""
),
element.append(
document.createComment(
"IE fix"
)
)),
!attr.href && !attr.name)
)
return function (
scope, element
) {
element.on(
"click",
function (
event
) {
element.attr(
"href"
) || event.preventDefault(
);
}
);
};
},
}
),
ngAttributeAliasDirectives = {
};
forEach(
BOOLEAN_ATTR,
function (
propName, attrName
) {
if ("multiple" != propName) {
var normalized = directiveNormalize(
"ng-" + attrName
);
ngAttributeAliasDirectives[normalized] = function (
) {
return {
priority: 100,
compile: function (
) {
return function (
scope, element, attr
) {
scope.$watch(
attr[normalized],
function (
value
) {
attr.$set(
attrName,
!!value
);
}
);
};
},
};
};
}
}
),
forEach(
["src", "srcset", "href",],
function (
attrName
) {
var normalized = directiveNormalize(
"ng-" + attrName
);
ngAttributeAliasDirectives[normalized] = function (
) {
return {
priority: 99,
link: function (
scope, element, attr
) {
attr.$observe(
normalized,
function (
value
) {
value &&
(attr.$set(
attrName,
value
),
msie && element.prop(
attrName,
attr[attrName]
));
}
);
},
};
};
}
);
var nullFormCtrl = {
$addControl: noop,
$removeControl: noop,
$setValidity: noop,
$setDirty: noop,
$setPristine: noop,
};
function FormController(
element, attrs
) {
var form = this,
parentForm = element.parent(
).controller(
"form"
) || nullFormCtrl,
invalidCount = 0,
errors = (form.$error = {
}),
controls = [];
function toggleValidCss(
isValid, validationErrorKey
) {
(validationErrorKey = validationErrorKey
? "-" + snake_case(
validationErrorKey,
"-"
)
: ""),
element
.removeClass(
(isValid ? INVALID_CLASS : VALID_CLASS) + validationErrorKey,
)
.addClass(
(isValid ? VALID_CLASS : INVALID_CLASS) + validationErrorKey,
);
}
(form.$name = attrs.name || attrs.ngForm),
(form.$dirty = !1),
(form.$pristine = !0),
(form.$valid = !0),
(form.$invalid = !1),
parentForm.$addControl(
form
),
element.addClass(
PRISTINE_CLASS
),
toggleValidCss(
!0
),
(form.$addControl = function (
control
) {
assertNotHasOwnProperty(
control.$name,
"input"
),
controls.push(
control
),
control.$name && (form[control.$name] = control);
}),
(form.$removeControl = function (
control
) {
control.$name &&
form[control.$name] === control &&
delete form[control.$name],
forEach(
errors,
function (
queue, validationToken
) {
form.$setValidity(
validationToken,
!0,
control
);
}
),
arrayRemove(
controls,
control
);
}),
(form.$setValidity = function (
validationToken, isValid, control
) {
var queue = errors[validationToken];
if (isValid)
queue &&
(arrayRemove(
queue,
control
),
queue.length ||
(--invalidCount ||
(toggleValidCss(
isValid
),
(form.$valid = !0),
(form.$invalid = !1)),
(errors[validationToken] = !1),
toggleValidCss(
!0,
validationToken
),
parentForm.$setValidity(
validationToken,
!0,
form
)));
else {
if ((invalidCount || toggleValidCss(
isValid
), queue)) {
if (-1 != indexOf(
queue,
control
)) return;
} else
(errors[validationToken] = queue = []),
invalidCount++,
toggleValidCss(
!1,
validationToken
),
parentForm.$setValidity(
validationToken,
!1,
form
);
queue.push(
control
), (form.$valid = !1), (form.$invalid = !0);
}
}),
(form.$setDirty = function (
) {
element.removeClass(
PRISTINE_CLASS
).addClass(
DIRTY_CLASS
),
(form.$dirty = !0),
(form.$pristine = !1),
parentForm.$setDirty(
);
}),
(form.$setPristine = function (
) {
element.removeClass(
DIRTY_CLASS
).addClass(
PRISTINE_CLASS
),
(form.$dirty = !1),
(form.$pristine = !0),
forEach(
controls,
function (
control
) {
control.$setPristine(
);
}
);
});
}
FormController.$inject = ["$element", "$attrs", "$scope",];
var formDirectiveFactory = function (
isNgForm
) {
return [
"$timeout",
function (
$timeout
) {
return {
name: "form",
restrict: isNgForm ? "EAC" : "E",
controller: FormController,
compile: function (
) {
return {
pre: function (
scope, formElement, attr, controller
) {
if (!attr.action) {
var preventDefaultListener = function (
event
) {
event.preventDefault
? event.preventDefault(
)
: (event.returnValue = !1);
};
addEventListenerFn(
formElement[0],
"submit",
preventDefaultListener,
),
formElement.on(
"$destroy",
function (
) {
$timeout(
function (
) {
removeEventListenerFn(
formElement[0],
"submit",
preventDefaultListener,
);
},
0,
!1,
);
}
);
}
var parentFormCtrl = formElement.parent(
).controller(
"form"
),
alias = attr.name || attr.ngForm;
alias && setter(
scope,
alias,
controller,
alias
),
parentFormCtrl &&
formElement.on(
"$destroy",
function (
) {
parentFormCtrl.$removeControl(
controller
),
alias && setter(
scope,
alias,
undefined,
alias
),
extend(
controller,
nullFormCtrl
);
}
);
},
};
},
};
},
];
},
formDirective = formDirectiveFactory(
),
ngFormDirective = formDirectiveFactory(
!0
),
URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,
EMAIL_REGEXP = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/,
NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,
inputType = {
text: textInputType,
number: function (
scope, element, attr, ctrl, $sniffer, $browser
) {
if (
(textInputType(
scope,
element,
attr,
ctrl,
$sniffer,
$browser
),
ctrl.$parsers.push(
function (
value
) {
var empty = ctrl.$isEmpty(
value
);
return empty || NUMBER_REGEXP.test(
value
)
? (ctrl.$setValidity(
"number",
!0
),
"" === value
? null
: empty
? value
: parseFloat(
value
))
: void ctrl.$setValidity(
"number",
!1
);
}
),
ctrl.$formatters.push(
function (
value
) {
return ctrl.$isEmpty(
value
)
? ""
: "" + value;
}
),
attr.min)
) {
var minValidator = function (
value
) {
var min = parseFloat(
attr.min
);
return !ctrl.$isEmpty(
value
) && value < min
? void ctrl.$setValidity(
"min",
!1
)
: (ctrl.$setValidity(
"min",
!0
), value);
};
ctrl.$parsers.push(
minValidator
), ctrl.$formatters.push(
minValidator
);
}
if (attr.max) {
var maxValidator = function (
value
) {
var max = parseFloat(
attr.max
);
return !ctrl.$isEmpty(
value
) && value > max
? void ctrl.$setValidity(
"max",
!1
)
: (ctrl.$setValidity(
"max",
!0
), value);
};
ctrl.$parsers.push(
maxValidator
), ctrl.$formatters.push(
maxValidator
);
}
ctrl.$formatters.push(
function (
value
) {
return ctrl.$isEmpty(
value
) || isNumber(
value
)
? (ctrl.$setValidity(
"number",
!0
), value)
: void ctrl.$setValidity(
"number",
!1
);
}
);
},
url: function (
scope, element, attr, ctrl, $sniffer, $browser
) {
textInputType(
scope,
element,
attr,
ctrl,
$sniffer,
$browser
);
var urlValidator = function (
value
) {
return ctrl.$isEmpty(
value
) || URL_REGEXP.test(
value
)
? (ctrl.$setValidity(
"url",
!0
), value)
: void ctrl.$setValidity(
"url",
!1
);
};
ctrl.$formatters.push(
urlValidator
), ctrl.$parsers.push(
urlValidator
);
},
email: function (
scope, element, attr, ctrl, $sniffer, $browser
) {
textInputType(
scope,
element,
attr,
ctrl,
$sniffer,
$browser
);
var emailValidator = function (
value
) {
return ctrl.$isEmpty(
value
) || EMAIL_REGEXP.test(
value
)
? (ctrl.$setValidity(
"email",
!0
), value)
: void ctrl.$setValidity(
"email",
!1
);
};
ctrl.$formatters.push(
emailValidator
),
ctrl.$parsers.push(
emailValidator
);
},
radio: function (
scope, element, attr, ctrl
) {
isUndefined(
attr.name
) && element.attr(
"name",
nextUid(
)
);
element.on(
"click",
function (
) {
element[0].checked &&
scope.$apply(
function (
) {
ctrl.$setViewValue(
attr.value
);
}
);
}
),
(ctrl.$render = function (
) {
var value = attr.value;
element[0].checked = value == ctrl.$viewValue;
}),
attr.$observe(
"value",
ctrl.$render
);
},
checkbox: function (
scope, element, attr, ctrl
) {
var trueValue = attr.ngTrueValue,
falseValue = attr.ngFalseValue;
isString(
trueValue
) || (trueValue = !0);
isString(
falseValue
) || (falseValue = !1);
element.on(
"click",
function (
) {
scope.$apply(
function (
) {
ctrl.$setViewValue(
element[0].checked
);
}
);
}
),
(ctrl.$render = function (
) {
element[0].checked = ctrl.$viewValue;
}),
(ctrl.$isEmpty = function (
value
) {
return value !== trueValue;
}),
ctrl.$formatters.push(
function (
value
) {
return value === trueValue;
}
),
ctrl.$parsers.push(
function (
value
) {
return value ? trueValue : falseValue;
}
);
},
hidden: noop,
button: noop,
submit: noop,
reset: noop,
};
function textInputType(
scope, element, attr, ctrl, $sniffer, $browser
) {
var composing = !1;
element.on(
"compositionstart",
function (
) {
composing = !0;
}
),
element.on(
"compositionend",
function (
) {
composing = !1;
}
);
var listener = function (
) {
if (!composing) {
var value = element.val(
);
toBoolean(
attr.ngTrim || "T"
) && (value = trim(
value
)),
ctrl.$viewValue !== value &&
scope.$apply(
function (
) {
ctrl.$setViewValue(
value
);
}
);
}
};
if ($sniffer.hasEvent(
"input"
)) element.on(
"input",
listener
);
else {
var timeout,
deferListener = function (
) {
timeout ||
(timeout = $browser.defer(
function (
) {
listener(
), (timeout = null);
}
));
};
element.on(
"keydown",
function (
event
) {
var key = event.keyCode;
91 === key ||
(15 < key && key < 19) ||
(37 <= key && key <= 40) ||
deferListener(
);
}
),
$sniffer.hasEvent(
"paste"
) && element.on(
"paste cut",
deferListener
);
}
element.on(
"change",
listener
),
(ctrl.$render = function (
) {
element.val(
ctrl.$isEmpty(
ctrl.$viewValue
)
? ""
: ctrl.$viewValue
);
});
var patternValidator,
match,
pattern = attr.ngPattern,
validate = function (
regexp, value
) {
return ctrl.$isEmpty(
value
) || regexp.test(
value
)
? (ctrl.$setValidity(
"pattern",
!0
), value)
: void ctrl.$setValidity(
"pattern",
!1
);
};
if (
(pattern &&
((match = pattern.match(
/^\/(.*)\/([gim]*)$/
))
? ((pattern = new RegExp(
match[1],
match[2]
)),
(patternValidator = function (
value
) {
return validate(
pattern,
value
);
}))
: (patternValidator = function (
value
) {
var patternObj = scope.$eval(
pattern
);
if (!patternObj || !patternObj.test)
throw minErr(
"ngPattern"
)(
"noregexp",
"Expected {0} to be a RegExp but was {1}. Element: {2}",
pattern,
patternObj,
startingTag(
element
),
);
return validate(
patternObj,
value
);
}),
ctrl.$formatters.push(
patternValidator
),
ctrl.$parsers.push(
patternValidator
)),
attr.ngMinlength)
) {
var minlength = int(
attr.ngMinlength
),
minLengthValidator = function (
value
) {
return !ctrl.$isEmpty(
value
) && value.length < minlength
? void ctrl.$setValidity(
"minlength",
!1
)
: (ctrl.$setValidity(
"minlength",
!0
), value);
};
ctrl.$parsers.push(
minLengthValidator
),
ctrl.$formatters.push(
minLengthValidator
);
}
if (attr.ngMaxlength) {
var maxlength = int(
attr.ngMaxlength
),
maxLengthValidator = function (
value
) {
return !ctrl.$isEmpty(
value
) && value.length > maxlength
? void ctrl.$setValidity(
"maxlength",
!1
)
: (ctrl.$setValidity(
"maxlength",
!0
), value);
};
ctrl.$parsers.push(
maxLengthValidator
),
ctrl.$formatters.push(
maxLengthValidator
);
}
}
var inputDirective = [
"$browser",
"$sniffer",
function (
$browser, $sniffer
) {
return {
restrict: "E",
require: "?ngModel",
link: function (
scope, element, attr, ctrl
) {
ctrl &&
(inputType[lowercase(
attr.type
)] || inputType.text)(
scope,
element,
attr,
ctrl,
$sniffer,
$browser,
);
},
};
},
],
VALID_CLASS = "ng-valid",
INVALID_CLASS = "ng-invalid",
PRISTINE_CLASS = "ng-pristine",
DIRTY_CLASS = "ng-dirty",
NgModelController = [
"$scope",
"$exceptionHandler",
"$attrs",
"$element",
"$parse",
function (
$scope, $exceptionHandler, $attr, $element, $parse
) {
(this.$viewValue = Number.NaN),
(this.$modelValue = Number.NaN),
(this.$parsers = []),
(this.$formatters = []),
(this.$viewChangeListeners = []),
(this.$pristine = !0),
(this.$dirty = !1),
(this.$valid = !0),
(this.$invalid = !1),
(this.$name = $attr.name);
var ngModelGet = $parse(
$attr.ngModel
),
ngModelSet = ngModelGet.assign;
if (!ngModelSet)
throw minErr(
"ngModel"
)(
"nonassign",
"Expression '{0}' is non-assignable. Element: {1}",
$attr.ngModel,
startingTag(
$element
),
);
(this.$render = noop),
(this.$isEmpty = function (
value
) {
return (
isUndefined(
value
) ||
"" === value ||
null === value ||
value != value
);
});
var parentForm =
$element.inheritedData(
"$formController"
) || nullFormCtrl,
invalidCount = 0,
$error = (this.$error = {
});
function toggleValidCss(
isValid, validationErrorKey
) {
(validationErrorKey = validationErrorKey
? "-" + snake_case(
validationErrorKey,
"-"
)
: ""),
$element
.removeClass(
(isValid ? INVALID_CLASS : VALID_CLASS) + validationErrorKey,
)
.addClass(
(isValid ? VALID_CLASS : INVALID_CLASS) + validationErrorKey,
);
}
$element.addClass(
PRISTINE_CLASS
),
toggleValidCss(
!0
),
(this.$setValidity = function (
validationErrorKey, isValid
) {
$error[validationErrorKey] !== !isValid &&
(isValid
? ($error[validationErrorKey] && invalidCount--,
invalidCount ||
(toggleValidCss(
!0
),
(this.$valid = !0),
(this.$invalid = !1)))
: (toggleValidCss(
!1
),
(this.$invalid = !0),
(this.$valid = !1),
invalidCount++),
($error[validationErrorKey] = !isValid),
toggleValidCss(
isValid,
validationErrorKey
),
parentForm.$setValidity(
validationErrorKey,
isValid,
this
));
}),
(this.$setPristine = function (
) {
(this.$dirty = !1),
(this.$pristine = !0),
$element.removeClass(
DIRTY_CLASS
).addClass(
PRISTINE_CLASS
);
}),
(this.$setViewValue = function (
value
) {
(this.$viewValue = value),
this.$pristine &&
((this.$dirty = !0),
(this.$pristine = !1),
$element.removeClass(
PRISTINE_CLASS
).addClass(
DIRTY_CLASS
),
parentForm.$setDirty(
)),
forEach(
this.$parsers,
function (
fn
) {
value = fn(
value
);
}
),
this.$modelValue !== value &&
((this.$modelValue = value),
ngModelSet(
$scope,
value
),
forEach(
this.$viewChangeListeners,
function (
listener
) {
try {
listener(
);
} catch (e) {
$exceptionHandler(
e
);
}
}
));
});
var ctrl = this;
$scope.$watch(
function (
) {
var value = ngModelGet(
$scope
);
if (ctrl.$modelValue !== value) {
var formatters = ctrl.$formatters,
idx = formatters.length;
for (ctrl.$modelValue = value; idx--; )
value = formatters[idx](
value
);
ctrl.$viewValue !== value &&
((ctrl.$viewValue = value), ctrl.$render(
));
}
return value;
}
);
},
],
ngModelDirective = function (
) {
return {
require: ["ngModel", "^?form",],
controller: NgModelController,
link: function (
scope, element, attr, ctrls
) {
var modelCtrl = ctrls[0],
formCtrl = ctrls[1] || nullFormCtrl;
formCtrl.$addControl(
modelCtrl
),
scope.$on(
"$destroy",
function (
) {
formCtrl.$removeControl(
modelCtrl
);
}
);
},
};
},
ngChangeDirective = valueFn(
{
require: "ngModel",
link: function (
scope, element, attr, ctrl
) {
ctrl.$viewChangeListeners.push(
function (
) {
scope.$eval(
attr.ngChange
);
}
);
},
}
),
requiredDirective = function (
) {
return {
require: "?ngModel",
link: function (
scope, elm, attr, ctrl
) {
if (ctrl) {
attr.required = !0;
var validator = function (
value
) {
return attr.required && ctrl.$isEmpty(
value
)
? void ctrl.$setValidity(
"required",
!1
)
: (ctrl.$setValidity(
"required",
!0
), value);
};
ctrl.$formatters.push(
validator
),
ctrl.$parsers.unshift(
validator
),
attr.$observe(
"required",
function (
) {
validator(
ctrl.$viewValue
);
}
);
}
},
};
},
ngListDirective = function (
) {
return {
require: "ngModel",
link: function (
scope, element, attr, ctrl
) {
var match = /\/(.*)\//.exec(
attr.ngList
),
separator = (match && new RegExp(
match[1]
)) || attr.ngList || ",";
ctrl.$parsers.push(
function (
viewValue
) {
if (!isUndefined(
viewValue
)) {
var list = [];
return (
viewValue &&
forEach(
viewValue.split(
separator
),
function (
value
) {
value && list.push(
trim(
value
)
);
}
),
list
);
}
}
),
ctrl.$formatters.push(
function (
value
) {
if (isArray(
value
)) return value.join(
", "
);
}
),
(ctrl.$isEmpty = function (
value
) {
return !value || !value.length;
});
},
};
},
CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/,
ngValueDirective = function (
) {
return {
priority: 100,
compile: function (
tpl, tplAttr
) {
return CONSTANT_VALUE_REGEXP.test(
tplAttr.ngValue
)
? function (
scope, elm, attr
) {
attr.$set(
"value",
scope.$eval(
attr.ngValue
)
);
}
: function (
scope, elm, attr
) {
scope.$watch(
attr.ngValue,
function (
value
) {
attr.$set(
"value",
value
);
}
);
};
},
};
},
ngBindDirective = ngDirective(
function (
scope, element, attr
) {
element.addClass(
"ng-binding"
).data(
"$binding",
attr.ngBind
),
scope.$watch(
attr.ngBind,
function (
value
) {
element.text(
null == value ? "" : value
);
}
);
}
),
ngBindTemplateDirective = [
"$interpolate",
function (
$interpolate
) {
return function (
scope, element, attr
) {
var interpolateFn = $interpolate(
element.attr(
attr.$attr.ngBindTemplate
),
);
element.addClass(
"ng-binding"
).data(
"$binding",
interpolateFn
),
attr.$observe(
"ngBindTemplate",
function (
value
) {
element.text(
value
);
}
);
};
},
],
ngBindHtmlDirective = [
"$sce",
"$parse",
function (
$sce, $parse
) {
return function (
scope, element, attr
) {
element.addClass(
"ng-binding"
).data(
"$binding",
attr.ngBindHtml
);
var parsed = $parse(
attr.ngBindHtml
);
scope.$watch(
function (
) {
return (parsed(
scope
) || "").toString(
);
},
function (
value
) {
element.html(
$sce.getTrustedHtml(
parsed(
scope
)
) || ""
);
},
);
};
},
];
function classDirective(
name, selector
) {
return (
(name = "ngClass" + name),
function (
) {
return {
restrict: "AC",
link: function (
scope, element, attr
) {
var oldVal;
function ngClassWatchAction(
newVal
) {
if (!0 === selector || scope.$index % 2 === selector) {
var newClasses = flattenClasses(
newVal || ""
);
oldVal
? equals(
newVal,
oldVal
) ||
attr.$updateClass(
newClasses,
flattenClasses(
oldVal
)
)
: attr.$addClass(
newClasses
);
}
oldVal = copy(
newVal
);
}
function flattenClasses(
classVal
) {
if (isArray(
classVal
)) return classVal.join(
" "
);
if (isObject(
classVal
)) {
var classes = [];
return (
forEach(
classVal,
function (
v, k
) {
v && classes.push(
k
);
}
),
classes.join(
" "
)
);
}
return classVal;
}
scope.$watch(
attr[name],
ngClassWatchAction,
!0
),
attr.$observe(
"class",
function (
value
) {
ngClassWatchAction(
scope.$eval(
attr[name]
)
);
}
),
"ngClass" !== name &&
scope.$watch(
"$index",
function (
$index, old$index
) {
var mod = 1 & $index;
if ((mod !== old$index) & 1) {
var classes = flattenClasses(
scope.$eval(
attr[name]
)
);
mod === selector
? attr.$addClass(
classes
)
: attr.$removeClass(
classes
);
}
}
);
},
};
}
);
}
var ngClassDirective = classDirective(
"",
!0
),
ngClassOddDirective = classDirective(
"Odd",
0
),
ngClassEvenDirective = classDirective(
"Even",
1
),
ngCloakDirective = ngDirective(
{
compile: function (
element, attr
) {
attr.$set(
"ngCloak",
undefined
), element.removeClass(
"ng-cloak"
);
},
}
),
ngControllerDirective = [
function (
) {
return {
scope: !0,
controller: "@",
priority: 500,
};
},
],
ngEventDirectives = {
};
forEach(
"click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(
" ",
),
function (
name
) {
var directiveName = directiveNormalize(
"ng-" + name
);
ngEventDirectives[directiveName] = [
"$parse",
function (
$parse
) {
return {
compile: function (
$element, attr
) {
var fn = $parse(
attr[directiveName]
);
return function (
scope, element, attr
) {
element.on(
lowercase(
name
),
function (
event
) {
scope.$apply(
function (
) {
fn(
scope,
{
$event: event,
}
);
}
);
}
);
};
},
};
},
];
},
);
var ngIfDirective = [
"$animate",
function (
$animate
) {
return {
transclude: "element",
priority: 600,
terminal: !0,
restrict: "A",
$$tlb: !0,
link: function (
$scope, $element, $attr, ctrl, $transclude
) {
var block, childScope;
$scope.$watch(
$attr.ngIf,
function (
value
) {
toBoolean(
value
)
? childScope ||
((childScope = $scope.$new(
)),
$transclude(
childScope,
function (
clone
) {
(clone[clone.length++] = document.createComment(
" end ngIf: " + $attr.ngIf + " ",
)),
(block = {
clone: clone,
}),
$animate.enter(
clone,
$element.parent(
),
$element
);
}
))
: (childScope && (childScope.$destroy(
), (childScope = null)),
block &&
($animate.leave(
getBlockElements(
block.clone
)
),
(block = null)));
}
);
},
};
},
],
ngIncludeDirective = [
"$http",
"$templateCache",
"$anchorScroll",
"$animate",
"$sce",
function (
$http, $templateCache, $anchorScroll, $animate, $sce
) {
return {
restrict: "ECA",
priority: 400,
terminal: !0,
transclude: "element",
controller: angular.noop,
compile: function (
element, attr
) {
var srcExp = attr.ngInclude || attr.src,
onloadExp = attr.onload || "",
autoScrollExp = attr.autoscroll;
return function (
scope, $element, $attr, ctrl, $transclude
) {
var currentScope,
currentElement,
changeCounter = 0,
cleanupLastIncludeContent = function (
) {
currentScope &&
(currentScope.$destroy(
), (currentScope = null)),
currentElement &&
($animate.leave(
currentElement
), (currentElement = null));
};
scope.$watch(
$sce.parseAsResourceUrl(
srcExp
),
function (
src
) {
var afterAnimation = function (
) {
!isDefined(
autoScrollExp
) ||
(autoScrollExp && !scope.$eval(
autoScrollExp
)) ||
$anchorScroll(
);
},
thisChangeId = ++changeCounter;
src
? ($http
.get(
src,
{
cache: $templateCache,
}
)
.success(
function (
response
) {
if (thisChangeId === changeCounter) {
var newScope = scope.$new(
);
ctrl.template = response;
var clone = $transclude(
newScope,
function (
clone
) {
cleanupLastIncludeContent(
),
$animate.enter(
clone,
null,
$element,
afterAnimation,
);
}
);
(currentElement = clone),
(currentScope = newScope).$emit(
"$includeContentLoaded",
),
scope.$eval(
onloadExp
);
}
}
)
.error(
function (
) {
thisChangeId === changeCounter &&
cleanupLastIncludeContent(
);
}
),
scope.$emit(
"$includeContentRequested"
))
: (cleanupLastIncludeContent(
), (ctrl.template = null));
}
);
};
},
};
},
],
ngIncludeFillContentDirective = [
"$compile",
function (
$compile
) {
return {
restrict: "ECA",
priority: -400,
require: "ngInclude",
link: function (
scope, $element, $attr, ctrl
) {
$element.html(
ctrl.template
), $compile(
$element.contents(
)
)(
scope
);
},
};
},
],
ngInitDirective = ngDirective(
{
priority: 450,
compile: function (
) {
return {
pre: function (
scope, element, attrs
) {
scope.$eval(
attrs.ngInit
);
},
};
},
}
),
ngNonBindableDirective = ngDirective(
{
terminal: !0,
priority: 1e3,
}
),
ngPluralizeDirective = [
"$locale",
"$interpolate",
function (
$locale, $interpolate
) {
var BRACE = /{}/g;
return {
restrict: "EA",
link: function (
scope, element, attr
) {
var numberExp = attr.count,
whenExp = attr.$attr.when && element.attr(
attr.$attr.when
),
offset = attr.offset || 0,
whens = scope.$eval(
whenExp
) || {
},
whensExpFns = {
},
startSymbol = $interpolate.startSymbol(
),
endSymbol = $interpolate.endSymbol(
),
isWhen = /^when(Minus)?(.+)$/;
forEach(
attr,
function (
expression, attributeName
) {
isWhen.test(
attributeName
) &&
(whens[
lowercase(
attributeName.replace(
"when",
""
).replace(
"Minus",
"-"
),
)
] = element.attr(
attr.$attr[attributeName]
));
}
),
forEach(
whens,
function (
expression, key
) {
whensExpFns[key] = $interpolate(
expression.replace(
BRACE,
startSymbol + numberExp + "-" + offset + endSymbol,
),
);
}
),
scope.$watch(
function (
) {
var value = parseFloat(
scope.$eval(
numberExp
)
);
return isNaN(
value
)
? ""
: (value in whens ||
(value = $locale.pluralCat(
value - offset
)),
whensExpFns[value](
scope,
element,
!0
));
},
function (
newVal
) {
element.text(
newVal
);
},
);
},
};
},
],
ngRepeatDirective = [
"$parse",
"$animate",
function (
$parse, $animate
) {
var ngRepeatMinErr = minErr(
"ngRepeat"
);
return {
transclude: "element",
priority: 1e3,
terminal: !0,
$$tlb: !0,
link: function (
$scope, $element, $attr, ctrl, $transclude
) {
var trackByExp,
trackByExpGetter,
trackByIdExpFn,
trackByIdArrayFn,
trackByIdObjFn,
lhs,
rhs,
valueIdentifier,
keyIdentifier,
expression = $attr.ngRepeat,
match = expression.match(
/^\s*(.+)\s+in\s+(.*?)\s*(\s+track\s+by\s+(.+)\s*)?$/,
),
hashFnLocals = {
$id: hashKey,
};
if (!match)
throw ngRepeatMinErr(
"iexp",
"Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",
expression,
);
if (
((lhs = match[1]),
(rhs = match[2]),
(trackByExp = match[4])
? ((trackByExpGetter = $parse(
trackByExp
)),
(trackByIdExpFn = function (
key, value, index
) {
return (
keyIdentifier && (hashFnLocals[keyIdentifier] = key),
(hashFnLocals[valueIdentifier] = value),
(hashFnLocals.$index = index),
trackByExpGetter(
$scope,
hashFnLocals
)
);
}))
: ((trackByIdArrayFn = function (
key, value
) {
return hashKey(
value
);
}),
(trackByIdObjFn = function (
key
) {
return key;
})),
!(match = lhs.match(
/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/,
)))
)
throw ngRepeatMinErr(
"iidexp",
"'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",
lhs,
);
(valueIdentifier = match[3] || match[1]),
(keyIdentifier = match[2]);
var lastBlockMap = {
};
$scope.$watchCollection(
rhs,
function (
collection
) {
var index,
length,
nextNode,
arrayLength,
childScope,
key,
value,
trackById,
trackByIdFn,
collectionKeys,
block,
elementsToRemove,
previousNode = $element[0],
nextBlockMap = {
},
nextBlockOrder = [];
if (isArrayLike(
collection
))
(collectionKeys = collection),
(trackByIdFn = trackByIdExpFn || trackByIdArrayFn);
else {
for (key in ((trackByIdFn = trackByIdExpFn || trackByIdObjFn),
(collectionKeys = []),
collection))
collection.hasOwnProperty(
key
) &&
"$" != key.charAt(
0
) &&
collectionKeys.push(
key
);
collectionKeys.sort(
);
}
for (
arrayLength = collectionKeys.length,
length = nextBlockOrder.length = collectionKeys.length,
index = 0;
index < length;
index++
)
if (
(assertNotHasOwnProperty(
(trackById = trackByIdFn(
(key =
collection === collectionKeys
? index
: collectionKeys[index]),
(value = collection[key]),
index,
)),
"`track by` id",
),
lastBlockMap.hasOwnProperty(
trackById
))
)
(block = lastBlockMap[trackById]),
delete lastBlockMap[trackById],
(nextBlockMap[trackById] = block),
(nextBlockOrder[index] = block);
else {
if (nextBlockMap.hasOwnProperty(
trackById
))
throw (
(forEach(
nextBlockOrder,
function (
block
) {
block &&
block.scope &&
(lastBlockMap[block.id] = block);
}
),
ngRepeatMinErr(
"dupes",
"Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}",
expression,
trackById,
))
);
(nextBlockOrder[index] = {
id: trackById,
}),
(nextBlockMap[trackById] = !1);
}
for (key in lastBlockMap)
lastBlockMap.hasOwnProperty(
key
) &&
((elementsToRemove = getBlockElements(
(block = lastBlockMap[key]).clone,
)),
$animate.leave(
elementsToRemove
),
forEach(
elementsToRemove,
function (
element
) {
element.$$NG_REMOVED = !0;
}
),
block.scope.$destroy(
));
for (
index = 0, length = collectionKeys.length;
index < length;
index++
) {
if (
((value =
collection[
(key =
collection === collectionKeys
? index
: collectionKeys[index])
]),
(block = nextBlockOrder[index]),
nextBlockOrder[index - 1] &&
(previousNode = getBlockEnd(
nextBlockOrder[index - 1]
)),
block.scope)
) {
(childScope = block.scope), (nextNode = previousNode);
do {
nextNode = nextNode.nextSibling;
} while (nextNode && nextNode.$$NG_REMOVED);
getBlockStart(
block
) != nextNode &&
$animate.move(
getBlockElements(
block.clone
),
null,
jqLite(
previousNode
),
),
(previousNode = getBlockEnd(
block
));
} else childScope = $scope.$new(
);
(childScope[valueIdentifier] = value),
keyIdentifier && (childScope[keyIdentifier] = key),
(childScope.$index = index),
(childScope.$first = 0 === index),
(childScope.$last = index === arrayLength - 1),
(childScope.$middle = !(
childScope.$first || childScope.$last
)),
(childScope.$odd = !(childScope.$even = 0 == (1 & index))),
block.scope ||
$transclude(
childScope,
function (
clone
) {
(clone[clone.length++] = document.createComment(
" end ngRepeat: " + expression + " ",
)),
$animate.enter(
clone,
null,
jqLite(
previousNode
)
),
(previousNode = clone),
(block.scope = childScope),
(block.clone = clone),
(nextBlockMap[block.id] = block);
}
);
}
lastBlockMap = nextBlockMap;
}
);
},
};
function getBlockStart(
block
) {
return block.clone[0];
}
function getBlockEnd(
block
) {
return block.clone[block.clone.length - 1];
}
},
],
ngShowDirective = [
"$animate",
function (
$animate
) {
return function (
scope, element, attr
) {
scope.$watch(
attr.ngShow,
function (
value
) {
$animate[toBoolean(
value
)
? "removeClass"
: "addClass"](
element,
"ng-hide",
);
}
);
};
},
],
ngHideDirective = [
"$animate",
function (
$animate
) {
return function (
scope, element, attr
) {
scope.$watch(
attr.ngHide,
function (
value
) {
$animate[toBoolean(
value
)
? "addClass"
: "removeClass"](
element,
"ng-hide",
);
}
);
};
},
],
ngStyleDirective = ngDirective(
function (
scope, element, attr
) {
scope.$watch(
attr.ngStyle,
function (
newStyles, oldStyles
) {
oldStyles &&
newStyles !== oldStyles &&
forEach(
oldStyles,
function (
val, style
) {
element.css(
style,
""
);
}
),
newStyles && element.css(
newStyles
);
},
!0,
);
}
),
ngSwitchDirective = [
"$animate",
function (
$animate
) {
return {
restrict: "EA",
require: "ngSwitch",
controller: [
"$scope",
function (
) {
this.cases = {
};
},
],
link: function (
scope, element, attr, ngSwitchController
) {
var selectedTranscludes,
selectedElements,
watchExpr = attr.ngSwitch || attr.on,
selectedScopes = [];
scope.$watch(
watchExpr,
function (
value
) {
for (var i = 0, ii = selectedScopes.length; i < ii; i++)
selectedScopes[i].$destroy(
),
$animate.leave(
selectedElements[i]
);
(selectedElements = []),
(selectedScopes = []),
(selectedTranscludes =
ngSwitchController.cases["!" + value] ||
ngSwitchController.cases["?"]) &&
(scope.$eval(
attr.change
),
forEach(
selectedTranscludes,
function (
selectedTransclude
) {
var selectedScope = scope.$new(
);
selectedScopes.push(
selectedScope
),
selectedTransclude.transclude(
selectedScope,
function (
caseElement
) {
var anchor = selectedTransclude.element;
selectedElements.push(
caseElement
),
$animate.enter(
caseElement,
anchor.parent(
),
anchor,
);
},
);
}
));
}
);
},
};
},
],
ngSwitchWhenDirective = ngDirective(
{
transclude: "element",
priority: 800,
require: "^ngSwitch",
compile: function (
element, attrs
) {
return function (
scope, element, attr, ctrl, $transclude
) {
(ctrl.cases["!" + attrs.ngSwitchWhen] =
ctrl.cases["!" + attrs.ngSwitchWhen] || []),
ctrl.cases["!" + attrs.ngSwitchWhen].push(
{
transclude: $transclude,
element: element,
}
);
};
},
}
),
ngSwitchDefaultDirective = ngDirective(
{
transclude: "element",
priority: 800,
require: "^ngSwitch",
link: function (
scope, element, attr, ctrl, $transclude
) {
(ctrl.cases["?"] = ctrl.cases["?"] || []),
ctrl.cases["?"].push(
{
transclude: $transclude,
element: element,
}
);
},
}
),
ngTranscludeDirective = ngDirective(
{
controller: [
"$element",
"$transclude",
function (
$element, $transclude
) {
if (!$transclude)
throw minErr(
"ngTransclude"
)(
"orphan",
"Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",
startingTag(
$element
),
);
this.$transclude = $transclude;
},
],
link: function (
$scope, $element, $attrs, controller
) {
controller.$transclude(
function (
clone
) {
$element.empty(
), $element.append(
clone
);
}
);
},
}
),
scriptDirective = [
"$templateCache",
function (
$templateCache
) {
return {
restrict: "E",
terminal: !0,
compile: function (
element, attr
) {
if ("text/ng-template" == attr.type) {
var templateUrl = attr.id,
text = element[0].text;
$templateCache.put(
templateUrl,
text
);
}
},
};
},
],
ngOptionsMinErr = minErr(
"ngOptions"
),
ngOptionsDirective = valueFn(
{
terminal: !0,
}
),
selectDirective = [
"$compile",
"$parse",
function (
$compile, $parse
) {
var NG_OPTIONS_REGEXP = /^\s*(.*?)(?:\s+as\s+(.*?))?(?:\s+group\s+by\s+(.*))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+(.*?)(?:\s+track\s+by\s+(.*?))?$/,
nullModelCtrl = {
$setViewValue: noop,
};
return {
restrict: "E",
require: ["select", "?ngModel",],
controller: [
"$element",
"$scope",
"$attrs",
function (
$element, $scope, $attrs
) {
var unknownOption,
self = this,
optionsMap = {
},
ngModelCtrl = nullModelCtrl;
(self.databound = $attrs.ngModel),
(self.init = function (
ngModelCtrl_,
nullOption_,
unknownOption_,
) {
(ngModelCtrl = ngModelCtrl_),
nullOption_,
(unknownOption = unknownOption_);
}),
(self.addOption = function (
value
) {
assertNotHasOwnProperty(
value,
'"option value"'
),
(optionsMap[value] = !0),
ngModelCtrl.$viewValue == value &&
($element.val(
value
),
unknownOption.parent(
) && unknownOption.remove(
));
}),
(self.removeOption = function (
value
) {
this.hasOption(
value
) &&
(delete optionsMap[value],
ngModelCtrl.$viewValue == value &&
this.renderUnknownOption(
value
));
}),
(self.renderUnknownOption = function (
val
) {
var unknownVal = "? " + hashKey(
val
) + " ?";
unknownOption.val(
unknownVal
),
$element.prepend(
unknownOption
),
$element.val(
unknownVal
),
unknownOption.prop(
"selected",
!0
);
}),
(self.hasOption = function (
value
) {
return optionsMap.hasOwnProperty(
value
);
}),
$scope.$on(
"$destroy",
function (
) {
self.renderUnknownOption = noop;
}
);
},
],
link: function (
scope, element, attr, ctrls
) {
if (ctrls[1]) {
for (
var emptyOption,
selectCtrl = ctrls[0],
ngModelCtrl = ctrls[1],
multiple = attr.multiple,
optionsExp = attr.ngOptions,
nullOption = !1,
optionTemplate = jqLite(
document.createElement(
"option"
)
),
optGroupTemplate = jqLite(
document.createElement(
"optgroup"
)
),
unknownOption = optionTemplate.clone(
),
i = 0,
children = element.children(
),
ii = children.length;
i < ii;
i++
)
if ("" === children[i].value) {
emptyOption = nullOption = children.eq(
i
);
break;
}
if (
(selectCtrl.init(
ngModelCtrl,
nullOption,
unknownOption
),
multiple && (attr.required || attr.ngRequired))
) {
var requiredValidator = function (
value
) {
return (
ngModelCtrl.$setValidity(
"required",
!attr.required || (value && value.length),
),
value
);
};
ngModelCtrl.$parsers.push(
requiredValidator
),
ngModelCtrl.$formatters.unshift(
requiredValidator
),
attr.$observe(
"required",
function (
) {
requiredValidator(
ngModelCtrl.$viewValue
);
}
);
}
optionsExp
? (function (
scope, selectElement, ctrl
) {
var match;
if (!(match = optionsExp.match(
NG_OPTIONS_REGEXP
)))
throw ngOptionsMinErr(
"iexp",
"Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",
optionsExp,
startingTag(
selectElement
),
);
var displayFn = $parse(
match[2] || match[1]
),
valueName = match[4] || match[6],
keyName = match[5],
groupByFn = $parse(
match[3] || ""
),
valueFn = $parse(
match[2] ? match[1] : valueName
),
valuesFn = $parse(
match[7]
),
trackFn = match[8]
? $parse(
match[8]
)
: null,
optionGroupsCache = [
[{
element: selectElement,
label: "",
},],
];
nullOption &&
($compile(
nullOption
)(
scope
),
nullOption.removeClass(
"ng-scope"
),
nullOption.remove(
));
function render(
) {
var optionGroupName,
optionGroup,
option,
existingParent,
existingOptions,
existingOption,
key,
groupLength,
length,
groupIndex,
index,
selected,
lastElement,
element,
label,
optionGroups = {
"": [],
},
optionGroupNames = ["",],
modelValue = ctrl.$modelValue,
values = valuesFn(
scope
) || [],
keys = keyName
? sortedKeys(
values
)
: values,
locals = {
},
selectedSet = !1;
if (multiple)
if (trackFn && isArray(
modelValue
)) {
selectedSet = new HashMap(
[]
);
for (
var trackIndex = 0;
trackIndex < modelValue.length;
trackIndex++
)
(locals[valueName] = modelValue[trackIndex]),
selectedSet.put(
trackFn(
scope,
locals
),
modelValue[trackIndex],
);
} else selectedSet = new HashMap(
modelValue
);
for (index = 0; index < (length = keys.length); index++) {
if (((key = index), keyName)) {
if ("$" === (key = keys[index]).charAt(
0
)) continue;
locals[keyName] = key;
}
if (
((locals[valueName] = values[key]),
(optionGroup =
optionGroups[
(optionGroupName = groupByFn(
scope,
locals
) || "")
]) ||
((optionGroup = optionGroups[optionGroupName] = []),
optionGroupNames.push(
optionGroupName
)),
multiple)
)
selected = isDefined(
selectedSet.remove(
trackFn
? trackFn(
scope,
locals
)
: valueFn(
scope,
locals
),
),
);
else {
if (trackFn) {
var modelCast = {
};
(modelCast[valueName] = modelValue),
(selected =
trackFn(
scope,
modelCast
) ===
trackFn(
scope,
locals
));
} else
selected = modelValue === valueFn(
scope,
locals
);
selectedSet = selectedSet || selected;
}
(label = isDefined(
(label = displayFn(
scope,
locals
))
)
? label
: ""),
optionGroup.push(
{
id: trackFn
? trackFn(
scope,
locals
)
: keyName
? keys[index]
: index,
label: label,
selected: selected,
}
);
}
for (
multiple ||
(nullOption || null === modelValue
? optionGroups[""].unshift(
{
id: "",
label: "",
selected: !selectedSet,
}
)
: selectedSet ||
optionGroups[""].unshift(
{
id: "?",
label: "",
selected: !0,
}
)),
groupIndex = 0,
groupLength = optionGroupNames.length;
groupIndex < groupLength;
groupIndex++
) {
for (
optionGroup =
optionGroups[
(optionGroupName = optionGroupNames[groupIndex])
],
optionGroupsCache.length <= groupIndex
? ((existingOptions = [
(existingParent = {
element: optGroupTemplate
.clone(
)
.attr(
"label",
optionGroupName
),
label: optionGroup.label,
}),
]),
optionGroupsCache.push(
existingOptions
),
selectElement.append(
existingParent.element
))
: (existingParent = (existingOptions =
optionGroupsCache[groupIndex])[0]).label !=
optionGroupName &&
existingParent.element.attr(
"label",
(existingParent.label = optionGroupName),
),
lastElement = null,
index = 0,
length = optionGroup.length;
index < length;
index++
)
(option = optionGroup[index]),
(existingOption = existingOptions[index + 1])
? ((lastElement = existingOption.element),
existingOption.label !== option.label &&
lastElement.text(
(existingOption.label = option.label),
),
existingOption.id !== option.id &&
lastElement.val(
(existingOption.id = option.id),
),
lastElement[0].selected !== option.selected &&
lastElement.prop(
"selected",
(existingOption.selected = option.selected),
))
: ("" === option.id && nullOption
? (element = nullOption)
: (element = optionTemplate.clone(
))
.val(
option.id
)
.attr(
"selected",
option.selected
)
.text(
option.label
),
existingOptions.push(
(existingOption = {
element: element,
label: option.label,
id: option.id,
selected: option.selected,
}),
),
lastElement
? lastElement.after(
element
)
: existingParent.element.append(
element
),
(lastElement = element));
for (index++; existingOptions.length > index; )
existingOptions.pop(
).element.remove(
);
}
for (; optionGroupsCache.length > groupIndex; )
optionGroupsCache.pop(
)[0].element.remove(
);
}
selectElement.empty(
),
selectElement.on(
"change",
function (
) {
scope.$apply(
function (
) {
var optionGroup,
key,
value,
optionElement,
index,
groupIndex,
length,
groupLength,
trackIndex,
collection = valuesFn(
scope
) || [],
locals = {
};
if (multiple) {
for (
value = [],
groupIndex = 0,
groupLength = optionGroupsCache.length;
groupIndex < groupLength;
groupIndex++
)
for (
index = 1,
length = (optionGroup =
optionGroupsCache[groupIndex]).length;
index < length;
index++
)
if (
(optionElement =
optionGroup[index].element)[0].selected
) {
if (
((key = optionElement.val(
)),
keyName && (locals[keyName] = key),
trackFn)
)
for (
trackIndex = 0;
trackIndex < collection.length &&
((locals[valueName] =
collection[trackIndex]),
trackFn(
scope,
locals
) != key);
trackIndex++
);
else locals[valueName] = collection[key];
value.push(
valueFn(
scope,
locals
)
);
}
} else if ("?" == (key = selectElement.val(
)))
value = undefined;
else if ("" === key) value = null;
else if (trackFn) {
for (
trackIndex = 0;
trackIndex < collection.length;
trackIndex++
)
if (
((locals[valueName] = collection[trackIndex]),
trackFn(
scope,
locals
) == key)
) {
value = valueFn(
scope,
locals
);
break;
}
} else
(locals[valueName] = collection[key]),
keyName && (locals[keyName] = key),
(value = valueFn(
scope,
locals
));
ctrl.$setViewValue(
value
);
}
);
}
),
(ctrl.$render = render),
scope.$watch(
render
);
})(
scope,
element,
ngModelCtrl
)
: multiple
? (function (
scope, selectElement, ctrl
) {
var lastView;
(ctrl.$render = function (
) {
var items = new HashMap(
ctrl.$viewValue
);
forEach(
selectElement.find(
"option"
),
function (
option
) {
option.selected = isDefined(
items.get(
option.value
)
);
}
);
}),
scope.$watch(
function (
) {
equals(
lastView,
ctrl.$viewValue
) ||
((lastView = copy(
ctrl.$viewValue
)), ctrl.$render(
));
}
),
selectElement.on(
"change",
function (
) {
scope.$apply(
function (
) {
var array = [];
forEach(
selectElement.find(
"option"
),
function (
option
) {
option.selected && array.push(
option.value
);
},
),
ctrl.$setViewValue(
array
);
}
);
}
);
})(
scope,
element,
ngModelCtrl
)
: (function (
scope, selectElement, ngModelCtrl, selectCtrl
) {
(ngModelCtrl.$render = function (
) {
var viewValue = ngModelCtrl.$viewValue;
selectCtrl.hasOption(
viewValue
)
? (unknownOption.parent(
) && unknownOption.remove(
),
selectElement.val(
viewValue
),
"" === viewValue && emptyOption.prop(
"selected",
!0
))
: isUndefined(
viewValue
) && emptyOption
? selectElement.val(
""
)
: selectCtrl.renderUnknownOption(
viewValue
);
}),
selectElement.on(
"change",
function (
) {
scope.$apply(
function (
) {
unknownOption.parent(
) && unknownOption.remove(
),
ngModelCtrl.$setViewValue(
selectElement.val(
)
);
}
);
}
);
})(
scope,
element,
ngModelCtrl,
selectCtrl
);
}
},
};
},
],
optionDirective = [
"$interpolate",
function (
$interpolate
) {
var nullSelectCtrl = {
addOption: noop,
removeOption: noop,
};
return {
restrict: "E",
priority: 100,
compile: function (
element, attr
) {
if (isUndefined(
attr.value
)) {
var interpolateFn = $interpolate(
element.text(
),
!0
);
interpolateFn || attr.$set(
"value",
element.text(
)
);
}
return function (
scope, element, attr
) {
var parent = element.parent(
),
selectCtrl =
parent.data(
"$selectController"
) ||
parent.parent(
).data(
"$selectController"
);
selectCtrl && selectCtrl.databound
? element.prop(
"selected",
!1
)
: (selectCtrl = nullSelectCtrl),
interpolateFn
? scope.$watch(
interpolateFn,
function (
newVal, oldVal
) {
attr.$set(
"value",
newVal
),
newVal !== oldVal && selectCtrl.removeOption(
oldVal
),
selectCtrl.addOption(
newVal
);
}
)
: selectCtrl.addOption(
attr.value
),
element.on(
"$destroy",
function (
) {
selectCtrl.removeOption(
attr.value
);
}
);
};
},
};
},
],
styleDirective = valueFn(
{
restrict: "E",
terminal: !0,
}
);
(jQuery = window.jQuery)
? ((jqLite = jQuery),
extend(
jQuery.fn,
{
scope: JQLitePrototype.scope,
isolateScope: JQLitePrototype.isolateScope,
controller: JQLitePrototype.controller,
injector: JQLitePrototype.injector,
inheritedData: JQLitePrototype.inheritedData,
}
),
jqLitePatchJQueryRemove(
"remove",
!0,
!0,
!1
),
jqLitePatchJQueryRemove(
"empty",
!1,
!1,
!1
),
jqLitePatchJQueryRemove(
"html",
!1,
!1,
!0
))
: (jqLite = JQLite),
(angular.element = jqLite),
(function (
angular
) {
extend(
angular,
{
bootstrap: bootstrap,
copy: copy,
extend: extend,
equals: equals,
element: jqLite,
forEach: forEach,
injector: createInjector,
noop: noop,
bind: bind,
toJson: toJson,
fromJson: fromJson,
identity: identity,
isUndefined: isUndefined,
isDefined: isDefined,
isString: isString,
isFunction: isFunction,
isObject: isObject,
isNumber: isNumber,
isElement: isElement,
isArray: isArray,
version: version,
isDate: isDate,
lowercase: lowercase,
uppercase: uppercase,
callbacks: {
counter: 0,
},
$$minErr: minErr,
$$csp: csp,
}
),
(angularModule = (function (
window
) {
var $injectorMinErr = minErr(
"$injector"
),
ngMinErr = minErr(
"ng"
);
function ensure(
obj, name, factory
) {
return obj[name] || (obj[name] = factory(
));
}
var angular = ensure(
window,
"angular",
Object
);
return (
(angular.$$minErr = angular.$$minErr || minErr),
ensure(
angular,
"module",
function (
) {
var modules = {
};
return function (
name, requires, configFn
) {
return (
(function (
name, context
) {
if ("hasOwnProperty" === name)
throw ngMinErr(
"badname",
"hasOwnProperty is not a valid {0} name",
"module",
);
})(
name
),
requires &&
modules.hasOwnProperty(
name
) &&
(modules[name] = null),
ensure(
modules,
name,
function (
) {
if (!requires)
throw $injectorMinErr(
"nomod",
"Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",
name,
);
var invokeQueue = [],
runBlocks = [],
config = invokeLater(
"$injector",
"invoke"
),
moduleInstance = {
_invokeQueue: invokeQueue,
_runBlocks: runBlocks,
requires: requires,
name: name,
provider: invokeLater(
"$provide",
"provider"
),
factory: invokeLater(
"$provide",
"factory"
),
service: invokeLater(
"$provide",
"service"
),
value: invokeLater(
"$provide",
"value"
),
constant: invokeLater(
"$provide",
"constant",
"unshift",
),
animation: invokeLater(
"$animateProvider",
"register"
),
filter: invokeLater(
"$filterProvider",
"register"
),
controller: invokeLater(
"$controllerProvider",
"register",
),
directive: invokeLater(
"$compileProvider",
"directive"
),
config: config,
run: function (
block
) {
return runBlocks.push(
block
), this;
},
};
return configFn && config(
configFn
), moduleInstance;
function invokeLater(
provider, method, insertMethod
) {
return function (
) {
return (
invokeQueue[insertMethod || "push"](
[
provider,
method,
arguments,
]
),
moduleInstance
);
};
}
}
)
);
};
}
)
);
})(
window
));
try {
angularModule(
"ngLocale"
);
} catch (e) {
angularModule(
"ngLocale",
[]
).provider(
"$locale",
$LocaleProvider
);
}
angularModule(
"ng",
["ngLocale",],
[
"$provide",
function (
$provide
) {
$provide.provider(
{
$$sanitizeUri: $$SanitizeUriProvider,
}
),
$provide
.provider(
"$compile",
$CompileProvider
)
.directive(
{
a: htmlAnchorDirective,
input: inputDirective,
textarea: inputDirective,
form: formDirective,
script: scriptDirective,
select: selectDirective,
style: styleDirective,
option: optionDirective,
ngBind: ngBindDirective,
ngBindHtml: ngBindHtmlDirective,
ngBindTemplate: ngBindTemplateDirective,
ngClass: ngClassDirective,
ngClassEven: ngClassEvenDirective,
ngClassOdd: ngClassOddDirective,
ngCloak: ngCloakDirective,
ngController: ngControllerDirective,
ngForm: ngFormDirective,
ngHide: ngHideDirective,
ngIf: ngIfDirective,
ngInclude: ngIncludeDirective,
ngInit: ngInitDirective,
ngNonBindable: ngNonBindableDirective,
ngPluralize: ngPluralizeDirective,
ngRepeat: ngRepeatDirective,
ngShow: ngShowDirective,
ngStyle: ngStyleDirective,
ngSwitch: ngSwitchDirective,
ngSwitchWhen: ngSwitchWhenDirective,
ngSwitchDefault: ngSwitchDefaultDirective,
ngOptions: ngOptionsDirective,
ngTransclude: ngTranscludeDirective,
ngModel: ngModelDirective,
ngList: ngListDirective,
ngChange: ngChangeDirective,
required: requiredDirective,
ngRequired: requiredDirective,
ngValue: ngValueDirective,
}
)
.directive(
{
ngInclude: ngIncludeFillContentDirective,
}
)
.directive(
ngAttributeAliasDirectives
)
.directive(
ngEventDirectives
),
$provide.provider(
{
$anchorScroll: $AnchorScrollProvider,
$animate: $AnimateProvider,
$browser: $BrowserProvider,
$cacheFactory: $CacheFactoryProvider,
$controller: $ControllerProvider,
$document: $DocumentProvider,
$exceptionHandler: $ExceptionHandlerProvider,
$filter: $FilterProvider,
$interpolate: $InterpolateProvider,
$interval: $IntervalProvider,
$http: $HttpProvider,
$httpBackend: $HttpBackendProvider,
$location: $LocationProvider,
$log: $LogProvider,
$parse: $ParseProvider,
$rootScope: $RootScopeProvider,
$q: $QProvider,
$sce: $SceProvider,
$sceDelegate: $SceDelegateProvider,
$sniffer: $SnifferProvider,
$templateCache: $TemplateCacheProvider,
$timeout: $TimeoutProvider,
$window: $WindowProvider,
}
);
},
],
);
})(
angular
),
jqLite(
document
).ready(
function (
) {
!(function (
element, bootstrap
) {
var appElement,
module,
elements = [element,],
names = ["ng:app", "ng-app", "x-ng-app", "data-ng-app",],
NG_APP_CLASS_REGEXP = /\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;
function append(
element
) {
element && elements.push(
element
);
}
forEach(
names,
function (
name
) {
(names[name] = !0),
append(
document.getElementById(
name
)
),
(name = name.replace(
":",
"\\:"
)),
element.querySelectorAll &&
(forEach(
element.querySelectorAll(
"." + name
),
append
),
forEach(
element.querySelectorAll(
"." + name + "\\:"
),
append
),
forEach(
element.querySelectorAll(
"[" + name + "]"
),
append
));
}
),
forEach(
elements,
function (
element
) {
if (!appElement) {
var className = " " + element.className + " ",
match = NG_APP_CLASS_REGEXP.exec(
className
);
match
? ((appElement = element),
(module = (match[2] || "").replace(
/\s+/g,
","
)))
: forEach(
element.attributes,
function (
attr
) {
!appElement &&
names[attr.name] &&
((appElement = element), (module = attr.value));
}
);
}
}
),
appElement && bootstrap(
appElement,
module ? [module,] : []
);
})(
document,
bootstrap
);
}
);
})(
window,
document
),
!angular.$$csp(
) &&
angular
.element(
document
)
.find(
"head"
)
.prepend(
'',
);