| 1 {"version":3,"file":"platform.js","sources":["../PointerGestures/src/PointerGest
ureEvent.js","../WeakMap/weakmap.js","../observe-js/src/observe.js","build/if-po
ly.js","../ShadowDOM/src/wrappers.js","../ShadowDOM/src/microtask.js","../Shadow
DOM/src/MutationObserver.js","../ShadowDOM/src/wrappers/events.js","../ShadowDOM
/src/wrappers/NodeList.js","../ShadowDOM/src/wrappers/Node.js","../ShadowDOM/src
/querySelector.js","../ShadowDOM/src/wrappers/node-interfaces.js","../ShadowDOM/
src/wrappers/CharacterData.js","../ShadowDOM/src/wrappers/Text.js","../ShadowDOM
/src/wrappers/Element.js","../ShadowDOM/src/wrappers/HTMLElement.js","../ShadowD
OM/src/wrappers/HTMLCanvasElement.js","../ShadowDOM/src/wrappers/HTMLContentElem
ent.js","../ShadowDOM/src/wrappers/HTMLImageElement.js","../ShadowDOM/src/wrappe
rs/HTMLShadowElement.js","../ShadowDOM/src/wrappers/HTMLTemplateElement.js","../
ShadowDOM/src/wrappers/HTMLMediaElement.js","../ShadowDOM/src/wrappers/HTMLAudio
Element.js","../ShadowDOM/src/wrappers/HTMLOptionElement.js","../ShadowDOM/src/w
rappers/HTMLUnknownElement.js","../ShadowDOM/src/wrappers/SVGElement.js","../Sha
dowDOM/src/wrappers/SVGUseElement.js","../ShadowDOM/src/wrappers/SVGElementInsta
nce.js","../ShadowDOM/src/wrappers/CanvasRenderingContext2D.js","../ShadowDOM/sr
c/wrappers/WebGLRenderingContext.js","../ShadowDOM/src/wrappers/Range.js","../Sh
adowDOM/src/wrappers/generic.js","../ShadowDOM/src/wrappers/ShadowRoot.js","../S
hadowDOM/src/ShadowRenderer.js","../ShadowDOM/src/wrappers/elements-with-form-pr
operty.js","../ShadowDOM/src/wrappers/Selection.js","../ShadowDOM/src/wrappers/D
ocument.js","../ShadowDOM/src/wrappers/Window.js","../ShadowDOM/src/wrappers/ove
rride-constructors.js","src/patches-shadowdom-polyfill.js","src/ShadowCSS.js","s
rc/patches-shadowdom-native.js","../URL/url.js","src/lang.js","src/dom.js","src/
template.js","src/inspector.js","src/unresolved.js","src/module.js","src/microta
sk.js","src/url.js","../MutationObservers/MutationObserver.js","../HTMLImports/s
rc/scope.js","../HTMLImports/src/Loader.js","../HTMLImports/src/Parser.js","../H
TMLImports/src/HTMLImports.js","../HTMLImports/src/Observer.js","../HTMLImports/
src/boot.js","../CustomElements/src/scope.js","../CustomElements/src/Observer.js
","../CustomElements/src/CustomElements.js","../CustomElements/src/Parser.js",".
./CustomElements/src/boot.js","src/patches-custom-elements.js","src/loader.js","
../PointerEvents/src/boot.js","../PointerEvents/src/touch-action.js","../Pointer
Events/src/PointerEvent.js","../PointerEvents/src/pointermap.js","../PointerEven
ts/src/dispatcher.js","../PointerEvents/src/installer.js","../PointerEvents/src/
mouse.js","../PointerEvents/src/touch.js","../PointerEvents/src/ms.js","../Point
erEvents/src/platform-events.js","../PointerEvents/src/capture.js","../PointerGe
stures/src/initialize.js","../PointerGestures/src/pointermap.js","../PointerGest
ures/src/dispatcher.js","../PointerGestures/src/hold.js","../PointerGestures/src
/track.js","../PointerGestures/src/flick.js","../PointerGestures/src/pinch.js","
../PointerGestures/src/tap.js","../NodeBind/src/NodeBind.js","../TemplateBinding
/src/TemplateBinding.js","../polymer-expressions/third_party/esprima/esprima.js"
,"../polymer-expressions/src/polymer-expressions.js","src/patches-mdv.js"],"name
s":[],"mappings":"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
KA,EAAA,MAAA,GAEA,OAAA","sourcesContent":["/*\n * Copyright 2013 The Polymer Aut
hors. All rights reserved.\n * Use of this source code is governed by a BSD-styl
e\n * license that can be found in the LICENSE file.\n */\n\n/**\n * PointerGest
ureEvent is the constructor for all PointerGesture events.\n *\n * @module Point
erGestures\n * @class PointerGestureEvent\n * @extends UIEvent\n * @constructor\
n * @param {String} inType Event type\n * @param {Object} [inDict] Dictionary of
properties to initialize on the event\n */\n\nfunction PointerGestureEvent(inTy
pe, inDict) {\n var dict = inDict || {};\n var e = document.createEvent('Event
');\n var props = {\n bubbles: Boolean(dict.bubbles) === dict.bubbles || tru
e,\n cancelable: Boolean(dict.cancelable) === dict.cancelable || true\n };\n
\n e.initEvent(inType, props.bubbles, props.cancelable);\n\n var keys = Object
.keys(dict), k;\n for (var i = 0; i < keys.length; i++) {\n k = keys[i];\n
e[k] = dict[k];\n }\n\n e.preventTap = this.preventTap;\n\n return e;\n}\n\
n/**\n * Allows for any gesture to prevent the tap gesture.\n *\n * @method prev
entTap\n */\nPointerGestureEvent.prototype.preventTap = function() {\n this.tap
Prevented = true;\n};\n\n","/*\n * Copyright 2012 The Polymer Authors. All right
s reserved.\n * Use of this source code is governed by a BSD-style\n * license t
hat can be found in the LICENSE file.\n */\n\nif (typeof WeakMap === 'undefined'
) {\n (function() {\n var defineProperty = Object.defineProperty;\n var c
ounter = Date.now() % 1e9;\n\n var WeakMap = function() {\n this.name =
'__st' + (Math.random() * 1e9 >>> 0) + (counter++ + '__');\n };\n\n WeakMa
p.prototype = {\n set: function(key, value) {\n var entry = key[this
.name];\n if (entry && entry[0] === key)\n entry[1] = value;\n
else\n defineProperty(key, this.name, {value: [key, value], writa
ble: true});\n },\n get: function(key) {\n var entry;\n
return (entry = key[this.name]) && entry[0] === key ?\n entry[1] : un
defined;\n },\n delete: function(key) {\n this.set(key, undefin
ed);\n }\n };\n\n window.WeakMap = WeakMap;\n })();\n}\n","// Copyri
ght 2012 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the
\"License\");\n// you may not use this file except in compliance with the Licen
se.\n// You may obtain a copy of the License at\n//\n// http://www.apache.or
g/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in
writing, software\n// distributed under the License is distributed on an \"AS I
S\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or i
mplied.\n// See the License for the specific language governing permissions and\
n// limitations under the License.\n\n(function(global) {\n 'use strict';\n\n
var PROP_ADD_TYPE = 'add';\n var PROP_UPDATE_TYPE = 'update';\n var PROP_RECON
FIGURE_TYPE = 'reconfigure';\n var PROP_DELETE_TYPE = 'delete';\n var ARRAY_SP
LICE_TYPE = 'splice';\n\n // Detect and do basic sanity checking on Object/Arra
y.observe.\n function detectObjectObserve() {\n if (typeof Object.observe !=
= 'function' ||\n typeof Array.observe !== 'function') {\n return fa
lse;\n }\n\n var records = [];\n\n function callback(recs) {\n rec
ords = recs;\n }\n\n var test = {};\n Object.observe(test, callback);\n
test.id = 1;\n test.id = 2;\n delete test.id;\n Object.deliverChang
eRecords(callback);\n if (records.length !== 3)\n return false;\n\n /
/ TODO(rafaelw): Remove this when new change record type names make it to\n /
/ chrome release.\n if (records[0].type == 'new' &&\n records[1].type
== 'updated' &&\n records[2].type == 'deleted') {\n PROP_ADD_TYPE =
'new';\n PROP_UPDATE_TYPE = 'updated';\n PROP_RECONFIGURE_TYPE = 'reco
nfigured';\n PROP_DELETE_TYPE = 'deleted';\n } else if (records[0].type
!= 'add' ||\n records[1].type != 'update' ||\n recor
ds[2].type != 'delete') {\n console.error('Unexpected change record names f
or Object.observe. ' +\n 'Using dirty-checking instead');\n
return false;\n }\n Object.unobserve(test, callback);\n\n test = [0
];\n Array.observe(test, callback);\n test[1] = 1;\n test.length = 0;\n
Object.deliverChangeRecords(callback);\n if (records.length != 2)\n
return false;\n if (records[0].type != ARRAY_SPLICE_TYPE ||\n records[
1].type != ARRAY_SPLICE_TYPE) {\n return false;\n }\n Array.unobserve
(test, callback);\n\n return true;\n }\n\n var hasObserve = detectObjectObs
erve();\n\n function detectEval() {\n // don't test for eval if document has
CSP securityPolicy object and we can see that\n // eval is not supported. Th
is avoids an error message in console even when the exception\n // is caught\
n if (global.document &&\n 'securityPolicy' in global.document &&\n
!global.document.securityPolicy.allowsEval) {\n return false;\n }\n
\n try {\n var f = new Function('', 'return true;');\n return f();\
n } catch (ex) {\n return false;\n }\n }\n\n var hasEval = detectEv
al();\n\n function isIndex(s) {\n return +s === s >>> 0;\n }\n\n function
toNumber(s) {\n return +s;\n }\n\n function isObject(obj) {\n return obj
=== Object(obj);\n }\n\n var numberIsNaN = global.Number.isNaN || function is
NaN(value) {\n return typeof value === 'number' && global.isNaN(value);\n }\
n\n function areSameValue(left, right) {\n if (left === right)\n return
left !== 0 || 1 / left === 1 / right;\n if (numberIsNaN(left) && numberIsNaN
(right))\n return true;\n\n return left !== left && right !== right;\n
}\n\n var createObject = ('__proto__' in {}) ?\n function(obj) { return obj;
} :\n function(obj) {\n var proto = obj.__proto__;\n if (!proto)\n
return obj;\n var newObject = Object.create(proto);\n Object.g
etOwnPropertyNames(obj).forEach(function(name) {\n Object.defineProperty(
newObject, name,\n Object.getOwnPropertyDescriptor(o
bj, name));\n });\n return newObject;\n };\n\n var identStart = '[
\\$_a-zA-Z]';\n var identPart = '[\\$_a-zA-Z0-9]';\n var ident = identStart +
'+' + identPart + '*';\n var elementIndex = '(?:[0-9]|[1-9]+[0-9]+)';\n var id
entOrElementIndex = '(?:' + ident + '|' + elementIndex + ')';\n var path = '(?:
' + identOrElementIndex + ')(?:\\\\s*\\\\.\\\\s*' + identOrElementIndex + ')*';\
n var pathRegExp = new RegExp('^' + path + '$');\n\n function isPathValid(s) {
\n if (typeof s != 'string')\n return false;\n s = s.trim();\n\n i
f (s == '')\n return true;\n\n if (s[0] == '.')\n return false;\n\n
return pathRegExp.test(s);\n }\n\n var constructorIsPrivate = {};\n\n fun
ction Path(s, privateToken) {\n if (privateToken !== constructorIsPrivate)\n
throw Error('Use Path.get to retrieve path objects');\n\n if (s.trim() =
= '')\n return this;\n\n if (isIndex(s)) {\n this.push(s);\n r
eturn this;\n }\n\n s.split(/\\s*\\.\\s*/).filter(function(part) {\n
return part;\n }).forEach(function(part) {\n this.push(part);\n }, th
is);\n\n if (hasEval && this.length) {\n this.getValueFrom = this.compil
edGetValueFromFn();\n }\n }\n\n // TODO(rafaelw): Make simple LRU cache\n
var pathCache = {};\n\n function getPath(pathString) {\n if (pathString inst
anceof Path)\n return pathString;\n\n if (pathString == null)\n pat
hString = '';\n\n if (typeof pathString !== 'string')\n pathString = Str
ing(pathString);\n\n var path = pathCache[pathString];\n if (path)\n
return path;\n if (!isPathValid(pathString))\n return invalidPath;\n
var path = new Path(pathString, constructorIsPrivate);\n pathCache[pathString
] = path;\n return path;\n }\n\n Path.get = getPath;\n\n Path.prototype =
createObject({\n __proto__: [],\n valid: true,\n\n toString: function()
{\n return this.join('.');\n },\n\n getValueFrom: function(obj, dire
ctObserver) {\n for (var i = 0; i < this.length; i++) {\n if (obj ==
null)\n return;\n obj = obj[this[i]];\n }\n return ob
j;\n },\n\n iterateObjects: function(obj, observe) {\n for (var i = 0
; i < this.length; i++) {\n if (i)\n obj = obj[this[i - 1]];\n
if (!obj)\n return;\n observe(obj);\n }\n },\n\n
compiledGetValueFromFn: function() {\n var accessors = this.map(function(
ident) {\n return isIndex(ident) ? '[\"' + ident + '\"]' : '.' + ident;\n
});\n\n var str = '';\n var pathString = 'obj';\n str += 'i
f (obj != null';\n var i = 0;\n for (; i < (this.length - 1); i++) {\n
var ident = this[i];\n pathString += accessors[i];\n str +
= ' &&\\n ' + pathString + ' != null';\n }\n str += ')\\n';\n\n
pathString += accessors[i];\n\n str += ' return ' + pathString + ';\\ne
lse\\n return undefined;';\n return new Function('obj', str);\n },\n\n
setValueFrom: function(obj, value) {\n if (!this.length)\n return
false;\n\n for (var i = 0; i < this.length - 1; i++) {\n if (!isObj
ect(obj))\n return false;\n obj = obj[this[i]];\n }\n\n
if (!isObject(obj))\n return false;\n\n obj[this[i]] = value;\n
return true;\n }\n });\n\n var invalidPath = new Path('', constructorIsP
rivate);\n invalidPath.valid = false;\n invalidPath.getValueFrom = invalidPath
.setValueFrom = function() {};\n\n var MAX_DIRTY_CHECK_CYCLES = 1000;\n\n func
tion dirtyCheck(observer) {\n var cycles = 0;\n while (cycles < MAX_DIRTY_
CHECK_CYCLES && observer.check_()) {\n cycles++;\n }\n if (global.tes
tingExposeCycleCount)\n global.dirtyCheckCycleCount = cycles;\n\n return
cycles > 0;\n }\n\n function objectIsEmpty(object) {\n for (var prop in ob
ject)\n return false;\n return true;\n }\n\n function diffIsEmpty(diff
) {\n return objectIsEmpty(diff.added) &&\n objectIsEmpty(diff.remo
ved) &&\n objectIsEmpty(diff.changed);\n }\n\n function diffObjectFr
omOldObject(object, oldObject) {\n var added = {};\n var removed = {};\n
var changed = {};\n\n for (var prop in oldObject) {\n var newValue = o
bject[prop];\n\n if (newValue !== undefined && newValue === oldObject[prop]
)\n continue;\n\n if (!(prop in object)) {\n removed[prop] =
undefined;\n continue;\n }\n\n if (newValue !== oldObject[prop]
)\n changed[prop] = newValue;\n }\n\n for (var prop in object) {\n
if (prop in oldObject)\n continue;\n\n added[prop] = object[pro
p];\n }\n\n if (Array.isArray(object) && object.length !== oldObject.lengt
h)\n changed.length = object.length;\n\n return {\n added: added,\n
removed: removed,\n changed: changed\n };\n }\n\n var eomTasks =
[];\n function runEOMTasks() {\n if (!eomTasks.length)\n return false;
\n\n for (var i = 0; i < eomTasks.length; i++) {\n eomTasks[i]();\n }
\n eomTasks.length = 0;\n return true;\n }\n\n var runEOM = hasObserve ?
(function(){\n var eomObj = { pingPong: true };\n var eomRunScheduled = f
alse;\n\n Object.observe(eomObj, function() {\n runEOMTasks();\n eo
mRunScheduled = false;\n });\n\n return function(fn) {\n eomTasks.pus
h(fn);\n if (!eomRunScheduled) {\n eomRunScheduled = true;\n
eomObj.pingPong = !eomObj.pingPong;\n }\n };\n })() :\n (function() {\
n return function(fn) {\n eomTasks.push(fn);\n };\n })();\n\n var o
bservedObjectCache = [];\n\n function newObservedObject() {\n var observer;\
n var object;\n var discardRecords = false;\n var first = true;\n\n
function callback(records) {\n if (observer && observer.state_ === OPENED &
& !discardRecords)\n observer.check_(records);\n }\n\n return {\n
open: function(obs) {\n if (observer)\n throw Error('Observe
dObject in use');\n\n if (!first)\n Object.deliverChangeRecords(
callback);\n\n observer = obs;\n first = false;\n },\n o
bserve: function(obj, arrayObserve) {\n object = obj;\n if (arrayO
bserve)\n Array.observe(object, callback);\n else\n Obj
ect.observe(object, callback);\n },\n deliver: function(discard) {\n
discardRecords = discard;\n Object.deliverChangeRecords(callback);\
n discardRecords = false;\n },\n close: function() {\n o
bserver = undefined;\n Object.unobserve(object, callback);\n obser
vedObjectCache.push(this);\n }\n };\n }\n\n function getObservedObject
(observer, object, arrayObserve) {\n var dir = observedObjectCache.pop() || n
ewObservedObject();\n dir.open(observer);\n dir.observe(object, arrayObser
ve);\n return dir;\n }\n\n var emptyArray = [];\n var observedSetCache = [
];\n\n function newObservedSet() {\n var observers = [];\n var observerCo
unt = 0;\n var objects = [];\n var toRemove = emptyArray;\n var resetNe
eded = false;\n var resetScheduled = false;\n\n function observe(obj) {\n
if (!isObject(obj))\n return;\n\n var index = toRemove.indexOf(
obj);\n if (index >= 0) {\n toRemove[index] = undefined;\n ob
jects.push(obj);\n } else if (objects.indexOf(obj) < 0) {\n objects.
push(obj);\n Object.observe(obj, callback);\n }\n\n observe(Obj
ect.getPrototypeOf(obj));\n }\n\n function reset() {\n resetScheduled
= false;\n if (!resetNeeded)\n return;\n\n var objs = toRemove
=== emptyArray ? [] : toRemove;\n toRemove = objects;\n objects = obj
s;\n\n var observer;\n for (var id in observers) {\n observer =
observers[id];\n if (!observer || observer.state_ != OPENED)\n
continue;\n\n observer.iterateObjects_(observe);\n }\n\n for (v
ar i = 0; i < toRemove.length; i++) {\n var obj = toRemove[i];\n i
f (obj)\n Object.unobserve(obj, callback);\n }\n\n toRemove.l
ength = 0;\n }\n\n function scheduleReset() {\n if (resetScheduled)\n
return;\n\n resetNeeded = true;\n resetScheduled = true;\n
runEOM(reset);\n }\n\n function callback() {\n var observer;\n\n
for (var id in observers) {\n observer = observers[id];\n if (!
observer || observer.state_ != OPENED)\n continue;\n\n observer.
check_();\n }\n\n scheduleReset();\n }\n\n var record = {\n
object: undefined,\n objects: objects,\n open: function(obs) {\n
observers[obs.id_] = obs;\n observerCount++;\n obs.iterateObjec
ts_(observe);\n },\n close: function(obs) {\n var anyLeft = fal
se;\n\n observers[obs.id_] = undefined;\n observerCount--;\n\n
if (observerCount) {\n scheduleReset();\n return;\n
}\n resetNeeded = false;\n\n for (var i = 0; i < objects.length;
i++) {\n Object.unobserve(objects[i], callback);\n Observer.un
observedCount++;\n }\n\n observers.length = 0;\n objects.le
ngth = 0;\n observedSetCache.push(this);\n },\n reset: schedule
Reset\n };\n\n return record;\n }\n\n var lastObservedSet;\n\n function
getObservedSet(observer, obj) {\n if (!lastObservedSet || lastObservedSet.ob
ject !== obj) {\n lastObservedSet = observedSetCache.pop() || newObservedSe
t();\n lastObservedSet.object = obj;\n }\n lastObservedSet.open(obser
ver);\n return lastObservedSet;\n }\n\n var UNOPENED = 0;\n var OPENED = 1
;\n var CLOSED = 2;\n var RESETTING = 3;\n\n var nextObserverId = 1;\n\n fun
ction Observer() {\n this.state_ = UNOPENED;\n this.callback_ = undefined;
\n this.target_ = undefined; // TODO(rafaelw): Should be WeakRef\n this.di
rectObserver_ = undefined;\n this.value_ = undefined;\n this.id_ = nextObs
erverId++;\n }\n\n Observer.prototype = {\n open: function(callback, target
) {\n if (this.state_ != UNOPENED)\n throw Error('Observer has alrea
dy been opened.');\n\n addToAll(this);\n this.callback_ = callback;\n
this.target_ = target;\n this.state_ = OPENED;\n this.connect_();
\n return this.value_;\n },\n\n close: function() {\n if (this.s
tate_ != OPENED)\n return;\n\n removeFromAll(this);\n this.stat
e_ = CLOSED;\n this.disconnect_();\n this.value_ = undefined;\n t
his.callback_ = undefined;\n this.target_ = undefined;\n },\n\n deliv
er: function() {\n if (this.state_ != OPENED)\n return;\n\n dir
tyCheck(this);\n },\n\n report_: function(changes) {\n try {\n
this.callback_.apply(this.target_, changes);\n } catch (ex) {\n Obs
erver._errorThrownDuringCallback = true;\n console.error('Exception caugh
t during observer callback: ' +\n (ex.stack || ex));\n
}\n },\n\n discardChanges: function() {\n this.check_(undefined, tr
ue);\n return this.value_;\n }\n }\n\n var collectObservers = !hasObse
rve;\n var allObservers;\n Observer._allObserversCount = 0;\n\n if (collectOb
servers) {\n allObservers = [];\n }\n\n function addToAll(observer) {\n
Observer._allObserversCount++;\n if (!collectObservers)\n return;\n\n
allObservers.push(observer);\n }\n\n function removeFromAll(observer) {\n
Observer._allObserversCount--;\n }\n\n var runningMicrotaskCheckpoint = false;
\n\n var hasDebugForceFullDelivery = typeof Object.deliverAllChangeRecords == '
function';\n\n global.Platform = global.Platform || {};\n\n global.Platform.pe
rformMicrotaskCheckpoint = function() {\n if (runningMicrotaskCheckpoint)\n
return;\n\n if (hasDebugForceFullDelivery) {\n Object.deliverAllChan
geRecords();\n return;\n }\n\n if (!collectObservers)\n return;\
n\n runningMicrotaskCheckpoint = true;\n\n var cycles = 0;\n var anyCha
nged, toCheck;\n\n do {\n cycles++;\n toCheck = allObservers;\n
allObservers = [];\n anyChanged = false;\n\n for (var i = 0; i < toC
heck.length; i++) {\n var observer = toCheck[i];\n if (observer.st
ate_ != OPENED)\n continue;\n\n if (observer.check_())\n
anyChanged = true;\n\n allObservers.push(observer);\n }\n if
(runEOMTasks())\n anyChanged = true;\n } while (cycles < MAX_DIRTY_CHE
CK_CYCLES && anyChanged);\n\n if (global.testingExposeCycleCount)\n glob
al.dirtyCheckCycleCount = cycles;\n\n runningMicrotaskCheckpoint = false;\n
};\n\n if (collectObservers) {\n global.Platform.clearObservers = function()
{\n allObservers = [];\n };\n }\n\n function ObjectObserver(object) {
\n Observer.call(this);\n this.value_ = object;\n this.oldObject_ = und
efined;\n }\n\n ObjectObserver.prototype = createObject({\n __proto__: Obse
rver.prototype,\n\n arrayObserve: false,\n\n connect_: function(callback,
target) {\n if (hasObserve) {\n this.directObserver_ = getObservedOb
ject(this, this.value_,\n this.a
rrayObserve);\n } else {\n this.oldObject_ = this.copyObject(this.va
lue_);\n }\n\n },\n\n copyObject: function(object) {\n var copy
= Array.isArray(object) ? [] : {};\n for (var prop in object) {\n co
py[prop] = object[prop];\n };\n if (Array.isArray(object))\n co
py.length = object.length;\n return copy;\n },\n\n check_: function(c
hangeRecords, skipChanges) {\n var diff;\n var oldValues;\n if (h
asObserve) {\n if (!changeRecords)\n return false;\n\n ol
dValues = {};\n diff = diffObjectFromChangeRecords(this.value_, changeRec
ords,\n oldValues);\n } else {\n
oldValues = this.oldObject_;\n diff = diffObjectFromOldObject(this
.value_, this.oldObject_);\n }\n\n if (diffIsEmpty(diff))\n ret
urn false;\n\n if (!hasObserve)\n this.oldObject_ = this.copyObject(
this.value_);\n\n this.report_([\n diff.added || {},\n diff.r
emoved || {},\n diff.changed || {},\n function(property) {\n
return oldValues[property];\n }\n ]);\n\n return true;\n
},\n\n disconnect_: function() {\n if (hasObserve) {\n this.dire
ctObserver_.close();\n this.directObserver_ = undefined;\n } else {\
n this.oldObject_ = undefined;\n }\n },\n\n deliver: function(
) {\n if (this.state_ != OPENED)\n return;\n\n if (hasObserve)\
n this.directObserver_.deliver(false);\n else\n dirtyCheck(th
is);\n },\n\n discardChanges: function() {\n if (this.directObserver_
)\n this.directObserver_.deliver(true);\n else\n this.oldObje
ct_ = this.copyObject(this.value_);\n\n return this.value_;\n }\n });\n
\n function ArrayObserver(array) {\n if (!Array.isArray(array))\n throw
Error('Provided object is not an Array');\n ObjectObserver.call(this, array)
;\n }\n\n ArrayObserver.prototype = createObject({\n\n __proto__: ObjectObs
erver.prototype,\n\n arrayObserve: true,\n\n copyObject: function(arr) {\n
return arr.slice();\n },\n\n check_: function(changeRecords) {\n
var splices;\n if (hasObserve) {\n if (!changeRecords)\n
return false;\n splices = projectArraySplices(this.value_, changeRecords)
;\n } else {\n splices = calcSplices(this.value_, 0, this.value_.len
gth,\n this.oldObject_, 0, this.oldObject_.length);
\n }\n\n if (!splices || !splices.length)\n return false;\n\n
if (!hasObserve)\n this.oldObject_ = this.copyObject(this.value_);\n\
n this.report_([splices]);\n return true;\n }\n });\n\n ArrayObse
rver.applySplices = function(previous, current, splices) {\n splices.forEach(
function(splice) {\n var spliceArgs = [splice.index, splice.removed.length]
;\n var addIndex = splice.index;\n while (addIndex < splice.index + sp
lice.addedCount) {\n spliceArgs.push(current[addIndex]);\n addInde
x++;\n }\n\n Array.prototype.splice.apply(previous, spliceArgs);\n
});\n };\n\n function PathObserver(object, path) {\n Observer.call(this);\n
\n this.object_ = object;\n this.path_ = path instanceof Path ? path : get
Path(path);\n this.directObserver_ = undefined;\n }\n\n PathObserver.protot
ype = createObject({\n __proto__: Observer.prototype,\n\n connect_: functi
on() {\n if (hasObserve)\n this.directObserver_ = getObservedSet(thi
s, this.object_);\n\n this.check_(undefined, true);\n },\n\n disconne
ct_: function() {\n this.value_ = undefined;\n\n if (this.directObserv
er_) {\n this.directObserver_.close(this);\n this.directObserver_
= undefined;\n }\n },\n\n iterateObjects_: function(observe) {\n
this.path_.iterateObjects(this.object_, observe);\n },\n\n check_: functi
on(changeRecords, skipChanges) {\n var oldValue = this.value_;\n this.
value_ = this.path_.getValueFrom(this.object_);\n if (skipChanges || areSam
eValue(this.value_, oldValue))\n return false;\n\n this.report_([thi
s.value_, oldValue]);\n return true;\n },\n\n setValue: function(newV
alue) {\n if (this.path_)\n this.path_.setValueFrom(this.object_, ne
wValue);\n }\n });\n\n function CompoundObserver() {\n Observer.call(thi
s);\n\n this.value_ = [];\n this.directObserver_ = undefined;\n this.ob
served_ = [];\n }\n\n var observerSentinel = {};\n\n CompoundObserver.prototy
pe = createObject({\n __proto__: Observer.prototype,\n\n connect_: functio
n() {\n this.check_(undefined, true);\n\n if (!hasObserve)\n re
turn;\n\n var object;\n var needsDirectObserver = false;\n for (v
ar i = 0; i < this.observed_.length; i += 2) {\n object = this.observed_[
i]\n if (object !== observerSentinel) {\n needsDirectObserver =
true;\n break;\n }\n }\n\n if (this.directObserver_) {
\n if (needsDirectObserver) {\n this.directObserver_.reset();\n
return;\n }\n this.directObserver_.close();\n this
.directObserver_ = undefined;\n return;\n }\n\n if (needsDirect
Observer)\n this.directObserver_ = getObservedSet(this, object);\n },\
n\n closeObservers_: function() {\n for (var i = 0; i < this.observed_.l
ength; i += 2) {\n if (this.observed_[i] === observerSentinel)\n
this.observed_[i + 1].close();\n }\n this.observed_.length = 0;\n
},\n\n disconnect_: function() {\n this.value_ = undefined;\n\n if
(this.directObserver_) {\n this.directObserver_.close(this);\n thi
s.directObserver_ = undefined;\n }\n\n this.closeObservers_();\n },
\n\n addPath: function(object, path) {\n if (this.state_ != UNOPENED &&
this.state_ != RESETTING)\n throw Error('Cannot add paths once started.')
;\n\n this.observed_.push(object, path instanceof Path ? path : getPath(pat
h));\n },\n\n addObserver: function(observer) {\n if (this.state_ !=
UNOPENED && this.state_ != RESETTING)\n throw Error('Cannot add observers
once started.');\n\n observer.open(this.deliver, this);\n this.observ
ed_.push(observerSentinel, observer);\n },\n\n startReset: function() {\n
if (this.state_ != OPENED)\n throw Error('Can only reset while open'
);\n\n this.state_ = RESETTING;\n this.closeObservers_();\n },\n\n
finishReset: function() {\n if (this.state_ != RESETTING)\n throw
Error('Can only finishReset after startReset');\n this.state_ = OPENED;\n
this.connect_();\n\n return this.value_;\n },\n\n iterateObjects
_: function(observe) {\n var object;\n for (var i = 0; i < this.observ
ed_.length; i += 2) {\n object = this.observed_[i]\n if (object !=
= observerSentinel)\n this.observed_[i + 1].iterateObjects(object, obse
rve)\n }\n },\n\n check_: function(changeRecords, skipChanges) {\n
var oldValues;\n for (var i = 0; i < this.observed_.length; i += 2) {\n
var pathOrObserver = this.observed_[i+1];\n var object = this.obse
rved_[i];\n var value = object === observerSentinel ?\n pathOr
Observer.discardChanges() :\n pathOrObserver.getValueFrom(object)\n\n
if (skipChanges) {\n this.value_[i / 2] = value;\n con
tinue;\n }\n\n if (areSameValue(value, this.value_[i / 2]))\n
continue;\n\n oldValues = oldValues || [];\n oldValues[i / 2]
= this.value_[i / 2];\n this.value_[i / 2] = value;\n }\n\n if
(!oldValues)\n return false;\n\n // TODO(rafaelw): Having observed_
as the third callback arg here is\n // pretty lame API. Fix.\n this.r
eport_([this.value_, oldValues, this.observed_]);\n return true;\n }\n
});\n\n function identFn(value) { return value; }\n\n function ObserverTransfo
rm(observable, getValueFn, setValueFn,\n dontPassThr
oughSet) {\n this.callback_ = undefined;\n this.target_ = undefined;\n
this.value_ = undefined;\n this.observable_ = observable;\n this.getValueF
n_ = getValueFn || identFn;\n this.setValueFn_ = setValueFn || identFn;\n
// TODO(rafaelw): This is a temporary hack. PolymerExpressions needs this\n /
/ at the moment because of a bug in it's dependency tracking.\n this.dontPass
ThroughSet_ = dontPassThroughSet;\n }\n\n ObserverTransform.prototype = {\n
open: function(callback, target) {\n this.callback_ = callback;\n thi
s.target_ = target;\n this.value_ =\n this.getValueFn_(this.observ
able_.open(this.observedCallback_, this));\n return this.value_;\n },\n\
n observedCallback_: function(value) {\n value = this.getValueFn_(value)
;\n if (areSameValue(value, this.value_))\n return;\n var oldVa
lue = this.value_;\n this.value_ = value;\n this.callback_.call(this.t
arget_, this.value_, oldValue);\n },\n\n discardChanges: function() {\n
this.value_ = this.getValueFn_(this.observable_.discardChanges());\n ret
urn this.value_;\n },\n\n deliver: function() {\n return this.observa
ble_.deliver();\n },\n\n setValue: function(value) {\n value = this.s
etValueFn_(value);\n if (!this.dontPassThroughSet_ && this.observable_.setV
alue)\n return this.observable_.setValue(value);\n },\n\n close: fu
nction() {\n if (this.observable_)\n this.observable_.close();\n
this.callback_ = undefined;\n this.target_ = undefined;\n this.obser
vable_ = undefined;\n this.value_ = undefined;\n this.getValueFn_ = un
defined;\n this.setValueFn_ = undefined;\n }\n }\n\n var expectedRecor
dTypes = {};\n expectedRecordTypes[PROP_ADD_TYPE] = true;\n expectedRecordType
s[PROP_UPDATE_TYPE] = true;\n expectedRecordTypes[PROP_DELETE_TYPE] = true;\n\n
function notifyFunction(object, name) {\n if (typeof Object.observe !== 'fu
nction')\n return;\n\n var notifier = Object.getNotifier(object);\n r
eturn function(type, oldValue) {\n var changeRecord = {\n object: ob
ject,\n type: type,\n name: name\n };\n if (arguments.le
ngth === 2)\n changeRecord.oldValue = oldValue;\n notifier.notify(ch
angeRecord);\n }\n }\n\n Observer.defineComputedProperty = function(target,
name, observable) {\n var notify = notifyFunction(target, name);\n var va
lue = observable.open(function(newValue, oldValue) {\n value = newValue;\n
if (notify)\n notify(PROP_UPDATE_TYPE, oldValue);\n });\n\n Ob
ject.defineProperty(target, name, {\n get: function() {\n observable
.deliver();\n return value;\n },\n set: function(newValue) {\n
observable.setValue(newValue);\n return newValue;\n },\n
configurable: true\n });\n\n return {\n close: function() {\n
observable.close();\n Object.defineProperty(target, name, {\n v
alue: value,\n writable: true,\n configurable: true\n }
);\n }\n };\n }\n\n function diffObjectFromChangeRecords(object, chang
eRecords, oldValues) {\n var added = {};\n var removed = {};\n\n for (v
ar i = 0; i < changeRecords.length; i++) {\n var record = changeRecords[i];
\n if (!expectedRecordTypes[record.type]) {\n console.error('Unknown
changeRecord type: ' + record.type);\n console.error(record);\n c
ontinue;\n }\n\n if (!(record.name in oldValues))\n oldValues[r
ecord.name] = record.oldValue;\n\n if (record.type == PROP_UPDATE_TYPE)\n
continue;\n\n if (record.type == PROP_ADD_TYPE) {\n if (record
.name in removed)\n delete removed[record.name];\n else\n
added[record.name] = true;\n\n continue;\n }\n\n // type = '
delete'\n if (record.name in added) {\n delete added[record.name];\n
delete oldValues[record.name];\n } else {\n removed[record.n
ame] = true;\n }\n }\n\n for (var prop in added)\n added[prop] =
object[prop];\n\n for (var prop in removed)\n removed[prop] = undefined
;\n\n var changed = {};\n for (var prop in oldValues) {\n if (prop in
added || prop in removed)\n continue;\n\n var newValue = object[pro
p];\n if (oldValues[prop] !== newValue)\n changed[prop] = newValue;\
n }\n\n return {\n added: added,\n removed: removed,\n chan
ged: changed\n };\n }\n\n function newSplice(index, removed, addedCount) {\
n return {\n index: index,\n removed: removed,\n addedCount: a
ddedCount\n };\n }\n\n var EDIT_LEAVE = 0;\n var EDIT_UPDATE = 1;\n var E
DIT_ADD = 2;\n var EDIT_DELETE = 3;\n\n function ArraySplice() {}\n\n ArraySp
lice.prototype = {\n\n // Note: This function is *based* on the computation o
f the Levenshtein\n // \"edit\" distance. The one change is that \"updates\"
are treated as two\n // edits - not one. With Array splices, an update is rea
lly a delete\n // followed by an add. By retaining this, we optimize for \"ke
eping\" the\n // maximum array items in the original array. For example:\n
//\n // 'xxxx123' -> '123yyyy'\n //\n // With 1-edit updates, the sh
ortest path would be just to update all seven\n // characters. With 2-edit up
dates, we delete 4, leave 3, and add 4. This\n // leaves the substring '123'
intact.\n calcEditDistances: function(current, currentStart, currentEnd,\n
old, oldStart, oldEnd) {\n // \"Deletion\" col
umns\n var rowCount = oldEnd - oldStart + 1;\n var columnCount = curre
ntEnd - currentStart + 1;\n var distances = new Array(rowCount);\n\n /
/ \"Addition\" rows. Initialize null column.\n for (var i = 0; i < rowCount
; i++) {\n distances[i] = new Array(columnCount);\n distances[i][0
] = i;\n }\n\n // Initialize null row\n for (var j = 0; j < colum
nCount; j++)\n distances[0][j] = j;\n\n for (var i = 1; i < rowCount
; i++) {\n for (var j = 1; j < columnCount; j++) {\n if (this.eq
uals(current[currentStart + j - 1], old[oldStart + i - 1]))\n distanc
es[i][j] = distances[i - 1][j - 1];\n else {\n var north = d
istances[i - 1][j] + 1;\n var west = distances[i][j - 1] + 1;\n
distances[i][j] = north < west ? north : west;\n }\n }\n
}\n\n return distances;\n },\n\n // This starts at the final weig
ht, and walks \"backward\" by finding\n // the minimum previous weight recurs
ively until the origin of the weight\n // matrix.\n spliceOperationsFromEd
itDistances: function(distances) {\n var i = distances.length - 1;\n v
ar j = distances[0].length - 1;\n var current = distances[i][j];\n var
edits = [];\n while (i > 0 || j > 0) {\n if (i == 0) {\n e
dits.push(EDIT_ADD);\n j--;\n continue;\n }\n if
(j == 0) {\n edits.push(EDIT_DELETE);\n i--;\n conti
nue;\n }\n var northWest = distances[i - 1][j - 1];\n var w
est = distances[i - 1][j];\n var north = distances[i][j - 1];\n\n
var min;\n if (west < north)\n min = west < northWest ? west : n
orthWest;\n else\n min = north < northWest ? north : northWest;\
n\n if (min == northWest) {\n if (northWest == current) {\n
edits.push(EDIT_LEAVE);\n } else {\n edits.push(EDIT_
UPDATE);\n current = northWest;\n }\n i--;\n
j--;\n } else if (min == west) {\n edits.push(EDIT_DELETE);\n
i--;\n current = west;\n } else {\n edits.pus
h(EDIT_ADD);\n j--;\n current = north;\n }\n }\n\n
edits.reverse();\n return edits;\n },\n\n /**\n * Splice Pr
ojection functions:\n *\n * A splice map is a representation of how a pr
evious array of items\n * was transformed into a new array of items. Concept
ually it is a list of\n * tuples of\n *\n * <index, removed, added
Count>\n *\n * which are kept in ascending index order of. The tuple rep
resents that at\n * the |index|, |removed| sequence of items were removed, a
nd counting forward\n * from |index|, |addedCount| items were added.\n *
/\n\n /**\n * Lacking individual splice mutation information, the minimal
set of\n * splices can be synthesized given the previous state and final st
ate of an\n * array. The basic approach is to calculate the edit distance ma
trix and\n * choose the shortest path through it.\n *\n * Complexity
: O(l * p)\n * l: The length of the current array\n * p: The length
of the old array\n */\n calcSplices: function(current, currentStart, curr
entEnd,\n old, oldStart, oldEnd) {\n var prefixCou
nt = 0;\n var suffixCount = 0;\n\n var minLength = Math.min(currentEnd
- currentStart, oldEnd - oldStart);\n if (currentStart == 0 && oldStart ==
0)\n prefixCount = this.sharedPrefix(current, old, minLength);\n\n
if (currentEnd == current.length && oldEnd == old.length)\n suffixCount =
this.sharedSuffix(current, old, minLength - prefixCount);\n\n currentStart
+= prefixCount;\n oldStart += prefixCount;\n currentEnd -= suffixCoun
t;\n oldEnd -= suffixCount;\n\n if (currentEnd - currentStart == 0 &&
oldEnd - oldStart == 0)\n return [];\n\n if (currentStart == current
End) {\n var splice = newSplice(currentStart, [], 0);\n while (old
Start < oldEnd)\n splice.removed.push(old[oldStart++]);\n\n retu
rn [ splice ];\n } else if (oldStart == oldEnd)\n return [ newSplice
(currentStart, [], currentEnd - currentStart) ];\n\n var ops = this.spliceO
perationsFromEditDistances(\n this.calcEditDistances(current, currentSt
art, currentEnd,\n old, oldStart, oldEnd));\n\n
var splice = undefined;\n var splices = [];\n var index = current
Start;\n var oldIndex = oldStart;\n for (var i = 0; i < ops.length; i+
+) {\n switch(ops[i]) {\n case EDIT_LEAVE:\n if (spli
ce) {\n splices.push(splice);\n splice = undefined;\n
}\n\n index++;\n oldIndex++;\n break
;\n case EDIT_UPDATE:\n if (!splice)\n splice =
newSplice(index, [], 0);\n\n splice.addedCount++;\n index
++;\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\
n break;\n case EDIT_ADD:\n if (!splice)\n
splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n
index++;\n break;\n case EDIT_DELETE:\n
if (!splice)\n splice = newSplice(index, [], 0);\n\n sp
lice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n
}\n }\n\n if (splice) {\n splices.push(splice);\n
}\n return splices;\n },\n\n sharedPrefix: function(current, old, sea
rchLength) {\n for (var i = 0; i < searchLength; i++)\n if (!this.eq
uals(current[i], old[i]))\n return i;\n return searchLength;\n
},\n\n sharedSuffix: function(current, old, searchLength) {\n var index1
= current.length;\n var index2 = old.length;\n var count = 0;\n
while (count < searchLength && this.equals(current[--index1], old[--index2]))\n
count++;\n\n return count;\n },\n\n calculateSplices: function
(current, previous) {\n return this.calcSplices(current, 0, current.length,
previous, 0,\n previous.length);\n },\n\n eq
uals: function(currentValue, previousValue) {\n return currentValue === pre
viousValue;\n }\n };\n\n var arraySplice = new ArraySplice();\n\n function
calcSplices(current, currentStart, currentEnd,\n old, old
Start, oldEnd) {\n return arraySplice.calcSplices(current, currentStart, curr
entEnd,\n old, oldStart, oldEnd);\n }\n\n fu
nction intersect(start1, end1, start2, end2) {\n // Disjoint\n if (end1 <
start2 || end2 < start1)\n return -1;\n\n // Adjacent\n if (end1 == s
tart2 || end2 == start1)\n return 0;\n\n // Non-zero intersect, span1 fi
rst\n if (start1 < start2) {\n if (end1 < end2)\n return end1 - s
tart2; // Overlap\n else\n return end2 - start2; // Contained\n }
else {\n // Non-zero intersect, span2 first\n if (end2 < end1)\n
return end2 - start1; // Overlap\n else\n return end1 - start1; /
/ Contained\n }\n }\n\n function mergeSplice(splices, index, removed, added
Count) {\n\n var splice = newSplice(index, removed, addedCount);\n\n var i
nserted = false;\n var insertionOffset = 0;\n\n for (var i = 0; i < splice
s.length; i++) {\n var current = splices[i];\n current.index += insert
ionOffset;\n\n if (inserted)\n continue;\n\n var intersectCount
= intersect(splice.index,\n splice.index +
splice.removed.length,\n current.index,\n
current.index + current.addedCount);\n\n
if (intersectCount >= 0) {\n // Merge the two splices\n\n splices.
splice(i, 1);\n i--;\n\n insertionOffset -= current.addedCount - c
urrent.removed.length;\n\n splice.addedCount += current.addedCount - inte
rsectCount;\n var deleteCount = splice.removed.length +\n
current.removed.length - intersectCount;\n\n if (!splice.addedC
ount && !deleteCount) {\n // merged splice is a noop. discard.\n
inserted = true;\n } else {\n var removed = current.removed;\
n\n if (splice.index < current.index) {\n // some prefix of
splice.removed is prepended to current.removed.\n var prepend = splic
e.removed.slice(0, current.index - splice.index);\n Array.prototype.p
ush.apply(prepend, removed);\n removed = prepend;\n }\n\n
if (splice.index + splice.removed.length > current.index + current.addedC
ount) {\n // some suffix of splice.removed is appended to current.rem
oved.\n var append = splice.removed.slice(current.index + current.add
edCount - splice.index);\n Array.prototype.push.apply(removed, append
);\n }\n\n splice.removed = removed;\n if (current.in
dex < splice.index) {\n splice.index = current.index;\n }\n
}\n } else if (splice.index < current.index) {\n // Insert sp
lice here.\n\n inserted = true;\n\n splices.splice(i, 0, splice);\
n i++;\n\n var offset = splice.addedCount - splice.removed.length\
n current.index += offset;\n insertionOffset += offset;\n }\n
}\n\n if (!inserted)\n splices.push(splice);\n }\n\n function crea
teInitialSplices(array, changeRecords) {\n var splices = [];\n\n for (var
i = 0; i < changeRecords.length; i++) {\n var record = changeRecords[i];\n
switch(record.type) {\n case ARRAY_SPLICE_TYPE:\n mergeSpli
ce(splices, record.index, record.removed.slice(), record.addedCount);\n
break;\n case PROP_ADD_TYPE:\n case PROP_UPDATE_TYPE:\n ca
se PROP_DELETE_TYPE:\n if (!isIndex(record.name))\n continue
;\n var index = toNumber(record.name);\n if (index < 0)\n
continue;\n mergeSplice(splices, index, [record.oldValue], 1);\n
break;\n default:\n console.error('Unexpected record t
ype: ' + JSON.stringify(record));\n break;\n }\n }\n\n retur
n splices;\n }\n\n function projectArraySplices(array, changeRecords) {\n v
ar splices = [];\n\n createInitialSplices(array, changeRecords).forEach(funct
ion(splice) {\n if (splice.addedCount == 1 && splice.removed.length == 1) {
\n if (splice.removed[0] !== array[splice.index])\n splices.push
(splice);\n\n return\n };\n\n splices = splices.concat(calcSpli
ces(array, splice.index, splice.index + splice.addedCount,\n
splice.removed, 0, splice.removed.length));\n });\n\n
return splices;\n }\n\n global.Observer = Observer;\n global.Observer.runE
OM_ = runEOM;\n global.Observer.hasObjectObserve = hasObserve;\n global.ArrayO
bserver = ArrayObserver;\n global.ArrayObserver.calculateSplices = function(cur
rent, previous) {\n return arraySplice.calculateSplices(current, previous);\n
};\n\n global.ArraySplice = ArraySplice;\n global.ObjectObserver = ObjectObs
erver;\n global.PathObserver = PathObserver;\n global.CompoundObserver = Compo
undObserver;\n global.Path = Path;\n global.ObserverTransform = ObserverTransf
orm;\n\n // TODO(rafaelw): Only needed for testing until new change record name
s\n // make it to release.\n global.Observer.changeRecordTypes = {\n add: P
ROP_ADD_TYPE,\n update: PROP_UPDATE_TYPE,\n reconfigure: PROP_RECONFIGURE_
TYPE,\n 'delete': PROP_DELETE_TYPE,\n splice: ARRAY_SPLICE_TYPE\n };\n})(
typeof global !== 'undefined' && global && typeof module !== 'undefined' && modu
le ? global : this || window);\n","// prepoulate window.Platform.flags for defau
lt controls\r\nwindow.Platform = window.Platform || {};\r\n// prepopulate window
.logFlags if necessary\r\nwindow.logFlags = window.logFlags || {};\r\n// process
flags\r\n(function(scope){\r\n // import\r\n var flags = scope.flags || {};\r
\n // populate flags from location\r\n location.search.slice(1).split('&').for
Each(function(o) {\r\n o = o.split('=');\r\n o[0] && (flags[o[0]] = o[1] |
| true);\r\n });\r\n var entryPoint = document.currentScript || document.query
Selector('script[src*=\"platform.js\"]');\r\n if (entryPoint) {\r\n var a =
entryPoint.attributes;\r\n for (var i = 0, n; i < a.length; i++) {\r\n n
= a[i];\r\n if (n.name !== 'src') {\r\n flags[n.name] = n.value ||
true;\r\n }\r\n }\r\n }\r\n if (flags.log) {\r\n flags.log.split(',
').forEach(function(f) {\r\n window.logFlags[f] = true;\r\n });\r\n }\r
\n // If any of these flags match 'native', then force native ShadowDOM; any\r\
n // other truthy value, or failure to detect native\r\n // ShadowDOM, results
in polyfill\r\n flags.shadow = (flags.shadow || flags.shadowdom || flags.polyf
ill);\r\n if (flags.shadow === 'native') {\r\n flags.shadow = false;\r\n }
else {\r\n flags.shadow = flags.shadow || !HTMLElement.prototype.createShadow
Root;\r\n }\r\n\r\n // CustomElements polyfill flag\r\n if (flags.register) {
\r\n window.CustomElements = window.CustomElements || {flags: {}};\r\n win
dow.CustomElements.flags.register = flags.register;\r\n }\r\n\r\n if (flags.im
ports) {\r\n window.HTMLImports = window.HTMLImports || {flags: {}};\r\n w
indow.HTMLImports.flags.imports = flags.imports;\r\n }\r\n\r\n // export\r\n
scope.flags = flags;\r\n})(Platform);\r\n\r\n// select ShadowDOM impl\r\nif (Pla
tform.flags.shadow) {\r\n","// Copyright 2012 The Polymer Authors. All rights re
served.\n// Use of this source code is goverened by a BSD-style\n// license that
can be found in the LICENSE file.\n\nwindow.ShadowDOMPolyfill = {};\n\n(functio
n(scope) {\n 'use strict';\n\n var constructorTable = new WeakMap();\n var na
tivePrototypeTable = new WeakMap();\n var wrappers = Object.create(null);\n\n
// Don't test for eval if document has CSP securityPolicy object and we can\n /
/ see that eval is not supported. This avoids an error message in console\n //
even when the exception is caught\n var hasEval = !('securityPolicy' in documen
t) ||\n document.securityPolicy.allowsEval;\n if (hasEval) {\n try {\n
var f = new Function('', 'return true;');\n hasEval = f();\n } catc
h (ex) {\n hasEval = false;\n }\n }\n\n function assert(b) {\n if (
!b)\n throw new Error('Assertion failed');\n };\n\n var defineProperty =
Object.defineProperty;\n var getOwnPropertyNames = Object.getOwnPropertyNames;\
n var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n function
mixin(to, from) {\n getOwnPropertyNames(from).forEach(function(name) {\n
defineProperty(to, name, getOwnPropertyDescriptor(from, name));\n });\n
return to;\n };\n\n function mixinStatics(to, from) {\n getOwnPropertyNames
(from).forEach(function(name) {\n switch (name) {\n case 'arguments'
:\n case 'caller':\n case 'length':\n case 'name':\n
case 'prototype':\n case 'toString':\n return;\n }\n
defineProperty(to, name, getOwnPropertyDescriptor(from, name));\n });\n re
turn to;\n };\n\n function oneOf(object, propertyNames) {\n for (var i = 0;
i < propertyNames.length; i++) {\n if (propertyNames[i] in object)\n
return propertyNames[i];\n }\n }\n\n // Mozilla's old DOM bindings are br
etty busted:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=855844\n // Mak
e sure they are create before we start modifying things.\n getOwnPropertyNames(
window);\n\n function getWrapperConstructor(node) {\n var nativePrototype =
node.__proto__ || Object.getPrototypeOf(node);\n var wrapperConstructor = con
structorTable.get(nativePrototype);\n if (wrapperConstructor)\n return w
rapperConstructor;\n\n var parentWrapperConstructor = getWrapperConstructor(n
ativePrototype);\n\n var GeneratedWrapper = createWrapperConstructor(parentWr
apperConstructor);\n registerInternal(nativePrototype, GeneratedWrapper, node
);\n\n return GeneratedWrapper;\n }\n\n function addForwardingProperties(na
tivePrototype, wrapperPrototype) {\n installProperty(nativePrototype, wrapper
Prototype, true);\n }\n\n function registerInstanceProperties(wrapperPrototype
, instanceObject) {\n installProperty(instanceObject, wrapperPrototype, false
);\n }\n\n var isFirefox = /Firefox/.test(navigator.userAgent);\n\n // This i
s used as a fallback when getting the descriptor fails in\n // installProperty.
\n var dummyDescriptor = {\n get: function() {},\n set: function(v) {},\n
configurable: true,\n enumerable: true\n };\n\n function isEventHandler
Name(name) {\n return /^on[a-z]+$/.test(name);\n }\n\n function isIdentifie
rName(name) {\n return /^\\w[a-zA-Z_0-9]*$/.test(name);\n }\n\n function ge
tGetter(name) {\n return hasEval && isIdentifierName(name) ?\n new Fun
ction('return this.impl.' + name) :\n function() { return this.impl[name]
; };\n }\n\n function getSetter(name) {\n return hasEval && isIdentifierNam
e(name) ?\n new Function('v', 'this.impl.' + name + ' = v') :\n fu
nction(v) { this.impl[name] = v; };\n }\n\n function getMethod(name) {\n re
turn hasEval && isIdentifierName(name) ?\n new Function('return this.impl
.' + name +\n '.apply(this.impl, arguments)') :\n fun
ction() { return this.impl[name].apply(this.impl, arguments); };\n }\n\n funct
ion getDescriptor(source, name) {\n try {\n return Object.getOwnProperty
Descriptor(source, name);\n } catch (ex) {\n // JSC and V8 both use data
properties instead of accessors which can\n // cause getting the property
desciptor to throw an exception.\n // https://bugs.webkit.org/show_bug.cgi?
id=49739\n return dummyDescriptor;\n }\n }\n\n function installPropert
y(source, target, allowMethod, opt_blacklist) {\n var names = getOwnPropertyN
ames(source);\n for (var i = 0; i < names.length; i++) {\n var name = na
mes[i];\n if (name === 'polymerBlackList_')\n continue;\n\n if
(name in target)\n continue;\n\n if (source.polymerBlackList_ && sou
rce.polymerBlackList_[name])\n continue;\n\n if (isFirefox) {\n
// Tickle Firefox's old bindings.\n source.__lookupGetter__(name);\n
}\n var descriptor = getDescriptor(source, name);\n var getter, se
tter;\n if (allowMethod && typeof descriptor.value === 'function') {\n
target[name] = getMethod(name);\n continue;\n }\n\n var isEv
ent = isEventHandlerName(name);\n if (isEvent)\n getter = scope.getE
ventHandlerGetter(name);\n else\n getter = getGetter(name);\n\n
if (descriptor.writable || descriptor.set) {\n if (isEvent)\n s
etter = scope.getEventHandlerSetter(name);\n else\n setter = get
Setter(name);\n }\n\n defineProperty(target, name, {\n get: get
ter,\n set: setter,\n configurable: descriptor.configurable,\n
enumerable: descriptor.enumerable\n });\n }\n }\n\n /**\n * @par
am {Function} nativeConstructor\n * @param {Function} wrapperConstructor\n *
@param {Object=} opt_instance If present, this is used to extract\n * pro
perties from an instance object.\n */\n function register(nativeConstructor,
wrapperConstructor, opt_instance) {\n var nativePrototype = nativeConstructor
.prototype;\n registerInternal(nativePrototype, wrapperConstructor, opt_insta
nce);\n mixinStatics(wrapperConstructor, nativeConstructor);\n }\n\n functi
on registerInternal(nativePrototype, wrapperConstructor, opt_instance) {\n va
r wrapperPrototype = wrapperConstructor.prototype;\n assert(constructorTable.
get(nativePrototype) === undefined);\n\n constructorTable.set(nativePrototype
, wrapperConstructor);\n nativePrototypeTable.set(wrapperPrototype, nativePro
totype);\n\n addForwardingProperties(nativePrototype, wrapperPrototype);\n
if (opt_instance)\n registerInstanceProperties(wrapperPrototype, opt_insta
nce);\n defineProperty(wrapperPrototype, 'constructor', {\n value: wrapp
erConstructor,\n configurable: true,\n enumerable: false,\n writa
ble: true\n });\n }\n\n function isWrapperFor(wrapperConstructor, nativeCon
structor) {\n return constructorTable.get(nativeConstructor.prototype) ===\n
wrapperConstructor;\n }\n\n /**\n * Creates a generic wrapper constru
ctor based on |object| and its\n * constructor.\n * @param {Node} object\n
* @return {Function} The generated constructor.\n */\n function registerObje
ct(object) {\n var nativePrototype = Object.getPrototypeOf(object);\n\n va
r superWrapperConstructor = getWrapperConstructor(nativePrototype);\n var Gen
eratedWrapper = createWrapperConstructor(superWrapperConstructor);\n register
Internal(nativePrototype, GeneratedWrapper, object);\n\n return GeneratedWrap
per;\n }\n\n function createWrapperConstructor(superWrapperConstructor) {\n
function GeneratedWrapper(node) {\n superWrapperConstructor.call(this, nod
e);\n }\n GeneratedWrapper.prototype =\n Object.create(superWrapper
Constructor.prototype);\n GeneratedWrapper.prototype.constructor = GeneratedW
rapper;\n\n return GeneratedWrapper;\n }\n\n var OriginalDOMImplementation
= window.DOMImplementation;\n var OriginalEventTarget = window.EventTarget;\n
var OriginalEvent = window.Event;\n var OriginalNode = window.Node;\n var Orig
inalWindow = window.Window;\n var OriginalRange = window.Range;\n var Original
CanvasRenderingContext2D = window.CanvasRenderingContext2D;\n var OriginalWebGL
RenderingContext = window.WebGLRenderingContext;\n var OriginalSVGElementInstan
ce = window.SVGElementInstance;\n\n function isWrapper(object) {\n return ob
ject instanceof wrappers.EventTarget ||\n object instanceof wrappers.E
vent ||\n object instanceof wrappers.Range ||\n object insta
nceof wrappers.DOMImplementation ||\n object instanceof wrappers.Canva
sRenderingContext2D ||\n wrappers.WebGLRenderingContext &&\n
object instanceof wrappers.WebGLRenderingContext;\n }\n\n function isNati
ve(object) {\n return OriginalEventTarget && object instanceof OriginalEventT
arget ||\n object instanceof OriginalNode ||\n object instan
ceof OriginalEvent ||\n object instanceof OriginalWindow ||\n
object instanceof OriginalRange ||\n object instanceof OriginalDOMIm
plementation ||\n object instanceof OriginalCanvasRenderingContext2D |
|\n OriginalWebGLRenderingContext &&\n object instanceof
OriginalWebGLRenderingContext ||\n OriginalSVGElementInstance &&\n
object instanceof OriginalSVGElementInstance;\n }\n\n /**\n * Wr
aps a node in a WrapperNode. If there already exists a wrapper for the\n * |no
de| that wrapper is returned instead.\n * @param {Node} node\n * @return {Wr
apperNode}\n */\n function wrap(impl) {\n if (impl === null)\n return
null;\n\n assert(isNative(impl));\n return impl.polymerWrapper_ ||\n
(impl.polymerWrapper_ = new (getWrapperConstructor(impl))(impl));\n }\n\n /
**\n * Unwraps a wrapper and returns the node it is wrapping.\n * @param {Wr
apperNode} wrapper\n * @return {Node}\n */\n function unwrap(wrapper) {\n
if (wrapper === null)\n return null;\n assert(isWrapper(wrapper));\n
return wrapper.impl;\n }\n\n /**\n * Unwraps object if it is a wrapper.\n
* @param {Object} object\n * @return {Object} The native implementation obje
ct.\n */\n function unwrapIfNeeded(object) {\n return object && isWrapper(
object) ? unwrap(object) : object;\n }\n\n /**\n * Wraps object if it is not
a wrapper.\n * @param {Object} object\n * @return {Object} The wrapper for
object.\n */\n function wrapIfNeeded(object) {\n return object && !isWrapp
er(object) ? wrap(object) : object;\n }\n\n /**\n * Overrides the current wr
apper (if any) for node.\n * @param {Node} node\n * @param {WrapperNode=} wr
apper If left out the wrapper will be created as\n * needed next time some
one wraps the node.\n */\n function rewrap(node, wrapper) {\n if (wrapper
=== null)\n return;\n assert(isNative(node));\n assert(wrapper === un
defined || isWrapper(wrapper));\n node.polymerWrapper_ = wrapper;\n }\n\n f
unction defineGetter(constructor, name, getter) {\n defineProperty(constructo
r.prototype, name, {\n get: getter,\n configurable: true,\n enume
rable: true\n });\n }\n\n function defineWrapGetter(constructor, name) {\n
defineGetter(constructor, name, function() {\n return wrap(this.impl[nam
e]);\n });\n }\n\n /**\n * Forwards existing methods on the native object
to the wrapper methods.\n * This does not wrap any of the arguments or the re
turn value since the\n * wrapper implementation already takes care of that.\n
* @param {Array.<Function>} constructors\n * @parem {Array.<string>} names\n
*/\n function forwardMethodsToWrapper(constructors, names) {\n constructo
rs.forEach(function(constructor) {\n names.forEach(function(name) {\n
constructor.prototype[name] = function() {\n var w = wrapIfNeeded(thi
s);\n return w[name].apply(w, arguments);\n };\n });\n }
);\n }\n\n scope.assert = assert;\n scope.constructorTable = constructorTable
;\n scope.defineGetter = defineGetter;\n scope.defineWrapGetter = defineWrapGe
tter;\n scope.forwardMethodsToWrapper = forwardMethodsToWrapper;\n scope.isWra
pper = isWrapper;\n scope.isWrapperFor = isWrapperFor;\n scope.mixin = mixin;\
n scope.nativePrototypeTable = nativePrototypeTable;\n scope.oneOf = oneOf;\n
scope.registerObject = registerObject;\n scope.registerWrapper = register;\n
scope.rewrap = rewrap;\n scope.unwrap = unwrap;\n scope.unwrapIfNeeded = unwra
pIfNeeded;\n scope.wrap = wrap;\n scope.wrapIfNeeded = wrapIfNeeded;\n scope.
wrappers = wrappers;\n\n})(window.ShadowDOMPolyfill);\n","/*\n * Copyright 2013
The Polymer Authors. All rights reserved.\n * Use of this source code is goveren
ed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n(fu
nction(context) {\n 'use strict';\n\n var OriginalMutationObserver = window.Mu
tationObserver;\n var callbacks = [];\n var pending = false;\n var timerFunc;
\n\n function handle() {\n pending = false;\n var copies = callbacks.slic
e(0);\n callbacks = [];\n for (var i = 0; i < copies.length; i++) {\n
(0, copies[i])();\n }\n }\n\n if (OriginalMutationObserver) {\n var cou
nter = 1;\n var observer = new OriginalMutationObserver(handle);\n var tex
tNode = document.createTextNode(counter);\n observer.observe(textNode, {chara
cterData: true});\n\n timerFunc = function() {\n counter = (counter + 1)
% 2;\n textNode.data = counter;\n };\n\n } else {\n timerFunc = win
dow.setImmediate || window.setTimeout;\n }\n\n function setEndOfMicrotask(func
) {\n callbacks.push(func);\n if (pending)\n return;\n pending = t
rue;\n timerFunc(handle, 0);\n }\n\n context.setEndOfMicrotask = setEndOfMi
crotask;\n\n})(window.ShadowDOMPolyfill);\n","/*\n * Copyright 2013 The Polymer
Authors. All rights reserved.\n * Use of this source code is goverened by a BSD-
style\n * license that can be found in the LICENSE file.\n */\n\n(function(scope
) {\n 'use strict';\n\n var setEndOfMicrotask = scope.setEndOfMicrotask\n var
wrapIfNeeded = scope.wrapIfNeeded\n var wrappers = scope.wrappers;\n\n var re
gistrationsTable = new WeakMap();\n var globalMutationObservers = [];\n var is
Scheduled = false;\n\n function scheduleCallback(observer) {\n if (isSchedul
ed)\n return;\n setEndOfMicrotask(notifyObservers);\n isScheduled = t
rue;\n }\n\n // http://dom.spec.whatwg.org/#mutation-observers\n function not
ifyObservers() {\n isScheduled = false;\n\n do {\n var notifyList = g
lobalMutationObservers.slice();\n var anyNonEmpty = false;\n for (var
i = 0; i < notifyList.length; i++) {\n var mo = notifyList[i];\n v
ar queue = mo.takeRecords();\n removeTransientObserversFor(mo);\n
if (queue.length) {\n mo.callback_(queue, mo);\n anyNonEmpty =
true;\n }\n }\n } while (anyNonEmpty);\n }\n\n /**\n * @para
m {string} type\n * @param {Node} target\n * @constructor\n */\n function
MutationRecord(type, target) {\n this.type = type;\n this.target = target
;\n this.addedNodes = new wrappers.NodeList();\n this.removedNodes = new w
rappers.NodeList();\n this.previousSibling = null;\n this.nextSibling = nu
ll;\n this.attributeName = null;\n this.attributeNamespace = null;\n th
is.oldValue = null;\n }\n\n /**\n * Registers transient observers to ancesto
r and its ancesors for the node\n * which was removed.\n * @param {!Node} an
cestor\n * @param {!Node} node\n */\n function registerTransientObservers(a
ncestor, node) {\n for (; ancestor; ancestor = ancestor.parentNode) {\n
var registrations = registrationsTable.get(ancestor);\n if (!registrations)
\n continue;\n for (var i = 0; i < registrations.length; i++) {\n
var registration = registrations[i];\n if (registration.options.subt
ree)\n registration.addTransientObserver(node);\n }\n }\n }\n\
n function removeTransientObserversFor(observer) {\n for (var i = 0; i < obs
erver.nodes_.length; i++) {\n var node = observer.nodes_[i];\n var reg
istrations = registrationsTable.get(node);\n if (!registrations)\n r
eturn;\n for (var j = 0; j < registrations.length; j++) {\n var regi
stration = registrations[j];\n if (registration.observer === observer)\n
registration.removeTransientObservers();\n }\n }\n }\n\n // h
ttp://dom.spec.whatwg.org/#queue-a-mutation-record\n function enqueueMutation(t
arget, type, data) {\n // 1.\n var interestedObservers = Object.create(nul
l);\n var associatedStrings = Object.create(null);\n\n // 2.\n for (var
node = target; node; node = node.parentNode) {\n // 3.\n var registra
tions = registrationsTable.get(node);\n if (!registrations)\n contin
ue;\n for (var j = 0; j < registrations.length; j++) {\n var registr
ation = registrations[j];\n var options = registration.options;\n
// 1.\n if (node !== target && !options.subtree)\n continue;\n\n
// 2.\n if (type === 'attributes' && !options.attributes)\n
continue;\n\n // 3. If type is \"attributes\", options's attributeFil
ter is present, and\n // either options's attributeFilter does not contai
n name or namespace\n // is non-null, continue.\n if (type === 'at
tributes' && options.attributeFilter &&\n (data.namespace !== null ||
\n options.attributeFilter.indexOf(data.name) === -1)) {\n
continue;\n }\n\n // 4.\n if (type === 'characterData' && !
options.characterData)\n continue;\n\n // 5.\n if (type =
== 'childList' && !options.childList)\n continue;\n\n // 6.\n
var observer = registration.observer;\n interestedObservers[observer
.uid_] = observer;\n\n // 7. If either type is \"attributes\" and options
's attributeOldValue is\n // true, or type is \"characterData\" and optio
ns's characterDataOldValue\n // is true, set the paired string of registe
red observer's observer in\n // interested observers to oldValue.\n
if (type === 'attributes' && options.attributeOldValue ||\n type ==
= 'characterData' && options.characterDataOldValue) {\n associatedStrin
gs[observer.uid_] = data.oldValue;\n }\n }\n }\n\n var anyReco
rdsEnqueued = false;\n\n // 4.\n for (var uid in interestedObservers) {\n
var observer = interestedObservers[uid];\n var record = new MutationRe
cord(type, target);\n\n // 2.\n if ('name' in data && 'namespace' in d
ata) {\n record.attributeName = data.name;\n record.attributeNames
pace = data.namespace;\n }\n\n // 3.\n if (data.addedNodes)\n
record.addedNodes = data.addedNodes;\n\n // 4.\n if (data.removedN
odes)\n record.removedNodes = data.removedNodes;\n\n // 5.\n if
(data.previousSibling)\n record.previousSibling = data.previousSibling;\
n\n // 6.\n if (data.nextSibling)\n record.nextSibling = data.n
extSibling;\n\n // 7.\n if (associatedStrings[uid] !== undefined)\n
record.oldValue = associatedStrings[uid];\n\n // 8.\n observer.re
cords_.push(record);\n\n anyRecordsEnqueued = true;\n }\n\n if (anyRe
cordsEnqueued)\n scheduleCallback();\n }\n\n var slice = Array.prototype.
slice;\n\n /**\n * @param {!Object} options\n * @constructor\n */\n func
tion MutationObserverOptions(options) {\n this.childList = !!options.childLis
t;\n this.subtree = !!options.subtree;\n\n // 1. If either options' attrib
uteOldValue or attributeFilter is present\n // and options' attributes is omi
tted, set options' attributes to true.\n if (!('attributes' in options) &&\n
('attributeOldValue' in options || 'attributeFilter' in options)) {\n
this.attributes = true;\n } else {\n this.attributes = !!options.attri
butes;\n }\n\n // 2. If options' characterDataOldValue is present and opti
ons'\n // characterData is omitted, set options' characterData to true.\n
if ('characterDataOldValue' in options && !('characterData' in options))\n
this.characterData = true;\n else\n this.characterData = !!options.chara
cterData;\n\n // 3. & 4.\n if (!this.attributes &&\n (options.attri
buteOldValue || 'attributeFilter' in options) ||\n // 5.\n !this.c
haracterData && options.characterDataOldValue) {\n throw new TypeError();\n
}\n\n this.characterData = !!options.characterData;\n this.attributeOl
dValue = !!options.attributeOldValue;\n this.characterDataOldValue = !!option
s.characterDataOldValue;\n if ('attributeFilter' in options) {\n if (opt
ions.attributeFilter == null ||\n typeof options.attributeFilter !== 'o
bject') {\n throw new TypeError();\n }\n this.attributeFilter =
slice.call(options.attributeFilter);\n } else {\n this.attributeFilter
= null;\n }\n }\n\n var uidCounter = 0;\n\n /**\n * The class that maps
to the DOM MutationObserver interface.\n * @param {Function} callback.\n * @
constructor\n */\n function MutationObserver(callback) {\n this.callback_
= callback;\n this.nodes_ = [];\n this.records_ = [];\n this.uid_ = ++u
idCounter;\n\n // This will leak. There is no way to implement this without W
eakRefs :'(\n globalMutationObservers.push(this);\n }\n\n MutationObserver.
prototype = {\n // http://dom.spec.whatwg.org/#dom-mutationobserver-observe\n
observe: function(target, options) {\n target = wrapIfNeeded(target);\n
\n var newOptions = new MutationObserverOptions(options);\n\n // 6.\n
var registration;\n var registrations = registrationsTable.get(target)
;\n if (!registrations)\n registrationsTable.set(target, registratio
ns = []);\n\n for (var i = 0; i < registrations.length; i++) {\n if
(registrations[i].observer === this) {\n registration = registrations[i
];\n // 6.1.\n registration.removeTransientObservers();\n
// 6.2.\n registration.options = newOptions;\n }\n }\n
\n // 7.\n if (!registration) {\n registration = new Registrati
on(this, target, newOptions);\n registrations.push(registration);\n
this.nodes_.push(target);\n }\n },\n\n // http://dom.spec.whatwg.or
g/#dom-mutationobserver-disconnect\n disconnect: function() {\n this.nod
es_.forEach(function(node) {\n var registrations = registrationsTable.get
(node);\n for (var i = 0; i < registrations.length; i++) {\n var
registration = registrations[i];\n if (registration.observer === this)
{\n registrations.splice(i, 1);\n // Each node can only h
ave one registered observer associated with\n // this observer.\n
break;\n }\n }\n }, this);\n this.records_ = [
];\n },\n\n takeRecords: function() {\n var copyOfRecords = this.reco
rds_;\n this.records_ = [];\n return copyOfRecords;\n }\n };\n\n
/**\n * Class used to represent a registered observer.\n * @param {MutationO
bserver} observer\n * @param {Node} target\n * @param {MutationObserverOptio
ns} options\n * @constructor\n */\n function Registration(observer, target,
options) {\n this.observer = observer;\n this.target = target;\n this.
options = options;\n this.transientObservedNodes = [];\n }\n\n Registration
.prototype = {\n /**\n * Adds a transient observer on node. The transient
observer gets removed\n * next time we deliver the change records.\n *
@param {Node} node\n */\n addTransientObserver: function(node) {\n /
/ Don't add transient observers on the target itself. We already have all\n
// the required listeners set up on the target.\n if (node === this.target
)\n return;\n\n this.transientObservedNodes.push(node);\n var r
egistrations = registrationsTable.get(node);\n if (!registrations)\n
registrationsTable.set(node, registrations = []);\n\n // We know that regi
strations does not contain this because we already\n // checked if node ===
this.target.\n registrations.push(this);\n },\n\n removeTransientObs
ervers: function() {\n var transientObservedNodes = this.transientObservedN
odes;\n this.transientObservedNodes = [];\n\n for (var i = 0; i < tran
sientObservedNodes.length; i++) {\n var node = transientObservedNodes[i];
\n var registrations = registrationsTable.get(node);\n for (var j
= 0; j < registrations.length; j++) {\n if (registrations[j] === this)
{\n registrations.splice(j, 1);\n // Each node can only ha
ve one registered observer associated with\n // this observer.\n
break;\n }\n }\n }\n }\n };\n\n scope.enqueueMu
tation = enqueueMutation;\n scope.registerTransientObservers = registerTransien
tObservers;\n scope.wrappers.MutationObserver = MutationObserver;\n scope.wrap
pers.MutationRecord = MutationRecord;\n\n})(window.ShadowDOMPolyfill);\n","// Co
pyright 2013 The Polymer Authors. All rights reserved.\n// Use of this source co
de is goverened by a BSD-style\n// license that can be found in the LICENSE file
.\n\n(function(scope) {\n 'use strict';\n\n var forwardMethodsToWrapper = scop
e.forwardMethodsToWrapper;\n var mixin = scope.mixin;\n var registerWrapper =
scope.registerWrapper;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n
var wrappers = scope.wrappers;\n\n var wrappedFuns = new WeakMap();\n var li
stenersTable = new WeakMap();\n var handledEventsTable = new WeakMap();\n var
currentlyDispatchingEvents = new WeakMap();\n var targetTable = new WeakMap();\
n var currentTargetTable = new WeakMap();\n var relatedTargetTable = new WeakM
ap();\n var eventPhaseTable = new WeakMap();\n var stopPropagationTable = new
WeakMap();\n var stopImmediatePropagationTable = new WeakMap();\n var eventHan
dlersTable = new WeakMap();\n var eventPathTable = new WeakMap();\n\n function
isShadowRoot(node) {\n return node instanceof wrappers.ShadowRoot;\n }\n\n
function isInsertionPoint(node) {\n var localName = node.localName;\n ret
urn localName === 'content' || localName === 'shadow';\n }\n\n function isShad
owHost(node) {\n return !!node.shadowRoot;\n }\n\n function getEventParent(
node) {\n var dv;\n return node.parentNode || (dv = node.defaultView) && w
rap(dv) || null;\n }\n\n // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/
spec/shadow/index.html#dfn-adjusted-parent\n function calculateParents(node, co
ntext, ancestors) {\n if (ancestors.length)\n return ancestors.shift();\
n\n // 1.\n if (isShadowRoot(node))\n return getInsertionParent(node)
|| node.host;\n\n // 2.\n var eventParents = scope.eventParentsTable.get(
node);\n if (eventParents) {\n // Copy over the remaining event parents
for next iteration.\n for (var i = 1; i < eventParents.length; i++) {\n
ancestors[i - 1] = eventParents[i];\n }\n return eventParents[0];\
n }\n\n // 3.\n if (context && isInsertionPoint(node)) {\n var par
entNode = node.parentNode;\n if (parentNode && isShadowHost(parentNode)) {\
n var trees = scope.getShadowTrees(parentNode);\n var p = getInser
tionParent(context);\n for (var i = 0; i < trees.length; i++) {\n
if (trees[i].contains(p))\n return p;\n }\n }\n }\n\
n return getEventParent(node);\n }\n\n // https://dvcs.w3.org/hg/webcompone
nts/raw-file/tip/spec/shadow/index.html#event-retargeting\n function retarget(n
ode) {\n var stack = []; // 1.\n var ancestor = node; // 2.\n var tar
gets = [];\n var ancestors = [];\n while (ancestor) { // 3.\n var co
ntext = null; // 3.2.\n // TODO(arv): Change order of these. If the stack
is empty we always end\n // up pushing ancestor, no matter what.\n if
(isInsertionPoint(ancestor)) { // 3.1.\n context = topMostNotInsertionPo
int(stack); // 3.1.1.\n var top = stack[stack.length - 1] || ancestor;
// 3.1.2.\n stack.push(top);\n } else if (!stack.length) {\n
stack.push(ancestor); // 3.3.\n }\n var target = stack[stack.length -
1]; // 3.4.\n targets.push({target: target, currentTarget: ancestor}); /
/ 3.5.\n if (isShadowRoot(ancestor)) // 3.6.\n stack.pop(); // 3.6
.1.\n\n ancestor = calculateParents(ancestor, context, ancestors); // 3.7.
\n }\n return targets;\n }\n\n function topMostNotInsertionPoint(stack)
{\n for (var i = stack.length - 1; i >= 0; i--) {\n if (!isInsertionPoin
t(stack[i]))\n return stack[i];\n }\n return null;\n }\n\n // htt
ps://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#dfn-adjust
ed-related-target\n function adjustRelatedTarget(target, related) {\n var an
cestors = [];\n while (target) { // 3.\n var stack = []; // 3.1.\n
var ancestor = related; // 3.2.\n var last = undefined; // 3.3. Needs t
o be reset every iteration.\n while (ancestor) {\n var context = nul
l;\n if (!stack.length) {\n stack.push(ancestor);\n } els
e {\n if (isInsertionPoint(ancestor)) { // 3.4.3.\n context
= topMostNotInsertionPoint(stack);\n // isDistributed is more genera
l than checking whether last is\n // assigned into ancestor.\n
if (isDistributed(last)) { // 3.4.3.2.\n var head = stack[sta
ck.length - 1];\n stack.push(head);\n }\n }\n
}\n\n if (inSameTree(ancestor, target)) // 3.4.4.\n retur
n stack[stack.length - 1];\n\n if (isShadowRoot(ancestor)) // 3.4.5.\n
stack.pop();\n\n last = ancestor; // 3.4.6.\n ancestor =
calculateParents(ancestor, context, ancestors); // 3.4.7.\n }\n if (i
sShadowRoot(target)) // 3.5.\n target = target.host;\n else\n
target = target.parentNode; // 3.6.\n }\n }\n\n function getInsertionPar
ent(node) {\n return scope.insertionParentTable.get(node);\n }\n\n function
isDistributed(node) {\n return getInsertionParent(node);\n }\n\n function
rootOfNode(node) {\n var p;\n while (p = node.parentNode) {\n node =
p;\n }\n return node;\n }\n\n function inSameTree(a, b) {\n return ro
otOfNode(a) === rootOfNode(b);\n }\n\n function enclosedBy(a, b) {\n if (a
=== b)\n return true;\n if (a instanceof wrappers.ShadowRoot)\n ret
urn enclosedBy(rootOfNode(a.host), b);\n return false;\n }\n\n\n function d
ispatchOriginalEvent(originalEvent) {\n // Make sure this event is only dispa
tched once.\n if (handledEventsTable.get(originalEvent))\n return;\n
handledEventsTable.set(originalEvent, true);\n\n return dispatchEvent(wrap(or
iginalEvent), wrap(originalEvent.target));\n }\n\n function dispatchEvent(even
t, originalWrapperTarget) {\n if (currentlyDispatchingEvents.get(event))\n
throw new Error('InvalidStateError')\n currentlyDispatchingEvents.set(even
t, true);\n\n // Render to ensure that the event path is correct.\n scope.
renderAllPending();\n var eventPath = retarget(originalWrapperTarget);\n\n
// For window load events the load event is dispatched at the window but\n /
/ the target is set to the document.\n //\n // http://www.whatwg.org/specs
/web-apps/current-work/multipage/the-end.html#the-end\n //\n // TODO(arv):
Find a less hacky way to do this.\n if (event.type === 'load' &&\n ev
entPath.length === 2 &&\n eventPath[0].target instanceof wrappers.Documen
t) {\n eventPath.shift();\n }\n\n eventPathTable.set(event, eventPath
);\n\n if (dispatchCapturing(event, eventPath)) {\n if (dispatchAtTarget
(event, eventPath)) {\n dispatchBubbling(event, eventPath);\n }\n
}\n\n eventPhaseTable.set(event, Event.NONE);\n currentTargetTable.delete
(event, null);\n currentlyDispatchingEvents.delete(event);\n\n return even
t.defaultPrevented;\n }\n\n function dispatchCapturing(event, eventPath) {\n
var phase;\n\n for (var i = eventPath.length - 1; i > 0; i--) {\n var
target = eventPath[i].target;\n var currentTarget = eventPath[i].currentTar
get;\n if (target === currentTarget)\n continue;\n\n phase = Ev
ent.CAPTURING_PHASE;\n if (!invoke(eventPath[i], event, phase))\n re
turn false;\n }\n\n return true;\n }\n\n function dispatchAtTarget(event
, eventPath) {\n var phase = Event.AT_TARGET;\n return invoke(eventPath[0]
, event, phase);\n }\n\n function dispatchBubbling(event, eventPath) {\n va
r bubbles = event.bubbles;\n var phase;\n\n for (var i = 1; i < eventPath.
length; i++) {\n var target = eventPath[i].target;\n var currentTarget
= eventPath[i].currentTarget;\n if (target === currentTarget)\n pha
se = Event.AT_TARGET;\n else if (bubbles && !stopImmediatePropagationTable.
get(event))\n phase = Event.BUBBLING_PHASE;\n else\n continue
;\n\n if (!invoke(eventPath[i], event, phase))\n return;\n }\n }
\n\n function invoke(tuple, event, phase) {\n var target = tuple.target;\n
var currentTarget = tuple.currentTarget;\n\n var listeners = listenersTable
.get(currentTarget);\n if (!listeners)\n return true;\n\n if ('relate
dTarget' in event) {\n var originalEvent = unwrap(event);\n // X-Tag s
ets relatedTarget on a CustomEvent. If they do that there is no\n // way to
have relatedTarget return the adjusted target but worse is that\n // the o
riginalEvent might not have a relatedTarget so we hit an assert\n // when w
e try to wrap it.\n if (originalEvent.relatedTarget) {\n var related
Target = wrap(originalEvent.relatedTarget);\n\n var adjusted = adjustRela
tedTarget(currentTarget, relatedTarget);\n if (adjusted === target)\n
return true;\n\n relatedTargetTable.set(event, adjusted);\n }\
n }\n\n eventPhaseTable.set(event, phase);\n var type = event.type;\n\n
var anyRemoved = false;\n targetTable.set(event, target);\n currentTar
getTable.set(event, currentTarget);\n\n for (var i = 0; i < listeners.length;
i++) {\n var listener = listeners[i];\n if (listener.removed) {\n
anyRemoved = true;\n continue;\n }\n\n if (listener.type !=
= type ||\n !listener.capture && phase === Event.CAPTURING_PHASE ||\n
listener.capture && phase === Event.BUBBLING_PHASE) {\n continue;
\n }\n\n try {\n if (typeof listener.handler === 'function')\n
listener.handler.call(currentTarget, event);\n else\n l
istener.handler.handleEvent(event);\n\n if (stopImmediatePropagationTable
.get(event))\n return false;\n\n } catch (ex) {\n if (windo
w.onerror)\n window.onerror(ex.message);\n else\n conso
le.error(ex, ex.stack);\n }\n }\n\n if (anyRemoved) {\n var copy
= listeners.slice();\n listeners.length = 0;\n for (var i = 0; i < co
py.length; i++) {\n if (!copy[i].removed)\n listeners.push(copy[
i]);\n }\n }\n\n return !stopPropagationTable.get(event);\n }\n\n f
unction Listener(type, handler, capture) {\n this.type = type;\n this.hand
ler = handler;\n this.capture = Boolean(capture);\n }\n Listener.prototype
= {\n equals: function(that) {\n return this.handler === that.handler &&
this.type === that.type &&\n this.capture === that.capture;\n },\n
get removed() {\n return this.handler === null;\n },\n remove: fun
ction() {\n this.handler = null;\n }\n };\n\n var OriginalEvent = wind
ow.Event;\n OriginalEvent.prototype.polymerBlackList_ = {\n returnValue: tru
e,\n // TODO(arv): keyLocation is part of KeyboardEvent but Firefox does not\
n // support constructable KeyboardEvent so we keep it here for now.\n key
Location: true\n };\n\n /**\n * Creates a new Event wrapper or wraps an exis
tin native Event object.\n * @param {string|Event} type\n * @param {Object=}
options\n * @constructor\n */\n function Event(type, options) {\n if (t
ype instanceof OriginalEvent)\n this.impl = type;\n else\n return w
rap(constructEvent(OriginalEvent, 'Event', type, options));\n }\n Event.protot
ype = {\n get target() {\n return targetTable.get(this);\n },\n ge
t currentTarget() {\n return currentTargetTable.get(this);\n },\n get
eventPhase() {\n return eventPhaseTable.get(this);\n },\n get path()
{\n var nodeList = new wrappers.NodeList();\n var eventPath = eventPa
thTable.get(this);\n if (eventPath) {\n var index = 0;\n var
lastIndex = eventPath.length - 1;\n var baseRoot = rootOfNode(currentTarg
etTable.get(this));\n\n for (var i = 0; i <= lastIndex; i++) {\n
var currentTarget = eventPath[i].currentTarget;\n var currentRoot = ro
otOfNode(currentTarget);\n if (enclosedBy(baseRoot, currentRoot) &&\n
// Make sure we do not add Window to the path.\n (i !==
lastIndex || currentTarget instanceof wrappers.Node)) {\n nodeList[i
ndex++] = currentTarget;\n }\n }\n nodeList.length = inde
x;\n }\n return nodeList;\n },\n stopPropagation: function() {\n
stopPropagationTable.set(this, true);\n },\n stopImmediatePropagatio
n: function() {\n stopPropagationTable.set(this, true);\n stopImmediat
ePropagationTable.set(this, true);\n }\n };\n registerWrapper(OriginalEvent
, Event, document.createEvent('Event'));\n\n function unwrapOptions(options) {\
n if (!options || !options.relatedTarget)\n return options;\n return
Object.create(options, {\n relatedTarget: {value: unwrap(options.relatedTar
get)}\n });\n }\n\n function registerGenericEvent(name, SuperEvent, prototy
pe) {\n var OriginalEvent = window[name];\n var GenericEvent = function(ty
pe, options) {\n if (type instanceof OriginalEvent)\n this.impl = ty
pe;\n else\n return wrap(constructEvent(OriginalEvent, name, type, o
ptions));\n };\n GenericEvent.prototype = Object.create(SuperEvent.prototy
pe);\n if (prototype)\n mixin(GenericEvent.prototype, prototype);\n i
f (OriginalEvent) {\n // - Old versions of Safari fails on new FocusEvent (
and others?).\n // - IE does not support event constructors.\n // - cr
eateEvent('FocusEvent') throws in Firefox.\n // => Try the best practice so
lution first and fallback to the old way\n // if needed.\n try {\n
registerWrapper(OriginalEvent, GenericEvent, new OriginalEvent('temp'));\n
} catch (ex) {\n registerWrapper(OriginalEvent, GenericEvent,\n
document.createEvent(name));\n }\n }\n return Gener
icEvent;\n }\n\n var UIEvent = registerGenericEvent('UIEvent', Event);\n var
CustomEvent = registerGenericEvent('CustomEvent', Event);\n\n var relatedTarget
Proto = {\n get relatedTarget() {\n return relatedTargetTable.get(this)
|| wrap(unwrap(this).relatedTarget);\n }\n };\n\n function getInitFunction(
name, relatedTargetIndex) {\n return function() {\n arguments[relatedTar
getIndex] = unwrap(arguments[relatedTargetIndex]);\n var impl = unwrap(this
);\n impl[name].apply(impl, arguments);\n };\n }\n\n var mouseEventPro
to = mixin({\n initMouseEvent: getInitFunction('initMouseEvent', 14)\n }, re
latedTargetProto);\n\n var focusEventProto = mixin({\n initFocusEvent: getIn
itFunction('initFocusEvent', 5)\n }, relatedTargetProto);\n\n var MouseEvent =
registerGenericEvent('MouseEvent', UIEvent, mouseEventProto);\n var FocusEvent
= registerGenericEvent('FocusEvent', UIEvent, focusEventProto);\n\n // In case
the browser does not support event constructors we polyfill that\n // by calli
ng `createEvent('Foo')` and `initFooEvent` where the arguments to\n // `initFoo
Event` are derived from the registered default event init dict.\n var defaultIn
itDicts = Object.create(null);\n\n var supportsEventConstructors = (function()
{\n try {\n new window.FocusEvent('focus');\n } catch (ex) {\n r
eturn false;\n }\n return true;\n })();\n\n /**\n * Constructs a new n
ative event.\n */\n function constructEvent(OriginalEvent, name, type, option
s) {\n if (supportsEventConstructors)\n return new OriginalEvent(type, u
nwrapOptions(options));\n\n // Create the arguments from the default dictiona
ry.\n var event = unwrap(document.createEvent(name));\n var defaultDict =
defaultInitDicts[name];\n var args = [type];\n Object.keys(defaultDict).fo
rEach(function(key) {\n var v = options != null && key in options ?\n
options[key] : defaultDict[key];\n if (key === 'relatedTarget')\n
v = unwrap(v);\n args.push(v);\n });\n event['init' + name].apply(e
vent, args);\n return event;\n }\n\n if (!supportsEventConstructors) {\n
var configureEventConstructor = function(name, initDict, superName) {\n if
(superName) {\n var superDict = defaultInitDicts[superName];\n in
itDict = mixin(mixin({}, superDict), initDict);\n }\n\n defaultInitDic
ts[name] = initDict;\n };\n\n // The order of the default event init dicti
onary keys is important, the\n // arguments to initFooEvent is derived from t
hat.\n configureEventConstructor('Event', {bubbles: false, cancelable: false}
);\n configureEventConstructor('CustomEvent', {detail: null}, 'Event');\n
configureEventConstructor('UIEvent', {view: null, detail: 0}, 'Event');\n con
figureEventConstructor('MouseEvent', {\n screenX: 0,\n screenY: 0,\n
clientX: 0,\n clientY: 0,\n ctrlKey: false,\n altKey: false,\
n shiftKey: false,\n metaKey: false,\n button: 0,\n relatedT
arget: null\n }, 'UIEvent');\n configureEventConstructor('FocusEvent', {re
latedTarget: null}, 'UIEvent');\n }\n\n function BeforeUnloadEvent(impl) {\n
Event.call(this);\n }\n BeforeUnloadEvent.prototype = Object.create(Event.pr
ototype);\n mixin(BeforeUnloadEvent.prototype, {\n get returnValue() {\n
return this.impl.returnValue;\n },\n set returnValue(v) {\n this.im
pl.returnValue = v;\n }\n });\n\n function isValidListener(fun) {\n if (
typeof fun === 'function')\n return true;\n return fun && fun.handleEven
t;\n }\n\n function isMutationEvent(type) {\n switch (type) {\n case '
DOMAttrModified':\n case 'DOMAttributeNameChanged':\n case 'DOMCharact
erDataModified':\n case 'DOMElementNameChanged':\n case 'DOMNodeInsert
ed':\n case 'DOMNodeInsertedIntoDocument':\n case 'DOMNodeRemoved':\n
case 'DOMNodeRemovedFromDocument':\n case 'DOMSubtreeModified':\n
return true;\n }\n return false;\n }\n\n var OriginalEventTarget = wi
ndow.EventTarget;\n\n /**\n * This represents a wrapper for an EventTarget.\n
* @param {!EventTarget} impl The original event target.\n * @constructor\n
*/\n function EventTarget(impl) {\n this.impl = impl;\n }\n\n // Node an
d Window have different internal type checks in WebKit so we cannot\n // use th
e same method as the original function.\n var methodNames = [\n 'addEventLis
tener',\n 'removeEventListener',\n 'dispatchEvent'\n ];\n\n [Node, Windo
w].forEach(function(constructor) {\n var p = constructor.prototype;\n meth
odNames.forEach(function(name) {\n Object.defineProperty(p, name + '_', {va
lue: p[name]});\n });\n });\n\n function getTargetToListenAt(wrapper) {\n
if (wrapper instanceof wrappers.ShadowRoot)\n wrapper = wrapper.host;\n
return unwrap(wrapper);\n }\n\n EventTarget.prototype = {\n addEventListe
ner: function(type, fun, capture) {\n if (!isValidListener(fun) || isMutati
onEvent(type))\n return;\n\n var listener = new Listener(type, fun,
capture);\n var listeners = listenersTable.get(this);\n if (!listeners
) {\n listeners = [];\n listenersTable.set(this, listeners);\n
} else {\n // Might have a duplicate.\n for (var i = 0; i < list
eners.length; i++) {\n if (listener.equals(listeners[i]))\n
return;\n }\n }\n\n listeners.push(listener);\n\n var targ
et = getTargetToListenAt(this);\n target.addEventListener_(type, dispatchOr
iginalEvent, true);\n },\n removeEventListener: function(type, fun, captur
e) {\n capture = Boolean(capture);\n var listeners = listenersTable.ge
t(this);\n if (!listeners)\n return;\n var count = 0, found = f
alse;\n for (var i = 0; i < listeners.length; i++) {\n if (listeners
[i].type === type && listeners[i].capture === capture) {\n count++;\n
if (listeners[i].handler === fun) {\n found = true;\n
listeners[i].remove();\n }\n }\n }\n\n if (found &
& count === 1) {\n var target = getTargetToListenAt(this);\n targe
t.removeEventListener_(type, dispatchOriginalEvent, true);\n }\n },\n
dispatchEvent: function(event) {\n // We want to use the native dispatchEv
ent because it triggers the default\n // actions (like checking a checkbox)
. However, if there are no listeners\n // in the composed tree then there a
re no events that will trigger and\n // listeners in the non composed tree
that are part of the event path are\n // not notified.\n //\n //
If we find out that there are no listeners in the composed tree we add\n //
a temporary listener to the target which makes us get called back even\n /
/ in that case.\n\n var nativeEvent = unwrap(event);\n var eventType =
nativeEvent.type;\n\n // Allow dispatching the same event again. This is s
afe because if user\n // code calls this during an existing dispatch of the
same event the\n // native dispatchEvent throws (that is required by the s
pec).\n handledEventsTable.set(nativeEvent, false);\n\n // Force rende
ring since we prefer native dispatch and that works on the\n // composed tr
ee.\n scope.renderAllPending();\n\n var tempListener;\n if (!hasL
istenerInAncestors(this, eventType)) {\n tempListener = function() {};\n
this.addEventListener(eventType, tempListener, true);\n }\n\n t
ry {\n return unwrap(this).dispatchEvent_(nativeEvent);\n } finally
{\n if (tempListener)\n this.removeEventListener(eventType, temp
Listener, true);\n }\n }\n };\n\n function hasListener(node, type) {\n
var listeners = listenersTable.get(node);\n if (listeners) {\n for (
var i = 0; i < listeners.length; i++) {\n if (!listeners[i].removed && li
steners[i].type === type)\n return true;\n }\n }\n return fa
lse;\n }\n\n function hasListenerInAncestors(target, type) {\n for (var nod
e = unwrap(target); node; node = node.parentNode) {\n if (hasListener(wrap(
node), type))\n return true;\n }\n return false;\n }\n\n if (Orig
inalEventTarget)\n registerWrapper(OriginalEventTarget, EventTarget);\n\n fu
nction wrapEventTargetMethods(constructors) {\n forwardMethodsToWrapper(const
ructors, methodNames);\n }\n\n var originalElementFromPoint = document.element
FromPoint;\n\n function elementFromPoint(self, document, x, y) {\n scope.ren
derAllPending();\n\n var element = wrap(originalElementFromPoint.call(documen
t.impl, x, y));\n var targets = retarget(element, this)\n for (var i = 0;
i < targets.length; i++) {\n var target = targets[i];\n if (target.cur
rentTarget === self)\n return target.target;\n }\n return null;\n
}\n\n /**\n * Returns a function that is to be used as a getter for `onfoo` p
roperties.\n * @param {string} name\n * @return {Function}\n */\n functio
n getEventHandlerGetter(name) {\n return function() {\n var inlineEventH
andlers = eventHandlersTable.get(this);\n return inlineEventHandlers && inl
ineEventHandlers[name] &&\n inlineEventHandlers[name].value || null;\n
};\n }\n\n /**\n * Returns a function that is to be used as a setter for
`onfoo` properties.\n * @param {string} name\n * @return {Function}\n */\
n function getEventHandlerSetter(name) {\n var eventType = name.slice(2);\n
return function(value) {\n var inlineEventHandlers = eventHandlersTable.
get(this);\n if (!inlineEventHandlers) {\n inlineEventHandlers = Obj
ect.create(null);\n eventHandlersTable.set(this, inlineEventHandlers);\n
}\n\n var old = inlineEventHandlers[name];\n if (old)\n th
is.removeEventListener(eventType, old.wrapped, false);\n\n if (typeof value
=== 'function') {\n var wrapped = function(e) {\n var rv = valu
e.call(this, e);\n if (rv === false)\n e.preventDefault();\n
else if (name === 'onbeforeunload' && typeof rv === 'string')\n
e.returnValue = rv;\n // mouseover uses true for preventDefault bu
t preventDefault for\n // mouseover is ignored by browsers these day.\n
};\n\n this.addEventListener(eventType, wrapped, false);\n
inlineEventHandlers[name] = {\n value: value,\n wrapped: wrap
ped\n };\n }\n };\n }\n\n scope.adjustRelatedTarget = adjustRel
atedTarget;\n scope.elementFromPoint = elementFromPoint;\n scope.getEventHandl
erGetter = getEventHandlerGetter;\n scope.getEventHandlerSetter = getEventHandl
erSetter;\n scope.wrapEventTargetMethods = wrapEventTargetMethods;\n scope.wra
ppers.BeforeUnloadEvent = BeforeUnloadEvent;\n scope.wrappers.CustomEvent = Cus
tomEvent;\n scope.wrappers.Event = Event;\n scope.wrappers.EventTarget = Event
Target;\n scope.wrappers.FocusEvent = FocusEvent;\n scope.wrappers.MouseEvent
= MouseEvent;\n scope.wrappers.UIEvent = UIEvent;\n\n})(window.ShadowDOMPolyfil
l);\n","// Copyright 2012 The Polymer Authors. All rights reserved.\n// Use of t
his source code is goverened by a BSD-style\n// license that can be found in the
LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var wrap = scope.wrap
;\n\n function nonEnum(obj, prop) {\n Object.defineProperty(obj, prop, {enum
erable: false});\n }\n\n function NodeList() {\n this.length = 0;\n nonE
num(this, 'length');\n }\n NodeList.prototype = {\n item: function(index) {
\n return this[index];\n }\n };\n nonEnum(NodeList.prototype, 'item');
\n\n function wrapNodeList(list) {\n if (list == null)\n return list;\n
var wrapperList = new NodeList();\n for (var i = 0, length = list.length;
i < length; i++) {\n wrapperList[i] = wrap(list[i]);\n }\n wrapperLi
st.length = length;\n return wrapperList;\n }\n\n function addWrapNodeListM
ethod(wrapperConstructor, name) {\n wrapperConstructor.prototype[name] = func
tion() {\n return wrapNodeList(this.impl[name].apply(this.impl, arguments))
;\n };\n }\n\n scope.wrappers.NodeList = NodeList;\n scope.addWrapNodeList
Method = addWrapNodeListMethod;\n scope.wrapNodeList = wrapNodeList;\n\n})(wind
ow.ShadowDOMPolyfill);\n","// Copyright 2012 The Polymer Authors. All rights res
erved.\n// Use of this source code is goverened by a BSD-style\n// license that
can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n va
r EventTarget = scope.wrappers.EventTarget;\n var NodeList = scope.wrappers.Nod
eList;\n var assert = scope.assert;\n var defineWrapGetter = scope.defineWrapG
etter;\n var enqueueMutation = scope.enqueueMutation;\n var isWrapper = scope.
isWrapper;\n var mixin = scope.mixin;\n var registerTransientObservers = scope
.registerTransientObservers;\n var registerWrapper = scope.registerWrapper;\n
var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var wrapIfNeeded = scope
.wrapIfNeeded;\n var wrappers = scope.wrappers;\n\n function assertIsNodeWrapp
er(node) {\n assert(node instanceof Node);\n }\n\n function createOneElemen
tNodeList(node) {\n var nodes = new NodeList();\n nodes[0] = node;\n no
des.length = 1;\n return nodes;\n }\n\n var surpressMutations = false;\n\n
/**\n * Called before node is inserted into a node to enqueue its removal fro
m its\n * old parent.\n * @param {!Node} node The node that is about to be r
emoved.\n * @param {!Node} parent The parent node that the node is being remov
ed from.\n * @param {!NodeList} nodes The collected nodes.\n */\n function
enqueueRemovalForInsertedNodes(node, parent, nodes) {\n enqueueMutation(paren
t, 'childList', {\n removedNodes: nodes,\n previousSibling: node.previ
ousSibling,\n nextSibling: node.nextSibling\n });\n }\n\n function enq
ueueRemovalForInsertedDocumentFragment(df, nodes) {\n enqueueMutation(df, 'ch
ildList', {\n removedNodes: nodes\n });\n }\n\n /**\n * Collects nod
es from a DocumentFragment or a Node for removal followed\n * by an insertion.
\n *\n * This updates the internal pointers for node, previousNode and nextN
ode.\n */\n function collectNodes(node, parentNode, previousNode, nextNode) {
\n if (node instanceof DocumentFragment) {\n var nodes = collectNodesFor
DocumentFragment(node);\n\n // The extra loop is to work around bugs with D
ocumentFragments in IE.\n surpressMutations = true;\n for (var i = nod
es.length - 1; i >= 0; i--) {\n node.removeChild(nodes[i]);\n node
s[i].parentNode_ = parentNode;\n }\n surpressMutations = false;\n\n
for (var i = 0; i < nodes.length; i++) {\n nodes[i].previousSibling_ =
nodes[i - 1] || previousNode;\n nodes[i].nextSibling_ = nodes[i + 1] ||
nextNode;\n }\n\n if (previousNode)\n previousNode.nextSibling_
= nodes[0];\n if (nextNode)\n nextNode.previousSibling_ = nodes[nod
es.length - 1];\n\n return nodes;\n }\n\n var nodes = createOneElemen
tNodeList(node);\n var oldParent = node.parentNode;\n if (oldParent) {\n
// This will enqueue the mutation record for the removal as needed.\n o
ldParent.removeChild(node);\n }\n\n node.parentNode_ = parentNode;\n no
de.previousSibling_ = previousNode;\n node.nextSibling_ = nextNode;\n if (
previousNode)\n previousNode.nextSibling_ = node;\n if (nextNode)\n
nextNode.previousSibling_ = node;\n\n return nodes;\n }\n\n function colle
ctNodesNative(node) {\n if (node instanceof DocumentFragment)\n return c
ollectNodesForDocumentFragment(node);\n\n var nodes = createOneElementNodeLis
t(node);\n var oldParent = node.parentNode;\n if (oldParent)\n enqueu
eRemovalForInsertedNodes(node, oldParent, nodes);\n return nodes;\n }\n\n f
unction collectNodesForDocumentFragment(node) {\n var nodes = new NodeList();
\n var i = 0;\n for (var child = node.firstChild; child; child = child.nex
tSibling) {\n nodes[i++] = child;\n }\n nodes.length = i;\n enqueu
eRemovalForInsertedDocumentFragment(node, nodes);\n return nodes;\n }\n\n f
unction snapshotNodeList(nodeList) {\n // NodeLists are not live at the momen
t so just return the same object.\n return nodeList;\n }\n\n // http://dom.
spec.whatwg.org/#node-is-inserted\n function nodeWasAdded(node) {\n node.nod
eIsInserted_();\n }\n\n function nodesWereAdded(nodes) {\n for (var i = 0;
i < nodes.length; i++) {\n nodeWasAdded(nodes[i]);\n }\n }\n\n // http
://dom.spec.whatwg.org/#node-is-removed\n function nodeWasRemoved(node) {\n
// Nothing at this point in time.\n }\n\n function nodesWereRemoved(nodes) {\n
// Nothing at this point in time.\n }\n\n function ensureSameOwnerDocument
(parent, child) {\n var ownerDoc = parent.nodeType === Node.DOCUMENT_NODE ?\n
parent : parent.ownerDocument;\n if (ownerDoc !== child.ownerDocument
)\n ownerDoc.adoptNode(child);\n }\n\n function adoptNodesIfNeeded(owner,
nodes) {\n if (!nodes.length)\n return;\n\n var ownerDoc = owner.own
erDocument;\n\n // All nodes have the same ownerDocument when we get here.\n
if (ownerDoc === nodes[0].ownerDocument)\n return;\n\n for (var i = 0
; i < nodes.length; i++) {\n scope.adoptNodeNoRemove(nodes[i], ownerDoc);\n
}\n }\n\n function unwrapNodesForInsertion(owner, nodes) {\n adoptNodes
IfNeeded(owner, nodes);\n var length = nodes.length;\n\n if (length === 1)
\n return unwrap(nodes[0]);\n\n var df = unwrap(owner.ownerDocument.crea
teDocumentFragment());\n for (var i = 0; i < length; i++) {\n df.appendC
hild(unwrap(nodes[i]));\n }\n return df;\n }\n\n function clearChildNode
s(wrapper) {\n if (wrapper.firstChild_ !== undefined) {\n var child = wr
apper.firstChild_;\n while (child) {\n var tmp = child;\n chi
ld = child.nextSibling_;\n tmp.parentNode_ = tmp.previousSibling_ = tmp.n
extSibling_ = undefined;\n }\n }\n wrapper.firstChild_ = wrapper.last
Child_ = undefined;\n }\n\n function removeAllChildNodes(wrapper) {\n if (w
rapper.invalidateShadowRenderer()) {\n var childWrapper = wrapper.firstChil
d;\n while (childWrapper) {\n assert(childWrapper.parentNode === wra
pper);\n var nextSibling = childWrapper.nextSibling;\n var childNo
de = unwrap(childWrapper);\n var parentNode = childNode.parentNode;\n
if (parentNode)\n originalRemoveChild.call(parentNode, childNode);\
n childWrapper.previousSibling_ = childWrapper.nextSibling_ =\n
childWrapper.parentNode_ = null;\n childWrapper = nextSibling;\n }
\n wrapper.firstChild_ = wrapper.lastChild_ = null;\n } else {\n va
r node = unwrap(wrapper);\n var child = node.firstChild;\n var nextSib
ling;\n while (child) {\n nextSibling = child.nextSibling;\n
originalRemoveChild.call(node, child);\n child = nextSibling;\n }\n
}\n }\n\n function invalidateParent(node) {\n var p = node.parentNode;\n
return p && p.invalidateShadowRenderer();\n }\n\n function cleanupNodes(no
des) {\n for (var i = 0, n; i < nodes.length; i++) {\n n = nodes[i];\n
n.parentNode.removeChild(n);\n }\n }\n\n var originalImportNode = docum
ent.importNode;\n var originalCloneNode = window.Node.prototype.cloneNode;\n\n
function cloneNode(node, deep, opt_doc) {\n var clone;\n if (opt_doc)\n
clone = wrap(originalImportNode.call(opt_doc, node.impl, false));\n else\
n clone = wrap(originalCloneNode.call(node.impl, false));\n\n if (deep)
{\n for (var child = node.firstChild; child; child = child.nextSibling) {\n
clone.appendChild(cloneNode(child, true, opt_doc));\n }\n\n if
(node instanceof wrappers.HTMLTemplateElement) {\n var cloneContent = cl
one.content;\n for (var child = node.content.firstChild;\n ch
ild;\n child = child.nextSibling) {\n cloneContent.appendChi
ld(cloneNode(child, true, opt_doc));\n }\n }\n }\n // TODO(arv
): Some HTML elements also clone other data like value.\n return clone;\n }\
n\n var OriginalNode = window.Node;\n\n /**\n * This represents a wrapper of
a native DOM node.\n * @param {!Node} original The original DOM node, aka, th
e visual DOM node.\n * @constructor\n * @extends {EventTarget}\n */\n fun
ction Node(original) {\n assert(original instanceof OriginalNode);\n\n Eve
ntTarget.call(this, original);\n\n // These properties are used to override t
he visual references with the\n // logical ones. If the value is undefined it
means that the logical is the\n // same as the visual.\n\n /**\n * @t
ype {Node|undefined}\n * @private\n */\n this.parentNode_ = undefined
;\n\n /**\n * @type {Node|undefined}\n * @private\n */\n this.
firstChild_ = undefined;\n\n /**\n * @type {Node|undefined}\n * @priv
ate\n */\n this.lastChild_ = undefined;\n\n /**\n * @type {Node|un
defined}\n * @private\n */\n this.nextSibling_ = undefined;\n\n /*
*\n * @type {Node|undefined}\n * @private\n */\n this.previousSib
ling_ = undefined;\n }\n\n var OriginalDocumentFragment = window.DocumentFragm
ent;\n var originalAppendChild = OriginalNode.prototype.appendChild;\n var ori
ginalCompareDocumentPosition =\n OriginalNode.prototype.compareDocumentPosi
tion;\n var originalInsertBefore = OriginalNode.prototype.insertBefore;\n var
originalRemoveChild = OriginalNode.prototype.removeChild;\n var originalReplace
Child = OriginalNode.prototype.replaceChild;\n\n var isIe = /Trident/.test(navi
gator.userAgent);\n\n var removeChildOriginalHelper = isIe ?\n function(pa
rent, child) {\n try {\n originalRemoveChild.call(parent, child)
;\n } catch (ex) {\n if (!(parent instanceof OriginalDocumentFra
gment))\n throw ex;\n }\n } :\n function(parent, chi
ld) {\n originalRemoveChild.call(parent, child);\n };\n\n Node.prot
otype = Object.create(EventTarget.prototype);\n mixin(Node.prototype, {\n ap
pendChild: function(childWrapper) {\n return this.insertBefore(childWrapper
, null);\n },\n\n insertBefore: function(childWrapper, refWrapper) {\n
assertIsNodeWrapper(childWrapper);\n\n var refNode;\n if (refWrapper
) {\n if (isWrapper(refWrapper)) {\n refNode = unwrap(refWrapper
);\n } else {\n refNode = refWrapper;\n refWrapper = wr
ap(refNode);\n }\n } else {\n refWrapper = null;\n ref
Node = null;\n }\n\n refWrapper && assert(refWrapper.parentNode === th
is);\n\n var nodes;\n var previousNode =\n refWrapper ? refWr
apper.previousSibling : this.lastChild;\n\n var useNative = !this.invalidat
eShadowRenderer() &&\n !invalidateParent(childWrapper);\n\n
if (useNative)\n nodes = collectNodesNative(childWrapper);\n e
lse\n nodes = collectNodes(childWrapper, this, previousNode, refWrapper);
\n\n if (useNative) {\n ensureSameOwnerDocument(this, childWrapper);
\n clearChildNodes(this);\n originalInsertBefore.call(this.impl, u
nwrap(childWrapper), refNode);\n } else {\n if (!previousNode)\n
this.firstChild_ = nodes[0];\n if (!refWrapper)\n this.las
tChild_ = nodes[nodes.length - 1];\n\n var parentNode = refNode ? refNode
.parentNode : this.impl;\n\n // insertBefore refWrapper no matter what th
e parent is?\n if (parentNode) {\n originalInsertBefore.call(par
entNode,\n unwrapNodesForInsertion(this, nodes), refNode);\n
} else {\n adoptNodesIfNeeded(this, nodes);\n }\n }\n\n
enqueueMutation(this, 'childList', {\n addedNodes: nodes,\n nex
tSibling: refWrapper,\n previousSibling: previousNode\n });\n\n
nodesWereAdded(nodes);\n\n return childWrapper;\n },\n\n removeChild
: function(childWrapper) {\n assertIsNodeWrapper(childWrapper);\n if (
childWrapper.parentNode !== this) {\n // IE has invalid DOM trees at time
s.\n var found = false;\n var childNodes = this.childNodes;\n
for (var ieChild = this.firstChild; ieChild;\n ieChild = ieChild.
nextSibling) {\n if (ieChild === childWrapper) {\n found = t
rue;\n break;\n }\n }\n if (!found) {\n
// TODO(arv): DOMException\n throw new Error('NotFoundError');\n
}\n }\n\n var childNode = unwrap(childWrapper);\n var childWr
apperNextSibling = childWrapper.nextSibling;\n var childWrapperPreviousSibl
ing = childWrapper.previousSibling;\n\n if (this.invalidateShadowRenderer()
) {\n // We need to remove the real node from the DOM before updating the
\n // pointers. This is so that that mutation event is dispatched before\
n // the pointers have changed.\n var thisFirstChild = this.firstC
hild;\n var thisLastChild = this.lastChild;\n\n var parentNode = c
hildNode.parentNode;\n if (parentNode)\n removeChildOriginalHelp
er(parentNode, childNode);\n\n if (thisFirstChild === childWrapper)\n
this.firstChild_ = childWrapperNextSibling;\n if (thisLastChild ===
childWrapper)\n this.lastChild_ = childWrapperPreviousSibling;\n
if (childWrapperPreviousSibling)\n childWrapperPreviousSibling.nextSi
bling_ = childWrapperNextSibling;\n if (childWrapperNextSibling) {\n
childWrapperNextSibling.previousSibling_ =\n childWrapperPrevi
ousSibling;\n }\n\n childWrapper.previousSibling_ = childWrapper.n
extSibling_ =\n childWrapper.parentNode_ = undefined;\n } else {
\n clearChildNodes(this);\n removeChildOriginalHelper(this.impl, c
hildNode);\n }\n\n if (!surpressMutations) {\n enqueueMutation(
this, 'childList', {\n removedNodes: createOneElementNodeList(childWrap
per),\n nextSibling: childWrapperNextSibling,\n previousSiblin
g: childWrapperPreviousSibling\n });\n }\n\n registerTransientO
bservers(this, childWrapper);\n\n return childWrapper;\n },\n\n repla
ceChild: function(newChildWrapper, oldChildWrapper) {\n assertIsNodeWrapper
(newChildWrapper);\n\n var oldChildNode;\n if (isWrapper(oldChildWrapp
er)) {\n oldChildNode = unwrap(oldChildWrapper);\n } else {\n
oldChildNode = oldChildWrapper;\n oldChildWrapper = wrap(oldChildNode);\
n }\n\n if (oldChildWrapper.parentNode !== this) {\n // TODO(ar
v): DOMException\n throw new Error('NotFoundError');\n }\n\n va
r nextNode = oldChildWrapper.nextSibling;\n var previousNode = oldChildWrap
per.previousSibling;\n var nodes;\n\n var useNative = !this.invalidate
ShadowRenderer() &&\n !invalidateParent(newChildWrapper);\n
\n if (useNative) {\n nodes = collectNodesNative(newChildWrapper);\n
} else {\n if (nextNode === newChildWrapper)\n nextNode =
newChildWrapper.nextSibling;\n nodes = collectNodes(newChildWrapper, this
, previousNode, nextNode);\n }\n\n if (!useNative) {\n if (this
.firstChild === oldChildWrapper)\n this.firstChild_ = nodes[0];\n
if (this.lastChild === oldChildWrapper)\n this.lastChild_ = nodes[nod
es.length - 1];\n\n oldChildWrapper.previousSibling_ = oldChildWrapper.ne
xtSibling_ =\n oldChildWrapper.parentNode_ = undefined;\n\n //
replaceChild no matter what the parent is?\n if (oldChildNode.parentNode
) {\n originalReplaceChild.call(\n oldChildNode.parentNode
,\n unwrapNodesForInsertion(this, nodes),\n oldChildNo
de);\n }\n } else {\n ensureSameOwnerDocument(this, newChildW
rapper);\n clearChildNodes(this);\n originalReplaceChild.call(this
.impl, unwrap(newChildWrapper),\n oldChildNode)
;\n }\n\n enqueueMutation(this, 'childList', {\n addedNodes: no
des,\n removedNodes: createOneElementNodeList(oldChildWrapper),\n
nextSibling: nextNode,\n previousSibling: previousNode\n });\n\n
nodeWasRemoved(oldChildWrapper);\n nodesWereAdded(nodes);\n\n return
oldChildWrapper;\n },\n\n /**\n * Called after a node was inserted. S
ubclasses override this to invalidate\n * the renderer as needed.\n * @p
rivate\n */\n nodeIsInserted_: function() {\n for (var child = this.
firstChild; child; child = child.nextSibling) {\n child.nodeIsInserted_()
;\n }\n },\n\n hasChildNodes: function() {\n return this.firstCh
ild !== null;\n },\n\n /** @type {Node} */\n get parentNode() {\n
// If the parentNode has not been overridden, use the original parentNode.\n
return this.parentNode_ !== undefined ?\n this.parentNode_ : wrap(thi
s.impl.parentNode);\n },\n\n /** @type {Node} */\n get firstChild() {\n
return this.firstChild_ !== undefined ?\n this.firstChild_ : wrap
(this.impl.firstChild);\n },\n\n /** @type {Node} */\n get lastChild()
{\n return this.lastChild_ !== undefined ?\n this.lastChild_ : wra
p(this.impl.lastChild);\n },\n\n /** @type {Node} */\n get nextSibling(
) {\n return this.nextSibling_ !== undefined ?\n this.nextSibling_
: wrap(this.impl.nextSibling);\n },\n\n /** @type {Node} */\n get prev
iousSibling() {\n return this.previousSibling_ !== undefined ?\n t
his.previousSibling_ : wrap(this.impl.previousSibling);\n },\n\n get paren
tElement() {\n var p = this.parentNode;\n while (p && p.nodeType !== N
ode.ELEMENT_NODE) {\n p = p.parentNode;\n }\n return p;\n },
\n\n get textContent() {\n // TODO(arv): This should fallback to this.im
pl.textContent if there\n // are no shadow trees below or above the context
node.\n var s = '';\n for (var child = this.firstChild; child; child
= child.nextSibling) {\n if (child.nodeType != Node.COMMENT_NODE) {\n
s += child.textContent;\n }\n }\n return s;\n },\n
set textContent(textContent) {\n var removedNodes = snapshotNodeList(this.c
hildNodes);\n\n if (this.invalidateShadowRenderer()) {\n removeAllCh
ildNodes(this);\n if (textContent !== '') {\n var textNode = thi
s.impl.ownerDocument.createTextNode(textContent);\n this.appendChild(te
xtNode);\n }\n } else {\n clearChildNodes(this);\n thi
s.impl.textContent = textContent;\n }\n\n var addedNodes = snapshotNod
eList(this.childNodes);\n\n enqueueMutation(this, 'childList', {\n a
ddedNodes: addedNodes,\n removedNodes: removedNodes\n });\n\n n
odesWereRemoved(removedNodes);\n nodesWereAdded(addedNodes);\n },\n\n
get childNodes() {\n var wrapperList = new NodeList();\n var i = 0;\n
for (var child = this.firstChild; child; child = child.nextSibling) {\n
wrapperList[i++] = child;\n }\n wrapperList.length = i;\n re
turn wrapperList;\n },\n\n cloneNode: function(deep) {\n return clone
Node(this, deep);\n },\n\n contains: function(child) {\n if (!child)\
n return false;\n\n child = wrapIfNeeded(child);\n\n // TODO(ar
v): Optimize using ownerDocument etc.\n if (child === this)\n return
true;\n var parentNode = child.parentNode;\n if (!parentNode)\n
return false;\n return this.contains(parentNode);\n },\n\n compareD
ocumentPosition: function(otherNode) {\n // This only wraps, it therefore o
nly operates on the composed DOM and not\n // the logical DOM.\n retur
n originalCompareDocumentPosition.call(this.impl, unwrap(otherNode));\n },\n\
n normalize: function() {\n var nodes = snapshotNodeList(this.childNodes
);\n var remNodes = [];\n var s = '';\n var modNode;\n\n for
(var i = 0, n; i < nodes.length; i++) {\n n = nodes[i];\n if (n.n
odeType === Node.TEXT_NODE) {\n if (!modNode && !n.data.length)\n
this.removeNode(n);\n else if (!modNode)\n modNode = n
;\n else {\n s += n.data;\n remNodes.push(n);\n
}\n } else {\n if (modNode && remNodes.length) {\n
modNode.data += s;\n cleanUpNodes(remNodes);\n }\n
remNodes = [];\n s = '';\n modNode = null;\n if
(n.childNodes.length)\n n.normalize();\n }\n }\n\n
// handle case where >1 text nodes are the last children\n if (modNode && r
emNodes.length) {\n modNode.data += s;\n cleanupNodes(remNodes);\n
}\n }\n });\n\n defineWrapGetter(Node, 'ownerDocument');\n\n // We u
se a DocumentFragment as a base and then delete the properties of\n // Document
Fragment.prototype from the wrapper Node. Since delete makes\n // objects slow
in some JS engines we recreate the prototype object.\n registerWrapper(Original
Node, Node, document.createDocumentFragment());\n delete Node.prototype.querySe
lector;\n delete Node.prototype.querySelectorAll;\n Node.prototype = mixin(Obj
ect.create(EventTarget.prototype), Node.prototype);\n\n scope.nodeWasAdded = no
deWasAdded;\n scope.nodeWasRemoved = nodeWasRemoved;\n scope.nodesWereAdded =
nodesWereAdded;\n scope.nodesWereRemoved = nodesWereRemoved;\n scope.snapshotN
odeList = snapshotNodeList;\n scope.wrappers.Node = Node;\n scope.cloneNode =
cloneNode;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Au
thors. All rights reserved.\n// Use of this source code is governed by a BSD-sty
le\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n '
use strict';\n\n function findOne(node, selector) {\n var m, el = node.first
ElementChild;\n while (el) {\n if (el.matches(selector))\n return
el;\n m = findOne(el, selector);\n if (m)\n return m;\n e
l = el.nextElementSibling;\n }\n return null;\n }\n\n function findAll(n
ode, selector, results) {\n var el = node.firstElementChild;\n while (el)
{\n if (el.matches(selector))\n results[results.length++] = el;\n
findAll(el, selector, results);\n el = el.nextElementSibling;\n }\n
return results;\n }\n\n // find and findAll will only match Simple Selectors
,\n // Structural Pseudo Classes are not guarenteed to be correct\n // http://
www.w3.org/TR/css3-selectors/#simple-selectors\n\n var SelectorsInterface = {\n
querySelector: function(selector) {\n return findOne(this, selector);\n
},\n querySelectorAll: function(selector) {\n return findAll(this, s
elector, new NodeList())\n }\n };\n\n var GetElementsByInterface = {\n g
etElementsByTagName: function(tagName) {\n // TODO(arv): Check tagName?\n
return this.querySelectorAll(tagName);\n },\n getElementsByClassName:
function(className) {\n // TODO(arv): Check className?\n return this.q
uerySelectorAll('.' + className);\n },\n getElementsByTagNameNS: function(
ns, tagName) {\n if (ns === '*')\n return this.getElementsByTagName(
tagName);\n\n // TODO(arv): Check tagName?\n var result = new NodeList
;\n var els = this.getElementsByTagName(tagName);\n for (var i = 0, j
= 0; i < els.length; i++) {\n if (els[i].namespaceURI === ns)\n
result[j++] = els[i];\n }\n result.length = j;\n return result;\n
}\n };\n\n scope.GetElementsByInterface = GetElementsByInterface;\n scope
.SelectorsInterface = SelectorsInterface;\n\n})(window.ShadowDOMPolyfill);\n","/
/ Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this sourc
e code is goverened by a BSD-style\n// license that can be found in the LICENSE
file.\n\n(function(scope) {\n 'use strict';\n\n var NodeList = scope.wrappers.
NodeList;\n\n function forwardElement(node) {\n while (node && node.nodeType
!== Node.ELEMENT_NODE) {\n node = node.nextSibling;\n }\n return nod
e;\n }\n\n function backwardsElement(node) {\n while (node && node.nodeType
!== Node.ELEMENT_NODE) {\n node = node.previousSibling;\n }\n return
node;\n }\n\n var ParentNodeInterface = {\n get firstElementChild() {\n
return forwardElement(this.firstChild);\n },\n\n get lastElementChild()
{\n return backwardsElement(this.lastChild);\n },\n\n get childEleme
ntCount() {\n var count = 0;\n for (var child = this.firstElementChild
;\n child;\n child = child.nextElementSibling) {\n co
unt++;\n }\n return count;\n },\n\n get children() {\n var
wrapperList = new NodeList();\n var i = 0;\n for (var child = this.fir
stElementChild;\n child;\n child = child.nextElementSibling)
{\n wrapperList[i++] = child;\n }\n wrapperList.length = i;\n
return wrapperList;\n }\n };\n\n var ChildNodeInterface = {\n get n
extElementSibling() {\n return forwardElement(this.nextSibling);\n },\n\
n get previousElementSibling() {\n return backwardsElement(this.previous
Sibling);\n }\n };\n\n scope.ChildNodeInterface = ChildNodeInterface;\n sc
ope.ParentNodeInterface = ParentNodeInterface;\n\n})(window.ShadowDOMPolyfill);\
n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LIC
ENSE file.\n\n(function(scope) {\n 'use strict';\n\n var ChildNodeInterface =
scope.ChildNodeInterface;\n var Node = scope.wrappers.Node;\n var enqueueMutat
ion = scope.enqueueMutation;\n var mixin = scope.mixin;\n var registerWrapper
= scope.registerWrapper;\n\n var OriginalCharacterData = window.CharacterData;\
n\n function CharacterData(node) {\n Node.call(this, node);\n }\n Characte
rData.prototype = Object.create(Node.prototype);\n mixin(CharacterData.prototyp
e, {\n get textContent() {\n return this.data;\n },\n set textCont
ent(value) {\n this.data = value;\n },\n get data() {\n return t
his.impl.data;\n },\n set data(value) {\n var oldValue = this.impl.da
ta;\n enqueueMutation(this, 'characterData', {\n oldValue: oldValue\
n });\n this.impl.data = value;\n }\n });\n\n mixin(CharacterData
.prototype, ChildNodeInterface);\n\n registerWrapper(OriginalCharacterData, Cha
racterData,\n document.createTextNode(''));\n\n scope.wrappers
.CharacterData = CharacterData;\n})(window.ShadowDOMPolyfill);\n","// Copyright
2014 The Polymer Authors. All rights reserved.\n// Use of this source code is go
verened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(fu
nction(scope) {\n 'use strict';\n\n var CharacterData = scope.wrappers.Charact
erData;\n var enqueueMutation = scope.enqueueMutation;\n var mixin = scope.mix
in;\n var registerWrapper = scope.registerWrapper;\n\n function toUInt32(x) {\
n return x >>> 0;\n }\n\n var OriginalText = window.Text;\n\n function Tex
t(node) {\n CharacterData.call(this, node);\n }\n Text.prototype = Object.c
reate(CharacterData.prototype);\n mixin(Text.prototype, {\n splitText: funct
ion(offset) {\n offset = toUInt32(offset);\n var s = this.data;\n
if (offset > s.length)\n throw new Error('IndexSizeError');\n var h
ead = s.slice(0, offset);\n var tail = s.slice(offset);\n this.data =
head;\n var newTextNode = this.ownerDocument.createTextNode(tail);\n i
f (this.parentNode)\n this.parentNode.insertBefore(newTextNode, this.next
Sibling);\n return newTextNode;\n }\n });\n\n registerWrapper(Original
Text, Text, document.createTextNode(''));\n\n scope.wrappers.Text = Text;\n})(w
indow.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights
reserved.\n// Use of this source code is goverened by a BSD-style\n// license th
at can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n
var ChildNodeInterface = scope.ChildNodeInterface;\n var GetElementsByInterfac
e = scope.GetElementsByInterface;\n var Node = scope.wrappers.Node;\n var Pare
ntNodeInterface = scope.ParentNodeInterface;\n var SelectorsInterface = scope.S
electorsInterface;\n var addWrapNodeListMethod = scope.addWrapNodeListMethod;\n
var enqueueMutation = scope.enqueueMutation;\n var mixin = scope.mixin;\n va
r oneOf = scope.oneOf;\n var registerWrapper = scope.registerWrapper;\n var wr
appers = scope.wrappers;\n\n var OriginalElement = window.Element;\n\n var mat
chesNames = [\n 'matches', // needs to come first.\n 'mozMatchesSelector'
,\n 'msMatchesSelector',\n 'webkitMatchesSelector',\n ].filter(function(n
ame) {\n return OriginalElement.prototype[name];\n });\n\n var matchesName
= matchesNames[0];\n\n var originalMatches = OriginalElement.prototype[matchesN
ame];\n\n function invalidateRendererBasedOnAttribute(element, name) {\n //
Only invalidate if parent node is a shadow host.\n var p = element.parentNode
;\n if (!p || !p.shadowRoot)\n return;\n\n var renderer = scope.getRe
ndererForHost(p);\n if (renderer.dependsOnAttribute(name))\n renderer.in
validate();\n }\n\n function enqueAttributeChange(element, name, oldValue) {\n
// This is not fully spec compliant. We should use localName (which might\n
// have a different case than name) and the namespace (which requires us\n
// to get the Attr object).\n enqueueMutation(element, 'attributes', {\n
name: name,\n namespace: null,\n oldValue: oldValue\n });\n }\n\
n function Element(node) {\n Node.call(this, node);\n }\n Element.prototyp
e = Object.create(Node.prototype);\n mixin(Element.prototype, {\n createShad
owRoot: function() {\n var newShadowRoot = new wrappers.ShadowRoot(this);\n
this.impl.polymerShadowRoot_ = newShadowRoot;\n\n var renderer = scop
e.getRendererForHost(this);\n renderer.invalidate();\n\n return newSha
dowRoot;\n },\n\n get shadowRoot() {\n return this.impl.polymerShadow
Root_ || null;\n },\n\n setAttribute: function(name, value) {\n var o
ldValue = this.impl.getAttribute(name);\n this.impl.setAttribute(name, valu
e);\n enqueAttributeChange(this, name, oldValue);\n invalidateRenderer
BasedOnAttribute(this, name);\n },\n\n removeAttribute: function(name) {\n
var oldValue = this.impl.getAttribute(name);\n this.impl.removeAttrib
ute(name);\n enqueAttributeChange(this, name, oldValue);\n invalidateR
endererBasedOnAttribute(this, name);\n },\n\n matches: function(selector)
{\n return originalMatches.call(this.impl, selector);\n }\n });\n\n ma
tchesNames.forEach(function(name) {\n if (name !== 'matches') {\n Elemen
t.prototype[name] = function(selector) {\n return this.matches(selector);
\n };\n }\n });\n\n if (OriginalElement.prototype.webkitCreateShadowRo
ot) {\n Element.prototype.webkitCreateShadowRoot =\n Element.prototype
.createShadowRoot;\n }\n\n /**\n * Useful for generating the accessor pair f
or a property that reflects an\n * attribute.\n */\n function setterDirties
Attribute(prototype, propertyName, opt_attrName) {\n var attrName = opt_attrN
ame || propertyName;\n Object.defineProperty(prototype, propertyName, {\n
get: function() {\n return this.impl[propertyName];\n },\n se
t: function(v) {\n this.impl[propertyName] = v;\n invalidateRender
erBasedOnAttribute(this, attrName);\n },\n configurable: true,\n
enumerable: true\n });\n }\n\n setterDirtiesAttribute(Element.prototype, 'i
d');\n setterDirtiesAttribute(Element.prototype, 'className', 'class');\n\n mi
xin(Element.prototype, ChildNodeInterface);\n mixin(Element.prototype, GetEleme
ntsByInterface);\n mixin(Element.prototype, ParentNodeInterface);\n mixin(Elem
ent.prototype, SelectorsInterface);\n\n registerWrapper(OriginalElement, Elemen
t,\n document.createElementNS(null, 'x'));\n\n // TODO(arv): E
xport setterDirtiesAttribute and apply it to more bindings\n // that reflect at
tributes.\n scope.matchesNames = matchesNames;\n scope.wrappers.Element = Elem
ent;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. A
ll rights reserved.\n// Use of this source code is goverened by a BSD-style\n//
license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use str
ict';\n\n var Element = scope.wrappers.Element;\n var defineGetter = scope.def
ineGetter;\n var enqueueMutation = scope.enqueueMutation;\n var mixin = scope.
mixin;\n var nodesWereAdded = scope.nodesWereAdded;\n var nodesWereRemoved = s
cope.nodesWereRemoved;\n var registerWrapper = scope.registerWrapper;\n var sn
apshotNodeList = scope.snapshotNodeList;\n var unwrap = scope.unwrap;\n var wr
ap = scope.wrap;\n var wrappers = scope.wrappers;\n\n ////////////////////////
/////////////////////////////////////////////////////\n // innerHTML and outerH
TML\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.
html#escapingString\n var escapeAttrRegExp = /[&\\u00A0\"]/g;\n var escapeData
RegExp = /[&\\u00A0<>]/g;\n\n function escapeReplace(c) {\n switch (c) {\n
case '&':\n return '&';\n case '<':\n return '<';\
n case '>':\n return '>';\n case '\"':\n return '&quo
t;'\n case '\\u00A0':\n return ' ';\n }\n }\n\n function e
scapeAttr(s) {\n return s.replace(escapeAttrRegExp, escapeReplace);\n }\n\n
function escapeData(s) {\n return s.replace(escapeDataRegExp, escapeReplace)
;\n }\n\n function makeSet(arr) {\n var set = {};\n for (var i = 0; i <
arr.length; i++) {\n set[arr[i]] = true;\n }\n return set;\n }\n\n
// http://www.whatwg.org/specs/web-apps/current-work/#void-elements\n var voidE
lements = makeSet([\n 'area',\n 'base',\n 'br',\n 'col',\n 'comma
nd',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'lin
k',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n ]);\n\
n var plaintextParents = makeSet([\n 'style',\n 'script',\n 'xmp',\n
'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript'\n
]);\n\n function getOuterHTML(node, parentNode) {\n switch (node.nodeType)
{\n case Node.ELEMENT_NODE:\n var tagName = node.tagName.toLowerCas
e();\n var s = '<' + tagName;\n var attrs = node.attributes;\n
for (var i = 0, attr; attr = attrs[i]; i++) {\n s += ' ' + attr.nam
e + '=\"' + escapeAttr(attr.value) + '\"';\n }\n s += '>';\n
if (voidElements[tagName])\n return s;\n\n return s + getInner
HTML(node) + '</' + tagName + '>';\n\n case Node.TEXT_NODE:\n var da
ta = node.data;\n if (parentNode && plaintextParents[parentNode.localName
])\n return data;\n return escapeData(data);\n\n case Node.
COMMENT_NODE:\n return '<!--' + node.data + '-->';\n\n default:\n
console.error(node);\n throw new Error('not implemented');\n }\n
}\n\n function getInnerHTML(node) {\n if (node instanceof wrappers.HTMLTemp
lateElement)\n node = node.content;\n\n var s = '';\n for (var child
= node.firstChild; child; child = child.nextSibling) {\n s += getOuterHTML(
child, node);\n }\n return s;\n }\n\n function setInnerHTML(node, value,
opt_tagName) {\n var tagName = opt_tagName || 'div';\n node.textContent =
'';\n var tempElement = unwrap(node.ownerDocument.createElement(tagName));\n
tempElement.innerHTML = value;\n var firstChild;\n while (firstChild =
tempElement.firstChild) {\n node.appendChild(wrap(firstChild));\n }\n
}\n\n // IE11 does not have MSIE in the user agent string.\n var oldIe = /MSIE
/.test(navigator.userAgent);\n\n var OriginalHTMLElement = window.HTMLElement;\
n var OriginalHTMLTemplateElement = window.HTMLTemplateElement;\n\n function H
TMLElement(node) {\n Element.call(this, node);\n }\n HTMLElement.prototype
= Object.create(Element.prototype);\n mixin(HTMLElement.prototype, {\n get i
nnerHTML() {\n return getInnerHTML(this);\n },\n set innerHTML(value)
{\n // IE9 does not handle set innerHTML correctly on plaintextParents. It
\n // creates element children. For example\n //\n // scriptEle
ment.innerHTML = '<a>test</a>'\n //\n // Creates a single HTMLAnchorEl
ement child.\n if (oldIe && plaintextParents[this.localName]) {\n th
is.textContent = value;\n return;\n }\n\n var removedNodes = sn
apshotNodeList(this.childNodes);\n\n if (this.invalidateShadowRenderer()) {
\n if (this instanceof wrappers.HTMLTemplateElement)\n setInnerH
TML(this.content, value);\n else\n setInnerHTML(this, value, thi
s.tagName);\n\n // If we have a non native template element we need to hand
le this\n // manually since setting impl.innerHTML would add the html as di
rect\n // children and not be moved over to the content fragment.\n }
else if (!OriginalHTMLTemplateElement &&\n this instanceof wrapp
ers.HTMLTemplateElement) {\n setInnerHTML(this.content, value);\n }
else {\n this.impl.innerHTML = value;\n }\n\n var addedNodes =
snapshotNodeList(this.childNodes);\n\n enqueueMutation(this, 'childList', {
\n addedNodes: addedNodes,\n removedNodes: removedNodes\n });
\n\n nodesWereRemoved(removedNodes);\n nodesWereAdded(addedNodes);\n
},\n\n get outerHTML() {\n return getOuterHTML(this, this.parentNode);
\n },\n set outerHTML(value) {\n var p = this.parentNode;\n if (
p) {\n p.invalidateShadowRenderer();\n var df = frag(p, value);\n
p.replaceChild(df, this);\n }\n },\n\n insertAdjacentHTML: fun
ction(position, text) {\n var contextElement, refNode;\n switch (Strin
g(position).toLowerCase()) {\n case 'beforebegin':\n contextElem
ent = this.parentNode;\n refNode = this;\n break;\n cas
e 'afterend':\n contextElement = this.parentNode;\n refNode =
this.nextSibling;\n break;\n case 'afterbegin':\n conte
xtElement = this;\n refNode = this.firstChild;\n break;\n
case 'beforeend':\n contextElement = this;\n refNode = null
;\n break;\n default:\n return;\n }\n\n var d
f = frag(contextElement, text);\n contextElement.insertBefore(df, refNode);
\n }\n });\n\n function frag(contextElement, html) {\n // TODO(arv): Thi
s does not work with SVG and other non HTML elements.\n var p = unwrap(contex
tElement.cloneNode(false));\n p.innerHTML = html;\n var df = unwrap(docume
nt.createDocumentFragment());\n var c;\n while (c = p.firstChild) {\n
df.appendChild(c);\n }\n return wrap(df);\n }\n\n function getter(name)
{\n return function() {\n scope.renderAllPending();\n return this.
impl[name];\n };\n }\n\n function getterRequiresRendering(name) {\n defi
neGetter(HTMLElement, name, getter(name));\n }\n\n [\n 'clientHeight',\n
'clientLeft',\n 'clientTop',\n 'clientWidth',\n 'offsetHeight',\n '
offsetLeft',\n 'offsetTop',\n 'offsetWidth',\n 'scrollHeight',\n 'sc
rollWidth',\n ].forEach(getterRequiresRendering);\n\n function getterAndSetter
RequiresRendering(name) {\n Object.defineProperty(HTMLElement.prototype, name
, {\n get: getter(name),\n set: function(v) {\n scope.renderAll
Pending();\n this.impl[name] = v;\n },\n configurable: true,\n
enumerable: true\n });\n }\n\n [\n 'scrollLeft',\n 'scrollTop',\
n ].forEach(getterAndSetterRequiresRendering);\n\n function methodRequiresRend
ering(name) {\n Object.defineProperty(HTMLElement.prototype, name, {\n v
alue: function() {\n scope.renderAllPending();\n return this.impl[
name].apply(this.impl, arguments);\n },\n configurable: true,\n e
numerable: true\n });\n }\n\n [\n 'getBoundingClientRect',\n 'getClie
ntRects',\n 'scrollIntoView'\n ].forEach(methodRequiresRendering);\n\n // H
TMLElement is abstract so we use a subclass that has no members.\n registerWrap
per(OriginalHTMLElement, HTMLElement,\n document.createElement(
'b'));\n\n scope.wrappers.HTMLElement = HTMLElement;\n\n // TODO: Find a bette
r way to share these two with WrapperShadowRoot.\n scope.getInnerHTML = getInne
rHTML;\n scope.setInnerHTML = setInnerHTML\n})(window.ShadowDOMPolyfill);\n","/
/ Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this sourc
e code is goverened by a BSD-style\n// license that can be found in the LICENSE
file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLElement = scope.wrappe
rs.HTMLElement;\n var mixin = scope.mixin;\n var registerWrapper = scope.regis
terWrapper;\n var wrap = scope.wrap;\n\n var OriginalHTMLCanvasElement = windo
w.HTMLCanvasElement;\n\n function HTMLCanvasElement(node) {\n HTMLElement.ca
ll(this, node);\n }\n HTMLCanvasElement.prototype = Object.create(HTMLElement.
prototype);\n\n mixin(HTMLCanvasElement.prototype, {\n getContext: function(
) {\n var context = this.impl.getContext.apply(this.impl, arguments);\n
return context && wrap(context);\n }\n });\n\n registerWrapper(OriginalHT
MLCanvasElement, HTMLCanvasElement,\n document.createElement('c
anvas'));\n\n scope.wrappers.HTMLCanvasElement = HTMLCanvasElement;\n})(window.
ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserv
ed.\n// Use of this source code is goverened by a BSD-style\n// license that can
be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var H
TMLElement = scope.wrappers.HTMLElement;\n var mixin = scope.mixin;\n var regi
sterWrapper = scope.registerWrapper;\n\n var OriginalHTMLContentElement = windo
w.HTMLContentElement;\n\n function HTMLContentElement(node) {\n HTMLElement.
call(this, node);\n }\n HTMLContentElement.prototype = Object.create(HTMLEleme
nt.prototype);\n mixin(HTMLContentElement.prototype, {\n get select() {\n
return this.getAttribute('select');\n },\n set select(value) {\n t
his.setAttribute('select', value);\n },\n\n setAttribute: function(n, v) {
\n HTMLElement.prototype.setAttribute.call(this, n, v);\n if (String(n
).toLowerCase() === 'select')\n this.invalidateShadowRenderer(true);\n
}\n\n // getDistributedNodes is added in ShadowRenderer\n\n // TODO: attr
ibute boolean resetStyleInheritance;\n });\n\n if (OriginalHTMLContentElement)
\n registerWrapper(OriginalHTMLContentElement, HTMLContentElement);\n\n scop
e.wrappers.HTMLContentElement = HTMLContentElement;\n})(window.ShadowDOMPolyfill
);\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of th
is source code is goverened by a BSD-style\n// license that can be found in the
LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLElement = scop
e.wrappers.HTMLElement;\n var registerWrapper = scope.registerWrapper;\n var u
nwrap = scope.unwrap;\n var rewrap = scope.rewrap;\n\n var OriginalHTMLImageEl
ement = window.HTMLImageElement;\n\n function HTMLImageElement(node) {\n HTM
LElement.call(this, node);\n }\n HTMLImageElement.prototype = Object.create(HT
MLElement.prototype);\n\n registerWrapper(OriginalHTMLImageElement, HTMLImageEl
ement,\n document.createElement('img'));\n\n function Image(wi
dth, height) {\n if (!(this instanceof Image)) {\n throw new TypeError(\
n 'DOM object constructor cannot be called as a function.');\n }\n\n
var node = unwrap(document.createElement('img'));\n HTMLElement.call(this
, node);\n rewrap(node, this);\n\n if (width !== undefined)\n node.wi
dth = width;\n if (height !== undefined)\n node.height = height;\n }\n\
n Image.prototype = HTMLImageElement.prototype;\n\n scope.wrappers.HTMLImageEl
ement = HTMLImageElement;\n scope.wrappers.Image = Image;\n})(window.ShadowDOMP
olyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Us
e of this source code is goverened by a BSD-style\n// license that can be found
in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLElement
= scope.wrappers.HTMLElement;\n var mixin = scope.mixin;\n var registerWrappe
r = scope.registerWrapper;\n\n var OriginalHTMLShadowElement = window.HTMLShado
wElement;\n\n function HTMLShadowElement(node) {\n HTMLElement.call(this, no
de);\n }\n HTMLShadowElement.prototype = Object.create(HTMLElement.prototype);
\n mixin(HTMLShadowElement.prototype, {\n // TODO: attribute boolean resetSt
yleInheritance;\n });\n\n if (OriginalHTMLShadowElement)\n registerWrapper(
OriginalHTMLShadowElement, HTMLShadowElement);\n\n scope.wrappers.HTMLShadowEle
ment = HTMLShadowElement;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 T
he Polymer Authors. All rights reserved.\n// Use of this source code is goverene
d by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function
(scope) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement;\n
var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var
unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n var contentTable = new We
akMap();\n var templateContentsOwnerTable = new WeakMap();\n\n // http://dvcs.
w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html#dfn-template-cont
ents-owner\n function getTemplateContentsOwner(doc) {\n if (!doc.defaultView
)\n return doc;\n var d = templateContentsOwnerTable.get(doc);\n if (
!d) {\n // TODO(arv): This should either be a Document or HTMLDocument depe
nding\n // on doc.\n d = doc.implementation.createHTMLDocument('');\n
while (d.lastChild) {\n d.removeChild(d.lastChild);\n }\n
templateContentsOwnerTable.set(doc, d);\n }\n return d;\n }\n\n function
extractContent(templateElement) {\n // templateElement is not a wrapper here
.\n var doc = getTemplateContentsOwner(templateElement.ownerDocument);\n v
ar df = unwrap(doc.createDocumentFragment());\n var child;\n while (child
= templateElement.firstChild) {\n df.appendChild(child);\n }\n return
df;\n }\n\n var OriginalHTMLTemplateElement = window.HTMLTemplateElement;\n\n
function HTMLTemplateElement(node) {\n HTMLElement.call(this, node);\n i
f (!OriginalHTMLTemplateElement) {\n var content = extractContent(node);\n
contentTable.set(this, wrap(content));\n }\n }\n HTMLTemplateElement.p
rototype = Object.create(HTMLElement.prototype);\n\n mixin(HTMLTemplateElement.
prototype, {\n get content() {\n if (OriginalHTMLTemplateElement)\n
return wrap(this.impl.content);\n return contentTable.get(this);\n },
\n\n // TODO(arv): cloneNode needs to clone content.\n\n });\n\n if (Origin
alHTMLTemplateElement)\n registerWrapper(OriginalHTMLTemplateElement, HTMLTem
plateElement);\n\n scope.wrappers.HTMLTemplateElement = HTMLTemplateElement;\n}
)(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All righ
ts reserved.\n// Use of this source code is goverened by a BSD-style\n// license
that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n
\n var HTMLElement = scope.wrappers.HTMLElement;\n var registerWrapper = scope
.registerWrapper;\n\n var OriginalHTMLMediaElement = window.HTMLMediaElement;\n
\n function HTMLMediaElement(node) {\n HTMLElement.call(this, node);\n }\n
HTMLMediaElement.prototype = Object.create(HTMLElement.prototype);\n\n registe
rWrapper(OriginalHTMLMediaElement, HTMLMediaElement,\n document
.createElement('audio'));\n\n scope.wrappers.HTMLMediaElement = HTMLMediaElemen
t;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All
rights reserved.\n// Use of this source code is goverened by a BSD-style\n// li
cense that can be found in the LICENSE file.\n\n(function(scope) {\n 'use stric
t';\n\n var HTMLMediaElement = scope.wrappers.HTMLMediaElement;\n var register
Wrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var rewrap = s
cope.rewrap;\n\n var OriginalHTMLAudioElement = window.HTMLAudioElement;\n\n f
unction HTMLAudioElement(node) {\n HTMLMediaElement.call(this, node);\n }\n
HTMLAudioElement.prototype = Object.create(HTMLMediaElement.prototype);\n\n re
gisterWrapper(OriginalHTMLAudioElement, HTMLAudioElement,\n doc
ument.createElement('audio'));\n\n function Audio(src) {\n if (!(this instan
ceof Audio)) {\n throw new TypeError(\n 'DOM object constructor ca
nnot be called as a function.');\n }\n\n var node = unwrap(document.create
Element('audio'));\n HTMLMediaElement.call(this, node);\n rewrap(node, thi
s);\n\n node.setAttribute('preload', 'auto');\n if (src !== undefined)\n
node.setAttribute('src', src);\n }\n\n Audio.prototype = HTMLAudioElement.
prototype;\n\n scope.wrappers.HTMLAudioElement = HTMLAudioElement;\n scope.wra
ppers.Audio = Audio;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Po
lymer Authors. All rights reserved.\n// Use of this source code is goverened by
a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scop
e) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement;\n var
mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var rewr
ap = scope.rewrap;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n
var OriginalHTMLOptionElement = window.HTMLOptionElement;\n\n function trimText
(s) {\n return s.replace(/\\s+/g, ' ').trim();\n }\n\n function HTMLOptionE
lement(node) {\n HTMLElement.call(this, node);\n }\n HTMLOptionElement.prot
otype = Object.create(HTMLElement.prototype);\n mixin(HTMLOptionElement.prototy
pe, {\n get text() {\n return trimText(this.textContent);\n },\n s
et text(value) {\n this.textContent = trimText(String(value));\n },\n
get form() {\n return wrap(unwrap(this).form);\n }\n });\n\n register
Wrapper(OriginalHTMLOptionElement, HTMLOptionElement,\n documen
t.createElement('option'));\n\n function Option(text, value, defaultSelected, s
elected) {\n if (!(this instanceof Option)) {\n throw new TypeError(\n
'DOM object constructor cannot be called as a function.');\n }\n\n
var node = unwrap(document.createElement('option'));\n HTMLElement.call(this
, node);\n rewrap(node, this);\n\n if (text !== undefined)\n node.tex
t = text;\n if (value !== undefined)\n node.setAttribute('value', value)
;\n if (defaultSelected === true)\n node.setAttribute('selected', '');\n
node.selected = selected === true;\n }\n\n Option.prototype = HTMLOptionEl
ement.prototype;\n\n scope.wrappers.HTMLOptionElement = HTMLOptionElement;\n s
cope.wrappers.Option = Option;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2
013 The Polymer Authors. All rights reserved.\n// Use of this source code is gov
erened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(fun
ction(scope) {\n 'use strict';\n\n var HTMLContentElement = scope.wrappers.HTM
LContentElement;\n var HTMLElement = scope.wrappers.HTMLElement;\n var HTMLSha
dowElement = scope.wrappers.HTMLShadowElement;\n var HTMLTemplateElement = scop
e.wrappers.HTMLTemplateElement;\n var mixin = scope.mixin;\n var registerWrapp
er = scope.registerWrapper;\n\n var OriginalHTMLUnknownElement = window.HTMLUnk
nownElement;\n\n function HTMLUnknownElement(node) {\n switch (node.localNam
e) {\n case 'content':\n return new HTMLContentElement(node);\n
case 'shadow':\n return new HTMLShadowElement(node);\n case 'templa
te':\n return new HTMLTemplateElement(node);\n }\n HTMLElement.call
(this, node);\n }\n HTMLUnknownElement.prototype = Object.create(HTMLElement.p
rototype);\n registerWrapper(OriginalHTMLUnknownElement, HTMLUnknownElement);\n
scope.wrappers.HTMLUnknownElement = HTMLUnknownElement;\n})(window.ShadowDOMPo
lyfill);\n","// Copyright 2014 The Polymer Authors. All rights reserved.\n// Use
of this source code is goverened by a BSD-style\n// license that can be found i
n the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var registerObje
ct = scope.registerObject;\n\n var SVG_NS = 'http://www.w3.org/2000/svg';\n va
r svgTitleElement = document.createElementNS(SVG_NS, 'title');\n var SVGTitleEl
ement = registerObject(svgTitleElement);\n var SVGElement = Object.getPrototype
Of(SVGTitleElement.prototype).constructor;\n\n scope.wrappers.SVGElement = SVGE
lement;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2014 The Polymer Authors
. All rights reserved.\n// Use of this source code is goverened by a BSD-style\n
// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use
strict';\n\n var mixin = scope.mixin;\n var registerWrapper = scope.registerWr
apper;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n var Original
SVGUseElement = window.SVGUseElement;\n\n // IE uses SVGElement as parent inter
face, SVG2 (Blink & Gecko) uses\n // SVGGraphicsElement. Use the <g> element to
get the right prototype.\n\n var SVG_NS = 'http://www.w3.org/2000/svg';\n var
gWrapper = wrap(document.createElementNS(SVG_NS, 'g'));\n var useElement = doc
ument.createElementNS(SVG_NS, 'use');\n var SVGGElement = gWrapper.constructor;
\n var parentInterfacePrototype = Object.getPrototypeOf(SVGGElement.prototype);
\n var parentInterface = parentInterfacePrototype.constructor;\n\n function SV
GUseElement(impl) {\n parentInterface.call(this, impl);\n }\n\n SVGUseEleme
nt.prototype = Object.create(parentInterfacePrototype);\n\n // Firefox does not
expose instanceRoot.\n if ('instanceRoot' in useElement) {\n mixin(SVGUseEl
ement.prototype, {\n get instanceRoot() {\n return wrap(unwrap(this)
.instanceRoot);\n },\n get animatedInstanceRoot() {\n return wr
ap(unwrap(this).animatedInstanceRoot);\n },\n });\n }\n\n registerWrap
per(OriginalSVGUseElement, SVGUseElement, useElement);\n\n scope.wrappers.SVGUs
eElement = SVGUseElement;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2014 T
he Polymer Authors. All rights reserved.\n// Use of this source code is goverene
d by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function
(scope) {\n 'use strict';\n\n var EventTarget = scope.wrappers.EventTarget;\n
var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var
wrap = scope.wrap;\n\n var OriginalSVGElementInstance = window.SVGElementInsta
nce;\n if (!OriginalSVGElementInstance)\n return;\n\n function SVGElementIn
stance(impl) {\n EventTarget.call(this, impl);\n }\n\n SVGElementInstance.p
rototype = Object.create(EventTarget.prototype);\n mixin(SVGElementInstance.pro
totype, {\n /** @type {SVGElement} */\n get correspondingElement() {\n
return wrap(this.impl.correspondingElement);\n },\n\n /** @type {SVGUseE
lement} */\n get correspondingUseElement() {\n return wrap(this.impl.cor
respondingUseElement);\n },\n\n /** @type {SVGElementInstance} */\n get
parentNode() {\n return wrap(this.impl.parentNode);\n },\n\n /** @ty
pe {SVGElementInstanceList} */\n get childNodes() {\n throw new Error('N
ot implemented');\n },\n\n /** @type {SVGElementInstance} */\n get firs
tChild() {\n return wrap(this.impl.firstChild);\n },\n\n /** @type {S
VGElementInstance} */\n get lastChild() {\n return wrap(this.impl.lastCh
ild);\n },\n\n /** @type {SVGElementInstance} */\n get previousSibling(
) {\n return wrap(this.impl.previousSibling);\n },\n\n /** @type {SVG
ElementInstance} */\n get nextSibling() {\n return wrap(this.impl.nextSi
bling);\n }\n });\n\n registerWrapper(OriginalSVGElementInstance, SVGElemen
tInstance);\n\n scope.wrappers.SVGElementInstance = SVGElementInstance;\n})(win
dow.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights re
served.\n// Use of this source code is goverened by a BSD-style\n// license that
can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n v
ar mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var u
nwrap = scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap
= scope.wrap;\n\n var OriginalCanvasRenderingContext2D = window.CanvasRendering
Context2D;\n\n function CanvasRenderingContext2D(impl) {\n this.impl = impl;
\n }\n\n mixin(CanvasRenderingContext2D.prototype, {\n get canvas() {\n
return wrap(this.impl.canvas);\n },\n\n drawImage: function() {\n a
rguments[0] = unwrapIfNeeded(arguments[0]);\n this.impl.drawImage.apply(thi
s.impl, arguments);\n },\n\n createPattern: function() {\n arguments[
0] = unwrap(arguments[0]);\n return this.impl.createPattern.apply(this.impl
, arguments);\n }\n });\n\n registerWrapper(OriginalCanvasRenderingContext2
D, CanvasRenderingContext2D,\n document.createElement('canvas')
.getContext('2d'));\n\n scope.wrappers.CanvasRenderingContext2D = CanvasRenderi
ngContext2D;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Au
thors. All rights reserved.\n// Use of this source code is goverened by a BSD-st
yle\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n
'use strict';\n\n var mixin = scope.mixin;\n var registerWrapper = scope.regis
terWrapper;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = scope.wr
ap;\n\n var OriginalWebGLRenderingContext = window.WebGLRenderingContext;\n\n
// IE10 does not have WebGL.\n if (!OriginalWebGLRenderingContext)\n return;
\n\n function WebGLRenderingContext(impl) {\n this.impl = impl;\n }\n\n mi
xin(WebGLRenderingContext.prototype, {\n get canvas() {\n return wrap(th
is.impl.canvas);\n },\n\n texImage2D: function() {\n arguments[5] = u
nwrapIfNeeded(arguments[5]);\n this.impl.texImage2D.apply(this.impl, argume
nts);\n },\n\n texSubImage2D: function() {\n arguments[6] = unwrapIfN
eeded(arguments[6]);\n this.impl.texSubImage2D.apply(this.impl, arguments);
\n }\n });\n\n // Blink/WebKit has broken DOM bindings. Usually we would cr
eate an instance\n // of the object and pass it into registerWrapper as a \"blu
eprint\" but\n // creating WebGL contexts is expensive and might fail so we use
a dummy\n // object with dummy instance properties for these broken browsers.\
n var instanceProperties = /WebKit/.test(navigator.userAgent) ?\n {drawing
BufferHeight: null, drawingBufferWidth: null} : {};\n\n registerWrapper(Origina
lWebGLRenderingContext, WebGLRenderingContext,\n instanceProperties);\n\n
scope.wrappers.WebGLRenderingContext = WebGLRenderingContext;\n})(window.ShadowD
OMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n//
Use of this source code is goverened by a BSD-style\n// license that can be fou
nd in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var register
Wrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var unwrapIfNe
eded = scope.unwrapIfNeeded;\n var wrap = scope.wrap;\n\n var OriginalRange =
window.Range;\n\n function Range(impl) {\n this.impl = impl;\n }\n Range.p
rototype = {\n get startContainer() {\n return wrap(this.impl.startConta
iner);\n },\n get endContainer() {\n return wrap(this.impl.endContain
er);\n },\n get commonAncestorContainer() {\n return wrap(this.impl.c
ommonAncestorContainer);\n },\n setStart: function(refNode,offset) {\n
this.impl.setStart(unwrapIfNeeded(refNode), offset);\n },\n setEnd: func
tion(refNode,offset) {\n this.impl.setEnd(unwrapIfNeeded(refNode), offset);
\n },\n setStartBefore: function(refNode) {\n this.impl.setStartBefor
e(unwrapIfNeeded(refNode));\n },\n setStartAfter: function(refNode) {\n
this.impl.setStartAfter(unwrapIfNeeded(refNode));\n },\n setEndBefore:
function(refNode) {\n this.impl.setEndBefore(unwrapIfNeeded(refNode));\n
},\n setEndAfter: function(refNode) {\n this.impl.setEndAfter(unwrapIfN
eeded(refNode));\n },\n selectNode: function(refNode) {\n this.impl.s
electNode(unwrapIfNeeded(refNode));\n },\n selectNodeContents: function(re
fNode) {\n this.impl.selectNodeContents(unwrapIfNeeded(refNode));\n },\n
compareBoundaryPoints: function(how, sourceRange) {\n return this.impl.
compareBoundaryPoints(how, unwrap(sourceRange));\n },\n extractContents: f
unction() {\n return wrap(this.impl.extractContents());\n },\n cloneC
ontents: function() {\n return wrap(this.impl.cloneContents());\n },\n
insertNode: function(node) {\n this.impl.insertNode(unwrapIfNeeded(node))
;\n },\n surroundContents: function(newParent) {\n this.impl.surround
Contents(unwrapIfNeeded(newParent));\n },\n cloneRange: function() {\n
return wrap(this.impl.cloneRange());\n },\n isPointInRange: function(nod
e, offset) {\n return this.impl.isPointInRange(unwrapIfNeeded(node), offset
);\n },\n comparePoint: function(node, offset) {\n return this.impl.c
omparePoint(unwrapIfNeeded(node), offset);\n },\n intersectsNode: function
(node) {\n return this.impl.intersectsNode(unwrapIfNeeded(node));\n },\n
toString: function() {\n return this.impl.toString();\n }\n };\n\n
// IE9 does not have createContextualFragment.\n if (OriginalRange.prototype.c
reateContextualFragment) {\n Range.prototype.createContextualFragment = funct
ion(html) {\n return wrap(this.impl.createContextualFragment(html));\n }
;\n }\n\n registerWrapper(window.Range, Range, document.createRange());\n\n s
cope.wrappers.Range = Range;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2
013 The Polymer Authors. All rights reserved.\n// Use of this source code is gov
erened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(fun
ction(scope) {\n 'use strict';\n\n var GetElementsByInterface = scope.GetEleme
ntsByInterface;\n var ParentNodeInterface = scope.ParentNodeInterface;\n var S
electorsInterface = scope.SelectorsInterface;\n var mixin = scope.mixin;\n var
registerObject = scope.registerObject;\n\n var DocumentFragment = registerObje
ct(document.createDocumentFragment());\n mixin(DocumentFragment.prototype, Pare
ntNodeInterface);\n mixin(DocumentFragment.prototype, SelectorsInterface);\n m
ixin(DocumentFragment.prototype, GetElementsByInterface);\n\n var Comment = reg
isterObject(document.createComment(''));\n\n scope.wrappers.Comment = Comment;\
n scope.wrappers.DocumentFragment = DocumentFragment;\n\n})(window.ShadowDOMPol
yfill);\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use
of this source code is goverened by a BSD-style\n// license that can be found in
the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var DocumentFragm
ent = scope.wrappers.DocumentFragment;\n var elementFromPoint = scope.elementFr
omPoint;\n var getInnerHTML = scope.getInnerHTML;\n var mixin = scope.mixin;\n
var rewrap = scope.rewrap;\n var setInnerHTML = scope.setInnerHTML;\n var un
wrap = scope.unwrap;\n\n var shadowHostTable = new WeakMap();\n var nextOlderS
hadowTreeTable = new WeakMap();\n\n var spaceCharRe = /[ \\t\\n\\r\\f]/;\n\n f
unction ShadowRoot(hostWrapper) {\n var node = unwrap(hostWrapper.impl.ownerD
ocument.createDocumentFragment());\n DocumentFragment.call(this, node);\n\n
// createDocumentFragment associates the node with a wrapper\n // DocumentF
ragment instance. Override that.\n rewrap(node, this);\n\n var oldShadowRo
ot = hostWrapper.shadowRoot;\n nextOlderShadowTreeTable.set(this, oldShadowRo
ot);\n\n shadowHostTable.set(this, hostWrapper);\n }\n ShadowRoot.prototype
= Object.create(DocumentFragment.prototype);\n mixin(ShadowRoot.prototype, {\n
get innerHTML() {\n return getInnerHTML(this);\n },\n set innerHT
ML(value) {\n setInnerHTML(this, value);\n this.invalidateShadowRender
er();\n },\n\n get olderShadowRoot() {\n return nextOlderShadowTreeTa
ble.get(this) || null;\n },\n\n get host() {\n return shadowHostTable
.get(this) || null;\n },\n\n invalidateShadowRenderer: function() {\n
return shadowHostTable.get(this).invalidateShadowRenderer();\n },\n\n ele
mentFromPoint: function(x, y) {\n return elementFromPoint(this, this.ownerD
ocument, x, y);\n },\n\n getElementById: function(id) {\n if (spaceCh
arRe.test(id))\n return null;\n return this.querySelector('[id=\"' +
id + '\"]');\n }\n });\n\n scope.wrappers.ShadowRoot = ShadowRoot;\n\n})(w
indow.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights
reserved.\n// Use of this source code is governed by a BSD-style\n// license tha
t can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n
var Element = scope.wrappers.Element;\n var HTMLContentElement = scope.wrappers
.HTMLContentElement;\n var HTMLShadowElement = scope.wrappers.HTMLShadowElement
;\n var Node = scope.wrappers.Node;\n var ShadowRoot = scope.wrappers.ShadowRo
ot;\n var assert = scope.assert;\n var mixin = scope.mixin;\n var oneOf = sco
pe.oneOf;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n /**\n *
Updates the fields of a wrapper to a snapshot of the logical DOM as needed.\n
* Up means parentNode\n * Sideways means previous and next sibling.\n * @pa
ram {!Node} wrapper\n */\n function updateWrapperUpAndSideways(wrapper) {\n
wrapper.previousSibling_ = wrapper.previousSibling;\n wrapper.nextSibling_
= wrapper.nextSibling;\n wrapper.parentNode_ = wrapper.parentNode;\n }\n\n
/**\n * Updates the fields of a wrapper to a snapshot of the logical DOM as ne
eded.\n * Down means first and last child\n * @param {!Node} wrapper\n */\
n function updateWrapperDown(wrapper) {\n wrapper.firstChild_ = wrapper.firs
tChild;\n wrapper.lastChild_ = wrapper.lastChild;\n }\n\n function updateAl
lChildNodes(parentNodeWrapper) {\n assert(parentNodeWrapper instanceof Node);
\n for (var childWrapper = parentNodeWrapper.firstChild;\n childWrapp
er;\n childWrapper = childWrapper.nextSibling) {\n updateWrapperUpA
ndSideways(childWrapper);\n }\n updateWrapperDown(parentNodeWrapper);\n }
\n\n function insertBefore(parentNodeWrapper, newChildWrapper, refChildWrapper)
{\n var parentNode = unwrap(parentNodeWrapper);\n var newChild = unwrap(n
ewChildWrapper);\n var refChild = refChildWrapper ? unwrap(refChildWrapper) :
null;\n\n remove(newChildWrapper);\n updateWrapperUpAndSideways(newChildW
rapper);\n\n if (!refChildWrapper) {\n parentNodeWrapper.lastChild_ = pa
rentNodeWrapper.lastChild;\n if (parentNodeWrapper.lastChild === parentNode
Wrapper.firstChild)\n parentNodeWrapper.firstChild_ = parentNodeWrapper.f
irstChild;\n\n var lastChildWrapper = wrap(parentNode.lastChild);\n if
(lastChildWrapper)\n lastChildWrapper.nextSibling_ = lastChildWrapper.ne
xtSibling;\n } else {\n if (parentNodeWrapper.firstChild === refChildWra
pper)\n parentNodeWrapper.firstChild_ = refChildWrapper;\n\n refChil
dWrapper.previousSibling_ = refChildWrapper.previousSibling;\n }\n\n paren
tNode.insertBefore(newChild, refChild);\n }\n\n function remove(nodeWrapper) {
\n var node = unwrap(nodeWrapper)\n var parentNode = node.parentNode;\n
if (!parentNode)\n return;\n\n var parentNodeWrapper = wrap(parentNode)
;\n updateWrapperUpAndSideways(nodeWrapper);\n\n if (nodeWrapper.previousS
ibling)\n nodeWrapper.previousSibling.nextSibling_ = nodeWrapper;\n if (
nodeWrapper.nextSibling)\n nodeWrapper.nextSibling.previousSibling_ = nodeW
rapper;\n\n if (parentNodeWrapper.lastChild === nodeWrapper)\n parentNod
eWrapper.lastChild_ = nodeWrapper;\n if (parentNodeWrapper.firstChild === nod
eWrapper)\n parentNodeWrapper.firstChild_ = nodeWrapper;\n\n parentNode.
removeChild(node);\n }\n\n var distributedChildNodesTable = new WeakMap();\n
var eventParentsTable = new WeakMap();\n var insertionParentTable = new WeakMap
();\n var rendererForHostTable = new WeakMap();\n\n function distributeChildTo
InsertionPoint(child, insertionPoint) {\n getDistributedChildNodes(insertionP
oint).push(child);\n assignToInsertionPoint(child, insertionPoint);\n\n va
r eventParents = eventParentsTable.get(child);\n if (!eventParents)\n ev
entParentsTable.set(child, eventParents = []);\n eventParents.push(insertionP
oint);\n }\n\n function resetDistributedChildNodes(insertionPoint) {\n dist
ributedChildNodesTable.set(insertionPoint, []);\n }\n\n function getDistribute
dChildNodes(insertionPoint) {\n return distributedChildNodesTable.get(inserti
onPoint);\n }\n\n function getChildNodesSnapshot(node) {\n var result = [],
i = 0;\n for (var child = node.firstChild; child; child = child.nextSibling)
{\n result[i++] = child;\n }\n return result;\n }\n\n /**\n * Vi
sits all nodes in the tree that fulfils the |predicate|. If the |visitor|\n *
function returns |false| the traversal is aborted.\n * @param {!Node} tree\n
* @param {function(!Node) : boolean} predicate\n * @param {function(!Node) :
*} visitor\n */\n function visit(tree, predicate, visitor) {\n // This ope
rates on logical DOM.\n for (var node = tree.firstChild; node; node = node.ne
xtSibling) {\n if (predicate(node)) {\n if (visitor(node) === false)
\n return;\n } else {\n visit(node, predicate, visitor);\n
}\n }\n }\n\n // Matching Insertion Points\n // http://dvcs.w3.org/hg
/webcomponents/raw-file/tip/spec/shadow/index.html#matching-insertion-points\n\n
// TODO(arv): Verify this... I don't remember why I picked this regexp.\n var
selectorMatchRegExp = /^[*.:#[a-zA-Z_|]/;\n\n var allowedPseudoRegExp = new Re
gExp('^:(' + [\n 'link',\n 'visited',\n 'target',\n 'enabled',\n
'disabled',\n 'checked',\n 'indeterminate',\n 'nth-child',\n 'nth-la
st-child',\n 'nth-of-type',\n 'nth-last-of-type',\n 'first-child',\n
'last-child',\n 'first-of-type',\n 'last-of-type',\n 'only-of-type',\n
].join('|') + ')');\n\n\n /**\n * @param {Element} node\n * @oaram {Eleme
nt} point The insertion point element.\n * @return {boolean} Whether the node
matches the insertion point.\n */\n function matchesCriteria(node, point) {\n
var select = point.getAttribute('select');\n if (!select)\n return t
rue;\n\n // Here we know the select attribute is a non empty string.\n sel
ect = select.trim();\n if (!select)\n return true;\n\n if (!(node ins
tanceof Element))\n return false;\n\n // The native matches function in
IE9 does not correctly work with elements\n // that are not in the document.\
n // TODO(arv): Implement matching in JS.\n // https://github.com/Polymer/
ShadowDOM/issues/361\n if (select === '*' || select === node.localName)\n
return true;\n\n // TODO(arv): This does not seem right. Need to check for
a simple selector.\n if (!selectorMatchRegExp.test(select))\n return fal
se;\n\n // TODO(arv): This no longer matches the spec.\n if (select[0] ===
':' && !allowedPseudoRegExp.test(select))\n return false;\n\n try {\n
return node.matches(select);\n } catch (ex) {\n // Invalid selector.
\n return false;\n }\n }\n\n var request = oneOf(window, [\n 'reque
stAnimationFrame',\n 'mozRequestAnimationFrame',\n 'webkitRequestAnimation
Frame',\n 'setTimeout'\n ]);\n\n var pendingDirtyRenderers = [];\n var ren
derTimer;\n\n function renderAllPending() {\n for (var i = 0; i < pendingDir
tyRenderers.length; i++) {\n pendingDirtyRenderers[i].render();\n }\n
pendingDirtyRenderers = [];\n }\n\n function handleRequestAnimationFrame() {\
n renderTimer = null;\n renderAllPending();\n }\n\n /**\n * Returns ex
isting shadow renderer for a host or creates it if it is needed.\n * @params {
!Element} host\n * @return {!ShadowRenderer}\n */\n function getRendererFor
Host(host) {\n var renderer = rendererForHostTable.get(host);\n if (!rende
rer) {\n renderer = new ShadowRenderer(host);\n rendererForHostTable.s
et(host, renderer);\n }\n return renderer;\n }\n\n function getShadowRoo
tAncestor(node) {\n for (; node; node = node.parentNode) {\n if (node in
stanceof ShadowRoot)\n return node;\n }\n return null;\n }\n\n fu
nction getRendererForShadowRoot(shadowRoot) {\n return getRendererForHost(sha
dowRoot.host);\n }\n\n var spliceDiff = new ArraySplice();\n spliceDiff.equal
s = function(renderNode, rawNode) {\n return unwrap(renderNode.node) === rawN
ode;\n };\n\n /**\n * RenderNode is used as an in memory \"render tree\". Wh
en we render the\n * composed tree we create a tree of RenderNodes, then we di
ff this against\n * the real DOM tree and make minimal changes as needed.\n
*/\n function RenderNode(node) {\n this.skip = false;\n this.node = node;
\n this.childNodes = [];\n }\n\n RenderNode.prototype = {\n append: func
tion(node) {\n var rv = new RenderNode(node);\n this.childNodes.push(r
v);\n return rv;\n },\n\n sync: function(opt_added) {\n if (this
.skip)\n return;\n\n var nodeWrapper = this.node;\n // plain ar
ray of RenderNodes\n var newChildren = this.childNodes;\n // plain arr
ay of real nodes.\n var oldChildren = getChildNodesSnapshot(unwrap(nodeWrap
per));\n var added = opt_added || new WeakMap();\n\n var splices = spl
iceDiff.calculateSplices(newChildren, oldChildren);\n\n var newIndex = 0, o
ldIndex = 0;\n var lastIndex = 0;\n for (var i = 0; i < splices.length
; i++) {\n var splice = splices[i];\n for (; lastIndex < splice.in
dex; lastIndex++) {\n oldIndex++;\n newChildren[newIndex++].sy
nc(added);\n }\n\n var removedCount = splice.removed.length;\n
for (var j = 0; j < removedCount; j++) {\n var wrapper = wrap(oldCh
ildren[oldIndex++]);\n if (!added.get(wrapper))\n remove(wra
pper);\n }\n\n var addedCount = splice.addedCount;\n var re
fNode = oldChildren[oldIndex] && wrap(oldChildren[oldIndex]);\n for (var
j = 0; j < addedCount; j++) {\n var newChildRenderNode = newChildren[ne
wIndex++];\n var newChildWrapper = newChildRenderNode.node;\n
insertBefore(nodeWrapper, newChildWrapper, refNode);\n\n // Keep track
of added so that we do not remove the node after it\n // has been added
.\n added.set(newChildWrapper, true);\n\n newChildRenderNode.s
ync(added);\n }\n\n lastIndex += addedCount;\n }\n\n for
(var i = lastIndex; i < newChildren.length; i++) {\n newChildren[i].sync
(added);\n }\n }\n };\n\n function ShadowRenderer(host) {\n this.ho
st = host;\n this.dirty = false;\n this.invalidateAttributes();\n this.
associateNode(host);\n }\n\n ShadowRenderer.prototype = {\n\n // http://dvc
s.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#rendering-shadow-t
rees\n render: function(opt_renderNode) {\n if (!this.dirty)\n re
turn;\n\n this.invalidateAttributes();\n this.treeComposition();\n\n
var host = this.host;\n var shadowRoot = host.shadowRoot;\n\n this
.associateNode(host);\n var topMostRenderer = !renderNode;\n var rende
rNode = opt_renderNode || new RenderNode(host);\n\n for (var node = shadowR
oot.firstChild; node; node = node.nextSibling) {\n this.renderNode(shadow
Root, renderNode, node, false);\n }\n\n if (topMostRenderer)\n
renderNode.sync();\n\n this.dirty = false;\n },\n\n invalidate: funct
ion() {\n if (!this.dirty) {\n this.dirty = true;\n pendingDi
rtyRenderers.push(this);\n if (renderTimer)\n return;\n r
enderTimer = window[request](handleRequestAnimationFrame, 0);\n }\n },\n
\n renderNode: function(shadowRoot, renderNode, node, isNested) {\n if (
isShadowHost(node)) {\n renderNode = renderNode.append(node);\n va
r renderer = getRendererForHost(node);\n renderer.dirty = true; // Need
to rerender due to reprojection.\n renderer.render(renderNode);\n }
else if (isInsertionPoint(node)) {\n this.renderInsertionPoint(shadowRoot
, renderNode, node, isNested);\n } else if (isShadowInsertionPoint(node)) {
\n this.renderShadowInsertionPoint(shadowRoot, renderNode, node);\n
} else {\n this.renderAsAnyDomTree(shadowRoot, renderNode, node, isNested
);\n }\n },\n\n renderAsAnyDomTree: function(shadowRoot, renderNode,
node, isNested) {\n renderNode = renderNode.append(node);\n\n if (isSh
adowHost(node)) {\n var renderer = getRendererForHost(node);\n ren
derNode.skip = !renderer.dirty;\n renderer.render(renderNode);\n } e
lse {\n for (var child = node.firstChild; child; child = child.nextSiblin
g) {\n this.renderNode(shadowRoot, renderNode, child, isNested);\n
}\n }\n },\n\n renderInsertionPoint: function(shadowRoot, renderNo
de, insertionPoint,\n isNested) {\n var d
istributedChildNodes = getDistributedChildNodes(insertionPoint);\n if (dist
ributedChildNodes.length) {\n this.associateNode(insertionPoint);\n\n
for (var i = 0; i < distributedChildNodes.length; i++) {\n var chil
d = distributedChildNodes[i];\n if (isInsertionPoint(child) && isNested
)\n this.renderInsertionPoint(shadowRoot, renderNode, child, isNested
);\n else\n this.renderAsAnyDomTree(shadowRoot, renderNode,
child, isNested);\n }\n } else {\n this.renderFallbackContent
(shadowRoot, renderNode, insertionPoint);\n }\n this.associateNode(ins
ertionPoint.parentNode);\n },\n\n renderShadowInsertionPoint: function(sha
dowRoot, renderNode,\n shadowInsertionPo
int) {\n var nextOlderTree = shadowRoot.olderShadowRoot;\n if (nextOld
erTree) {\n assignToInsertionPoint(nextOlderTree, shadowInsertionPoint);\
n this.associateNode(shadowInsertionPoint.parentNode);\n for (var
node = nextOlderTree.firstChild;\n node;\n node = node.n
extSibling) {\n this.renderNode(nextOlderTree, renderNode, node, true);
\n }\n } else {\n this.renderFallbackContent(shadowRoot, rend
erNode,\n shadowInsertionPoint);\n }\n
},\n\n renderFallbackContent: function(shadowRoot, renderNode, fallbackHost)
{\n this.associateNode(fallbackHost);\n this.associateNode(fallbackHo
st.parentNode);\n for (var node = fallbackHost.firstChild; node; node = nod
e.nextSibling) {\n this.renderAsAnyDomTree(shadowRoot, renderNode, node,
false);\n }\n },\n\n /**\n * Invalidates the attributes used to k
eep track of which attributes may\n * cause the renderer to be invalidated.\
n */\n invalidateAttributes: function() {\n this.attributes = Object
.create(null);\n },\n\n /**\n * Parses the selector and makes this ren
derer dependent on the attribute\n * being used in the selector.\n * @pa
ram {string} selector\n */\n updateDependentAttributes: function(selector
) {\n if (!selector)\n return;\n\n var attributes = this.attrib
utes;\n\n // .class\n if (/\\.\\w+/.test(selector))\n attribute
s['class'] = true;\n\n // #id\n if (/#\\w+/.test(selector))\n a
ttributes['id'] = true;\n\n selector.replace(/\\[\\s*([^\\s=\\|~\\]]+)/g, f
unction(_, name) {\n attributes[name] = true;\n });\n\n // Pseu
do selectors have been removed from the spec.\n },\n\n dependsOnAttribute:
function(name) {\n return this.attributes[name];\n },\n\n // http://
dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#dfn-distributio
n-algorithm\n distribute: function(tree, pool) {\n var self = this;\n\n
visit(tree, isActiveInsertionPoint,\n function(insertionPoint) {\n
resetDistributedChildNodes(insertionPoint);\n self.update
DependentAttributes(\n insertionPoint.getAttribute('select'));\n\
n for (var i = 0; i < pool.length; i++) { // 1.2\n var
node = pool[i]; // 1.2.1\n if (node === undefined) // removed\n
continue;\n if (matchesCriteria(node, insertionPoint)
) { // 1.2.2\n distributeChildToInsertionPoint(node, insertionPo
int); // 1.2.2.1\n pool[i] = undefined; // 1.2.2.2\n
}\n }\n });\n },\n\n // http://dvcs.w3.org/hg/webco
mponents/raw-file/tip/spec/shadow/index.html#dfn-tree-composition\n treeCompo
sition: function () {\n var shadowHost = this.host;\n var tree = shado
wHost.shadowRoot; // 1.\n var pool = []; // 2.\n\n for (var child =
shadowHost.firstChild;\n child;\n child = child.nextSibling)
{ // 3.\n if (isInsertionPoint(child)) { // 3.2.\n var reproj
ected = getDistributedChildNodes(child); // 3.2.1.\n // if reprojected
is undef... reset it?\n if (!reprojected || !reprojected.length) // 3
.2.2.\n reprojected = getChildNodesSnapshot(child);\n pool.p
ush.apply(pool, reprojected); // 3.2.3.\n } else {\n pool.push(
child); // 3.3.\n }\n }\n\n var shadowInsertionPoint, point;\n
while (tree) { // 4.\n // 4.1.\n shadowInsertionPoint = unde
fined; // Reset every iteration.\n visit(tree, isActiveShadowInsertionPo
int, function(point) {\n shadowInsertionPoint = point;\n retur
n false;\n });\n point = shadowInsertionPoint;\n\n this.dis
tribute(tree, pool); // 4.2.\n if (point) { // 4.3.\n var next
OlderTree = tree.olderShadowRoot; // 4.3.1.\n if (!nextOlderTree) {\n
break; // 4.3.1.1.\n } else {\n tree = nextOlder
Tree; // 4.3.2.2.\n assignToInsertionPoint(tree, point); // 4.3.2.2
.\n continue; // 4.3.2.3.\n }\n } else {\n
break; // 4.4.\n }\n }\n },\n\n associateNode: function(node)
{\n node.impl.polymerShadowRenderer_ = this;\n }\n };\n\n function is
InsertionPoint(node) {\n // Should this include <shadow>?\n return node in
stanceof HTMLContentElement;\n }\n\n function isActiveInsertionPoint(node) {\n
// <content> inside another <content> or <shadow> is considered inactive.\n
return node instanceof HTMLContentElement;\n }\n\n function isShadowInserti
onPoint(node) {\n return node instanceof HTMLShadowElement;\n }\n\n functio
n isActiveShadowInsertionPoint(node) {\n // <shadow> inside another <content>
or <shadow> is considered inactive.\n return node instanceof HTMLShadowEleme
nt;\n }\n\n function isShadowHost(shadowHost) {\n return shadowHost.shadowR
oot;\n }\n\n function getShadowTrees(host) {\n var trees = [];\n\n for (
var tree = host.shadowRoot; tree; tree = tree.olderShadowRoot) {\n trees.pu
sh(tree);\n }\n return trees;\n }\n\n function assignToInsertionPoint(tr
ee, point) {\n insertionParentTable.set(tree, point);\n }\n\n // http://dvc
s.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#rendering-shadow-t
rees\n function render(host) {\n new ShadowRenderer(host).render();\n };\n\
n // Need to rerender shadow host when:\n //\n // - a direct child to the Sha
dowRoot is added or removed\n // - a direct child to the host is added or remov
ed\n // - a new shadow root is created\n // - a direct child to a content/shad
ow element is added or removed\n // - a sibling to a content/shadow element is
added or removed\n // - content[select] is changed\n // - an attribute in a di
rect child to a host is modified\n\n /**\n * This gets called when a node was
added or removed to it.\n */\n Node.prototype.invalidateShadowRenderer = fun
ction(force) {\n var renderer = this.impl.polymerShadowRenderer_;\n if (re
nderer) {\n renderer.invalidate();\n return true;\n }\n\n return
false;\n };\n\n HTMLContentElement.prototype.getDistributedNodes = function()
{\n // TODO(arv): We should only rerender the dirty ancestor renderers (from
\n // the root and down).\n renderAllPending();\n return getDistributed
ChildNodes(this);\n };\n\n HTMLShadowElement.prototype.nodeIsInserted_ =\n HT
MLContentElement.prototype.nodeIsInserted_ = function() {\n // Invalidate old
renderer if any.\n this.invalidateShadowRenderer();\n\n var shadowRoot =
getShadowRootAncestor(this);\n var renderer;\n if (shadowRoot)\n rend
erer = getRendererForShadowRoot(shadowRoot);\n this.impl.polymerShadowRendere
r_ = renderer;\n if (renderer)\n renderer.invalidate();\n };\n\n scope
.eventParentsTable = eventParentsTable;\n scope.getRendererForHost = getRendere
rForHost;\n scope.getShadowTrees = getShadowTrees;\n scope.insertionParentTabl
e = insertionParentTable;\n scope.renderAllPending = renderAllPending;\n\n //
Exposed for testing\n scope.visual = {\n insertBefore: insertBefore,\n re
move: remove,\n };\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The P
olymer Authors. All rights reserved.\n// Use of this source code is goverened by
a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(sco
pe) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement;\n var
assert = scope.assert;\n var mixin = scope.mixin;\n var registerWrapper = sco
pe.registerWrapper;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n
var elementsWithFormProperty = [\n 'HTMLButtonElement',\n 'HTMLFieldSetEl
ement',\n 'HTMLInputElement',\n 'HTMLKeygenElement',\n 'HTMLLabelElemen
t',\n 'HTMLLegendElement',\n 'HTMLObjectElement',\n // HTMLOptionElemen
t is handled in HTMLOptionElement.js\n 'HTMLOutputElement',\n 'HTMLSelectE
lement',\n 'HTMLTextAreaElement',\n ];\n\n function createWrapperConstructo
r(name) {\n if (!window[name])\n return;\n\n // Ensure we are not ove
rriding an already existing constructor.\n assert(!scope.wrappers[name]);\n\n
var GeneratedWrapper = function(node) {\n // At this point all of them
extend HTMLElement.\n HTMLElement.call(this, node);\n }\n GeneratedWr
apper.prototype = Object.create(HTMLElement.prototype);\n mixin(GeneratedWrap
per.prototype, {\n get form() {\n return wrap(unwrap(this).form);\n
},\n });\n\n registerWrapper(window[name], GeneratedWrapper,\n
document.createElement(name.slice(4, -7)));\n scope.wrappers[name] = Generat
edWrapper;\n }\n\n elementsWithFormProperty.forEach(createWrapperConstructor);
\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2014 The Polymer Authors. All
rights reserved.\n// Use of this source code is goverened by a BSD-style\n// li
cense that can be found in the LICENSE file.\n\n(function(scope) {\n 'use stric
t';\n\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unwr
ap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = scope.wrap;\n\n
var OriginalSelection = window.Selection;\n\n function Selection(impl) {\n
this.impl = impl;\n }\n Selection.prototype = {\n get anchorNode() {\n
return wrap(this.impl.anchorNode);\n },\n get focusNode() {\n return
wrap(this.impl.focusNode);\n },\n addRange: function(range) {\n this
.impl.addRange(unwrap(range));\n },\n collapse: function(node, index) {\n
this.impl.collapse(unwrapIfNeeded(node), index);\n },\n containsNode:
function(node, allowPartial) {\n return this.impl.containsNode(unwrapIfNee
ded(node), allowPartial);\n },\n extend: function(node, offset) {\n t
his.impl.extend(unwrapIfNeeded(node), offset);\n },\n getRangeAt: function
(index) {\n return wrap(this.impl.getRangeAt(index));\n },\n removeRa
nge: function(range) {\n this.impl.removeRange(unwrap(range));\n },\n
selectAllChildren: function(node) {\n this.impl.selectAllChildren(unwrapIf
Needed(node));\n },\n toString: function() {\n return this.impl.toStr
ing();\n }\n };\n\n // WebKit extensions. Not implemented.\n // readonly a
ttribute Node baseNode;\n // readonly attribute long baseOffset;\n // readonly
attribute Node extentNode;\n // readonly attribute long extentOffset;\n // [R
aisesException] void setBaseAndExtent([Default=Undefined] optional Node baseNode
,\n // [Default=Undefined] optional long baseOffset,\n /
/ [Default=Undefined] optional Node extentNode,\n //
[Default=Undefined] optional long extentOffset);\n // [Raises
Exception, ImplementedAs=collapse] void setPosition([Default=Undefined] optional
Node node,\n // [Default=Undefined] optional long offset);\n\
n registerWrapper(window.Selection, Selection, window.getSelection());\n\n sco
pe.wrappers.Selection = Selection;\n\n})(window.ShadowDOMPolyfill);\n","// Copyr
ight 2013 The Polymer Authors. All rights reserved.\n// Use of this source code
is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n
\n(function(scope) {\n 'use strict';\n\n var GetElementsByInterface = scope.Ge
tElementsByInterface;\n var Node = scope.wrappers.Node;\n var ParentNodeInterf
ace = scope.ParentNodeInterface;\n var Selection = scope.wrappers.Selection;\n
var SelectorsInterface = scope.SelectorsInterface;\n var ShadowRoot = scope.wr
appers.ShadowRoot;\n var cloneNode = scope.cloneNode;\n var defineWrapGetter =
scope.defineWrapGetter;\n var elementFromPoint = scope.elementFromPoint;\n va
r forwardMethodsToWrapper = scope.forwardMethodsToWrapper;\n var matchesNames =
scope.matchesNames;\n var mixin = scope.mixin;\n var registerWrapper = scope.
registerWrapper;\n var renderAllPending = scope.renderAllPending;\n var rewrap
= scope.rewrap;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var
wrapEventTargetMethods = scope.wrapEventTargetMethods;\n var wrapNodeList = sco
pe.wrapNodeList;\n\n var implementationTable = new WeakMap();\n\n function Doc
ument(node) {\n Node.call(this, node);\n }\n Document.prototype = Object.cr
eate(Node.prototype);\n\n defineWrapGetter(Document, 'documentElement');\n\n /
/ Conceptually both body and head can be in a shadow but suporting that seems\n
// overkill at this point.\n defineWrapGetter(Document, 'body');\n defineWrap
Getter(Document, 'head');\n\n // document cannot be overridden so we override a
bunch of its methods\n // directly on the instance.\n\n function wrapMethod(n
ame) {\n var original = document[name];\n Document.prototype[name] = funct
ion() {\n return wrap(original.apply(this.impl, arguments));\n };\n }\n
\n [\n 'createComment',\n 'createDocumentFragment',\n 'createElement',
\n 'createElementNS',\n 'createEvent',\n 'createEventNS',\n 'createR
ange',\n 'createTextNode',\n 'getElementById'\n ].forEach(wrapMethod);\n\
n var originalAdoptNode = document.adoptNode;\n\n function adoptNodeNoRemove(n
ode, doc) {\n originalAdoptNode.call(doc.impl, unwrap(node));\n adoptSubtr
ee(node, doc);\n }\n\n function adoptSubtree(node, doc) {\n if (node.shadow
Root)\n doc.adoptNode(node.shadowRoot);\n if (node instanceof ShadowRoot
)\n adoptOlderShadowRoots(node, doc);\n for (var child = node.firstChild
; child; child = child.nextSibling) {\n adoptSubtree(child, doc);\n }\n
}\n\n function adoptOlderShadowRoots(shadowRoot, doc) {\n var oldShadowRoot
= shadowRoot.olderShadowRoot;\n if (oldShadowRoot)\n doc.adoptNode(oldS
hadowRoot);\n }\n\n var originalGetSelection = document.getSelection;\n\n mix
in(Document.prototype, {\n adoptNode: function(node) {\n if (node.parent
Node)\n node.parentNode.removeChild(node);\n adoptNodeNoRemove(node,
this);\n return node;\n },\n elementFromPoint: function(x, y) {\n
return elementFromPoint(this, this, x, y);\n },\n importNode: function(
node, deep) {\n return cloneNode(node, deep, this.impl);\n },\n getSe
lection: function() {\n renderAllPending();\n return new Selection(ori
ginalGetSelection.call(unwrap(this)));\n }\n });\n\n if (document.registerE
lement) {\n var originalRegisterElement = document.registerElement;\n Docu
ment.prototype.registerElement = function(tagName, object) {\n var prototyp
e = object.prototype;\n\n // If we already used the object as a prototype f
or another custom\n // element.\n if (scope.nativePrototypeTable.get(p
rototype)) {\n // TODO(arv): DOMException\n throw new Error('NotSu
pportedError');\n }\n\n // Find first object on the prototype chain th
at already have a native\n // prototype. Keep track of all the objects befo
re that so we can create\n // a similar structure for the native case.\n
var proto = Object.getPrototypeOf(prototype);\n var nativePrototype;\n
var prototypes = [];\n while (proto) {\n nativePrototype = scope
.nativePrototypeTable.get(proto);\n if (nativePrototype)\n break
;\n prototypes.push(proto);\n proto = Object.getPrototypeOf(proto)
;\n }\n\n if (!nativePrototype) {\n // TODO(arv): DOMException\
n throw new Error('NotSupportedError');\n }\n\n // This works b
y creating a new prototype object that is empty, but has\n // the native pr
ototype as its proto. The original prototype object\n // passed into regist
er is used as the wrapper prototype.\n\n var newPrototype = Object.create(n
ativePrototype);\n for (var i = prototypes.length - 1; i >= 0; i--) {\n
newPrototype = Object.create(newPrototype);\n }\n\n // Add callbac
ks if present.\n // Names are taken from:\n // https://code.google.c
om/p/chromium/codesearch#chromium/src/third_party/WebKit/Source/bindings/v8/Cust
omElementConstructorBuilder.cpp&sq=package:chromium&type=cs&l=156\n // and
not from the spec since the spec is out of date.\n [\n 'createdCallb
ack',\n 'attachedCallback',\n 'detachedCallback',\n 'attrib
uteChangedCallback',\n ].forEach(function(name) {\n var f = prototyp
e[name];\n if (!f)\n return;\n newPrototype[name] = funct
ion() {\n // if this element has been wrapped prior to registration,\n
// the wrapper is stale; in this case rewrap\n if (!(wrap(this
) instanceof CustomElementConstructor)) {\n rewrap(this);\n
}\n f.apply(wrap(this), arguments);\n };\n });\n\n var
p = {prototype: newPrototype};\n if (object.extends)\n p.extends =
object.extends;\n\n function CustomElementConstructor(node) {\n if (
!node) {\n if (object.extends) {\n return document.createEle
ment(object.extends, tagName);\n } else {\n return document.
createElement(tagName);\n }\n }\n this.impl = node;\n
}\n CustomElementConstructor.prototype = prototype;\n CustomElementC
onstructor.prototype.constructor = CustomElementConstructor;\n\n scope.cons
tructorTable.set(newPrototype, CustomElementConstructor);\n scope.nativePro
totypeTable.set(prototype, newPrototype);\n\n // registration is synchronou
s so do it last\n var nativeConstructor = originalRegisterElement.call(unwr
ap(this),\n tagName, p);\n return CustomElementConstructor;\n }
;\n\n forwardMethodsToWrapper([\n window.HTMLDocument || window.Document
, // Gecko adds these to HTMLDocument\n ], [\n 'registerElement',\n
]);\n }\n\n // We also override some of the methods on document.body and docum
ent.head\n // for convenience.\n forwardMethodsToWrapper([\n window.HTMLBod
yElement,\n window.HTMLDocument || window.Document, // Gecko adds these to H
TMLDocument\n window.HTMLHeadElement,\n window.HTMLHtmlElement,\n ], [\n
'appendChild',\n 'compareDocumentPosition',\n 'contains',\n 'getElem
entsByClassName',\n 'getElementsByTagName',\n 'getElementsByTagNameNS',\n
'insertBefore',\n 'querySelector',\n 'querySelectorAll',\n 'removeCh
ild',\n 'replaceChild',\n ].concat(matchesNames));\n\n forwardMethodsToWrap
per([\n window.HTMLDocument || window.Document, // Gecko adds these to HTMLD
ocument\n ], [\n 'adoptNode',\n 'importNode',\n 'contains',\n 'crea
teComment',\n 'createDocumentFragment',\n 'createElement',\n 'createEle
mentNS',\n 'createEvent',\n 'createEventNS',\n 'createRange',\n 'cre
ateTextNode',\n 'elementFromPoint',\n 'getElementById',\n 'getSelection
',\n ]);\n\n mixin(Document.prototype, GetElementsByInterface);\n mixin(Docum
ent.prototype, ParentNodeInterface);\n mixin(Document.prototype, SelectorsInter
face);\n\n mixin(Document.prototype, {\n get implementation() {\n var i
mplementation = implementationTable.get(this);\n if (implementation)\n
return implementation;\n implementation =\n new DOMImplementati
on(unwrap(this).implementation);\n implementationTable.set(this, implementa
tion);\n return implementation;\n }\n });\n\n registerWrapper(window.D
ocument, Document,\n document.implementation.createHTMLDocument(''));\n\n
// Both WebKit and Gecko uses HTMLDocument for document. HTML5/DOM only has\n /
/ one Document interface and IE implements the standard correctly.\n if (window
.HTMLDocument)\n registerWrapper(window.HTMLDocument, Document);\n\n wrapEve
ntTargetMethods([\n window.HTMLBodyElement,\n window.HTMLDocument || windo
w.Document, // Gecko adds these to HTMLDocument\n window.HTMLHeadElement,\n
]);\n\n function DOMImplementation(impl) {\n this.impl = impl;\n }\n\n fu
nction wrapImplMethod(constructor, name) {\n var original = document.implemen
tation[name];\n constructor.prototype[name] = function() {\n return wrap
(original.apply(this.impl, arguments));\n };\n }\n\n function forwardImplMe
thod(constructor, name) {\n var original = document.implementation[name];\n
constructor.prototype[name] = function() {\n return original.apply(this.i
mpl, arguments);\n };\n }\n\n wrapImplMethod(DOMImplementation, 'createDocu
mentType');\n wrapImplMethod(DOMImplementation, 'createDocument');\n wrapImplM
ethod(DOMImplementation, 'createHTMLDocument');\n forwardImplMethod(DOMImplemen
tation, 'hasFeature');\n\n registerWrapper(window.DOMImplementation, DOMImpleme
ntation);\n\n forwardMethodsToWrapper([\n window.DOMImplementation,\n ], [\
n 'createDocumentType',\n 'createDocument',\n 'createHTMLDocument',\n
'hasFeature',\n ]);\n\n scope.adoptNodeNoRemove = adoptNodeNoRemove;\n scop
e.wrappers.DOMImplementation = DOMImplementation;\n scope.wrappers.Document = D
ocument;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Auth
ors. All rights reserved.\n// Use of this source code is goverened by a BSD-styl
e\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'u
se strict';\n\n var EventTarget = scope.wrappers.EventTarget;\n var Selection
= scope.wrappers.Selection;\n var mixin = scope.mixin;\n var registerWrapper =
scope.registerWrapper;\n var renderAllPending = scope.renderAllPending;\n var
unwrap = scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wra
p = scope.wrap;\n\n var OriginalWindow = window.Window;\n var originalGetCompu
tedStyle = window.getComputedStyle;\n var originalGetSelection = window.getSele
ction;\n\n function Window(impl) {\n EventTarget.call(this, impl);\n }\n W
indow.prototype = Object.create(EventTarget.prototype);\n\n OriginalWindow.prot
otype.getComputedStyle = function(el, pseudo) {\n return wrap(this || window)
.getComputedStyle(unwrapIfNeeded(el), pseudo);\n };\n\n OriginalWindow.prototy
pe.getSelection = function() {\n return wrap(this || window).getSelection();\
n };\n\n // Work around for https://bugzilla.mozilla.org/show_bug.cgi?id=94306
5\n delete window.getComputedStyle;\n delete window.getSelection;\n\n ['addEv
entListener', 'removeEventListener', 'dispatchEvent'].forEach(\n function(n
ame) {\n OriginalWindow.prototype[name] = function() {\n var w =
wrap(this || window);\n return w[name].apply(w, arguments);\n }
;\n\n // Work around for https://bugzilla.mozilla.org/show_bug.cgi?id=943
065\n delete window[name];\n });\n\n mixin(Window.prototype, {\n
getComputedStyle: function(el, pseudo) {\n renderAllPending();\n retu
rn originalGetComputedStyle.call(unwrap(this), unwrapIfNeeded(el),\n
pseudo);\n },\n getSelection: function() {\
n renderAllPending();\n return new Selection(originalGetSelection.call
(unwrap(this)));\n },\n });\n\n registerWrapper(OriginalWindow, Window);\n\
n scope.wrappers.Window = Window;\n\n})(window.ShadowDOMPolyfill);\n","// Copyr
ight 2013 The Polymer Authors. All rights reserved.\n// Use of this source code
is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n
\n(function(scope) {\n 'use strict';\n\n var isWrapperFor = scope.isWrapperFor
;\n\n // This is a list of the elements we currently override the global constr
uctor\n // for.\n var elements = {\n 'a': 'HTMLAnchorElement',\n\n // Do
not create an applet element by default since it shows a warning in\n // IE.
\n // https://github.com/Polymer/polymer/issues/217\n // 'applet': 'HTMLAp
pletElement',\n\n 'area': 'HTMLAreaElement',\n 'br': 'HTMLBRElement',\n
'base': 'HTMLBaseElement',\n 'body': 'HTMLBodyElement',\n 'button': 'HTML
ButtonElement',\n // 'command': 'HTMLCommandElement', // Not fully implement
ed in Gecko.\n 'dl': 'HTMLDListElement',\n 'datalist': 'HTMLDataListElemen
t',\n 'data': 'HTMLDataElement',\n 'dir': 'HTMLDirectoryElement',\n 'di
v': 'HTMLDivElement',\n 'embed': 'HTMLEmbedElement',\n 'fieldset': 'HTMLFi
eldSetElement',\n 'font': 'HTMLFontElement',\n 'form': 'HTMLFormElement',\
n 'frame': 'HTMLFrameElement',\n 'frameset': 'HTMLFrameSetElement',\n '
hr': 'HTMLHRElement',\n 'head': 'HTMLHeadElement',\n 'h1': 'HTMLHeadingEle
ment',\n 'html': 'HTMLHtmlElement',\n 'iframe': 'HTMLIFrameElement',\n
'input': 'HTMLInputElement',\n 'li': 'HTMLLIElement',\n 'label': 'HTMLLabe
lElement',\n 'legend': 'HTMLLegendElement',\n 'link': 'HTMLLinkElement',\n
'map': 'HTMLMapElement',\n 'marquee': 'HTMLMarqueeElement',\n 'menu':
'HTMLMenuElement',\n 'menuitem': 'HTMLMenuItemElement',\n 'meta': 'HTMLMet
aElement',\n 'meter': 'HTMLMeterElement',\n 'del': 'HTMLModElement',\n
'ol': 'HTMLOListElement',\n 'object': 'HTMLObjectElement',\n 'optgroup': '
HTMLOptGroupElement',\n 'option': 'HTMLOptionElement',\n 'output': 'HTMLOu
tputElement',\n 'p': 'HTMLParagraphElement',\n 'param': 'HTMLParamElement'
,\n 'pre': 'HTMLPreElement',\n 'progress': 'HTMLProgressElement',\n 'q'
: 'HTMLQuoteElement',\n 'script': 'HTMLScriptElement',\n 'select': 'HTMLSe
lectElement',\n 'source': 'HTMLSourceElement',\n 'span': 'HTMLSpanElement'
,\n 'style': 'HTMLStyleElement',\n 'time': 'HTMLTimeElement',\n 'captio
n': 'HTMLTableCaptionElement',\n // WebKit and Moz are wrong:\n // https:/
/bugs.webkit.org/show_bug.cgi?id=111469\n // https://bugzilla.mozilla.org/sho
w_bug.cgi?id=848096\n // 'td': 'HTMLTableCellElement',\n 'col': 'HTMLTable
ColElement',\n 'table': 'HTMLTableElement',\n 'tr': 'HTMLTableRowElement',
\n 'thead': 'HTMLTableSectionElement',\n 'tbody': 'HTMLTableSectionElement
',\n 'textarea': 'HTMLTextAreaElement',\n 'track': 'HTMLTrackElement',\n
'title': 'HTMLTitleElement',\n 'ul': 'HTMLUListElement',\n 'video': 'HTM
LVideoElement',\n };\n\n function overrideConstructor(tagName) {\n var nati
veConstructorName = elements[tagName];\n var nativeConstructor = window[nativ
eConstructorName];\n if (!nativeConstructor)\n return;\n var element
= document.createElement(tagName);\n var wrapperConstructor = element.constru
ctor;\n window[nativeConstructorName] = wrapperConstructor;\n }\n\n Object.
keys(elements).forEach(overrideConstructor);\n\n Object.getOwnPropertyNames(sco
pe.wrappers).forEach(function(name) {\n window[name] = scope.wrappers[name]\n
});\n\n // Export for testing.\n scope.knownElements = elements;\n\n})(windo
w.ShadowDOMPolyfill);\n","/*\n * Copyright 2013 The Polymer Authors. All rights
reserved.\n * Use of this source code is governed by a BSD-style\n * license tha
t can be found in the LICENSE file.\n */\n(function() {\n\n // convenient globa
l\n window.wrap = ShadowDOMPolyfill.wrapIfNeeded;\n window.unwrap = ShadowDOMP
olyfill.unwrapIfNeeded;\n\n // users may want to customize other types\n // TO
DO(sjmiles): 'button' is now supported by ShadowDOMPolyfill, but\n // I've left
this code here in case we need to temporarily patch another\n // type\n /*\n
(function() {\n var elts = {HTMLButtonElement: 'button'};\n for (var c in
elts) {\n window[c] = function() { throw 'Patched Constructor'; };\n
window[c].prototype = Object.getPrototypeOf(\n document.createElement(e
lts[c]));\n }\n })();\n */\n\n // patch in prefixed name\n Object.defineP
roperty(Element.prototype, 'webkitShadowRoot',\n Object.getOwnPropertyDescr
iptor(Element.prototype, 'shadowRoot'));\n\n var originalCreateShadowRoot = Ele
ment.prototype.createShadowRoot;\n Element.prototype.createShadowRoot = functio
n() {\n var root = originalCreateShadowRoot.call(this);\n CustomElements.w
atchShadow(this);\n return root;\n };\n\n Element.prototype.webkitCreateSha
dowRoot = Element.prototype.createShadowRoot;\n})();\n","/*\n * Copyright 2012 T
he Polymer Authors. All rights reserved.\n * Use of this source code is governed
by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/*\n
This is a limited shim for ShadowDOM css styling.\n https://dvcs.w3.org/hg/web
components/raw-file/tip/spec/shadow/index.html#styles\n \n The intention here
is to support only the styling features which can be \n relatively simply imple
mented. The goal is to allow users to avoid the \n most obvious pitfalls and do
so without compromising performance significantly. \n For ShadowDOM styling th
at's not covered here, a set of best practices\n can be provided that should al
low users to accomplish more complex styling.\n\n The following is a list of sp
ecific ShadowDOM styling features and a brief\n discussion of the approach used
to shim.\n\n Shimmed features:\n\n * :host, :ancestor: ShadowDOM allows styli
ng of the shadowRoot's host\n element using the :host rule. To shim this featur
e, the :host styles are \n reformatted and prefixed with a given scope name and
promoted to a \n document level stylesheet.\n For example, given a scope name
of .foo, a rule like this:\n \n :host {\n background: red;\n }\
n }\n \n becomes:\n \n .foo {\n background: red;\n }\n \n * e
ncapsultion: Styles defined within ShadowDOM, apply only to \n dom inside the S
hadowDOM. Polymer uses one of two techniques to imlement\n this feature.\n \n
By default, rules are prefixed with the host element tag name \n as a descenda
nt selector. This ensures styling does not leak out of the 'top'\n of the eleme
nt's ShadowDOM. For example,\n\n div {\n font-weight: bold;\n }\n \n
becomes:\n\n x-foo div {\n font-weight: bold;\n }\n \n becomes:\n\n\n
Alternatively, if Platform.ShadowCSS.strictStyling is set to true then \n sel
ectors are scoped by adding an attribute selector suffix to each\n simple selec
tor that contains the host element tag name. Each element \n in the element's S
hadowDOM template is also given the scope attribute. \n Thus, these rules match
only elements that have the scope attribute.\n For example, given a scope name
of x-foo, a rule like this:\n \n div {\n font-weight: bold;\n }\n
\n becomes:\n \n div[x-foo] {\n font-weight: bold;\n }\n\n Note th
at elements that are dynamically added to a scope must have the scope\n selecto
r added to them manually.\n\n * upper/lower bound encapsulation: Styles which a
re defined outside a\n shadowRoot should not cross the ShadowDOM boundary and s
hould not apply\n inside a shadowRoot.\n\n This styling behavior is not emulat
ed. Some possible ways to do this that \n were rejected due to complexity and/o
r performance concerns include: (1) reset\n every possible property for every p
ossible selector for a given scope name;\n (2) re-implement css in javascript.\
n \n As an alternative, users should make sure to use selectors\n specific to
the scope in which they are working.\n \n * ::distributed: This behavior is n
ot emulated. It's often not necessary\n to style the contents of a specific ins
ertion point and instead, descendants\n of the host element can be styled selec
tively. Users can also create an \n extra node around an insertion point and st
yle that node's contents\n via descendent selectors. For example, with a shadow
Root like this:\n \n <style>\n ::content(div) {\n background: re
d;\n }\n </style>\n <content></content>\n \n could become:\n \n
<style>\n / *@polyfill .content-container div * / \n ::content(div) {
\n background: red;\n }\n </style>\n <div class=\"content-cont
ainer\">\n <content></content>\n </div>\n \n Note the use of @polyfill
in the comment above a ShadowDOM specific style\n declaration. This is a direc
tive to the styling shim to use the selector \n in comments in lieu of the next
selector when running under polyfill.\n*/\n(function(scope) {\n\nvar ShadowCSS
= {\n strictStyling: false,\n registry: {},\n // Shim styles for a given root
associated with a name and extendsName\n // 1. cache root styles by name\n //
2. optionally tag root nodes with scope name\n // 3. shim polyfill directives
/* @polyfill */ and /* @polyfill-rule */\n // 4. shim :host and scoping\n shim
Styling: function(root, name, extendsName) {\n var typeExtension = this.isTyp
eExtension(extendsName);\n // use caching to make working with styles nodes e
asier and to facilitate\n // lookup of extendee\n var def = this.registerD
efinition(root, name, extendsName);\n // find styles and apply shimming...\n
if (this.strictStyling) {\n this.applyScopeToContent(root, name);\n }
\n var cssText = this.stylesToShimmedCssText(def.rootStyles, def.scopeStyles,
\n name, typeExtension);\n // provide shimmedStyle for user extensibil
ity\n def.shimmedStyle = cssTextToStyle(cssText);\n if (root) {\n roo
t.shimmedStyle = def.shimmedStyle;\n }\n // remove existing style elements
\n for (var i=0, l=def.rootStyles.length, s; (i<l) && (s=def.rootStyles[i]);
\n i++) {\n s.parentNode.removeChild(s);\n }\n // add style to
document\n addCssToDocument(cssText);\n },\n // apply @polyfill rules + :h
ost and scope shimming\n stylesToShimmedCssText: function(rootStyles, scopeStyl
es, name,\n typeExtension) {\n name = name || '';\n // insert @polyfi
ll and @polyfill-rule rules into style elements\n // scoping process takes ca
re of shimming these\n this.insertPolyfillDirectives(rootStyles);\n this.i
nsertPolyfillRules(rootStyles);\n var cssText = this.shimScoping(scopeStyles,
name, typeExtension);\n // note: we only need to do rootStyles since these a
re unscoped.\n cssText += this.extractPolyfillUnscopedRules(rootStyles);\n
return cssText;\n },\n registerDefinition: function(root, name, extendsName)
{\n var def = this.registry[name] = {\n root: root,\n name: name,\n
extendsName: extendsName\n }\n var styles = root ? root.querySelecto
rAll('style') : [];\n styles = styles ? Array.prototype.slice.call(styles, 0)
: [];\n def.rootStyles = styles;\n def.scopeStyles = def.rootStyles;\n
var extendee = this.registry[def.extendsName];\n if (extendee && (!root || r
oot.querySelector('shadow'))) {\n def.scopeStyles = extendee.scopeStyles.co
ncat(def.scopeStyles);\n }\n return def;\n },\n isTypeExtension: functio
n(extendsName) {\n return extendsName && extendsName.indexOf('-') < 0;\n },\
n applyScopeToContent: function(root, name) {\n if (root) {\n // add th
e name attribute to each node in root.\n Array.prototype.forEach.call(root.
querySelectorAll('*'),\n function(node) {\n node.setAttribut
e(name, '');\n });\n // and template contents too\n Array.pro
totype.forEach.call(root.querySelectorAll('template'),\n function(templ
ate) {\n this.applyScopeToContent(template.content, name);\n
},\n this);\n }\n },\n /*\n * Process styles to convert native
ShadowDOM rules that will trip\n * up the css parser; we rely on decorating th
e stylesheet with comments.\n * \n * For example, we convert this rule:\n
* \n * (comment start) @polyfill :host menu-item (comment end)\n * shadow::-
webkit-distributed(menu-item) {\n * \n * to this:\n * \n * scopeName men
u-item {\n *\n **/\n insertPolyfillDirectives: function(styles) {\n if (s
tyles) {\n Array.prototype.forEach.call(styles, function(s) {\n s.te
xtContent = this.insertPolyfillDirectivesInCssText(s.textContent);\n }, thi
s);\n }\n },\n insertPolyfillDirectivesInCssText: function(cssText) {\n
return cssText.replace(cssPolyfillCommentRe, function(match, p1) {\n // rem
ove end comment delimiter and add block start\n return p1.slice(0, -2) + '{
';\n });\n },\n /*\n * Process styles to add rules which will only apply
under the polyfill\n * \n * For example, we convert this rule:\n * \n *
(comment start) @polyfill-rule :host menu-item { \n * ... } (comment end)\n
* \n * to this:\n * \n * scopeName menu-item {...}\n *\n **/\n insertP
olyfillRules: function(styles) {\n if (styles) {\n Array.prototype.forEa
ch.call(styles, function(s) {\n s.textContent = this.insertPolyfillRulesI
nCssText(s.textContent);\n }, this);\n }\n },\n insertPolyfillRulesInC
ssText: function(cssText) {\n return cssText.replace(cssPolyfillRuleCommentRe
, function(match, p1) {\n // remove end comment delimiter\n return p1.
slice(0, -1);\n });\n },\n /*\n * Process styles to add rules which will
only apply under the polyfill\n * and do not process via CSSOM. (CSSOM is dest
ructive to rules on rare \n * occasions, e.g. -webkit-calc on Safari.)\n * F
or example, we convert this rule:\n * \n * (comment start) @polyfill-unscope
d-rule menu-item { \n * ... } (comment end)\n * \n * to this:\n * \n *
menu-item {...}\n *\n **/\n extractPolyfillUnscopedRules: function(styles)
{\n var cssText = '';\n if (styles) {\n Array.prototype.forEach.call(
styles, function(s) {\n cssText += this.extractPolyfillUnscopedRulesFromC
ssText(\n s.textContent) + '\\n\\n';\n }, this);\n }\n ret
urn cssText;\n },\n extractPolyfillUnscopedRulesFromCssText: function(cssText)
{\n var r = '', matches;\n while (matches = cssPolyfillUnscopedRuleCommen
tRe.exec(cssText)) {\n r += matches[1].slice(0, -1) + '\\n\\n';\n }\n
return r;\n },\n /* Ensure styles are scoped. Pseudo-scoping takes a rule lik
e:\n * \n * .foo {... } \n * \n * and converts this to\n * \n *
scopeName .foo { ... }\n */\n shimScoping: function(styles, name, typeExtensi
on) {\n if (styles) {\n return this.convertScopedStyles(styles, name, ty
peExtension);\n }\n },\n convertScopedStyles: function(styles, name, typeEx
tension) {\n var cssText = stylesToCssText(styles);\n cssText = this.inser
tPolyfillHostInCssText(cssText);\n cssText = this.convertColonHost(cssText);\
n cssText = this.convertColonAncestor(cssText);\n cssText = this.convertCo
mbinators(cssText);\n var rules = cssToRules(cssText);\n if (name) {\n
cssText = this.scopeRules(rules, name, typeExtension);\n }\n return cssT
ext;\n },\n /*\n * convert a rule like :host(.foo) > .bar { }\n *\n * to
\n *\n * scopeName.foo > .bar\n */\n convertColonHost: function(cssText) {
\n return this.convertColonRule(cssText, cssColonHostRe,\n this.colonH
ostPartReplacer);\n },\n /*\n * convert a rule like :ancestor(.foo) > .bar {
}\n *\n * to\n *\n * scopeName.foo > .bar, .foo scopeName > .bar { }\n
* \n * and\n *\n * :ancestor(.foo:host) .bar { ... }\n * \n * to\n
* \n * scopeName.foo .bar { ... }\n */\n convertColonAncestor: function(css
Text) {\n return this.convertColonRule(cssText, cssColonAncestorRe,\n
this.colonAncestorPartReplacer);\n },\n convertColonRule: function(cssText, re
gExp, partReplacer) {\n // p1 = :host, p2 = contents of (), p3 rest of rule\n
return cssText.replace(regExp, function(m, p1, p2, p3) {\n p1 = polyfil
lHostNoCombinator;\n if (p2) {\n var parts = p2.split(','), r = [];\
n for (var i=0, l=parts.length, p; (i<l) && (p=parts[i]); i++) {\n
p = p.trim();\n r.push(partReplacer(p1, p, p3));\n }\n
return r.join(',');\n } else {\n return p1 + p3;\n }\n });\
n },\n colonAncestorPartReplacer: function(host, part, suffix) {\n if (part
.match(polyfillHost)) {\n return this.colonHostPartReplacer(host, part, suf
fix);\n } else {\n return host + part + suffix + ', ' + part + ' ' + hos
t + suffix;\n }\n },\n colonHostPartReplacer: function(host, part, suffix)
{\n return host + part.replace(polyfillHost, '') + suffix;\n },\n /*\n *
Convert ^ and ^^ combinators by replacing with space.\n */\n convertCombinator
s: function(cssText) {\n return cssText.replace(/\\^\\^/g, ' ').replace(/\\^/
g, ' ');\n },\n // change a selector like 'div' to 'name div'\n scopeRules: f
unction(cssRules, name, typeExtension) {\n var cssText = '';\n Array.proto
type.forEach.call(cssRules, function(rule) {\n if (rule.selectorText && (ru
le.style && rule.style.cssText)) {\n cssText += this.scopeSelector(rule.s
electorText, name, typeExtension, \n this.strictStyling) + ' {\\n\\t';\
n cssText += this.propertiesFromRule(rule) + '\\n}\\n\\n';\n } else
if (rule.media) {\n cssText += '@media ' + rule.media.mediaText + ' {\\n'
;\n cssText += this.scopeRules(rule.cssRules, name, typeExtension);\n
cssText += '\\n}\\n\\n';\n } else if (rule.cssText) {\n cssText
+= rule.cssText + '\\n\\n';\n }\n }, this);\n return cssText;\n },\n
scopeSelector: function(selector, name, typeExtension, strict) {\n var r =
[], parts = selector.split(',');\n parts.forEach(function(p) {\n p = p.t
rim();\n if (this.selectorNeedsScoping(p, name, typeExtension)) {\n
p = (strict && !p.match(polyfillHostNoCombinator)) ? \n this.applyStr
ictSelectorScope(p, name) :\n this.applySimpleSelectorScope(p, name,
typeExtension);\n }\n r.push(p);\n }, this);\n return r.join(',
');\n },\n selectorNeedsScoping: function(selector, name, typeExtension) {\n
var re = this.makeScopeMatcher(name, typeExtension);\n return !selector.mat
ch(re);\n },\n makeScopeMatcher: function(name, typeExtension) {\n var matc
hScope = typeExtension ? '\\\\[is=[\\'\"]?' + name + '[\\'\"]?\\\\]' : name;\n
return new RegExp('^(' + matchScope + ')' + selectorReSuffix, 'm');\n },\n /
/ scope via name and [is=name]\n applySimpleSelectorScope: function(selector, n
ame, typeExtension) {\n var scoper = typeExtension ? '[is=' + name + ']' : na
me;\n if (selector.match(polyfillHostRe)) {\n selector = selector.replac
e(polyfillHostNoCombinator, scoper);\n return selector.replace(polyfillHost
Re, scoper + ' ');\n } else {\n return scoper + ' ' + selector;\n }\n
},\n // return a selector with [name] suffix on each simple selector\n // e.
g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name]\n applyStrictSelec
torScope: function(selector, name) {\n var splits = [' ', '>', '+', '~'],\n
scoped = selector,\n attrName = '[' + name + ']';\n splits.forEach(f
unction(sep) {\n var parts = scoped.split(sep);\n scoped = parts.map(f
unction(p) {\n // remove :host since it should be unnecessary\n va
r t = p.trim().replace(polyfillHostRe, '');\n if (t && (splits.indexOf(t)
< 0) && (t.indexOf(attrName) < 0)) {\n p = t.replace(/([^:]*)(:*)(.*)/
, '$1' + attrName + '$2$3')\n }\n return p;\n }).join(sep);\n
});\n return scoped;\n },\n insertPolyfillHostInCssText: function(selec
tor) {\n return selector.replace(hostRe, polyfillHost).replace(colonHostRe,\n
polyfillHost).replace(colonAncestorRe, polyfillAncestor);\n },\n prope
rtiesFromRule: function(rule) {\n // TODO(sorvell): Safari cssom incorrectly
removes quotes from the content\n // property. (https://bugs.webkit.org/show_
bug.cgi?id=118045)\n if (rule.style.content && !rule.style.content.match(/['\
"]+/)) {\n return rule.style.cssText.replace(/content:[^;]*;/g, 'content: \
\'' + \n rule.style.content + '\\';');\n }\n return rule.style.cs
sText;\n }\n};\n\nvar selectorRe = /([^{]*)({[\\s\\S]*?})/gim,\n cssCommentR
e = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim,\n cssPolyfillCommentRe = /\\/\\
*\\s*@polyfill ([^*]*\\*+([^/*][^*]*\\*+)*\\/)([^{]*?){/gim,\n cssPolyfillRul
eCommentRe = /\\/\\*\\s@polyfill-rule([^*]*\\*+([^/*][^*]*\\*+)*)\\//gim,\n c
ssPolyfillUnscopedRuleCommentRe = /\\/\\*\\s@polyfill-unscoped-rule([^*]*\\*+([^
/*][^*]*\\*+)*)\\//gim,\n cssPseudoRe = /::(x-[^\\s{,(]*)/gim,\n cssPartRe
= /::part\\(([^)]*)\\)/gim,\n // note: :host pre-processed to -shadowcsshost
.\n polyfillHost = '-shadowcsshost',\n // note: :ancestor pre-processed to
-shadowcssancestor.\n polyfillAncestor = '-shadowcssancestor',\n parenSuf
fix = ')(?:\\\\((' +\n '(?:\\\\([^)(]*\\\\)|[^)(]*)+?' +\n ')\\\\)
)?([^,{]*)';\n cssColonHostRe = new RegExp('(' + polyfillHost + parenSuffix,
'gim'),\n cssColonAncestorRe = new RegExp('(' + polyfillAncestor + parenSuffi
x, 'gim'),\n selectorReSuffix = '([>\\\\s~+\\[.,{:][\\\\s\\\\S]*)?$',\n ho
stRe = /@host/gim,\n colonHostRe = /\\:host/gim,\n colonAncestorRe = /\\:a
ncestor/gim,\n /* host name without combinator */\n polyfillHostNoCombinat
or = polyfillHost + '-no-combinator',\n polyfillHostRe = new RegExp(polyfillH
ost, 'gim');\n polyfillAncestorRe = new RegExp(polyfillAncestor, 'gim');\n\nf
unction stylesToCssText(styles, preserveComments) {\n var cssText = '';\n Arra
y.prototype.forEach.call(styles, function(s) {\n cssText += s.textContent + '
\\n\\n';\n });\n // strip comments for easier processing\n if (!preserveComme
nts) {\n cssText = cssText.replace(cssCommentRe, '');\n }\n return cssText;
\n}\n\nfunction cssTextToStyle(cssText) {\n var style = document.createElement(
'style');\n style.textContent = cssText;\n return style;\n}\n\nfunction cssToR
ules(cssText) {\n var style = cssTextToStyle(cssText);\n document.head.appendC
hild(style);\n var rules = style.sheet.cssRules;\n style.parentNode.removeChil
d(style);\n return rules;\n}\n\nfunction rulesToCss(cssRules) {\n for (var i=0
, css=[]; i < cssRules.length; i++) {\n css.push(cssRules[i].cssText);\n }\n
return css.join('\\n\\n');\n}\n\nfunction addCssToDocument(cssText) {\n if (c
ssText) {\n getSheet().appendChild(document.createTextNode(cssText));\n }\n}
\n\nvar SHIM_ATTRIBUTE = 'shim-shadowdom';\nvar SHIMMED_ATTRIBUTE = 'shim-shadow
dom-css';\n\nvar sheet;\nfunction getSheet() {\n if (!sheet) {\n sheet = doc
ument.createElement(\"style\");\n sheet.setAttribute(SHIMMED_ATTRIBUTE, '');\
n sheet[SHIMMED_ATTRIBUTE] = true;\n }\n return sheet;\n}\n\n// add polyfil
l stylesheet to document\nif (window.ShadowDOMPolyfill) {\n addCssToDocument('s
tyle { display: none !important; }\\n');\n var doc = wrap(document);\n var hea
d = doc.querySelector('head');\n head.insertBefore(getSheet(), head.childNodes[
0]);\n\n // TODO(sorvell): monkey-patching HTMLImports is abusive;\n // consid
er a better solution.\n document.addEventListener('DOMContentLoaded', function(
) {\n var urlResolver = scope.urlResolver;\n \n if (window.HTMLImports
&& !HTMLImports.useNative) {\n var SHIM_SHEET_SELECTOR = 'link[rel=styleshe
et]' +\n '[' + SHIM_ATTRIBUTE + ']';\n var SHIM_STYLE_SELECTOR = '
style[' + SHIM_ATTRIBUTE + ']';\n HTMLImports.importer.documentPreloadSelec
tors += ',' + SHIM_SHEET_SELECTOR;\n HTMLImports.importer.importsPreloadSel
ectors += ',' + SHIM_SHEET_SELECTOR;\n\n HTMLImports.parser.documentSelecto
rs = [\n HTMLImports.parser.documentSelectors,\n SHIM_SHEET_SELECT
OR,\n SHIM_STYLE_SELECTOR\n ].join(',');\n \n HTMLImports.pars
er.parseGeneric = function(elt) {\n if (elt[SHIMMED_ATTRIBUTE]) {\n
return;\n }\n var style = elt.__importElement || elt;\n
if (elt.__resource) {\n style = elt.ownerDocument.createElement('style
');\n style.textContent = urlResolver.resolveCssText(\n el
t.__resource, elt.href);\n } else {\n urlResolver.resolveStyles(
style); \n }\n var styles = [style];\n style.textContent =
ShadowCSS.stylesToShimmedCssText(styles, styles);\n style.removeAttribut
e(SHIM_ATTRIBUTE, '');\n style.setAttribute(SHIMMED_ATTRIBUTE, '');\n
style[SHIMMED_ATTRIBUTE] = true;\n // place in document\n if (
style.parentNode !== head) {\n // replace links in head\n if (
elt.parentNode === head) {\n head.replaceChild(style, elt);\n
} else {\n head.appendChild(style);\n }\n }\n
style.__importParsed = true\n this.markParsingComplete(elt);\n }\n
\n var hasResource = HTMLImports.parser.hasResource;\n HTMLImports.par
ser.hasResource = function(node) {\n if (node.localName === 'link' && nod
e.rel === 'stylesheet' &&\n node.hasAttribute(SHIM_ATTRIBUTE)) {\n
return (node.__resource);\n } else {\n return hasResource
.call(this, node);\n }\n }\n\n }\n });\n}\n\n// exports\nscope.S
hadowCSS = ShadowCSS;\n\n})(window.Platform);","/*\n * Copyright 2013 The Polyme
r Authors. All rights reserved.\n * Use of this source code is governed by a BSD
-style\n * license that can be found in the LICENSE file.\n */\n(function() {\n\
n // poor man's adapter for template.content on various platform scenarios\n w
indow.templateContent = window.templateContent || function(inTemplate) {\n re
turn inTemplate.content;\n };\n\n // so we can call wrap/unwrap without testin
g for ShadowDOMPolyfill\n\n window.wrap = window.unwrap = function(n){\n ret
urn n;\n }\n\n var originalCreateShadowRoot = Element.prototype.webkitCreateSh
adowRoot;\n Element.prototype.webkitCreateShadowRoot = function() {\n var el
derRoot = this.webkitShadowRoot;\n var root = originalCreateShadowRoot.call(t
his);\n root.olderShadowRoot = elderRoot;\n root.host = this;\n CustomE
lements.watchShadow(this);\n return root;\n }\n\n Object.defineProperties(E
lement.prototype, {\n shadowRoot: {\n get: function() {\n return
this.webkitShadowRoot;\n }\n },\n createShadowRoot: {\n value: f
unction() {\n return this.webkitCreateShadowRoot();\n }\n }\n })
;\n\n window.templateContent = function(inTemplate) {\n // if MDV exists, it
may need to boostrap this template to reveal content\n if (window.HTMLTempla
teElement && HTMLTemplateElement.bootstrap) {\n HTMLTemplateElement.bootstr
ap(inTemplate);\n }\n // fallback when there is no Shadow DOM polyfill, no
MDV polyfill, and no\n // native template support\n if (!inTemplate.conte
nt && !inTemplate._content) {\n var frag = document.createDocumentFragment(
);\n while (inTemplate.firstChild) {\n frag.appendChild(inTemplate.f
irstChild);\n }\n inTemplate._content = frag;\n }\n return inTem
plate.content || inTemplate._content;\n };\n\n})();","/* Any copyright is dedic
ated to the Public Domain.\n * http://creativecommons.org/publicdomain/zero/1.0/
*/\n\n(function(scope) {\n 'use strict';\n\n // feature detect for URL constr
uctor\n var hasWorkingUrl = false;\n if (!scope.forceJURL) {\n try {\n
var u = new URL('b', 'http://a');\n hasWorkingUrl = u.href === 'http://a/b
';\n } catch(e) {}\n }\n\n if (hasWorkingUrl)\n return;\n\n var relativ
e = Object.create(null);\n relative['ftp'] = 21;\n relative['file'] = 0;\n re
lative['gopher'] = 70;\n relative['http'] = 80;\n relative['https'] = 443;\n
relative['ws'] = 80;\n relative['wss'] = 443;\n\n var relativePathDotMapping =
Object.create(null);\n relativePathDotMapping['%2e'] = '.';\n relativePathDot
Mapping['.%2e'] = '..';\n relativePathDotMapping['%2e.'] = '..';\n relativePat
hDotMapping['%2e%2e'] = '..';\n\n function isRelativeScheme(scheme) {\n retu
rn relative[scheme] !== undefined;\n }\n\n function invalid() {\n clear.cal
l(this);\n this._isInvalid = true;\n }\n\n function IDNAToASCII(h) {\n i
f ('' == h) {\n invalid.call(this)\n }\n // XXX\n return h.toLower
Case()\n }\n\n function percentEscape(c) {\n var unicode = c.charCodeAt(0);
\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ? `\n
[0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) == -1\n ) {\n
return c;\n }\n return encodeURIComponent(c);\n }\n\n function perce
ntEscapeQuery(c) {\n // XXX This actually needs to encode c using encoding an
d then\n // convert the bytes one-by-one.\n\n var unicode = c.charCodeAt(0
);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ` (d
o not escape '?')\n [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) == -1\
n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n
var EOF = undefined,\n ALPHA = /[a-zA-Z]/,\n ALPHANUMERIC = /[a-zA-Z0-
9\\+\\-\\.]/;\n\n function parse(input, stateOverride, base) {\n function er
r(message) {\n errors.push(message)\n }\n\n var state = stateOverride
|| 'scheme start',\n cursor = 0,\n buffer = '',\n seenAt =
false,\n seenBracket = false,\n errors = [];\n\n loop: while (
(input[cursor - 1] != EOF || cursor == 0) && !this._isInvalid) {\n var c =
input[cursor];\n switch (state) {\n case 'scheme start':\n
if (c && ALPHA.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\
n state = 'scheme';\n } else if (!stateOverride) {\n
buffer = '';\n state = 'no scheme';\n continue;\n
} else {\n err('Invalid scheme.');\n break loop;\n
}\n break;\n\n case 'scheme':\n if (c && ALPHANU
MERIC.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n
} else if (':' == c) {\n this._scheme = buffer;\n buffer
= '';\n if (stateOverride) {\n break loop;\n
}\n if (isRelativeScheme(this._scheme)) {\n this._isRel
ative = true;\n }\n if ('file' == this._scheme) {\n
state = 'relative';\n } else if (this._isRelative && base && b
ase._scheme == this._scheme) {\n state = 'relative or authority';\n
} else if (this._isRelative) {\n state = 'authority fir
st slash';\n } else {\n state = 'scheme data';\n
}\n } else if (!stateOverride) {\n buffer = '';\n
cursor = 0;\n state = 'no scheme';\n continue;\n
} else if (EOF == c) {\n break loop;\n } else {\n
err('Code point not allowed in scheme: ' + c)\n break loop;\n
}\n break;\n\n case 'scheme data':\n if ('?' ==
c) {\n query = '?';\n state = 'query';\n } else
if ('#' == c) {\n this._fragment = '#';\n state = 'fragmen
t';\n } else {\n // XXX error handling\n if (EOF
!= c && '\\t' != c && '\\n' != c && '\\r' != c) {\n this._schemeDat
a += percentEscape(c);\n }\n }\n break;\n\n
case 'no scheme':\n if (!base || !(isRelativeScheme(base._scheme))) {\n
err('Missing scheme.');\n invalid.call(this);\n
} else {\n state = 'relative';\n continue;\n }\n
break;\n\n case 'relative or authority':\n if ('/' == c
&& '/' == input[cursor+1]) {\n state = 'authority ignore slashes';\n
} else {\n err('Expected /, got: ' + c);\n state
= 'relative';\n continue\n }\n break;\n\n c
ase 'relative':\n this._isRelative = true;\n if ('file' != thi
s._scheme)\n this._scheme = base._scheme;\n if (EOF == c) {\
n this._host = base._host;\n this._port = base._port;\n
this._path = base._path.slice();\n this._query = base._query
;\n break loop;\n } else if ('/' == c || '\\\\' == c) {\n
if ('\\\\' == c)\n err('\\\\ is an invalid code point.');\
n state = 'relative slash';\n } else if ('?' == c) {\n
this._host = base._host;\n this._port = base._port;\n
this._path = base._path.slice();\n this._query = '?';\n
state = 'query';\n } else if ('#' == c) {\n this._host = bas
e._host;\n this._port = base._port;\n this._path = base._p
ath.slice();\n this._query = base._query;\n this._fragment
= '#';\n state = 'fragment';\n } else {\n var ne
xtC = input[cursor+1]\n var nextNextC = input[cursor+2]\n
if (\n 'file' != this._scheme || !ALPHA.test(c) ||\n (
nextC != ':' && nextC != '|') ||\n (EOF != nextNextC && '/' != next
NextC && '\\\\' != nextNextC && '?' != nextNextC && '#' != nextNextC)) {\n
this._host = base._host;\n this._port = base._port;\n
this._path = base._path.slice();\n this._path.pop();\n
}\n state = 'relative path';\n continue;\n
}\n break;\n\n case 'relative slash':\n if ('/' == c |
| '\\\\' == c) {\n if ('\\\\' == c) {\n err('\\\\ is an
invalid code point.');\n }\n if ('file' == this._scheme) {
\n state = 'file host';\n } else {\n state
= 'authority ignore slashes';\n }\n } else {\n if
('file' != this._scheme) {\n this._host = base._host;\n
this._port = base._port;\n }\n state = 'relative path';
\n continue;\n }\n break;\n\n case 'authorit
y first slash':\n if ('/' == c) {\n state = 'authority secon
d slash';\n } else {\n err(\"Expected '/', got: \" + c);\n
state = 'authority ignore slashes';\n continue;\n
}\n break;\n\n case 'authority second slash':\n state =
'authority ignore slashes';\n if ('/' != c) {\n err(\"Expec
ted '/', got: \" + c);\n continue;\n }\n break;\n\n
case 'authority ignore slashes':\n if ('/' != c && '\\\\' != c)
{\n state = 'authority';\n continue;\n } else {\
n err('Expected authority, got: ' + c);\n }\n break
;\n\n case 'authority':\n if ('@' == c) {\n if (seenA
t) {\n err('@ already seen.');\n buffer += '%40';\n
}\n seenAt = true;\n for (var i = 0; i < buffer.l
ength; i++) {\n var cp = buffer[i];\n if ('\\t' == cp
|| '\\n' == cp || '\\r' == cp) {\n err('Invalid whitespace in aut
hority.');\n continue;\n }\n // XXX che
ck URL code points\n if (':' == cp && null === this._password) {\n
this._password = '';\n continue;\n }\
n var tempC = percentEscape(cp);\n (null !== this._pas
sword) ? this._password += tempC : this._username += tempC;\n }\n
buffer = '';\n } else if (EOF == c || '/' == c || '\\\\' == c |
| '?' == c || '#' == c) {\n cursor -= buffer.length;\n buf
fer = '';\n state = 'host';\n continue;\n } else
{\n buffer += c;\n }\n break;\n\n case 'file
host':\n if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' ==
c) {\n if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1]
== ':' || buffer[1] == '|')) {\n state = 'relative path';\n
} else if (buffer.length == 0) {\n state = 'relative path star
t';\n } else {\n this._host = IDNAToASCII.call(this, buf
fer);\n buffer = '';\n state = 'relative path start';\
n }\n continue;\n } else if ('\\t' == c || '\\n'
== c || '\\r' == c) {\n err('Invalid whitespace in file host.');\n
} else {\n buffer += c;\n }\n break;\n\n
case 'host':\n case 'hostname':\n if (':' == c && !seenBrack
et) {\n // XXX host parsing\n this._host = IDNAToASCII.cal
l(this, buffer);\n buffer = '';\n state = 'port';\n
if ('hostname' == stateOverride) {\n break loop;\n
}\n } else if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' =
= c) {\n this._host = IDNAToASCII.call(this, buffer);\n bu
ffer = '';\n state = 'relative path start';\n if (stateOve
rride) {\n break loop;\n }\n continue;\n
} else if ('\\t' != c && '\\n' != c && '\\r' != c) {\n if ('[' =
= c) {\n seenBracket = true;\n } else if (']' == c) {\n
seenBracket = false;\n }\n buffer += c;\n
} else {\n err('Invalid code point in host/hostname: ' + c);\n
}\n break;\n\n case 'port':\n if (/[0-9]/.test
(c)) {\n buffer += c;\n } else if (EOF == c || '/' == c || '
\\\\' == c || '?' == c || '#' == c || stateOverride) {\n if ('' != bu
ffer) {\n var temp = parseInt(buffer, 10);\n if (temp
!= relative[this._scheme]) {\n this._port = temp + '';\n
}\n buffer = '';\n }\n if (stateOverride
) {\n break loop;\n }\n state = 'relative pat
h start';\n continue;\n } else if ('\\t' == c || '\\n' == c
|| '\\r' == c) {\n err('Invalid code point in port: ' + c);\n
} else {\n invalid.call(this);\n }\n break;\n\n
case 'relative path start':\n if ('\\\\' == c)\n err(\
"'\\\\' not allowed in path.\");\n state = 'relative path';\n
if ('/' != c && '\\\\' != c) {\n continue;\n }\n br
eak;\n\n case 'relative path':\n if (EOF == c || '/' == c || '\\
\\' == c || (!stateOverride && ('?' == c || '#' == c))) {\n if ('\\\\
' == c) {\n err('\\\\ not allowed in relative path.');\n
}\n var tmp;\n if (tmp = relativePathDotMapping[buffer.to
LowerCase()]) {\n buffer = tmp;\n }\n if ('..
' == buffer) {\n this._path.pop();\n if ('/' != c && '
\\\\' != c) {\n this._path.push('');\n }\n
} else if ('.' == buffer && '/' != c && '\\\\' != c) {\n this._pa
th.push('');\n } else if ('.' != buffer) {\n if ('file'
== this._scheme && this._path.length == 0 && buffer.length == 2 && ALPHA.test(bu
ffer[0]) && buffer[1] == '|') {\n buffer = buffer[0] + ':';\n
}\n this._path.push(buffer);\n }\n
buffer = '';\n if ('?' == c) {\n this._query = '?';\n
state = 'query';\n } else if ('#' == c) {\n t
his._fragment = '#';\n state = 'fragment';\n }\n
} else if ('\\t' != c && '\\n' != c && '\\r' != c) {\n buffer += pe
rcentEscape(c);\n }\n break;\n\n case 'query':\n
if (!stateOverride && '#' == c) {\n this._fragment = '#';\n
state = 'fragment';\n } else if (EOF != c && '\\t' != c && '\\n' !
= c && '\\r' != c) {\n this._query += percentEscapeQuery(c);\n
}\n break;\n\n case 'fragment':\n if (EOF != c && '\
\t' != c && '\\n' != c && '\\r' != c) {\n this._fragment += c;\n
}\n break;\n }\n\n cursor++;\n }\n }\n\n function c
lear() {\n this._scheme = '';\n this._schemeData = '';\n this._username
= '';\n this._password = null;\n this._host = '';\n this._port = '';\n
this._path = [];\n this._query = '';\n this._fragment = '';\n this.
_isInvalid = false;\n this._isRelative = false;\n }\n\n // Does not process
domain names or IP addresses.\n // Does not handle encoding for the query para
meter.\n function jURL(url, base /* , encoding */) {\n if (base !== undefine
d && !(base instanceof jURL))\n base = new jURL(String(base));\n\n this.
_url = url;\n clear.call(this);\n\n var input = url.replace(/^[ \\t\\r\\n\
\f]+|[ \\t\\r\\n\\f]+$/g, '');\n // encoding = encoding || 'utf-8'\n\n par
se.call(this, input, null, base);\n }\n\n jURL.prototype = {\n get href() {
\n if (this._isInvalid)\n return this._url;\n\n var authority =
'';\n if ('' != this._username || null != this._password) {\n autho
rity = this._username +\n (null != this._password ? ':' + this._passw
ord : '') + '@';\n }\n\n return this.protocol +\n (this._isRe
lative ? '//' + authority + this.host : '') +\n this.pathname + this._q
uery + this._fragment;\n },\n set href(href) {\n clear.call(this);\n
parse.call(this, href);\n },\n\n get protocol() {\n return this.
_scheme + ':';\n },\n set protocol(protocol) {\n if (this._isInvalid)
\n return;\n parse.call(this, protocol + ':', 'scheme start');\n
},\n\n get host() {\n return this._isInvalid ? '' : this._port ?\n
this._host + ':' + this._port : this._host;\n },\n set host(host) {\n
if (this._isInvalid || !this._isRelative)\n return;\n parse.cal
l(this, host, 'host');\n },\n\n get hostname() {\n return this._host;
\n },\n set hostname(hostname) {\n if (this._isInvalid || !this._isRe
lative)\n return;\n parse.call(this, hostname, 'hostname');\n },\
n\n get port() {\n return this._port;\n },\n set port(port) {\n
if (this._isInvalid || !this._isRelative)\n return;\n parse.call(
this, port, 'port');\n },\n\n get pathname() {\n return this._isInval
id ? '' : this._isRelative ?\n '/' + this._path.join('/') : this._schem
eData;\n },\n set pathname(pathname) {\n if (this._isInvalid || !this
._isRelative)\n return;\n this._path = [];\n parse.call(this, p
athname, 'relative path start');\n },\n\n get search() {\n return thi
s._isInvalid || !this._query || '?' == this._query ?\n '' : this._query
;\n },\n set search(search) {\n if (this._isInvalid || !this._isRelat
ive)\n return;\n this._query = '?';\n if ('?' == search[0])\n
search = search.slice(1);\n parse.call(this, search, 'query');\n }
,\n\n get hash() {\n return this._isInvalid || !this._fragment || '#' ==
this._fragment ?\n '' : this._fragment;\n },\n set hash(hash) {\
n if (this._isInvalid)\n return;\n this._fragment = '#';\n
if ('#' == hash[0])\n hash = hash.slice(1);\n parse.call(this, hash
, 'fragment');\n }\n };\n\n scope.URL = jURL;\n\n})(window);\n","/*\n * Cop
yright 2013 The Polymer Authors. All rights reserved.\n * Use of this source cod
e is governed by a BSD-style\n * license that can be found in the LICENSE file.\
n */\n\n(function(scope) {\n\n// Old versions of iOS do not have bind.\n\nif (!F
unction.prototype.bind) {\n Function.prototype.bind = function(scope) {\n va
r self = this;\n var args = Array.prototype.slice.call(arguments, 1);\n re
turn function() {\n var args2 = args.slice();\n args2.push.apply(args2
, arguments);\n return self.apply(scope, args2);\n };\n };\n}\n\n// mix
in\n\n// copy all properties from inProps (et al) to inObj\nfunction mixin(inObj
/*, inProps, inMoreProps, ...*/) {\n var obj = inObj || {};\n for (var i = 1;
i < arguments.length; i++) {\n var p = arguments[i];\n try {\n for (v
ar n in p) {\n copyProperty(n, p, obj);\n }\n } catch(x) {\n }
\n }\n return obj;\n}\n\n// copy property inName from inSource object to inTar
get object\nfunction copyProperty(inName, inSource, inTarget) {\n var pd = getP
ropertyDescriptor(inSource, inName);\n Object.defineProperty(inTarget, inName,
pd);\n}\n\n// get property descriptor for inName on inObject, even if\n// inName
exists on some link in inObject's prototype chain\nfunction getPropertyDescript
or(inObject, inName) {\n if (inObject) {\n var pd = Object.getOwnPropertyDes
criptor(inObject, inName);\n return pd || getPropertyDescriptor(Object.getPro
totypeOf(inObject), inName);\n }\n}\n\n// export\n\nscope.mixin = mixin;\n\n})(
window.Platform);","// Copyright 2011 Google Inc.\n//\n// Licensed under the Apa
che License, Version 2.0 (the \"License\");\n// you may not use this file except
in compliance with the License.\n// You may obtain a copy of the License at\n//
\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by a
pplicable law or agreed to in writing, software\n// distributed under the Licens
e is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF
ANY KIND, either express or implied.\n// See the License for the specific langua
ge governing permissions and\n// limitations under the License.\n\n(function(sco
pe) {\n\n 'use strict';\n\n // polyfill DOMTokenList\n // * add/remove: allow
these methods to take multiple classNames\n // * toggle: add a 2nd argument wh
ich forces the given state rather\n // than toggling.\n\n var add = DOMTokenL
ist.prototype.add;\n var remove = DOMTokenList.prototype.remove;\n DOMTokenLis
t.prototype.add = function() {\n for (var i = 0; i < arguments.length; i++) {
\n add.call(this, arguments[i]);\n }\n };\n DOMTokenList.prototype.rem
ove = function() {\n for (var i = 0; i < arguments.length; i++) {\n remo
ve.call(this, arguments[i]);\n }\n };\n DOMTokenList.prototype.toggle = fun
ction(name, bool) {\n if (arguments.length == 1) {\n bool = !this.contai
ns(name);\n }\n bool ? this.add(name) : this.remove(name);\n };\n DOMTok
enList.prototype.switch = function(oldName, newName) {\n oldName && this.remo
ve(oldName);\n newName && this.add(newName);\n };\n\n // add array() to Nod
eList, NamedNodeMap, HTMLCollection\n\n var ArraySlice = function() {\n retu
rn Array.prototype.slice.call(this);\n };\n\n var namedNodeMap = (window.Named
NodeMap || window.MozNamedAttrMap || {});\n\n NodeList.prototype.array = ArrayS
lice;\n namedNodeMap.prototype.array = ArraySlice;\n HTMLCollection.prototype.
array = ArraySlice;\n\n // polyfill performance.now\n\n if (!window.performanc
e) {\n var start = Date.now();\n // only at millisecond precision\n win
dow.performance = {now: function(){ return Date.now() - start }};\n }\n\n // p
olyfill for requestAnimationFrame\n\n if (!window.requestAnimationFrame) {\n
window.requestAnimationFrame = (function() {\n var nativeRaf = window.webk
itRequestAnimationFrame ||\n window.mozRequestAnimationFrame;\n\n re
turn nativeRaf ?\n function(callback) {\n return nativeRaf(funct
ion() {\n callback(performance.now());\n });\n } :\n
function( callback ){\n return window.setTimeout(callback, 1000
/ 60);\n };\n })();\n }\n\n if (!window.cancelAnimationFrame) {\n
window.cancelAnimationFrame = (function() {\n return window.webkitCancelA
nimationFrame ||\n window.mozCancelAnimationFrame ||\n function(id
) {\n clearTimeout(id);\n };\n })();\n }\n\n // TODO(sorvel
l): workaround for bug:\n // https://code.google.com/p/chromium/issues/detail?i
d=229142\n // remove when this bug is addressed\n // give main document templa
tes a base that allows them to fetch eagerly\n // resolved paths relative to th
e main document\n var template = document.createElement('template');\n var bas
e = document.createElement('base');\n base.href = document.baseURI;\n template
.content.ownerDocument.appendChild(base);\n \n\n // utility\n\n function crea
teDOM(inTagOrNode, inHTML, inAttrs) {\n var dom = typeof inTagOrNode == 'stri
ng' ?\n document.createElement(inTagOrNode) : inTagOrNode.cloneNode(true)
;\n dom.innerHTML = inHTML;\n if (inAttrs) {\n for (var n in inAttrs)
{\n dom.setAttribute(n, inAttrs[n]);\n }\n }\n return dom;\n
}\n // Make a stub for Polymer() for polyfill purposes; under the HTMLImports\
n // polyfill, scripts in the main document run before imports. That means\n /
/ if (1) polymer is imported and (2) Polymer() is called in the main document\n
// in a script after the import, 2 occurs before 1. We correct this here\n //
by specfiically patching Polymer(); this is not necessary under native\n // HTM
LImports.\n var elementDeclarations = [];\n\n var polymerStub = function(name,
dictionary) {\n elementDeclarations.push(arguments);\n }\n window.Polymer
= polymerStub;\n\n // deliver queued delcarations\n scope.deliverDeclarations
= function() {\n scope.deliverDeclarations = null;\n return elementDeclara
tions;\n }\n\n // Once DOMContent has loaded, any main document scripts that d
epend on\n // Polymer() should have run. Calling Polymer() now is an error unti
l\n // polymer is imported.\n window.addEventListener('DOMContentLoaded', func
tion() {\n if (window.Polymer === polymerStub) {\n window.Polymer = func
tion() {\n console.error('You tried to use polymer without loading it fir
st. To ' +\n 'load polymer, <link rel=\"import\" href=\"' + \n
'components/polymer/polymer.html\">');\n };\n }\n });\n\n // exports\
n scope.createDOM = createDOM;\n\n})(window.Platform);\n","/*\n * Copyright 201
3 The Polymer Authors. All rights reserved.\n * Use of this source code is gover
ned by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n//
poor man's adapter for template.content on various platform scenarios\nwindow.t
emplateContent = window.templateContent || function(inTemplate) {\n return inTe
mplate.content;\n};","(function(scope) {\n \n scope = scope || (window.Inspect
or = {});\n \n var inspector;\n\n window.sinspect = function(inNode, inProxy)
{\n if (!inspector) {\n inspector = window.open('', 'ShadowDOM Inspecto
r', null, true);\n inspector.document.write(inspectorHTML);\n //inspec
tor.document.close();\n inspector.api = {\n shadowize: shadowize\n
};\n }\n inspect(inNode || wrap(document.body), inProxy);\n };\n\n v
ar inspectorHTML = [\n '<!DOCTYPE html>',\n '<html>',\n ' <head>',\n
' <title>ShadowDOM Inspector</title>',\n ' <style>',\n ' body
{',\n ' }',\n ' pre {',\n ' font: 9pt \"Courier New\"
, monospace;',\n ' line-height: 1.5em;',\n ' }',\n ' t
ag {',\n ' color: purple;',\n ' }',\n ' ul {',\n '
margin: 0;',\n ' padding: 0;',\n ' list-style: non
e;',\n ' }',\n ' li {',\n ' display: inline-block;',\
n ' background-color: #f1f1f1;',\n ' padding: 4px 6px;',\n
' border-radius: 4px;',\n ' margin-right: 4px;',\n '
}',\n ' </style>',\n ' </head>',\n ' <body>',\n ' <ul id
=\"crumbs\">',\n ' </ul>',\n ' <div id=\"tree\"></div>',\n ' </b
ody>',\n '</html>'\n ].join('\\n');\n \n var crumbs = [];\n\n var display
Crumbs = function() {\n // alias our document\n var d = inspector.document
;\n // get crumbbar\n var cb = d.querySelector('#crumbs');\n // clear c
rumbs\n cb.textContent = '';\n // build new crumbs\n for (var i=0, c; c
=crumbs[i]; i++) {\n var a = d.createElement('a');\n a.href = '#';\n
a.textContent = c.localName;\n a.idx = i;\n a.onclick = function(e
vent) {\n var c;\n while (crumbs.length > this.idx) {\n c
= crumbs.pop();\n }\n inspect(c.shadow || c, c);\n event.p
reventDefault();\n };\n cb.appendChild(d.createElement('li')).appendCh
ild(a);\n }\n };\n\n var inspect = function(inNode, inProxy) {\n // alia
s our document\n var d = inspector.document;\n // reset list of drillable
nodes\n drillable = [];\n // memoize our crumb proxy\n var proxy = inPr
oxy || inNode;\n crumbs.push(proxy);\n // update crumbs\n displayCrumbs
();\n // reflect local tree\n d.body.querySelector('#tree').innerHTML =\n
'<pre>' + output(inNode, inNode.childNodes) + '</pre>';\n };\n\n var fo
rEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\n\n var bla
cklisted = {STYLE:1, SCRIPT:1, \"#comment\": 1, TEMPLATE: 1};\n var blacklist =
function(inNode) {\n return blacklisted[inNode.nodeName];\n };\n\n var out
put = function(inNode, inChildNodes, inIndent) {\n if (blacklist(inNode)) {\n
return '';\n }\n var indent = inIndent || '';\n if (inNode.localN
ame || inNode.nodeType == 11) {\n var name = inNode.localName || 'shadow-ro
ot';\n //inChildNodes = ShadowDOM.localNodes(inNode);\n var info = ind
ent + describe(inNode);\n // if only textNodes\n // TODO(sjmiles): mak
e correct for ShadowDOM\n /*if (!inNode.children.length && inNode.localName
!== 'content' && inNode.localName !== 'shadow') {\n info += catTextConte
nt(inChildNodes);\n } else*/ {\n // TODO(sjmiles): native <shadow> h
as no reference to its projection\n if (name == 'content' /*|| name == 's
hadow'*/) {\n inChildNodes = inNode.getDistributedNodes();\n }\n
info += '<br/>';\n var ind = indent + ' ';\n fo
rEach(inChildNodes, function(n) {\n info += output(n, n.childNodes, ind
);\n });\n info += indent;\n }\n if (!({br:1}[name])) {\
n info += '<tag></' + name + '></tag>';\n info += '<br/>';\n
}\n } else {\n var text = inNode.textContent.trim();\n info =
text ? indent + '\"' + text + '\"' + '<br/>' : '';\n }\n return info;\n
};\n\n var catTextContent = function(inChildNodes) {\n var info = '';\n f
orEach(inChildNodes, function(n) {\n info += n.textContent.trim();\n });
\n return info;\n };\n\n var drillable = [];\n\n var describe = function(i
nNode) {\n var tag = '<tag>' + '<';\n var name = inNode.localName || 's
hadow-root';\n if (inNode.webkitShadowRoot || inNode.shadowRoot) {\n tag
+= ' <button idx=\"' + drillable.length +\n '\" onclick=\"api.shadowize.
call(this)\">' + name + '</button>';\n drillable.push(inNode);\n } else
{\n tag += name || 'shadow-root';\n }\n if (inNode.attributes) {\n
forEach(inNode.attributes, function(a) {\n tag += ' ' + a.name + (a.va
lue ? '=\"' + a.value + '\"' : '');\n });\n }\n tag += '>'+ '</tag
>';\n return tag;\n };\n\n // remote api\n\n shadowize = function() {\n
var idx = Number(this.attributes.idx.value);\n //alert(idx);\n var node =
drillable[idx];\n if (node) {\n inspect(node.webkitShadowRoot || node.s
hadowRoot, node)\n } else {\n console.log(\"bad shadowize node\");\n
console.dir(this);\n }\n };\n \n // export\n \n scope.output = output;
\n \n})(window.Inspector);\n\n\n","/*\n * Copyright 2013 The Polymer Authors. A
ll rights reserved.\n * Use of this source code is governed by a BSD-style\n * l
icense that can be found in the LICENSE file.\n */\n(function(scope) {\n\n // T
ODO(sorvell): It's desireable to provide a default stylesheet \n // that's conv
enient for styling unresolved elements, but\n // it's cumbersome to have to inc
lude this manually in every page.\n // It would make sense to put inside some H
TMLImport but \n // the HTMLImports polyfill does not allow loading of styleshe
ets \n // that block rendering. Therefore this injection is tolerated here.\n\n
var style = document.createElement('style');\n style.textContent = ''\n
+ 'body {'\n + 'transition: opacity ease-in 0.2s;' \n + ' } \\n'\n
+ 'body[unresolved] {'\n + 'opacity: 0; display: block; overflow: hidden;
' \n + ' } \\n'\n ;\n var head = document.querySelector('head');\n h
ead.insertBefore(style, head.firstChild);\n\n})(Platform);\n","(function(scope)
{\n\n function withDependencies(task, depends) {\n depends = depends || [];\
n if (!depends.map) {\n depends = [depends];\n }\n return task.app
ly(this, depends.map(marshal));\n }\n\n function module(name, dependsOrFactory
, moduleFactory) {\n var module;\n switch (arguments.length) {\n case
0:\n return;\n case 1:\n module = null;\n break;\n
case 2:\n module = dependsOrFactory.apply(this);\n break;\n
default:\n module = withDependencies(moduleFactory, dependsOrFactory);\
n break;\n }\n modules[name] = module;\n };\n\n function marshal(
name) {\n return modules[name];\n }\n\n var modules = {};\n\n function usi
ng(depends, task) {\n HTMLImports.whenImportsReady(function() {\n withDe
pendencies(task, depends);\n });\n };\n\n // exports\n\n scope.marshal = m
arshal;\n scope.module = module;\n scope.using = using;\n\n})(window);","/*\n
* Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sourc
e code is governed by a BSD-style\n * license that can be found in the LICENSE f
ile.\n */\n(function(scope) {\n\nvar iterations = 0;\nvar callbacks = [];\nvar t
widdle = document.createTextNode('');\n\nfunction endOfMicrotask(callback) {\n
twiddle.textContent = iterations++;\n callbacks.push(callback);\n}\n\nfunction
atEndOfMicrotask() {\n while (callbacks.length) {\n callbacks.shift()();\n
}\n}\n\nnew (window.MutationObserver || JsMutationObserver)(atEndOfMicrotask)\n
.observe(twiddle, {characterData: true})\n ;\n\n// exports\n\nscope.endOfMicro
task = endOfMicrotask;\n\n})(Platform);\n\n","/*\n * Copyright 2013 The Polymer
Authors. All rights reserved.\n * Use of this source code is governed by a BSD-s
tyle\n * license that can be found in the LICENSE file.\n */\n\n(function(scope)
{\n\nvar urlResolver = {\n resolveDom: function(root, url) {\n url = url ||
root.ownerDocument.baseURI;\n this.resolveAttributes(root, url);\n this.r
esolveStyles(root, url);\n // handle template.content\n var templates = ro
ot.querySelectorAll('template');\n if (templates) {\n for (var i = 0, l
= templates.length, t; (i < l) && (t = templates[i]); i++) {\n if (t.cont
ent) {\n this.resolveDom(t.content, url);\n }\n }\n }\n
},\n resolveStyles: function(root, url) {\n var styles = root.querySelector
All('style');\n if (styles) {\n for (var i = 0, l = styles.length, s; (i
< l) && (s = styles[i]); i++) {\n this.resolveStyle(s, url);\n }\n
}\n },\n resolveStyle: function(style, url) {\n url = url || style.owner
Document.baseURI;\n style.textContent = this.resolveCssText(style.textContent
, url);\n },\n resolveCssText: function(cssText, baseUrl) {\n cssText = rep
laceUrlsInCssText(cssText, baseUrl, CSS_URL_REGEXP);\n return replaceUrlsInCs
sText(cssText, baseUrl, CSS_IMPORT_REGEXP);\n },\n resolveAttributes: function
(root, url) {\n if (root.hasAttributes && root.hasAttributes()) {\n this
.resolveElementAttributes(root, url);\n }\n // search for attributes that
host urls\n var nodes = root && root.querySelectorAll(URL_ATTRS_SELECTOR);\n
if (nodes) {\n for (var i = 0, l = nodes.length, n; (i < l) && (n = node
s[i]); i++) {\n this.resolveElementAttributes(n, url);\n }\n }\n
},\n resolveElementAttributes: function(node, url) {\n url = url || node.ow
nerDocument.baseURI;\n URL_ATTRS.forEach(function(v) {\n var attr = node
.attributes[v];\n if (attr && attr.value &&\n (attr.value.search(UR
L_TEMPLATE_SEARCH) < 0)) {\n var urlPath = resolveRelativeUrl(url, attr.v
alue);\n attr.value = urlPath;\n }\n });\n }\n};\n\nvar CSS_URL_
REGEXP = /(url\\()([^)]*)(\\))/g;\nvar CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url
\\())([^;]*)(;)/g;\nvar URL_ATTRS = ['href', 'src', 'action'];\nvar URL_ATTRS_SE
LECTOR = '[' + URL_ATTRS.join('],[') + ']';\nvar URL_TEMPLATE_SEARCH = '{{.*}}';
\n\nfunction replaceUrlsInCssText(cssText, baseUrl, regexp) {\n return cssText.
replace(regexp, function(m, pre, url, post) {\n var urlPath = url.replace(/[\
"']/g, '');\n urlPath = resolveRelativeUrl(baseUrl, urlPath);\n return pre
+ '\\'' + urlPath + '\\'' + post;\n });\n}\n\nfunction resolveRelativeUrl(base
Url, url) {\n var u = new URL(url, baseUrl);\n return makeDocumentRelPath(u.hr
ef);\n}\n\nfunction makeDocumentRelPath(url) {\n var root = document.baseURI;\n
var u = new URL(url, root);\n if (u.host === root.host && u.port === root.por
t &&\n u.protocol === root.protocol) {\n return makeRelPath(root.pathnam
e, u.pathname);\n } else {\n return url;\n }\n}\n\n// make a relative path
from source to target\nfunction makeRelPath(source, target) {\n var s = source.
split('/');\n var t = target.split('/');\n while (s.length && s[0] === t[0]){\
n s.shift();\n t.shift();\n }\n for (var i = 0, l = s.length - 1; i < l;
i++) {\n t.unshift('..');\n }\n return t.join('/');\n}\n\n// exports\nscop
e.urlResolver = urlResolver;\n\n})(Platform);\n","/*\n * Copyright 2012 The Poly
mer Authors. All rights reserved.\n * Use of this source code is goverened by a
BSD-style\n * license that can be found in the LICENSE file.\n */\n\n(function(g
lobal) {\n\n var registrationsTable = new WeakMap();\n\n // We use setImmediat
e or postMessage for our future callback.\n var setImmediate = window.msSetImme
diate;\n\n // Use post message to emulate setImmediate.\n if (!setImmediate) {
\n var setImmediateQueue = [];\n var sentinel = String(Math.random());\n
window.addEventListener('message', function(e) {\n if (e.data === sentine
l) {\n var queue = setImmediateQueue;\n setImmediateQueue = [];\n
queue.forEach(function(func) {\n func();\n });\n }\n
});\n setImmediate = function(func) {\n setImmediateQueue.push(func)
;\n window.postMessage(sentinel, '*');\n };\n }\n\n // This is used to
ensure that we never schedule 2 callas to setImmediate\n var isScheduled = fal
se;\n\n // Keep track of observers that needs to be notified next time.\n var
scheduledObservers = [];\n\n /**\n * Schedules |dispatchCallback| to be calle
d in the future.\n * @param {MutationObserver} observer\n */\n function sch
eduleCallback(observer) {\n scheduledObservers.push(observer);\n if (!isSc
heduled) {\n isScheduled = true;\n setImmediate(dispatchCallbacks);\n
}\n }\n\n function wrapIfNeeded(node) {\n return window.ShadowDOMPolyfil
l &&\n window.ShadowDOMPolyfill.wrapIfNeeded(node) ||\n node;\n }
\n\n function dispatchCallbacks() {\n // http://dom.spec.whatwg.org/#mutatio
n-observers\n\n isScheduled = false; // Used to allow a new setImmediate call
above.\n\n var observers = scheduledObservers;\n scheduledObservers = [];
\n // Sort observers based on their creation UID (incremental).\n observer
s.sort(function(o1, o2) {\n return o1.uid_ - o2.uid_;\n });\n\n var a
nyNonEmpty = false;\n observers.forEach(function(observer) {\n\n // 2.1,
2.2\n var queue = observer.takeRecords();\n // 2.3. Remove all transi
ent registered observers whose observer is mo.\n removeTransientObserversFo
r(observer);\n\n // 2.4\n if (queue.length) {\n observer.callba
ck_(queue, observer);\n anyNonEmpty = true;\n }\n });\n\n // 3
.\n if (anyNonEmpty)\n dispatchCallbacks();\n }\n\n function removeTra
nsientObserversFor(observer) {\n observer.nodes_.forEach(function(node) {\n
var registrations = registrationsTable.get(node);\n if (!registrations)
\n return;\n registrations.forEach(function(registration) {\n
if (registration.observer === observer)\n registration.removeTransient
Observers();\n });\n });\n }\n\n /**\n * This function is used for t
he \"For each registered observer observer (with\n * observer's options as opt
ions) in target's list of registered observers,\n * run these substeps:\" and
the \"For each ancestor ancestor of target, and for\n * each registered observ
er observer (with options options) in ancestor's list\n * of registered observ
ers, run these substeps:\" part of the algorithms. The\n * |options.subtree| i
s checked to ensure that the callback is called\n * correctly.\n *\n * @pa
ram {Node} target\n * @param {function(MutationObserverInit):MutationRecord} c
allback\n */\n function forEachAncestorAndObserverEnqueueRecord(target, callb
ack) {\n for (var node = target; node; node = node.parentNode) {\n var r
egistrations = registrationsTable.get(node);\n\n if (registrations) {\n
for (var j = 0; j < registrations.length; j++) {\n var registration
= registrations[j];\n var options = registration.options;\n\n
// Only target ignores subtree.\n if (node !== target && !options.subt
ree)\n continue;\n\n var record = callback(options);\n
if (record)\n registration.enqueue(record);\n }\n }\n
}\n }\n\n var uidCounter = 0;\n\n /**\n * The class that maps to the DO
M MutationObserver interface.\n * @param {Function} callback.\n * @construct
or\n */\n function JsMutationObserver(callback) {\n this.callback_ = callb
ack;\n this.nodes_ = [];\n this.records_ = [];\n this.uid_ = ++uidCount
er;\n }\n\n JsMutationObserver.prototype = {\n observe: function(target, op
tions) {\n target = wrapIfNeeded(target);\n\n // 1.1\n if (!optio
ns.childList && !options.attributes && !options.characterData ||\n\n //
1.2\n options.attributeOldValue && !options.attributes ||\n\n
// 1.3\n options.attributeFilter && options.attributeFilter.length &&\
n !options.attributes ||\n\n // 1.4\n options.cha
racterDataOldValue && !options.characterData) {\n\n throw new SyntaxError
();\n }\n\n var registrations = registrationsTable.get(target);\n
if (!registrations)\n registrationsTable.set(target, registrations = [])
;\n\n // 2\n // If target's list of registered observers already inclu
des a registered\n // observer associated with the context object, replace
that registered\n // observer's options with options.\n var registrati
on;\n for (var i = 0; i < registrations.length; i++) {\n if (registr
ations[i].observer === this) {\n registration = registrations[i];\n
registration.removeListeners();\n registration.options = options;
\n break;\n }\n }\n\n // 3.\n // Otherwise, add a
new registered observer to target's list of registered\n // observers with
the context object as the observer and options as the\n // options, and ad
d target to context object's list of nodes on which it\n // is registered.\
n if (!registration) {\n registration = new Registration(this, targe
t, options);\n registrations.push(registration);\n this.nodes_.pus
h(target);\n }\n\n registration.addListeners();\n },\n\n disconn
ect: function() {\n this.nodes_.forEach(function(node) {\n var regis
trations = registrationsTable.get(node);\n for (var i = 0; i < registrati
ons.length; i++) {\n var registration = registrations[i];\n if
(registration.observer === this) {\n registration.removeListeners();
\n registrations.splice(i, 1);\n // Each node can only hav
e one registered observer associated with\n // this observer.\n
break;\n }\n }\n }, this);\n this.records_ = [];
\n },\n\n takeRecords: function() {\n var copyOfRecords = this.record
s_;\n this.records_ = [];\n return copyOfRecords;\n }\n };\n\n /*
*\n * @param {string} type\n * @param {Node} target\n * @constructor\n *
/\n function MutationRecord(type, target) {\n this.type = type;\n this.ta
rget = target;\n this.addedNodes = [];\n this.removedNodes = [];\n this
.previousSibling = null;\n this.nextSibling = null;\n this.attributeName =
null;\n this.attributeNamespace = null;\n this.oldValue = null;\n }\n\n
function copyMutationRecord(original) {\n var record = new MutationRecord(or
iginal.type, original.target);\n record.addedNodes = original.addedNodes.slic
e();\n record.removedNodes = original.removedNodes.slice();\n record.previ
ousSibling = original.previousSibling;\n record.nextSibling = original.nextSi
bling;\n record.attributeName = original.attributeName;\n record.attribute
Namespace = original.attributeNamespace;\n record.oldValue = original.oldValu
e;\n return record;\n };\n\n // We keep track of the two (possibly one) rec
ords used in a single mutation.\n var currentRecord, recordWithOldValue;\n\n /
**\n * Creates a record without |oldValue| and caches it as |currentRecord| fo
r\n * later use.\n * @param {string} oldValue\n * @return {MutationRecord}
\n */\n function getRecord(type, target) {\n return currentRecord = new Mu
tationRecord(type, target);\n }\n\n /**\n * Gets or creates a record with |o
ldValue| based in the |currentRecord|\n * @param {string} oldValue\n * @retu
rn {MutationRecord}\n */\n function getRecordWithOldValue(oldValue) {\n if
(recordWithOldValue)\n return recordWithOldValue;\n recordWithOldValue
= copyMutationRecord(currentRecord);\n recordWithOldValue.oldValue = oldValue
;\n return recordWithOldValue;\n }\n\n function clearRecords() {\n curre
ntRecord = recordWithOldValue = undefined;\n }\n\n /**\n * @param {MutationR
ecord} record\n * @return {boolean} Whether the record represents a record fro
m the current\n * mutation event.\n */\n function recordRepresentsCurrentMu
tation(record) {\n return record === recordWithOldValue || record === current
Record;\n }\n\n /**\n * Selects which record, if any, to replace the last re
cord in the queue.\n * This returns |null| if no record should be replaced.\n
*\n * @param {MutationRecord} lastRecord\n * @param {MutationRecord} newRe
cord\n * @param {MutationRecord}\n */\n function selectRecord(lastRecord, n
ewRecord) {\n if (lastRecord === newRecord)\n return lastRecord;\n\n
// Check if the the record we are adding represents the same record. If\n //
so, we keep the one with the oldValue in it.\n if (recordWithOldValue && reco
rdRepresentsCurrentMutation(lastRecord))\n return recordWithOldValue;\n\n
return null;\n }\n\n /**\n * Class used to represent a registered observer
.\n * @param {MutationObserver} observer\n * @param {Node} target\n * @par
am {MutationObserverInit} options\n * @constructor\n */\n function Registra
tion(observer, target, options) {\n this.observer = observer;\n this.targe
t = target;\n this.options = options;\n this.transientObservedNodes = [];\
n }\n\n Registration.prototype = {\n enqueue: function(record) {\n var
records = this.observer.records_;\n var length = records.length;\n\n
// There are cases where we replace the last record with the new record.\n
// For example if the record represents the same mutation we need to use\n
// the one with the oldValue. If we get same record (this can happen as we\n
// walk up the tree) we ignore the new record.\n if (records.length > 0)
{\n var lastRecord = records[length - 1];\n var recordToReplaceLas
t = selectRecord(lastRecord, record);\n if (recordToReplaceLast) {\n
records[length - 1] = recordToReplaceLast;\n return;\n }\n
} else {\n scheduleCallback(this.observer);\n }\n\n record
s[length] = record;\n },\n\n addListeners: function() {\n this.addLis
teners_(this.target);\n },\n\n addListeners_: function(node) {\n var
options = this.options;\n if (options.attributes)\n node.addEventLis
tener('DOMAttrModified', this, true);\n\n if (options.characterData)\n
node.addEventListener('DOMCharacterDataModified', this, true);\n\n if (o
ptions.childList)\n node.addEventListener('DOMNodeInserted', this, true);
\n\n if (options.childList || options.subtree)\n node.addEventListen
er('DOMNodeRemoved', this, true);\n },\n\n removeListeners: function() {\n
this.removeListeners_(this.target);\n },\n\n removeListeners_: funct
ion(node) {\n var options = this.options;\n if (options.attributes)\n
node.removeEventListener('DOMAttrModified', this, true);\n\n if (opt
ions.characterData)\n node.removeEventListener('DOMCharacterDataModified'
, this, true);\n\n if (options.childList)\n node.removeEventListener
('DOMNodeInserted', this, true);\n\n if (options.childList || options.subtr
ee)\n node.removeEventListener('DOMNodeRemoved', this, true);\n },\n\n
/**\n * Adds a transient observer on node. The transient observer gets r
emoved\n * next time we deliver the change records.\n * @param {Node} no
de\n */\n addTransientObserver: function(node) {\n // Don't add tran
sient observers on the target itself. We already have all\n // the required
listeners set up on the target.\n if (node === this.target)\n retur
n;\n\n this.addListeners_(node);\n this.transientObservedNodes.push(no
de);\n var registrations = registrationsTable.get(node);\n if (!regist
rations)\n registrationsTable.set(node, registrations = []);\n\n //
We know that registrations does not contain this because we already\n // ch
ecked if node === this.target.\n registrations.push(this);\n },\n\n r
emoveTransientObservers: function() {\n var transientObservedNodes = this.t
ransientObservedNodes;\n this.transientObservedNodes = [];\n\n transie
ntObservedNodes.forEach(function(node) {\n // Transient observers are nev
er added to the target.\n this.removeListeners_(node);\n\n var reg
istrations = registrationsTable.get(node);\n for (var i = 0; i < registra
tions.length; i++) {\n if (registrations[i] === this) {\n re
gistrations.splice(i, 1);\n // Each node can only have one registered
observer associated with\n // this observer.\n break;\n
}\n }\n }, this);\n },\n\n handleEvent: function(e) {\
n // Stop propagation since we are managing the propagation manually.\n
// This means that other mutation events on the page will not work\n // c
orrectly but that is by design.\n e.stopImmediatePropagation();\n\n sw
itch (e.type) {\n case 'DOMAttrModified':\n // http://dom.spec.w
hatwg.org/#concept-mo-queue-attributes\n\n var name = e.attrName;\n
var namespace = e.relatedNode.namespaceURI;\n var target = e.targ
et;\n\n // 1.\n var record = new getRecord('attributes', targe
t);\n record.attributeName = name;\n record.attributeNamespace
= namespace;\n\n // 2.\n var oldValue =\n e.attr
Change === MutationEvent.ADDITION ? null : e.prevValue;\n\n forEachAnce
storAndObserverEnqueueRecord(target, function(options) {\n // 3.1, 4.
2\n if (!options.attributes)\n return;\n\n //
3.2, 4.3\n if (options.attributeFilter && options.attributeFilter.le
ngth &&\n options.attributeFilter.indexOf(name) === -1 &&\n
options.attributeFilter.indexOf(namespace) === -1) {\n re
turn;\n }\n // 3.3, 4.4\n if (options.attribute
OldValue)\n return getRecordWithOldValue(oldValue);\n\n
// 3.4, 4.5\n return record;\n });\n\n break;\n\n
case 'DOMCharacterDataModified':\n // http://dom.spec.whatwg.org/
#concept-mo-queue-characterdata\n var target = e.target;\n\n /
/ 1.\n var record = getRecord('characterData', target);\n\n //
2.\n var oldValue = e.prevValue;\n\n\n forEachAncestorAndObse
rverEnqueueRecord(target, function(options) {\n // 3.1, 4.2\n
if (!options.characterData)\n return;\n\n // 3.2, 4.
3\n if (options.characterDataOldValue)\n return getRecor
dWithOldValue(oldValue);\n\n // 3.3, 4.4\n return record;\
n });\n\n break;\n\n case 'DOMNodeRemoved':\n
this.addTransientObserver(e.target);\n // Fall through.\n case '
DOMNodeInserted':\n // http://dom.spec.whatwg.org/#concept-mo-queue-chi
ldlist\n var target = e.relatedNode;\n var changedNode = e.tar
get;\n var addedNodes, removedNodes;\n if (e.type === 'DOMNode
Inserted') {\n addedNodes = [changedNode];\n removedNodes
= [];\n } else {\n\n addedNodes = [];\n removedNo
des = [changedNode];\n }\n var previousSibling = changedNode.p
reviousSibling;\n var nextSibling = changedNode.nextSibling;\n\n
// 1.\n var record = getRecord('childList', target);\n reco
rd.addedNodes = addedNodes;\n record.removedNodes = removedNodes;\n
record.previousSibling = previousSibling;\n record.nextSibling =
nextSibling;\n\n forEachAncestorAndObserverEnqueueRecord(target, functi
on(options) {\n // 2.1, 3.2\n if (!options.childList)\n
return;\n\n // 2.2, 3.3\n return record;\n
});\n\n }\n\n clearRecords();\n }\n };\n\n global.JsMutation
Observer = JsMutationObserver;\n\n if (!global.MutationObserver)\n global.Mu
tationObserver = JsMutationObserver;\n\n\n})(this);\n","/*\n * Copyright 2013 Th
e Polymer Authors. All rights reserved.\n * Use of this source code is governed
by a BSD-style\n * license that can be found in the LICENSE file.\n */\nwindow.H
TMLImports = window.HTMLImports || {flags:{}};","/*\n * Copyright 2013 The Polym
er Authors. All rights reserved.\n * Use of this source code is governed by a BS
D-style\n * license that can be found in the LICENSE file.\n */\n\n(function(sco
pe) {\n\n // imports\n var path = scope.path;\n var xhr = scope.xhr;\n var f
lags = scope.flags;\n\n // TODO(sorvell): this loader supports a dynamic list o
f urls\n // and an oncomplete callback that is called when the loader is done.\
n // The polyfill currently does *not* need this dynamism or the onComplete\n
// concept. Because of this, the loader could be simplified quite a bit.\n var
Loader = function(onLoad, onComplete) {\n this.cache = {};\n this.onload =
onLoad;\n this.oncomplete = onComplete;\n this.inflight = 0;\n this.pe
nding = {};\n };\n\n Loader.prototype = {\n addNodes: function(nodes) {\n
// number of transactions to complete\n this.inflight += nodes.length;\
n // commence transactions\n for (var i=0, l=nodes.length, n; (i<l) &&
(n=nodes[i]); i++) {\n this.require(n);\n }\n // anything to d
o?\n this.checkDone();\n },\n addNode: function(node) {\n // num
ber of transactions to complete\n this.inflight++;\n // commence trans
actions\n this.require(node);\n // anything to do?\n this.checkDo
ne();\n },\n require: function(elt) {\n var url = elt.src || elt.href
;\n // ensure we have a standard url that can be used\n // reliably fo
r deduping.\n // TODO(sjmiles): ad-hoc\n elt.__nodeUrl = url;\n /
/ deduplication\n if (!this.dedupe(url, elt)) {\n // fetch this reso
urce\n this.fetch(url, elt);\n }\n },\n dedupe: function(url,
elt) {\n if (this.pending[url]) {\n // add to list of nodes waiting
for inUrl\n this.pending[url].push(elt);\n // don't need fetch\n
return true;\n }\n var resource;\n if (this.cache[url]) {\n
this.onload(url, elt, this.cache[url]);\n // finished this transa
ction\n this.tail();\n // don't need fetch\n return true;\n
}\n // first node waiting for inUrl\n this.pending[url] = [elt];
\n // need fetch (not a dupe)\n return false;\n },\n fetch: func
tion(url, elt) {\n flags.load && console.log('fetch', url, elt);\n var
receiveXhr = function(err, resource) {\n this.receive(url, elt, err, res
ource);\n }.bind(this);\n xhr.load(url, receiveXhr);\n // TODO(so
rvell): blocked on\n // https://code.google.com/p/chromium/issues/detail?id
=257221\n // xhr'ing for a document makes scripts in imports runnable; othe
rwise\n // they are not; however, it requires that we have doctype=html in\
n // the import which is unacceptable. This is only needed on Chrome\n
// to avoid the bug above.\n /*\n if (isDocumentLink(elt)) {\n
xhr.loadDocument(url, receiveXhr);\n } else {\n xhr.load(url, recei
veXhr);\n }\n */\n },\n receive: function(url, elt, err, resourc
e) {\n this.cache[url] = resource;\n var $p = this.pending[url];\n
for (var i=0, l=$p.length, p; (i<l) && (p=$p[i]); i++) {\n //if (!err)
{\n this.onload(url, p, resource);\n //}\n this.tail();\n
}\n this.pending[url] = null;\n },\n tail: function() {\n
--this.inflight;\n this.checkDone();\n },\n checkDone: function() {\n
if (!this.inflight) {\n this.oncomplete();\n }\n }\n };\n\
n xhr = xhr || {\n async: true,\n ok: function(request) {\n return (
request.status >= 200 && request.status < 300)\n || (request.status ===
304)\n || (request.status === 0);\n },\n load: function(url, nex
t, nextContext) {\n var request = new XMLHttpRequest();\n if (scope.fl
ags.debug || scope.flags.bust) {\n url += '?' + Math.random();\n }\n
request.open('GET', url, xhr.async);\n request.addEventListener('read
ystatechange', function(e) {\n if (request.readyState === 4) {\n
next.call(nextContext, !xhr.ok(request) && request,\n request.resp
onse || request.responseText, url);\n }\n });\n request.send();
\n return request;\n },\n loadDocument: function(url, next, nextConte
xt) {\n this.load(url, next, nextContext).responseType = 'document';\n }
\n };\n\n // exports\n scope.xhr = xhr;\n scope.Loader = Loader;\n\n})(windo
w.HTMLImports);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserv
ed.\n * Use of this source code is governed by a BSD-style\n * license that can
be found in the LICENSE file.\n */\n\n(function(scope) {\n\nvar IMPORT_LINK_TYPE
= 'import';\nvar flags = scope.flags;\nvar isIe = /Trident/.test(navigator.user
Agent);\n// TODO(sorvell): SD polyfill intrusion\nvar mainDoc = window.ShadowDOM
Polyfill ? \n window.ShadowDOMPolyfill.wrapIfNeeded(document) : document;\n\n
// importParser\n// highlander object to manage parsing of imports\n// parses im
port related elements\n// and ensures proper parse order\n// parse order is enfo
rced by crawling the tree and monitoring which elements\n// have been parsed; as
ync parsing is also supported.\n\n// highlander object for parsing a document tr
ee\nvar importParser = {\n // parse selectors for main document elements\n doc
umentSelectors: 'link[rel=' + IMPORT_LINK_TYPE + ']',\n // parse selectors for
import document elements\n importsSelectors: [\n 'link[rel=' + IMPORT_LINK_T
YPE + ']',\n 'link[rel=stylesheet]',\n 'style',\n 'script:not([type])',
\n 'script[type=\"text/javascript\"]'\n ].join(','),\n map: {\n link: 'p
arseLink',\n script: 'parseScript',\n style: 'parseStyle'\n },\n // try
to parse the next import in the tree\n parseNext: function() {\n var next =
this.nextToParse();\n if (next) {\n this.parse(next);\n }\n },\n pa
rse: function(elt) {\n if (this.isParsed(elt)) {\n flags.parse && consol
e.log('[%s] is already parsed', elt.localName);\n return;\n }\n var f
n = this[this.map[elt.localName]];\n if (fn) {\n this.markParsing(elt);\
n fn.call(this, elt);\n }\n },\n // only 1 element may be parsed at a
time; parsing is async so, each\n // parsing implementation must inform the sys
tem that parsing is complete\n // via markParsingComplete.\n markParsing: func
tion(elt) {\n flags.parse && console.log('parsing', elt);\n this.parsingEl
ement = elt;\n },\n markParsingComplete: function(elt) {\n elt.__importPars
ed = true;\n if (elt.__importElement) {\n elt.__importElement.__importPa
rsed = true;\n }\n this.parsingElement = null;\n flags.parse && console
.log('completed', elt);\n this.parseNext();\n },\n parseImport: function(el
t) {\n elt.import.__importParsed = true;\n // TODO(sorvell): consider if t
here's a better way to do this;\n // expose an imports parsing hook; this is
needed, for example, by the\n // CustomElements polyfill.\n if (HTMLImport
s.__importsParsingHook) {\n HTMLImports.__importsParsingHook(elt);\n }\n
// fire load event\n if (elt.__resource) {\n elt.dispatchEvent(new C
ustomEvent('load', {bubbles: false})); \n } else {\n elt.dispatchEven
t(new CustomEvent('error', {bubbles: false}));\n }\n // TODO(sorvell): wor
karound for Safari addEventListener not working\n // for elements not in the
main document.\n if (elt.__pending) {\n var fn;\n while (elt.__pend
ing.length) {\n fn = elt.__pending.shift();\n if (fn) {\n
fn({target: elt});\n }\n }\n }\n this.markParsingComplete(elt
);\n },\n parseLink: function(linkElt) {\n if (nodeIsImport(linkElt)) {\n
this.parseImport(linkElt);\n } else {\n // make href absolute\n
linkElt.href = linkElt.href;\n this.parseGeneric(linkElt);\n }\n },\n
parseStyle: function(elt) {\n // TODO(sorvell): style element load event can
just not fire so clone styles\n var src = elt;\n elt = cloneStyle(elt);\n
elt.__importElement = src;\n this.parseGeneric(elt);\n },\n parseGeneri
c: function(elt) {\n this.trackElement(elt);\n document.head.appendChild(e
lt);\n },\n // tracks when a loadable element has loaded\n trackElement: func
tion(elt) {\n var self = this;\n var done = function() {\n self.markP
arsingComplete(elt);\n };\n elt.addEventListener('load', done);\n elt.a
ddEventListener('error', done);\n\n // NOTE: IE does not fire \"load\" event
for styles that have already loaded\n // This is in violation of the spec, so
we try our hardest to work around it\n if (isIe && elt.localName === 'style'
) {\n var fakeLoad = false;\n // If there's not @import in the textCon
tent, assume it has loaded\n if (elt.textContent.indexOf('@import') == -1)
{\n fakeLoad = true;\n // if we have a sheet, we have been parsed\n
} else if (elt.sheet) {\n fakeLoad = true;\n var csr = elt.sh
eet.cssRules;\n var len = csr ? csr.length : 0;\n // search the ru
les for @import's\n for (var i = 0, r; (i < len) && (r = csr[i]); i++) {\
n if (r.type === CSSRule.IMPORT_RULE) {\n // if every @impor
t has resolved, fake the load\n fakeLoad = fakeLoad && Boolean(r.styl
eSheet);\n }\n }\n }\n // dispatch a fake load event a
nd continue parsing\n if (fakeLoad) {\n elt.dispatchEvent(new Custom
Event('load', {bubbles: false}));\n }\n }\n },\n parseScript: function
(scriptElt) {\n // acquire code to execute\n var code = (scriptElt.__resou
rce || scriptElt.textContent).trim();\n if (code) {\n // calculate sourc
e map hint\n var moniker = scriptElt.__nodeUrl;\n if (!moniker) {\n
moniker = scriptElt.ownerDocument.baseURI;\n // there could be more
than one script this url\n var tag = '[' + Math.floor((Math.random()+1)*1
000) + ']';\n // TODO(sjmiles): Polymer hack, should be pluggable if we n
eed to allow \n // this sort of thing\n var matches = code.match(/
Polymer\\(['\"]([^'\"]*)/);\n tag = matches && matches[1] || tag;\n
// tag the moniker\n moniker += '/' + tag + '.js';\n }\n // s
ource map hint\n code += \"\\n//# sourceURL=\" + moniker + \"\\n\";\n
// evaluate the code\n scope.currentScript = scriptElt;\n eval.call(wi
ndow, code);\n scope.currentScript = null;\n }\n this.markParsingComp
lete(scriptElt);\n },\n // determine the next element in the tree which should
be parsed\n nextToParse: function() {\n return !this.parsingElement && this
.nextToParseInDoc(mainDoc);\n },\n nextToParseInDoc: function(doc, link) {\n
var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc));\n for (v
ar i=0, l=nodes.length, p=0, n; (i<l) && (n=nodes[i]); i++) {\n if (!this.i
sParsed(n)) {\n if (this.hasResource(n)) {\n return nodeIsImport
(n) ? this.nextToParseInDoc(n.import, n) : n;\n } else {\n retur
n;\n }\n }\n }\n // all nodes have been parsed, ready to parse
import, if any\n return link;\n },\n // return the set of parse selectors
relevant for this node.\n parseSelectorsForNode: function(node) {\n var doc
= node.ownerDocument || node;\n return doc === mainDoc ? this.documentSelecto
rs : this.importsSelectors;\n },\n isParsed: function(node) {\n return node
.__importParsed;\n },\n hasResource: function(node) {\n if (nodeIsImport(no
de) && !node.import) {\n return false;\n }\n if (node.localName === '
script' && node.src && !node.__resource) {\n return false;\n }\n retu
rn true;\n }\n};\n\nfunction nodeIsImport(elt) {\n return (elt.localName === '
link') && (elt.rel === IMPORT_LINK_TYPE);\n}\n\n// style/stylesheet handling\n\n
// clone style with proper path resolution for main document\n// NOTE: styles ar
e the only elements that require direct path fixup.\nfunction cloneStyle(style)
{\n var clone = style.ownerDocument.createElement('style');\n clone.textConten
t = style.textContent;\n path.resolveUrlsInStyle(clone);\n return clone;\n}\n\
n// path fixup: style elements in imports must be made relative to the main \n//
document. We fixup url's in url() and @import.\nvar CSS_URL_REGEXP = /(url\\()(
[^)]*)(\\))/g;\nvar CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url\\())([^;]*)(;)/g;\
n\nvar path = {\n resolveUrlsInStyle: function(style) {\n var doc = style.ow
nerDocument;\n var resolver = doc.createElement('a');\n style.textContent
= this.resolveUrlsInCssText(style.textContent, resolver);\n return style; \n
},\n resolveUrlsInCssText: function(cssText, urlObj) {\n var r = this.repl
aceUrls(cssText, urlObj, CSS_URL_REGEXP);\n r = this.replaceUrls(r, urlObj, C
SS_IMPORT_REGEXP);\n return r;\n },\n replaceUrls: function(text, urlObj, r
egexp) {\n return text.replace(regexp, function(m, pre, url, post) {\n v
ar urlPath = url.replace(/[\"']/g, '');\n urlObj.href = urlPath;\n url
Path = urlObj.href;\n return pre + '\\'' + urlPath + '\\'' + post;\n });
\n }\n}\n\n// exports\nscope.parser = importParser;\nscope.path = path;\nsc
ope.isIE = isIe;\n\n})(HTMLImports);\n","/*\n * Copyright 2013 The Polymer Autho
rs. All rights reserved.\n * Use of this source code is governed by a BSD-style\
n * license that can be found in the LICENSE file.\n */\n\n(function(scope) {\n\
nvar hasNative = ('import' in document.createElement('link'));\nvar useNative =
hasNative;\nvar flags = scope.flags;\nvar IMPORT_LINK_TYPE = 'import';\n\n// TOD
O(sorvell): SD polyfill intrusion\nvar mainDoc = window.ShadowDOMPolyfill ? \n
ShadowDOMPolyfill.wrapIfNeeded(document) : document;\n\nif (!useNative) {\n\n
// imports\n var xhr = scope.xhr;\n var Loader = scope.Loader;\n var parser
= scope.parser;\n\n // importer\n // highlander object to manage loading of im
ports\n\n // for any document, importer:\n // - loads any linked import docume
nts (with deduping)\n // for any import document, importer also:\n // - loads
text of external script tags\n\n var importer = {\n documents: {},\n // n
odes to load in the mian document\n documentPreloadSelectors: 'link[rel=' + I
MPORT_LINK_TYPE + ']',\n // nodes to load in imports\n importsPreloadSelec
tors: [\n 'link[rel=' + IMPORT_LINK_TYPE + ']',\n 'script[src]:not
([type])',\n 'script[src][type=\"text/javascript\"]'\n ].join(','),\n
loadNode: function(node) {\n importLoader.addNode(node);\n },\n //
load all loadable elements within the parent element\n loadSubtree: function
(parent) {\n var nodes = this.marshalNodes(parent);\n // add these nod
es to loader's queue\n importLoader.addNodes(nodes);\n },\n marshalNo
des: function(parent) {\n // all preloadable nodes in inDocument\n ret
urn parent.querySelectorAll(this.loadSelectorsForNode(parent));\n },\n //
find the proper set of load selectors for a given node\n loadSelectorsForNode
: function(node) {\n var doc = node.ownerDocument || node;\n return do
c === mainDoc ? this.documentPreloadSelectors :\n this.importsPreloadSe
lectors;\n },\n loaded: function(url, elt, resource) {\n flags.load &
& console.log('loaded', url, elt);\n // store generic resource\n // TO
DO(sorvell): fails for nodes inside <template>.content\n // see https://cod
e.google.com/p/chromium/issues/detail?id=249381.\n elt.__resource = resourc
e;\n if (isDocumentLink(elt)) {\n var doc = this.documents[url];\n
// if we've never seen a document at this url\n if (!doc) {\n
// generate an HTMLDocument from data\n doc = makeDocument(resource
, url);\n doc.__importLink = elt;\n // TODO(sorvell): we canno
t use MO to detect parsed nodes because\n // SD polyfill does not repor
t these as mutations.\n this.bootDocument(doc);\n // cache doc
ument\n this.documents[url] = doc;\n }\n // don't store i
mport record until we're actually loaded\n // store document resource\n
elt.import = doc;\n }\n parser.parseNext();\n },\n bootDoc
ument: function(doc) {\n this.loadSubtree(doc);\n this.observe(doc);\n
parser.parseNext();\n },\n loadedAll: function() {\n parser.par
seNext();\n }\n };\n\n // loader singleton\n var importLoader = new Loader
(importer.loaded.bind(importer), \n importer.loadedAll.bind(importer));\n\n
function isDocumentLink(elt) {\n return isLinkRel(elt, IMPORT_LINK_TYPE);\n
}\n\n function isLinkRel(elt, rel) {\n return elt.localName === 'link' &&
elt.getAttribute('rel') === rel;\n }\n\n function isScript(elt) {\n return
elt.localName === 'script';\n }\n\n function makeDocument(resource, url) {\n
// create a new HTML document\n var doc = resource;\n if (!(doc instance
of Document)) {\n doc = document.implementation.createHTMLDocument(IMPORT_L
INK_TYPE);\n }\n // cache the new document's source url\n doc._URL = ur
l;\n // establish a relative path via <base>\n var base = doc.createElemen
t('base');\n base.setAttribute('href', url);\n // add baseURI support to b
rowsers (IE) that lack it.\n if (!doc.baseURI) {\n doc.baseURI = url;\n
}\n doc.head.appendChild(base);\n // install HTML last as it may trigge
r CustomElement upgrades\n // TODO(sjmiles): problem wrt to template boostrap
ping below,\n // template bootstrapping must (?) come before element upgrade\
n // but we cannot bootstrap templates until they are in a document\n // w
hich is too late\n if (!(resource instanceof Document)) {\n // install h
tml\n doc.body.innerHTML = resource;\n }\n // TODO(sorvell): ideally
this code is not aware of Template polyfill,\n // but for now the polyfill ne
eds help to bootstrap these templates\n if (window.HTMLTemplateElement && HTM
LTemplateElement.bootstrap) {\n HTMLTemplateElement.bootstrap(doc);\n }\
n return doc;\n }\n} else {\n // do nothing if using native imports\n var
importer = {};\n}\n\n// NOTE: We cannot polyfill document.currentScript because
it's not possible\n// both to override and maintain the ability to capture the n
ative value;\n// therefore we choose to expose _currentScript both when native i
mports\n// and the polyfill are in use.\nvar currentScriptDescriptor = {\n get:
function() {\n return HTMLImports.currentScript || document.currentScript;\n
},\n configurable: true\n};\n\nObject.defineProperty(document, '_currentScrip
t', currentScriptDescriptor);\nObject.defineProperty(mainDoc, '_currentScript',
currentScriptDescriptor);\n\n// Polyfill document.baseURI for browsers without i
t.\nif (!document.baseURI) {\n var baseURIDescriptor = {\n get: function() {
\n return window.location.href;\n },\n configurable: true\n };\n\n
Object.defineProperty(document, 'baseURI', baseURIDescriptor);\n Object.defineP
roperty(mainDoc, 'baseURI', baseURIDescriptor);\n}\n\n// call a callback when al
l HTMLImports in the document at call (or at least\n// document ready) time hav
e loaded.\n// 1. ensure the document is in a ready state (has dom), then \n// 2.
watch for loading of imports and call callback when done\nfunction whenImportsR
eady(callback, doc) {\n doc = doc || mainDoc;\n // if document is loading, wai
t and try again\n whenDocumentReady(function() {\n watchImportsLoad(callback
, doc);\n }, doc);\n}\n\n// call the callback when the document is in a ready s
tate (has dom)\nvar requiredReadyState = HTMLImports.isIE ? 'complete' : 'intera
ctive';\nvar READY_EVENT = 'readystatechange';\nfunction isDocumentReady(doc) {\
n return (doc.readyState === 'complete' ||\n doc.readyState === requiredRe
adyState);\n}\n\n// call <callback> when we ensure the document is in a ready st
ate\nfunction whenDocumentReady(callback, doc) {\n if (!isDocumentReady(doc)) {
\n var checkReady = function() {\n if (doc.readyState === 'complete' ||
\n doc.readyState === requiredReadyState) {\n doc.removeEventLis
tener(READY_EVENT, checkReady);\n whenDocumentReady(callback, doc);\n
}\n }\n doc.addEventListener(READY_EVENT, checkReady);\n } else if (cal
lback) {\n callback();\n }\n}\n\n// call <callback> when we ensure all impor
ts have loaded\nfunction watchImportsLoad(callback, doc) {\n var imports = doc.
querySelectorAll('link[rel=import]');\n var loaded = 0, l = imports.length;\n
function checkDone(d) { \n if (loaded == l) {\n // go async to ensure pa
rser isn't stuck on a script tag\n requestAnimationFrame(callback);\n }\
n }\n function loadedImport(e) {\n loaded++;\n checkDone();\n }\n if (
l) {\n for (var i=0, imp; (i<l) && (imp=imports[i]); i++) {\n if (isImpo
rtLoaded(imp)) {\n loadedImport.call(imp);\n } else {\n imp.a
ddEventListener('load', loadedImport);\n imp.addEventListener('error', lo
adedImport);\n }\n }\n } else {\n checkDone();\n }\n}\n\nfunction i
sImportLoaded(link) {\n return useNative ? (link.import && (link.import.readySt
ate !== 'loading')) :\n link.__importParsed;\n}\n\n// exports\nscope.hasNat
ive = hasNative;\nscope.useNative = useNative;\nscope.importer = importer;\nscop
e.whenImportsReady = whenImportsReady;\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYP
E;\nscope.isImportLoaded = isImportLoaded;\nscope.importLoader = importLoader;\n
\n})(window.HTMLImports);\n"," /*\nCopyright 2013 The Polymer Authors. All right
s reserved.\nUse of this source code is governed by a BSD-style\nlicense that ca
n be found in the LICENSE file.\n*/\n\n(function(scope){\n\nvar IMPORT_LINK_TYPE
= scope.IMPORT_LINK_TYPE;\nvar importSelector = 'link[rel=' + IMPORT_LINK_TYPE
+ ']';\nvar importer = scope.importer;\n\n// we track mutations for addedNodes,
looking for imports\nfunction handler(mutations) {\n for (var i=0, l=mutations.
length, m; (i<l) && (m=mutations[i]); i++) {\n if (m.type === 'childList' &&
m.addedNodes.length) {\n addedNodes(m.addedNodes);\n }\n }\n}\n\n// fin
d loadable elements and add them to the importer\nfunction addedNodes(nodes) {\n
for (var i=0, l=nodes.length, n; (i<l) && (n=nodes[i]); i++) {\n if (should
LoadNode(n)) {\n importer.loadNode(n);\n }\n if (n.children && n.chil
dren.length) {\n addedNodes(n.children);\n }\n }\n}\n\nfunction shouldL
oadNode(node) {\n return (node.nodeType === 1) && matches.call(node,\n imp
orter.loadSelectorsForNode(node));\n}\n\n// x-plat matches\nvar matches = HTMLEl
ement.prototype.matches || \n HTMLElement.prototype.matchesSelector || \n
HTMLElement.prototype.webkitMatchesSelector ||\n HTMLElement.prototype.mozMat
chesSelector ||\n HTMLElement.prototype.msMatchesSelector;\n\nvar observer =
new MutationObserver(handler);\n\n// observe the given root for loadable element
s\nfunction observe(root) {\n observer.observe(root, {childList: true, subtree:
true});\n}\n\n// exports\n// TODO(sorvell): factor so can put on scope\nscope.o
bserve = observe;\nimporter.observe = observe;\n\n})(HTMLImports);\n","/*\n * Co
pyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source co
de is governed by a BSD-style\n * license that can be found in the LICENSE file.
\n */\n(function(){\n\n// bootstrap\n\n// IE shim for CustomEvent\nif (typeof wi
ndow.CustomEvent !== 'function') {\n window.CustomEvent = function(inType, dict
ionary) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(in
Type,\n dictionary.bubbles === false ? false : true,\n dictionary.
cancelable === false ? false : true,\n dictionary.detail);\n return e
;\n };\n}\n\n// TODO(sorvell): SD polyfill intrusion\nvar doc = window.ShadowDO
MPolyfill ? \n window.ShadowDOMPolyfill.wrapIfNeeded(document) : document;\n\
n// Fire the 'HTMLImportsLoaded' event when imports in document at load time \n/
/ have loaded. This event is required to simulate the script blocking \n// behav
ior of native imports. A main document script that needs to be sure\n// imports
have loaded should wait for this event.\nHTMLImports.whenImportsReady(function()
{\n HTMLImports.ready = true;\n HTMLImports.readyTime = new Date().getTime();
\n doc.dispatchEvent(\n new CustomEvent('HTMLImportsLoaded', {bubbles: true}
)\n );\n});\n\n\n// no need to bootstrap the polyfill when native imports is av
ailable.\nif (!HTMLImports.useNative) {\n function bootstrap() {\n HTMLImpor
ts.importer.bootDocument(doc);\n }\n \n // TODO(sorvell): SD polyfill does
*not* generate mutations for nodes added\n // by the parser. For this reason, w
e must wait until the dom exists to \n // bootstrap.\n if (document.readyState
=== 'complete' ||\n (document.readyState === 'interactive' && !window.atta
chEvent)) {\n bootstrap();\n } else {\n document.addEventListener('DOMCon
tentLoaded', bootstrap);\n }\n}\n\n})();\n","/*\n * Copyright 2013 The Polymer
Authors. All rights reserved.\n * Use of this source code is governed by a BSD-s
tyle\n * license that can be found in the LICENSE file.\n */\nwindow.CustomEleme
nts = window.CustomElements || {flags:{}};"," /*\r\nCopyright 2013 The Polymer A
uthors. All rights reserved.\r\nUse of this source code is governed by a BSD-sty
le\r\nlicense that can be found in the LICENSE file.\r\n*/\r\n\r\n(function(scop
e){\r\n\r\nvar logFlags = window.logFlags || {};\r\nvar IMPORT_LINK_TYPE = windo
w.HTMLImports ? HTMLImports.IMPORT_LINK_TYPE : 'none';\r\n\r\n// walk the subtre
e rooted at node, applying 'find(element, data)' function\r\n// to each element\
r\n// if 'find' returns true for 'element', do not search element's subtree\r\nf
unction findAll(node, find, data) {\r\n var e = node.firstElementChild;\r\n if
(!e) {\r\n e = node.firstChild;\r\n while (e && e.nodeType !== Node.ELEME
NT_NODE) {\r\n e = e.nextSibling;\r\n }\r\n }\r\n while (e) {\r\n i
f (find(e, data) !== true) {\r\n findAll(e, find, data);\r\n }\r\n e
= e.nextElementSibling;\r\n }\r\n return null;\r\n}\r\n\r\n// walk all shadowR
oots on a given node.\r\nfunction forRoots(node, cb) {\r\n var root = node.shad
owRoot;\r\n while(root) {\r\n forSubtree(root, cb);\r\n root = root.older
ShadowRoot;\r\n }\r\n}\r\n\r\n// walk the subtree rooted at node, including des
cent into shadow-roots,\r\n// applying 'cb' to each element\r\nfunction forSubtr
ee(node, cb) {\r\n //logFlags.dom && node.childNodes && node.childNodes.length
&& console.group('subTree: ', node);\r\n findAll(node, function(e) {\r\n if
(cb(e)) {\r\n return true;\r\n }\r\n forRoots(e, cb);\r\n });\r\n f
orRoots(node, cb);\r\n //logFlags.dom && node.childNodes && node.childNodes.len
gth && console.groupEnd();\r\n}\r\n\r\n// manage lifecycle on added node\r\nfunc
tion added(node) {\r\n if (upgrade(node)) {\r\n insertedNode(node);\r\n r
eturn true;\r\n }\r\n inserted(node);\r\n}\r\n\r\n// manage lifecycle on added
node's subtree only\r\nfunction addedSubtree(node) {\r\n forSubtree(node, func
tion(e) {\r\n if (added(e)) {\r\n return true;\r\n }\r\n });\r\n}\r\
n\r\n// manage lifecycle on added node and it's subtree\r\nfunction addedNode(no
de) {\r\n return added(node) || addedSubtree(node);\r\n}\r\n\r\n// upgrade cust
om elements at node, if applicable\r\nfunction upgrade(node) {\r\n if (!node.__
upgraded__ && node.nodeType === Node.ELEMENT_NODE) {\r\n var type = node.getA
ttribute('is') || node.localName;\r\n var definition = scope.registry[type];\
r\n if (definition) {\r\n logFlags.dom && console.group('upgrade:', node
.localName);\r\n scope.upgrade(node);\r\n logFlags.dom && console.grou
pEnd();\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nfunction insertedNode(
node) {\r\n inserted(node);\r\n if (inDocument(node)) {\r\n forSubtree(node
, function(e) {\r\n inserted(e);\r\n });\r\n }\r\n}\r\n\r\n\r\n// TODO(
sorvell): on platforms without MutationObserver, mutations may not be\r\n// reli
able and therefore attached/detached are not reliable.\r\n// To make these callb
acks less likely to fail, we defer all inserts and removes\r\n// to give a chanc
e for elements to be inserted into dom.\r\n// This ensures attachedCallback fire
s for elements that are created and\r\n// immediately added to dom.\r\nvar hasPo
lyfillMutations = (!window.MutationObserver ||\r\n (window.MutationObserver =
== window.JsMutationObserver));\r\nscope.hasPolyfillMutations = hasPolyfillMutat
ions;\r\n\r\nvar isPendingMutations = false;\r\nvar pendingMutations = [];\r\nfu
nction deferMutation(fn) {\r\n pendingMutations.push(fn);\r\n if (!isPendingMu
tations) {\r\n isPendingMutations = true;\r\n var async = (window.Platform
&& window.Platform.endOfMicrotask) ||\r\n setTimeout;\r\n async(takeM
utations);\r\n }\r\n}\r\n\r\nfunction takeMutations() {\r\n isPendingMutations
= false;\r\n var $p = pendingMutations;\r\n for (var i=0, l=$p.length, p; (i<
l) && (p=$p[i]); i++) {\r\n p();\r\n }\r\n pendingMutations = [];\r\n}\r\n\
r\nfunction inserted(element) {\r\n if (hasPolyfillMutations) {\r\n deferMut
ation(function() {\r\n _inserted(element);\r\n });\r\n } else {\r\n
_inserted(element);\r\n }\r\n}\r\n\r\n// TODO(sjmiles): if there are descents i
nto trees that can never have inDocument(*) true, fix this\r\nfunction _inserted
(element) {\r\n // TODO(sjmiles): it's possible we were inserted and removed in
the space\r\n // of one microtask, in which case we won't be 'inDocument' here
\r\n // But there are other cases where we are testing for inserted without\r\n
// specific knowledge of mutations, and must test 'inDocument' to determine\r\
n // whether to call inserted\r\n // If we can factor these cases into separat
e code paths we can have\r\n // better diagnostics.\r\n // TODO(sjmiles): when
logging, do work on all custom elements so we can\r\n // track behavior even w
hen callbacks not defined\r\n //console.log('inserted: ', element.localName);\r
\n if (element.attachedCallback || element.detachedCallback || (element.__upgra
ded__ && logFlags.dom)) {\r\n logFlags.dom && console.group('inserted:', elem
ent.localName);\r\n if (inDocument(element)) {\r\n element.__inserted =
(element.__inserted || 0) + 1;\r\n // if we are in a 'removed' state, blunt
ly adjust to an 'inserted' state\r\n if (element.__inserted < 1) {\r\n
element.__inserted = 1;\r\n }\r\n // if we are 'over inserted', squ
elch the callback\r\n if (element.__inserted > 1) {\r\n logFlags.dom
&& console.warn('inserted:', element.localName,\r\n 'insert/remove cou
nt:', element.__inserted)\r\n } else if (element.attachedCallback) {\r\n
logFlags.dom && console.log('inserted:', element.localName);\r\n ele
ment.attachedCallback();\r\n }\r\n }\r\n logFlags.dom && console.grou
pEnd();\r\n }\r\n}\r\n\r\nfunction removedNode(node) {\r\n removed(node);\r\n
forSubtree(node, function(e) {\r\n removed(e);\r\n });\r\n}\r\n\r\nfunction
removed(element) {\r\n if (hasPolyfillMutations) {\r\n deferMutation(functi
on() {\r\n _removed(element);\r\n });\r\n } else {\r\n _removed(elem
ent);\r\n }\r\n}\r\n\r\nfunction _removed(element) {\r\n // TODO(sjmiles): tem
porary: do work on all custom elements so we can track\r\n // behavior even whe
n callbacks not defined\r\n if (element.attachedCallback || element.detachedCal
lback || (element.__upgraded__ && logFlags.dom)) {\r\n logFlags.dom && consol
e.group('removed:', element.localName);\r\n if (!inDocument(element)) {\r\n
element.__inserted = (element.__inserted || 0) - 1;\r\n // if we are in
a 'inserted' state, bluntly adjust to an 'removed' state\r\n if (element._
_inserted > 0) {\r\n element.__inserted = 0;\r\n }\r\n // if we
are 'over removed', squelch the callback\r\n if (element.__inserted < 0) {
\r\n logFlags.dom && console.warn('removed:', element.localName,\r\n
'insert/remove count:', element.__inserted)\r\n } else if (element.d
etachedCallback) {\r\n element.detachedCallback();\r\n }\r\n }\r\
n logFlags.dom && console.groupEnd();\r\n }\r\n}\r\n\r\n// SD polyfill intru
stion due mainly to the fact that 'document'\r\n// is not entirely wrapped\r\nfu
nction wrapIfNeeded(node) {\r\n return window.ShadowDOMPolyfill ? ShadowDOMPoly
fill.wrapIfNeeded(node)\r\n : node;\r\n}\r\n\r\nfunction inDocument(element
) {\r\n var p = element;\r\n var doc = wrapIfNeeded(document);\r\n while (p)
{\r\n if (p == doc) {\r\n return true;\r\n }\r\n p = p.parentNode
|| p.host;\r\n }\r\n}\r\n\r\nfunction watchShadow(node) {\r\n if (node.shadowR
oot && !node.shadowRoot.__watched) {\r\n logFlags.dom && console.log('watchin
g shadow-root for: ', node.localName);\r\n // watch all unwatched roots...\r\
n var root = node.shadowRoot;\r\n while (root) {\r\n watchRoot(root);
\r\n root = root.olderShadowRoot;\r\n }\r\n }\r\n}\r\n\r\nfunction watc
hRoot(root) {\r\n if (!root.__watched) {\r\n observe(root);\r\n root.__wa
tched = true;\r\n }\r\n}\r\n\r\nfunction handler(mutations) {\r\n //\r\n if (
logFlags.dom) {\r\n var mx = mutations[0];\r\n if (mx && mx.type === 'chil
dList' && mx.addedNodes) {\r\n if (mx.addedNodes) {\r\n var d =
mx.addedNodes[0];\r\n while (d && d !== document && !d.host) {\r\n
d = d.parentNode;\r\n }\r\n var u = d && (d.URL || d._U
RL || (d.host && d.host.localName)) || '';\r\n u = u.split('/?').shift(
).split('/').pop();\r\n }\r\n }\r\n console.group('mutations (%d) [
%s]', mutations.length, u || '');\r\n }\r\n //\r\n mutations.forEach(function
(mx) {\r\n //logFlags.dom && console.group('mutation');\r\n if (mx.type ==
= 'childList') {\r\n forEach(mx.addedNodes, function(n) {\r\n //logF
lags.dom && console.log(n.localName);\r\n if (!n.localName) {\r\n
return;\r\n }\r\n // nodes added may need lifecycle management\r
\n addedNode(n);\r\n });\r\n // removed nodes may need lifecycl
e management\r\n forEach(mx.removedNodes, function(n) {\r\n //logFla
gs.dom && console.log(n.localName);\r\n if (!n.localName) {\r\n
return;\r\n }\r\n removedNode(n);\r\n });\r\n }\r\n //l
ogFlags.dom && console.groupEnd();\r\n });\r\n logFlags.dom && console.groupEn
d();\r\n};\r\n\r\nvar observer = new MutationObserver(handler);\r\n\r\nfunction
takeRecords() {\r\n // TODO(sjmiles): ask Raf why we have to call handler ourse
lves\r\n handler(observer.takeRecords());\r\n takeMutations();\r\n}\r\n\r\nvar
forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\r\n\r\nfu
nction observe(inRoot) {\r\n observer.observe(inRoot, {childList: true, subtree
: true});\r\n}\r\n\r\nfunction observeDocument(doc) {\r\n observe(doc);\r\n}\r\
n\r\nfunction upgradeDocument(doc) {\r\n logFlags.dom && console.group('upgrade
Document: ', (doc.baseURI).split('/').pop());\r\n addedNode(doc);\r\n logFlags
.dom && console.groupEnd();\r\n}\r\n\r\nfunction upgradeDocumentTree(doc) {\r\n
doc = wrapIfNeeded(doc);\r\n upgradeDocument(doc);\r\n //console.log('upgrade
DocumentTree: ', (doc.baseURI).split('/').pop());\r\n // upgrade contained impo
rted documents\r\n var imports = doc.querySelectorAll('link[rel=' + IMPORT_LINK
_TYPE + ']');\r\n for (var i=0, l=imports.length, n; (i<l) && (n=imports[i]); i
++) {\r\n if (n.import && n.import.__parsed) {\r\n upgradeDocumentTree(n
.import);\r\n }\r\n }\r\n}\r\n\r\n// exports\r\nscope.IMPORT_LINK_TYPE = IMP
ORT_LINK_TYPE;\r\nscope.watchShadow = watchShadow;\r\nscope.upgradeDocumentTree
= upgradeDocumentTree;\r\nscope.upgradeAll = addedNode;\r\nscope.upgradeSubtree
= addedSubtree;\r\n\r\nscope.observeDocument = observeDocument;\r\nscope.upgrade
Document = upgradeDocument;\r\n\r\nscope.takeRecords = takeRecords;\r\n\r\n})(wi
ndow.CustomElements);\r\n","/*\n * Copyright 2013 The Polymer Authors. All right
s reserved.\n * Use of this source code is governed by a BSD-style\n * license t
hat can be found in the LICENSE file.\n */\n\n/**\n * Implements `document.regis
ter`\n * @module CustomElements\n*/\n\n/**\n * Polyfilled extensions to the `doc
ument` object.\n * @class Document\n*/\n\n(function(scope) {\n\n// imports\n\nif
(!scope) {\n scope = window.CustomElements = {flags:{}};\n}\nvar flags = scope
.flags;\n\n// native document.registerElement?\n\nvar hasNative = Boolean(docume
nt.registerElement);\n// TODO(sorvell): See https://github.com/Polymer/polymer/i
ssues/399\n// we'll address this by defaulting to CE polyfill in the presence of
the SD\n// polyfill. This will avoid spamming excess attached/detached callback
s.\n// If there is a compelling need to run CE native with SD polyfill,\n// we'l
l need to fix this issue.\nvar useNative = !flags.register && hasNative && !wind
ow.ShadowDOMPolyfill;\n\nif (useNative) {\n\n // stub\n var nop = function() {
};\n\n // exports\n scope.registry = {};\n scope.upgradeElement = nop;\n\n s
cope.watchShadow = nop;\n scope.upgrade = nop;\n scope.upgradeAll = nop;\n sc
ope.upgradeSubtree = nop;\n scope.observeDocument = nop;\n scope.upgradeDocume
nt = nop;\n scope.upgradeDocumentTree = nop;\n scope.takeRecords = nop;\n\n} e
lse {\n\n /**\n * Registers a custom tag name with the document.\n *\n *
When a registered element is created, a `readyCallback` method is called\n * i
n the scope of the element. The `readyCallback` method can be specified on\n *
either `options.prototype` or `options.lifecycle` with the latter taking\n *
precedence.\n *\n * @method register\n * @param {String} name The tag name
to register. Must include a dash ('-'),\n * for example 'x-component'.\n
* @param {Object} options\n * @param {String} [options.extends]\n *
(_off spec_) Tag name of an element to extend (or blank for a new\n * el
ement). This parameter is not part of the specification, but instead\n *
is a hint for the polyfill because the extendee is difficult to infer.\n *
Remember that the input prototype must chain to the extended element's\n *
prototype (or HTMLElement.prototype) regardless of the value of\n * `
extends`.\n * @param {Object} options.prototype The prototype to use for th
e new\n * element. The prototype must inherit from HTMLElement.\n *
@param {Object} [options.lifecycle]\n * Callbacks that fire at important
phases in the life of the custom\n * element.\n *\n * @example\n *
FancyButton = document.registerElement(\"fancy-button\", {\n * ext
ends: 'button',\n * prototype: Object.create(HTMLButtonElement.prototyp
e, {\n * readyCallback: {\n * value: function() {\n *
console.log(\"a fancy-button was created\",\n * }\n
* }\n * })\n * });\n * @return {Function} Constructor
for the newly registered type.\n */\n function register(name, options) {\n
//console.warn('document.registerElement(\"' + name + '\", ', options, ')');\n
// construct a defintion out of options\n // TODO(sjmiles): probably shou
ld clone options instead of mutating it\n var definition = options || {};\n
if (!name) {\n // TODO(sjmiles): replace with more appropriate error (Eri
cB can probably\n // offer guidance)\n throw new Error('document.regis
terElement: first argument `name` must not be empty');\n }\n if (name.inde
xOf('-') < 0) {\n // TODO(sjmiles): replace with more appropriate error (Er
icB can probably\n // offer guidance)\n throw new Error('document.regi
sterElement: first argument (\\'name\\') must contain a dash (\\'-\\'). Argument
provided was \\'' + String(name) + '\\'.');\n }\n // elements may only be
registered once\n if (getRegisteredDefinition(name)) {\n throw new Erro
r('DuplicateDefinitionError: a type with name \\'' + String(name) + '\\' is alre
ady registered');\n }\n // must have a prototype, default to an extension
of HTMLElement\n // TODO(sjmiles): probably should throw if no prototype, che
ck spec\n if (!definition.prototype) {\n // TODO(sjmiles): replace with
more appropriate error (EricB can probably\n // offer guidance)\n thro
w new Error('Options missing required prototype property');\n }\n // recor
d name\n definition.__name = name.toLowerCase();\n // ensure a lifecycle o
bject so we don't have to null test it\n definition.lifecycle = definition.li
fecycle || {};\n // build a list of ancestral custom elements (for native bas
e detection)\n // TODO(sjmiles): we used to need to store this, but current c
ode only\n // uses it in 'resolveTagName': it should probably be inlined\n
definition.ancestry = ancestry(definition.extends);\n // extensions of nativ
e specializations of HTMLElement require localName\n // to remain native, and
use secondary 'is' specifier for extension type\n resolveTagName(definition)
;\n // some platforms require modifications to the user-supplied prototype\n
// chain\n resolvePrototypeChain(definition);\n // overrides to impleme
nt attributeChanged callback\n overrideAttributeApi(definition.prototype);\n
// 7.1.5: Register the DEFINITION with DOCUMENT\n registerDefinition(defin
ition.__name, definition);\n // 7.1.7. Run custom element constructor generat
ion algorithm with PROTOTYPE\n // 7.1.8. Return the output of the previous st
ep.\n definition.ctor = generateConstructor(definition);\n definition.ctor
.prototype = definition.prototype;\n // force our .constructor to be our actu
al constructor\n definition.prototype.constructor = definition.ctor;\n //
if initial parsing is complete\n if (scope.ready) {\n // upgrade any pre
-existing nodes of this type\n scope.upgradeDocumentTree(document);\n }\
n return definition.ctor;\n }\n\n function ancestry(extnds) {\n var exte
ndee = getRegisteredDefinition(extnds);\n if (extendee) {\n return ances
try(extendee.extends).concat([extendee]);\n }\n return [];\n }\n\n funct
ion resolveTagName(definition) {\n // if we are explicitly extending somethin
g, that thing is our\n // baseTag, unless it represents a custom component\n
var baseTag = definition.extends;\n // if our ancestry includes custom com
ponents, we only have a\n // baseTag if one of them does\n for (var i=0, a
; (a=definition.ancestry[i]); i++) {\n baseTag = a.is && a.tag;\n }\n
// our tag is our baseTag, if it exists, and otherwise just our name\n defin
ition.tag = baseTag || definition.__name;\n if (baseTag) {\n // if there
is a base tag, use secondary 'is' specifier\n definition.is = definition._
_name;\n }\n }\n\n function resolvePrototypeChain(definition) {\n // if
we don't support __proto__ we need to locate the native level\n // prototype
for precise mixing in\n if (!Object.__proto__) {\n // default prototype\
n var nativePrototype = HTMLElement.prototype;\n // work out prototype
when using type-extension\n if (definition.is) {\n var inst = docum
ent.createElement(definition.tag);\n nativePrototype = Object.getPrototyp
eOf(inst);\n }\n // ensure __proto__ reference is installed at each po
int on the prototype\n // chain.\n // NOTE: On platforms without __pro
to__, a mixin strategy is used instead\n // of prototype swizzling. In this
case, this generated __proto__ provides\n // limited support for prototype
traversal.\n var proto = definition.prototype, ancestor;\n while (pro
to && (proto !== nativePrototype)) {\n var ancestor = Object.getPrototype
Of(proto);\n proto.__proto__ = ancestor;\n proto = ancestor;\n
}\n }\n // cache this in case of mixin\n definition.native = nativePr
ototype;\n }\n\n // SECTION 4\n\n function instantiate(definition) {\n //
4.a.1. Create a new object that implements PROTOTYPE\n // 4.a.2. Let ELEMENT
by this new object\n //\n // the custom element instantiation algorithm mu
st also ensure that the\n // output is a valid DOM element with the proper wr
apper in place.\n //\n return upgrade(domCreateElement(definition.tag), de
finition);\n }\n\n function upgrade(element, definition) {\n // some defini
tions specify an 'is' attribute\n if (definition.is) {\n element.setAttr
ibute('is', definition.is);\n }\n // remove 'unresolved' attr, which is a
standin for :unresolved.\n element.removeAttribute('unresolved');\n // mak
e 'element' implement definition.prototype\n implement(element, definition);\
n // flag as upgraded\n element.__upgraded__ = true;\n // lifecycle man
agement\n created(element);\n // there should never be a shadow root on el
ement at this point\n // we require child nodes be upgraded before `created`\
n scope.upgradeSubtree(element);\n // OUTPUT\n return element;\n }\n\n
function implement(element, definition) {\n // prototype swizzling is best\
n if (Object.__proto__) {\n element.__proto__ = definition.prototype;\n
} else {\n // where above we can re-acquire inPrototype via\n // ge
tPrototypeOf(Element), we cannot do so when\n // we use mixin, so we instal
l a magic reference\n customMixin(element, definition.prototype, definition
.native);\n element.__proto__ = definition.prototype;\n }\n }\n\n func
tion customMixin(inTarget, inSrc, inNative) {\n // TODO(sjmiles): 'used' allo
ws us to only copy the 'youngest' version of\n // any property. This set shou
ld be precalculated. We also need to\n // consider this for supporting 'super
'.\n var used = {};\n // start with inSrc\n var p = inSrc;\n // some
times the default is HTMLUnknownElement.prototype instead of\n // HTMLElement
.prototype, so we add a test\n // the idea is to avoid mixing in native proto
types, so adding\n // the second test is WLOG\n while (p !== inNative && p
!== HTMLUnknownElement.prototype) {\n var keys = Object.getOwnPropertyName
s(p);\n for (var i=0, k; k=keys[i]; i++) {\n if (!used[k]) {\n
Object.defineProperty(inTarget, k,\n Object.getOwnPropertyDescr
iptor(p, k));\n used[k] = 1;\n }\n }\n p = Object.getP
rototypeOf(p);\n }\n }\n\n function created(element) {\n // invoke creat
edCallback\n if (element.createdCallback) {\n element.createdCallback();
\n }\n }\n\n // attribute watching\n\n function overrideAttributeApi(proto
type) {\n // overrides to implement callbacks\n // TODO(sjmiles): should s
upport access via .attributes NamedNodeMap\n // TODO(sjmiles): preserves user
defined overrides, if any\n if (prototype.setAttribute._polyfilled) {\n
return;\n }\n var setAttribute = prototype.setAttribute;\n prototype.s
etAttribute = function(name, value) {\n changeAttribute.call(this, name, va
lue, setAttribute);\n }\n var removeAttribute = prototype.removeAttribute;
\n prototype.removeAttribute = function(name) {\n changeAttribute.call(t
his, name, null, removeAttribute);\n }\n prototype.setAttribute._polyfille
d = true;\n }\n\n // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/cu
stom/\n // index.html#dfn-attribute-changed-callback\n function changeAttribut
e(name, value, operation) {\n var oldValue = this.getAttribute(name);\n op
eration.apply(this, arguments);\n var newValue = this.getAttribute(name);\n
if (this.attributeChangedCallback\n && (newValue !== oldValue)) {\n
this.attributeChangedCallback(name, oldValue, newValue);\n }\n }\n\n // e
lement registry (maps tag names to definitions)\n\n var registry = {};\n\n fun
ction getRegisteredDefinition(name) {\n if (name) {\n return registry[na
me.toLowerCase()];\n }\n }\n\n function registerDefinition(name, definition
) {\n if (registry[name]) {\n throw new Error('a type with that name is
already registered.');\n }\n registry[name] = definition;\n }\n\n functi
on generateConstructor(definition) {\n return function() {\n return inst
antiate(definition);\n };\n }\n\n function createElement(tag, typeExtension
) {\n // TODO(sjmiles): ignore 'tag' when using 'typeExtension', we could\n
// error check it, or perhaps there should only ever be one argument\n var
definition = getRegisteredDefinition(typeExtension || tag);\n if (definition)
{\n if (tag == definition.tag && typeExtension == definition.is) {\n
return new definition.ctor();\n }\n // Handle empty string for type
extension.\n if (!typeExtension && !definition.is) {\n return new de
finition.ctor();\n }\n }\n\n if (typeExtension) {\n var element
= createElement(tag);\n element.setAttribute('is', typeExtension);\n r
eturn element;\n }\n var element = domCreateElement(tag);\n // Custom t
ags should be HTMLElements even if not upgraded.\n if (tag.indexOf('-') >= 0)
{\n implement(element, HTMLElement);\n }\n return element;\n }\n\n
function upgradeElement(element) {\n if (!element.__upgraded__ && (element.n
odeType === Node.ELEMENT_NODE)) {\n var is = element.getAttribute('is');\n
var definition = getRegisteredDefinition(is || element.localName);\n i
f (definition) {\n if (is && definition.tag == element.localName) {\n
return upgrade(element, definition);\n } else if (!is && !definitio
n.extends) {\n return upgrade(element, definition);\n }\n }
\n }\n }\n\n function cloneNode(deep) {\n // call original clone\n va
r n = domCloneNode.call(this, deep);\n // upgrade the element and subtree\n
scope.upgradeAll(n);\n // return the clone\n return n;\n }\n // captur
e native createElement before we override it\n\n var domCreateElement = documen
t.createElement.bind(document);\n\n // capture native cloneNode before we overr
ide it\n\n var domCloneNode = Node.prototype.cloneNode;\n\n // exports\n\n do
cument.registerElement = register;\n document.createElement = createElement; //
override\n Node.prototype.cloneNode = cloneNode; // override\n\n scope.regist
ry = registry;\n\n /**\n * Upgrade an element to a custom element. Upgrading
an element\n * causes the custom prototype to be applied, an `is` attribute\n
* to be attached (as needed), and invocation of the `readyCallback`.\n * `up
grade` does nothing if the element is already upgraded, or\n * if it matches n
o registered custom tag name.\n *\n * @method ugprade\n * @param {Element}
element The element to upgrade.\n * @return {Element} The upgraded element.\n
*/\n scope.upgrade = upgradeElement;\n}\n\n// bc\ndocument.register = docume
nt.registerElement;\n\nscope.hasNative = hasNative;\nscope.useNative = useNative
;\n\n})(window.CustomElements);\n","/*\n * Copyright 2013 The Polymer Authors. A
ll rights reserved.\n * Use of this source code is governed by a BSD-style\n * l
icense that can be found in the LICENSE file.\n */\n\n(function(scope) {\n\n// i
mport\n\nvar IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;\n\n// highlander object
for parsing a document tree\n\nvar parser = {\n selectors: [\n 'link[rel=' +
IMPORT_LINK_TYPE + ']'\n ],\n map: {\n link: 'parseLink'\n },\n parse: f
unction(inDocument) {\n if (!inDocument.__parsed) {\n // only parse once
\n inDocument.__parsed = true;\n // all parsable elements in inDocumen
t (depth-first pre-order traversal)\n var elts = inDocument.querySelectorAl
l(parser.selectors);\n // for each parsable node type, call the mapped pars
ing method\n forEach(elts, function(e) {\n parser[parser.map[e.local
Name]](e);\n });\n // upgrade all upgradeable static elements, anythin
g dynamically\n // created should be caught by observer\n CustomElemen
ts.upgradeDocument(inDocument);\n // observe document for dom changes\n
CustomElements.observeDocument(inDocument);\n }\n },\n parseLink: functio
n(linkElt) {\n // imports\n if (isDocumentLink(linkElt)) {\n this.par
seImport(linkElt);\n }\n },\n parseImport: function(linkElt) {\n if (lin
kElt.import) {\n parser.parse(linkElt.import);\n }\n }\n};\n\nfunction
isDocumentLink(inElt) {\n return (inElt.localName === 'link'\n && inElt.ge
tAttribute('rel') === IMPORT_LINK_TYPE);\n}\n\nvar forEach = Array.prototype.for
Each.call.bind(Array.prototype.forEach);\n\n// exports\n\nscope.parser = parser;
\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\n\n})(window.CustomElements);","/*\
n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sou
rce code is governed by a BSD-style\n * license that can be found in the LICENSE
file.\n */\n(function(scope){\n\n// bootstrap parsing\nfunction bootstrap() {\n
// parse document\n CustomElements.parser.parse(document);\n // one more pas
s before register is 'live'\n CustomElements.upgradeDocument(document);\n // c
hoose async\n var async = window.Platform && Platform.endOfMicrotask ? \n Pl
atform.endOfMicrotask :\n setTimeout;\n async(function() {\n // set inter
nal 'ready' flag, now document.registerElement will trigger \n // synchronous
upgrades\n CustomElements.ready = true;\n // capture blunt profiling data
\n CustomElements.readyTime = Date.now();\n if (window.HTMLImports) {\n
CustomElements.elapsed = CustomElements.readyTime - HTMLImports.readyTime;\n
}\n // notify the system that we are bootstrapped\n document.dispatchEv
ent(\n new CustomEvent('WebComponentsReady', {bubbles: true})\n );\n\n
// install upgrade hook if HTMLImports are available\n if (window.HTMLImpor
ts) {\n HTMLImports.__importsParsingHook = function(elt) {\n CustomE
lements.parser.parse(elt.import);\n }\n }\n });\n}\n\n// CustomEvent sh
im for IE\nif (typeof window.CustomEvent !== 'function') {\n window.CustomEvent
= function(inType) {\n var e = document.createEvent('HTMLEvents');\n e.in
itEvent(inType, true, true);\n return e;\n };\n}\n\n// When loading at ready
State complete time (or via flag), boot custom elements\n// immediately.\n// If
relevant, HTMLImports must already be loaded.\nif (document.readyState === 'comp
lete' || scope.flags.eager) {\n bootstrap();\n// When loading at readyState int
eractive time, bootstrap only if HTMLImports\n// are not pending. Also avoid IE
as the semantics of this state are unreliable.\n} else if (document.readyState =
== 'interactive' && !window.attachEvent &&\n (!window.HTMLImports || window.H
TMLImports.ready)) {\n bootstrap();\n// When loading at other readyStates, wait
for the appropriate DOM event to \n// bootstrap.\n} else {\n var loadEvent = w
indow.HTMLImports && !HTMLImports.ready ?\n 'HTMLImportsLoaded' : 'DOMConte
ntLoaded';\n window.addEventListener(loadEvent, bootstrap);\n}\n\n})(window.Cus
tomElements);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved
.\n * Use of this source code is governed by a BSD-style\n * license that can be
found in the LICENSE file.\n */\n(function() {\n\n// inject style sheet\nvar st
yle = document.createElement('style');\nstyle.textContent = 'element {display: n
one !important;} /* injected by platform.js */';\nvar head = document.querySelec
tor('head');\nhead.insertBefore(style, head.firstChild);\n\nif (window.ShadowDOM
Polyfill) {\n\n // ensure wrapped inputs for these functions\n var fns = ['upg
radeAll', 'upgradeSubtree', 'observeDocument',\n 'upgradeDocument'];\n\n /
/ cache originals\n var original = {};\n fns.forEach(function(fn) {\n origi
nal[fn] = CustomElements[fn];\n });\n\n // override\n fns.forEach(function(fn
) {\n CustomElements[fn] = function(inNode) {\n return original[fn](wrap
(inNode));\n };\n });\n\n}\n\n})();\n","/*\n * Copyright 2014 The Polymer Au
thors. All rights reserved.\n * Use of this source code is governed by a BSD-sty
le\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n
\nvar STYLE_SELECTOR = 'style';\n\nvar urlResolver = scope.urlResolver;\n\nvar l
oader = {\n cacheStyles: function(styles, callback) {\n var css = [];\n f
or (var i=0, l=styles.length, s; (i<l) && (s=styles[i]); i++) {\n css.push(
s.textContent);\n }\n cacheCssText(css.join('\\n'), callback);\n },\n xh
rStyles: function(styles, callback) {\n var loaded=0, l = styles.length;\n
// called in the context of the style\n function loadedStyle(style) {\n
//console.log(style.textContent);\n loaded++;\n if (loaded === l && c
allback) {\n callback();\n }\n }\n for (var i=0, s; (i<l) && (
s=styles[i]); i++) {\n xhrLoadStyle(s, loadedStyle);\n }\n }\n};\n\n//
use the platform to preload styles\nvar preloadElement = document.createElement(
'preloader');\npreloadElement.style.display = 'none';\nvar preloadRoot = preload
Element.createShadowRoot();\ndocument.head.appendChild(preloadElement);\n\nfunct
ion cacheCssText(cssText, callback) {\n var style = createStyleElement(cssText)
;\n if (callback) {\n style.addEventListener('load', callback);\n style.a
ddEventListener('error', callback);\n }\n preloadRoot.appendChild(style);\n}\n
\nfunction createStyleElement(cssText, scope) {\n scope = scope || document;\n
scope = scope.createElement ? scope : scope.ownerDocument;\n var style = scope
.createElement('style');\n style.textContent = cssText;\n return style;\n}\n\n
// TODO(sorvell): use a common loader shared with HTMLImports polyfill\n// curre
ntly, this just loads the first @import per style element \n// and does not recu
rse into loaded elements; we'll address this with a \n// generalized loader that
's built out of the one in the HTMLImports polyfill.\n// polyfill the loading of
a style element's @import via xhr\nfunction xhrLoadStyle(style, callback) {\n
HTMLImports.xhr.load(atImportUrlFromStyle(style), function (err, resource,\n
url) {\n replaceAtImportWithCssText(this, url, resource);\n this.textCon
tent = urlResolver.resolveCssText(this.textContent, url);\n callback && callb
ack(this);\n }, style);\n}\n\nvar atImportRe = /@import\\s[(]?['\"]?([^\\s'\";)
]*)/;\n\n// get the first @import rule from a style\nfunction atImportUrlFromSty
le(style) {\n var matches = style.textContent.match(atImportRe);\n return matc
hes && matches[1];\n}\n\nfunction replaceAtImportWithCssText(style, url, cssText
) {\n var re = new RegExp('@import[^;]*' + url + '[^;]*;', 'i');\n style.textC
ontent = style.textContent.replace(re, cssText);\n}\n\n// exports\nscope.loader
= loader;\n\n})(window.Platform);\n","/*\n * Copyright 2013 The Polymer Authors.
All rights reserved.\n * Use of this source code is governed by a BSD-style\n *
license that can be found in the LICENSE file.\n */\n\n(function(scope) {\n sc
ope = scope || {};\n scope.external = scope.external || {};\n var target = {\n
shadow: function(inEl) {\n if (inEl) {\n return inEl.shadowRoot
|| inEl.webkitShadowRoot;\n }\n },\n canTarget: function(shadow) {\n
return shadow && Boolean(shadow.elementFromPoint);\n },\n targetingSh
adow: function(inEl) {\n var s = this.shadow(inEl);\n if (this.canTarg
et(s)) {\n return s;\n }\n },\n olderShadow: function(shadow)
{\n var os = shadow.olderShadowRoot;\n if (!os) {\n var se = sh
adow.querySelector('shadow');\n if (se) {\n os = se.olderShadowR
oot;\n }\n }\n return os;\n },\n allShadows: function(ele
ment) {\n var shadows = [], s = this.shadow(element);\n while(s) {\n
shadows.push(s);\n s = this.olderShadow(s);\n }\n return
shadows;\n },\n searchRoot: function(inRoot, x, y) {\n if (inRoot) {\
n var t = inRoot.elementFromPoint(x, y);\n var st, sr, os;\n
// is element a shadow host?\n sr = this.targetingShadow(t);\n w
hile (sr) {\n // find the the element inside the shadow root\n
st = sr.elementFromPoint(x, y);\n if (!st) {\n // check for
older shadows\n sr = this.olderShadow(sr);\n } else {\n
// shadowed element may contain a shadow root\n var ssr = thi
s.targetingShadow(st);\n return this.searchRoot(ssr, x, y) || st;\n
}\n }\n // light dom element is the target\n return
t;\n }\n },\n owner: function(element) {\n var s = element;\n
// walk up until you hit the shadow root or document\n while (s.parentN
ode) {\n s = s.parentNode;\n }\n // the owner element is expect
ed to be a Document or ShadowRoot\n if (s.nodeType != Node.DOCUMENT_NODE &&
s.nodeType != Node.DOCUMENT_FRAGMENT_NODE) {\n s = document;\n }\n
return s;\n },\n findTarget: function(inEvent) {\n var x = inEve
nt.clientX, y = inEvent.clientY;\n // if the listener is in the shadow root
, it is much faster to start there\n var s = this.owner(inEvent.target);\n
// if x, y is not in this root, fall back to document search\n if (!s.
elementFromPoint(x, y)) {\n s = document;\n }\n return this.sea
rchRoot(s, x, y);\n }\n };\n scope.targetFinding = target;\n scope.findTar
get = target.findTarget.bind(target);\n\n window.PointerEventsPolyfill = scope;
\n})(window.PointerEventsPolyfill);\n","/*\n * Copyright 2013 The Polymer Author
s. All rights reserved.\n * Use of this source code is governed by a BSD-style\n
* license that can be found in the LICENSE file.\n */\n(function() {\n functio
n shadowSelector(v) {\n return 'body ^^ ' + selector(v);\n }\n function sel
ector(v) {\n return '[touch-action=\"' + v + '\"]';\n }\n function rule(v)
{\n return '{ -ms-touch-action: ' + v + '; touch-action: ' + v + '; touch-act
ion-delay: none; }';\n }\n var attrib2css = [\n 'none',\n 'auto',\n '
pan-x',\n 'pan-y',\n {\n rule: 'pan-x pan-y',\n selectors: [\n
'pan-x pan-y',\n 'pan-y pan-x'\n ]\n }\n ];\n var styles
= '';\n attrib2css.forEach(function(r) {\n if (String(r) === r) {\n sty
les += selector(r) + rule(r) + '\\n';\n styles += shadowSelector(r) + rule(
r) + '\\n';\n } else {\n styles += r.selectors.map(selector) + rule(r.ru
le) + '\\n';\n styles += r.selectors.map(shadowSelector) + rule(r.rule) + '
\\n';\n }\n });\n var el = document.createElement('style');\n el.textConte
nt = styles;\n document.head.appendChild(el);\n})();\n","/*\n * Copyright 2013
The Polymer Authors. All rights reserved.\n * Use of this source code is governe
d by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\
n * This is the constructor for new PointerEvents.\n *\n * New Pointer Events mu
st be given a type, and an optional dictionary of\n * initialization properties.
\n *\n * Due to certain platform requirements, events returned from the construc
tor\n * identify as MouseEvents.\n *\n * @constructor\n * @param {String} inType
The type of the event to create.\n * @param {Object} [inDict] An optional dicti
onary of initial event properties.\n * @return {Event} A new PointerEvent of typ
e `inType` and initialized with properties from `inDict`.\n */\n(function(scope)
{\n // test for DOM Level 4 Events\n var NEW_MOUSE_EVENT = false;\n var HAS_
BUTTONS = false;\n try {\n var ev = new MouseEvent('click', {buttons: 1});\n
NEW_MOUSE_EVENT = true;\n HAS_BUTTONS = ev.buttons === 1;\n } catch(e) {
\n }\n\n var MOUSE_PROPS = [\n 'bubbles',\n 'cancelable',\n 'view',\n
'detail',\n 'screenX',\n 'screenY',\n 'clientX',\n 'clientY',\n
'ctrlKey',\n 'altKey',\n 'shiftKey',\n 'metaKey',\n 'button',\n
'relatedTarget',\n ];\n\n var MOUSE_DEFAULTS = [\n false,\n false,\n
null,\n null,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n
false,\n false,\n 0,\n null\n ];\n\n function PointerEvent(inType, in
Dict) {\n inDict = inDict || {};\n // According to the w3c spec,\n // h
ttp://www.w3.org/TR/DOM-Level-3-Events/#events-MouseEvent-button\n // MouseEv
ent.button == 0 can mean either no mouse button depressed, or the\n // left m
ouse button depressed.\n //\n // As of now, the only way to distinguish be
tween the two states of\n // MouseEvent.button is by using the deprecated Mou
seEvent.which property, as\n // this maps mouse buttons to positive integers
> 0, and uses 0 to mean that\n // no mouse button is held.\n //\n // Mo
useEvent.which is derived from MouseEvent.button at MouseEvent creation,\n //
but initMouseEvent does not expose an argument with which to set\n // MouseE
vent.which. Calling initMouseEvent with a buttonArg of 0 will set\n // MouseE
vent.button == 0 and MouseEvent.which == 1, breaking the expectations\n // of
app developers.\n //\n // The only way to propagate the correct state of
MouseEvent.which and\n // MouseEvent.button to a new MouseEvent.button == 0 a
nd MouseEvent.which == 0\n // is to call initMouseEvent with a buttonArg valu
e of -1.\n //\n // This is fixed with DOM Level 4's use of buttons\n va
r buttons;\n if (inDict.buttons || HAS_BUTTONS) {\n buttons = inDict.but
tons;\n } else {\n switch (inDict.which) {\n case 1: buttons = 1;
break;\n case 2: buttons = 4; break;\n case 3: buttons = 2; break
;\n default: buttons = 0;\n }\n }\n\n var e;\n if (NEW_MOUS
E_EVENT) {\n e = new MouseEvent(inType, inDict);\n } else {\n e = d
ocument.createEvent('MouseEvent');\n\n // import values from the given dict
ionary\n var props = {}, p;\n for(var i = 0; i < MOUSE_PROPS.length; i
++) {\n p = MOUSE_PROPS[i];\n props[p] = inDict[p] || MOUSE_DEFAUL
TS[i];\n }\n\n // define the properties inherited from MouseEvent\n
e.initMouseEvent(\n inType, props.bubbles, props.cancelable, props.vie
w, props.detail,\n props.screenX, props.screenY, props.clientX, props.cli
entY, props.ctrlKey,\n props.altKey, props.shiftKey, props.metaKey, props
.button, props.relatedTarget\n );\n }\n\n // make the event pass inst
anceof checks\n e.__proto__ = PointerEvent.prototype;\n\n // define the bu
ttons property according to DOM Level 3 spec\n if (!HAS_BUTTONS) {\n //
IE 10 has buttons on MouseEvent.prototype as a getter w/o any setting\n //
mechanism\n Object.defineProperty(e, 'buttons', {get: function(){ return bu
ttons; }, enumerable: true});\n }\n\n // Spec requires that pointers witho
ut pressure specified use 0.5 for down\n // state and 0 for up state.\n va
r pressure = 0;\n if (inDict.pressure) {\n pressure = inDict.pressure;\n
} else {\n pressure = buttons ? 0.5 : 0;\n }\n\n // define the pr
operties of the PointerEvent interface\n Object.defineProperties(e, {\n
pointerId: { value: inDict.pointerId || 0, enumerable: true },\n width: { v
alue: inDict.width || 0, enumerable: true },\n height: { value: inDict.heig
ht || 0, enumerable: true },\n pressure: { value: pressure, enumerable: tru
e },\n tiltX: { value: inDict.tiltX || 0, enumerable: true },\n tiltY:
{ value: inDict.tiltY || 0, enumerable: true },\n pointerType: { value: in
Dict.pointerType || '', enumerable: true },\n hwTimestamp: { value: inDict.
hwTimestamp || 0, enumerable: true },\n isPrimary: { value: inDict.isPrimar
y || false, enumerable: true }\n });\n return e;\n }\n\n // PointerEvent
extends MouseEvent\n PointerEvent.prototype = Object.create(MouseEvent.prototy
pe);\n\n // attach to window\n if (!scope.PointerEvent) {\n scope.PointerEv
ent = PointerEvent;\n }\n})(window);\n","/*\n * Copyright 2013 The Polymer Auth
ors. All rights reserved.\n * Use of this source code is governed by a BSD-style
\n * license that can be found in the LICENSE file.\n */\n\n/**\n * This module
implements an map of pointer states\n */\n(function(scope) {\n var USE_MAP = wi
ndow.Map && window.Map.prototype.forEach;\n var POINTERS_FN = function(){ retur
n this.size; };\n function PointerMap() {\n if (USE_MAP) {\n var m = ne
w Map();\n m.pointers = POINTERS_FN;\n return m;\n } else {\n
this.keys = [];\n this.values = [];\n }\n }\n\n PointerMap.prototype =
{\n set: function(inId, inEvent) {\n var i = this.keys.indexOf(inId);\n
if (i > -1) {\n this.values[i] = inEvent;\n } else {\n
this.keys.push(inId);\n this.values.push(inEvent);\n }\n },\n
has: function(inId) {\n return this.keys.indexOf(inId) > -1;\n },\n '
delete': function(inId) {\n var i = this.keys.indexOf(inId);\n if (i >
-1) {\n this.keys.splice(i, 1);\n this.values.splice(i, 1);\n
}\n },\n get: function(inId) {\n var i = this.keys.indexOf(inId);\n
return this.values[i];\n },\n clear: function() {\n this.keys.l
ength = 0;\n this.values.length = 0;\n },\n // return value, key, map
\n forEach: function(callback, thisArg) {\n this.values.forEach(function
(v, i) {\n callback.call(thisArg, v, this.keys[i], this);\n }, this)
;\n },\n pointers: function() {\n return this.keys.length;\n }\n
};\n\n scope.PointerMap = PointerMap;\n})(window.PointerEventsPolyfill);\n","/*
\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this so
urce code is governed by a BSD-style\n * license that can be found in the LICENS
E file.\n */\n\n(function(scope) {\n var CLONE_PROPS = [\n // MouseEvent\n
'bubbles',\n 'cancelable',\n 'view',\n 'detail',\n 'screenX',\n
'screenY',\n 'clientX',\n 'clientY',\n 'ctrlKey',\n 'altKey',\n
'shiftKey',\n 'metaKey',\n 'button',\n 'relatedTarget',\n // DOM Lev
el 3\n 'buttons',\n // PointerEvent\n 'pointerId',\n 'width',\n '
height',\n 'pressure',\n 'tiltX',\n 'tiltY',\n 'pointerType',\n '
hwTimestamp',\n 'isPrimary',\n // event instance\n 'type',\n 'target
',\n 'currentTarget',\n 'which'\n ];\n\n var CLONE_DEFAULTS = [\n //
MouseEvent\n false,\n false,\n null,\n null,\n 0,\n 0,\n 0,
\n 0,\n false,\n false,\n false,\n false,\n 0,\n null,\n
// DOM Level 3\n 0,\n // PointerEvent\n 0,\n 0,\n 0,\n 0,\n
0,\n 0,\n '',\n 0,\n false,\n // event instance\n '',\n n
ull,\n null,\n 0\n ];\n\n var HAS_SVG_INSTANCE = (typeof SVGElementInsta
nce !== 'undefined');\n\n /**\n * This module is for normalizing events. Mous
e and Touch events will be\n * collected here, and fire PointerEvents that hav
e the same semantics, no\n * matter the source.\n * Events fired:\n * -
pointerdown: a pointing is added\n * - pointerup: a pointer is removed\n *
- pointermove: a pointer is moved\n * - pointerover: a pointer crosses in
to an element\n * - pointerout: a pointer leaves an element\n * - pointe
rcancel: a pointer will no longer generate events\n */\n var dispatcher = {\n
targets: new WeakMap(),\n handledEvents: new WeakMap(),\n pointermap:
new scope.PointerMap(),\n eventMap: {},\n // Scope objects for native even
ts.\n // This exists for ease of testing.\n eventSources: {},\n eventSo
urceList: [],\n /**\n * Add a new event source that will generate pointer
events.\n *\n * `inSource` must contain an array of event names named `
events`, and\n * functions with the names specified in the `events` array.\n
* @param {string} name A name for the event source\n * @param {Object}
source A new source of platform events.\n */\n registerSource: function(n
ame, source) {\n var s = source;\n var newEvents = s.events;\n if
(newEvents) {\n newEvents.forEach(function(e) {\n if (s[e]) {\n
this.eventMap[e] = s[e].bind(s);\n }\n }, this);\n
this.eventSources[name] = s;\n this.eventSourceList.push(s);\n
}\n },\n register: function(element) {\n var l = this.eventSourceLis
t.length;\n for (var i = 0, es; (i < l) && (es = this.eventSourceList[i]);
i++) {\n // call eventsource register\n es.register.call(es, eleme
nt);\n }\n },\n unregister: function(element) {\n var l = this.e
ventSourceList.length;\n for (var i = 0, es; (i < l) && (es = this.eventSou
rceList[i]); i++) {\n // call eventsource register\n es.unregister
.call(es, element);\n }\n },\n contains: scope.external.contains || f
unction(container, contained) {\n return container.contains(contained);\n
},\n // EVENTS\n down: function(inEvent) {\n this.fireEvent('pointe
rdown', inEvent);\n },\n move: function(inEvent) {\n this.fireEvent('
pointermove', inEvent);\n },\n up: function(inEvent) {\n this.fireEve
nt('pointerup', inEvent);\n },\n enter: function(inEvent) {\n inEvent
.bubbles = false;\n this.fireEvent('pointerenter', inEvent);\n },\n l
eave: function(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent(
'pointerleave', inEvent);\n },\n over: function(inEvent) {\n inEvent.
bubbles = true;\n this.fireEvent('pointerover', inEvent);\n },\n out:
function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('point
erout', inEvent);\n },\n cancel: function(inEvent) {\n this.fireEvent
('pointercancel', inEvent);\n },\n leaveOut: function(event) {\n this
.out(event);\n if (!this.contains(event.target, event.relatedTarget)) {\n
this.leave(event);\n }\n },\n enterOver: function(event) {\n
this.over(event);\n if (!this.contains(event.target, event.relatedTarget
)) {\n this.enter(event);\n }\n },\n // LISTENER LOGIC\n ev
entHandler: function(inEvent) {\n // This is used to prevent multiple dispa
tch of pointerevents from\n // platform events. This can happen when two el
ements in different scopes\n // are set up to create pointer events, which
is relevant to Shadow DOM.\n if (this.handledEvents.get(inEvent)) {\n
return;\n }\n var type = inEvent.type;\n var fn = this.eventMap
&& this.eventMap[type];\n if (fn) {\n fn(inEvent);\n }\n
this.handledEvents.set(inEvent, true);\n },\n // set up event listeners\n
listen: function(target, events) {\n events.forEach(function(e) {\n
this.addEvent(target, e);\n }, this);\n },\n // remove event liste
ners\n unlisten: function(target, events) {\n events.forEach(function(e)
{\n this.removeEvent(target, e);\n }, this);\n },\n addEvent:
scope.external.addEvent || function(target, eventName) {\n target.addEvent
Listener(eventName, this.boundHandler);\n },\n removeEvent: scope.external
.removeEvent || function(target, eventName) {\n target.removeEventListener(
eventName, this.boundHandler);\n },\n // EVENT CREATION AND TRACKING\n
/**\n * Creates a new Event of type `inType`, based on the information in\n
* `inEvent`.\n *\n * @param {string} inType A string representing th
e type of event to create\n * @param {Event} inEvent A platform event with a
target\n * @return {Event} A PointerEvent of type `inType`\n */\n ma
keEvent: function(inType, inEvent) {\n // relatedTarget must be null if poi
nter is captured\n if (this.captureInfo) {\n inEvent.relatedTarget =
null;\n }\n var e = new PointerEvent(inType, inEvent);\n if (inE
vent.preventDefault) {\n e.preventDefault = inEvent.preventDefault;\n
}\n this.targets.set(e, this.targets.get(inEvent) || inEvent.target);\n
return e;\n },\n // make and dispatch an event in one call\n fireEv
ent: function(inType, inEvent) {\n var e = this.makeEvent(inType, inEvent);
\n return this.dispatchEvent(e);\n },\n /**\n * Returns a snapsho
t of inEvent, with writable properties.\n *\n * @param {Event} inEvent A
n event that contains properties to copy.\n * @return {Object} An object con
taining shallow copies of `inEvent`'s\n * properties.\n */\n clone
Event: function(inEvent) {\n var eventCopy = {}, p;\n for (var i = 0;
i < CLONE_PROPS.length; i++) {\n p = CLONE_PROPS[i];\n eventCopy[p
] = inEvent[p] || CLONE_DEFAULTS[i];\n // Work around SVGInstanceElement
shadow tree\n // Return the <use> element that is represented by the inst
ance for Safari, Chrome, IE.\n // This is the behavior implemented by Fir
efox.\n if (HAS_SVG_INSTANCE && (p === 'target' || p === 'relatedTarget')
) {\n if (eventCopy[p] instanceof SVGElementInstance) {\n ev
entCopy[p] = eventCopy[p].correspondingUseElement;\n }\n }\n
}\n // keep the semantics of preventDefault\n if (inEvent.preventDef
ault) {\n eventCopy.preventDefault = function() {\n inEvent.prev
entDefault();\n };\n }\n return eventCopy;\n },\n getTarg
et: function(inEvent) {\n // if pointer capture is set, route all events fo
r the specified pointerId\n // to the capture target\n if (this.captur
eInfo) {\n if (this.captureInfo.id === inEvent.pointerId) {\n re
turn this.captureInfo.target;\n }\n }\n return this.targets.get
(inEvent);\n },\n setCapture: function(inPointerId, inTarget) {\n if
(this.captureInfo) {\n this.releaseCapture(this.captureInfo.id);\n }
\n this.captureInfo = {id: inPointerId, target: inTarget};\n var e = n
ew PointerEvent('gotpointercapture', { bubbles: true });\n this.implicitRel
ease = this.releaseCapture.bind(this, inPointerId);\n document.addEventList
ener('pointerup', this.implicitRelease);\n document.addEventListener('point
ercancel', this.implicitRelease);\n this.targets.set(e, inTarget);\n t
his.asyncDispatchEvent(e);\n },\n releaseCapture: function(inPointerId) {\
n if (this.captureInfo && this.captureInfo.id === inPointerId) {\n v
ar e = new PointerEvent('lostpointercapture', { bubbles: true });\n var t
= this.captureInfo.target;\n this.captureInfo = null;\n document.
removeEventListener('pointerup', this.implicitRelease);\n document.remove
EventListener('pointercancel', this.implicitRelease);\n this.targets.set(
e, t);\n this.asyncDispatchEvent(e);\n }\n },\n /**\n * Di
spatches the event to its target.\n *\n * @param {Event} inEvent The eve
nt to be dispatched.\n * @return {Boolean} True if an event handler returns
true, false otherwise.\n */\n dispatchEvent: scope.external.dispatchEvent
|| function(inEvent) {\n var t = this.getTarget(inEvent);\n if (t) {\
n return t.dispatchEvent(inEvent);\n }\n },\n asyncDispatchEve
nt: function(inEvent) {\n setTimeout(this.dispatchEvent.bind(this, inEvent)
, 0);\n }\n };\n dispatcher.boundHandler = dispatcher.eventHandler.bind(dis
patcher);\n scope.dispatcher = dispatcher;\n scope.register = dispatcher.regis
ter.bind(dispatcher);\n scope.unregister = dispatcher.unregister.bind(dispatche
r);\n})(window.PointerEventsPolyfill);\n","/*\n * Copyright 2013 The Polymer Aut
hors. All rights reserved.\n * Use of this source code is governed by a BSD-styl
e\n * license that can be found in the LICENSE file.\n */\n\n/**\n * This module
uses Mutation Observers to dynamically adjust which nodes will\n * generate Poi
nter Events.\n *\n * All nodes that wish to generate Pointer Events must have th
e attribute\n * `touch-action` set to `none`.\n */\n(function(scope) {\n var fo
rEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\n var map =
Array.prototype.map.call.bind(Array.prototype.map);\n var toArray = Array.prot
otype.slice.call.bind(Array.prototype.slice);\n var filter = Array.prototype.fi
lter.call.bind(Array.prototype.filter);\n var MO = window.MutationObserver || w
indow.WebKitMutationObserver;\n var SELECTOR = '[touch-action]';\n var OBSERVE
R_INIT = {\n subtree: true,\n childList: true,\n attributes: true,\n
attributeOldValue: true,\n attributeFilter: ['touch-action']\n };\n\n func
tion Installer(add, remove, changed, binder) {\n this.addCallback = add.bind(
binder);\n this.removeCallback = remove.bind(binder);\n this.changedCallba
ck = changed.bind(binder);\n if (MO) {\n this.observer = new MO(this.mut
ationWatcher.bind(this));\n }\n }\n\n Installer.prototype = {\n watchSub
tree: function(target) {\n // Only watch scopes that can target find, as th
ese are top-level.\n // Otherwise we can see duplicate additions and remova
ls that add noise.\n //\n // TODO(dfreedman): For some instances with
ShadowDOMPolyfill, we can see\n // a removal without an insertion when a no
de is redistributed among\n // shadows. Since it all ends up correct in the
document, watching only\n // the document will yield the correct mutations
to watch.\n if (scope.targetFinding.canTarget(target)) {\n this.obs
erver.observe(target, OBSERVER_INIT);\n }\n },\n enableOnSubtree: fun
ction(target) {\n this.watchSubtree(target);\n if (target === document
&& document.readyState !== 'complete') {\n this.installOnLoad();\n
} else {\n this.installNewSubtree(target);\n }\n },\n installN
ewSubtree: function(target) {\n forEach(this.findElements(target), this.add
Element, this);\n },\n findElements: function(target) {\n if (target.
querySelectorAll) {\n return target.querySelectorAll(SELECTOR);\n }\
n return [];\n },\n removeElement: function(el) {\n this.removeC
allback(el);\n },\n addElement: function(el) {\n this.addCallback(el)
;\n },\n elementChanged: function(el, oldValue) {\n this.changedCallb
ack(el, oldValue);\n },\n concatLists: function(accum, list) {\n retu
rn accum.concat(toArray(list));\n },\n // register all touch-action = none
nodes on document load\n installOnLoad: function() {\n document.addEven
tListener('DOMContentLoaded', this.installNewSubtree.bind(this, document));\n
},\n isElement: function(n) {\n return n.nodeType === Node.ELEMENT_NODE
;\n },\n flattenMutationTree: function(inNodes) {\n // find children
with touch-action\n var tree = map(inNodes, this.findElements, this);\n
// make sure the added nodes are accounted for\n tree.push(filter(inNodes
, this.isElement));\n // flatten the list\n return tree.reduce(this.co
ncatLists, []);\n },\n mutationWatcher: function(mutations) {\n mutat
ions.forEach(this.mutationHandler, this);\n },\n mutationHandler: function
(m) {\n if (m.type === 'childList') {\n var added = this.flattenMuta
tionTree(m.addedNodes);\n added.forEach(this.addElement, this);\n
var removed = this.flattenMutationTree(m.removedNodes);\n removed.forEach
(this.removeElement, this);\n } else if (m.type === 'attributes') {\n
this.elementChanged(m.target, m.oldValue);\n }\n }\n };\n\n if (!MO)
{\n Installer.prototype.watchSubtree = function(){\n console.warn('Poin
terEventsPolyfill: MutationObservers not found, touch-action will not be dynamic
ally detected');\n };\n }\n\n scope.Installer = Installer;\n})(window.Point
erEventsPolyfill);\n","/*\n * Copyright 2013 The Polymer Authors. All rights res
erved.\n * Use of this source code is governed by a BSD-style\n * license that c
an be found in the LICENSE file.\n */\n\n(function (scope) {\n var dispatcher =
scope.dispatcher;\n var pointermap = dispatcher.pointermap;\n // radius aroun
d touchend that swallows mouse events\n var DEDUP_DIST = 25;\n\n // handler bl
ock for native mouse events\n var mouseEvents = {\n POINTER_ID: 1,\n POIN
TER_TYPE: 'mouse',\n events: [\n 'mousedown',\n 'mousemove',\n
'mouseup',\n 'mouseover',\n 'mouseout'\n ],\n register: functio
n(target) {\n dispatcher.listen(target, this.events);\n },\n unregist
er: function(target) {\n dispatcher.unlisten(target, this.events);\n },\
n lastTouches: [],\n // collide with the global mouse listener\n isEven
tSimulatedFromTouch: function(inEvent) {\n var lts = this.lastTouches;\n
var x = inEvent.clientX, y = inEvent.clientY;\n for (var i = 0, l = lts.
length, t; i < l && (t = lts[i]); i++) {\n // simulated mouse events will
be swallowed near a primary touchend\n var dx = Math.abs(x - t.x), dy =
Math.abs(y - t.y);\n if (dx <= DEDUP_DIST && dy <= DEDUP_DIST) {\n
return true;\n }\n }\n },\n prepareEvent: function(inEvent)
{\n var e = dispatcher.cloneEvent(inEvent);\n // forward mouse preven
tDefault\n var pd = e.preventDefault;\n e.preventDefault = function()
{\n inEvent.preventDefault();\n pd();\n };\n e.pointerId
= this.POINTER_ID;\n e.isPrimary = true;\n e.pointerType = this.POINT
ER_TYPE;\n return e;\n },\n mousedown: function(inEvent) {\n if
(!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.has(thi
s.POINTER_ID);\n // TODO(dfreedman) workaround for some elements not send
ing mouseup\n // http://crbug/149091\n if (p) {\n this.ca
ncel(inEvent);\n }\n var e = this.prepareEvent(inEvent);\n
pointermap.set(this.POINTER_ID, inEvent);\n dispatcher.down(e);\n }\
n },\n mousemove: function(inEvent) {\n if (!this.isEventSimulatedFro
mTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n dispatc
her.move(e);\n }\n },\n mouseup: function(inEvent) {\n if (!this
.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.get(this.POIN
TER_ID);\n if (p && p.button === inEvent.button) {\n var e = thi
s.prepareEvent(inEvent);\n dispatcher.up(e);\n this.cleanupMou
se();\n }\n }\n },\n mouseover: function(inEvent) {\n if
(!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(
inEvent);\n dispatcher.enterOver(e);\n }\n },\n mouseout: func
tion(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n
var e = this.prepareEvent(inEvent);\n dispatcher.leaveOut(e);\n }\n
},\n cancel: function(inEvent) {\n var e = this.prepareEvent(inEvent)
;\n dispatcher.cancel(e);\n this.cleanupMouse();\n },\n cleanupM
ouse: function() {\n pointermap['delete'](this.POINTER_ID);\n }\n };\n\
n scope.mouseEvents = mouseEvents;\n})(window.PointerEventsPolyfill);\n","/*\n
* Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sourc
e code is governed by a BSD-style\n * license that can be found in the LICENSE f
ile.\n */\n\n(function(scope) {\n var dispatcher = scope.dispatcher;\n var fin
dTarget = scope.findTarget;\n var allShadows = scope.targetFinding.allShadows.b
ind(scope.targetFinding);\n var pointermap = dispatcher.pointermap;\n var touc
hMap = Array.prototype.map.call.bind(Array.prototype.map);\n // This should be
long enough to ignore compat mouse events made by touch\n var DEDUP_TIMEOUT = 2
500;\n var CLICK_COUNT_TIMEOUT = 200;\n var ATTRIB = 'touch-action';\n var IN
STALLER;\n // The presence of touch event handlers blocks scrolling, and so we
must be careful to\n // avoid adding handlers unnecessarily. Chrome plans to a
dd a touch-action-delay property\n // (crbug.com/329559) to address this, and o
nce we have that we can opt-in to a simpler\n // handler registration mechanism
. Rather than try to predict how exactly to opt-in to\n // that we'll just lea
ve this disabled until there is a build of Chrome to test.\n var HAS_TOUCH_ACTI
ON_DELAY = false;\n \n // handler block for native touch events\n var touchEv
ents = {\n scrollType: new WeakMap(),\n events: [\n 'touchstart',\n
'touchmove',\n 'touchend',\n 'touchcancel'\n ],\n register:
function(target) {\n if (HAS_TOUCH_ACTION_DELAY) {\n dispatcher.list
en(target, this.events);\n } else {\n INSTALLER.enableOnSubtree(targ
et);\n }\n },\n unregister: function(target) {\n if (HAS_TOUCH_A
CTION_DELAY) {\n dispatcher.unlisten(target, this.events);\n } else
{\n // TODO(dfreedman): is it worth it to disconnect the MO?\n }\n
},\n elementAdded: function(el) {\n var a = el.getAttribute(ATTRIB);\n
var st = this.touchActionToScrollType(a);\n if (st) {\n this.s
crollType.set(el, st);\n dispatcher.listen(el, this.events);\n //
set touch-action on shadows as well\n allShadows(el).forEach(function(s)
{\n this.scrollType.set(s, st);\n dispatcher.listen(s, this.ev
ents);\n }, this);\n }\n },\n elementRemoved: function(el) {\n
this.scrollType['delete'](el);\n dispatcher.unlisten(el, this.events)
;\n // remove touch-action from shadow\n allShadows(el).forEach(functi
on(s) {\n this.scrollType['delete'](s);\n dispatcher.unlisten(s, t
his.events);\n }, this);\n },\n elementChanged: function(el, oldValue
) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToSc
rollType(a);\n var oldSt = this.touchActionToScrollType(oldValue);\n /
/ simply update scrollType if listeners are already established\n if (st &&
oldSt) {\n this.scrollType.set(el, st);\n allShadows(el).forEach(
function(s) {\n this.scrollType.set(s, st);\n }, this);\n }
else if (oldSt) {\n this.elementRemoved(el);\n } else if (st) {\n
this.elementAdded(el);\n }\n },\n scrollTypes: {\n EMITTER
: 'none',\n XSCROLLER: 'pan-x',\n YSCROLLER: 'pan-y',\n SCROLLER:
/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/\n },\n touchActionToScrollType:
function(touchAction) {\n var t = touchAction;\n var st = this.scrollT
ypes;\n if (t === 'none') {\n return 'none';\n } else if (t ===
st.XSCROLLER) {\n return 'X';\n } else if (t === st.YSCROLLER) {\n
return 'Y';\n } else if (st.SCROLLER.exec(t)) {\n return 'XY'
;\n }\n },\n POINTER_TYPE: 'touch',\n firstTouch: null,\n isPri
maryTouch: function(inTouch) {\n return this.firstTouch === inTouch.identif
ier;\n },\n setPrimaryTouch: function(inTouch) {\n // set primary tou
ch if there no pointers, or the only pointer is the mouse\n if (pointermap.
pointers() === 0 || (pointermap.pointers() === 1 && pointermap.has(1))) {\n
this.firstTouch = inTouch.identifier;\n this.firstXY = {X: inTouch.cli
entX, Y: inTouch.clientY};\n this.scrolling = false;\n this.cancel
ResetClickCount();\n }\n },\n removePrimaryPointer: function(inPointe
r) {\n if (inPointer.isPrimary) {\n this.firstTouch = null;\n
this.firstXY = null;\n this.resetClickCount();\n }\n },\n cli
ckCount: 0,\n resetId: null,\n resetClickCount: function() {\n var fn
= function() {\n this.clickCount = 0;\n this.resetId = null;\n
}.bind(this);\n this.resetId = setTimeout(fn, CLICK_COUNT_TIMEOUT);\n
},\n cancelResetClickCount: function() {\n if (this.resetId) {\n
clearTimeout(this.resetId);\n }\n },\n touchToPointer: function(inTo
uch) {\n var e = dispatcher.cloneEvent(inTouch);\n // Spec specifies t
hat pointerId 1 is reserved for Mouse.\n // Touch identifiers can start at
0.\n // Add 2 to the touch identifier for compatibility.\n e.pointerId
= inTouch.identifier + 2;\n e.target = findTarget(e);\n e.bubbles = t
rue;\n e.cancelable = true;\n e.detail = this.clickCount;\n e.but
ton = 0;\n e.buttons = 1;\n e.width = inTouch.webkitRadiusX || inTouch
.radiusX || 0;\n e.height = inTouch.webkitRadiusY || inTouch.radiusY || 0;\
n e.pressure = inTouch.webkitForce || inTouch.force || 0.5;\n e.isPrim
ary = this.isPrimaryTouch(inTouch);\n e.pointerType = this.POINTER_TYPE;\n
return e;\n },\n processTouches: function(inEvent, inFunction) {\n
var tl = inEvent.changedTouches;\n var pointers = touchMap(tl, this.touc
hToPointer, this);\n // forward touch preventDefaults\n pointers.forEa
ch(function(p) {\n p.preventDefault = function() {\n this.scroll
ing = false;\n this.firstXY = null;\n inEvent.preventDefault()
;\n };\n }, this);\n pointers.forEach(inFunction, this);\n }
,\n // For single axis scrollers, determines whether the element should emit\
n // pointer events or behave as a scroller\n shouldScroll: function(inEve
nt) {\n if (this.firstXY) {\n var ret;\n var scrollAxis = thi
s.scrollType.get(inEvent.currentTarget);\n if (scrollAxis === 'none') {\n
// this element is a touch-action: none, should never scroll\n
ret = false;\n } else if (scrollAxis === 'XY') {\n // this ele
ment should always scroll\n ret = true;\n } else {\n va
r t = inEvent.changedTouches[0];\n // check the intended scroll axis, a
nd other axis\n var a = scrollAxis;\n var oa = scrollAxis ===
'Y' ? 'X' : 'Y';\n var da = Math.abs(t['client' + a] - this.firstXY[a])
;\n var doa = Math.abs(t['client' + oa] - this.firstXY[oa]);\n
// if delta in the scroll axis > delta other axis, scroll instead of\n
// making events\n ret = da >= doa;\n }\n this.firstXY =
null;\n return ret;\n }\n },\n findTouch: function(inTL, inId
) {\n for (var i = 0, l = inTL.length, t; i < l && (t = inTL[i]); i++) {\n
if (t.identifier === inId) {\n return true;\n }\n }\
n },\n // In some instances, a touchstart can happen without a touchend. T
his\n // leaves the pointermap in a broken state.\n // Therefore, on every
touchstart, we remove the touches that did not fire a\n // touchend event.\n
// To keep state globally consistent, we fire a\n // pointercancel for th
is \"abandoned\" touch\n vacuumTouches: function(inEvent) {\n var tl = i
nEvent.touches;\n // pointermap.pointers() should be < tl.length here, as t
he touchstart has not\n // been processed yet.\n if (pointermap.pointe
rs() >= tl.length) {\n var d = [];\n pointermap.forEach(function(v
alue, key) {\n // Never remove pointerId == 1, which is mouse.\n
// Touch identifiers are 2 smaller than their pointerId, which is the\n
// index in pointermap.\n if (key !== 1 && !this.findTouch(tl, key
- 2)) {\n var p = value.out;\n d.push(this.touchToPointer(
p));\n }\n }, this);\n d.forEach(this.cancelOut, this);\n
}\n },\n touchstart: function(inEvent) {\n this.vacuumTouches(i
nEvent);\n this.setPrimaryTouch(inEvent.changedTouches[0]);\n this.ded
upSynthMouse(inEvent);\n if (!this.scrolling) {\n this.clickCount++;
\n this.processTouches(inEvent, this.overDown);\n }\n },\n ove
rDown: function(inPointer) {\n var p = pointermap.set(inPointer.pointerId,
{\n target: inPointer.target,\n out: inPointer,\n outTarget
: inPointer.target\n });\n dispatcher.over(inPointer);\n dispatch
er.enter(inPointer);\n dispatcher.down(inPointer);\n },\n touchmove:
function(inEvent) {\n if (!this.scrolling) {\n if (this.shouldScroll
(inEvent)) {\n this.scrolling = true;\n this.touchcancel(inEve
nt);\n } else {\n inEvent.preventDefault();\n this.proc
essTouches(inEvent, this.moveOverOut);\n }\n }\n },\n moveOver
Out: function(inPointer) {\n var event = inPointer;\n var pointer = po
intermap.get(event.pointerId);\n // a finger drifted off the screen, ignore
it\n if (!pointer) {\n return;\n }\n var outEvent = point
er.out;\n var outTarget = pointer.outTarget;\n dispatcher.move(event);
\n if (outEvent && outTarget !== event.target) {\n outEvent.relatedT
arget = event.target;\n event.relatedTarget = outTarget;\n // reco
ver from retargeting by shadow\n outEvent.target = outTarget;\n if
(event.target) {\n dispatcher.leaveOut(outEvent);\n dispatche
r.enterOver(event);\n } else {\n // clean up case when finger le
aves the screen\n event.target = outTarget;\n event.relatedTar
get = null;\n this.cancelOut(event);\n }\n }\n pointer
.out = event;\n pointer.outTarget = event.target;\n },\n touchend: fu
nction(inEvent) {\n this.dedupSynthMouse(inEvent);\n this.processTouch
es(inEvent, this.upOut);\n },\n upOut: function(inPointer) {\n if (!t
his.scrolling) {\n dispatcher.up(inPointer);\n dispatcher.out(inPo
inter);\n dispatcher.leave(inPointer);\n }\n this.cleanUpPointe
r(inPointer);\n },\n touchcancel: function(inEvent) {\n this.processT
ouches(inEvent, this.cancelOut);\n },\n cancelOut: function(inPointer) {\n
dispatcher.cancel(inPointer);\n dispatcher.out(inPointer);\n dis
patcher.leave(inPointer);\n this.cleanUpPointer(inPointer);\n },\n cl
eanUpPointer: function(inPointer) {\n pointermap['delete'](inPointer.pointe
rId);\n this.removePrimaryPointer(inPointer);\n },\n // prevent synth
mouse events from creating pointer events\n dedupSynthMouse: function(inEven
t) {\n var lts = scope.mouseEvents.lastTouches;\n var t = inEvent.chan
gedTouches[0];\n // only the primary finger will synth mouse events\n
if (this.isPrimaryTouch(t)) {\n // remember x/y of last touch\n va
r lt = {x: t.clientX, y: t.clientY};\n lts.push(lt);\n var fn = (f
unction(lts, lt){\n var i = lts.indexOf(lt);\n if (i > -1) {\n
lts.splice(i, 1);\n }\n }).bind(null, lts, lt);\n
setTimeout(fn, DEDUP_TIMEOUT);\n }\n }\n };\n\n if (!HAS_TOUCH_AC
TION_DELAY) {\n INSTALLER = new scope.Installer(touchEvents.elementAdded, tou
chEvents.elementRemoved, touchEvents.elementChanged, touchEvents);\n }\n\n sco
pe.touchEvents = touchEvents;\n})(window.PointerEventsPolyfill);\n","/*\n * Copy
right 2013 The Polymer Authors. All rights reserved.\n * Use of this source code
is governed by a BSD-style\n * license that can be found in the LICENSE file.\n
*/\n\n(function(scope) {\n var dispatcher = scope.dispatcher;\n var pointerma
p = dispatcher.pointermap;\n var HAS_BITMAP_TYPE = window.MSPointerEvent && typ
eof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE === 'number';\n var msEvents = {
\n events: [\n 'MSPointerDown',\n 'MSPointerMove',\n 'MSPointe
rUp',\n 'MSPointerOut',\n 'MSPointerOver',\n 'MSPointerCancel',\n
'MSGotPointerCapture',\n 'MSLostPointerCapture'\n ],\n register
: function(target) {\n dispatcher.listen(target, this.events);\n },\n
unregister: function(target) {\n dispatcher.unlisten(target, this.events);
\n },\n POINTER_TYPES: [\n '',\n 'unavailable',\n 'touch',\
n 'pen',\n 'mouse'\n ],\n prepareEvent: function(inEvent) {\n
var e = inEvent;\n if (HAS_BITMAP_TYPE) {\n e = dispatcher.cloneE
vent(inEvent);\n e.pointerType = this.POINTER_TYPES[inEvent.pointerType];
\n }\n return e;\n },\n cleanup: function(id) {\n pointerma
p['delete'](id);\n },\n MSPointerDown: function(inEvent) {\n pointerm
ap.set(inEvent.pointerId, inEvent);\n var e = this.prepareEvent(inEvent);\n
dispatcher.down(e);\n },\n MSPointerMove: function(inEvent) {\n
var e = this.prepareEvent(inEvent);\n dispatcher.move(e);\n },\n MSP
ointerUp: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n
dispatcher.up(e);\n this.cleanup(inEvent.pointerId);\n },\n MSPointer
Out: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispa
tcher.leaveOut(e);\n },\n MSPointerOver: function(inEvent) {\n var e
= this.prepareEvent(inEvent);\n dispatcher.enterOver(e);\n },\n MSPoi
nterCancel: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n
dispatcher.cancel(e);\n this.cleanup(inEvent.pointerId);\n },\n MSL
ostPointerCapture: function(inEvent) {\n var e = dispatcher.makeEvent('lost
pointercapture', inEvent);\n dispatcher.dispatchEvent(e);\n },\n MSGo
tPointerCapture: function(inEvent) {\n var e = dispatcher.makeEvent('gotpoi
ntercapture', inEvent);\n dispatcher.dispatchEvent(e);\n }\n };\n\n sc
ope.msEvents = msEvents;\n})(window.PointerEventsPolyfill);\n","/*\n * Copyright
2013 The Polymer Authors. All rights reserved.\n * Use of this source code is g
overned by a BSD-style\n * license that can be found in the LICENSE file.\n */\n
\n/**\n * This module contains the handlers for native platform events.\n * From
here, the dispatcher is called to create unified pointer events.\n * Included a
re touch events (v1), mouse events, and MSPointerEvents.\n */\n(function(scope)
{\n var dispatcher = scope.dispatcher;\n\n // only activate if this platform d
oes not have pointer events\n if (window.navigator.pointerEnabled === undefined
) {\n Object.defineProperty(window.navigator, 'pointerEnabled', {value: true,
enumerable: true});\n\n if (window.navigator.msPointerEnabled) {\n var
tp = window.navigator.msMaxTouchPoints;\n Object.defineProperty(window.navi
gator, 'maxTouchPoints', {\n value: tp,\n enumerable: true\n
});\n dispatcher.registerSource('ms', scope.msEvents);\n } else {\n
dispatcher.registerSource('mouse', scope.mouseEvents);\n if (window.ontouc
hstart !== undefined) {\n dispatcher.registerSource('touch', scope.touchE
vents);\n }\n }\n\n dispatcher.register(document);\n }\n})(window.Po
interEventsPolyfill);\n","/*\n * Copyright 2013 The Polymer Authors. All rights
reserved.\n * Use of this source code is governed by a BSD-style\n * license tha
t can be found in the LICENSE file.\n */\n\n(function(scope) {\n var dispatcher
= scope.dispatcher;\n var n = window.navigator;\n var s, r;\n function asser
tDown(id) {\n if (!dispatcher.pointermap.has(id)) {\n throw new Error('I
nvalidPointerId');\n }\n }\n if (n.msPointerEnabled) {\n s = function(po
interId) {\n assertDown(pointerId);\n this.msSetPointerCapture(pointer
Id);\n };\n r = function(pointerId) {\n assertDown(pointerId);\n
this.msReleasePointerCapture(pointerId);\n };\n } else {\n s = function
setPointerCapture(pointerId) {\n assertDown(pointerId);\n dispatcher.s
etCapture(pointerId, this);\n };\n r = function releasePointerCapture(poin
terId) {\n assertDown(pointerId);\n dispatcher.releaseCapture(pointerI
d, this);\n };\n }\n if (window.Element && !Element.prototype.setPointerCap
ture) {\n Object.defineProperties(Element.prototype, {\n 'setPointerCapt
ure': {\n value: s\n },\n 'releasePointerCapture': {\n v
alue: r\n }\n });\n }\n})(window.PointerEventsPolyfill);\n","/*\n * Cop
yright 2013 The Polymer Authors. All rights reserved.\n * Use of this source cod
e is governed by a BSD-style\n * license that can be found in the LICENSE file.\
n */\n\n(function(scope) {\n /**\n * This class contains the gesture recogniz
ers that create the PointerGesture\n * events.\n *\n * @class PointerGestu
res\n * @static\n */\n scope = scope || {};\n scope.utils = {\n LCA: {\
n // Determines the lowest node in the ancestor chain of a and b\n fin
d: function(a, b) {\n if (a === b) {\n return a;\n }\n
// fast case, a is a direct descendant of b or vice versa\n if (a.co
ntains) {\n if (a.contains(b)) {\n return a;\n }\n
if (b.contains(a)) {\n return b;\n }\n }\n
var adepth = this.depth(a);\n var bdepth = this.depth(b);\n
var d = adepth - bdepth;\n if (d > 0) {\n a = this.walk(a, d);\n
} else {\n b = this.walk(b, -d);\n }\n while(a &&
b && a !== b) {\n a = this.walk(a, 1);\n b = this.walk(b, 1);
\n }\n return a;\n },\n walk: function(n, u) {\n
for (var i = 0; i < u; i++) {\n n = n.parentNode;\n }\n r
eturn n;\n },\n depth: function(n) {\n var d = 0;\n whil
e(n) {\n d++;\n n = n.parentNode;\n }\n return d
;\n }\n }\n };\n scope.findLCA = function(a, b) {\n return scope.ut
ils.LCA.find(a, b);\n }\n window.PointerGestures = scope;\n})(window.PointerGe
stures);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n *
Use of this source code is governed by a BSD-style\n * license that can be foun
d in the LICENSE file.\n */\n\n/**\n * This module implements an map of pointer
states\n */\n(function(scope) {\n var USE_MAP = window.Map && window.Map.protot
ype.forEach;\n var POINTERS_FN = function(){ return this.size; };\n function P
ointerMap() {\n if (USE_MAP) {\n var m = new Map();\n m.pointers =
POINTERS_FN;\n return m;\n } else {\n this.keys = [];\n this.v
alues = [];\n }\n }\n\n PointerMap.prototype = {\n set: function(inId, i
nEvent) {\n var i = this.keys.indexOf(inId);\n if (i > -1) {\n
this.values[i] = inEvent;\n } else {\n this.keys.push(inId);\n
this.values.push(inEvent);\n }\n },\n has: function(inId) {\n
return this.keys.indexOf(inId) > -1;\n },\n 'delete': function(inId) {\n
var i = this.keys.indexOf(inId);\n if (i > -1) {\n this.keys.spl
ice(i, 1);\n this.values.splice(i, 1);\n }\n },\n get: functio
n(inId) {\n var i = this.keys.indexOf(inId);\n return this.values[i];\
n },\n clear: function() {\n this.keys.length = 0;\n this.values
.length = 0;\n },\n // return value, key, map\n forEach: function(callb
ack, thisArg) {\n this.values.forEach(function(v, i) {\n callback.ca
ll(thisArg, v, this.keys[i], this);\n }, this);\n },\n pointers: func
tion() {\n return this.keys.length;\n }\n };\n\n scope.PointerMap = Po
interMap;\n})(window.PointerGestures);\n","/*\n * Copyright 2013 The Polymer Aut
hors. All rights reserved.\n * Use of this source code is governed by a BSD-styl
e\n * license that can be found in the LICENSE file.\n */\n\n(function(scope) {\
n var CLONE_PROPS = [\n // MouseEvent\n 'bubbles',\n 'cancelable',\n
'view',\n 'detail',\n 'screenX',\n 'screenY',\n 'clientX',\n 'c
lientY',\n 'ctrlKey',\n 'altKey',\n 'shiftKey',\n 'metaKey',\n 'b
utton',\n 'relatedTarget',\n // DOM Level 3\n 'buttons',\n // Pointe
rEvent\n 'pointerId',\n 'width',\n 'height',\n 'pressure',\n 'til
tX',\n 'tiltY',\n 'pointerType',\n 'hwTimestamp',\n 'isPrimary',\n
// event instance\n 'type',\n 'target',\n 'currentTarget',\n 'scre
enX',\n 'screenY',\n 'pageX',\n 'pageY',\n 'tapPrevented'\n ];\n\n
var CLONE_DEFAULTS = [\n // MouseEvent\n false,\n false,\n null,\n
null,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n
false,\n 0,\n null,\n // DOM Level 3\n 0,\n // PointerEvent\n
0,\n 0,\n 0,\n 0,\n 0,\n 0,\n '',\n 0,\n false,\n /
/ event instance\n '',\n null,\n null,\n 0,\n 0,\n 0,\n 0\n
];\n\n var dispatcher = {\n handledEvents: new WeakMap(),\n targets: ne
w WeakMap(),\n handlers: {},\n recognizers: {},\n events: {},\n // A
dd a new gesture recognizer to the event listeners.\n // Recognizer needs an
`events` property.\n registerRecognizer: function(inName, inRecognizer) {\n
var r = inRecognizer;\n this.recognizers[inName] = r;\n r.events.f
orEach(function(e) {\n if (r[e]) {\n this.events[e] = true;\n
var f = r[e].bind(r);\n this.addHandler(e, f);\n }\n
}, this);\n },\n addHandler: function(inEvent, inFn) {\n var e = inE
vent;\n if (!this.handlers[e]) {\n this.handlers[e] = [];\n }\n
this.handlers[e].push(inFn);\n },\n // add event listeners for inTar
get\n registerTarget: function(inTarget) {\n this.listen(Object.keys(thi
s.events), inTarget);\n },\n // remove event listeners for inTarget\n u
nregisterTarget: function(inTarget) {\n this.unlisten(Object.keys(this.even
ts), inTarget);\n },\n // LISTENER LOGIC\n eventHandler: function(inEve
nt) {\n if (this.handledEvents.get(inEvent)) {\n return;\n }\n
var type = inEvent.type, fns = this.handlers[type];\n if (fns) {\n
this.makeQueue(fns, inEvent);\n }\n this.handledEvents.set(inEvent
, true);\n },\n // queue event for async dispatch\n makeQueue: function
(inHandlerFns, inEvent) {\n // must clone events to keep the (possibly shad
owed) target correct for\n // async dispatching\n var e = this.cloneEv
ent(inEvent);\n setTimeout(this.runQueue.bind(this, inHandlerFns, e), 0);\n
},\n // Dispatch the queued events\n runQueue: function(inHandlers, in
Event) {\n this.currentPointerId = inEvent.pointerId;\n for (var i = 0
, f, l = inHandlers.length; (i < l) && (f = inHandlers[i]); i++) {\n f(in
Event);\n }\n this.currentPointerId = 0;\n },\n // set up event
listeners\n listen: function(inEvents, inTarget) {\n inEvents.forEach(fu
nction(e) {\n this.addEvent(e, this.boundHandler, false, inTarget);\n
}, this);\n },\n // remove event listeners\n unlisten: function(inEve
nts) {\n inEvents.forEach(function(e) {\n this.removeEvent(e, this.b
oundHandler, false, inTarget);\n }, this);\n },\n addEvent: function(
inEventName, inEventHandler, inCapture, inTarget) {\n inTarget.addEventList
ener(inEventName, inEventHandler, inCapture);\n },\n removeEvent: function
(inEventName, inEventHandler, inCapture, inTarget) {\n inTarget.removeEvent
Listener(inEventName, inEventHandler, inCapture);\n },\n // EVENT CREATION
AND TRACKING\n // Creates a new Event of type `inType`, based on the informa
tion in\n // `inEvent`.\n makeEvent: function(inType, inDict) {\n ret
urn new PointerGestureEvent(inType, inDict);\n },\n /*\n * Returns a s
napshot of inEvent, with writable properties.\n *\n * @method cloneEvent
\n * @param {Event} inEvent An event that contains properties to copy.\n
* @return {Object} An object containing shallow copies of `inEvent`'s\n *
properties.\n */\n cloneEvent: function(inEvent) {\n var eventCopy
= {}, p;\n for (var i = 0; i < CLONE_PROPS.length; i++) {\n p = CLO
NE_PROPS[i];\n eventCopy[p] = inEvent[p] || CLONE_DEFAULTS[i];\n }\n
return eventCopy;\n },\n // Dispatches the event to its target.\n
dispatchEvent: function(inEvent, inTarget) {\n var t = inTarget || this.ta
rgets.get(inEvent);\n if (t) {\n t.dispatchEvent(inEvent);\n
if (inEvent.tapPrevented) {\n this.preventTap(this.currentPointerId);\n
}\n }\n },\n asyncDispatchEvent: function(inEvent, inTarget)
{\n var fn = function() {\n this.dispatchEvent(inEvent, inTarget);\n
}.bind(this);\n setTimeout(fn, 0);\n },\n preventTap: function(
inPointerId) {\n var t = this.recognizers.tap;\n if (t){\n t.pr
eventTap(inPointerId);\n }\n }\n };\n dispatcher.boundHandler = dispat
cher.eventHandler.bind(dispatcher);\n scope.dispatcher = dispatcher;\n var reg
isterQueue = [];\n var immediateRegister = false;\n /**\n * Enable gesture e
vents for a given scope, typically\n * [ShadowRoots](https://dvcs.w3.org/hg/we
bcomponents/raw-file/tip/spec/shadow/index.html#shadow-root-object).\n *\n *
@for PointerGestures\n * @method register\n * @param {ShadowRoot} scope A t
op level scope to enable gesture\n * support on.\n */\n scope.register = fu
nction(inScope) {\n if (immediateRegister) {\n var pe = window.PointerEv
entsPolyfill;\n if (pe) {\n pe.register(inScope);\n }\n sc
ope.dispatcher.registerTarget(inScope);\n } else {\n registerQueue.push(
inScope);\n }\n };\n // wait to register scopes until recognizers load\n d
ocument.addEventListener('DOMContentLoaded', function() {\n immediateRegister
= true;\n registerQueue.push(document);\n registerQueue.forEach(scope.reg
ister);\n });\n})(window.PointerGestures);\n","/*\n * Copyright 2013 The Polyme
r Authors. All rights reserved.\n * Use of this source code is governed by a BSD
-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * This e
vent is fired when a pointer is held down for 200ms.\n *\n * @module PointerGest
ures\n * @submodule Events\n * @class hold\n */\n/**\n * Milliseconds pointer ha
s been held down.\n * @type Number\n * @property holdTime\n */\n/**\n * Type of
pointer that made the holding event.\n * @type String\n * @property pointerType\
n */\n/**\n * This event is fired every 200ms while a pointer is held down.\n *\
n * @class holdpulse\n * @extends hold\n */\n/**\n * This event is fired when a
held pointer is released or moved.\n *\n * @class released\n */\n/**\n * Type of
pointer that made the holding event.\n * @type String\n * @property pointerType
\n */\n\n(function(scope) {\n var dispatcher = scope.dispatcher;\n var hold =
{\n // wait at least HOLD_DELAY ms between hold and pulse events\n HOLD_DE
LAY: 200,\n // pointer can move WIGGLE_THRESHOLD pixels before not counting a
s a hold\n WIGGLE_THRESHOLD: 16,\n events: [\n 'pointerdown',\n
'pointermove',\n 'pointerup',\n 'pointercancel'\n ],\n heldPoint
er: null,\n holdJob: null,\n pulse: function() {\n var hold = Date.no
w() - this.heldPointer.timeStamp;\n var type = this.held ? 'holdpulse' : 'h
old';\n this.fireHold(type, hold);\n this.held = true;\n },\n ca
ncel: function() {\n clearInterval(this.holdJob);\n if (this.held) {\n
this.fireHold('release');\n }\n this.held = false;\n this
.heldPointer = null;\n this.target = null;\n this.holdJob = null;\n
},\n pointerdown: function(inEvent) {\n if (inEvent.isPrimary && !this.
heldPointer) {\n this.heldPointer = inEvent;\n this.target = inEve
nt.target;\n this.holdJob = setInterval(this.pulse.bind(this), this.HOLD_
DELAY);\n }\n },\n pointerup: function(inEvent) {\n if (this.hel
dPointer && this.heldPointer.pointerId === inEvent.pointerId) {\n this.ca
ncel();\n }\n },\n pointercancel: function(inEvent) {\n this.can
cel();\n },\n pointermove: function(inEvent) {\n if (this.heldPointer
&& this.heldPointer.pointerId === inEvent.pointerId) {\n var x = inEvent
.clientX - this.heldPointer.clientX;\n var y = inEvent.clientY - this.hel
dPointer.clientY;\n if ((x * x + y * y) > this.WIGGLE_THRESHOLD) {\n
this.cancel();\n }\n }\n },\n fireHold: function(inType,
inHoldTime) {\n var p = {\n pointerType: this.heldPointer.pointerTyp
e\n };\n if (inHoldTime) {\n p.holdTime = inHoldTime;\n }\
n var e = dispatcher.makeEvent(inType, p);\n dispatcher.dispatchEvent(
e, this.target);\n if (e.tapPrevented) {\n dispatcher.preventTap(thi
s.heldPointer.pointerId);\n }\n }\n };\n dispatcher.registerRecognizer
('hold', hold);\n})(window.PointerGestures);\n","/*\n * Copyright 2013 The Polym
er Authors. All rights reserved.\n * Use of this source code is governed by a BS
D-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * This
event denotes the beginning of a series of tracking events.\n *\n * @module Poin
terGestures\n * @submodule Events\n * @class trackstart\n */\n/**\n * Pixels mov
ed in the x direction since trackstart.\n * @type Number\n * @property dx\n */\n
/**\n * Pixes moved in the y direction since trackstart.\n * @type Number\n * @p
roperty dy\n */\n/**\n * Pixels moved in the x direction since the last track.\n
* @type Number\n * @property ddx\n */\n/**\n * Pixles moved in the y direction
since the last track.\n * @type Number\n * @property ddy\n */\n/**\n * The clien
tX position of the track gesture.\n * @type Number\n * @property clientX\n */\n/
**\n * The clientY position of the track gesture.\n * @type Number\n * @property
clientY\n */\n/**\n * The pageX position of the track gesture.\n * @type Number
\n * @property pageX\n */\n/**\n * The pageY position of the track gesture.\n *
@type Number\n * @property pageY\n */\n/**\n * The screenX position of the track
gesture.\n * @type Number\n * @property screenX\n */\n/**\n * The screenY posit
ion of the track gesture.\n * @type Number\n * @property screenY\n */\n/**\n * T
he last x axis direction of the pointer.\n * @type Number\n * @property xDirecti
on\n */\n/**\n * The last y axis direction of the pointer.\n * @type Number\n *
@property yDirection\n */\n/**\n * A shared object between all tracking events.\
n * @type Object\n * @property trackInfo\n */\n/**\n * The element currently und
er the pointer.\n * @type Element\n * @property relatedTarget\n */\n/**\n * The
type of pointer that make the track gesture.\n * @type String\n * @property poin
terType\n */\n/**\n *\n * This event fires for all pointer movement being tracke
d.\n *\n * @class track\n * @extends trackstart\n */\n/**\n * This event fires w
hen the pointer is no longer being tracked.\n *\n * @class trackend\n * @extends
trackstart\n */\n\n (function(scope) {\n var dispatcher = scope.dispatcher;\n
var pointermap = new scope.PointerMap();\n var track = {\n events: [\n
'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointe
rcancel'\n ],\n WIGGLE_THRESHOLD: 4,\n clampDir: function(inDelta) {
\n return inDelta > 0 ? 1 : -1;\n },\n calcPositionDelta: function
(inA, inB) {\n var x = 0, y = 0;\n if (inA && inB) {\n x = i
nB.pageX - inA.pageX;\n y = inB.pageY - inA.pageY;\n }\n ret
urn {x: x, y: y};\n },\n fireTrack: function(inType, inEvent, inTracking
Data) {\n var t = inTrackingData;\n var d = this.calcPositionDelta(t
.downEvent, inEvent);\n var dd = this.calcPositionDelta(t.lastMoveEvent, i
nEvent);\n if (dd.x) {\n t.xDirection = this.clampDir(dd.x);\n
}\n if (dd.y) {\n t.yDirection = this.clampDir(dd.y);\n }
\n var trackData = {\n dx: d.x,\n dy: d.y,\n ddx:
dd.x,\n ddy: dd.y,\n clientX: inEvent.clientX,\n clientY
: inEvent.clientY,\n pageX: inEvent.pageX,\n pageY: inEvent.page
Y,\n screenX: inEvent.screenX,\n screenY: inEvent.screenY,\n
xDirection: t.xDirection,\n yDirection: t.yDirection,\n tra
ckInfo: t.trackInfo,\n relatedTarget: inEvent.target,\n pointerT
ype: inEvent.pointerType\n };\n var e = dispatcher.makeEvent(inType,
trackData);\n t.lastMoveEvent = inEvent;\n dispatcher.dispatchEvent
(e, t.downTarget);\n },\n pointerdown: function(inEvent) {\n if (i
nEvent.isPrimary && (inEvent.pointerType === 'mouse' ? inEvent.buttons === 1 : t
rue)) {\n var p = {\n downEvent: inEvent,\n downTarg
et: inEvent.target,\n trackInfo: {},\n lastMoveEvent: null,\
n xDirection: 0,\n yDirection: 0,\n tracking: fals
e\n };\n pointermap.set(inEvent.pointerId, p);\n }\n }
,\n pointermove: function(inEvent) {\n var p = pointermap.get(inEvent.
pointerId);\n if (p) {\n if (!p.tracking) {\n var d = th
is.calcPositionDelta(p.downEvent, inEvent);\n var move = d.x * d.x + d
.y * d.y;\n // start tracking only if finger moves more than WIGGLE_TH
RESHOLD\n if (move > this.WIGGLE_THRESHOLD) {\n p.tracking
= true;\n this.fireTrack('trackstart', p.downEvent, p);\n
this.fireTrack('track', inEvent, p);\n }\n } else {\n
this.fireTrack('track', inEvent, p);\n }\n }\n },\n p
ointerup: function(inEvent) {\n var p = pointermap.get(inEvent.pointerId);
\n if (p) {\n if (p.tracking) {\n this.fireTrack('tracke
nd', inEvent, p);\n }\n pointermap.delete(inEvent.pointerId);\n
}\n },\n pointercancel: function(inEvent) {\n this.pointerup
(inEvent);\n }\n };\n dispatcher.registerRecognizer('track', track);\n }
)(window.PointerGestures);\n","/*\n * Copyright 2013 The Polymer Authors. All ri
ghts reserved.\n * Use of this source code is governed by a BSD-style\n * licens
e that can be found in the LICENSE file.\n */\n\n/**\n * This event denotes a ra
pid down/move/up sequence from a pointer.\n *\n * The event is sent to the first
element the pointer went down on.\n *\n * @module PointerGestures\n * @submodul
e Events\n * @class flick\n */\n/**\n * Signed velocity of the flick in the x di
rection.\n * @property xVelocity\n * @type Number\n */\n/**\n * Signed velocity
of the flick in the y direction.\n * @type Number\n * @property yVelocity\n */\n
/**\n * Unsigned total velocity of the flick.\n * @type Number\n * @property vel
ocity\n */\n/**\n * Angle of the flick in degrees, with 0 along the\n * positive
x axis.\n * @type Number\n * @property angle\n */\n/**\n * Axis with the greate
st absolute velocity. Denoted\n * with 'x' or 'y'.\n * @type String\n * @propert
y majorAxis\n */\n/**\n * Type of the pointer that made the flick.\n * @type Str
ing\n * @property pointerType\n */\n\n(function(scope) {\n var dispatcher = sco
pe.dispatcher;\n var flick = {\n // TODO(dfreedman): value should be low eno
ugh for low speed flicks, but\n // high enough to remove accidental flicks\n
MIN_VELOCITY: 0.5 /* px/ms */,\n MAX_QUEUE: 4,\n moveQueue: [],\n ta
rget: null,\n pointerId: null,\n events: [\n 'pointerdown',\n 'p
ointermove',\n 'pointerup',\n 'pointercancel'\n ],\n pointerdown
: function(inEvent) {\n if (inEvent.isPrimary && !this.pointerId) {\n
this.pointerId = inEvent.pointerId;\n this.target = inEvent.target;\n
this.addMove(inEvent);\n }\n },\n pointermove: function(inEvent
) {\n if (inEvent.pointerId === this.pointerId) {\n this.addMove(inE
vent);\n }\n },\n pointerup: function(inEvent) {\n if (inEvent.p
ointerId === this.pointerId) {\n this.fireFlick(inEvent);\n }\n
this.cleanup();\n },\n pointercancel: function(inEvent) {\n this.cle
anup();\n },\n cleanup: function() {\n this.moveQueue = [];\n th
is.target = null;\n this.pointerId = null;\n },\n addMove: function(i
nEvent) {\n if (this.moveQueue.length >= this.MAX_QUEUE) {\n this.mo
veQueue.shift();\n }\n this.moveQueue.push(inEvent);\n },\n fire
Flick: function(inEvent) {\n var e = inEvent;\n var l = this.moveQueue
.length;\n var dt, dx, dy, tx, ty, tv, x = 0, y = 0, v = 0;\n // flick
based off the fastest segment of movement\n for (var i = 0, m; i < l && (m
= this.moveQueue[i]); i++) {\n dt = e.timeStamp - m.timeStamp;\n
dx = e.clientX - m.clientX, dy = e.clientY - m.clientY;\n tx = dx / dt, t
y = dy / dt, tv = Math.sqrt(tx * tx + ty * ty);\n if (tv > v) {\n
x = tx, y = ty, v = tv;\n }\n }\n var ma = Math.abs(x) > Math
.abs(y) ? 'x' : 'y';\n var a = this.calcAngle(x, y);\n if (Math.abs(v)
>= this.MIN_VELOCITY) {\n var ev = dispatcher.makeEvent('flick', {\n
xVelocity: x,\n yVelocity: y,\n velocity: v,\n
angle: a,\n majorAxis: ma,\n pointerType: inEvent.pointerType\
n });\n dispatcher.dispatchEvent(ev, this.target);\n }\n }
,\n calcAngle: function(inX, inY) {\n return (Math.atan2(inY, inX) * 180
/ Math.PI);\n }\n };\n dispatcher.registerRecognizer('flick', flick);\n})(
window.PointerGestures);\n","/*\n * Copyright 2013 The Polymer Authors. All righ
ts reserved.\n * Use of this source code is governed by a BSD-style\n * license
that can be found in the LICENSE file.\n */\n\n/*\n * Basic strategy: find the f
arthest apart points, use as diameter of circle\n * react to size change and rot
ation of the chord\n */\n\n/**\n * @module PointerGestures\n * @submodule Events
\n * @class pinch\n */\n/**\n * Scale of the pinch zoom gesture\n * @property sc
ale\n * @type Number\n */\n/**\n * Center X position of pointers causing pinch\n
* @property centerX\n * @type Number\n */\n/**\n * Center Y position of pointer
s causing pinch\n * @property centerY\n * @type Number\n */\n\n/**\n * @module P
ointerGestures\n * @submodule Events\n * @class rotate\n */\n/**\n * Angle (in d
egrees) of rotation. Measured from starting positions of pointers.\n * @property
angle\n * @type Number\n */\n/**\n * Center X position of pointers causing rota
tion\n * @property centerX\n * @type Number\n */\n/**\n * Center Y position of p
ointers causing rotation\n * @property centerY\n * @type Number\n */\n(function(
scope) {\n var dispatcher = scope.dispatcher;\n var pointermap = new scope.Poi
nterMap();\n var RAD_TO_DEG = 180 / Math.PI;\n var pinch = {\n events: [\n
'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointercan
cel'\n ],\n reference: {},\n pointerdown: function(ev) {\n pointer
map.set(ev.pointerId, ev);\n if (pointermap.pointers() == 2) {\n var
points = this.calcChord();\n var angle = this.calcAngle(points);\n
this.reference = {\n angle: angle,\n diameter: points.diamet
er,\n target: scope.findLCA(points.a.target, points.b.target)\n
};\n }\n },\n pointerup: function(ev) {\n pointermap.delete(ev.p
ointerId);\n },\n pointermove: function(ev) {\n if (pointermap.has(ev
.pointerId)) {\n pointermap.set(ev.pointerId, ev);\n if (pointerma
p.pointers() > 1) {\n this.calcPinchRotate();\n }\n }\n
},\n pointercancel: function(ev) {\n this.pointerup(ev);\n },\n di
spatchPinch: function(diameter, points) {\n var zoom = diameter / this.refe
rence.diameter;\n var ev = dispatcher.makeEvent('pinch', {\n scale:
zoom,\n centerX: points.center.x,\n centerY: points.center.y\n
});\n dispatcher.dispatchEvent(ev, this.reference.target);\n },\n d
ispatchRotate: function(angle, points) {\n var diff = Math.round((angle - t
his.reference.angle) % 360);\n var ev = dispatcher.makeEvent('rotate', {\n
angle: diff,\n centerX: points.center.x,\n centerY: points.
center.y\n });\n dispatcher.dispatchEvent(ev, this.reference.target);\
n },\n calcPinchRotate: function() {\n var points = this.calcChord();
\n var diameter = points.diameter;\n var angle = this.calcAngle(points
);\n if (diameter != this.reference.diameter) {\n this.dispatchPinch
(diameter, points);\n }\n if (angle != this.reference.angle) {\n
this.dispatchRotate(angle, points);\n }\n },\n calcChord: function(
) {\n var pointers = [];\n pointermap.forEach(function(p) {\n p
ointers.push(p);\n });\n var dist = 0;\n var points = {};\n
var x, y, d;\n for (var i = 0; i < pointers.length; i++) {\n var a =
pointers[i];\n for (var j = i + 1; j < pointers.length; j++) {\n
var b = pointers[j];\n x = Math.abs(a.clientX - b.clientX);\n
y = Math.abs(a.clientY - b.clientY);\n d = x + y;\n if (d >
dist) {\n dist = d;\n points = {a: a, b: b};\n }\
n }\n }\n x = Math.abs(points.a.clientX + points.b.clientX) / 2
;\n y = Math.abs(points.a.clientY + points.b.clientY) / 2;\n points.ce
nter = { x: x, y: y };\n points.diameter = dist;\n return points;\n
},\n calcAngle: function(points) {\n var x = points.a.clientX - points.
b.clientX;\n var y = points.a.clientY - points.b.clientY;\n return (36
0 + Math.atan2(y, x) * RAD_TO_DEG) % 360;\n },\n };\n dispatcher.registerRe
cognizer('pinch', pinch);\n})(window.PointerGestures);\n","/*\n * Copyright 2013
The Polymer Authors. All rights reserved.\n * Use of this source code is govern
ed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**
\n * This event is fired when a pointer quickly goes down and up, and is used to
\n * denote activation.\n *\n * Any gesture event can prevent the tap event from
being created by calling\n * `event.preventTap`.\n *\n * Any pointer event can
prevent the tap by setting the `tapPrevented` property\n * on itself.\n *\n * @m
odule PointerGestures\n * @submodule Events\n * @class tap\n */\n/**\n * X axis
position of the tap.\n * @property x\n * @type Number\n */\n/**\n * Y axis posit
ion of the tap.\n * @property y\n * @type Number\n */\n/**\n * Type of the point
er that made the tap.\n * @property pointerType\n * @type String\n */\n(function
(scope) {\n var dispatcher = scope.dispatcher;\n var pointermap = new scope.Po
interMap();\n var tap = {\n events: [\n 'pointerdown',\n 'pointerm
ove',\n 'pointerup',\n 'pointercancel',\n 'keyup'\n ],\n po
interdown: function(inEvent) {\n if (inEvent.isPrimary && !inEvent.tapPreve
nted) {\n pointermap.set(inEvent.pointerId, {\n target: inEvent.
target,\n x: inEvent.clientX,\n y: inEvent.clientY\n })
;\n }\n },\n pointermove: function(inEvent) {\n if (inEvent.isPr
imary) {\n var start = pointermap.get(inEvent.pointerId);\n if (st
art) {\n if (inEvent.tapPrevented) {\n pointermap.delete(inE
vent.pointerId);\n }\n }\n }\n },\n pointerup: functi
on(inEvent) {\n var start = pointermap.get(inEvent.pointerId);\n if (s
tart && !inEvent.tapPrevented) {\n var t = scope.findLCA(start.target, in
Event.target);\n if (t) {\n var e = dispatcher.makeEvent('tap',
{\n x: inEvent.clientX,\n y: inEvent.clientY,\n
detail: inEvent.detail,\n pointerType: inEvent.pointerType\n
});\n dispatcher.dispatchEvent(e, t);\n }\n }\n poin
termap.delete(inEvent.pointerId);\n },\n pointercancel: function(inEvent)
{\n pointermap.delete(inEvent.pointerId);\n },\n keyup: function(inEv
ent) {\n var code = inEvent.keyCode;\n // 32 == spacebar\n if (co
de === 32) {\n var t = inEvent.target;\n if (!(t instanceof HTMLIn
putElement || t instanceof HTMLTextAreaElement)) {\n dispatcher.dispatc
hEvent(dispatcher.makeEvent('tap', {\n x: 0,\n y: 0,\n
detail: 0,\n pointerType: 'unavailable'\n }), t);\n
}\n }\n },\n preventTap: function(inPointerId) {\n pointe
rmap.delete(inPointerId);\n }\n };\n dispatcher.registerRecognizer('tap', t
ap);\n})(window.PointerGestures);\n","// Copyright 2011 Google Inc.\n//\n// Lice
nsed under the Apache License, Version 2.0 (the \"License\");\n// you may not us
e this file except in compliance with the License.\n// You may obtain a copy of
the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Un
less required by applicable law or agreed to in writing, software\n// distribute
d under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES
OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for t
he specific language governing permissions and\n// limitations under the License
.\n\n(function(global) {\n 'use strict';\n\n var filter = Array.prototype.filt
er.call.bind(Array.prototype.filter);\n\n function getTreeScope(node) {\n wh
ile (node.parentNode) {\n node = node.parentNode;\n }\n\n return type
of node.getElementById === 'function' ? node : null;\n }\n\n // JScript does n
ot have __proto__. We wrap all object literals with\n // createObject which use
s Object.create, Object.defineProperty and\n // Object.getOwnPropertyDescriptor
to create a new object that does the exact\n // same thing. The main downside
to this solution is that we have to extract\n // all those property descriptors
for IE.\n var createObject = ('__proto__' in {}) ?\n function(obj) { retu
rn obj; } :\n function(obj) {\n var proto = obj.__proto__;\n
if (!proto)\n return obj;\n var newObject = Object.create(proto)
;\n Object.getOwnPropertyNames(obj).forEach(function(name) {\n O
bject.defineProperty(newObject, name,\n Object.get
OwnPropertyDescriptor(obj, name));\n });\n return newObject;\n
};\n\n // IE does not support have Document.prototype.contains.\n if (typeof
document.contains != 'function') {\n Document.prototype.contains = function(
node) {\n if (node === this || node.parentNode === this)\n return tr
ue;\n return this.documentElement.contains(node);\n }\n }\n\n Node.pro
totype.bind = function(name, observable) {\n console.error('Unhandled binding
to Node: ', this, name, observable);\n };\n\n function unbind(node, name) {\n
var bindings = node.bindings;\n if (!bindings) {\n node.bindings = {
};\n return;\n }\n\n var binding = bindings[name];\n if (!binding)
\n return;\n\n binding.close();\n bindings[name] = undefined;\n }\n\
n Node.prototype.unbind = function(name) {\n unbind(this, name);\n };\n\n
Node.prototype.unbindAll = function() {\n if (!this.bindings)\n return;\
n var names = Object.keys(this.bindings);\n for (var i = 0; i < names.leng
th; i++) {\n var binding = this.bindings[names[i]];\n if (binding)\n
binding.close();\n }\n\n this.bindings = {};\n };\n\n function san
itizeValue(value) {\n return value == null ? '' : value;\n }\n\n function u
pdateText(node, value) {\n node.data = sanitizeValue(value);\n }\n\n functi
on textBinding(node) {\n return function(value) {\n return updateText(no
de, value);\n };\n }\n\n Text.prototype.bind = function(name, value, oneTim
e) {\n if (name !== 'textContent')\n return Node.prototype.bind.call(thi
s, name, value, oneTime);\n\n if (oneTime)\n return updateText(this, val
ue);\n\n unbind(this, 'textContent');\n updateText(this, value.open(textBi
nding(this)));\n return this.bindings.textContent = value;\n }\n\n function
updateAttribute(el, name, conditional, value) {\n if (conditional) {\n
if (value)\n el.setAttribute(name, '');\n else\n el.removeAtt
ribute(name);\n return;\n }\n\n el.setAttribute(name, sanitizeValue(v
alue));\n }\n\n function attributeBinding(el, name, conditional) {\n return
function(value) {\n updateAttribute(el, name, conditional, value);\n };
\n }\n\n Element.prototype.bind = function(name, value, oneTime) {\n var co
nditional = name[name.length - 1] == '?';\n if (conditional) {\n this.re
moveAttribute(name);\n name = name.slice(0, -1);\n }\n\n if (oneTime)
\n return updateAttribute(this, name, conditional, value);\n\n unbind(th
is, name);\n updateAttribute(this, name, conditional,\n value.open(att
ributeBinding(this, name, conditional)));\n\n return this.bindings[name] = va
lue;\n };\n\n var checkboxEventType;\n (function() {\n // Attempt to featu
re-detect which event (change or click) is fired first\n // for checkboxes.\n
var div = document.createElement('div');\n var checkbox = div.appendChild
(document.createElement('input'));\n checkbox.setAttribute('type', 'checkbox'
);\n var first;\n var count = 0;\n checkbox.addEventListener('click', f
unction(e) {\n count++;\n first = first || 'click';\n });\n chec
kbox.addEventListener('change', function() {\n count++;\n first = firs
t || 'change';\n });\n\n var event = document.createEvent('MouseEvent');\n
event.initMouseEvent(\"click\", true, true, window, 0, 0, 0, 0, 0, false,\n
false, false, false, 0, null);\n checkbox.dispatchEvent(event);\n /
/ WebKit/Blink don't fire the change event if the element is outside the\n //
document, so assume 'change' for that case.\n checkboxEventType = count == 1
? 'change' : first;\n })();\n\n function getEventForInputType(element) {\n
switch (element.type) {\n case 'checkbox':\n return checkboxEventTy
pe;\n case 'radio':\n case 'select-multiple':\n case 'select-one'
:\n return 'change';\n default:\n return 'input';\n }\n }
\n\n function updateInput(input, property, value, santizeFn) {\n input[prope
rty] = (santizeFn || sanitizeValue)(value);\n }\n\n function inputBinding(inpu
t, property, santizeFn) {\n return function(value) {\n return updateInpu
t(input, property, value, santizeFn);\n }\n }\n\n function noop() {}\n\n f
unction bindInputEvent(input, property, observable, postEventFn) {\n var even
tType = getEventForInputType(input);\n\n function eventHandler() {\n obs
ervable.setValue(input[property]);\n observable.discardChanges();\n (p
ostEventFn || noop)(input);\n Platform.performMicrotaskCheckpoint();\n }
\n input.addEventListener(eventType, eventHandler);\n\n var capturedClose
= observable.close;\n observable.close = function() {\n if (!capturedClo
se)\n return;\n input.removeEventListener(eventType, eventHandler);\
n\n observable.close = capturedClose;\n observable.close();\n cap
turedClose = undefined;\n }\n }\n\n function booleanSanitize(value) {\n
return Boolean(value);\n }\n\n // |element| is assumed to be an HTMLInputEleme
nt with |type| == 'radio'.\n // Returns an array containing all radio buttons o
ther than |element| that\n // have the same |name|, either in the form that |el
ement| belongs to or,\n // if no form, in the document tree to which |element|
belongs.\n //\n // This implementation is based upon the HTML spec definition
of a\n // \"radio button group\":\n // http://www.whatwg.org/specs/web-apps/
current-work/multipage/number-state.html#radio-button-group\n //\n function ge
tAssociatedRadioButtons(element) {\n if (element.form) {\n return filter
(element.form.elements, function(el) {\n return el != element &&\n
el.tagName == 'INPUT' &&\n el.type == 'radio' &&\n el
.name == element.name;\n });\n } else {\n var treeScope = getTreeSc
ope(element);\n if (!treeScope)\n return [];\n var radios = tre
eScope.querySelectorAll(\n 'input[type=\"radio\"][name=\"' + element.na
me + '\"]');\n return filter(radios, function(el) {\n return el != e
lement && !el.form;\n });\n }\n }\n\n function checkedPostEvent(input)
{\n // Only the radio button that is getting checked gets an event. We\n
// therefore find all the associated radio buttons and update their\n // chec
k binding manually.\n if (input.tagName === 'INPUT' &&\n input.type ==
= 'radio') {\n getAssociatedRadioButtons(input).forEach(function(radio) {\n
var checkedBinding = radio.bindings.checked;\n if (checkedBinding
) {\n // Set the value directly to avoid an infinite call stack.\n
checkedBinding.setValue(false);\n }\n });\n }\n }\n\n HTML
InputElement.prototype.bind = function(name, value, oneTime) {\n if (name !==
'value' && name !== 'checked')\n return HTMLElement.prototype.bind.call(th
is, name, value, oneTime);\n\n\n this.removeAttribute(name);\n var sanitiz
eFn = name == 'checked' ? booleanSanitize : sanitizeValue;\n var postEventFn
= name == 'checked' ? checkedPostEvent : noop;\n\n if (oneTime)\n return
updateInput(this, name, value, sanitizeFn);\n\n unbind(this, name);\n bin
dInputEvent(this, name, value, postEventFn);\n updateInput(this, name,\n
value.open(inputBinding(this, name, sanitizeFn)),\n sa
nitizeFn);\n\n return this.bindings[name] = value;\n }\n\n HTMLTextAreaElem
ent.prototype.bind = function(name, value, oneTime) {\n if (name !== 'value')
\n return HTMLElement.prototype.bind.call(this, name, value, oneTime);\n\n
this.removeAttribute('value');\n\n if (oneTime)\n return updateInput(
this, 'value', value);\n\n unbind(this, 'value');\n bindInputEvent(this, '
value', value);\n updateInput(this, 'value',\n value.open(inpu
tBinding(this, 'value', sanitizeValue)));\n\n return this.bindings.value = va
lue;\n }\n\n function updateOption(option, value) {\n var parentNode = opti
on.parentNode;;\n var select;\n var selectBinding;\n var oldValue;\n
if (parentNode instanceof HTMLSelectElement &&\n parentNode.bindings &&\
n parentNode.bindings.value) {\n select = parentNode;\n selectB
inding = select.bindings.value;\n oldValue = select.value;\n }\n\n op
tion.value = sanitizeValue(value);\n\n if (select && select.value != oldValue
) {\n selectBinding.setValue(select.value);\n selectBinding.discardCha
nges();\n Platform.performMicrotaskCheckpoint();\n }\n }\n\n function
optionBinding(option) {\n return function(value) {\n updateOption(option
, value);\n }\n }\n\n HTMLOptionElement.prototype.bind = function(name, val
ue, oneTime) {\n if (name !== 'value')\n return HTMLElement.prototype.bi
nd.call(this, name, value, oneTime);\n\n this.removeAttribute('value');\n\n
if (oneTime)\n return updateOption(this, value);\n\n unbind(this, 'val
ue');\n bindInputEvent(this, 'value', value);\n updateOption(this, value.o
pen(optionBinding(this)));\n return this.bindings.value = value;\n }\n\n HT
MLSelectElement.prototype.bind = function(name, value, oneTime) {\n if (name
=== 'selectedindex')\n name = 'selectedIndex';\n\n if (name !== 'selecte
dIndex' && name !== 'value')\n return HTMLElement.prototype.bind.call(this,
name, value, oneTime);\n\n this.removeAttribute(name);\n\n if (oneTime)\n
return updateInput(this, name, value);\n\n unbind(this, name);\n bin
dInputEvent(this, name, value);\n updateInput(this, name,\n va
lue.open(inputBinding(this, name)));\n return this.bindings[name] = value;\n
}\n})(this);\n","// Copyright 2011 Google Inc.\n//\n// Licensed under the Apach
e License, Version 2.0 (the \"License\");\n// you may not use this file except i
n compliance with the License.\n// You may obtain a copy of the License at\n//\n
// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by app
licable law or agreed to in writing, software\n// distributed under the License
is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF AN
Y KIND, either express or implied.\n// See the License for the specific language
governing permissions and\n// limitations under the License.\n\n(function(globa
l) {\n 'use strict';\n\n function assert(v) {\n if (!v)\n throw new Er
ror('Assertion failed');\n }\n\n var forEach = Array.prototype.forEach.call.bi
nd(Array.prototype.forEach);\n\n function getFragmentRoot(node) {\n var p;\n
while (p = node.parentNode) {\n node = p;\n }\n\n return node;\n
}\n\n function searchRefId(node, id) {\n if (!id)\n return;\n\n var
ref;\n var selector = '#' + id;\n while (!ref) {\n node = getFragmen
tRoot(node);\n\n if (node.protoContent_)\n ref = node.protoContent_.
querySelector(selector);\n else if (node.getElementById)\n ref = nod
e.getElementById(id);\n\n if (ref || !node.templateCreator_)\n break
\n\n node = node.templateCreator_;\n }\n\n return ref;\n }\n\n func
tion getInstanceRoot(node) {\n while (node.parentNode) {\n node = node.p
arentNode;\n }\n return node.templateCreator_ ? node : null;\n }\n\n var
Map;\n if (global.Map && typeof global.Map.prototype.forEach === 'function') {
\n Map = global.Map;\n } else {\n Map = function() {\n this.keys = [
];\n this.values = [];\n };\n\n Map.prototype = {\n set: functio
n(key, value) {\n var index = this.keys.indexOf(key);\n if (index
< 0) {\n this.keys.push(key);\n this.values.push(value);\n
} else {\n this.values[index] = value;\n }\n },\n\n
get: function(key) {\n var index = this.keys.indexOf(key);\n if
(index < 0)\n return;\n\n return this.values[index];\n },\n
\n delete: function(key, value) {\n var index = this.keys.indexOf(ke
y);\n if (index < 0)\n return false;\n\n this.keys.splice
(index, 1);\n this.values.splice(index, 1);\n return true;\n
},\n\n forEach: function(f, opt_this) {\n for (var i = 0; i < this.k
eys.length; i++)\n f.call(opt_this || this, this.values[i], this.keys[i
], this);\n }\n };\n }\n\n // JScript does not have __proto__. We wrap
all object literals with\n // createObject which uses Object.create, Object.de
fineProperty and\n // Object.getOwnPropertyDescriptor to create a new object th
at does the exact\n // same thing. The main downside to this solution is that w
e have to extract\n // all those property descriptors for IE.\n var createObje
ct = ('__proto__' in {}) ?\n function(obj) { return obj; } :\n functio
n(obj) {\n var proto = obj.__proto__;\n if (!proto)\n ret
urn obj;\n var newObject = Object.create(proto);\n Object.getOwnPr
opertyNames(obj).forEach(function(name) {\n Object.defineProperty(newOb
ject, name,\n Object.getOwnPropertyDescriptor(obj,
name));\n });\n return newObject;\n };\n\n // IE does not s
upport have Document.prototype.contains.\n if (typeof document.contains != 'fun
ction') {\n Document.prototype.contains = function(node) {\n if (node ==
= this || node.parentNode === this)\n return true;\n return this.doc
umentElement.contains(node);\n }\n }\n\n var BIND = 'bind';\n var REPEAT =
'repeat';\n var IF = 'if';\n\n var templateAttributeDirectives = {\n 'temp
late': true,\n 'repeat': true,\n 'bind': true,\n 'ref': true\n };\n\n
var semanticTemplateElements = {\n 'THEAD': true,\n 'TBODY': true,\n '
TFOOT': true,\n 'TH': true,\n 'TR': true,\n 'TD': true,\n 'COLGROUP'
: true,\n 'COL': true,\n 'CAPTION': true,\n 'OPTION': true,\n 'OPTGR
OUP': true\n };\n\n var hasTemplateElement = typeof HTMLTemplateElement !== 'u
ndefined';\n\n var allTemplatesSelectors = 'template, ' +\n Object.keys(se
manticTemplateElements).map(function(tagName) {\n return tagName.toLowerC
ase() + '[template]';\n }).join(', ');\n\n function isSVGTemplate(el) {\n
return el.tagName == 'template' &&\n el.namespaceURI == 'http://www
.w3.org/2000/svg';\n }\n\n function isHTMLTemplate(el) {\n return el.tagNam
e == 'TEMPLATE' &&\n el.namespaceURI == 'http://www.w3.org/1999/xhtml'
;\n }\n\n function isAttributeTemplate(el) {\n return Boolean(semanticTempl
ateElements[el.tagName] &&\n el.hasAttribute('template'));\n
}\n\n function isTemplate(el) {\n if (el.isTemplate_ === undefined)\n e
l.isTemplate_ = el.tagName == 'TEMPLATE' || isAttributeTemplate(el);\n\n retu
rn el.isTemplate_;\n }\n\n // FIXME: Observe templates being added/removed fro
m documents\n // FIXME: Expose imperative API to decorate and observe templates
in\n // \"disconnected tress\" (e.g. ShadowRoot)\n document.addEventListener(
'DOMContentLoaded', function(e) {\n bootstrapTemplatesRecursivelyFrom(documen
t);\n // FIXME: Is this needed? Seems like it shouldn't be.\n Platform.per
formMicrotaskCheckpoint();\n }, false);\n\n function forAllTemplatesFrom(node,
fn) {\n var subTemplates = node.querySelectorAll(allTemplatesSelectors);\n\n
if (isTemplate(node))\n fn(node)\n forEach(subTemplates, fn);\n }\n
\n function bootstrapTemplatesRecursivelyFrom(node) {\n function bootstrap(t
emplate) {\n if (!HTMLTemplateElement.decorate(template))\n bootstra
pTemplatesRecursivelyFrom(template.content);\n }\n\n forAllTemplatesFrom(n
ode, bootstrap);\n }\n\n if (!hasTemplateElement) {\n /**\n * This repr
esents a <template> element.\n * @constructor\n * @extends {HTMLElement}
\n */\n global.HTMLTemplateElement = function() {\n throw TypeError(
'Illegal constructor');\n };\n }\n\n var hasProto = '__proto__' in {};\n\n
function mixin(to, from) {\n Object.getOwnPropertyNames(from).forEach(functi
on(name) {\n Object.defineProperty(to, name,\n O
bject.getOwnPropertyDescriptor(from, name));\n });\n }\n\n // http://dvcs.w
3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html#dfn-template-conte
nts-owner\n function getOrCreateTemplateContentsOwner(template) {\n var doc
= template.ownerDocument\n if (!doc.defaultView)\n return doc;\n var
d = doc.templateContentsOwner_;\n if (!d) {\n // TODO(arv): This should
either be a Document or HTMLDocument depending\n // on doc.\n d = doc.
implementation.createHTMLDocument('');\n while (d.lastChild) {\n d.r
emoveChild(d.lastChild);\n }\n doc.templateContentsOwner_ = d;\n }\
n return d;\n }\n\n function getTemplateStagingDocument(template) {\n if
(!template.stagingDocument_) {\n var owner = template.ownerDocument;\n
if (!owner.stagingDocument_) {\n owner.stagingDocument_ = owner.impleme
ntation.createHTMLDocument('');\n owner.stagingDocument_.stagingDocument_
= owner.stagingDocument_;\n }\n\n template.stagingDocument_ = owner.s
tagingDocument_;\n }\n\n return template.stagingDocument_;\n }\n\n // Fo
r non-template browsers, the parser will disallow <template> in certain\n // lo
cations, so we allow \"attribute templates\" which combine the template\n // el
ement with the top-level container node of the content, e.g.\n //\n // <tr t
emplate repeat=\"{{ foo }}\"\" class=\"bar\"><td>Bar</td></tr>\n //\n // becom
es\n //\n // <template repeat=\"{{ foo }}\">\n // + #document-fragment\n
// + <tr class=\"bar\">\n // + <td>Bar</td>\n //\n function extrac
tTemplateFromAttributeTemplate(el) {\n var template = el.ownerDocument.create
Element('template');\n el.parentNode.insertBefore(template, el);\n\n var a
ttribs = el.attributes;\n var count = attribs.length;\n while (count-- > 0
) {\n var attrib = attribs[count];\n if (templateAttributeDirectives[a
ttrib.name]) {\n if (attrib.name !== 'template')\n template.setA
ttribute(attrib.name, attrib.value);\n el.removeAttribute(attrib.name);\n
}\n }\n\n return template;\n }\n\n function extractTemplateFromSVG
Template(el) {\n var template = el.ownerDocument.createElement('template');\n
el.parentNode.insertBefore(template, el);\n\n var attribs = el.attributes
;\n var count = attribs.length;\n while (count-- > 0) {\n var attrib
= attribs[count];\n template.setAttribute(attrib.name, attrib.value);\n
el.removeAttribute(attrib.name);\n }\n\n el.parentNode.removeChild(el);\
n return template;\n }\n\n function liftNonNativeTemplateChildrenIntoConten
t(template, el, useRoot) {\n var content = template.content;\n if (useRoot
) {\n content.appendChild(el);\n return;\n }\n\n var child;\n
while (child = el.firstChild) {\n content.appendChild(child);\n }\n }\
n\n /**\n * Ensures proper API and content model for template elements.\n *
@param {HTMLTemplateElement} opt_instanceRef The template element which\n *
|el| template element will return as the value of its ref(), and whose\n *
content will be used as source when createInstance() is invoked.\n */\n H
TMLTemplateElement.decorate = function(el, opt_instanceRef) {\n if (el.templa
teIsDecorated_)\n return false;\n\n var templateElement = el;\n templ
ateElement.templateIsDecorated_ = true;\n\n var isNativeHTMLTemplate = isHTML
Template(templateElement) &&\n hasTemplateElement;
\n var bootstrapContents = isNativeHTMLTemplate;\n var liftContents = !isN
ativeHTMLTemplate;\n var liftRoot = false;\n\n if (!isNativeHTMLTemplate)
{\n if (isAttributeTemplate(templateElement)) {\n assert(!opt_instan
ceRef);\n templateElement = extractTemplateFromAttributeTemplate(el);\n
templateElement.templateIsDecorated_ = true;\n isNativeHTMLTemplate
= hasTemplateElement;\n liftRoot = true;\n } else if (isSVGTemplate
(templateElement)) {\n templateElement = extractTemplateFromSVGTemplate(e
l);\n templateElement.templateIsDecorated_ = true;\n isNativeHTMLT
emplate = hasTemplateElement;\n }\n }\n\n if (!isNativeHTMLTemplate)
{\n fixTemplateElementPrototype(templateElement);\n var doc = getOrCre
ateTemplateContentsOwner(templateElement);\n templateElement.content_ = doc
.createDocumentFragment();\n }\n\n if (opt_instanceRef) {\n // templa
te is contained within an instance, its direct content must be\n // empty\n
templateElement.instanceRef_ = opt_instanceRef;\n } else if (liftConten
ts) {\n liftNonNativeTemplateChildrenIntoContent(templateElement,\n
el,\n
liftRoot);\n } else if (bootstrapContents) {\n bootstrapTempl
atesRecursivelyFrom(templateElement.content);\n }\n\n return true;\n };\n
\n // TODO(rafaelw): This used to decorate recursively all templates from a giv
en\n // node. This happens by default on 'DOMContentLoaded', but may be needed\
n // in subtrees not descendent from document (e.g. ShadowRoot).\n // Review w
hether this is the right public API.\n HTMLTemplateElement.bootstrap = bootstra
pTemplatesRecursivelyFrom;\n\n var htmlElement = global.HTMLUnknownElement || H
TMLElement;\n\n var contentDescriptor = {\n get: function() {\n return
this.content_;\n },\n enumerable: true,\n configurable: true\n };\n\n
if (!hasTemplateElement) {\n // Gecko is more picky with the prototype than
WebKit. Make sure to use the\n // same prototype as created in the constructo
r.\n HTMLTemplateElement.prototype = Object.create(htmlElement.prototype);\n\
n Object.defineProperty(HTMLTemplateElement.prototype, 'content',\n
contentDescriptor);\n }\n\n function fixTemplateElementPrototy
pe(el) {\n if (hasProto)\n el.__proto__ = HTMLTemplateElement.prototype;
\n else\n mixin(el, HTMLTemplateElement.prototype);\n }\n\n function e
nsureSetModelScheduled(template) {\n if (!template.setModelFn_) {\n temp
late.setModelFn_ = function() {\n template.setModelFnScheduled_ = false;\
n var map = getBindings(template,\n template.delegate_ && temp
late.delegate_.prepareBinding);\n processBindings(template, map, template
.model_);\n };\n }\n\n if (!template.setModelFnScheduled_) {\n t
emplate.setModelFnScheduled_ = true;\n Observer.runEOM_(template.setModelFn
_);\n }\n }\n\n mixin(HTMLTemplateElement.prototype, {\n processBindingD
irectives_: function(directives) {\n if (this.iterator_)\n this.iter
ator_.closeDeps();\n\n if (!directives.if && !directives.bind && !directive
s.repeat) {\n if (this.iterator_) {\n this.iterator_.close();\n
this.iterator_ = undefined;\n this.bindings.iterator = undefin
ed;\n }\n\n return;\n }\n\n if (!this.iterator_) {\n
this.iterator_ = new TemplateIterator(this);\n this.bindings = this.b
indings || {};\n this.bindings.iterator = this.iterator_;\n }\n\n
this.iterator_.updateDependencies(directives, this.model_);\n return thi
s.iterator_;\n },\n\n createInstance: function(model, bindingDelegate, del
egate_,\n instanceBindings_) {\n if (bindingDel
egate)\n delegate_ = this.newDelegate_(bindingDelegate);\n\n var con
tent = this.ref.content;\n var map = this.bindingMap_;\n if (!map || m
ap.content !== content) {\n // TODO(rafaelw): Setup a MutationObserver on
content to detect\n // when the instanceMap is invalid.\n map = c
reateInstanceBindingMap(content,\n delegate_ && delegate_.prepareBind
ing) || [];\n map.content = content;\n this.bindingMap_ = map;\n
}\n\n var stagingDocument = getTemplateStagingDocument(this);\n va
r instance = stagingDocument.createDocumentFragment();\n instance.templateC
reator_ = this;\n instance.protoContent_ = content;\n\n var instanceRe
cord = {\n firstNode: null,\n lastNode: null,\n model: mode
l\n };\n\n var i = 0;\n for (var child = content.firstChild; chil
d; child = child.nextSibling) {\n var clone = cloneAndBindInstance(child,
instance, stagingDocument,\n map.childr
en[i++],\n model,\n
delegate_,\n instanc
eBindings_);\n clone.templateInstance_ = instanceRecord;\n }\n\n
instanceRecord.firstNode = instance.firstChild;\n instanceRecord.lastNode
= instance.lastChild;\n instance.templateCreator_ = undefined;\n inst
ance.protoContent_ = undefined;\n return instance;\n },\n\n get model
() {\n return this.model_;\n },\n\n set model(model) {\n this.mo
del_ = model;\n ensureSetModelScheduled(this);\n },\n\n get bindingDe
legate() {\n return this.delegate_ && this.delegate_.raw;\n },\n\n se
tDelegate_: function(delegate) {\n this.delegate_ = delegate;\n this.b
indingMap_ = undefined;\n if (this.iterator_) {\n this.iterator_.ins
tancePositionChangedFn_ = undefined;\n this.iterator_.instanceModelFn_ =
undefined;\n }\n },\n\n newDelegate_: function(bindingDelegate) {\n
if (!bindingDelegate)\n return {};\n\n function delegateFn(name)
{\n var fn = bindingDelegate && bindingDelegate[name];\n if (type
of fn != 'function')\n return;\n\n return function() {\n
return fn.apply(bindingDelegate, arguments);\n };\n }\n\n ret
urn {\n raw: bindingDelegate,\n prepareBinding: delegateFn('prepar
eBinding'),\n prepareInstanceModel: delegateFn('prepareInstanceModel'),\n
prepareInstancePositionChanged:\n delegateFn('prepareInstance
PositionChanged')\n };\n },\n\n // TODO(rafaelw): Assigning .bindingD
elegate always succeeds. It may\n // make sense to issue a warning or even th
row if the template is already\n // \"activated\", since this would be a stra
nge thing to do.\n set bindingDelegate(bindingDelegate) {\n this.setDele
gate_(this.newDelegate_(bindingDelegate));\n },\n\n get ref() {\n var
ref = searchRefId(this, this.getAttribute('ref'));\n if (!ref)\n re
f = this.instanceRef_;\n\n if (!ref)\n return this;\n\n var nex
tRef = ref.ref;\n return nextRef ? nextRef : ref;\n }\n });\n\n // Ret
urns\n // a) undefined if there are no mustaches.\n // b) [TEXT, (ONE_TIME
?, PATH, DELEGATE_FN, TEXT)+] if there is at least one mustache.\n function par
seMustaches(s, name, node, prepareBindingFn) {\n if (!s || !s.length)\n
return;\n\n var tokens;\n var length = s.length;\n var startIndex = 0,
lastIndex = 0, endIndex = 0;\n var onlyOneTime = true;\n while (lastIndex
< length) {\n var startIndex = s.indexOf('{{', lastIndex);\n var oneTi
meStart = s.indexOf('[[', lastIndex);\n var oneTime = false;\n var ter
minator = '}}';\n\n if (oneTimeStart >= 0 &&\n (startIndex < 0 ||
oneTimeStart < startIndex)) {\n startIndex = oneTimeStart;\n oneTi
me = true;\n terminator = ']]';\n }\n\n endIndex = startIndex <
0 ? -1 : s.indexOf(terminator, startIndex + 2);\n\n if (endIndex < 0) {\n
if (!tokens)\n return;\n\n tokens.push(s.slice(lastIndex)
); // TEXT\n break;\n }\n\n tokens = tokens || [];\n token
s.push(s.slice(lastIndex, startIndex)); // TEXT\n var pathString = s.slice(
startIndex + 2, endIndex).trim();\n tokens.push(oneTime); // ONE_TIME?\n
onlyOneTime = onlyOneTime && oneTime;\n tokens.push(Path.get(pathString)
); // PATH\n var delegateFn = prepareBindingFn &&\n p
repareBindingFn(pathString, name, node);\n tokens.push(delegateFn); // DELE
GATE_FN\n lastIndex = endIndex + 2;\n }\n\n if (lastIndex === length)
\n tokens.push(''); // TEXT\n\n tokens.hasOnePath = tokens.length === 5;
\n tokens.isSimplePath = tokens.hasOnePath &&\n toke
ns[0] == '' &&\n tokens[4] == '';\n tokens.onlyOneTi
me = onlyOneTime;\n\n tokens.combinator = function(values) {\n var newVa
lue = tokens[0];\n\n for (var i = 1; i < tokens.length; i += 4) {\n
var value = tokens.hasOnePath ? values : values[(i - 1) / 4];\n if (value
!== undefined)\n newValue += value;\n newValue += tokens[i + 3]
;\n }\n\n return newValue;\n }\n\n return tokens;\n };\n\n fun
ction processOneTimeBinding(name, tokens, node, model) {\n if (tokens.hasOneP
ath) {\n var delegateFn = tokens[3];\n var value = delegateFn ? delega
teFn(model, node, true) :\n tokens[2].getValueFrom
(model);\n return tokens.isSimplePath ? value : tokens.combinator(value);\n
}\n\n var values = [];\n for (var i = 1; i < tokens.length; i += 4) {\
n var delegateFn = tokens[i + 2];\n values[(i - 1) / 4] = delegateFn ?
delegateFn(model, node) :\n tokens[i + 1].getValueFrom(model);\n }\
n\n return tokens.combinator(values);\n }\n\n function processSinglePathBin
ding(name, tokens, node, model) {\n var delegateFn = tokens[3];\n var obse
rver = delegateFn ? delegateFn(model, node, false) :\n new PathObserver(m
odel, tokens[2]);\n\n return tokens.isSimplePath ? observer :\n new Ob
serverTransform(observer, tokens.combinator);\n }\n\n function processBinding(
name, tokens, node, model) {\n if (tokens.onlyOneTime)\n return processO
neTimeBinding(name, tokens, node, model);\n\n if (tokens.hasOnePath)\n r
eturn processSinglePathBinding(name, tokens, node, model);\n\n var observer =
new CompoundObserver();\n\n for (var i = 1; i < tokens.length; i += 4) {\n
var oneTime = tokens[i];\n var delegateFn = tokens[i + 2];\n\n if
(delegateFn) {\n var value = delegateFn(model, node, oneTime);\n i
f (oneTime)\n observer.addPath(value)\n else\n observer
.addObserver(value);\n continue;\n }\n\n var path = tokens[i +
1];\n if (oneTime)\n observer.addPath(path.getValueFrom(model))\n
else\n observer.addPath(model, path);\n }\n\n return new Observe
rTransform(observer, tokens.combinator);\n }\n\n function processBindings(node
, bindings, model, instanceBindings) {\n for (var i = 0; i < bindings.length;
i += 2) {\n var name = bindings[i]\n var tokens = bindings[i + 1];\n
var value = processBinding(name, tokens, node, model);\n var binding =
node.bind(name, value, tokens.onlyOneTime);\n if (binding && instanceBindi
ngs)\n instanceBindings.push(binding);\n }\n\n if (!bindings.isTemp
late)\n return;\n\n node.model_ = model;\n var iter = node.processBin
dingDirectives_(bindings);\n if (instanceBindings && iter)\n instanceBin
dings.push(iter);\n }\n\n function parseWithDefault(el, name, prepareBindingFn
) {\n var v = el.getAttribute(name);\n return parseMustaches(v == '' ? '{{
}}' : v, name, el, prepareBindingFn);\n }\n\n function parseAttributeBindings(
element, prepareBindingFn) {\n assert(element);\n\n var bindings = [];\n
var ifFound = false;\n var bindFound = false;\n\n for (var i = 0; i < el
ement.attributes.length; i++) {\n var attr = element.attributes[i];\n
var name = attr.name;\n var value = attr.value;\n\n // Allow bindings
expressed in attributes to be prefixed with underbars.\n // We do this to a
llow correct semantics for browsers that don't implement\n // <template> wh
ere certain attributes might trigger side-effects -- and\n // for IE which
sanitizes certain attributes, disallowing mustache\n // replacements in the
ir text.\n while (name[0] === '_') {\n name = name.substring(1);\n
}\n\n if (isTemplate(element) &&\n (name === IF || name === BI
ND || name === REPEAT)) {\n continue;\n }\n\n var tokens = pars
eMustaches(value, name, element,\n prepareBindi
ngFn);\n if (!tokens)\n continue;\n\n bindings.push(name, token
s);\n }\n\n if (isTemplate(element)) {\n bindings.isTemplate = true;\
n bindings.if = parseWithDefault(element, IF, prepareBindingFn);\n bin
dings.bind = parseWithDefault(element, BIND, prepareBindingFn);\n bindings.
repeat = parseWithDefault(element, REPEAT, prepareBindingFn);\n\n if (bindi
ngs.if && !bindings.bind && !bindings.repeat)\n bindings.bind = parseMust
aches('{{}}', BIND, element, prepareBindingFn);\n }\n\n return bindings;\n
}\n\n function getBindings(node, prepareBindingFn) {\n if (node.nodeType =
== Node.ELEMENT_NODE)\n return parseAttributeBindings(node, prepareBindingF
n);\n\n if (node.nodeType === Node.TEXT_NODE) {\n var tokens = parseMust
aches(node.data, 'textContent', node,\n prepare
BindingFn);\n if (tokens)\n return ['textContent', tokens];\n }\n
\n return [];\n }\n\n function cloneAndBindInstance(node, parent, stagingDo
cument, bindings, model,\n delegate,\n
instanceBindings,\n instance
Record) {\n var clone = parent.appendChild(stagingDocument.importNode(node, f
alse));\n\n var i = 0;\n for (var child = node.firstChild; child; child =
child.nextSibling) {\n cloneAndBindInstance(child, clone, stagingDocument,\
n bindings.children[i++],\n
model,\n delegate,\n ins
tanceBindings);\n }\n\n if (bindings.isTemplate) {\n HTMLTemplateElem
ent.decorate(clone, node);\n if (delegate)\n clone.setDelegate_(dele
gate);\n }\n\n processBindings(clone, bindings, model, instanceBindings);\
n return clone;\n }\n\n function createInstanceBindingMap(node, prepareBind
ingFn) {\n var map = getBindings(node, prepareBindingFn);\n map.children =
{};\n var index = 0;\n for (var child = node.firstChild; child; child = c
hild.nextSibling) {\n map.children[index++] = createInstanceBindingMap(chil
d, prepareBindingFn);\n }\n\n return map;\n }\n\n Object.defineProperty(
Node.prototype, 'templateInstance', {\n get: function() {\n var instance
= this.templateInstance_;\n return instance ? instance :\n (this.
parentNode ? this.parentNode.templateInstance : undefined);\n }\n });\n\n f
unction TemplateIterator(templateElement) {\n this.closed = false;\n this.
templateElement_ = templateElement;\n\n // Flattened array of tuples:\n //
<instanceTerminatorNode, [bindingsSetupByInstance]>\n this.terminators = [
];\n\n this.deps = undefined;\n this.iteratedValue = [];\n this.present
Value = undefined;\n this.arrayObserver = undefined;\n }\n\n TemplateIterat
or.prototype = {\n closeDeps: function() {\n var deps = this.deps;\n
if (deps) {\n if (deps.ifOneTime === false)\n deps.ifValue.clo
se();\n if (deps.oneTime === false)\n deps.value.close();\n
}\n },\n\n updateDependencies: function(directives, model) {\n this.
closeDeps();\n\n var deps = this.deps = {};\n var template = this.temp
lateElement_;\n\n if (directives.if) {\n deps.hasIf = true;\n
deps.ifOneTime = directives.if.onlyOneTime;\n deps.ifValue = processBind
ing(IF, directives.if, template, model);\n\n // oneTime if & predicate is
false. nothing else to do.\n if (deps.ifOneTime && !deps.ifValue) {\n
this.updateIteratedValue();\n return;\n }\n\n if (
!deps.ifOneTime)\n deps.ifValue.open(this.updateIteratedValue, this);\n
}\n\n if (directives.repeat) {\n deps.repeat = true;\n
deps.oneTime = directives.repeat.onlyOneTime;\n deps.value = processBindi
ng(REPEAT, directives.repeat, template, model);\n } else {\n deps.re
peat = false;\n deps.oneTime = directives.bind.onlyOneTime;\n deps
.value = processBinding(BIND, directives.bind, template, model);\n }\n\n
if (!deps.oneTime)\n deps.value.open(this.updateIteratedValue, this);\
n\n this.updateIteratedValue();\n },\n\n updateIteratedValue: functio
n() {\n if (this.deps.hasIf) {\n var ifValue = this.deps.ifValue;\n
if (!this.deps.ifOneTime)\n ifValue = ifValue.discardChanges();\
n if (!ifValue) {\n this.valueChanged();\n return;\n
}\n }\n\n var value = this.deps.value;\n if (!this.deps.oneT
ime)\n value = value.discardChanges();\n if (!this.deps.repeat)\n
value = [value];\n var observe = this.deps.repeat &&\n
!this.deps.oneTime &&\n Array.isArray(value);\n this
.valueChanged(value, observe);\n },\n\n valueChanged: function(value, obse
rveValue) {\n if (!Array.isArray(value))\n value = [];\n\n if (
value === this.iteratedValue)\n return;\n\n this.unobserve();\n
this.presentValue = value;\n if (observeValue) {\n this.arrayObserv
er = new ArrayObserver(this.presentValue);\n this.arrayObserver.open(this
.handleSplices, this);\n }\n\n this.handleSplices(ArrayObserver.calcul
ateSplices(this.presentValue,\n
this.iteratedValue));\n },\n\n getTerminatorAt: function(index) {\n
if (index == -1)\n return this.templateElement_;\n var termina
tor = this.terminators[index*2];\n if (terminator.nodeType !== Node.ELEMENT
_NODE ||\n this.templateElement_ === terminator) {\n return term
inator;\n }\n\n var subIterator = terminator.iterator_;\n if (!su
bIterator)\n return terminator;\n\n return subIterator.getTerminator
At(subIterator.terminators.length/2 - 1);\n },\n\n // TODO(rafaelw): If we
inserting sequences of instances we can probably\n // avoid lots of calls to
getTerminatorAt(), or cache its result.\n insertInstanceAt: function(index,
fragment, instanceNodes,\n instanceBindings) {\n
var previousTerminator = this.getTerminatorAt(index - 1);\n var termina
tor = previousTerminator;\n if (fragment)\n terminator = fragment.la
stChild || terminator;\n else if (instanceNodes)\n terminator = inst
anceNodes[instanceNodes.length - 1] || terminator;\n\n this.terminators.spl
ice(index*2, 0, terminator, instanceBindings);\n var parent = this.template
Element_.parentNode;\n var insertBeforeNode = previousTerminator.nextSiblin
g;\n\n if (fragment) {\n parent.insertBefore(fragment, insertBeforeN
ode);\n } else if (instanceNodes) {\n for (var i = 0; i < instanceNo
des.length; i++)\n parent.insertBefore(instanceNodes[i], insertBeforeNo
de);\n }\n },\n\n extractInstanceAt: function(index) {\n var ins
tanceNodes = [];\n var previousTerminator = this.getTerminatorAt(index - 1)
;\n var terminator = this.getTerminatorAt(index);\n instanceNodes.inst
anceBindings = this.terminators[index*2 + 1];\n this.terminators.splice(ind
ex*2, 2);\n\n var parent = this.templateElement_.parentNode;\n while (
terminator !== previousTerminator) {\n var node = previousTerminator.next
Sibling;\n if (node == terminator)\n terminator = previousTermin
ator;\n\n parent.removeChild(node);\n instanceNodes.push(node);\n
}\n\n return instanceNodes;\n },\n\n getDelegateFn: function(fn)
{\n fn = fn && fn(this.templateElement_);\n return typeof fn === 'fun
ction' ? fn : null;\n },\n\n handleSplices: function(splices) {\n if
(this.closed || !splices.length)\n return;\n\n var template = this.t
emplateElement_;\n\n if (!template.parentNode) {\n this.close();\n
return;\n }\n\n ArrayObserver.applySplices(this.iteratedValue, t
his.presentValue,\n splices);\n\n var deleg
ate = template.delegate_;\n if (this.instanceModelFn_ === undefined) {\n
this.instanceModelFn_ =\n this.getDelegateFn(delegate && delegat
e.prepareInstanceModel);\n }\n\n if (this.instancePositionChangedFn_ =
== undefined) {\n this.instancePositionChangedFn_ =\n this.get
DelegateFn(delegate &&\n delegate.prepareInstanceP
ositionChanged);\n }\n\n var instanceCache = new Map;\n var remov
eDelta = 0;\n splices.forEach(function(splice) {\n splice.removed.fo
rEach(function(model) {\n var instanceNodes =\n this.extra
ctInstanceAt(splice.index + removeDelta);\n instanceCache.set(model, in
stanceNodes);\n }, this);\n\n removeDelta -= splice.addedCount;\n
}, this);\n\n splices.forEach(function(splice) {\n var addIndex
= splice.index;\n for (; addIndex < splice.index + splice.addedCount; ad
dIndex++) {\n var model = this.iteratedValue[addIndex];\n var
fragment = undefined;\n var instanceNodes = instanceCache.get(model);\n
var instanceBindings;\n if (instanceNodes) {\n ins
tanceCache.delete(model);\n instanceBindings = instanceNodes.instance
Bindings;\n } else {\n instanceBindings = [];\n i
f (this.instanceModelFn_)\n model = this.instanceModelFn_(model);\n
\n if (model !== undefined) {\n fragment = template.crea
teInstance(model, undefined, delegate,\n
instanceBindings);\n }\n }\n\n this.insert
InstanceAt(addIndex, fragment, instanceNodes,\n i
nstanceBindings);\n }\n }, this);\n\n instanceCache.forEach(fun
ction(instanceNodes) {\n this.closeInstanceBindings(instanceNodes.instanc
eBindings);\n }, this);\n\n if (this.instancePositionChangedFn_)\n
this.reportInstancesMoved(splices);\n },\n\n reportInstanceMoved: func
tion(index) {\n var previousTerminator = this.getTerminatorAt(index - 1);\n
var terminator = this.getTerminatorAt(index);\n if (previousTerminato
r === terminator)\n return; // instance has zero nodes.\n\n // We mu
st use the first node of the instance, because any subsequent\n // nodes ma
y have been generated by sub-templates.\n // TODO(rafaelw): This is brittle
WRT instance mutation -- e.g. if the\n // first node was removed by script
.\n var templateInstance = previousTerminator.nextSibling.templateInstance;
\n this.instancePositionChangedFn_(templateInstance, index);\n },\n\n
reportInstancesMoved: function(splices) {\n var index = 0;\n var offs
et = 0;\n for (var i = 0; i < splices.length; i++) {\n var splice =
splices[i];\n if (offset != 0) {\n while (index < splice.index)
{\n this.reportInstanceMoved(index);\n index++;\n
}\n } else {\n index = splice.index;\n }\n\n whil
e (index < splice.index + splice.addedCount) {\n this.reportInstanceMov
ed(index);\n index++;\n }\n\n offset += splice.addedCount
- splice.removed.length;\n }\n\n if (offset == 0)\n return;\n\
n var length = this.terminators.length / 2;\n while (index < length) {
\n this.reportInstanceMoved(index);\n index++;\n }\n },\n\
n closeInstanceBindings: function(instanceBindings) {\n for (var i = 0;
i < instanceBindings.length; i++) {\n instanceBindings[i].close();\n
}\n },\n\n unobserve: function() {\n if (!this.arrayObserver)\n
return;\n\n this.arrayObserver.close();\n this.arrayObserver = unde
fined;\n },\n\n close: function() {\n if (this.closed)\n retur
n;\n this.unobserve();\n for (var i = 1; i < this.terminators.length;
i += 2) {\n this.closeInstanceBindings(this.terminators[i]);\n }\n\n
this.terminators.length = 0;\n this.closeDeps();\n this.template
Element_.iterator_ = undefined;\n this.closed = true;\n }\n };\n\n //
Polyfill-specific API.\n HTMLTemplateElement.forAllTemplatesFrom_ = forAllTempl
atesFrom;\n})(this);\n","/*\n Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@g
mail.com>\n Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n Copyright
(C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n Copyright (C) 2012 Mathias
Bynens <mathias@qiwi.be>\n Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@
boekesteijn.nl>\n Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n Copyr
ight (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n Copyright (C) 2012 Arpad
Borsos <arpad.borsos@googlemail.com>\n Copyright (C) 2011 Ariya Hidayat <ariya.
hidayat@gmail.com>\n\n Redistribution and use in source and binary forms, with
or without\n modification, are permitted provided that the following conditions
are met:\n\n * Redistributions of source code must retain the above copyrigh
t\n notice, this list of conditions and the following disclaimer.\n * Re
distributions in binary form must reproduce the above copyright\n notice, t
his list of conditions and the following disclaimer in the\n documentation
and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PRO
VIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EV
ENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; O
R BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETH
ER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE P
OSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function (global) {\n 'use strict';\n\n
var Token,\n TokenName,\n Syntax,\n Messages,\n sou
rce,\n index,\n length,\n delegate,\n lookahead,\n
state;\n\n Token = {\n BooleanLiteral: 1,\n EOF: 2,\n
Identifier: 3,\n Keyword: 4,\n NullLiteral: 5,\n Numeri
cLiteral: 6,\n Punctuator: 7,\n StringLiteral: 8\n };\n\n To
kenName = {};\n TokenName[Token.BooleanLiteral] = 'Boolean';\n TokenName[T
oken.EOF] = '<end>';\n TokenName[Token.Identifier] = 'Identifier';\n Token
Name[Token.Keyword] = 'Keyword';\n TokenName[Token.NullLiteral] = 'Null';\n
TokenName[Token.NumericLiteral] = 'Numeric';\n TokenName[Token.Punctuator]
= 'Punctuator';\n TokenName[Token.StringLiteral] = 'String';\n\n Syntax =
{\n ArrayExpression: 'ArrayExpression',\n BinaryExpression: 'Binar
yExpression',\n CallExpression: 'CallExpression',\n ConditionalExp
ression: 'ConditionalExpression',\n EmptyStatement: 'EmptyStatement',\n
ExpressionStatement: 'ExpressionStatement',\n Identifier: 'Identifi
er',\n Literal: 'Literal',\n LabeledStatement: 'LabeledStatement',
\n LogicalExpression: 'LogicalExpression',\n MemberExpression: 'Me
mberExpression',\n ObjectExpression: 'ObjectExpression',\n Program
: 'Program',\n Property: 'Property',\n ThisExpression: 'ThisExpres
sion',\n UnaryExpression: 'UnaryExpression'\n };\n\n // Error messa
ges should be identical to V8.\n Messages = {\n UnexpectedToken: 'Une
xpected token %0',\n UnknownLabel: 'Undefined label \\'%0\\'',\n R
edeclaration: '%0 \\'%1\\' has already been declared'\n };\n\n // Ensure t
he condition is true, otherwise throw an error.\n // This is only to have a b
etter contract semantic, i.e. another safety net\n // to catch a logic error.
The condition shall be fulfilled in normal case.\n // Do NOT use this to enf
orce a certain condition on any user input.\n\n function assert(condition, me
ssage) {\n if (!condition) {\n throw new Error('ASSERT: ' + me
ssage);\n }\n }\n\n function isDecimalDigit(ch) {\n return (
ch >= 48 && ch <= 57); // 0..9\n }\n\n\n // 7.2 White Space\n\n funct
ion isWhiteSpace(ch) {\n return (ch === 32) || // space\n (ch
=== 9) || // tab\n (ch === 0xB) ||\n (ch === 0xC) ||
\n (ch === 0xA0) ||\n (ch >= 0x1680 && '\\u1680\\u180E\\u2
000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F
\\u205F\\u3000\\uFEFF'.indexOf(String.fromCharCode(ch)) > 0);\n }\n\n // 7
.3 Line Terminators\n\n function isLineTerminator(ch) {\n return (ch =
== 10) || (ch === 13) || (ch === 0x2028) || (ch === 0x2029);\n }\n\n // 7.
6 Identifier Names and Identifiers\n\n function isIdentifierStart(ch) {\n
return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore)\n
(ch >= 65 && ch <= 90) || // A..Z\n (ch >= 97 && ch <
= 122); // a..z\n }\n\n function isIdentifierPart(ch) {\n
return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore)\n
(ch >= 65 && ch <= 90) || // A..Z\n (ch >= 97 && ch <= 12
2) || // a..z\n (ch >= 48 && ch <= 57); // 0..9\n
}\n\n // 7.6.1.1 Keywords\n\n function isKeyword(id) {\n return (i
d === 'this')\n }\n\n // 7.4 Comments\n\n function skipWhitespace() {\n
while (index < length && isWhiteSpace(source.charCodeAt(index))) {\n
++index;\n }\n }\n\n function getIdentifier() {\n var
start, ch;\n\n start = index++;\n while (index < length) {\n
ch = source.charCodeAt(index);\n if (isIdentifierPart(ch)) {\n
++index;\n } else {\n break;\n
}\n }\n\n return source.slice(start, index);\n }\n\n fun
ction scanIdentifier() {\n var start, id, type;\n\n start = index;
\n\n id = getIdentifier();\n\n // There is no keyword or literal w
ith only one character.\n // Thus, it must be an identifier.\n if
(id.length === 1) {\n type = Token.Identifier;\n } else if (is
Keyword(id)) {\n type = Token.Keyword;\n } else if (id === 'nu
ll') {\n type = Token.NullLiteral;\n } else if (id === 'true'
|| id === 'false') {\n type = Token.BooleanLiteral;\n } else {
\n type = Token.Identifier;\n }\n\n return {\n
type: type,\n value: id,\n range: [start, index]\n
};\n }\n\n\n // 7.7 Punctuators\n\n function scanPunctuator() {\n
var start = index,\n code = source.charCodeAt(index),\n
code2,\n ch1 = source[index],\n ch2;\n\n switch
(code) {\n\n // Check for most common single-character punctuators.\n
case 46: // . dot\n case 40: // ( open bracket\n case 41:
// ) close bracket\n case 59: // ; semicolon\n case 44: // ,
comma\n case 123: // { open curly brace\n case 125: // } close
curly brace\n case 91: // [\n case 93: // ]\n case 58:
// :\n case 63: // ?\n ++index;\n return {\n
type: Token.Punctuator,\n value: String.fromCharCode
(code),\n range: [start, index]\n };\n\n defaul
t:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (cha
r #61) marks an assignment or comparison operator.\n if (code2 === 61
) {\n switch (code) {\n case 37: // %\n
case 38: // &\n case 42: // *:\n case 43:
// +\n case 45: // -\n case 47: // /\n
case 60: // <\n case 62: // >\n case 124:
// |\n index += 2;\n return {\n
type: Token.Punctuator,\n value: String.fro
mCharCode(code) + String.fromCharCode(code2),\n range: [s
tart, index]\n };\n\n case 33: // !\n
case 61: // =\n index += 2;\n\n //
!== and ===\n if (source.charCodeAt(index) === 61) {\n
++index;\n }\n return {\n
type: Token.Punctuator,\n value:
source.slice(start, index),\n range: [start, index]\n
};\n default:\n break;\n
}\n }\n break;\n }\n\n // Peek mor
e characters.\n\n ch2 = source[index + 1];\n\n // Other 2-characte
r punctuators: && ||\n\n if (ch1 === ch2 && ('&|'.indexOf(ch1) >= 0)) {\n
index += 2;\n return {\n type: Token.Punct
uator,\n value: ch1 + ch2,\n range: [start, index]
\n };\n }\n\n if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n
++index;\n return {\n type: Token.Punctuat
or,\n value: ch1,\n range: [start, index]\n
};\n }\n\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL'
);\n }\n\n // 7.8.3 Numeric Literals\n function scanNumericLiteral() {\
n var number, start, ch;\n\n ch = source[index];\n assert(i
sDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),\n 'Numeric literal m
ust start with a decimal digit or a decimal point');\n\n start = index;\n
number = '';\n if (ch !== '.') {\n number = source[ind
ex++];\n ch = source[index];\n\n // Hex number starts with
'0x'.\n // Octal number starts with '0'.\n if (number ===
'0') {\n // decimal number starts with '0' such as '09' is illeg
al.\n if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n
throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\
n }\n\n while (isDecimalDigit(source.charCodeAt(index))) {
\n number += source[index++];\n }\n ch = so
urce[index];\n }\n\n if (ch === '.') {\n number += sour
ce[index++];\n while (isDecimalDigit(source.charCodeAt(index))) {\n
number += source[index++];\n }\n ch = source
[index];\n }\n\n if (ch === 'e' || ch === 'E') {\n numb
er += source[index++];\n\n ch = source[index];\n if (ch ==
= '+' || ch === '-') {\n number += source[index++];\n
}\n if (isDecimalDigit(source.charCodeAt(index))) {\n
while (isDecimalDigit(source.charCodeAt(index))) {\n number +
= source[index++];\n }\n } else {\n thr
owError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n }\n\n
if (isIdentifierStart(source.charCodeAt(index))) {\n throwErro
r({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n
type: Token.NumericLiteral,\n value: parseFloat(number),\n
range: [start, index]\n };\n }\n\n // 7.8.4 String Literal
s\n\n function scanStringLiteral() {\n var str = '', quote, start, ch,
octal = false;\n\n quote = source[index];\n assert((quote === '\\
'' || quote === '\"'),\n 'String literal must starts with a quote');\
n\n start = index;\n ++index;\n\n while (index < length) {\
n ch = source[index++];\n\n if (ch === quote) {\n
quote = '';\n break;\n } else if (ch === '\\\\'
) {\n ch = source[index++];\n if (!ch || !isLineTe
rminator(ch.charCodeAt(0))) {\n switch (ch) {\n
case 'n':\n str += '\\n';\n
break;\n case 'r':\n str += '\\r';\n
break;\n case 't':\n
str += '\\t';\n break;\n case 'b'
:\n str += '\\b';\n break;\n
case 'f':\n str += '\\f';\n
break;\n case 'v':\n str += '\
\x0B';\n break;\n\n default:\n
str += ch;\n break;\n
}\n } else {\n if (ch === '\\r' && source[ind
ex] === '\\n') {\n ++index;\n }\n
}\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n
break;\n } else {\n str += ch;\n
}\n }\n\n if (quote !== '') {\n throwError({}, Messag
es.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type
: Token.StringLiteral,\n value: str,\n octal: octal,\n
range: [start, index]\n };\n }\n\n function isIdentifierNam
e(token) {\n return token.type === Token.Identifier ||\n token
.type === Token.Keyword ||\n token.type === Token.BooleanLiteral ||\n
token.type === Token.NullLiteral;\n }\n\n function advance() {
\n var ch;\n\n skipWhitespace();\n\n if (index >= length) {
\n return {\n type: Token.EOF,\n range:
[index, index]\n };\n }\n\n ch = source.charCodeAt(ind
ex);\n\n // Very common: ( and ) and ;\n if (ch === 40 || ch === 4
1 || ch === 58) {\n return scanPunctuator();\n }\n\n //
String literal starts with single quote (#39) or double quote (#34).\n i
f (ch === 39 || ch === 34) {\n return scanStringLiteral();\n }
\n\n if (isIdentifierStart(ch)) {\n return scanIdentifier();\n
}\n\n // Dot (.) char #46 can also start a floating-point number,
hence the need\n // to check the next character.\n if (ch === 46)
{\n if (isDecimalDigit(source.charCodeAt(index + 1))) {\n
return scanNumericLiteral();\n }\n return scanPunctua
tor();\n }\n\n if (isDecimalDigit(ch)) {\n return scanN
umericLiteral();\n }\n\n return scanPunctuator();\n }\n\n fu
nction lex() {\n var token;\n\n token = lookahead;\n index
= token.range[1];\n\n lookahead = advance();\n\n index = token.ran
ge[1];\n\n return token;\n }\n\n function peek() {\n var pos
;\n\n pos = index;\n lookahead = advance();\n index = pos;\
n }\n\n // Throw an exception\n\n function throwError(token, messageFor
mat) {\n var error,\n args = Array.prototype.slice.call(argume
nts, 2),\n msg = messageFormat.replace(\n /%(\\d)/g,\n
function (whole, index) {\n assert(index < ar
gs.length, 'Message reference must be in range');\n return ar
gs[index];\n }\n );\n\n error = new Error(msg);
\n error.index = index;\n error.description = msg;\n throw
error;\n }\n\n // Throw an exception because of the token.\n\n function
throwUnexpected(token) {\n throwError(token, Messages.UnexpectedToken, t
oken.value);\n }\n\n // Expect the next token to match the specified punct
uator.\n // If not, an exception will be thrown.\n\n function expect(value
) {\n var token = lex();\n if (token.type !== Token.Punctuator ||
token.value !== value) {\n throwUnexpected(token);\n }\n }\
n\n // Return true if the next token matches the specified punctuator.\n\n
function match(value) {\n return lookahead.type === Token.Punctuator &&
lookahead.value === value;\n }\n\n // Return true if the next token matche
s the specified keyword\n\n function matchKeyword(keyword) {\n return
lookahead.type === Token.Keyword && lookahead.value === keyword;\n }\n\n f
unction consumeSemicolon() {\n // Catch the very common case first: immed
iately a semicolon (char #59).\n if (source.charCodeAt(index) === 59) {\n
lex();\n return;\n }\n\n skipWhitespace();\
n\n if (match(';')) {\n lex();\n return;\n }
\n\n if (lookahead.type !== Token.EOF && !match('}')) {\n thro
wUnexpected(lookahead);\n }\n }\n\n // 11.1.4 Array Initialiser\n\n
function parseArrayInitialiser() {\n var elements = [];\n\n ex
pect('[');\n\n while (!match(']')) {\n if (match(',')) {\n
lex();\n elements.push(null);\n } else {\n
elements.push(parseExpression());\n\n if (!match(
']')) {\n expect(',');\n }\n }\n
}\n\n expect(']');\n\n return delegate.createArrayExpression(
elements);\n }\n\n // 11.1.5 Object Initialiser\n\n function parseObjec
tPropertyKey() {\n var token;\n\n skipWhitespace();\n token
= lex();\n\n // Note: This function is called only from parseObjectPrope
rty(), where\n // EOF and Punctuator tokens are already filtered out.\n
if (token.type === Token.StringLiteral || token.type === Token.NumericLite
ral) {\n return delegate.createLiteral(token);\n }\n\n
return delegate.createIdentifier(token.value);\n }\n\n function parseObjec
tProperty() {\n var token, key;\n\n token = lookahead;\n sk
ipWhitespace();\n\n if (token.type === Token.EOF || token.type === Token.
Punctuator) {\n throwUnexpected(token);\n }\n\n key = p
arseObjectPropertyKey();\n expect(':');\n return delegate.createPr
operty('init', key, parseExpression());\n }\n\n function parseObjectInitia
liser() {\n var properties = [];\n\n expect('{');\n\n while
(!match('}')) {\n properties.push(parseObjectProperty());\n\n
if (!match('}')) {\n expect(',');\n }\n }\
n\n expect('}');\n\n return delegate.createObjectExpression(proper
ties);\n }\n\n // 11.1.6 The Grouping Operator\n\n function parseGroupE
xpression() {\n var expr;\n\n expect('(');\n\n expr = parse
Expression();\n\n expect(')');\n\n return expr;\n }\n\n\n //
11.1 Primary Expressions\n\n function parsePrimaryExpression() {\n va
r type, token, expr;\n\n if (match('(')) {\n return parseGroup
Expression();\n }\n\n type = lookahead.type;\n\n if (type =
== Token.Identifier) {\n expr = delegate.createIdentifier(lex().value
);\n } else if (type === Token.StringLiteral || type === Token.NumericLit
eral) {\n expr = delegate.createLiteral(lex());\n } else if (t
ype === Token.Keyword) {\n if (matchKeyword('this')) {\n
lex();\n expr = delegate.createThisExpression();\n
}\n } else if (type === Token.BooleanLiteral) {\n token = lex(
);\n token.value = (token.value === 'true');\n expr = dele
gate.createLiteral(token);\n } else if (type === Token.NullLiteral) {\n
token = lex();\n token.value = null;\n expr = de
legate.createLiteral(token);\n } else if (match('[')) {\n expr
= parseArrayInitialiser();\n } else if (match('{')) {\n expr
= parseObjectInitialiser();\n }\n\n if (expr) {\n retur
n expr;\n }\n\n throwUnexpected(lex());\n }\n\n // 11.2 Left
-Hand-Side Expressions\n\n function parseArguments() {\n var args = []
;\n\n expect('(');\n\n if (!match(')')) {\n while (inde
x < length) {\n args.push(parseExpression());\n if
(match(')')) {\n break;\n }\n
expect(',');\n }\n }\n\n expect(')');\n\n return
args;\n }\n\n function parseNonComputedProperty() {\n var token;\n
\n token = lex();\n\n if (!isIdentifierName(token)) {\n
throwUnexpected(token);\n }\n\n return delegate.createIdentifier(
token.value);\n }\n\n function parseNonComputedMember() {\n expect(
'.');\n\n return parseNonComputedProperty();\n }\n\n function parse
ComputedMember() {\n var expr;\n\n expect('[');\n\n expr =
parseExpression();\n\n expect(']');\n\n return expr;\n }\n\n
function parseLeftHandSideExpression() {\n var expr, property;\n\n
expr = parsePrimaryExpression();\n\n while (match('.') || match('[')) {
\n if (match('[')) {\n property = parseComputedMember(
);\n expr = delegate.createMemberExpression('[', expr, property);
\n } else {\n property = parseNonComputedMember();\n
expr = delegate.createMemberExpression('.', expr, property);\n
}\n }\n\n return expr;\n }\n\n // 11.3 Postfix Expre
ssions\n\n var parsePostfixExpression = parseLeftHandSideExpression;\n\n /
/ 11.4 Unary Operators\n\n function parseUnaryExpression() {\n var tok
en, expr;\n\n if (lookahead.type !== Token.Punctuator && lookahead.type !
== Token.Keyword) {\n expr = parsePostfixExpression();\n } els
e if (match('+') || match('-') || match('!')) {\n token = lex();\n
expr = parseUnaryExpression();\n expr = delegate.createUnary
Expression(token.value, expr);\n } else if (matchKeyword('delete') || mat
chKeyword('void') || matchKeyword('typeof')) {\n throwError({}, Messa
ges.UnexpectedToken);\n } else {\n expr = parsePostfixExpressi
on();\n }\n\n return expr;\n }\n\n function binaryPrecedence
(token) {\n var prec = 0;\n\n if (token.type !== Token.Punctuator
&& token.type !== Token.Keyword) {\n return 0;\n }\n\n
switch (token.value) {\n case '||':\n prec = 1;\n b
reak;\n\n case '&&':\n prec = 2;\n break;\n\n
case '==':\n case '!=':\n case '===':\n case '!==':\n
prec = 6;\n break;\n\n case '<':\n case '>':\n
case '<=':\n case '>=':\n case 'instanceof':\n p
rec = 7;\n break;\n\n case 'in':\n prec = 7;\n
break;\n\n case '+':\n case '-':\n prec = 9;\n
break;\n\n case '*':\n case '/':\n case '%':\n
prec = 11;\n break;\n\n default:\n break;\
n }\n\n return prec;\n }\n\n // 11.5 Multiplicative Operator
s\n // 11.6 Additive Operators\n // 11.7 Bitwise Shift Operators\n // 1
1.8 Relational Operators\n // 11.9 Equality Operators\n // 11.10 Binary Bi
twise Operators\n // 11.11 Binary Logical Operators\n\n function parseBina
ryExpression() {\n var expr, token, prec, stack, right, operator, left, i
;\n\n left = parseUnaryExpression();\n\n token = lookahead;\n
prec = binaryPrecedence(token);\n if (prec === 0) {\n retur
n left;\n }\n token.prec = prec;\n lex();\n\n right
= parseUnaryExpression();\n\n stack = [left, token, right];\n\n wh
ile ((prec = binaryPrecedence(lookahead)) > 0) {\n\n // Reduce: make
a binary expression from the three topmost entries.\n while ((stack.l
ength > 2) && (prec <= stack[stack.length - 2].prec)) {\n right =
stack.pop();\n operator = stack.pop().value;\n le
ft = stack.pop();\n expr = delegate.createBinaryExpression(operat
or, left, right);\n stack.push(expr);\n }\n\n
// Shift.\n token = lex();\n token.prec = prec;\n
stack.push(token);\n expr = parseUnaryExpression();\n
stack.push(expr);\n }\n\n // Final reduce to clean-up the stack.
\n i = stack.length - 1;\n expr = stack[i];\n while (i > 1)
{\n expr = delegate.createBinaryExpression(stack[i - 1].value, stack
[i - 2], expr);\n i -= 2;\n }\n\n return expr;\n }\n
\n\n // 11.12 Conditional Operator\n\n function parseConditionalExpression
() {\n var expr, consequent, alternate;\n\n expr = parseBinaryExpr
ession();\n\n if (match('?')) {\n lex();\n conseque
nt = parseConditionalExpression();\n expect(':');\n altern
ate = parseConditionalExpression();\n\n expr = delegate.createConditi
onalExpression(expr, consequent, alternate);\n }\n\n return expr;\
n }\n\n // Simplification since we do not support AssignmentExpression.\n
var parseExpression = parseConditionalExpression;\n\n // Polymer Syntax ex
tensions\n\n // Filter ::\n // Identifier\n // Identifier \"(\" \")
\"\n // Identifier \"(\" FilterArguments \")\"\n\n function parseFilter(
) {\n var identifier, args;\n\n identifier = lex();\n\n if
(identifier.type !== Token.Identifier) {\n throwUnexpected(identifier
);\n }\n\n args = match('(') ? parseArguments() : [];\n\n r
eturn delegate.createFilter(identifier.value, args);\n }\n\n // Filters ::
\n // \"|\" Filter\n // Filters \"|\" Filter\n\n function parseFilt
ers() {\n while (match('|')) {\n lex();\n parseFilt
er();\n }\n }\n\n // TopLevel ::\n // LabelledExpressions\n
// AsExpression\n // InExpression\n // FilterExpression\n\n // A
sExpression ::\n // FilterExpression as Identifier\n\n // InExpression :
:\n // Identifier, Identifier in FilterExpression\n // Identifier in F
ilterExpression\n\n // FilterExpression ::\n // Expression\n // Exp
ression Filters\n\n function parseTopLevel() {\n skipWhitespace();\n
peek();\n\n var expr = parseExpression();\n if (expr) {\n
if (lookahead.value === ',' || lookahead.value == 'in' &&\n
expr.type === Syntax.Identifier) {\n parseInExpression
(expr);\n } else {\n parseFilters();\n
if (lookahead.value === 'as') {\n parseAsExpression(expr);\n
} else {\n delegate.createTopLevel(expr);\n
}\n }\n }\n\n if (lookahead.type !== Token
.EOF) {\n throwUnexpected(lookahead);\n }\n }\n\n functi
on parseAsExpression(expr) {\n lex(); // as\n var identifier = le
x().value;\n delegate.createAsExpression(expr, identifier);\n }\n\n
function parseInExpression(identifier) {\n var indexName;\n if (l
ookahead.value === ',') {\n lex();\n if (lookahead.type !=
= Token.Identifier)\n throwUnexpected(lookahead);\n in
dexName = lex().value;\n }\n\n lex(); // in\n var expr = p
arseExpression();\n parseFilters();\n delegate.createInExpression(
identifier.name, indexName, expr);\n }\n\n function parse(code, inDelegate
) {\n delegate = inDelegate;\n source = code;\n index = 0;\
n length = source.length;\n lookahead = null;\n state = {\n
labelSet: {}\n };\n\n return parseTopLevel();\n }\n
\n global.esprima = {\n parse: parse\n };\n})(this);\n","// Copyrig
ht 2013 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the
\"License\");\n// you may not use this file except in compliance with the Licens
e.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org
/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in
writing, software\n// distributed under the License is distributed on an \"AS IS
\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or im
plied.\n// See the License for the specific language governing permissions and\n
// limitations under the License.\n\n(function (global) {\n 'use strict';\n\n
// JScript does not have __proto__. We wrap all object literals with\n // creat
eObject which uses Object.create, Object.defineProperty and\n // Object.getOwnP
ropertyDescriptor to create a new object that does the exact\n // same thing. T
he main downside to this solution is that we have to extract\n // all those pro
perty descriptors for IE.\n var createObject = ('__proto__' in {}) ?\n fun
ction(obj) { return obj; } :\n function(obj) {\n var proto = obj.__p
roto__;\n if (!proto)\n return obj;\n var newObject = Obj
ect.create(proto);\n Object.getOwnPropertyNames(obj).forEach(function(nam
e) {\n Object.defineProperty(newObject, name,\n
Object.getOwnPropertyDescriptor(obj, name));\n });\n return
newObject;\n };\n\n function prepareBinding(expressionText, name, node, f
ilterRegistry) {\n var expression;\n try {\n expression = getExpressi
on(expressionText);\n if (expression.scopeIdent &&\n (node.nodeTyp
e !== Node.ELEMENT_NODE ||\n node.tagName !== 'TEMPLATE' ||\n
(name !== 'bind' && name !== 'repeat'))) {\n throw Error('as and in can
only be used within <template bind/repeat>');\n }\n } catch (ex) {\n
console.error('Invalid expression syntax: ' + expressionText, ex);\n ret
urn;\n }\n\n return function(model, node, oneTime) {\n var binding =
expression.getBinding(model, filterRegistry, oneTime);\n if (expression.sco
peIdent && binding) {\n node.polymerExpressionScopeIdent_ = expression.sc
opeIdent;\n if (expression.indexIdent)\n node.polymerExpressionI
ndexIdent_ = expression.indexIdent;\n }\n\n return binding;\n }\n
}\n\n // TODO(rafaelw): Implement simple LRU.\n var expressionParseCache = Obj
ect.create(null);\n\n function getExpression(expressionText) {\n var express
ion = expressionParseCache[expressionText];\n if (!expression) {\n var d
elegate = new ASTDelegate();\n esprima.parse(expressionText, delegate);\n
expression = new Expression(delegate);\n expressionParseCache[expressio
nText] = expression;\n }\n return expression;\n }\n\n function Literal(v
alue) {\n this.value = value;\n this.valueFn_ = undefined;\n }\n\n Liter
al.prototype = {\n valueFn: function() {\n if (!this.valueFn_) {\n
var value = this.value;\n this.valueFn_ = function() {\n retur
n value;\n }\n }\n\n return this.valueFn_;\n }\n }\n\n fun
ction IdentPath(name) {\n this.name = name;\n this.path = Path.get(name);\
n }\n\n IdentPath.prototype = {\n valueFn: function() {\n if (!this.va
lueFn_) {\n var name = this.name;\n var path = this.path;\n
this.valueFn_ = function(model, observer) {\n if (observer)\n
observer.addPath(model, path);\n\n return path.getValueFrom(model);\
n }\n }\n\n return this.valueFn_;\n },\n\n setValue: func
tion(model, newValue) {\n return this.path.setValueFrom(model, newValue);\n
}\n };\n\n function MemberExpression(object, property, accessor) {\n //
convert literal computed property access where literal value is a value\n //
path to ident dot-access.\n if (accessor == '[' &&\n property instanc
eof Literal &&\n Path.get(property.value).valid) {\n accessor = '.';
\n property = new IdentPath(property.value);\n }\n\n this.dynamicDeps
= typeof object == 'function' || object.dynamic;\n\n this.dynamic = typeof p
roperty == 'function' ||\n property.dynamic ||\n
accessor == '[';\n\n this.simplePath =\n !this.dynamic &&\n
!this.dynamicDeps &&\n property instanceof IdentPath &&\n (objec
t instanceof MemberExpression || object instanceof IdentPath);\n\n this.objec
t = this.simplePath ? object : getFn(object);\n this.property = accessor == '
.' ? property : getFn(property);\n }\n\n MemberExpression.prototype = {\n g
et fullPath() {\n if (!this.fullPath_) {\n var last = this.object in
stanceof IdentPath ?\n this.object.name : this.object.fullPath;\n
this.fullPath_ = Path.get(last + '.' + this.property.name);\n }\n\n
return this.fullPath_;\n },\n\n valueFn: function() {\n if (!this.v
alueFn_) {\n var object = this.object;\n\n if (this.simplePath) {\
n var path = this.fullPath;\n\n this.valueFn_ = function(model
, observer) {\n if (observer)\n observer.addPath(model,
path);\n\n return path.getValueFrom(model);\n };\n }
else if (this.property instanceof IdentPath) {\n var path = Path.get(th
is.property.name);\n\n this.valueFn_ = function(model, observer) {\n
var context = object(model, observer);\n\n if (observer)\n
observer.addPath(context, path);\n\n return path.getValue
From(context);\n }\n } else {\n // Computed property.\n
var property = this.property;\n\n this.valueFn_ = function(mo
del, observer) {\n var context = object(model, observer);\n
var propName = property(model, observer);\n if (observer)\n
observer.addPath(context, propName);\n\n return context ? conte
xt[propName] : undefined;\n };\n }\n }\n return this.v
alueFn_;\n },\n\n setValue: function(model, newValue) {\n if (this.si
mplePath) {\n this.fullPath.setValueFrom(model, newValue);\n retur
n newValue;\n }\n\n var object = this.object(model);\n var propNa
me = this.property instanceof IdentPath ? this.property.name :\n this.p
roperty(model);\n return object[propName] = newValue;\n }\n };\n\n fun
ction Filter(name, args) {\n this.name = name;\n this.args = [];\n for
(var i = 0; i < args.length; i++) {\n this.args[i] = getFn(args[i]);\n }
\n }\n\n Filter.prototype = {\n transform: function(value, toModelDirection
, filterRegistry, model,\n observer) {\n var fn = fi
lterRegistry[this.name];\n var context = model;\n if (fn) {\n c
ontext = undefined;\n } else {\n fn = context[this.name];\n i
f (!fn) {\n console.error('Cannot find filter: ' + this.name);\n
return;\n }\n }\n\n // If toModelDirection is falsey, then t
he \"normal\" (dom-bound) direction\n // is used. Otherwise, it looks for a
'toModel' property function on the\n // object.\n if (toModelDirectio
n) {\n fn = fn.toModel;\n } else if (typeof fn.toDOM == 'function')
{\n fn = fn.toDOM;\n }\n\n if (typeof fn != 'function') {\n
console.error('No ' + (toModelDirection ? 'toModel' : 'toDOM') +\n
' found on' + this.name);\n return;\n }\n\n var arg
s = [value];\n for (var i = 0; i < this.args.length; i++) {\n args[i
+ 1] = getFn(this.args[i])(model, observer);\n }\n\n return fn.apply(
context, args);\n }\n };\n\n function notImplemented() { throw Error('Not I
mplemented'); }\n\n var unaryOperators = {\n '+': function(v) { return +v; }
,\n '-': function(v) { return -v; },\n '!': function(v) { return !v; }\n
};\n\n var binaryOperators = {\n '+': function(l, r) { return l+r; },\n '
-': function(l, r) { return l-r; },\n '*': function(l, r) { return l*r; },\n
'/': function(l, r) { return l/r; },\n '%': function(l, r) { return l%r; }
,\n '<': function(l, r) { return l<r; },\n '>': function(l, r) { return l>
r; },\n '<=': function(l, r) { return l<=r; },\n '>=': function(l, r) { re
turn l>=r; },\n '==': function(l, r) { return l==r; },\n '!=': function(l,
r) { return l!=r; },\n '===': function(l, r) { return l===r; },\n '!==':
function(l, r) { return l!==r; },\n '&&': function(l, r) { return l&&r; },\n
'||': function(l, r) { return l||r; },\n };\n\n function getFn(arg) {\n
return typeof arg == 'function' ? arg : arg.valueFn();\n }\n\n function ASTDel
egate() {\n this.expression = null;\n this.filters = [];\n this.deps =
{};\n this.currentPath = undefined;\n this.scopeIdent = undefined;\n th
is.indexIdent = undefined;\n this.dynamicDeps = false;\n }\n\n ASTDelegate.
prototype = {\n createUnaryExpression: function(op, argument) {\n if (!u
naryOperators[op])\n throw Error('Disallowed operator: ' + op);\n\n
argument = getFn(argument);\n\n return function(model, observer) {\n
return unaryOperators[op](argument(model, observer));\n };\n },\n\n
createBinaryExpression: function(op, left, right) {\n if (!binaryOperators[
op])\n throw Error('Disallowed operator: ' + op);\n\n left = getFn(l
eft);\n right = getFn(right);\n\n return function(model, observer) {\n
return binaryOperators[op](left(model, observer),\n
right(model, observer));\n };\n },\n\n createConditiona
lExpression: function(test, consequent, alternate) {\n test = getFn(test);\
n consequent = getFn(consequent);\n alternate = getFn(alternate);\n\n
return function(model, observer) {\n return test(model, observer) ?\
n consequent(model, observer) : alternate(model, observer);\n }\
n },\n\n createIdentifier: function(name) {\n var ident = new IdentPa
th(name);\n ident.type = 'Identifier';\n return ident;\n },\n\n
createMemberExpression: function(accessor, object, property) {\n var ex = n
ew MemberExpression(object, property, accessor);\n if (ex.dynamicDeps)\n
this.dynamicDeps = true;\n return ex;\n },\n\n createLiteral: fu
nction(token) {\n return new Literal(token.value);\n },\n\n createArr
ayExpression: function(elements) {\n for (var i = 0; i < elements.length; i
++)\n elements[i] = getFn(elements[i]);\n\n return function(model, o
bserver) {\n var arr = []\n for (var i = 0; i < elements.length; i
++)\n arr.push(elements[i](model, observer));\n return arr;\n
}\n },\n\n createProperty: function(kind, key, value) {\n return {
\n key: key instanceof IdentPath ? key.name : key.value,\n value:
value\n };\n },\n\n createObjectExpression: function(properties) {\n
for (var i = 0; i < properties.length; i++)\n properties[i].value =
getFn(properties[i].value);\n\n return function(model, observer) {\n
var obj = {};\n for (var i = 0; i < properties.length; i++)\n o
bj[properties[i].key] = properties[i].value(model, observer);\n return ob
j;\n }\n },\n\n createFilter: function(name, args) {\n this.filt
ers.push(new Filter(name, args));\n },\n\n createAsExpression: function(ex
pression, scopeIdent) {\n this.expression = expression;\n this.scopeId
ent = scopeIdent;\n },\n\n createInExpression: function(scopeIdent, indexI
dent, expression) {\n this.expression = expression;\n this.scopeIdent
= scopeIdent;\n this.indexIdent = indexIdent;\n },\n\n createTopLevel
: function(expression) {\n this.expression = expression;\n },\n\n cre
ateThisExpression: notImplemented\n }\n\n function ConstantObservable(value) {
\n this.value_ = value;\n }\n\n ConstantObservable.prototype = {\n open:
function() { return this.value_; },\n discardChanges: function() { return th
is.value_; },\n deliver: function() {},\n close: function() {},\n }\n\n
function Expression(delegate) {\n this.scopeIdent = delegate.scopeIdent;\n
this.indexIdent = delegate.indexIdent;\n\n if (!delegate.expression)\n
throw Error('No expression found.');\n\n this.expression = delegate.expressio
n;\n getFn(this.expression); // forces enumeration of path dependencies\n\n
this.filters = delegate.filters;\n this.dynamicDeps = delegate.dynamicDeps;
\n }\n\n Expression.prototype = {\n getBinding: function(model, filterRegis
try, oneTime) {\n if (oneTime)\n return this.getValue(model, undefin
ed, filterRegistry);\n\n var observer = new CompoundObserver();\n this
.getValue(model, observer, filterRegistry); // captures deps.\n var self =
this;\n\n function valueFn() {\n if (self.dynamicDeps)\n o
bserver.startReset();\n\n var value = self.getValue(model,\n
self.dynamicDeps ? observer : undefined,\n
filterRegistry);\n if (self.dynamicDeps)\n obse
rver.finishReset();\n\n return value;\n }\n\n function setValue
Fn(newValue) {\n self.setValue(model, newValue, filterRegistry);\n
return newValue;\n }\n\n return new ObserverTransform(observer, value
Fn, setValueFn, true);\n },\n\n getValue: function(model, observer, filter
Registry) {\n var value = getFn(this.expression)(model, observer);\n f
or (var i = 0; i < this.filters.length; i++) {\n value = this.filters[i].
transform(value, false, filterRegistry, model,\n
observer);\n }\n\n return value;\n },\n\n setValue: fu
nction(model, newValue, filterRegistry) {\n var count = this.filters ? this
.filters.length : 0;\n while (count-- > 0) {\n newValue = this.filte
rs[count].transform(newValue, true, filterRegistry,\n
model);\n }\n\n if (this.expression.setValue)\n
return this.expression.setValue(model, newValue);\n }\n }\n\n /**\n
* Converts a style property name to a css property name. For example:\n * \"
WebkitUserSelect\" to \"-webkit-user-select\"\n */\n function convertStylePro
pertyName(name) {\n return String(name).replace(/[A-Z]/g, function(c) {\n
return '-' + c.toLowerCase();\n });\n }\n\n function isEventHandler(name)
{\n return name[0] === 'o' &&\n name[1] === 'n' &&\n nam
e[2] === '-';\n }\n\n var mixedCaseEventTypes = {};\n [\n 'webkitAnimation
Start',\n 'webkitAnimationEnd',\n 'webkitTransitionEnd',\n 'DOMFocusOut
',\n 'DOMFocusIn',\n 'DOMMouseScroll'\n ].forEach(function(e) {\n mixe
dCaseEventTypes[e.toLowerCase()] = e;\n });\n\n function prepareEventBinding(p
ath, name) {\n var eventType = name.substring(3);\n eventType = mixedCaseE
ventTypes[eventType] || eventType;\n\n return function(model, node, oneTime)
{\n var fn = path.getValueFrom(model);\n\n function handler(e) {\n
if (!oneTime)\n fn = path.getValueFrom(model);\n\n fn.apply(
model, [e, e.detail, e.currentTarget]);\n\n if (Platform && typeof Platfo
rm.flush == 'function')\n Platform.flush();\n }\n\n node.addE
ventListener(eventType, handler);\n\n if (oneTime)\n return;\n\n
function bindingValue() {\n return '{{ ' + path + ' }}';\n }\n\n
return {\n open: bindingValue,\n discardChanges: bindingValue,
\n close: function() {\n node.removeEventListener(eventType, han
dler);\n }\n };\n }\n }\n\n function PolymerExpressions() {}\n\
n PolymerExpressions.prototype = {\n // \"built-in\" filters\n styleObjec
t: function(value) {\n var parts = [];\n for (var key in value) {\n
parts.push(convertStylePropertyName(key) + ': ' + value[key]);\n }\n
return parts.join('; ');\n },\n\n tokenList: function(value) {\n
var tokens = [];\n for (var key in value) {\n if (value[key])\n
tokens.push(key);\n }\n return tokens.join(' ');\n },\n\n /
/ binding delegate API\n prepareInstancePositionChanged: function(template) {
\n var indexIdent = template.polymerExpressionIndexIdent_;\n if (!inde
xIdent)\n return;\n\n return function(templateInstance, index) {\n
templateInstance.model[indexIdent] = index;\n };\n },\n\n prepa
reBinding: function(pathString, name, node) {\n if (isEventHandler(name)) {
\n var path = Path.get(pathString);\n if (!path.valid) {\n
console.error('on-* bindings must be simple path expressions');\n ret
urn;\n }\n\n return prepareEventBinding(path, name);\n }\n\n
if (Path.get(pathString).valid)\n return; // bail out early if pathS
tring is simple path.\n\n return prepareBinding(pathString, name, node, thi
s);\n },\n\n prepareInstanceModel: function(template) {\n var scopeNa
me = template.polymerExpressionScopeIdent_;\n if (!scopeName)\n retu
rn;\n\n var parentScope = template.templateInstance ?\n template.t
emplateInstance.model :\n template.model;\n\n return function(mode
l) {\n var scope = Object.create(parentScope);\n scope[scopeName]
= model;\n return scope;\n };\n }\n };\n\n global.PolymerExpres
sions = PolymerExpressions;\n if (global.exposeGetExpression)\n global.getEx
pression_ = getExpression;\n\n global.PolymerExpressions.prepareEventBinding =
prepareEventBinding;\n})(this);\n","/*\n * Copyright 2013 The Polymer Authors. A
ll rights reserved.\n * Use of this source code is governed by a BSD-style\n * l
icense that can be found in the LICENSE file.\n */\n(function(scope) {\n\n// inj
ect style sheet\nvar style = document.createElement('style');\nstyle.textContent
= 'template {display: none !important;} /* injected by platform.js */';\nvar he
ad = document.querySelector('head');\nhead.insertBefore(style, head.firstChild);
\n\n// flush (with logging)\nvar flushing;\nfunction flush() {\n if (!flushing)
{\n flushing = true;\n scope.endOfMicrotask(function() {\n flushing
= false;\n logFlags.data && console.group('Platform.flush()');\n scope
.performMicrotaskCheckpoint();\n logFlags.data && console.groupEnd();\n
});\n }\n};\n\n// polling dirty checker\nvar FLUSH_POLL_INTERVAL = 125;\nwindow
.addEventListener('WebComponentsReady', function() {\n flush();\n // flush per
iodically if platform does not have object observe.\n if (!Observer.hasObjectOb
serve) {\n scope.flushPoll = setInterval(flush, FLUSH_POLL_INTERVAL);\n }\n}
);\n\nif (window.CustomElements && !CustomElements.useNative) {\n var originalI
mportNode = Document.prototype.importNode;\n Document.prototype.importNode = fu
nction(node, deep) {\n var imported = originalImportNode.call(this, node, dee
p);\n CustomElements.upgradeAll(imported);\n return imported;\n }\n}\n\n/
/ exports\nscope.flush = flush;\n\n})(window.Platform);\n\n"]} |