Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Side by Side Diff: runtime/bin/vmservice/client/deployed/web/packages/web_components/platform.js.map

Issue 299823004: Upgrade Observatory to Polymer 0.10.x (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/TreeScope.js","../ShadowDOM/src/w rappers/events.js","../ShadowDOM/src/wrappers/NodeList.js","../ShadowDOM/src/wra ppers/HTMLCollection.js","../ShadowDOM/src/wrappers/Node.js","../ShadowDOM/src/q uerySelector.js","../ShadowDOM/src/wrappers/node-interfaces.js","../ShadowDOM/sr c/wrappers/CharacterData.js","../ShadowDOM/src/wrappers/Text.js","../ShadowDOM/s rc/wrappers/Element.js","../ShadowDOM/src/wrappers/HTMLElement.js","../ShadowDOM /src/wrappers/HTMLCanvasElement.js","../ShadowDOM/src/wrappers/HTMLContentElemen t.js","../ShadowDOM/src/wrappers/HTMLImageElement.js","../ShadowDOM/src/wrappers /HTMLShadowElement.js","../ShadowDOM/src/wrappers/HTMLTemplateElement.js","../Sh adowDOM/src/wrappers/HTMLMediaElement.js","../ShadowDOM/src/wrappers/HTMLAudioEl ement.js","../ShadowDOM/src/wrappers/HTMLOptionElement.js","../ShadowDOM/src/wra ppers/HTMLSelectElement.js","../ShadowDOM/src/wrappers/HTMLTableElement.js","../ ShadowDOM/src/wrappers/HTMLTableSectionElement.js","../ShadowDOM/src/wrappers/HT MLTableRowElement.js","../ShadowDOM/src/wrappers/HTMLUnknownElement.js","../Shad owDOM/src/wrappers/SVGElement.js","../ShadowDOM/src/wrappers/SVGUseElement.js"," ../ShadowDOM/src/wrappers/SVGElementInstance.js","../ShadowDOM/src/wrappers/Canv asRenderingContext2D.js","../ShadowDOM/src/wrappers/WebGLRenderingContext.js",". ./ShadowDOM/src/wrappers/Range.js","../ShadowDOM/src/wrappers/generic.js","../Sh adowDOM/src/wrappers/ShadowRoot.js","../ShadowDOM/src/ShadowRenderer.js","../Sha dowDOM/src/wrappers/elements-with-form-property.js","../ShadowDOM/src/wrappers/S election.js","../ShadowDOM/src/wrappers/Document.js","../ShadowDOM/src/wrappers/ Window.js","../ShadowDOM/src/wrappers/DataTransfer.js","../ShadowDOM/src/wrapper s/override-constructors.js","src/patches-shadowdom-polyfill.js","src/ShadowCSS.j s","src/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/mi crotask.js","src/url.js","../MutationObservers/MutationObserver.js","../HTMLImpo rts/src/scope.js","../HTMLImports/src/Loader.js","../HTMLImports/src/Parser.js", "../HTMLImports/src/HTMLImports.js","../HTMLImports/src/Observer.js","../HTMLImp orts/src/boot.js","../CustomElements/src/scope.js","../CustomElements/src/Observ er.js","../CustomElements/src/CustomElements.js","../CustomElements/src/Parser.j s","../CustomElements/src/boot.js","src/patches-custom-elements.js","src/loader. js","src/styleloader.js","../PointerEvents/src/boot.js","../PointerEvents/src/to uch-action.js","../PointerEvents/src/PointerEvent.js","../PointerEvents/src/poin termap.js","../PointerEvents/src/dispatcher.js","../PointerEvents/src/installer. js","../PointerEvents/src/mouse.js","../PointerEvents/src/touch.js","../PointerE vents/src/ms.js","../PointerEvents/src/platform-events.js","../PointerEvents/src /capture.js","../PointerGestures/src/initialize.js","../PointerGestures/src/poin termap.js","../PointerGestures/src/dispatcher.js","../PointerGestures/src/hold.j s","../PointerGestures/src/track.js","../PointerGestures/src/flick.js","../Point erGestures/src/pinch.js","../PointerGestures/src/tap.js","../PointerGestures/src /registerScopes.js","../NodeBind/src/NodeBind.js","../TemplateBinding/src/Templa teBinding.js","../polymer-expressions/third_party/esprima/esprima.js","../polyme r-expressions/src/polymer-expressions.js","src/patches-mdv.js"],"names":[],"mapp ings":"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 AEA,OAAA","sourcesContent":["/*\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 * PointerGestureEvent is th e constructor for all PointerGesture events.\n *\n * @module PointerGestures\n * @class PointerGestureEvent\n * @extends UIEvent\n * @constructor\n * @param {St ring} inType Event type\n * @param {Object} [inDict] Dictionary of properties to initialize on the event\n */\n\nfunction PointerGestureEvent(inType, inDict) {\ n var dict = inDict || {};\n var e = document.createEvent('Event');\n var pro ps = {\n bubbles: Boolean(dict.bubbles) === dict.bubbles || true,\n cancel able: Boolean(dict.cancelable) === dict.cancelable || true\n };\n\n e.initEven t(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 * Allow s for any gesture to prevent the tap gesture.\n *\n * @method preventTap\n */\nP ointerGestureEvent.prototype.preventTap = function() {\n this.tapPrevented = tr ue;\n};\n\n","/*\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be fou nd in the LICENSE file.\n */\n\nif (typeof WeakMap === 'undefined') {\n (functi on() {\n var defineProperty = Object.defineProperty;\n var counter = Date. now() % 1e9;\n\n var WeakMap = function() {\n this.name = '__st' + (Math .random() * 1e9 >>> 0) + (counter++ + '__');\n };\n\n WeakMap.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], writable: true});\n },\n get: function(key) {\n var entry;\n return (entry = key[this.name]) && entry[0] === key ?\n entry[1] : undefined;\n },\n delete: function(key) {\n this.set(key, undefined);\n }\ n };\n\n window.WeakMap = WeakMap;\n })();\n}\n","// Copyright 2012 Googl e 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 License.\n// You ma y obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LIC ENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, soft ware\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// Se e the License for the specific language governing permissions and\n// limitation s under the License.\n\n(function(global) {\n 'use strict';\n\n // Detect and do basic sanity checking on Object/Array.observe.\n function detectObjectObserv e() {\n if (typeof Object.observe !== 'function' ||\n typeof Array.obs erve !== 'function') {\n return false;\n }\n\n var records = [];\n\n function callback(recs) {\n records = recs;\n }\n\n var test = {}; \n var arr = [];\n Object.observe(test, callback);\n Array.observe(arr, callback);\n test.id = 1;\n test.id = 2;\n delete test.id;\n arr.pu sh(1, 2);\n arr.length = 0;\n\n Object.deliverChangeRecords(callback);\n if (records.length !== 5)\n return false;\n\n if (records[0].type != ' add' ||\n records[1].type != 'update' ||\n records[2].type != 'del ete' ||\n records[3].type != 'splice' ||\n records[4].type != 'spl ice') {\n return false;\n }\n\n Object.unobserve(test, callback);\n Array.unobserve(arr, callback);\n\n return true;\n }\n\n var hasObserve = detectObjectObserve();\n\n function detectEval() {\n // don't test for eval if document has CSP securityPolicy object and we can see that\n // eval is n ot supported. This 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 ha sEval = detectEval();\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.isNa N || function isNaN(value) {\n return typeof value === 'number' && global.isN aN(value);\n }\n\n function areSameValue(left, right) {\n if (left === righ t)\n return left !== 0 || 1 / left === 1 / right;\n if (numberIsNaN(left ) && numberIsNaN(right))\n return true;\n\n return left !== left && righ t !== right;\n }\n\n var createObject = ('__proto__' in {}) ?\n function(ob j) { return 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 Object .defineProperty(newObject, name,\n Object.getOwnProp ertyDescriptor(obj, 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 identOrElementIndex = '(?:' + ident + '|' + elementIndex + ')';\n var path = '(?:' + identOrElementIndex + ')(?:\\\\s*\\\\.\\\\s*' + identOrEleme ntIndex + ')*';\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 if (s == '')\n return true;\n\n if (s[0] == '.')\n r eturn false;\n\n return pathRegExp.test(s);\n }\n\n var constructorIsPrivat e = {};\n\n function Path(s, privateToken) {\n if (privateToken !== construc torIsPrivate)\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.p ush(s);\n return this;\n }\n\n s.split(/\\s*\\.\\s*/).filter(function (part) {\n return part;\n }).forEach(function(part) {\n this.push(p art);\n }, this);\n\n if (hasEval && this.length) {\n this.getValueFr om = this.compiledGetValueFromFn();\n }\n }\n\n // TODO(rafaelw): Make simp le LRU cache\n var pathCache = {};\n\n function getPath(pathString) {\n if (pathString instanceof Path)\n return pathString;\n\n if (pathString == null)\n pathString = '';\n\n if (typeof pathString !== 'string')\n pathString = String(pathString);\n\n var path = pathCache[pathString];\n i f (path)\n return path;\n if (!isPathValid(pathString))\n return in validPath;\n var path = new Path(pathString, constructorIsPrivate);\n path Cache[pathString] = path;\n return path;\n }\n\n Path.get = getPath;\n\n P ath.prototype = createObject({\n __proto__: [],\n valid: true,\n\n toSt ring: function() {\n return this.join('.');\n },\n\n getValueFrom: fu nction(obj, directObserver) {\n for (var i = 0; i < this.length; i++) {\n if (obj == null)\n return;\n obj = obj[this[i]];\n }\ n return obj;\n },\n\n iterateObjects: function(obj, observe) {\n for (var i = 0; i < this.length; i++) {\n if (i)\n obj = obj[t his[i - 1]];\n if (!isObject(obj))\n return;\n observe(ob j);\n }\n },\n\n compiledGetValueFromFn: function() {\n var acce ssors = this.map(function(ident) {\n return isIndex(ident) ? '[\"' + iden t + '\"]' : '.' + ident;\n });\n\n var str = '';\n var pathString = 'obj';\n str += 'if (obj != null';\n var i = 0;\n for (; i < ( this.length - 1); i++) {\n var ident = this[i];\n pathString += ac cessors[i];\n str += ' &&\\n ' + pathString + ' != null';\n }\n str += ')\\n';\n\n pathString += accessors[i];\n\n str += ' retu rn ' + pathString + ';\\nelse\\n return undefined;';\n return new Function ('obj', str);\n },\n\n setValueFrom: function(obj, value) {\n if (!th is.length)\n return false;\n\n for (var i = 0; i < this.length - 1; i++) {\n if (!isObject(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 = n ew Path('', constructorIsPrivate);\n invalidPath.valid = false;\n invalidPath. getValueFrom = invalidPath.setValueFrom = function() {};\n\n var MAX_DIRTY_CHEC K_CYCLES = 1000;\n\n function dirtyCheck(observer) {\n var cycles = 0;\n while (cycles < MAX_DIRTY_CHECK_CYCLES && observer.check_()) {\n cycles++;\ n }\n if (global.testingExposeCycleCount)\n global.dirtyCheckCycleCou nt = cycles;\n\n return cycles > 0;\n }\n\n function objectIsEmpty(object) {\n for (var prop in object)\n return false;\n return true;\n }\n\n function diffIsEmpty(diff) {\n return objectIsEmpty(diff.added) &&\n objectIsEmpty(diff.removed) &&\n objectIsEmpty(diff.changed);\n }\ n\n function diffObjectFromOldObject(object, oldObject) {\n var added = {};\ n var removed = {};\n var changed = {};\n\n for (var prop in oldObject) {\n var newValue = object[prop];\n\n if (newValue !== undefined && ne wValue === oldObject[prop])\n continue;\n\n if (!(prop in object)) { \n removed[prop] = undefined;\n continue;\n }\n\n if (ne wValue !== 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[prop];\n }\n\n if (Array.isArray(object) && object. length !== oldObject.length)\n changed.length = object.length;\n\n retur n {\n added: added,\n removed: removed,\n changed: changed\n } ;\n }\n\n var eomTasks = [];\n function runEOMTasks() {\n if (!eomTasks.le ngth)\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 = false;\n\n Object.observe(eomObj, function() {\n runEOMTasks();\n eomRunScheduled = false;\n });\n\n return function (fn) {\n eomTasks.push(fn);\n if (!eomRunScheduled) {\n eomRunS cheduled = true;\n eomObj.pingPong = !eomObj.pingPong;\n }\n };\n })() :\n (function() {\n return function(fn) {\n eomTasks.push(fn);\n };\n })();\n\n var observedObjectCache = [];\n\n function newObservedObje ct() {\n var observer;\n var object;\n var discardRecords = false;\n var first = true;\n\n function callback(records) {\n if (observer && ob server.state_ === OPENED && !discardRecords)\n observer.check_(records);\ n }\n\n return {\n open: function(obs) {\n if (observer)\n throw Error('ObservedObject in use');\n\n if (!first)\n Ob ject.deliverChangeRecords(callback);\n\n observer = obs;\n first = false;\n },\n observe: function(obj, arrayObserve) {\n object = obj;\n if (arrayObserve)\n Array.observe(object, callback);\n else\n Object.observe(object, callback);\n },\n delive r: function(discard) {\n discardRecords = discard;\n Object.delive rChangeRecords(callback);\n discardRecords = false;\n },\n clos e: function() {\n observer = undefined;\n Object.unobserve(object, callback);\n observedObjectCache.push(this);\n }\n };\n }\n\n function getObservedObject(observer, object, arrayObserve) {\n var dir = obse rvedObjectCache.pop() || newObservedObject();\n dir.open(observer);\n dir. observe(object, arrayObserve);\n return dir;\n }\n\n var emptyArray = [];\n var observedSetCache = [];\n\n function newObservedSet() {\n var observers = [];\n var observerCount = 0;\n var objects = [];\n var toRemove = em ptyArray;\n var resetNeeded = false;\n var resetScheduled = false;\n\n function observe(obj) {\n if (!obj)\n return;\n\n var index = t oRemove.indexOf(obj);\n if (index >= 0) {\n toRemove[index] = undefi ned;\n objects.push(obj);\n } else if (objects.indexOf(obj) < 0) {\n objects.push(obj);\n Object.observe(obj, callback);\n }\n\n observe(Object.getPrototypeOf(obj));\n }\n\n function reset() {\n var objs = toRemove === emptyArray ? [] : toRemove;\n toRemove = objects; \n objects = objs;\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 (var i = 0; i < toRemove.length; i++) {\n var obj = to Remove[i];\n if (obj)\n Object.unobserve(obj, callback);\n }\n\n toRemove.length = 0;\n }\n\n function scheduledReset() {\n resetScheduled = false;\n if (!resetNeeded)\n return;\n\n rese t();\n }\n\n function scheduleReset() {\n if (resetScheduled)\n return;\n\n resetNeeded = true;\n resetScheduled = true;\n runE OM(scheduledReset);\n }\n\n function callback() {\n reset();\n\n var observer;\n\n for (var id in observers) {\n observer = observer s[id];\n if (!observer || observer.state_ != OPENED)\n continue; \n\n observer.check_();\n }\n }\n\n var record = {\n obje ct: undefined,\n objects: objects,\n open: function(obs) {\n ob servers[obs.id_] = obs;\n observerCount++;\n obs.iterateObjects_(o bserve);\n },\n close: function(obs) {\n var anyLeft = false;\n \n observers[obs.id_] = undefined;\n observerCount--;\n\n i f (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.unobser vedCount++;\n }\n\n observers.length = 0;\n objects.length = 0;\n observedSetCache.push(this);\n },\n reset: scheduleReset \n };\n\n return record;\n }\n\n var lastObservedSet;\n\n function getO bservedSet(observer, obj) {\n if (!lastObservedSet || lastObservedSet.object !== obj) {\n lastObservedSet = observedSetCache.pop() || newObservedSet();\ n lastObservedSet.object = obj;\n }\n lastObservedSet.open(observer); \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 function Observer() {\n this.state_ = UNOPENED;\n this.callback_ = undefined;\n this.target_ = undefined; // TODO(rafaelw): Should be WeakRef\n this.directO bserver_ = undefined;\n this.value_ = undefined;\n this.id_ = nextObserver Id++;\n }\n\n Observer.prototype = {\n open: function(callback, target) {\n if (this.state_ != UNOPENED)\n throw Error('Observer has already be en 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.state_ != OPENED)\n return;\n\n removeFromAll(this);\n this.state_ = CLOSED;\n this.disconnect_();\n this.value_ = undefined;\n this.c allback_ = undefined;\n this.target_ = undefined;\n },\n\n deliver: f unction() {\n if (this.state_ != OPENED)\n return;\n\n dirtyChe ck(this);\n },\n\n report_: function(changes) {\n try {\n this .callback_.apply(this.target_, changes);\n } catch (ex) {\n Observer ._errorThrownDuringCallback = true;\n console.error('Exception caught dur ing observer callback: ' +\n (ex.stack || ex));\n }\n },\n\n discardChanges: function() {\n this.check_(undefined, true);\ n return this.value_;\n }\n }\n\n var collectObservers = !hasObserve;\ n var allObservers;\n Observer._allObserversCount = 0;\n\n if (collectObserve rs) {\n allObservers = [];\n }\n\n function addToAll(observer) {\n Obser ver._allObserversCount++;\n if (!collectObservers)\n return;\n\n allO bservers.push(observer);\n }\n\n function removeFromAll(observer) {\n Obser ver._allObserversCount--;\n }\n\n var runningMicrotaskCheckpoint = false;\n\n var hasDebugForceFullDelivery = hasObserve && (function() {\n try {\n e val('%RunMicrotasks()');\n return true;\n } catch (ex) {\n return f alse;\n }\n })();\n\n global.Platform = global.Platform || {};\n\n global. Platform.performMicrotaskCheckpoint = function() {\n if (runningMicrotaskChec kpoint)\n return;\n\n if (hasDebugForceFullDelivery) {\n eval('%Run Microtasks()');\n return;\n }\n\n if (!collectObservers)\n retur n;\n\n runningMicrotaskCheckpoint = true;\n\n var cycles = 0;\n var any Changed, toCheck;\n\n do {\n cycles++;\n toCheck = allObservers;\n allObservers = [];\n anyChanged = false;\n\n for (var i = 0; i < toCheck.length; i++) {\n var observer = toCheck[i];\n if (observer .state_ != 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_ CHECK_CYCLES && anyChanged);\n\n if (global.testingExposeCycleCount)\n g lobal.dirtyCheckCycleCount = cycles;\n\n runningMicrotaskCheckpoint = false;\ n };\n\n if (collectObservers) {\n global.Platform.clearObservers = functio n() {\n allObservers = [];\n };\n }\n\n function ObjectObserver(object ) {\n Observer.call(this);\n this.value_ = object;\n this.oldObject_ = undefined;\n }\n\n ObjectObserver.prototype = createObject({\n __proto__: O bserver.prototype,\n\n arrayObserve: false,\n\n connect_: function(callbac k, target) {\n if (hasObserve) {\n this.directObserver_ = getObserve dObject(this, this.value_,\n thi s.arrayObserve);\n } else {\n this.oldObject_ = this.copyObject(this .value_);\n }\n\n },\n\n copyObject: function(object) {\n var co py = Array.isArray(object) ? [] : {};\n for (var prop in object) {\n copy[prop] = object[prop];\n };\n if (Array.isArray(object))\n copy.length = object.length;\n return copy;\n },\n\n check_: functio n(changeRecords, skipChanges) {\n var diff;\n var oldValues;\n if (hasObserve) {\n if (!changeRecords)\n return false;\n\n oldValues = {};\n diff = diffObjectFromChangeRecords(this.value_, change Records,\n oldValues);\n } else { \n oldValues = this.oldObject_;\n diff = diffObjectFromOldObject(t his.value_, this.oldObject_);\n }\n\n if (diffIsEmpty(diff))\n return false;\n\n if (!hasObserve)\n this.oldObject_ = this.copyObje ct(this.value_);\n\n this.report_([\n diff.added || {},\n dif f.removed || {},\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.d irectObserver_.close();\n this.directObserver_ = undefined;\n } else {\n this.oldObject_ = undefined;\n }\n },\n\n deliver: functi on() {\n if (this.state_ != OPENED)\n return;\n\n if (hasObserv e)\n this.directObserver_.deliver(false);\n else\n dirtyCheck (this);\n },\n\n discardChanges: function() {\n if (this.directObserv er_)\n this.directObserver_.deliver(true);\n else\n this.oldO bject_ = this.copyObject(this.value_);\n\n return this.value_;\n }\n }) ;\n\n function ArrayObserver(array) {\n if (!Array.isArray(array))\n th row Error('Provided object is not an Array');\n ObjectObserver.call(this, arr ay);\n }\n\n ArrayObserver.prototype = createObject({\n\n __proto__: Object Observer.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_, changeRecor ds);\n } else {\n splices = calcSplices(this.value_, 0, this.value_. length,\n this.oldObject_, 0, this.oldObject_.lengt h);\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 ArrayO bserver.applySplices = function(previous, current, splices) {\n splices.forEa ch(function(splice) {\n var spliceArgs = [splice.index, splice.removed.leng th];\n var addIndex = splice.index;\n while (addIndex < splice.index + splice.addedCount) {\n spliceArgs.push(current[addIndex]);\n addI ndex++;\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 : getPath(path);\n this.directObserver_ = undefined;\n }\n\n PathObserver.pro totype = createObject({\n __proto__: Observer.prototype,\n\n connect_: fun ction() {\n if (hasObserve)\n this.directObserver_ = getObservedSet( this, this.object_);\n\n this.check_(undefined, true);\n },\n\n disco nnect_: function() {\n this.value_ = undefined;\n\n if (this.directObs erver_) {\n this.directObserver_.close(this);\n this.directObserve r_ = undefined;\n }\n },\n\n iterateObjects_: function(observe) {\n this.path_.iterateObjects(this.object_, observe);\n },\n\n check_: fun ction(changeRecords, skipChanges) {\n var oldValue = this.value_;\n th is.value_ = this.path_.getValueFrom(this.object_);\n if (skipChanges || are SameValue(this.value_, oldValue))\n return false;\n\n this.report_([ this.value_, oldValue]);\n return true;\n },\n\n setValue: function(n ewValue) {\n if (this.path_)\n this.path_.setValueFrom(this.object_, newValue);\n }\n });\n\n function CompoundObserver() {\n Observer.call( this);\n\n this.value_ = [];\n this.directObserver_ = undefined;\n this .observed_ = [];\n }\n\n var observerSentinel = {};\n\n CompoundObserver.prot otype = createObject({\n __proto__: Observer.prototype,\n\n connect_: func tion() {\n this.check_(undefined, true);\n\n if (!hasObserve)\n return;\n\n var object;\n var needsDirectObserver = false;\n for (var i = 0; i < this.observed_.length; i += 2) {\n object = this.observe d_[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 t his.directObserver_ = undefined;\n return;\n }\n\n if (needsDir ectObserver)\n this.directObserver_ = getObservedSet(this, object);\n },\n\n closeObservers_: function() {\n for (var i = 0; i < this.observed _.length; 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 this.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( path));\n },\n\n addObserver: function(observer) {\n if (this.state_ != UNOPENED && this.state_ != RESETTING)\n throw Error('Cannot add observ ers once started.');\n\n observer.open(this.deliver, this);\n this.obs erved_.push(observerSentinel, observer);\n },\n\n startReset: function() { \n if (this.state_ != OPENED)\n throw Error('Can only reset while op en');\n\n this.state_ = RESETTING;\n this.closeObservers_();\n },\n \n finishReset: function() {\n if (this.state_ != RESETTING)\n th row Error('Can only finishReset after startReset');\n this.state_ = OPENED; \n this.connect_();\n\n return this.value_;\n },\n\n iterateObje cts_: function(observe) {\n var object;\n for (var i = 0; i < this.obs erved_.length; i += 2) {\n object = this.observed_[i]\n if (object !== observerSentinel)\n this.observed_[i + 1].iterateObjects(object, o bserve)\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.o bserved_[i];\n var value = object === observerSentinel ?\n pat hOrObserver.discardChanges() :\n pathOrObserver.getValueFrom(object)\ n\n if (skipChanges) {\n this.value_[i / 2] = value;\n continue;\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 observ ed_ as the third callback arg here is\n // pretty lame API. Fix.\n thi s.report_([this.value_, oldValues, this.observed_]);\n return true;\n }\ n });\n\n function identFn(value) { return value; }\n\n function ObserverTran sform(observable, getValueFn, setValueFn,\n dontPass ThroughSet) {\n this.callback_ = undefined;\n this.target_ = undefined;\n this.value_ = undefined;\n this.observable_ = observable;\n this.getVal ueFn_ = 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.dontP assThroughSet_ = dontPassThroughSet;\n }\n\n ObserverTransform.prototype = {\n open: function(callback, target) {\n this.callback_ = callback;\n this.target_ = target;\n this.value_ =\n this.getValueFn_(this.obs ervable_.open(this.observedCallback_, this));\n return this.value_;\n }, \n\n observedCallback_: function(value) {\n value = this.getValueFn_(val ue);\n if (areSameValue(value, this.value_))\n return;\n var ol dValue = this.value_;\n this.value_ = value;\n this.callback_.call(thi s.target_, this.value_, oldValue);\n },\n\n discardChanges: function() {\n this.value_ = this.getValueFn_(this.observable_.discardChanges());\n return this.value_;\n },\n\n deliver: function() {\n return this.obse rvable_.deliver();\n },\n\n setValue: function(value) {\n value = thi s.setValueFn_(value);\n if (!this.dontPassThroughSet_ && this.observable_.s etValue)\n return this.observable_.setValue(value);\n },\n\n close: function() {\n if (this.observable_)\n this.observable_.close();\n this.callback_ = undefined;\n this.target_ = undefined;\n this.ob servable_ = undefined;\n this.value_ = undefined;\n this.getValueFn_ = undefined;\n this.setValueFn_ = undefined;\n }\n }\n\n var expectedRe cordTypes = {\n add: true,\n update: true,\n delete: true\n };\n\n fu nction notifyFunction(object, name) {\n if (typeof Object.observe !== 'functi on')\n return;\n\n var notifier = Object.getNotifier(object);\n retur n function(type, oldValue) {\n var changeRecord = {\n object: object ,\n type: type,\n name: name\n };\n if (arguments.length === 2)\n changeRecord.oldValue = oldValue;\n notifier.notify(change Record);\n }\n }\n\n Observer.defineComputedProperty = function(target, nam e, observable) {\n var notify = notifyFunction(target, name);\n var value = observable.open(function(newValue, oldValue) {\n value = newValue;\n if (notify)\n notify('update', oldValue);\n });\n\n Object.defineP roperty(target, name, {\n get: function() {\n observable.deliver();\ n return value;\n },\n set: function(newValue) {\n obser vable.setValue(newValue);\n return newValue;\n },\n configurabl e: true\n });\n\n return {\n close: function() {\n observable. close();\n Object.defineProperty(target, name, {\n value: value, \n writable: true,\n configurable: true\n });\n }\ n };\n }\n\n function diffObjectFromChangeRecords(object, changeRecords, ol dValues) {\n var added = {};\n var removed = {};\n\n for (var i = 0; i < changeRecords.length; i++) {\n var record = changeRecords[i];\n if ( !expectedRecordTypes[record.type]) {\n console.error('Unknown changeRecor d type: ' + record.type);\n console.error(record);\n continue;\n }\n\n if (!(record.name in oldValues))\n oldValues[record.name] = record.oldValue;\n\n if (record.type == 'update')\n continue;\n\n if (record.type == 'add') {\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.na me in added) {\n delete added[record.name];\n delete oldValues[rec ord.name];\n } else {\n removed[record.name] = true;\n }\n } \n\n for (var prop in added)\n added[prop] = object[prop];\n\n for (v ar 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[prop];\n if (oldValues[pro p] !== newValue)\n changed[prop] = newValue;\n }\n\n return {\n added: added,\n removed: removed,\n changed: changed\n };\n }\n\ n function newSplice(index, removed, addedCount) {\n return {\n index: index,\n removed: removed,\n addedCount: addedCount\n };\n }\n\n var EDIT_LEAVE = 0;\n var EDIT_UPDATE = 1;\n var EDIT_ADD = 2;\n var EDIT_DEL ETE = 3;\n\n function ArraySplice() {}\n\n ArraySplice.prototype = {\n\n // Note: This function is *based* on the computation of the Levenshtein\n // \" edit\" distance. The one change is that \"updates\" are treated as two\n // e dits - not one. With Array splices, an update is really a delete\n // followe d by an add. By retaining this, we optimize for \"keeping\" the\n // maximum array items in the original array. For example:\n //\n // 'xxxx123' -> ' 123yyyy'\n //\n // With 1-edit updates, the shortest path would be just to update all seven\n // characters. With 2-edit updates, we delete 4, leave 3, and add 4. This\n // leaves the substring '123' intact.\n calcEditDistanc es: function(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n // \"Deletion\" columns\n var rowCount = o ldEnd - oldStart + 1;\n var columnCount = currentEnd - currentStart + 1;\n var distances = new Array(rowCount);\n\n // \"Addition\" rows. Initial ize 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 < columnCount; j++)\n distan ces[0][j] = j;\n\n for (var i = 1; i < rowCount; i++) {\n for (var j = 1; j < columnCount; j++) {\n if (this.equals(current[currentStart + j - 1], old[oldStart + i - 1]))\n distances[i][j] = distances[i - 1][ j - 1];\n else {\n var north = distances[i - 1][j] + 1;\n var west = distances[i][j - 1] + 1;\n distances[i][j] = nort h < west ? north : west;\n }\n }\n }\n\n return distan ces;\n },\n\n // This starts at the final weight, and walks \"backward\" b y finding\n // the minimum previous weight recursively until the origin of th e weight\n // matrix.\n spliceOperationsFromEditDistances: function(distan ces) {\n var i = distances.length - 1;\n var 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 edits.push(EDIT_ADD);\n j--;\n continue;\n }\n if (j == 0) {\n edits .push(EDIT_DELETE);\n i--;\n continue;\n }\n var northWest = distances[i - 1][j - 1];\n var west = distances[i - 1][j];\n var north = distances[i][j - 1];\n\n var min;\n if (west < north)\n min = west < northWest ? west : northWest;\n else\n min = north < northWest ? north : northWest;\n\n if (min == northW est) {\n if (northWest == current) {\n edits.push(EDIT_LEAVE );\n } else {\n edits.push(EDIT_UPDATE);\n curren t = northWest;\n }\n i--;\n j--;\n } else if ( min == west) {\n edits.push(EDIT_DELETE);\n i--;\n cu rrent = west;\n } else {\n edits.push(EDIT_ADD);\n j--; \n current = north;\n }\n }\n\n edits.reverse();\n return edits;\n },\n\n /**\n * Splice Projection functions:\n *\ n * A splice map is a representation of how a previous array of items\n * was transformed into a new array of items. Conceptually it is a list of\n * tuples of\n *\n * <index, removed, addedCount>\n *\n * which are kept in ascending index order of. The tuple represents that at\n * the |index|, |removed| sequence of items were removed, and 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 state of an\n * array. The basic approach is to calculate the edit distance matrix 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, currentEnd,\n old, oldStart, oldEnd) {\n var prefixCount = 0;\n var suffixCou nt = 0;\n\n var minLength = Math.min(currentEnd - currentStart, oldEnd - ol dStart);\n if (currentStart == 0 && oldStart == 0)\n prefixCount = t his.sharedPrefix(current, old, minLength);\n\n if (currentEnd == current.le ngth && oldEnd == old.length)\n suffixCount = this.sharedSuffix(current, old, minLength - prefixCount);\n\n currentStart += prefixCount;\n oldS tart += prefixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCo unt;\n\n if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n return [];\n\n if (currentStart == currentEnd) {\n var splice = newSplice(currentStart, [], 0);\n while (oldStart < oldEnd)\n s plice.removed.push(old[oldStart++]);\n\n return [ splice ];\n } else if (oldStart == oldEnd)\n return [ newSplice(currentStart, [], currentEn d - currentStart) ];\n\n var ops = this.spliceOperationsFromEditDistances(\ n this.calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd));\n\n var splice = undefined; \n var splices = [];\n var index = currentStart;\n var oldIndex = oldStart;\n for (var i = 0; i < ops.length; i++) {\n switch(ops[i]) {\n case EDIT_LEAVE:\n if (splice) {\n splices .push(splice);\n splice = undefined;\n }\n\n index++;\n oldIndex++;\n break;\n case EDIT_UPDAT E:\n if (!splice)\n splice = newSplice(index, [], 0);\n\ n splice.addedCount++;\n index++;\n\n splice.re moved.push(old[oldIndex]);\n oldIndex++;\n break;\n case EDIT_ADD:\n if (!splice)\n splice = newSplice(in dex, [], 0);\n\n splice.addedCount++;\n index++;\n break;\n case EDIT_DELETE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.removed.push(old[oldInd ex]);\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, searchLength) {\n for (var i = 0; i < searchLength; i++)\n if (!this.equals(current[i], old[i]))\n return i;\n return searchLength;\n },\n\n sharedSuffix: func tion(current, old, searchLength) {\n var index1 = current.length;\n va r index2 = old.length;\n var count = 0;\n while (count < searchLength && this.equals(current[--index1], old[--index2]))\n count++;\n\n ret urn count;\n },\n\n calculateSplices: function(current, previous) {\n return this.calcSplices(current, 0, current.length, previous, 0,\n previous.length);\n },\n\n equals: function(currentValue, previousValue) {\n return currentValue === previousValue;\n }\n };\n\n var arraySplice = new ArraySplice();\n\n function calcSplices(current, curren tStart, currentEnd,\n old, oldStart, oldEnd) {\n return arraySplice.calcSplices(current, currentStart, currentEnd,\n old, oldStart, oldEnd);\n }\n\n function intersect(start1, end 1, start2, end2) {\n // Disjoint\n if (end1 < start2 || end2 < start1)\n return -1;\n\n // Adjacent\n if (end1 == start2 || end2 == start1)\n return 0;\n\n // Non-zero intersect, span1 first\n if (start1 < start2 ) {\n if (end1 < end2)\n return end1 - start2; // Overlap\n els e\n return end2 - start2; // Contained\n } else {\n // Non-zero i ntersect, 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, addedCount) {\n\n var splice = newSplice(index, removed, addedCount);\n\n var inserted = false;\n var in sertionOffset = 0;\n\n for (var i = 0; i < splices.length; i++) {\n var current = splices[i];\n current.index += insertionOffset;\n\n if (inse rted)\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 - current.removed.length;\n\n splice.addedCount += current.addedCount - intersectCount;\n var del eteCount = splice.removed.length +\n current.removed.le ngth - intersectCount;\n\n if (!splice.addedCount && !deleteCount) {\n // merged splice is a noop. discard.\n inserted = true;\n } else {\n var removed = current.removed;\n\n if (splice.inde x < current.index) {\n // some prefix of splice.removed is prepended to current.removed.\n var prepend = splice.removed.slice(0, current.i ndex - splice.index);\n Array.prototype.push.apply(prepend, removed); \n removed = prepend;\n }\n\n if (splice.index + sp lice.removed.length > current.index + current.addedCount) {\n // some suffix of splice.removed is appended to current.removed.\n var appen d = splice.removed.slice(current.index + current.addedCount - splice.index);\n Array.prototype.push.apply(removed, append);\n }\n\n splice.removed = removed;\n if (current.index < splice.index) {\n splice.index = current.index;\n }\n }\n } else if (s plice.index < current.index) {\n // Insert splice here.\n\n insert ed = true;\n\n splices.splice(i, 0, splice);\n i++;\n\n var offset = splice.addedCount - splice.removed.length\n current.index += of fset;\n insertionOffset += offset;\n }\n }\n\n if (!inserted)\ n splices.push(splice);\n }\n\n function createInitialSplices(array, chan geRecords) {\n var splices = [];\n\n for (var i = 0; i < changeRecords.len gth; i++) {\n var record = changeRecords[i];\n switch(record.type) {\n case 'splice':\n mergeSplice(splices, record.index, record.remo ved.slice(), record.addedCount);\n break;\n case 'add':\n case 'update':\n case 'delete':\n if (!isIndex(record.name))\n continue;\n var index = toNumber(record.name);\n if (index < 0)\n continue;\n mergeSplice(splices, index, [reco rd.oldValue], 1);\n break;\n default:\n console.error(' Unexpected record type: ' + JSON.stringify(record));\n break;\n }\ n }\n\n return splices;\n }\n\n function projectArraySplices(array, chan geRecords) {\n var splices = [];\n\n createInitialSplices(array, changeRec ords).forEach(function(splice) {\n if (splice.addedCount == 1 && splice.rem oved.length == 1) {\n if (splice.removed[0] !== array[splice.index])\n splices.push(splice);\n\n return\n };\n\n splices = spli ces.concat(calcSplices(array, splice.index, splice.index + splice.addedCount,\n splice.removed, 0, splice.removed.leng th));\n });\n\n return splices;\n }\n\n global.Observer = Observer;\n g lobal.Observer.runEOM_ = runEOM;\n global.Observer.hasObjectObserve = hasObserv e;\n global.ArrayObserver = ArrayObserver;\n global.ArrayObserver.calculateSpl ices = function(current, previous) {\n return arraySplice.calculateSplices(cu rrent, previous);\n };\n\n global.ArraySplice = ArraySplice;\n global.ObjectO bserver = ObjectObserver;\n global.PathObserver = PathObserver;\n global.Compo undObserver = CompoundObserver;\n global.Path = Path;\n global.ObserverTransfo rm = ObserverTransform;\n})(typeof global !== 'undefined' && global && typeof mo dule !== 'undefined' && module ? global : this || window);\n","// prepoulate win dow.Platform.flags for default controls\r\nwindow.Platform = window.Platform || {};\r\n// prepopulate window.logFlags if necessary\r\nwindow.logFlags = window.l ogFlags || {};\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.se arch.slice(1).split('&').forEach(function(o) {\r\n o = o.split('=');\r\n o [0] && (flags[o[0]] = o[1] || true);\r\n });\r\n var entryPoint = document.cur rentScript ||\r\n document.querySelector('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 (f lags.log) {\r\n flags.log.split(',').forEach(function(f) {\r\n window.lo gFlags[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 det ect native\r\n // ShadowDOM, results in polyfill\r\n flags.shadow = flags.shad ow || flags.shadowdom || flags.polyfill;\r\n if (flags.shadow === 'native') {\r \n flags.shadow = false;\r\n } else {\r\n flags.shadow = flags.shadow || !HTMLElement.prototype.createShadowRoot;\r\n }\r\n\r\n if (flags.shadow && doc ument.querySelectorAll('script').length > 1) {\r\n console.warn('platform.js is not the first script on the page. ' +\r\n 'See http://www.polymer-proj ect.org/docs/start/platform.html#setup ' +\r\n 'for details.');\r\n }\r\ n\r\n // CustomElements polyfill flag\r\n if (flags.register) {\r\n window. CustomElements = window.CustomElements || {flags: {}};\r\n window.CustomEleme nts.flags.register = flags.register;\r\n }\r\n\r\n if (flags.imports) {\r\n window.HTMLImports = window.HTMLImports || {flags: {}};\r\n window.HTMLImpor ts.flags.imports = flags.imports;\r\n }\r\n\r\n // export\r\n scope.flags = f lags;\r\n})(Platform);\r\n\r\n// select ShadowDOM impl\r\nif (Platform.flags.sha dow) {\r\n","// Copyright 2012 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\nwindow.ShadowDOMPolyfill = {};\n\n(function(scope) {\n ' use strict';\n\n var constructorTable = new WeakMap();\n var nativePrototypeTa ble = new WeakMap();\n var wrappers = Object.create(null);\n\n // Don't test f or 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 e xception is caught\n var hasEval = !('securityPolicy' in document) ||\n do cument.securityPolicy.allowsEval;\n if (hasEval) {\n try {\n var f = ne w Function('', 'return true;');\n hasEval = f();\n } catch (ex) {\n hasEval = false;\n }\n }\n\n function assert(b) {\n if (!b)\n thro w new Error('Assertion failed');\n };\n\n var defineProperty = Object.definePr operty;\n var getOwnPropertyNames = Object.getOwnPropertyNames;\n var getOwnPr opertyDescriptor = Object.getOwnPropertyDescriptor;\n\n function mixin(to, from ) {\n getOwnPropertyNames(from).forEach(function(name) {\n definePropert y(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 'prototyp e':\n case 'toString':\n return;\n }\n defineProperty( to, name, getOwnPropertyDescriptor(from, name));\n });\n return to;\n };\ n\n function oneOf(object, propertyNames) {\n for (var i = 0; i < propertyNa mes.length; i++) {\n if (propertyNames[i] in object)\n return proper tyNames[i];\n }\n }\n\n // Mozilla's old DOM bindings are bretty busted:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=855844\n // Make sure they are create before we start modifying things.\n getOwnPropertyNames(window);\n\n f unction getWrapperConstructor(node) {\n var nativePrototype = node.__proto__ || Object.getPrototypeOf(node);\n var wrapperConstructor = constructorTable.g et(nativePrototype);\n if (wrapperConstructor)\n return wrapperConstruct or;\n\n var parentWrapperConstructor = getWrapperConstructor(nativePrototype) ;\n\n var GeneratedWrapper = createWrapperConstructor(parentWrapperConstructo r);\n registerInternal(nativePrototype, GeneratedWrapper, node);\n\n retur n GeneratedWrapper;\n }\n\n function addForwardingProperties(nativePrototype, wrapperPrototype) {\n installProperty(nativePrototype, wrapperPrototype, true );\n }\n\n function registerInstanceProperties(wrapperPrototype, instanceObjec t) {\n installProperty(instanceObject, wrapperPrototype, false);\n }\n\n va r isFirefox = /Firefox/.test(navigator.userAgent);\n\n // This is used as a fal lback when getting the descriptor fails in\n // installProperty.\n var dummyDe scriptor = {\n get: function() {},\n set: function(v) {},\n configurabl e: true,\n enumerable: true\n };\n\n function isEventHandlerName(name) {\n return /^on[a-z]+$/.test(name);\n }\n\n function isIdentifierName(name) {\n return /^\\w[a-zA-Z_0-9]*$/.test(name);\n }\n\n function getGetter(name) { \n return hasEval && isIdentifierName(name) ?\n new Function('return t his.impl.' + name) :\n function() { return this.impl[name]; };\n }\n\n function getSetter(name) {\n return hasEval && isIdentifierName(name) ?\n new Function('v', 'this.impl.' + name + ' = v') :\n function(v) { thi s.impl[name] = v; };\n }\n\n function getMethod(name) {\n return hasEval && isIdentifierName(name) ?\n new Function('return this.impl.' + name +\n '.apply(this.impl, arguments)') :\n function() { retur n this.impl[name].apply(this.impl, arguments); };\n }\n\n function getDescript or(source, name) {\n try {\n return Object.getOwnPropertyDescriptor(sour ce, name);\n } catch (ex) {\n // JSC and V8 both use data properties ins tead of accessors which can\n // cause getting the property desciptor to th row an exception.\n // https://bugs.webkit.org/show_bug.cgi?id=49739\n return dummyDescriptor;\n }\n }\n\n function installProperty(source, targe t, allowMethod, opt_blacklist) {\n var names = getOwnPropertyNames(source);\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n if (name === 'polymerBlackList_')\n continue;\n\n if (name in target )\n continue;\n\n if (source.polymerBlackList_ && source.polymerBlac kList_[name])\n continue;\n\n if (isFirefox) {\n // Tickle Fi refox's old bindings.\n source.__lookupGetter__(name);\n }\n va r descriptor = getDescriptor(source, name);\n var getter, setter;\n if (allowMethod && typeof descriptor.value === 'function') {\n target[name] = getMethod(name);\n continue;\n }\n\n var isEvent = isEventHa ndlerName(name);\n if (isEvent)\n getter = scope.getEventHandlerGett er(name);\n else\n getter = getGetter(name);\n\n if (descriptor .writable || descriptor.set) {\n if (isEvent)\n setter = scope.g etEventHandlerSetter(name);\n else\n setter = getSetter(name);\n }\n\n defineProperty(target, name, {\n get: getter,\n s et: setter,\n configurable: descriptor.configurable,\n enumerable: descriptor.enumerable\n });\n }\n }\n\n /**\n * @param {Function} n ativeConstructor\n * @param {Function} wrapperConstructor\n * @param {Object =} opt_instance If present, this is used to extract\n * properties from an instance object.\n */\n function register(nativeConstructor, wrapperConstruc tor, opt_instance) {\n var nativePrototype = nativeConstructor.prototype;\n registerInternal(nativePrototype, wrapperConstructor, opt_instance);\n mixi nStatics(wrapperConstructor, nativeConstructor);\n }\n\n function registerInte rnal(nativePrototype, wrapperConstructor, opt_instance) {\n var wrapperProtot ype = wrapperConstructor.prototype;\n assert(constructorTable.get(nativeProto type) === undefined);\n\n constructorTable.set(nativePrototype, wrapperConstr uctor);\n nativePrototypeTable.set(wrapperPrototype, nativePrototype);\n\n addForwardingProperties(nativePrototype, wrapperPrototype);\n if (opt_instan ce)\n registerInstanceProperties(wrapperPrototype, opt_instance);\n defi neProperty(wrapperPrototype, 'constructor', {\n value: wrapperConstructor,\ n configurable: true,\n enumerable: false,\n writable: true\n });\n // Set it again. Some VMs optimizes objects that are used as prototypes .\n wrapperConstructor.prototype = wrapperPrototype;\n }\n\n function isWra pperFor(wrapperConstructor, nativeConstructor) {\n return constructorTable.ge t(nativeConstructor.prototype) ===\n wrapperConstructor;\n }\n\n /**\n * Creates a generic wrapper constructor based on |object| and its\n * constr uctor.\n * @param {Node} object\n * @return {Function} The generated constru ctor.\n */\n function registerObject(object) {\n var nativePrototype = Obj ect.getPrototypeOf(object);\n\n var superWrapperConstructor = getWrapperConst ructor(nativePrototype);\n var GeneratedWrapper = createWrapperConstructor(su perWrapperConstructor);\n registerInternal(nativePrototype, GeneratedWrapper, object);\n\n return GeneratedWrapper;\n }\n\n function createWrapperConstr uctor(superWrapperConstructor) {\n function GeneratedWrapper(node) {\n s uperWrapperConstructor.call(this, node);\n }\n var p = Object.create(super WrapperConstructor.prototype);\n p.constructor = GeneratedWrapper;\n Gener atedWrapper.prototype = p;\n\n return GeneratedWrapper;\n }\n\n var Origina lDOMImplementation = window.DOMImplementation;\n var OriginalEventTarget = wind ow.EventTarget;\n var OriginalEvent = window.Event;\n var OriginalNode = windo w.Node;\n var OriginalWindow = window.Window;\n var OriginalRange = window.Ran ge;\n var OriginalCanvasRenderingContext2D = window.CanvasRenderingContext2D;\n var OriginalWebGLRenderingContext = window.WebGLRenderingContext;\n var Origi nalSVGElementInstance = window.SVGElementInstance;\n\n function isWrapper(objec t) {\n return object instanceof wrappers.EventTarget ||\n object in stanceof wrappers.Event ||\n object instanceof wrappers.Range ||\n object instanceof wrappers.DOMImplementation ||\n object instan ceof wrappers.CanvasRenderingContext2D ||\n wrappers.WebGLRenderingCon text &&\n object instanceof wrappers.WebGLRenderingContext;\n }\n \n function isNative(object) {\n return OriginalEventTarget && object instan ceof OriginalEventTarget ||\n object instanceof OriginalNode ||\n object instanceof OriginalEvent ||\n object instanceof OriginalW indow ||\n object instanceof OriginalRange ||\n object insta nceof OriginalDOMImplementation ||\n object instanceof OriginalCanvasR enderingContext2D ||\n OriginalWebGLRenderingContext &&\n object instanceof OriginalWebGLRenderingContext ||\n OriginalSVGElem entInstance &&\n object instanceof OriginalSVGElementInstance;\n }\n\n /**\n * Wraps a node in a WrapperNode. If there already exists a wrappe r for the\n * |node| that wrapper is returned instead.\n * @param {Node} nod e\n * @return {WrapperNode}\n */\n function wrap(impl) {\n if (impl === null)\n return null;\n\n assert(isNative(impl));\n return impl.polyme rWrapper_ ||\n (impl.polymerWrapper_ = new (getWrapperConstructor(impl))( impl));\n }\n\n /**\n * Unwraps a wrapper and returns the node it is wrappin g.\n * @param {WrapperNode} wrapper\n * @return {Node}\n */\n function un wrap(wrapper) {\n if (wrapper === null)\n return null;\n assert(isWra pper(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 object.\n */\n function unwrapIfNeeded(object) {\n return o bject && isWrapper(object) ? unwrap(object) : object;\n }\n\n /**\n * Wraps object if it is not a wrapper.\n * @param {Object} object\n * @return {Objec t} The wrapper for object.\n */\n function wrapIfNeeded(object) {\n return object && !isWrapper(object) ? wrap(object) : object;\n }\n\n /**\n * Overr ides the current wrapper (if any) for node.\n * @param {Node} node\n * @para m {WrapperNode=} wrapper If left out the wrapper will be created as\n * ne eded next time someone wraps the node.\n */\n function rewrap(node, wrapper) {\n if (wrapper === null)\n return;\n assert(isNative(node));\n as sert(wrapper === undefined || isWrapper(wrapper));\n node.polymerWrapper_ = w rapper;\n }\n\n function defineGetter(constructor, name, getter) {\n define Property(constructor.prototype, name, {\n get: getter,\n configurable: true,\n enumerable: true\n });\n }\n\n function defineWrapGetter(cons tructor, name) {\n defineGetter(constructor, name, function() {\n return wrap(this.impl[name]);\n });\n }\n\n /**\n * Forwards existing methods o n the native object to the wrapper methods.\n * This does not wrap any of the arguments or the return value since the\n * wrapper implementation already tak es care of that.\n * @param {Array.<Function>} constructors\n * @parem {Arra y.<string>} names\n */\n function forwardMethodsToWrapper(constructors, names ) {\n constructors.forEach(function(constructor) {\n names.forEach(funct ion(name) {\n constructor.prototype[name] = function() {\n var w = wrapIfNeeded(this);\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.defineWrapGe tter = defineWrapGetter;\n scope.forwardMethodsToWrapper = forwardMethodsToWrap per;\n scope.isWrapper = isWrapper;\n scope.isWrapperFor = isWrapperFor;\n sc ope.mixin = mixin;\n scope.nativePrototypeTable = nativePrototypeTable;\n scop e.oneOf = oneOf;\n scope.registerObject = registerObject;\n scope.registerWrap per = register;\n scope.rewrap = rewrap;\n scope.unwrap = unwrap;\n scope.unw rapIfNeeded = unwrapIfNeeded;\n scope.wrap = wrap;\n scope.wrapIfNeeded = wrap IfNeeded;\n scope.wrappers = wrappers;\n\n})(window.ShadowDOMPolyfill);\n","/*\ n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sou rce code is goverened by a BSD-style\n * license that can be found in the LICENS E file.\n */\n\n(function(context) {\n 'use strict';\n\n var OriginalMutationO bserver = window.MutationObserver;\n var callbacks = [];\n var pending = false ;\n var timerFunc;\n\n function handle() {\n pending = false;\n var copi es = callbacks.slice(0);\n callbacks = [];\n for (var i = 0; i < copies.le ngth; i++) {\n (0, copies[i])();\n }\n }\n\n if (OriginalMutationObser ver) {\n var counter = 1;\n var observer = new OriginalMutationObserver(ha ndle);\n var textNode = document.createTextNode(counter);\n observer.obser ve(textNode, {characterData: true});\n\n timerFunc = function() {\n coun ter = (counter + 1) % 2;\n textNode.data = counter;\n };\n\n } else {\n timerFunc = window.setImmediate || window.setTimeout;\n }\n\n function set EndOfMicrotask(func) {\n callbacks.push(func);\n if (pending)\n retur n;\n pending = true;\n timerFunc(handle, 0);\n }\n\n context.setEndOfMic rotask = setEndOfMicrotask;\n\n})(window.ShadowDOMPolyfill);\n","/*\n * Copyrigh t 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.setEn dOfMicrotask\n var wrapIfNeeded = scope.wrapIfNeeded\n var wrappers = scope.wr appers;\n\n var registrationsTable = new WeakMap();\n var globalMutationObserv ers = [];\n var isScheduled = false;\n\n function scheduleCallback(observer) { \n if (isScheduled)\n return;\n setEndOfMicrotask(notifyObservers);\n isScheduled = true;\n }\n\n // http://dom.spec.whatwg.org/#mutation-observ ers\n function notifyObservers() {\n isScheduled = false;\n\n do {\n var notifyList = globalMutationObservers.slice();\n var anyNonEmpty = fals e;\n for (var i = 0; i < notifyList.length; i++) {\n var mo = notify List[i];\n var queue = mo.takeRecords();\n removeTransientObserver sFor(mo);\n if (queue.length) {\n mo.callback_(queue, mo);\n anyNonEmpty = true;\n }\n }\n } while (anyNonEmpty);\n }\n \n /**\n * @param {string} type\n * @param {Node} target\n * @constructor \n */\n function MutationRecord(type, target) {\n this.type = type;\n t his.target = target;\n this.addedNodes = new wrappers.NodeList();\n this.r emovedNodes = new wrappers.NodeList();\n this.previousSibling = null;\n th is.nextSibling = null;\n this.attributeName = null;\n this.attributeNamesp ace = null;\n this.oldValue = null;\n }\n\n /**\n * Registers transient o bservers to ancestor and its ancesors for the node\n * which was removed.\n * @param {!Node} ancestor\n * @param {!Node} node\n */\n function registerT ransientObservers(ancestor, node) {\n for (; ancestor; ancestor = ancestor.pa rentNode) {\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 (regist ration.options.subtree)\n registration.addTransientObserver(node);\n }\n }\n }\n\n function removeTransientObserversFor(observer) {\n for (var i = 0; i < observer.nodes_.length; i++) {\n var node = observer.nodes_ [i];\n var registrations = registrationsTable.get(node);\n if (!regist rations)\n return;\n for (var j = 0; j < registrations.length; j++) {\n var registration = registrations[j];\n if (registration.observ er === observer)\n registration.removeTransientObservers();\n }\n }\n }\n\n // http://dom.spec.whatwg.org/#queue-a-mutation-record\n functio n enqueueMutation(target, type, data) {\n // 1.\n var interestedObservers = Object.create(null);\n var associatedStrings = Object.create(null);\n\n // 2.\n for (var node = target; node; node = node.parentNode) {\n // 3.\ n var registrations = registrationsTable.get(node);\n if (!registratio ns)\n continue;\n for (var j = 0; j < registrations.length; j++) {\n var registration = 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\", opt ions's attributeFilter is present, and\n // either options's attributeFil ter does not contain name or namespace\n // is non-null, continue.\n if (type === 'attributes' && options.attributeFilter &&\n (data.na mespace !== 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 intereste dObservers[observer.uid_] = observer;\n\n // 7. If either type is \"attri butes\" and options's attributeOldValue is\n // true, or type is \"charac terData\" and options's characterDataOldValue\n // is true, set the paire d string of registered observer's observer in\n // interested observers t o oldValue.\n if (type === 'attributes' && options.attributeOldValue ||\n type === 'characterData' && options.characterDataOldValue) {\n associatedStrings[observer.uid_] = data.oldValue;\n }\n }\n } \n\n var anyRecordsEnqueued = false;\n\n // 4.\n for (var uid in intere stedObservers) {\n var observer = interestedObservers[uid];\n var reco rd = new MutationRecord(type, target);\n\n // 2.\n if ('name' in data && 'namespace' in data) {\n record.attributeName = data.name;\n re cord.attributeNamespace = data.namespace;\n }\n\n // 3.\n if (dat a.addedNodes)\n record.addedNodes = data.addedNodes;\n\n // 4.\n if (data.removedNodes)\n record.removedNodes = data.removedNodes;\n\n // 5.\n if (data.previousSibling)\n record.previousSibling = dat a.previousSibling;\n\n // 6.\n if (data.nextSibling)\n record.n extSibling = data.nextSibling;\n\n // 7.\n if (associatedStrings[uid] !== undefined)\n record.oldValue = associatedStrings[uid];\n\n // 8. \n observer.records_.push(record);\n\n anyRecordsEnqueued = true;\n }\n\n if (anyRecordsEnqueued)\n scheduleCallback();\n }\n\n var slice = Array.prototype.slice;\n\n /**\n * @param {!Object} options\n * @constru ctor\n */\n function MutationObserverOptions(options) {\n this.childList = !!options.childList;\n this.subtree = !!options.subtree;\n\n // 1. If eit her options' attributeOldValue or attributeFilter is present\n // and options ' attributes is omitted, set options' attributes to true.\n if (!('attributes ' in options) &&\n ('attributeOldValue' in options || 'attributeFilter' i n options)) {\n this.attributes = true;\n } else {\n this.attribute s = !!options.attributes;\n }\n\n // 2. If options' characterDataOldValue is present and options'\n // characterData is omitted, set options' character Data to true.\n if ('characterDataOldValue' in options && !('characterData' i n options))\n this.characterData = true;\n else\n this.characterDat a = !!options.characterData;\n\n // 3. & 4.\n if (!this.attributes &&\n (options.attributeOldValue || 'attributeFilter' in options) ||\n // 5.\n !this.characterData && options.characterDataOldValue) {\n throw new TypeError();\n }\n\n this.characterData = !!options.characterData;\n this.attributeOldValue = !!options.attributeOldValue;\n this.characterData OldValue = !!options.characterDataOldValue;\n if ('attributeFilter' in option s) {\n if (options.attributeFilter == null ||\n typeof options.att ributeFilter !== 'object') {\n throw new TypeError();\n }\n thi s.attributeFilter = slice.call(options.attributeFilter);\n } else {\n th is.attributeFilter = null;\n }\n }\n\n var uidCounter = 0;\n\n /**\n * T he 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_ = ++uidCounter;\n\n // This will leak. There is no way to imple ment this without WeakRefs :'(\n globalMutationObservers.push(this);\n }\n\n MutationObserver.prototype = {\n // http://dom.spec.whatwg.org/#dom-mutatio nobserver-observe\n observe: function(target, options) {\n target = wrap IfNeeded(target);\n\n var newOptions = new MutationObserverOptions(options) ;\n\n // 6.\n var registration;\n var registrations = registratio nsTable.get(target);\n if (!registrations)\n registrationsTable.set( target, registrations = []);\n\n for (var i = 0; i < registrations.length; i++) {\n if (registrations[i].observer === this) {\n registratio n = registrations[i];\n // 6.1.\n registration.removeTransient Observers();\n // 6.2.\n registration.options = newOptions;\n }\n }\n\n // 7.\n if (!registration) {\n registrati on = new Registration(this, target, newOptions);\n registrations.push(reg istration);\n this.nodes_.push(target);\n }\n },\n\n // http:/ /dom.spec.whatwg.org/#dom-mutationobserver-disconnect\n disconnect: function( ) {\n this.nodes_.forEach(function(node) {\n var registrations = reg istrationsTable.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 // E ach node can only have one registered observer associated with\n // t his observer.\n break;\n }\n }\n }, this);\n this.records_ = [];\n },\n\n takeRecords: function() {\n var copyOf Records = this.records_;\n this.records_ = [];\n return copyOfRecords; \n }\n };\n\n /**\n * Class used to represent a registered observer.\n * @param {MutationObserver} observer\n * @param {Node} target\n * @param {Mu tationObserverOptions} options\n * @constructor\n */\n function Registratio n(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 chang e records.\n * @param {Node} node\n */\n addTransientObserver: functi on(node) {\n // Don't add transient observers on the target itself. We alre ady have all\n // the required listeners set up on the target.\n if (n ode === this.target)\n return;\n\n this.transientObservedNodes.push( node);\n var registrations = registrationsTable.get(node);\n if (!regi strations)\n registrationsTable.set(node, registrations = []);\n\n / / We know that registrations does not contain this because we already\n // checked if node === this.target.\n registrations.push(this);\n },\n\n removeTransientObservers: function() {\n var transientObservedNodes = this .transientObservedNodes;\n this.transientObservedNodes = [];\n\n for ( var i = 0; i < transientObservedNodes.length; i++) {\n var node = transie ntObservedNodes[i];\n var registrations = registrationsTable.get(node);\n for (var j = 0; j < registrations.length; j++) {\n if (registra tions[j] === this) {\n registrations.splice(j, 1);\n // Ea ch node can only have one registered observer associated with\n // th is observer.\n break;\n }\n }\n }\n }\n };\n \n scope.enqueueMutation = enqueueMutation;\n scope.registerTransientObservers = registerTransientObservers;\n scope.wrappers.MutationObserver = MutationObse rver;\n scope.wrappers.MutationRecord = MutationRecord;\n\n})(window.ShadowDOMP olyfill);\n","/**\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 f ound in the LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n /**\n * A tree scope represents the root of a tree. All nodes in a tree point to\n * the same TreeScope object. The tree scope of a node get set the first time\n * it is accessed or when a node is added or remove to a tree.\n * @construc tor\n */\n function TreeScope(root, parent) {\n this.root = root;\n thi s.parent = parent;\n }\n\n TreeScope.prototype = {\n get renderer() {\n if (this.root instanceof scope.wrappers.ShadowRoot) {\n return scope.ge tRendererForHost(this.root.host);\n }\n return null;\n },\n\n co ntains: function(treeScope) {\n for (; treeScope; treeScope = treeScope.par ent) {\n if (treeScope === this)\n return true;\n }\n return false;\n }\n };\n\n function setTreeScope(node, treeScope) {\n if (node.treeScope_ !== treeScope) {\n node.treeScope_ = treeScope;\n fo r (var sr = node.shadowRoot; sr; sr = sr.olderShadowRoot) {\n sr.treeScop e_.parent = treeScope;\n }\n for (var child = node.firstChild; child; child = child.nextSibling) {\n setTreeScope(child, treeScope);\n }\n }\n }\n\n function getTreeScope(node) {\n if (node.treeScope_)\n r eturn node.treeScope_;\n var parent = node.parentNode;\n var treeScope;\n if (parent)\n treeScope = getTreeScope(parent);\n else\n treeSco pe = new TreeScope(node, null);\n return node.treeScope_ = treeScope;\n }\n\ n scope.TreeScope = TreeScope;\n scope.getTreeScope = getTreeScope;\n scope.s etTreeScope = setTreeScope;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 20 13 The Polymer Authors. All rights reserved.\n// Use of this source code is gove rened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(func tion(scope) {\n 'use strict';\n\n var forwardMethodsToWrapper = scope.forwardM ethodsToWrapper;\n var getTreeScope = scope.getTreeScope;\n var mixin = scope. mixin;\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unw rap;\n var wrap = scope.wrap;\n var wrappers = scope.wrappers;\n\n var wrappe dFuns = new WeakMap();\n var listenersTable = new WeakMap();\n var handledEven tsTable = new WeakMap();\n var currentlyDispatchingEvents = new WeakMap();\n v ar targetTable = new WeakMap();\n var currentTargetTable = new WeakMap();\n va r relatedTargetTable = new WeakMap();\n var eventPhaseTable = new WeakMap();\n var stopPropagationTable = new WeakMap();\n var stopImmediatePropagationTable = new WeakMap();\n var eventHandlersTable = new WeakMap();\n var eventPathTabl e = new WeakMap();\n\n function isShadowRoot(node) {\n return node instanceo f wrappers.ShadowRoot;\n }\n\n function isInsertionPoint(node) {\n var loca lName = node.localName;\n return localName === 'content' || localName === 'sh adow';\n }\n\n function isShadowHost(node) {\n return !!node.shadowRoot;\n }\n\n function getEventParent(node) {\n var dv;\n return node.parentNode || (dv = node.defaultView) && wrap(dv) || null;\n }\n\n // https://dvcs.w3.or g/hg/webcomponents/raw-file/tip/spec/shadow/index.html#dfn-adjusted-parent\n fu nction calculateParents(node, context, 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 eventParent s = scope.eventParentsTable.get(node);\n if (eventParents) {\n // Copy o ver the remaining event parents for next iteration.\n for (var i = 1; i < e ventParents.length; i++) {\n ancestors[i - 1] = eventParents[i];\n } \n return eventParents[0];\n }\n\n // 3.\n if (context && isInsert ionPoint(node)) {\n var parentNode = node.parentNode;\n if (parentNode && isShadowHost(parentNode)) {\n var trees = scope.getShadowTrees(parent Node);\n var p = getInsertionParent(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 // h ttps://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#event-re targeting\n function retarget(node) {\n var stack = []; // 1.\n var ance stor = node; // 2.\n var targets = [];\n var ancestors = [];\n while ( ancestor) { // 3.\n var context = null; // 3.2.\n // TODO(arv): Chan ge order of these. If the stack is empty we always end\n // up pushing ance stor, no matter what.\n if (isInsertionPoint(ancestor)) { // 3.1.\n context = topMostNotInsertionPoint(stack); // 3.1.1.\n var top = stack[ stack.length - 1] || ancestor; // 3.1.2.\n stack.push(top);\n } els e if (!stack.length) {\n stack.push(ancestor); // 3.3.\n }\n v ar target = stack[stack.length - 1]; // 3.4.\n targets.push({target: targe t, currentTarget: ancestor}); // 3.5.\n if (isShadowRoot(ancestor)) // 3. 6.\n stack.pop(); // 3.6.1.\n\n ancestor = calculateParents(ancesto r, 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 (!isInsertionPoint(stack[i]))\n return stack[i];\n }\n return null;\n }\n\n // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/s pec/shadow/index.html#dfn-adjusted-related-target\n function adjustRelatedTarge t(target, related) {\n var ancestors = [];\n while (target) { // 3.\n var stack = []; // 3.1.\n var ancestor = related; // 3.2.\n var la st = undefined; // 3.3. Needs to be reset every iteration.\n while (ancest or) {\n var context = null;\n if (!stack.length) {\n stac k.push(ancestor);\n } else {\n if (isInsertionPoint(ancestor)) { // 3.4.3.\n context = topMostNotInsertionPoint(stack);\n // isDistributed is more general than checking whether last is\n // assigned into ancestor.\n if (isDistributed(last)) { // 3.4.3.2.\n var head = stack[stack.length - 1];\n stack.push(head); \n }\n }\n }\n\n if (inSameTree(ancestor, targ et)) // 3.4.4.\n return stack[stack.length - 1];\n\n if (isShad owRoot(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 (isShadowRoot(target)) // 3.5.\n target = target.host;\n else\n target = target.parentNode; // 3.6.\n }\n }\n\n function getInsertionParent(node) {\n return scope.insertionParentTab le.get(node);\n }\n\n function isDistributed(node) {\n return getInsertionP arent(node);\n }\n\n function inSameTree(a, b) {\n return getTreeScope(a) = == getTreeScope(b);\n }\n\n function dispatchOriginalEvent(originalEvent) {\n // Make sure this event is only dispatched once.\n if (handledEventsTable. get(originalEvent))\n return;\n handledEventsTable.set(originalEvent, tr ue);\n dispatchEvent(wrap(originalEvent), wrap(originalEvent.target));\n }\n \n function isLoadLikeEvent(event) {\n switch (event.type) {\n case 'be foreunload':\n case 'load':\n case 'unload':\n return true;\n }\n return false;\n }\n\n function dispatchEvent(event, originalWrapperTa rget) {\n if (currentlyDispatchingEvents.get(event))\n throw new Error(' InvalidStateError')\n currentlyDispatchingEvents.set(event, true);\n\n // Render to ensure that the event path is correct.\n scope.renderAllPending();\ n var eventPath = retarget(originalWrapperTarget);\n\n // For window \"loa d\" 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/cu rrent-work/multipage/the-end.html#the-end\n //\n // TODO(arv): Find a less hacky way to do this.\n if (eventPath.length === 2 &&\n eventPath[0]. target instanceof wrappers.Document &&\n isLoadLikeEvent(event)) {\n eventPath.shift();\n }\n\n eventPathTable.set(event, eventPath);\n\n i f (dispatchCapturing(event, eventPath)) {\n if (dispatchAtTarget(event, eve ntPath)) {\n dispatchBubbling(event, eventPath);\n }\n }\n\n e ventPhaseTable.set(event, Event.NONE);\n currentTargetTable.delete(event, nul l);\n currentlyDispatchingEvents.delete(event);\n\n return event.defaultPr evented;\n }\n\n function dispatchCapturing(event, eventPath) {\n var phase ;\n\n for (var i = eventPath.length - 1; i > 0; i--) {\n var target = ev entPath[i].target;\n var currentTarget = eventPath[i].currentTarget;\n if (target === currentTarget)\n continue;\n\n phase = Event.CAPTURI NG_PHASE;\n if (!invoke(eventPath[i], event, phase))\n return 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, ph ase);\n }\n\n function dispatchBubbling(event, eventPath) {\n var 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 = eventPat h[i].currentTarget;\n if (target === currentTarget)\n phase = 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 funct ion invoke(tuple, event, phase) {\n var target = tuple.target;\n var curre ntTarget = tuple.currentTarget;\n\n var listeners = listenersTable.get(curren tTarget);\n if (!listeners)\n return true;\n\n if ('relatedTarget' in event) {\n var originalEvent = unwrap(event);\n var unwrappedRelatedT arget = originalEvent.relatedTarget;\n\n // X-Tag sets relatedTarget on a C ustomEvent. If they do that there is no\n // way to have relatedTarget retu rn the adjusted target but worse is that\n // the originalEvent might not h ave a relatedTarget so we hit an assert\n // when we try to wrap it.\n if (unwrappedRelatedTarget) {\n // In IE we can get objects that are not EventTargets at this point.\n // Safari does not have an EventTarget int erface so revert to checking\n // for addEventListener as an approximatio n.\n if (unwrappedRelatedTarget instanceof Object &&\n unwrapp edRelatedTarget.addEventListener) {\n var relatedTarget = wrap(unwrappe dRelatedTarget);\n\n var adjusted = adjustRelatedTarget(currentTarget, relatedTarget);\n if (adjusted === target)\n return true;\n } else {\n adjusted = null;\n }\n relatedTargetTab le.set(event, adjusted);\n }\n }\n\n eventPhaseTable.set(event, phase );\n var type = event.type;\n\n var anyRemoved = false;\n targetTable.s et(event, target);\n currentTargetTable.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 && phas e === Event.CAPTURING_PHASE ||\n listener.capture && phase === Event.BU BBLING_PHASE) {\n continue;\n }\n\n try {\n if (typeof l istener.handler === 'function')\n listener.handler.call(currentTarget, event);\n else\n listener.handler.handleEvent(event);\n\n if (stopImmediatePropagationTable.get(event))\n return false;\n\n } catch (ex) {\n if (window.onerror)\n window.onerror(ex.messag e);\n else\n console.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 < copy.length; i++) {\n if (!copy[i].remove d)\n listeners.push(copy[i]);\n }\n }\n\n return !stopPropag ationTable.get(event);\n }\n\n function Listener(type, handler, capture) {\n this.type = type;\n this.handler = handler;\n this.capture = Boolean(cap ture);\n }\n Listener.prototype = {\n equals: function(that) {\n retur n this.handler === that.handler && this.type === that.type &&\n this.ca pture === that.capture;\n },\n get removed() {\n return this.handler === null;\n },\n remove: function() {\n this.handler = null;\n }\n };\n\n var OriginalEvent = window.Event;\n OriginalEvent.prototype.polymerBl ackList_ = {\n returnValue: true,\n // TODO(arv): keyLocation is part of K eyboardEvent but Firefox does not\n // support constructable KeyboardEvent so we keep it here for now.\n keyLocation: true\n };\n\n /**\n * Creates a new Event wrapper or wraps an existin native Event object.\n * @param {string| Event} type\n * @param {Object=} options\n * @constructor\n */\n function Event(type, options) {\n if (type instanceof OriginalEvent) {\n var imp l = type;\n if (!OriginalBeforeUnloadEvent && impl.type === 'beforeunload') \n return new BeforeUnloadEvent(impl);\n this.impl = impl;\n } el se {\n return wrap(constructEvent(OriginalEvent, 'Event', type, options));\ n }\n }\n Event.prototype = {\n get target() {\n return targetTable .get(this);\n },\n get currentTarget() {\n return currentTargetTable. get(this);\n },\n get eventPhase() {\n return eventPhaseTable.get(thi s);\n },\n get path() {\n var nodeList = new wrappers.NodeList();\n var eventPath = eventPathTable.get(this);\n if (eventPath) {\n v ar index = 0;\n var lastIndex = eventPath.length - 1;\n var baseRo ot = getTreeScope(currentTargetTable.get(this));\n\n for (var i = 0; i <= lastIndex; i++) {\n var currentTarget = eventPath[i].currentTarget;\n var currentRoot = getTreeScope(currentTarget);\n if (currentRo ot.contains(baseRoot) &&\n // Make sure we do not add Window to the path.\n (i !== lastIndex || currentTarget instanceof wrappers.Node )) {\n nodeList[index++] = currentTarget;\n }\n }\n nodeList.length = index;\n }\n return nodeList;\n },\n sto pPropagation: function() {\n stopPropagationTable.set(this, true);\n },\ n stopImmediatePropagation: function() {\n stopPropagationTable.set(this , true);\n stopImmediatePropagationTable.set(this, true);\n }\n };\n r egisterWrapper(OriginalEvent, Event, document.createEvent('Event'));\n\n functi on unwrapOptions(options) {\n if (!options || !options.relatedTarget)\n return options;\n return Object.create(options, {\n relatedTarget: {valu e: unwrap(options.relatedTarget)}\n });\n }\n\n function registerGenericEve nt(name, SuperEvent, prototype) {\n var OriginalEvent = window[name];\n va r GenericEvent = function(type, options) {\n if (type instanceof OriginalEv ent)\n this.impl = type;\n else\n return wrap(constructEvent( OriginalEvent, name, type, options));\n };\n GenericEvent.prototype = Obje ct.create(SuperEvent.prototype);\n if (prototype)\n mixin(GenericEvent.p rototype, prototype);\n if (OriginalEvent) {\n // - Old versions of Safa ri fails on new FocusEvent (and others?).\n // - IE does not support event constructors.\n // - createEvent('FocusEvent') throws in Firefox.\n // => Try the best practice solution first and fallback to the old way\n // i f needed.\n try {\n registerWrapper(OriginalEvent, GenericEvent, new OriginalEvent('temp'));\n } catch (ex) {\n registerWrapper(Original Event, GenericEvent,\n document.createEvent(name));\n }\n }\n return GenericEvent;\n }\n\n var UIEvent = registerGenericEven t('UIEvent', Event);\n var CustomEvent = registerGenericEvent('CustomEvent', Ev ent);\n\n var relatedTargetProto = {\n get relatedTarget() {\n var rela tedTarget = relatedTargetTable.get(this);\n // relatedTarget can be null.\n if (relatedTarget !== undefined)\n return relatedTarget;\n ret urn wrap(unwrap(this).relatedTarget);\n }\n };\n\n function getInitFunction (name, relatedTargetIndex) {\n return function() {\n arguments[relatedTa rgetIndex] = unwrap(arguments[relatedTargetIndex]);\n var impl = unwrap(thi s);\n impl[name].apply(impl, arguments);\n };\n }\n\n var mouseEventPr oto = mixin({\n initMouseEvent: getInitFunction('initMouseEvent', 14)\n }, r elatedTargetProto);\n\n var focusEventProto = mixin({\n initFocusEvent: getI nitFunction('initFocusEvent', 5)\n }, relatedTargetProto);\n\n var MouseEvent = registerGenericEvent('MouseEvent', UIEvent, mouseEventProto);\n var FocusEven t = registerGenericEvent('FocusEvent', UIEvent, focusEventProto);\n\n // In cas e the browser does not support event constructors we polyfill that\n // by call ing `createEvent('Foo')` and `initFooEvent` where the arguments to\n // `initFo oEvent` are derived from the registered default event init dict.\n var defaultI nitDicts = Object.create(null);\n\n var supportsEventConstructors = (function() {\n try {\n new window.FocusEvent('focus');\n } catch (ex) {\n return false;\n }\n return true;\n })();\n\n /**\n * Constructs a new native event.\n */\n function constructEvent(OriginalEvent, name, type, optio ns) {\n if (supportsEventConstructors)\n return new OriginalEvent(type, unwrapOptions(options));\n\n // Create the arguments from the default diction ary.\n var event = unwrap(document.createEvent(name));\n var defaultDict = defaultInitDicts[name];\n var args = [type];\n Object.keys(defaultDict).f orEach(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( event, args);\n return event;\n }\n\n if (!supportsEventConstructors) {\n var configureEventConstructor = function(name, initDict, superName) {\n i f (superName) {\n var superDict = defaultInitDicts[superName];\n i nitDict = mixin(mixin({}, superDict), initDict);\n }\n\n defaultInitDi cts[name] = initDict;\n };\n\n // The order of the default event init dict ionary keys is important, the\n // arguments to initFooEvent is derived from that.\n configureEventConstructor('Event', {bubbles: false, cancelable: false });\n configureEventConstructor('CustomEvent', {detail: null}, 'Event');\n configureEventConstructor('UIEvent', {view: null, detail: 0}, 'Event');\n co nfigureEventConstructor('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 related Target: null\n }, 'UIEvent');\n configureEventConstructor('FocusEvent', {r elatedTarget: null}, 'UIEvent');\n }\n\n // Safari 7 does not yet have BeforeU nloadEvent.\n // https://bugs.webkit.org/show_bug.cgi?id=120849\n var Original BeforeUnloadEvent = window.BeforeUnloadEvent;\n\n function BeforeUnloadEvent(im pl) {\n Event.call(this, impl);\n }\n BeforeUnloadEvent.prototype = Object. create(Event.prototype);\n mixin(BeforeUnloadEvent.prototype, {\n get return Value() {\n return this.impl.returnValue;\n },\n set returnValue(v) { \n this.impl.returnValue = v;\n }\n });\n\n if (OriginalBeforeUnloadEv ent)\n registerWrapper(OriginalBeforeUnloadEvent, BeforeUnloadEvent);\n\n fu nction isValidListener(fun) {\n if (typeof fun === 'function')\n return true;\n return fun && fun.handleEvent;\n }\n\n function isMutationEvent(typ e) {\n switch (type) {\n case 'DOMAttrModified':\n case 'DOMAttribu teNameChanged':\n case 'DOMCharacterDataModified':\n case 'DOMElementN ameChanged':\n case 'DOMNodeInserted':\n case 'DOMNodeInsertedIntoDocu ment':\n case 'DOMNodeRemoved':\n case 'DOMNodeRemovedFromDocument':\n case 'DOMSubtreeModified':\n return true;\n }\n return false; \n }\n\n var OriginalEventTarget = window.EventTarget;\n\n /**\n * This rep resents a wrapper for an EventTarget.\n * @param {!EventTarget} impl The origi nal event target.\n * @constructor\n */\n function EventTarget(impl) {\n this.impl = impl;\n }\n\n // Node and Window have different internal type che cks in WebKit so we cannot\n // use the same method as the original function.\n var methodNames = [\n 'addEventListener',\n 'removeEventListener',\n 'dispatchEvent'\n ];\n\n [Node, Window].forEach(function(constructor) {\n v ar p = constructor.prototype;\n methodNames.forEach(function(name) {\n O bject.defineProperty(p, name + '_', {value: p[name]});\n });\n });\n\n func tion getTargetToListenAt(wrapper) {\n if (wrapper instanceof wrappers.ShadowR oot)\n wrapper = wrapper.host;\n return unwrap(wrapper);\n }\n\n Event Target.prototype = {\n addEventListener: function(type, fun, capture) {\n if (!isValidListener(fun) || isMutationEvent(type))\n return;\n\n var listener = new Listener(type, fun, capture);\n var listeners = listener sTable.get(this);\n if (!listeners) {\n listeners = [];\n lis tenersTable.set(this, listeners);\n } else {\n // Might have a dupli cate.\n for (var i = 0; i < listeners.length; i++) {\n if (liste ner.equals(listeners[i]))\n return;\n }\n }\n\n list eners.push(listener);\n\n var target = getTargetToListenAt(this);\n ta rget.addEventListener_(type, dispatchOriginalEvent, true);\n },\n removeEv entListener: function(type, fun, capture) {\n capture = Boolean(capture);\n var listeners = listenersTable.get(this);\n if (!listeners)\n return;\n var count = 0, found = false;\n for (var i = 0; i < listener s.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 = ge tTargetToListenAt(this);\n target.removeEventListener_(type, dispatchOrig inalEvent, true);\n }\n },\n dispatchEvent: function(event) {\n // We want to use the native dispatchEvent because it triggers the default\n // actions (like checking a checkbox). However, if there are no listeners\n // in the composed tree then there are 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 listener s 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 disp atching the same event again. This is safe because if user\n // code calls this during an existing dispatch of the same event the\n // native dispatch Event throws (that is required by the spec).\n handledEventsTable.set(nativ eEvent, false);\n\n // Force rendering since we prefer native dispatch and that works on the\n // composed tree.\n scope.renderAllPending();\n\n var tempListener;\n if (!hasListenerInAncestors(this, eventType)) {\n tempListener = function() {};\n this.addEventListener(eventType, t empListener, true);\n }\n\n try {\n return unwrap(this).dispatc hEvent_(nativeEvent);\n } finally {\n if (tempListener)\n t his.removeEventListener(eventType, tempListener, true);\n }\n }\n };\n\ n function hasListener(node, type) {\n var listeners = listenersTable.get(no de);\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n if (!listeners[i].removed && listeners[i].type === type)\n retu rn true;\n }\n }\n return false;\n }\n\n function hasListenerInAnce stors(target, type) {\n for (var node = unwrap(target); node; node = node.par entNode) {\n if (hasListener(wrap(node), type))\n return true;\n }\n return false;\n }\n\n if (OriginalEventTarget)\n registerWrapper(Ori ginalEventTarget, EventTarget);\n\n function wrapEventTargetMethods(constructor s) {\n forwardMethodsToWrapper(constructors, methodNames);\n }\n\n var orig inalElementFromPoint = document.elementFromPoint;\n\n function elementFromPoint (self, document, x, y) {\n scope.renderAllPending();\n\n var element = wra p(originalElementFromPoint.call(document.impl, x, y));\n var targets = retarg et(element, this)\n for (var i = 0; i < targets.length; i++) {\n var tar get = targets[i];\n if (target.currentTarget === self)\n return targ et.target;\n }\n return null;\n }\n\n /**\n * Returns a function that is to be used as a getter for `onfoo` properties.\n * @param {string} name\n * @return {Function}\n */\n function getEventHandlerGetter(name) {\n retu rn function() {\n var inlineEventHandlers = eventHandlersTable.get(this);\n return inlineEventHandlers && inlineEventHandlers[name] &&\n inli neEventHandlers[name].value || null;\n };\n }\n\n /**\n * Returns a func tion 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 in lineEventHandlers = eventHandlersTable.get(this);\n if (!inlineEventHandler s) {\n inlineEventHandlers = Object.create(null);\n eventHandlersT able.set(this, inlineEventHandlers);\n }\n\n var old = inlineEventHand lers[name];\n if (old)\n this.removeEventListener(eventType, old.wra pped, false);\n\n if (typeof value === 'function') {\n var wrapped = function(e) {\n var rv = value.call(this, e);\n if (rv === fa lse)\n e.preventDefault();\n else if (name === 'onbeforeunlo ad' && typeof rv === 'string')\n e.returnValue = rv;\n // mo useover uses true for preventDefault but preventDefault for\n // mouseo ver is ignored by browsers these day.\n };\n\n this.addEventListen er(eventType, wrapped, false);\n inlineEventHandlers[name] = {\n value: value,\n wrapped: wrapped\n };\n }\n };\n }\n\n scope.adjustRelatedTarget = adjustRelatedTarget;\n scope.elementFromPoint = e lementFromPoint;\n scope.getEventHandlerGetter = getEventHandlerGetter;\n scop e.getEventHandlerSetter = getEventHandlerSetter;\n scope.wrapEventTargetMethods = wrapEventTargetMethods;\n scope.wrappers.BeforeUnloadEvent = BeforeUnloadEve nt;\n scope.wrappers.CustomEvent = CustomEvent;\n scope.wrappers.Event = Event ;\n scope.wrappers.EventTarget = EventTarget;\n scope.wrappers.FocusEvent = Fo cusEvent;\n scope.wrappers.MouseEvent = MouseEvent;\n scope.wrappers.UIEvent = UIEvent;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2012 The Polymer Aut hors. All rights reserved.\n// Use of this source code is goverened by a BSD-sty le\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, {enumerable: false});\n }\n\n function NodeL ist() {\n this.length = 0;\n nonEnum(this, 'length');\n }\n NodeList.pro totype = {\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 wrapperList.length = length;\n return wrapperLi st;\n }\n\n function addWrapNodeListMethod(wrapperConstructor, name) {\n wr apperConstructor.prototype[name] = function() {\n return wrapNodeList(this. impl[name].apply(this.impl, arguments));\n };\n }\n\n scope.wrappers.NodeLi st = NodeList;\n scope.addWrapNodeListMethod = addWrapNodeListMethod;\n scope. wrapNodeList = wrapNodeList;\n\n})(window.ShadowDOMPolyfill);\n","/*\n * Copyrig ht 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\n(function(scope) {\n 'use strict';\n\n // TODO(arv): Implement.\n\n scop e.wrapHTMLCollection = scope.wrapNodeList;\n scope.wrappers.HTMLCollection = sc ope.wrappers.NodeList;\n\n})(window.ShadowDOMPolyfill);\n","/**\n * Copyright 20 12 The Polymer Authors. All rights reserved.\n * Use of this source code is gove rened 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 EventTarget = scope.wrappers.EventT arget;\n var NodeList = scope.wrappers.NodeList;\n var TreeScope = scope.TreeS cope;\n var assert = scope.assert;\n var defineWrapGetter = scope.defineWrapGe tter;\n var enqueueMutation = scope.enqueueMutation;\n var getTreeScope = scop e.getTreeScope;\n var isWrapper = scope.isWrapper;\n var mixin = scope.mixin;\ n var registerTransientObservers = scope.registerTransientObservers;\n var reg isterWrapper = scope.registerWrapper;\n var setTreeScope = scope.setTreeScope;\ n var unwrap = scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n v ar wrap = scope.wrap;\n var wrapIfNeeded = scope.wrapIfNeeded;\n var wrappers = scope.wrappers;\n\n function assertIsNodeWrapper(node) {\n assert(node ins tanceof Node);\n }\n\n function createOneElementNodeList(node) {\n var node s = new NodeList();\n nodes[0] = node;\n nodes.length = 1;\n return nod es;\n }\n\n var surpressMutations = false;\n\n /**\n * Called before node i s inserted into a node to enqueue its removal from its\n * old parent.\n * @ param {!Node} node The node that is about to be removed.\n * @param {!Node} pa rent The parent node that the node is being removed from.\n * @param {!NodeLis t} nodes The collected nodes.\n */\n function enqueueRemovalForInsertedNodes( node, parent, nodes) {\n enqueueMutation(parent, 'childList', {\n remove dNodes: nodes,\n previousSibling: node.previousSibling,\n nextSibling: node.nextSibling\n });\n }\n\n function enqueueRemovalForInsertedDocumentF ragment(df, nodes) {\n enqueueMutation(df, 'childList', {\n removedNodes : nodes\n });\n }\n\n /**\n * Collects nodes from a DocumentFragment or a Node for removal followed\n * by an insertion.\n *\n * This updates the i nternal pointers for node, previousNode and nextNode.\n */\n function collect Nodes(node, parentNode, previousNode, nextNode) {\n if (node instanceof Docum entFragment) {\n var nodes = collectNodesForDocumentFragment(node);\n\n // The extra loop is to work around bugs with DocumentFragments in IE.\n surpressMutations = true;\n for (var i = nodes.length - 1; i >= 0; i--) {\n node.removeChild(nodes[i]);\n nodes[i].parentNode_ = parentNode;\ n }\n surpressMutations = false;\n\n for (var i = 0; i < nodes.le ngth; 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 (nextNod e)\n nextNode.previousSibling_ = nodes[nodes.length - 1];\n\n return nodes;\n }\n\n var nodes = createOneElementNodeList(node);\n var oldPa rent = node.parentNode;\n if (oldParent) {\n // This will enqueue the mu tation record for the removal as needed.\n oldParent.removeChild(node);\n }\n\n node.parentNode_ = parentNode;\n node.previousSibling_ = previousN ode;\n node.nextSibling_ = nextNode;\n if (previousNode)\n previousNo de.nextSibling_ = node;\n if (nextNode)\n nextNode.previousSibling_ = no de;\n\n return nodes;\n }\n\n function collectNodesNative(node) {\n if ( node instanceof DocumentFragment)\n return collectNodesForDocumentFragment( node);\n\n var nodes = createOneElementNodeList(node);\n var oldParent = n ode.parentNode;\n if (oldParent)\n enqueueRemovalForInsertedNodes(node, oldParent, nodes);\n return nodes;\n }\n\n function collectNodesForDocument Fragment(node) {\n var nodes = new NodeList();\n var i = 0;\n for (var child = node.firstChild; child; child = child.nextSibling) {\n nodes[i++] = child;\n }\n nodes.length = i;\n enqueueRemovalForInsertedDocumentFrag ment(node, nodes);\n return nodes;\n }\n\n function snapshotNodeList(nodeLi st) {\n // NodeLists are not live at the moment so just return the same objec t.\n return nodeList;\n }\n\n // http://dom.spec.whatwg.org/#node-is-insert ed\n function nodeWasAdded(node, treeScope) {\n setTreeScope(node, treeScope );\n node.nodeIsInserted_();\n }\n\n function nodesWereAdded(nodes, parent) {\n var treeScope = getTreeScope(parent);\n for (var i = 0; i < nodes.len gth; i++) {\n nodeWasAdded(nodes[i], treeScope);\n }\n }\n\n // http:/ /dom.spec.whatwg.org/#node-is-removed\n function nodeWasRemoved(node) {\n se tTreeScope(node, new TreeScope(node, null));\n }\n\n function nodesWereRemoved (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n nodeWasRemoved(no des[i]);\n }\n }\n\n function ensureSameOwnerDocument(parent, child) {\n var ownerDoc = parent.nodeType === Node.DOCUMENT_NODE ?\n parent : paren t.ownerDocument;\n if (ownerDoc !== child.ownerDocument)\n ownerDoc.adop tNode(child);\n }\n\n function adoptNodesIfNeeded(owner, nodes) {\n if (!no des.length)\n return;\n\n var ownerDoc = owner.ownerDocument;\n\n // All nodes have the same ownerDocument when we get here.\n if (ownerDoc === no des[0].ownerDocument)\n return;\n\n for (var i = 0; i < nodes.length; i+ +) {\n scope.adoptNodeNoRemove(nodes[i], ownerDoc);\n }\n }\n\n functi on unwrapNodesForInsertion(owner, nodes) {\n adoptNodesIfNeeded(owner, nodes) ;\n var length = nodes.length;\n\n if (length === 1)\n return unwrap( nodes[0]);\n\n var df = unwrap(owner.ownerDocument.createDocumentFragment()); \n for (var i = 0; i < length; i++) {\n df.appendChild(unwrap(nodes[i])) ;\n }\n return df;\n }\n\n function clearChildNodes(wrapper) {\n if ( wrapper.firstChild_ !== undefined) {\n var child = wrapper.firstChild_;\n while (child) {\n var tmp = child;\n child = child.nextSibling _;\n tmp.parentNode_ = tmp.previousSibling_ = tmp.nextSibling_ = undefine d;\n }\n }\n wrapper.firstChild_ = wrapper.lastChild_ = undefined;\n }\n\n function removeAllChildNodes(wrapper) {\n if (wrapper.invalidateShado wRenderer()) {\n var childWrapper = wrapper.firstChild;\n while (child Wrapper) {\n assert(childWrapper.parentNode === wrapper);\n var ne xtSibling = childWrapper.nextSibling;\n var childNode = unwrap(childWrapp er);\n var parentNode = childNode.parentNode;\n if (parentNode)\n originalRemoveChild.call(parentNode, childNode);\n childWrapper. previousSibling_ = childWrapper.nextSibling_ =\n childWrapper.parentN ode_ = null;\n childWrapper = nextSibling;\n }\n wrapper.firstC hild_ = wrapper.lastChild_ = null;\n } else {\n var node = unwrap(wrappe r);\n var child = node.firstChild;\n var nextSibling;\n while (ch ild) {\n nextSibling = child.nextSibling;\n originalRemoveChild.ca ll(node, child);\n child = nextSibling;\n }\n }\n }\n\n functio n invalidateParent(node) {\n var p = node.parentNode;\n return p && p.inva lidateShadowRenderer();\n }\n\n function cleanupNodes(nodes) {\n for (var i = 0, n; i < nodes.length; i++) {\n n = nodes[i];\n n.parentNode.remov eChild(n);\n }\n }\n\n var originalImportNode = document.importNode;\n var originalCloneNode = window.Node.prototype.cloneNode;\n\n function cloneNode(no de, deep, opt_doc) {\n var clone;\n if (opt_doc)\n clone = wrap(origi nalImportNode.call(opt_doc, node.impl, false));\n else\n clone = wrap(or iginalCloneNode.call(node.impl, false));\n\n if (deep) {\n for (var chil d = node.firstChild; child; child = child.nextSibling) {\n clone.appendCh ild(cloneNode(child, true, opt_doc));\n }\n\n if (node instanceof wrap pers.HTMLTemplateElement) {\n var cloneContent = clone.content;\n for (var child = node.content.firstChild;\n child;\n chi ld = child.nextSibling) {\n cloneContent.appendChild(cloneNode(child, tr ue, opt_doc));\n }\n }\n }\n // TODO(arv): Some HTML elements also clone other data like value.\n return clone;\n }\n\n function contains (self, child) {\n if (!child || getTreeScope(self) !== getTreeScope(child))\n return false;\n\n for (var node = child; node; node = node.parentNode) {\n if (node === self)\n return true;\n }\n return false;\n } \n\n var OriginalNode = window.Node;\n\n /**\n * This represents a wrapper o f a native DOM node.\n * @param {!Node} original The original DOM node, aka, t he visual DOM node.\n * @constructor\n * @extends {EventTarget}\n */\n fu nction Node(original) {\n assert(original instanceof OriginalNode);\n\n Ev entTarget.call(this, original);\n\n // These properties are used to override the visual references with the\n // logical ones. If the value is undefined i t means that the logical is the\n // same as the visual.\n\n /**\n * @ type {Node|undefined}\n * @private\n */\n this.parentNode_ = undefine d;\n\n /**\n * @type {Node|undefined}\n * @private\n */\n this .firstChild_ = undefined;\n\n /**\n * @type {Node|undefined}\n * @pri vate\n */\n this.lastChild_ = undefined;\n\n /**\n * @type {Node|u ndefined}\n * @private\n */\n this.nextSibling_ = undefined;\n\n / **\n * @type {Node|undefined}\n * @private\n */\n this.previousSi bling_ = undefined;\n\n this.treeScope_ = undefined;\n }\n\n var OriginalDo cumentFragment = window.DocumentFragment;\n var originalAppendChild = OriginalN ode.prototype.appendChild;\n var originalCompareDocumentPosition =\n Origi nalNode.prototype.compareDocumentPosition;\n var originalInsertBefore = Origina lNode.prototype.insertBefore;\n var originalRemoveChild = OriginalNode.prototyp e.removeChild;\n var originalReplaceChild = OriginalNode.prototype.replaceChild ;\n\n var isIe = /Trident/.test(navigator.userAgent);\n\n var removeChildOrigi nalHelper = isIe ?\n function(parent, child) {\n try {\n or iginalRemoveChild.call(parent, child);\n } catch (ex) {\n if (!( parent instanceof OriginalDocumentFragment))\n throw ex;\n }\n } :\n function(parent, child) {\n originalRemoveChild.call(par ent, child);\n };\n\n Node.prototype = Object.create(EventTarget.prototype );\n mixin(Node.prototype, {\n appendChild: function(childWrapper) {\n return this.insertBefore(childWrapper, null);\n },\n\n insertBefore: funct ion(childWrapper, refWrapper) {\n assertIsNodeWrapper(childWrapper);\n\n var refNode;\n if (refWrapper) {\n if (isWrapper(refWrapper)) {\n refNode = unwrap(refWrapper);\n } else {\n refNode = r efWrapper;\n refWrapper = wrap(refNode);\n }\n } else {\n refWrapper = null;\n refNode = null;\n }\n\n refWrapper & & assert(refWrapper.parentNode === this);\n\n var nodes;\n var previou sNode =\n refWrapper ? refWrapper.previousSibling : this.lastChild;\n\n var useNative = !this.invalidateShadowRenderer() &&\n !invalidateParent(childWrapper);\n\n if (useNative)\n nodes = colle ctNodesNative(childWrapper);\n else\n nodes = collectNodes(childWrap per, this, previousNode, refWrapper);\n\n if (useNative) {\n ensureS ameOwnerDocument(this, childWrapper);\n clearChildNodes(this);\n o riginalInsertBefore.call(this.impl, unwrap(childWrapper), refNode);\n } els e {\n if (!previousNode)\n this.firstChild_ = nodes[0];\n if (!refWrapper)\n this.lastChild_ = nodes[nodes.length - 1];\n\n var parentNode = refNode ? refNode.parentNode : this.impl;\n\n // inse rtBefore refWrapper no matter what the parent is?\n if (parentNode) {\n originalInsertBefore.call(parentNode,\n unwrapNodesForInser tion(this, nodes), refNode);\n } else {\n adoptNodesIfNeeded(thi s, nodes);\n }\n }\n\n enqueueMutation(this, 'childList', {\n addedNodes: nodes,\n nextSibling: refWrapper,\n previousSibl ing: previousNode\n });\n\n nodesWereAdded(nodes, this);\n\n retu rn childWrapper;\n },\n\n removeChild: function(childWrapper) {\n ass ertIsNodeWrapper(childWrapper);\n if (childWrapper.parentNode !== this) {\n // IE has invalid DOM trees at times.\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 = true;\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 childWrapperNextSibling = childWrapper.nextS ibling;\n var childWrapperPreviousSibling = 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 tha t that mutation event is dispatched before\n // the pointers have changed .\n var thisFirstChild = this.firstChild;\n var thisLastChild = th is.lastChild;\n\n var parentNode = childNode.parentNode;\n if (par entNode)\n removeChildOriginalHelper(parentNode, childNode);\n\n if (thisFirstChild === childWrapper)\n this.firstChild_ = childWrapper NextSibling;\n if (thisLastChild === childWrapper)\n this.lastCh ild_ = childWrapperPreviousSibling;\n if (childWrapperPreviousSibling)\n childWrapperPreviousSibling.nextSibling_ = childWrapperNextSibling;\n if (childWrapperNextSibling) {\n childWrapperNextSibling.previous Sibling_ =\n childWrapperPreviousSibling;\n }\n\n chi ldWrapper.previousSibling_ = childWrapper.nextSibling_ =\n childWrapp er.parentNode_ = undefined;\n } else {\n clearChildNodes(this);\n removeChildOriginalHelper(this.impl, childNode);\n }\n\n if (!sur pressMutations) {\n enqueueMutation(this, 'childList', {\n remov edNodes: createOneElementNodeList(childWrapper),\n nextSibling: childWr apperNextSibling,\n previousSibling: childWrapperPreviousSibling\n });\n }\n\n registerTransientObservers(this, childWrapper);\n\n return childWrapper;\n },\n\n replaceChild: function(newChildWrapper, ol dChildWrapper) {\n assertIsNodeWrapper(newChildWrapper);\n\n var oldCh ildNode;\n if (isWrapper(oldChildWrapper)) {\n oldChildNode = unwrap (oldChildWrapper);\n } else {\n oldChildNode = oldChildWrapper;\n oldChildWrapper = wrap(oldChildNode);\n }\n\n if (oldChildWrapper .parentNode !== this) {\n // TODO(arv): DOMException\n throw new E rror('NotFoundError');\n }\n\n var nextNode = oldChildWrapper.nextSibl ing;\n var previousNode = oldChildWrapper.previousSibling;\n var nodes ;\n\n var useNative = !this.invalidateShadowRenderer() &&\n !invalidateParent(newChildWrapper);\n\n if (useNative) {\n nod es = 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 === oldChildWrap per)\n this.lastChild_ = nodes[nodes.length - 1];\n\n oldChildWr apper.previousSibling_ = oldChildWrapper.nextSibling_ =\n oldChildWra pper.parentNode_ = undefined;\n\n // replaceChild no matter what the pare nt is?\n if (oldChildNode.parentNode) {\n originalReplaceChild.c all(\n oldChildNode.parentNode,\n unwrapNodesForInsert ion(this, nodes),\n oldChildNode);\n }\n } else {\n ensureSameOwnerDocument(this, newChildWrapper);\n clearChildNodes(thi s);\n originalReplaceChild.call(this.impl, unwrap(newChildWrapper),\n oldChildNode);\n }\n\n enqueueMutation(t his, 'childList', {\n addedNodes: nodes,\n removedNodes: createOne ElementNodeList(oldChildWrapper),\n nextSibling: nextNode,\n previ ousSibling: previousNode\n });\n\n nodeWasRemoved(oldChildWrapper);\n nodesWereAdded(nodes, this);\n\n return oldChildWrapper;\n },\n\n /**\n * Called after a node was inserted. Subclasses override this to inva lidate\n * the renderer as needed.\n * @private\n */\n nodeIsInse rted_: function() {\n for (var child = this.firstChild; child; child = chil d.nextSibling) {\n child.nodeIsInserted_();\n }\n },\n\n hasCh ildNodes: function() {\n return this.firstChild !== null;\n },\n\n /* * @type {Node} */\n get parentNode() {\n // If the parentNode has not be en overridden, use the original parentNode.\n return this.parentNode_ !== u ndefined ?\n this.parentNode_ : wrap(this.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_ : wrap(this.impl.lastChild);\n }, \n\n /** @type {Node} */\n get nextSibling() {\n return this.nextSibl ing_ !== undefined ?\n this.nextSibling_ : wrap(this.impl.nextSibling); \n },\n\n /** @type {Node} */\n get previousSibling() {\n return t his.previousSibling_ !== undefined ?\n this.previousSibling_ : wrap(thi s.impl.previousSibling);\n },\n\n get parentElement() {\n var p = thi s.parentNode;\n while (p && p.nodeType !== Node.ELEMENT_NODE) {\n p = p.parentNode;\n }\n return p;\n },\n\n get textContent() {\n // TODO(arv): This should fallback to this.impl.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.childNodes);\n\n if (this.i nvalidateShadowRenderer()) {\n removeAllChildNodes(this);\n if (te xtContent !== '') {\n var textNode = this.impl.ownerDocument.createText Node(textContent);\n this.appendChild(textNode);\n }\n } el se {\n clearChildNodes(this);\n this.impl.textContent = textConten t;\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, this);\n },\n\n get childNodes() {\n var wrapperList = new NodeList();\n var i = 0;\n for (var child = th is.firstChild; child; child = child.nextSibling) {\n wrapperList[i++] = c hild;\n }\n wrapperList.length = i;\n return wrapperList;\n }, \n\n cloneNode: function(deep) {\n return cloneNode(this, deep);\n }, \n\n contains: function(child) {\n return contains(this, wrapIfNeeded(ch ild));\n },\n\n compareDocumentPosition: function(otherNode) {\n // T his only wraps, it therefore only operates on the composed DOM and not\n // the logical DOM.\n return originalCompareDocumentPosition.call(this.impl,\ n unwrapIfNeeded(otherNode));\n },\n\n normalize: function() {\n var nodes = snapshotNodeList(this.c hildNodes);\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.nodeType === Node.TEXT_NODE) {\n if (!modNode && !n.data.length )\n this.removeNode(n);\n else if (!modNode)\n mo dNode = n;\n else {\n s += n.data;\n remNodes.pus h(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 (mod Node && remNodes.length) {\n modNode.data += s;\n cleanupNodes(rem Nodes);\n }\n }\n });\n\n defineWrapGetter(Node, 'ownerDocument');\n\n // We use a DocumentFragment as a base and then delete the properties of\n // DocumentFragment.prototype from the wrapper Node. Since delete makes\n // obje cts slow in some JS engines we recreate the prototype object.\n registerWrapper (OriginalNode, Node, document.createDocumentFragment());\n delete Node.prototyp e.querySelector;\n delete Node.prototype.querySelectorAll;\n Node.prototype = mixin(Object.create(EventTarget.prototype), Node.prototype);\n\n scope.cloneNod e = cloneNode;\n scope.nodeWasAdded = nodeWasAdded;\n scope.nodeWasRemoved = n odeWasRemoved;\n scope.nodesWereAdded = nodesWereAdded;\n scope.nodesWereRemov ed = nodesWereRemoved;\n scope.snapshotNodeList = snapshotNodeList;\n scope.wr appers.Node = Node;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The P olymer 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(scop e) {\n 'use strict';\n\n function findOne(node, selector) {\n var m, el = n ode.firstElementChild;\n while (el) {\n if (el.matches(selector))\n return el;\n m = findOne(el, selector);\n if (m)\n return m; \n el = el.nextElementSibling;\n }\n return null;\n }\n\n function findAll(node, selector, results) {\n var el = node.firstElementChild;\n wh ile (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 SelectorsInterf ace = {\n querySelector: function(selector) {\n return findOne(this, sel ector);\n },\n querySelectorAll: function(selector) {\n return findAl l(this, selector, new NodeList())\n }\n };\n\n var GetElementsByInterface = {\n getElementsByTagName: function(tagName) {\n // TODO(arv): Check tag Name?\n return this.querySelectorAll(tagName);\n },\n getElementsByCl assName: function(className) {\n // TODO(arv): Check className?\n retu rn this.querySelectorAll('.' + className);\n },\n getElementsByTagNameNS: function(ns, tagName) {\n if (ns === '*')\n return this.getElementsB yTagName(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.ShadowDOMPolyfil l);\n","// Copyright 2013 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 NodeList = scope. wrappers.NodeList;\n\n function forwardElement(node) {\n while (node && node .nodeType !== Node.ELEMENT_NODE) {\n node = node.nextSibling;\n }\n r eturn node;\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 lastEleme ntChild() {\n return backwardsElement(this.lastChild);\n },\n\n get c hildElementCount() {\n var count = 0;\n for (var child = this.firstEle mentChild;\n child;\n child = child.nextElementSibling) {\n count++;\n }\n return count;\n },\n\n get children() {\n var wrapperList = new NodeList();\n var i = 0;\n for (var child = this.firstElementChild;\n child;\n child = child.nextElemen tSibling) {\n wrapperList[i++] = child;\n }\n wrapperList.lengt h = i;\n return wrapperList;\n },\n\n remove: function() {\n var p = this.parentNode;\n if (p)\n p.removeChild(this);\n }\n };\n \n var ChildNodeInterface = {\n get nextElementSibling() {\n return for wardElement(this.nextSibling);\n },\n\n get previousElementSibling() {\n return backwardsElement(this.previousSibling);\n }\n };\n\n scope.Child NodeInterface = ChildNodeInterface;\n scope.ParentNodeInterface = ParentNodeInt erface;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Autho rs. 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 'us e strict';\n\n var ChildNodeInterface = scope.ChildNodeInterface;\n var Node = scope.wrappers.Node;\n var enqueueMutation = scope.enqueueMutation;\n var mix in = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n\n var Origi nalCharacterData = window.CharacterData;\n\n function CharacterData(node) {\n Node.call(this, node);\n }\n CharacterData.prototype = Object.create(Node.pr ototype);\n mixin(CharacterData.prototype, {\n get textContent() {\n re turn this.data;\n },\n set textContent(value) {\n this.data = value;\ n },\n get data() {\n return this.impl.data;\n },\n set data(va lue) {\n var oldValue = this.impl.data;\n enqueueMutation(this, 'chara cterData', {\n oldValue: oldValue\n });\n this.impl.data = valu e;\n }\n });\n\n mixin(CharacterData.prototype, ChildNodeInterface);\n\n r egisterWrapper(OriginalCharacterData, CharacterData,\n document .createTextNode(''));\n\n scope.wrappers.CharacterData = CharacterData;\n})(win dow.ShadowDOMPolyfill);\n","// Copyright 2014 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 CharacterData = scope.wrappers.CharacterData;\n var enqueueMutation = scope. enqueueMutation;\n var mixin = scope.mixin;\n var registerWrapper = scope.regi sterWrapper;\n\n function toUInt32(x) {\n return x >>> 0;\n }\n\n var Orig inalText = window.Text;\n\n function Text(node) {\n CharacterData.call(this, node);\n }\n Text.prototype = Object.create(CharacterData.prototype);\n mixi n(Text.prototype, {\n splitText: function(offset) {\n offset = toUInt32( offset);\n var s = this.data;\n if (offset > s.length)\n throw new Error('IndexSizeError');\n var head = s.slice(0, offset);\n var ta il = s.slice(offset);\n this.data = head;\n var newTextNode = this.own erDocument.createTextNode(tail);\n if (this.parentNode)\n this.paren tNode.insertBefore(newTextNode, this.nextSibling);\n return newTextNode;\n }\n });\n\n registerWrapper(OriginalText, Text, document.createTextNode('') );\n\n scope.wrappers.Text = Text;\n})(window.ShadowDOMPolyfill);\n","// Copyri ght 2013 The Polymer Authors. All rights reserved.\n// Use of this source code i s 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 ChildNodeInterface = scope.ChildNo deInterface;\n var GetElementsByInterface = scope.GetElementsByInterface;\n va r Node = scope.wrappers.Node;\n var ParentNodeInterface = scope.ParentNodeInter face;\n var SelectorsInterface = scope.SelectorsInterface;\n var addWrapNodeLi stMethod = scope.addWrapNodeListMethod;\n var enqueueMutation = scope.enqueueMu tation;\n var mixin = scope.mixin;\n var oneOf = scope.oneOf;\n var registerW rapper = scope.registerWrapper;\n var wrappers = scope.wrappers;\n\n var Origi nalElement = window.Element;\n\n var matchesNames = [\n 'matches', // needs to come first.\n 'mozMatchesSelector',\n 'msMatchesSelector',\n 'webki tMatchesSelector',\n ].filter(function(name) {\n return OriginalElement.prot otype[name];\n });\n\n var matchesName = matchesNames[0];\n\n var originalMat ches = OriginalElement.prototype[matchesName];\n\n function invalidateRendererB asedOnAttribute(element, name) {\n // Only invalidate if parent node is a sha dow host.\n var p = element.parentNode;\n if (!p || !p.shadowRoot)\n return;\n\n var renderer = scope.getRendererForHost(p);\n if (renderer.dep endsOnAttribute(name))\n renderer.invalidate();\n }\n\n function enqueAtt ributeChange(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 enque ueMutation(element, 'attributes', {\n name: name,\n namespace: null,\n oldValue: oldValue\n });\n }\n\n function Element(node) {\n Node.c all(this, node);\n }\n Element.prototype = Object.create(Node.prototype);\n m ixin(Element.prototype, {\n createShadowRoot: function() {\n var newShad owRoot = new wrappers.ShadowRoot(this);\n this.impl.polymerShadowRoot_ = ne wShadowRoot;\n\n var renderer = scope.getRendererForHost(this);\n rend erer.invalidate();\n\n return newShadowRoot;\n },\n\n get shadowRoot( ) {\n return this.impl.polymerShadowRoot_ || null;\n },\n\n setAttrib ute: function(name, value) {\n var oldValue = this.impl.getAttribute(name); \n this.impl.setAttribute(name, value);\n enqueAttributeChange(this, n ame, oldValue);\n invalidateRendererBasedOnAttribute(this, name);\n },\n \n removeAttribute: function(name) {\n var oldValue = this.impl.getAttri bute(name);\n this.impl.removeAttribute(name);\n enqueAttributeChange( this, name, oldValue);\n invalidateRendererBasedOnAttribute(this, name);\n },\n\n matches: function(selector) {\n return originalMatches.call(th is.impl, selector);\n }\n });\n\n matchesNames.forEach(function(name) {\n if (name !== 'matches') {\n Element.prototype[name] = function(selector) {\n return this.matches(selector);\n };\n }\n });\n\n if (Origi nalElement.prototype.webkitCreateShadowRoot) {\n Element.prototype.webkitCrea teShadowRoot =\n Element.prototype.createShadowRoot;\n }\n\n /**\n * Useful for generating the accessor pair for a property that reflects an\n * at tribute.\n */\n function setterDirtiesAttribute(prototype, propertyName, opt_ attrName) {\n var attrName = opt_attrName || propertyName;\n Object.define Property(prototype, propertyName, {\n get: function() {\n return thi s.impl[propertyName];\n },\n set: function(v) {\n this.impl[pro pertyName] = v;\n invalidateRendererBasedOnAttribute(this, attrName);\n },\n configurable: true,\n enumerable: true\n });\n }\n\n set terDirtiesAttribute(Element.prototype, 'id');\n setterDirtiesAttribute(Element. prototype, 'className', 'class');\n\n mixin(Element.prototype, ChildNodeInterfa ce);\n mixin(Element.prototype, GetElementsByInterface);\n mixin(Element.proto type, ParentNodeInterface);\n mixin(Element.prototype, SelectorsInterface);\n\n registerWrapper(OriginalElement, Element,\n document.createEl ementNS(null, 'x'));\n\n // TODO(arv): Export setterDirtiesAttribute and apply it to more bindings\n // that reflect attributes.\n scope.matchesNames = match esNames;\n scope.wrappers.Element = Element;\n})(window.ShadowDOMPolyfill);\n", "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this sou rce code is goverened by a BSD-style\n// license that can be found in the LICENS E file.\n\n(function(scope) {\n 'use strict';\n\n var Element = scope.wrappers .Element;\n var defineGetter = scope.defineGetter;\n var enqueueMutation = sco pe.enqueueMutation;\n var mixin = scope.mixin;\n var nodesWereAdded = scope.no desWereAdded;\n var nodesWereRemoved = scope.nodesWereRemoved;\n var registerW rapper = scope.registerWrapper;\n var snapshotNodeList = scope.snapshotNodeList ;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var wrappers = scop e.wrappers;\n\n /////////////////////////////////////////////////////////////// //////////////\n // innerHTML and outerHTML\n\n // http://www.whatwg.org/specs /web-apps/current-work/multipage/the-end.html#escapingString\n var escapeAttrRe gExp = /[&\\u00A0\"]/g;\n var escapeDataRegExp = /[&\\u00A0<>]/g;\n\n function escapeReplace(c) {\n switch (c) {\n case '&':\n return '&amp;';\ n case '<':\n return '&lt;';\n case '>':\n return '&gt;' ;\n case '\"':\n return '&quot;'\n case '\\u00A0':\n ret urn '&nbsp;';\n }\n }\n\n function escapeAttr(s) {\n return s.replace(es capeAttrRegExp, 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 voidElements = makeSet([\n 'area',\n ' base',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'hr',\n 'img ',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'so urce',\n 'track',\n 'wbr'\n ]);\n\n var plaintextParents = makeSet([\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'nofra mes',\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.toLowerCase();\n var s = '<' + tagName;\n var attrs = node.attributes;\n for (var i = 0, attr; attr = attrs[ i]; i++) {\n s += ' ' + attr.name + '=\"' + escapeAttr(attr.value) + '\ "';\n }\n s += '>';\n if (voidElements[tagName])\n return s;\n\n return s + getInnerHTML(node) + '</' + tagName + '>';\n\n case Node.TEXT_NODE:\n var data = node.data;\n if (parentNode && plaintextParents[parentNode.localName])\n return data;\n ret urn escapeData(data);\n\n case Node.COMMENT_NODE:\n return '<!--' + node.data + '-->';\n\n default:\n console.error(node);\n thro w new Error('not implemented');\n }\n }\n\n function getInnerHTML(node) {\n if (node instanceof wrappers.HTMLTemplateElement)\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 th e user agent string.\n var oldIe = /MSIE/.test(navigator.userAgent);\n\n var O riginalHTMLElement = window.HTMLElement;\n var OriginalHTMLTemplateElement = wi ndow.HTMLTemplateElement;\n\n function HTMLElement(node) {\n Element.call(th is, node);\n }\n HTMLElement.prototype = Object.create(Element.prototype);\n mixin(HTMLElement.prototype, {\n get innerHTML() {\n return getInnerHTML (this);\n },\n set innerHTML(value) {\n // IE9 does not handle set in nerHTML correctly on plaintextParents. It\n // creates element children. Fo r example\n //\n // scriptElement.innerHTML = '<a>test</a>'\n / /\n // Creates a single HTMLAnchorElement child.\n if (oldIe && plaint extParents[this.localName]) {\n this.textContent = value;\n return ;\n }\n\n var removedNodes = snapshotNodeList(this.childNodes);\n\n if (this.invalidateShadowRenderer()) {\n if (this instanceof wrappers. HTMLTemplateElement)\n setInnerHTML(this.content, value);\n else \n setInnerHTML(this, value, this.tagName);\n\n // If we have a no n native template element we need to handle this\n // manually since settin g impl.innerHTML would add the html as direct\n // children and not be move d over to the content fragment.\n } else if (!OriginalHTMLTemplateElement & &\n this instanceof wrappers.HTMLTemplateElement) {\n set InnerHTML(this.content, value);\n } else {\n this.impl.innerHTML = v alue;\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, this);\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.invalidateShadowR enderer();\n var df = frag(p, value);\n p.replaceChild(df, this);\ n }\n },\n\n insertAdjacentHTML: function(position, text) {\n va r contextElement, refNode;\n switch (String(position).toLowerCase()) {\n case 'beforebegin':\n contextElement = this.parentNode;\n refNode = this;\n break;\n case 'afterend':\n contextE lement = this.parentNode;\n refNode = this.nextSibling;\n brea k;\n case 'afterbegin':\n contextElement = this;\n refN ode = this.firstChild;\n break;\n case 'beforeend':\n c ontextElement = this;\n refNode = null;\n break;\n defa ult:\n return;\n }\n\n var df = frag(contextElement, text);\n contextElement.insertBefore(df, refNode);\n }\n });\n\n function frag (contextElement, html) {\n // TODO(arv): This does not work with SVG and othe r non HTML elements.\n var p = unwrap(contextElement.cloneNode(false));\n p.innerHTML = html;\n var df = unwrap(document.createDocumentFragment());\n var c;\n while (c = p.firstChild) {\n df.appendChild(c);\n }\n r eturn wrap(df);\n }\n\n function getter(name) {\n return function() {\n scope.renderAllPending();\n return this.impl[name];\n };\n }\n\n fun ction getterRequiresRendering(name) {\n defineGetter(HTMLElement, name, gette r(name));\n }\n\n [\n 'clientHeight',\n 'clientLeft',\n 'clientTop',\ n 'clientWidth',\n 'offsetHeight',\n 'offsetLeft',\n 'offsetTop',\n 'offsetWidth',\n 'scrollHeight',\n 'scrollWidth',\n ].forEach(getterRe quiresRendering);\n\n function getterAndSetterRequiresRendering(name) {\n Ob ject.defineProperty(HTMLElement.prototype, name, {\n get: getter(name),\n set: function(v) {\n scope.renderAllPending();\n this.impl[nam e] = v;\n },\n configurable: true,\n enumerable: true\n });\n }\n\n [\n 'scrollLeft',\n 'scrollTop',\n ].forEach(getterAndSetterRequi resRendering);\n\n function methodRequiresRendering(name) {\n Object.defineP roperty(HTMLElement.prototype, name, {\n value: function() {\n scope .renderAllPending();\n return this.impl[name].apply(this.impl, arguments) ;\n },\n configurable: true,\n enumerable: true\n });\n }\n\n [\n 'getBoundingClientRect',\n 'getClientRects',\n 'scrollIntoView'\n ].forEach(methodRequiresRendering);\n\n // HTMLElement is abstract so we use a subclass that has no members.\n registerWrapper(OriginalHTMLElement, HTMLElem ent,\n document.createElement('b'));\n\n scope.wrappers.HTMLEl ement = HTMLElement;\n\n // TODO: Find a better way to share these two with Wra pperShadowRoot.\n scope.getInnerHTML = getInnerHTML;\n scope.setInnerHTML = se tInnerHTML\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 HTMLElement = scope.wrappers.HTMLElement;\n var mixin = sc ope.mixin;\n var registerWrapper = scope.registerWrapper;\n var wrap = scope.w rap;\n\n var OriginalHTMLCanvasElement = window.HTMLCanvasElement;\n\n functio n HTMLCanvasElement(node) {\n HTMLElement.call(this, node);\n }\n HTMLCanva sElement.prototype = Object.create(HTMLElement.prototype);\n\n mixin(HTMLCanvas Element.prototype, {\n getContext: function() {\n var context = this.imp l.getContext.apply(this.impl, arguments);\n return context && wrap(context) ;\n }\n });\n\n registerWrapper(OriginalHTMLCanvasElement, HTMLCanvasElemen t,\n document.createElement('canvas'));\n\n scope.wrappers.HTM LCanvasElement = HTMLCanvasElement;\n})(window.ShadowDOMPolyfill);\n","// Copyri ght 2013 The Polymer Authors. All rights reserved.\n// Use of this source code i s 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.HTMLE lement;\n var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapp er;\n\n var OriginalHTMLContentElement = window.HTMLContentElement;\n\n functi on HTMLContentElement(node) {\n HTMLElement.call(this, node);\n }\n HTMLCon tentElement.prototype = Object.create(HTMLElement.prototype);\n mixin(HTMLConte ntElement.prototype, {\n get select() {\n return this.getAttribute('sele ct');\n },\n set select(value) {\n this.setAttribute('select', value) ;\n },\n\n setAttribute: function(n, v) {\n HTMLElement.prototype.set Attribute.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: attribute boolean resetStyleInheritan ce;\n });\n\n if (OriginalHTMLContentElement)\n registerWrapper(OriginalHTM LContentElement, HTMLContentElement);\n\n scope.wrappers.HTMLContentElement = H TMLContentElement;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 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(function(scope) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement;\n var re gisterWrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var rewr ap = scope.rewrap;\n\n var OriginalHTMLImageElement = window.HTMLImageElement;\ n\n function HTMLImageElement(node) {\n HTMLElement.call(this, node);\n }\n HTMLImageElement.prototype = Object.create(HTMLElement.prototype);\n\n regist erWrapper(OriginalHTMLImageElement, HTMLImageElement,\n documen t.createElement('img'));\n\n function Image(width, height) {\n if (!(this in stanceof Image)) {\n throw new TypeError(\n 'DOM object constructo r cannot be called as a function.');\n }\n\n var node = unwrap(document.cr eateElement('img'));\n HTMLElement.call(this, node);\n rewrap(node, this); \n\n if (width !== undefined)\n node.width = width;\n if (height !== undefined)\n node.height = height;\n }\n\n Image.prototype = HTMLImageEle ment.prototype;\n\n scope.wrappers.HTMLImageElement = HTMLImageElement;\n scop e.wrappers.Image = Image;\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\n v ar OriginalHTMLShadowElement = window.HTMLShadowElement;\n\n function HTMLShado wElement(node) {\n HTMLElement.call(this, node);\n }\n HTMLShadowElement.pr ototype = Object.create(HTMLElement.prototype);\n mixin(HTMLShadowElement.proto type, {\n // TODO: attribute boolean resetStyleInheritance;\n });\n\n if (O riginalHTMLShadowElement)\n registerWrapper(OriginalHTMLShadowElement, HTMLSh adowElement);\n\n scope.wrappers.HTMLShadowElement = HTMLShadowElement;\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 HTMLElement = scope.wrappers.HTMLElement;\n var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var wr ap = scope.wrap;\n\n var contentTable = new WeakMap();\n var templateContentsO wnerTable = new WeakMap();\n\n // http://dvcs.w3.org/hg/webcomponents/raw-file/ tip/spec/templates/index.html#dfn-template-contents-owner\n function getTemplat eContentsOwner(doc) {\n if (!doc.defaultView)\n return doc;\n var d = templateContentsOwnerTable.get(doc);\n if (!d) {\n // TODO(arv): This s hould either be a Document or HTMLDocument depending\n // on doc.\n d = doc.implementation.createHTMLDocument('');\n while (d.lastChild) {\n d.removeChild(d.lastChild);\n }\n templateContentsOwnerTable.set(do c, d);\n }\n return d;\n }\n\n function extractContent(templateElement) {\n // templateElement is not a wrapper here.\n var doc = getTemplateConte ntsOwner(templateElement.ownerDocument);\n var df = unwrap(doc.createDocument Fragment());\n var child;\n while (child = templateElement.firstChild) {\n df.appendChild(child);\n }\n return df;\n }\n\n var OriginalHTMLTe mplateElement = window.HTMLTemplateElement;\n\n function HTMLTemplateElement(no de) {\n HTMLElement.call(this, node);\n if (!OriginalHTMLTemplateElement) {\n var content = extractContent(node);\n contentTable.set(this, wrap( content));\n }\n }\n HTMLTemplateElement.prototype = Object.create(HTMLElem ent.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 n eeds to clone content.\n\n });\n\n if (OriginalHTMLTemplateElement)\n regis terWrapper(OriginalHTMLTemplateElement, HTMLTemplateElement);\n\n scope.wrapper s.HTMLTemplateElement = HTMLTemplateElement;\n})(window.ShadowDOMPolyfill);\n"," // Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this sour ce 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.wrapp ers.HTMLElement;\n var registerWrapper = scope.registerWrapper;\n\n var Origin alHTMLMediaElement = window.HTMLMediaElement;\n\n function HTMLMediaElement(nod e) {\n HTMLElement.call(this, node);\n }\n HTMLMediaElement.prototype = Obj ect.create(HTMLElement.prototype);\n\n registerWrapper(OriginalHTMLMediaElement , HTMLMediaElement,\n document.createElement('audio'));\n\n sc ope.wrappers.HTMLMediaElement = HTMLMediaElement;\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 LI CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLMediaElement = s cope.wrappers.HTMLMediaElement;\n var registerWrapper = scope.registerWrapper;\ n var unwrap = scope.unwrap;\n var rewrap = scope.rewrap;\n\n var OriginalHTM LAudioElement = window.HTMLAudioElement;\n\n function HTMLAudioElement(node) {\ n HTMLMediaElement.call(this, node);\n }\n HTMLAudioElement.prototype = Obj ect.create(HTMLMediaElement.prototype);\n\n registerWrapper(OriginalHTMLAudioEl ement, HTMLAudioElement,\n document.createElement('audio'));\n\ n function Audio(src) {\n if (!(this instanceof Audio)) {\n throw new T ypeError(\n 'DOM object constructor cannot be called as a function.');\ n }\n\n var node = unwrap(document.createElement('audio'));\n HTMLMedia Element.call(this, node);\n rewrap(node, this);\n\n node.setAttribute('pre load', 'auto');\n if (src !== undefined)\n node.setAttribute('src', src) ;\n }\n\n Audio.prototype = HTMLAudioElement.prototype;\n\n scope.wrappers.HT MLAudioElement = HTMLAudioElement;\n scope.wrappers.Audio = Audio;\n})(window.S hadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserve d.\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 HT MLElement = scope.wrappers.HTMLElement;\n var mixin = scope.mixin;\n var regis terWrapper = scope.registerWrapper;\n var rewrap = scope.rewrap;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n var OriginalHTMLOptionElement = w indow.HTMLOptionElement;\n\n function trimText(s) {\n return s.replace(/\\s+ /g, ' ').trim();\n }\n\n function HTMLOptionElement(node) {\n HTMLElement.c all(this, node);\n }\n HTMLOptionElement.prototype = Object.create(HTMLElement .prototype);\n mixin(HTMLOptionElement.prototype, {\n get text() {\n re turn trimText(this.textContent);\n },\n set text(value) {\n this.text Content = trimText(String(value));\n },\n get form() {\n return wrap( unwrap(this).form);\n }\n });\n\n registerWrapper(OriginalHTMLOptionElement , HTMLOptionElement,\n document.createElement('option'));\n\n function Option(text, value, defaultSelected, selected) {\n if (!(this instan ceof Option)) {\n throw new TypeError(\n 'DOM object constructor c annot be called as a function.');\n }\n\n var node = unwrap(document.creat eElement('option'));\n HTMLElement.call(this, node);\n rewrap(node, this); \n\n if (text !== undefined)\n node.text = text;\n if (value !== unde fined)\n node.setAttribute('value', value);\n if (defaultSelected === tr ue)\n node.setAttribute('selected', '');\n node.selected = selected === true;\n }\n\n Option.prototype = HTMLOptionElement.prototype;\n\n scope.wrapp ers.HTMLOptionElement = HTMLOptionElement;\n scope.wrappers.Option = Option;\n} )(window.ShadowDOMPolyfill);\n","// Copyright 2014 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 mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n v ar wrap = scope.wrap;\n\n var OriginalHTMLSelectElement = window.HTMLSelectElem ent;\n\n function HTMLSelectElement(node) {\n HTMLElement.call(this, node);\ n }\n HTMLSelectElement.prototype = Object.create(HTMLElement.prototype);\n m ixin(HTMLSelectElement.prototype, {\n add: function(element, before) {\n if (typeof before === 'object') // also includes null\n before = unwrap (before);\n unwrap(this).add(unwrap(element), before);\n },\n\n remov e: function(indexOrNode) {\n // Spec only allows index but implementations allow index or node.\n // remove() is also allowed which is same as remove( undefined)\n if (indexOrNode === undefined) {\n HTMLElement.prototyp e.remove.call(this);\n return;\n }\n\n if (typeof indexOrNode = == 'object')\n indexOrNode = unwrap(indexOrNode);\n\n unwrap(this).r emove(indexOrNode);\n },\n\n get form() {\n return wrap(unwrap(this). form);\n }\n });\n\n registerWrapper(OriginalHTMLSelectElement, HTMLSelectE lement,\n document.createElement('select'));\n\n scope.wrapper s.HTMLSelectElement = HTMLSelectElement;\n})(window.ShadowDOMPolyfill);\n","/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of this sour ce 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 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 var wrapHTMLCollection = scope.wrapHTMLCollection;\n\n var OriginalHTMLTableElemen t = window.HTMLTableElement;\n\n function HTMLTableElement(node) {\n HTMLEle ment.call(this, node);\n }\n HTMLTableElement.prototype = Object.create(HTMLEl ement.prototype);\n mixin(HTMLTableElement.prototype, {\n get caption() {\n return wrap(unwrap(this).caption);\n },\n createCaption: function() { \n return wrap(unwrap(this).createCaption());\n },\n\n get tHead() {\ n return wrap(unwrap(this).tHead);\n },\n createTHead: function() {\n return wrap(unwrap(this).createTHead());\n },\n\n createTFoot: funct ion() {\n return wrap(unwrap(this).createTFoot());\n },\n get tFoot() {\n return wrap(unwrap(this).tFoot);\n },\n\n get tBodies() {\n return wrapHTMLCollection(unwrap(this).tBodies);\n },\n createTBody: func tion() {\n return wrap(unwrap(this).createTBody());\n },\n\n get rows () {\n return wrapHTMLCollection(unwrap(this).rows);\n },\n insertRow : function(index) {\n return wrap(unwrap(this).insertRow(index));\n }\n });\n\n registerWrapper(OriginalHTMLTableElement, HTMLTableElement,\n document.createElement('table'));\n\n scope.wrappers.HTMLTableElement = HTMLTableElement;\n})(window.ShadowDOMPolyfill);\n","/*\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\n(funct ion(scope) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement; \n var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var wrapHTMLCollection = scope.wrapHTMLCollection;\n var unwrap = scope.unwrap; \n var wrap = scope.wrap;\n\n var OriginalHTMLTableSectionElement = window.HTM LTableSectionElement;\n\n function HTMLTableSectionElement(node) {\n HTMLEle ment.call(this, node);\n }\n HTMLTableSectionElement.prototype = Object.create (HTMLElement.prototype);\n mixin(HTMLTableSectionElement.prototype, {\n get rows() {\n return wrapHTMLCollection(unwrap(this).rows);\n },\n inser tRow: function(index) {\n return wrap(unwrap(this).insertRow(index));\n }\n });\n\n registerWrapper(OriginalHTMLTableSectionElement, HTMLTableSectionE lement,\n document.createElement('thead'));\n\n scope.wrappers .HTMLTableSectionElement = HTMLTableSectionElement;\n})(window.ShadowDOMPolyfill );\n","/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use o f 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 HTMLEleme nt = scope.wrappers.HTMLElement;\n var mixin = scope.mixin;\n var registerWrap per = scope.registerWrapper;\n var wrapHTMLCollection = scope.wrapHTMLCollectio n;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n var OriginalHTML TableRowElement = window.HTMLTableRowElement;\n\n function HTMLTableRowElement( node) {\n HTMLElement.call(this, node);\n }\n HTMLTableRowElement.prototype = Object.create(HTMLElement.prototype);\n mixin(HTMLTableRowElement.prototype, {\n get cells() {\n return wrapHTMLCollection(unwrap(this).cells);\n },\n\n insertCell: function(index) {\n return wrap(unwrap(this).insertC ell(index));\n }\n });\n\n registerWrapper(OriginalHTMLTableRowElement, HTM LTableRowElement,\n document.createElement('tr'));\n\n scope.w rappers.HTMLTableRowElement = HTMLTableRowElement;\n})(window.ShadowDOMPolyfill) ;\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of thi s source code is goverened by a BSD-style\n// license that can be found in the L ICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLContentElement = scope.wrappers.HTMLContentElement;\n var HTMLElement = scope.wrappers.HTMLEle ment;\n var HTMLShadowElement = scope.wrappers.HTMLShadowElement;\n var HTMLTe mplateElement = scope.wrappers.HTMLTemplateElement;\n var mixin = scope.mixin;\ n var registerWrapper = scope.registerWrapper;\n\n var OriginalHTMLUnknownElem ent = window.HTMLUnknownElement;\n\n function HTMLUnknownElement(node) {\n s witch (node.localName) {\n case 'content':\n return new HTMLContentE lement(node);\n case 'shadow':\n return new HTMLShadowElement(node); \n case 'template':\n return new HTMLTemplateElement(node);\n }\n HTMLElement.call(this, node);\n }\n HTMLUnknownElement.prototype = Object. create(HTMLElement.prototype);\n registerWrapper(OriginalHTMLUnknownElement, HT MLUnknownElement);\n scope.wrappers.HTMLUnknownElement = HTMLUnknownElement;\n} )(window.ShadowDOMPolyfill);\n","// Copyright 2014 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 registerObject = scope.registerObject;\n\n var SVG_NS = 'http://www.w3. org/2000/svg';\n var svgTitleElement = document.createElementNS(SVG_NS, 'title' );\n var SVGTitleElement = registerObject(svgTitleElement);\n var SVGElement = Object.getPrototypeOf(SVGTitleElement.prototype).constructor;\n\n scope.wrappe rs.SVGElement = SVGElement;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2014 The Polymer Authors. All rights reserved.\n// Use of this source code is govere ned by a BSD-style\n// license that can be found in the LICENSE file.\n\n(functi on(scope) {\n 'use strict';\n\n var mixin = scope.mixin;\n var registerWrappe r = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var wrap = scope.wra p;\n\n var OriginalSVGUseElement = window.SVGUseElement;\n\n // IE uses SVGEle ment as parent interface, SVG2 (Blink & Gecko) uses\n // SVGGraphicsElement. Us e the <g> element to get the right prototype.\n\n var SVG_NS = 'http://www.w3.o rg/2000/svg';\n var gWrapper = wrap(document.createElementNS(SVG_NS, 'g'));\n var useElement = document.createElementNS(SVG_NS, 'use');\n var SVGGElement = g Wrapper.constructor;\n var parentInterfacePrototype = Object.getPrototypeOf(SVG GElement.prototype);\n var parentInterface = parentInterfacePrototype.construct or;\n\n function SVGUseElement(impl) {\n parentInterface.call(this, impl);\n }\n\n SVGUseElement.prototype = Object.create(parentInterfacePrototype);\n\n // Firefox does not expose instanceRoot.\n if ('instanceRoot' in useElement) { \n mixin(SVGUseElement.prototype, {\n get instanceRoot() {\n retu rn wrap(unwrap(this).instanceRoot);\n },\n get animatedInstanceRoot() {\n return wrap(unwrap(this).animatedInstanceRoot);\n },\n });\n }\n\n registerWrapper(OriginalSVGUseElement, SVGUseElement, useElement);\n\n scope.wrappers.SVGUseElement = SVGUseElement;\n})(window.ShadowDOMPolyfill);\n", "// Copyright 2014 The Polymer Authors. All rights reserved.\n// Use of this sou rce code is goverened by a BSD-style\n// license that can be found in the LICENS E file.\n\n(function(scope) {\n 'use strict';\n\n var EventTarget = scope.wrap pers.EventTarget;\n var mixin = scope.mixin;\n var registerWrapper = scope.reg isterWrapper;\n var wrap = scope.wrap;\n\n var OriginalSVGElementInstance = wi ndow.SVGElementInstance;\n if (!OriginalSVGElementInstance)\n return;\n\n f unction SVGElementInstance(impl) {\n EventTarget.call(this, impl);\n }\n\n SVGElementInstance.prototype = Object.create(EventTarget.prototype);\n mixin(SV GElementInstance.prototype, {\n /** @type {SVGElement} */\n get correspond ingElement() {\n return wrap(this.impl.correspondingElement);\n },\n\n /** @type {SVGUseElement} */\n get correspondingUseElement() {\n retur n wrap(this.impl.correspondingUseElement);\n },\n\n /** @type {SVGElementI nstance} */\n get parentNode() {\n return wrap(this.impl.parentNode);\n },\n\n /** @type {SVGElementInstanceList} */\n get childNodes() {\n throw new Error('Not implemented');\n },\n\n /** @type {SVGElementInstan ce} */\n get firstChild() {\n return wrap(this.impl.firstChild);\n }, \n\n /** @type {SVGElementInstance} */\n get lastChild() {\n return w rap(this.impl.lastChild);\n },\n\n /** @type {SVGElementInstance} */\n get previousSibling() {\n return wrap(this.impl.previousSibling);\n },\n \n /** @type {SVGElementInstance} */\n get nextSibling() {\n return w rap(this.impl.nextSibling);\n }\n });\n\n registerWrapper(OriginalSVGElemen tInstance, SVGElementInstance);\n\n scope.wrappers.SVGElementInstance = SVGElem entInstance;\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 unwrap = scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIf Needed;\n var wrap = scope.wrap;\n\n var OriginalCanvasRenderingContext2D = wi ndow.CanvasRenderingContext2D;\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: f unction() {\n arguments[0] = unwrapIfNeeded(arguments[0]);\n this.impl .drawImage.apply(this.impl, arguments);\n },\n\n createPattern: function() {\n arguments[0] = unwrap(arguments[0]);\n return this.impl.createPat tern.apply(this.impl, arguments);\n }\n });\n\n registerWrapper(OriginalCan vasRenderingContext2D, CanvasRenderingContext2D,\n document.cre ateElement('canvas').getContext('2d'));\n\n scope.wrappers.CanvasRenderingConte xt2D = CanvasRenderingContext2D;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this source code is g overened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(f unction(scope) {\n 'use strict';\n\n var mixin = scope.mixin;\n var registerW rapper = scope.registerWrapper;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = scope.wrap;\n\n var OriginalWebGLRenderingContext = window.WebGLRen deringContext;\n\n // IE10 does not have WebGL.\n if (!OriginalWebGLRenderingC ontext)\n return;\n\n function WebGLRenderingContext(impl) {\n this.impl = impl;\n }\n\n mixin(WebGLRenderingContext.prototype, {\n get canvas() {\n return wrap(this.impl.canvas);\n },\n\n texImage2D: function() {\n arguments[5] = unwrapIfNeeded(arguments[5]);\n this.impl.texImage2D.app ly(this.impl, arguments);\n },\n\n texSubImage2D: function() {\n argu ments[6] = unwrapIfNeeded(arguments[6]);\n this.impl.texSubImage2D.apply(th is.impl, arguments);\n }\n });\n\n // Blink/WebKit has broken DOM bindings. Usually we would create an instance\n // of the object and pass it into regist erWrapper as a \"blueprint\" but\n // creating WebGL contexts is expensive and might fail so we use a dummy\n // object with dummy instance properties for the se broken browsers.\n var instanceProperties = /WebKit/.test(navigator.userAgen t) ?\n {drawingBufferHeight: null, drawingBufferWidth: null} : {};\n\n reg isterWrapper(OriginalWebGLRenderingContext, WebGLRenderingContext,\n instan ceProperties);\n\n scope.wrappers.WebGLRenderingContext = WebGLRenderingContext ;\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// lic ense that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict ';\n\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unwra p;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = scope.wrap;\n\n var OriginalRange = window.Range;\n\n function Range(impl) {\n this.impl = i mpl;\n }\n Range.prototype = {\n get startContainer() {\n return wrap( this.impl.startContainer);\n },\n get endContainer() {\n return wrap( this.impl.endContainer);\n },\n get commonAncestorContainer() {\n ret urn wrap(this.impl.commonAncestorContainer);\n },\n setStart: function(ref Node,offset) {\n this.impl.setStart(unwrapIfNeeded(refNode), offset);\n },\n setEnd: function(refNode,offset) {\n this.impl.setEnd(unwrapIfNeede d(refNode), offset);\n },\n setStartBefore: function(refNode) {\n thi s.impl.setStartBefore(unwrapIfNeeded(refNode));\n },\n setStartAfter: func tion(refNode) {\n this.impl.setStartAfter(unwrapIfNeeded(refNode));\n }, \n setEndBefore: function(refNode) {\n this.impl.setEndBefore(unwrapIfNe eded(refNode));\n },\n setEndAfter: function(refNode) {\n this.impl.s etEndAfter(unwrapIfNeeded(refNode));\n },\n selectNode: function(refNode) {\n this.impl.selectNode(unwrapIfNeeded(refNode));\n },\n selectNodeC ontents: function(refNode) {\n this.impl.selectNodeContents(unwrapIfNeeded( refNode));\n },\n compareBoundaryPoints: function(how, sourceRange) {\n return this.impl.compareBoundaryPoints(how, unwrap(sourceRange));\n },\n extractContents: function() {\n return wrap(this.impl.extractContents()); \n },\n cloneContents: function() {\n return wrap(this.impl.cloneCont ents());\n },\n insertNode: function(node) {\n this.impl.insertNode(u nwrapIfNeeded(node));\n },\n surroundContents: function(newParent) {\n this.impl.surroundContents(unwrapIfNeeded(newParent));\n },\n cloneRange : function() {\n return wrap(this.impl.cloneRange());\n },\n isPointI nRange: function(node, offset) {\n return this.impl.isPointInRange(unwrapIf Needed(node), offset);\n },\n comparePoint: function(node, offset) {\n return this.impl.comparePoint(unwrapIfNeeded(node), offset);\n },\n inte rsectsNode: function(node) {\n return this.impl.intersectsNode(unwrapIfNeed ed(node));\n },\n toString: function() {\n return this.impl.toString( );\n }\n };\n\n // IE9 does not have createContextualFragment.\n if (Origi nalRange.prototype.createContextualFragment) {\n Range.prototype.createContex tualFragment = function(html) {\n return wrap(this.impl.createContextualFra gment(html));\n };\n }\n\n registerWrapper(window.Range, Range, document.cr eateRange());\n\n scope.wrappers.Range = Range;\n\n})(window.ShadowDOMPolyfill) ;\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of thi s source code is goverened by a BSD-style\n// license that can be found in the L ICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var GetElementsByInterf ace = scope.GetElementsByInterface;\n var ParentNodeInterface = scope.ParentNod eInterface;\n var SelectorsInterface = scope.SelectorsInterface;\n var mixin = scope.mixin;\n var registerObject = scope.registerObject;\n\n var DocumentFra gment = registerObject(document.createDocumentFragment());\n mixin(DocumentFrag ment.prototype, ParentNodeInterface);\n mixin(DocumentFragment.prototype, Selec torsInterface);\n mixin(DocumentFragment.prototype, GetElementsByInterface);\n\ n var Comment = registerObject(document.createComment(''));\n\n scope.wrappers .Comment = Comment;\n scope.wrappers.DocumentFragment = DocumentFragment;\n\n}) (window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All right s 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 DocumentFragment = scope.wrappers.DocumentFragment;\n var TreeScope = sc ope.TreeScope;\n var elementFromPoint = scope.elementFromPoint;\n var getInner HTML = scope.getInnerHTML;\n var getTreeScope = scope.getTreeScope;\n var mixi n = scope.mixin;\n var rewrap = scope.rewrap;\n var setInnerHTML = scope.setIn nerHTML;\n var unwrap = scope.unwrap;\n\n var shadowHostTable = new WeakMap(); \n var nextOlderShadowTreeTable = new WeakMap();\n\n var spaceCharRe = /[ \\t\ \n\\r\\f]/;\n\n function ShadowRoot(hostWrapper) {\n var node = unwrap(hostW rapper.impl.ownerDocument.createDocumentFragment());\n DocumentFragment.call( this, node);\n\n // createDocumentFragment associates the node with a wrapper \n // DocumentFragment instance. Override that.\n rewrap(node, this);\n\n this.treeScope_ = new TreeScope(this, getTreeScope(hostWrapper));\n\n var oldShadowRoot = hostWrapper.shadowRoot;\n nextOlderShadowTreeTable.set(this, oldShadowRoot);\n\n shadowHostTable.set(this, hostWrapper);\n }\n ShadowRoo t.prototype = Object.create(DocumentFragment.prototype);\n mixin(ShadowRoot.pro totype, {\n get innerHTML() {\n return getInnerHTML(this);\n },\n set innerHTML(value) {\n setInnerHTML(this, value);\n this.invalidateS hadowRenderer();\n },\n\n get olderShadowRoot() {\n return nextOlderS hadowTreeTable.get(this) || null;\n },\n\n get host() {\n return shad owHostTable.get(this) || null;\n },\n\n invalidateShadowRenderer: function () {\n return shadowHostTable.get(this).invalidateShadowRenderer();\n }, \n\n elementFromPoint: function(x, y) {\n return elementFromPoint(this, this.ownerDocument, x, y);\n },\n\n getElementById: function(id) {\n if (spaceCharRe.test(id))\n return null;\n return this.querySelector ('[id=\"' + id + '\"]');\n }\n });\n\n scope.wrappers.ShadowRoot = ShadowRo ot;\n\n})(window.ShadowDOMPolyfill);\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(scope) {\n 'use str ict';\n\n var Element = scope.wrappers.Element;\n var HTMLContentElement = sco pe.wrappers.HTMLContentElement;\n var HTMLShadowElement = scope.wrappers.HTMLSh adowElement;\n var Node = scope.wrappers.Node;\n var ShadowRoot = scope.wrappe rs.ShadowRoot;\n var assert = scope.assert;\n var getTreeScope = scope.getTree Scope;\n var mixin = scope.mixin;\n var oneOf = scope.oneOf;\n var unwrap = s cope.unwrap;\n var wrap = scope.wrap;\n\n /**\n * Updates the fields of a wr apper to a snapshot of the logical DOM as needed.\n * Up means parentNode\n * Sideways means previous and next sibling.\n * @param {!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 field s of a wrapper to a snapshot of the logical DOM as needed.\n * Down means firs t and last child\n * @param {!Node} wrapper\n */\n function updateWrapperDo wn(wrapper) {\n wrapper.firstChild_ = wrapper.firstChild;\n wrapper.lastCh ild_ = wrapper.lastChild;\n }\n\n function updateAllChildNodes(parentNodeWrapp er) {\n assert(parentNodeWrapper instanceof Node);\n for (var childWrapper = parentNodeWrapper.firstChild;\n childWrapper;\n childWrapper = childWrapper.nextSibling) {\n updateWrapperUpAndSideways(childWrapper);\n }\n updateWrapperDown(parentNodeWrapper);\n }\n\n function insertBefore (parentNodeWrapper, newChildWrapper, refChildWrapper) {\n var parentNode = un wrap(parentNodeWrapper);\n var newChild = unwrap(newChildWrapper);\n var r efChild = refChildWrapper ? unwrap(refChildWrapper) : null;\n\n remove(newChi ldWrapper);\n updateWrapperUpAndSideways(newChildWrapper);\n\n if (!refChi ldWrapper) {\n parentNodeWrapper.lastChild_ = parentNodeWrapper.lastChild;\ n if (parentNodeWrapper.lastChild === parentNodeWrapper.firstChild)\n parentNodeWrapper.firstChild_ = parentNodeWrapper.firstChild;\n\n var las tChildWrapper = wrap(parentNode.lastChild);\n if (lastChildWrapper)\n lastChildWrapper.nextSibling_ = lastChildWrapper.nextSibling;\n } else {\n if (parentNodeWrapper.firstChild === refChildWrapper)\n parentNodeWr apper.firstChild_ = refChildWrapper;\n\n refChildWrapper.previousSibling_ = refChildWrapper.previousSibling;\n }\n\n parentNode.insertBefore(newChild , refChild);\n }\n\n function remove(nodeWrapper) {\n var node = unwrap(nod eWrapper)\n var parentNode = node.parentNode;\n if (!parentNode)\n re turn;\n\n var parentNodeWrapper = wrap(parentNode);\n updateWrapperUpAndSi deways(nodeWrapper);\n\n if (nodeWrapper.previousSibling)\n nodeWrapper. previousSibling.nextSibling_ = nodeWrapper;\n if (nodeWrapper.nextSibling)\n nodeWrapper.nextSibling.previousSibling_ = nodeWrapper;\n\n if (parentNo deWrapper.lastChild === nodeWrapper)\n parentNodeWrapper.lastChild_ = nodeW rapper;\n if (parentNodeWrapper.firstChild === nodeWrapper)\n parentNode Wrapper.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 rendererForHostT able = new WeakMap();\n\n function distributeChildToInsertionPoint(child, inser tionPoint) {\n getDistributedChildNodes(insertionPoint).push(child);\n ass ignToInsertionPoint(child, insertionPoint);\n\n var eventParents = eventParen tsTable.get(child);\n if (!eventParents)\n eventParentsTable.set(child, eventParents = []);\n eventParents.push(insertionPoint);\n }\n\n function r esetDistributedChildNodes(insertionPoint) {\n distributedChildNodesTable.set( insertionPoint, []);\n }\n\n function getDistributedChildNodes(insertionPoint) {\n var rv = distributedChildNodesTable.get(insertionPoint);\n if (!rv)\n distributedChildNodesTable.set(insertionPoint, rv = []);\n return rv;\n }\n\n function getChildNodesSnapshot(node) {\n var result = [], i = 0;\n for (var child = node.firstChild; child; child = child.nextSibling) {\n r esult[i++] = child;\n }\n return result;\n }\n\n /**\n * Visits all no des in the tree that fulfils the |predicate|. If the |visitor|\n * function re turns |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 operates on lo gical DOM.\n for (var node = tree.firstChild; node; node = node.nextSibling) {\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/webcompone nts/raw-file/tip/spec/shadow/index.html#matching-insertion-points\n\n // TODO(a rv): Verify this... I don't remember why I picked this regexp.\n var selectorMa tchRegExp = /^[*.:#[a-zA-Z_|]/;\n\n var allowedPseudoRegExp = new RegExp('^:(' + [\n 'link',\n 'visited',\n 'target',\n 'enabled',\n 'disabled', \n 'checked',\n 'indeterminate',\n 'nth-child',\n 'nth-last-child',\ n 'nth-of-type',\n 'nth-last-of-type',\n 'first-child',\n 'last-chil d',\n 'first-of-type',\n 'last-of-type',\n 'only-of-type',\n ].join('| ') + ')');\n\n\n /**\n * @param {Element} node\n * @oaram {Element} point T he insertion point element.\n * @return {boolean} Whether the node matches the insertion point.\n */\n function matchesCriteria(node, point) {\n var sel ect = point.getAttribute('select');\n if (!select)\n return true;\n\n // Here we know the select attribute is a non empty string.\n select = selec t.trim();\n if (!select)\n return true;\n\n if (!(node instanceof Ele ment))\n return false;\n\n // The native matches function in IE9 does no t correctly work with elements\n // that are not in the document.\n // TOD O(arv): Implement matching in JS.\n // https://github.com/Polymer/ShadowDOM/i ssues/361\n if (select === '*' || select === node.localName)\n return tr ue;\n\n // TODO(arv): This does not seem right. Need to check for a simple se lector.\n if (!selectorMatchRegExp.test(select))\n return false;\n\n // TODO(arv): This no longer matches the spec.\n if (select[0] === ':' && !al lowedPseudoRegExp.test(select))\n return false;\n\n try {\n return node.matches(select);\n } catch (ex) {\n // Invalid selector.\n ret urn false;\n }\n }\n\n var request = oneOf(window, [\n 'requestAnimation Frame',\n 'mozRequestAnimationFrame',\n 'webkitRequestAnimationFrame',\n 'setTimeout'\n ]);\n\n var pendingDirtyRenderers = [];\n var renderTimer;\n \n function renderAllPending() {\n // TODO(arv): Order these in document ord er. That way we do not have to\n // render something twice.\n for (var i = 0; i < pendingDirtyRenderers.length; i++) {\n var renderer = pendingDirtyR enderers[i];\n var parentRenderer = renderer.parentRenderer;\n if (par entRenderer && parentRenderer.dirty)\n continue;\n renderer.render() ;\n }\n\n pendingDirtyRenderers = [];\n }\n\n function handleRequestAnim ationFrame() {\n renderTimer = null;\n renderAllPending();\n }\n\n /**\n * Returns existing shadow renderer for a host or creates it if it is needed.\ n * @params {!Element} host\n * @return {!ShadowRenderer}\n */\n function getRendererForHost(host) {\n var renderer = rendererForHostTable.get(host);\ n if (!renderer) {\n renderer = new ShadowRenderer(host);\n rendere rForHostTable.set(host, renderer);\n }\n return renderer;\n }\n\n functi on getShadowRootAncestor(node) {\n var root = getTreeScope(node).root;\n i f (root instanceof ShadowRoot)\n return root;\n return null;\n }\n\n f unction getRendererForShadowRoot(shadowRoot) {\n return getRendererForHost(sh adowRoot.host);\n }\n\n var spliceDiff = new ArraySplice();\n spliceDiff.equa ls = function(renderNode, rawNode) {\n return unwrap(renderNode.node) === raw Node;\n };\n\n /**\n * RenderNode is used as an in memory \"render tree\". W hen we render the\n * composed tree we create a tree of RenderNodes, then we d iff 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: fun ction(node) {\n var rv = new RenderNode(node);\n this.childNodes.push( rv);\n return rv;\n },\n\n sync: function(opt_added) {\n if (thi s.skip)\n return;\n\n var nodeWrapper = this.node;\n // plain a rray of RenderNodes\n var newChildren = this.childNodes;\n // plain ar ray of real nodes.\n var oldChildren = getChildNodesSnapshot(unwrap(nodeWra pper));\n var added = opt_added || new WeakMap();\n\n var splices = sp liceDiff.calculateSplices(newChildren, oldChildren);\n\n var newIndex = 0, oldIndex = 0;\n var lastIndex = 0;\n for (var i = 0; i < splices.lengt h; i++) {\n var splice = splices[i];\n for (; lastIndex < splice.i ndex; lastIndex++) {\n oldIndex++;\n newChildren[newIndex++].s ync(added);\n }\n\n var removedCount = splice.removed.length;\n for (var j = 0; j < removedCount; j++) {\n var wrapper = wrap(oldC hildren[oldIndex++]);\n if (!added.get(wrapper))\n remove(wr apper);\n }\n\n var addedCount = splice.addedCount;\n var r efNode = oldChildren[oldIndex] && wrap(oldChildren[oldIndex]);\n for (var j = 0; j < addedCount; j++) {\n var newChildRenderNode = newChildren[n ewIndex++];\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 adde d.\n added.set(newChildWrapper, true);\n\n newChildRenderNode. sync(added);\n }\n\n lastIndex += addedCount;\n }\n\n fo r (var i = lastIndex; i < newChildren.length; i++) {\n newChildren[i].syn c(added);\n }\n }\n };\n\n function ShadowRenderer(host) {\n this.h ost = host;\n this.dirty = false;\n this.invalidateAttributes();\n this .associateNode(host);\n }\n\n ShadowRenderer.prototype = {\n\n // http://dv cs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#rendering-shadow- trees\n render: function(opt_renderNode) {\n if (!this.dirty)\n r eturn;\n\n this.invalidateAttributes();\n this.treeComposition();\n\n var host = this.host;\n var shadowRoot = host.shadowRoot;\n\n thi s.associateNode(host);\n var topMostRenderer = !renderNode;\n var rend erNode = opt_renderNode || new RenderNode(host);\n\n for (var node = shadow Root.firstChild; node; node = node.nextSibling) {\n this.renderNode(shado wRoot, renderNode, node, false);\n }\n\n if (topMostRenderer)\n renderNode.sync();\n\n this.dirty = false;\n },\n\n get parentRender er() {\n return getTreeScope(this.host).renderer;\n },\n\n invalidate : function() {\n if (!this.dirty) {\n this.dirty = true;\n pe ndingDirtyRenderers.push(this);\n if (renderTimer)\n return;\n renderTimer = window[request](handleRequestAnimationFrame, 0);\n }\n },\n\n renderNode: function(shadowRoot, renderNode, node, isNested) {\n if (isShadowHost(node)) {\n renderNode = renderNode.append(node);\n var 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(sha dowRoot, renderNode, node, isNested);\n } else if (isShadowInsertionPoint(n ode)) {\n this.renderShadowInsertionPoint(shadowRoot, renderNode, node);\ n } else {\n this.renderAsAnyDomTree(shadowRoot, renderNode, node, i sNested);\n }\n },\n\n renderAsAnyDomTree: function(shadowRoot, rende rNode, node, isNested) {\n renderNode = renderNode.append(node);\n\n i f (isShadowHost(node)) {\n var renderer = getRendererForHost(node);\n renderNode.skip = !renderer.dirty;\n renderer.render(renderNode);\n } else {\n for (var child = node.firstChild; child; child = child.nex tSibling) {\n this.renderNode(shadowRoot, renderNode, child, isNested); \n }\n }\n },\n\n renderInsertionPoint: function(shadowRoot, r enderNode, insertionPoint,\n isNested) {\n var distributedChildNodes = getDistributedChildNodes(insertionPoint);\n i f (distributedChildNodes.length) {\n this.associateNode(insertionPoint);\ n\n for (var i = 0; i < distributedChildNodes.length; i++) {\n v ar child = distributedChildNodes[i];\n if (isInsertionPoint(child) && i sNested)\n this.renderInsertionPoint(shadowRoot, renderNode, child, i sNested);\n else\n this.renderAsAnyDomTree(shadowRoot, rende rNode, child, isNested);\n }\n } else {\n this.renderFallback Content(shadowRoot, renderNode, insertionPoint);\n }\n this.associateN ode(insertionPoint.parentNode);\n },\n\n renderShadowInsertionPoint: funct ion(shadowRoot, renderNode,\n shadowInse rtionPoint) {\n var nextOlderTree = shadowRoot.olderShadowRoot;\n if ( nextOlderTree) {\n assignToInsertionPoint(nextOlderTree, shadowInsertionP oint);\n this.associateNode(shadowInsertionPoint.parentNode);\n fo r (var node = nextOlderTree.firstChild;\n node;\n node = node.nextSibling) {\n this.renderNode(nextOlderTree, renderNode, node, true);\n }\n } else {\n this.renderFallbackContent(shadowRoo t, renderNode,\n shadowInsertionPoint);\n }\n },\n\n renderFallbackContent: function(shadowRoot, renderNode, fallba ckHost) {\n this.associateNode(fallbackHost);\n this.associateNode(fal lbackHost.parentNode);\n for (var node = fallbackHost.firstChild; node; nod e = node.nextSibling) {\n this.renderAsAnyDomTree(shadowRoot, renderNode, node, false);\n }\n },\n\n /**\n * Invalidates the attributes us ed to keep track of which attributes may\n * cause the renderer to be invali dated.\n */\n invalidateAttributes: function() {\n this.attributes = Object.create(null);\n },\n\n /**\n * Parses the selector and makes t his renderer dependent on the attribute\n * being used in the selector.\n * @param {string} selector\n */\n updateDependentAttributes: function(s elector) {\n if (!selector)\n return;\n\n var attributes = this .attributes;\n\n // .class\n if (/\\.\\w+/.test(selector))\n at tributes['class'] = true;\n\n // #id\n if (/#\\w+/.test(selector))\n attributes['id'] = true;\n\n selector.replace(/\\[\\s*([^\\s=\\|~\\]] +)/g, function(_, name) {\n attributes[name] = true;\n });\n\n // Pseudo selectors have been removed from the spec.\n },\n\n dependsOnAtt ribute: function(name) {\n return this.attributes[name];\n },\n\n // http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#dfn-dist ribution-algorithm\n distribute: function(tree, pool) {\n var self = thi s;\n\n visit(tree, isActiveInsertionPoint,\n function(insertionPoi nt) {\n resetDistributedChildNodes(insertionPoint);\n self .updateDependentAttributes(\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) // remo ved\n continue;\n if (matchesCriteria(node, insertio nPoint)) { // 1.2.2\n distributeChildToInsertionPoint(node, inse rtionPoint); // 1.2.2.1\n pool[i] = undefined; // 1.2.2.2\n }\n }\n });\n },\n\n // http://dvcs.w3.org/h g/webcomponents/raw-file/tip/spec/shadow/index.html#dfn-tree-composition\n tr eeComposition: function () {\n var shadowHost = this.host;\n var tree = shadowHost.shadowRoot; // 1.\n var pool = []; // 2.\n\n for (var c hild = shadowHost.firstChild;\n child;\n child = child.nextS ibling) { // 3.\n if (isInsertionPoint(child)) { // 3.2.\n var reprojected = getDistributedChildNodes(child); // 3.2.1.\n // if repr ojected is undef... reset it?\n if (!reprojected || !reprojected.length ) // 3.2.2.\n reprojected = getChildNodesSnapshot(child);\n pool.push.apply(pool, reprojected); // 3.2.3.\n } else {\n poo l.push(child); // 3.3.\n }\n }\n\n var shadowInsertionPoint, po int;\n while (tree) { // 4.\n // 4.1.\n shadowInsertionPoint = undefined; // Reset every iteration.\n visit(tree, isActiveShadowInse rtionPoint, function(point) {\n shadowInsertionPoint = point;\n return false;\n });\n point = shadowInsertionPoint;\n\n t his.distribute(tree, pool); // 4.2.\n if (point) { // 4.3.\n v ar nextOlderTree = tree.olderShadowRoot; // 4.3.1.\n if (!nextOlderTre e) {\n break; // 4.3.1.1.\n } else {\n tree = ne xtOlderTree; // 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: functio n(node) {\n node.impl.polymerShadowRenderer_ = this;\n }\n };\n\n func tion isInsertionPoint(node) {\n // Should this include <shadow>?\n return node instanceof HTMLContentElement;\n }\n\n function isActiveInsertionPoint(no de) {\n // <content> inside another <content> or <shadow> is considered inact ive.\n return node instanceof HTMLContentElement;\n }\n\n function isShadow InsertionPoint(node) {\n return node instanceof HTMLShadowElement;\n }\n\n function isActiveShadowInsertionPoint(node) {\n // <shadow> inside another <c ontent> or <shadow> is considered inactive.\n return node instanceof HTMLShad owElement;\n }\n\n function isShadowHost(shadowHost) {\n return shadowHost. shadowRoot;\n }\n\n function getShadowTrees(host) {\n var trees = [];\n\n for (var tree = host.shadowRoot; tree; tree = tree.olderShadowRoot) {\n t rees.push(tree);\n }\n return trees;\n }\n\n function assignToInsertionP oint(tree, point) {\n insertionParentTable.set(tree, point);\n }\n\n // htt p://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#rendering-s hadow-trees\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 ShadowRoot is added or removed\n // - a direct child to the host is added o r removed\n // - a new shadow root is created\n // - a direct child to a conte nt/shadow element is added or removed\n // - a sibling to a content/shadow elem ent is added or removed\n // - content[select] is changed\n // - an attribute in a direct child to a host is modified\n\n /**\n * This gets called when a n ode was added or removed to it.\n */\n Node.prototype.invalidateShadowRendere r = function(force) {\n var renderer = this.impl.polymerShadowRenderer_;\n if (renderer) {\n renderer.invalidate();\n return true;\n }\n\n return false;\n };\n\n HTMLContentElement.prototype.getDistributedNodes = fun ction() {\n // TODO(arv): We should only rerender the dirty ancestor renderer s (from\n // the root and down).\n renderAllPending();\n return getDist ributedChildNodes(this);\n };\n\n HTMLShadowElement.prototype.nodeIsInserted_ =\n HTMLContentElement.prototype.nodeIsInserted_ = function() {\n // Invalid ate old renderer if any.\n this.invalidateShadowRenderer();\n\n var shadow Root = getShadowRootAncestor(this);\n var renderer;\n if (shadowRoot)\n renderer = getRendererForShadowRoot(shadowRoot);\n this.impl.polymerShadow Renderer_ = renderer;\n if (renderer)\n renderer.invalidate();\n };\n\n scope.eventParentsTable = eventParentsTable;\n scope.getRendererForHost = get RendererForHost;\n scope.getShadowTrees = getShadowTrees;\n scope.insertionPar entTable = insertionParentTable;\n scope.renderAllPending = renderAllPending;\n \n // Exposed for testing\n scope.visual = {\n insertBefore: insertBefore,\ n remove: remove,\n };\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 201 3 The Polymer Authors. All rights reserved.\n// Use of this source code is gover ened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(funct ion(scope) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement; \n var assert = scope.assert;\n var mixin = scope.mixin;\n var registerWrappe r = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var wrap = scope.wra p;\n\n var elementsWithFormProperty = [\n 'HTMLButtonElement',\n 'HTMLFie ldSetElement',\n 'HTMLInputElement',\n 'HTMLKeygenElement',\n 'HTMLLabe lElement',\n 'HTMLLegendElement',\n 'HTMLObjectElement',\n // HTMLOptio nElement is handled in HTMLOptionElement.js\n 'HTMLOutputElement',\n // HT MLSelectElement is handled in HTMLSelectElement.js\n 'HTMLTextAreaElement',\n ];\n\n function createWrapperConstructor(name) {\n if (!window[name])\n return;\n\n // Ensure we are not overriding an already existing constructo r.\n assert(!scope.wrappers[name]);\n\n var GeneratedWrapper = function(no de) {\n // At this point all of them extend HTMLElement.\n HTMLElement .call(this, node);\n }\n GeneratedWrapper.prototype = Object.create(HTMLEl ement.prototype);\n mixin(GeneratedWrapper.prototype, {\n get form() {\n return wrap(unwrap(this).form);\n },\n });\n\n registerWrappe r(window[name], GeneratedWrapper,\n document.createElement(name.slice(4, -7)));\n scope.wrappers[name] = GeneratedWrapper;\n }\n\n elementsWithFormP roperty.forEach(createWrapperConstructor);\n\n})(window.ShadowDOMPolyfill);\n"," // Copyright 2014 The Polymer Authors. All rights reserved.\n// Use of this sour ce 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 registerWrapper = scope.r egisterWrapper;\n var unwrap = scope.unwrap;\n var unwrapIfNeeded = scope.unwr apIfNeeded;\n var wrap = scope.wrap;\n\n var OriginalSelection = window.Select ion;\n\n function Selection(impl) {\n this.impl = impl;\n }\n Selection.pr ototype = {\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(unwrapIfNeeded(node), allowPartial);\n },\n extend: function(node, offset) {\n this.impl.extend(unwrapIfNeeded(node), offset);\n },\n getRangeAt: function(index) {\n return wrap(this.impl .getRangeAt(index));\n },\n removeRange: function(range) {\n this.imp l.removeRange(unwrap(range));\n },\n selectAllChildren: function(node) {\n this.impl.selectAllChildren(unwrapIfNeeded(node));\n },\n toString: function() {\n return this.impl.toString();\n }\n };\n\n // WebKit ext ensions. Not implemented.\n // readonly attribute Node baseNode;\n // readonly attribute long baseOffset;\n // readonly attribute Node extentNode;\n // read only attribute long extentOffset;\n // [RaisesException] void setBaseAndExtent( [Default=Undefined] optional Node baseNode,\n // [Default =Undefined] optional long baseOffset,\n // [Default=Undef ined] optional Node extentNode,\n // [Default=Undefined] optional long extentOffset);\n // [RaisesException, ImplementedAs=collapse] voi d setPosition([Default=Undefined] optional Node node,\n // [De fault=Undefined] optional long offset);\n\n registerWrapper(window.Selection, S election, window.getSelection());\n\n scope.wrappers.Selection = Selection;\n\n })(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rig hts reserved.\n// Use of this source code is goverened by a BSD-style\n// licens e that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\ n\n var GetElementsByInterface = scope.GetElementsByInterface;\n var Node = sc ope.wrappers.Node;\n var ParentNodeInterface = scope.ParentNodeInterface;\n va r Selection = scope.wrappers.Selection;\n var SelectorsInterface = scope.Select orsInterface;\n var ShadowRoot = scope.wrappers.ShadowRoot;\n var TreeScope = scope.TreeScope;\n var cloneNode = scope.cloneNode;\n var defineWrapGetter = s cope.defineWrapGetter;\n var elementFromPoint = scope.elementFromPoint;\n var forwardMethodsToWrapper = scope.forwardMethodsToWrapper;\n var matchesNames = s cope.matchesNames;\n var mixin = scope.mixin;\n var registerWrapper = scope.re gisterWrapper;\n var renderAllPending = scope.renderAllPending;\n var rewrap = scope.rewrap;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var wr apEventTargetMethods = scope.wrapEventTargetMethods;\n var wrapNodeList = scope .wrapNodeList;\n\n var implementationTable = new WeakMap();\n\n function Docum ent(node) {\n Node.call(this, node);\n this.treeScope_ = new TreeScope(thi s, null);\n }\n Document.prototype = Object.create(Node.prototype);\n\n defin eWrapGetter(Document, 'documentElement');\n\n // Conceptually both body and hea d can be in a shadow but suporting that seems\n // overkill at this point.\n d efineWrapGetter(Document, 'body');\n defineWrapGetter(Document, 'head');\n\n / / document cannot be overridden so we override a bunch of its methods\n // dire ctly on the instance.\n\n function wrapMethod(name) {\n var original = docum ent[name];\n Document.prototype[name] = function() {\n return wrap(origi nal.apply(this.impl, arguments));\n };\n }\n\n [\n 'createComment',\n 'createDocumentFragment',\n 'createElement',\n 'createElementNS',\n 'c reateEvent',\n 'createEventNS',\n 'createRange',\n 'createTextNode',\n 'getElementById'\n ].forEach(wrapMethod);\n\n var originalAdoptNode = docum ent.adoptNode;\n\n function adoptNodeNoRemove(node, doc) {\n originalAdoptNo de.call(doc.impl, unwrap(node));\n adoptSubtree(node, doc);\n }\n\n functio n adoptSubtree(node, doc) {\n if (node.shadowRoot)\n doc.adoptNode(node. shadowRoot);\n if (node instanceof ShadowRoot)\n adoptOlderShadowRoots(n ode, doc);\n for (var child = node.firstChild; child; child = child.nextSibli ng) {\n adoptSubtree(child, doc);\n }\n }\n\n function adoptOlderShado wRoots(shadowRoot, doc) {\n var oldShadowRoot = shadowRoot.olderShadowRoot;\n if (oldShadowRoot)\n doc.adoptNode(oldShadowRoot);\n }\n\n var origin alGetSelection = document.getSelection;\n\n mixin(Document.prototype, {\n ad optNode: function(node) {\n if (node.parentNode)\n node.parentNode.r emoveChild(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 clon eNode(node, deep, this.impl);\n },\n getSelection: function() {\n ren derAllPending();\n return new Selection(originalGetSelection.call(unwrap(th is)));\n }\n });\n\n if (document.registerElement) {\n var originalRegis terElement = document.registerElement;\n Document.prototype.registerElement = function(tagName, object) {\n var prototype, extendsOption;\n if (obj ect !== undefined) {\n prototype = object.prototype;\n extendsOpti on = object.extends;\n }\n\n if (!prototype)\n prototype = Obje ct.create(HTMLElement.prototype);\n\n\n // If we already used the object as a prototype for another custom\n // element.\n if (scope.nativeProtot ypeTable.get(prototype)) {\n // TODO(arv): DOMException\n throw ne w Error('NotSupportedError');\n }\n\n // Find first object on the prot otype chain that already have a native\n // prototype. Keep track of all th e objects before that so we can create\n // a similar structure for the nat ive case.\n var proto = Object.getPrototypeOf(prototype);\n var native Prototype;\n var prototypes = [];\n while (proto) {\n nativePro totype = scope.nativePrototypeTable.get(proto);\n if (nativePrototype)\n break;\n prototypes.push(proto);\n proto = Object.getProt otypeOf(proto);\n }\n\n if (!nativePrototype) {\n // TODO(arv): DOMException\n throw new Error('NotSupportedError');\n }\n\n / / This works by creating a new prototype object that is empty, but has\n // the native prototype as its proto. The original prototype object\n // pass ed into register is used as the wrapper prototype.\n\n var newPrototype = O bject.create(nativePrototype);\n for (var i = prototypes.length - 1; i >= 0 ; i--) {\n newPrototype = Object.create(newPrototype);\n }\n\n // Add callbacks if present.\n // Names are taken from:\n // https:/ /code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/Source/bi ndings/v8/CustomElementConstructorBuilder.cpp&sq=package:chromium&type=cs&l=156\ n // and not from the spec since the spec is out of date.\n [\n 'createdCallback',\n 'attachedCallback',\n 'detachedCallback',\n 'attributeChangedCallback',\n ].forEach(function(name) {\n va r f = prototype[name];\n if (!f)\n return;\n newPrototype [name] = function() {\n // if this element has been wrapped prior to re gistration,\n // the wrapper is stale; in this case rewrap\n i f (!(wrap(this) instanceof CustomElementConstructor)) {\n rewrap(this );\n }\n f.apply(wrap(this), arguments);\n };\n }) ;\n\n var p = {prototype: newPrototype};\n if (extendsOption)\n p.extends = extendsOption;\n\n function CustomElementConstructor(node) {\n if (!node) {\n if (extendsOption) {\n return documen t.createElement(extendsOption, tagName);\n } else {\n return document.createElement(tagName);\n }\n }\n this.impl = n ode;\n }\n CustomElementConstructor.prototype = prototype;\n Cust omElementConstructor.prototype.constructor = CustomElementConstructor;\n\n scope.constructorTable.set(newPrototype, CustomElementConstructor);\n scope .nativePrototypeTable.set(prototype, newPrototype);\n\n // registration is synchronous so do it last\n var nativeConstructor = originalRegisterElement .call(unwrap(this),\n tagName, p);\n return CustomElementConstruct or;\n };\n\n forwardMethodsToWrapper([\n window.HTMLDocument || windo w.Document, // Gecko adds these to HTMLDocument\n ], [\n 'registerEleme nt',\n ]);\n }\n\n // We also override some of the methods on document.body and document.head\n // for convenience.\n forwardMethodsToWrapper([\n wind ow.HTMLBodyElement,\n window.HTMLDocument || window.Document, // Gecko adds these to HTMLDocument\n window.HTMLHeadElement,\n window.HTMLHtmlElement,\ n ], [\n 'appendChild',\n 'compareDocumentPosition',\n 'contains',\n 'getElementsByClassName',\n 'getElementsByTagName',\n 'getElementsByTagN ameNS',\n 'insertBefore',\n 'querySelector',\n 'querySelectorAll',\n 'removeChild',\n 'replaceChild',\n ].concat(matchesNames));\n\n forwardMet hodsToWrapper([\n window.HTMLDocument || window.Document, // Gecko adds thes e to HTMLDocument\n ], [\n 'adoptNode',\n 'importNode',\n 'contains',\ n 'createComment',\n 'createDocumentFragment',\n 'createElement',\n 'createElementNS',\n 'createEvent',\n 'createEventNS',\n 'createRange', \n 'createTextNode',\n 'elementFromPoint',\n 'getElementById',\n 'ge tSelection',\n ]);\n\n mixin(Document.prototype, GetElementsByInterface);\n m ixin(Document.prototype, ParentNodeInterface);\n mixin(Document.prototype, Sele ctorsInterface);\n\n mixin(Document.prototype, {\n get implementation() {\n var implementation = implementationTable.get(this);\n if (implementati on)\n return implementation;\n implementation =\n new DOMIm plementation(unwrap(this).implementation);\n implementationTable.set(this, implementation);\n return implementation;\n }\n });\n\n registerWrappe r(window.Document, Document,\n document.implementation.createHTMLDocument(' '));\n\n // Both WebKit and Gecko uses HTMLDocument for document. HTML5/DOM onl y has\n // one Document interface and IE implements the standard correctly.\n if (window.HTMLDocument)\n registerWrapper(window.HTMLDocument, Document);\n\ n wrapEventTargetMethods([\n window.HTMLBodyElement,\n window.HTMLDocumen t || window.Document, // Gecko adds these to HTMLDocument\n window.HTMLHeadE lement,\n ]);\n\n function DOMImplementation(impl) {\n this.impl = impl;\n }\n\n function wrapImplMethod(constructor, name) {\n var original = documen t.implementation[name];\n constructor.prototype[name] = function() {\n r eturn wrap(original.apply(this.impl, arguments));\n };\n }\n\n function for wardImplMethod(constructor, name) {\n var original = document.implementation[ name];\n constructor.prototype[name] = function() {\n return original.ap ply(this.impl, arguments);\n };\n }\n\n wrapImplMethod(DOMImplementation, ' createDocumentType');\n wrapImplMethod(DOMImplementation, 'createDocument');\n wrapImplMethod(DOMImplementation, 'createHTMLDocument');\n forwardImplMethod(D OMImplementation, 'hasFeature');\n\n registerWrapper(window.DOMImplementation, DOMImplementation);\n\n forwardMethodsToWrapper([\n window.DOMImplementation ,\n ], [\n 'createDocumentType',\n 'createDocument',\n 'createHTMLDocu ment',\n 'hasFeature',\n ]);\n\n scope.adoptNodeNoRemove = adoptNodeNoRemov e;\n scope.wrappers.DOMImplementation = DOMImplementation;\n scope.wrappers.Do cument = Document;\n\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 EventTarget = scope.wrappers.EventTarget;\n var Selection = scope.wrappers.Selection;\n var mixin = scope.mixin;\n var registe rWrapper = scope.registerWrapper;\n var renderAllPending = scope.renderAllPendi ng;\n var unwrap = scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\ n var wrap = scope.wrap;\n\n var OriginalWindow = window.Window;\n var origin alGetComputedStyle = window.getComputedStyle;\n var originalGetSelection = wind ow.getSelection;\n\n function Window(impl) {\n EventTarget.call(this, impl); \n }\n Window.prototype = Object.create(EventTarget.prototype);\n\n OriginalW indow.prototype.getComputedStyle = function(el, pseudo) {\n return wrap(this || window).getComputedStyle(unwrapIfNeeded(el), pseudo);\n };\n\n OriginalWind ow.prototype.getSelection = function() {\n return wrap(this || window).getSel ection();\n };\n\n // Work around for https://bugzilla.mozilla.org/show_bug.cg i?id=943065\n delete window.getComputedStyle;\n delete window.getSelection;\n\ n ['addEventListener', 'removeEventListener', 'dispatchEvent'].forEach(\n function(name) {\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=943065\n delete window[name];\n });\n\n mixin(Window.prototy pe, {\n getComputedStyle: function(el, pseudo) {\n renderAllPending();\n return originalGetComputedStyle.call(unwrap(this), unwrapIfNeeded(el),\n pseudo);\n },\n getSelection: fun ction() {\n renderAllPending();\n return new Selection(originalGetSele ction.call(unwrap(this)));\n },\n });\n\n registerWrapper(OriginalWindow, W indow);\n\n scope.wrappers.Window = Window;\n\n})(window.ShadowDOMPolyfill);\n" ,"/**\n * Copyright 2014 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\n(function(scope) {\n 'use strict';\n\n var unwrap = scop e.unwrap;\n\n // DataTransfer (Clipboard in old Blink/WebKit) has a single meth od that\n // requires wrapping. Since it is only a method we do not need a real wrapper,\n // we can just override the method.\n\n var OriginalDataTransfer = window.DataTransfer || window.Clipboard;\n var OriginalDataTransferSetDragImag e =\n OriginalDataTransfer.prototype.setDragImage;\n\n OriginalDataTransfe r.prototype.setDragImage = function(image, x, y) {\n OriginalDataTransferSetD ragImage.call(this, unwrap(image), x, y);\n };\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 LI CENSE 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 constructor\n // for.\n var elements = {\n 'a': 'HTMLAnchorElement', \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 // 'apple t': 'HTMLAppletElement',\n 'area': 'HTMLAreaElement',\n 'audio': 'HTMLAudi oElement',\n 'base': 'HTMLBaseElement',\n 'body': 'HTMLBodyElement',\n 'br': 'HTMLBRElement',\n 'button': 'HTMLButtonElement',\n 'canvas': 'HTMLC anvasElement',\n 'caption': 'HTMLTableCaptionElement',\n 'col': 'HTMLTable ColElement',\n // 'command': 'HTMLCommandElement', // Not fully implemented in Gecko.\n 'content': 'HTMLContentElement',\n 'data': 'HTMLDataElement',\ n 'datalist': 'HTMLDataListElement',\n 'del': 'HTMLModElement',\n 'dir' : 'HTMLDirectoryElement',\n 'div': 'HTMLDivElement',\n 'dl': 'HTMLDListEle ment',\n 'embed': 'HTMLEmbedElement',\n 'fieldset': 'HTMLFieldSetElement', \n 'font': 'HTMLFontElement',\n 'form': 'HTMLFormElement',\n 'frame': ' HTMLFrameElement',\n 'frameset': 'HTMLFrameSetElement',\n 'h1': 'HTMLHeadi ngElement',\n 'head': 'HTMLHeadElement',\n 'hr': 'HTMLHRElement',\n 'ht ml': 'HTMLHtmlElement',\n 'iframe': 'HTMLIFrameElement',\n 'img': 'HTMLIma geElement',\n 'input': 'HTMLInputElement',\n 'keygen': 'HTMLKeygenElement' ,\n 'label': 'HTMLLabelElement',\n 'legend': 'HTMLLegendElement',\n 'li ': 'HTMLLIElement',\n 'link': 'HTMLLinkElement',\n 'map': 'HTMLMapElement' ,\n 'marquee': 'HTMLMarqueeElement',\n 'menu': 'HTMLMenuElement',\n 'me nuitem': 'HTMLMenuItemElement',\n 'meta': 'HTMLMetaElement',\n 'meter': 'H TMLMeterElement',\n 'object': 'HTMLObjectElement',\n 'ol': 'HTMLOListEleme nt',\n 'optgroup': 'HTMLOptGroupElement',\n 'option': 'HTMLOptionElement', \n 'output': 'HTMLOutputElement',\n 'p': 'HTMLParagraphElement',\n 'par am': 'HTMLParamElement',\n 'pre': 'HTMLPreElement',\n 'progress': 'HTMLPro gressElement',\n 'q': 'HTMLQuoteElement',\n 'script': 'HTMLScriptElement', \n 'select': 'HTMLSelectElement',\n 'shadow': 'HTMLShadowElement',\n 's ource': 'HTMLSourceElement',\n 'span': 'HTMLSpanElement',\n 'style': 'HTML StyleElement',\n 'table': 'HTMLTableElement',\n 'tbody': 'HTMLTableSection Element',\n // WebKit and Moz are wrong:\n // https://bugs.webkit.org/show _bug.cgi?id=111469\n // https://bugzilla.mozilla.org/show_bug.cgi?id=848096\n // 'td': 'HTMLTableCellElement',\n 'template': 'HTMLTemplateElement',\n 'textarea': 'HTMLTextAreaElement',\n 'thead': 'HTMLTableSectionElement',\n 'time': 'HTMLTimeElement',\n 'title': 'HTMLTitleElement',\n 'tr': 'HTML TableRowElement',\n 'track': 'HTMLTrackElement',\n 'ul': 'HTMLUListElement ',\n 'video': 'HTMLVideoElement',\n };\n\n function overrideConstructor(tag Name) {\n var nativeConstructorName = elements[tagName];\n var nativeConst ructor = window[nativeConstructorName];\n if (!nativeConstructor)\n retu rn;\n var element = document.createElement(tagName);\n var wrapperConstruc tor = element.constructor;\n window[nativeConstructorName] = wrapperConstruct or;\n }\n\n Object.keys(elements).forEach(overrideConstructor);\n\n Object.ge tOwnPropertyNames(scope.wrappers).forEach(function(name) {\n window[name] = s cope.wrappers[name]\n });\n\n})(window.ShadowDOMPolyfill);\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 (function() {\n\n // convenient global\n window.wrap = ShadowDOMPolyfill.wrapI fNeeded;\n window.unwrap = ShadowDOMPolyfill.unwrapIfNeeded;\n\n // users may want to customize other types\n // TODO(sjmiles): 'button' is now supported by ShadowDOMPolyfill, but\n // I've left this code here in case we need to tempora rily patch another\n // type\n /*\n (function() {\n var elts = {HTMLButton Element: 'button'};\n for (var c in elts) {\n window[c] = function() { t hrow 'Patched Constructor'; };\n window[c].prototype = Object.getPrototypeO f(\n document.createElement(elts[c]));\n }\n })();\n */\n\n // pa tch in prefixed name\n Object.defineProperty(Element.prototype, 'webkitShadowRo ot',\n Object.getOwnPropertyDescriptor(Element.prototype, 'shadowRoot'));\n \n var originalCreateShadowRoot = Element.prototype.createShadowRoot;\n Elemen t.prototype.createShadowRoot = function() {\n var root = originalCreateShadow Root.call(this);\n CustomElements.watchShadow(this);\n return root;\n };\ n\n Element.prototype.webkitCreateShadowRoot = Element.prototype.createShadowRo ot;\n})();\n","/*\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be fo und in the LICENSE file.\n */\n\n/*\n This is a limited shim for ShadowDOM css styling.\n https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index. html#styles\n \n The intention here is to support only the styling features wh ich can be \n relatively simply implemented. The goal is to allow users to avoi d the \n most obvious pitfalls and do so without compromising performance signi ficantly. \n For ShadowDOM styling that's not covered here, a set of best pract ices\n can be provided that should allow users to accomplish more complex styli ng.\n\n The following is a list of specific ShadowDOM styling features and a br ief\n discussion of the approach used to shim.\n\n Shimmed features:\n\n * :h ost, :host-context: ShadowDOM allows styling of the shadowRoot's host\n element using the :host rule. To shim this feature, the :host styles are \n reformatte d and prefixed with a given scope name and promoted to a \n document level styl esheet.\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 * encapsultion: Styles defined within Sha dowDOM, apply only to \n dom inside the ShadowDOM. Polymer uses one of two tech niques to imlement\n this feature.\n \n By default, rules are prefixed with t he host element tag name \n as a descendant selector. This ensures styling does not leak out of the 'top'\n of the element'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 selectors are scoped by adding an attribu te selector suffix to each\n simple selector that contains the host element tag name. Each element \n in the element's ShadowDOM template is also given the sc ope attribute. \n Thus, these rules match only elements that have the scope att ribute.\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 that elements that are dynamically added to a scope must have the scope\n selector added to them manually.\n\n * upper /lower bound encapsulation: Styles which are defined outside a\n shadowRoot sho uld not cross the ShadowDOM boundary and should not apply\n inside a shadowRoot .\n\n This styling behavior is not emulated. Some possible ways to do this that \n were rejected due to complexity and/or performance concerns include: (1) re set\n every possible property for every possible selector for a given scope nam e;\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 not emulated. It's often not necessary\ n to style the contents of a specific insertion point and instead, descendants\ n of the host element can be styled selectively. Users can also create an \n e xtra node around an insertion point and style that node's contents\n via descen dent selectors. For example, with a shadowRoot like this:\n \n <style>\n ::content(div) {\n background: red;\n }\n </style>\n <conten t></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-container\">\n <content></content>\n </div>\n \n Note the use of @polyfill in the comment above a ShadowDOM spec ific style\n declaration. This is a directive to the styling shim to use the se lector \n in comments in lieu of the next selector when running under polyfill. \n*/\n(function(scope) {\n\nvar ShadowCSS = {\n strictStyling: false,\n regist ry: {},\n // Shim styles for a given root associated with a name and extendsNam e\n // 1. cache root styles by name\n // 2. optionally tag root nodes with sco pe name\n // 3. shim polyfill directives /* @polyfill */ and /* @polyfill-rule */\n // 4. shim :host and scoping\n shimStyling: function(root, name, extendsN ame) {\n var scopeStyles = this.prepareRoot(root, name, extendsName);\n va r typeExtension = this.isTypeExtension(extendsName);\n var scopeSelector = th is.makeScopeSelector(name, typeExtension);\n // use caching to make working w ith styles nodes easier and to facilitate\n // lookup of extendee\n var cs sText = stylesToCssText(scopeStyles, true);\n cssText = this.scopeCssText(css Text, scopeSelector);\n // cache shimmed css on root for user extensibility\n if (root) {\n root.shimmedStyle = cssText;\n }\n // add style to document\n this.addCssToDocument(cssText, name);\n },\n /*\n * Shim a styl e element with the given selector. Returns cssText that can\n * be included in the document via Platform.ShadowCSS.addCssToDocument(css).\n */\n shimStyle: f unction(style, selector) {\n return this.shimCssText(style.textContent, selec tor);\n },\n /*\n * Shim some cssText with the given selector. Returns cssTex t that can\n * be included in the document via Platform.ShadowCSS.addCssToDocum ent(css).\n */\n shimCssText: function(cssText, selector) {\n cssText = thi s.insertDirectives(cssText);\n return this.scopeCssText(cssText, selector);\n },\n makeScopeSelector: function(name, typeExtension) {\n if (name) {\n return typeExtension ? '[is=' + name + ']' : name;\n }\n return '';\n },\n isTypeExtension: function(extendsName) {\n return extendsName && extend sName.indexOf('-') < 0;\n },\n prepareRoot: function(root, name, extendsName) {\n var def = this.registerRoot(root, name, extendsName);\n this.replaceTe xtInStyles(def.rootStyles, this.insertDirectives);\n // remove existing style elements\n this.removeStyles(root, def.rootStyles);\n // apply strict att r\n if (this.strictStyling) {\n this.applyScopeToContent(root, name);\n }\n return def.scopeStyles;\n },\n removeStyles: function(root, styles) {\n for (var i=0, l=styles.length, s; (i<l) && (s=styles[i]); i++) {\n s .parentNode.removeChild(s);\n }\n },\n registerRoot: function(root, name, e xtendsName) {\n var def = this.registry[name] = {\n root: root,\n n ame: name,\n extendsName: extendsName\n }\n var styles = this.findSty les(root);\n def.rootStyles = styles;\n def.scopeStyles = def.rootStyles;\ n var extendee = this.registry[def.extendsName];\n if (extendee) {\n def.scopeStyles = extendee.scopeStyles.concat(def.scopeStyles);\n }\n retu rn def;\n },\n findStyles: function(root) {\n if (!root) {\n return [] ;\n }\n var styles = root.querySelectorAll('style');\n return Array.pro totype.filter.call(styles, function(s) {\n return !s.hasAttribute(NO_SHIM_A TTRIBUTE);\n });\n },\n applyScopeToContent: function(root, name) {\n if (root) {\n // add the name attribute to each node in root.\n Array.pr ototype.forEach.call(root.querySelectorAll('*'),\n function(node) {\n node.setAttribute(name, '');\n });\n // and template con tents too\n Array.prototype.forEach.call(root.querySelectorAll('template'), \n function(template) {\n this.applyScopeToContent(template. content, name);\n },\n this);\n }\n },\n insertDirectives : function(cssText) {\n cssText = this.insertPolyfillDirectivesInCssText(cssT ext);\n return this.insertPolyfillRulesInCssText(cssText);\n },\n /*\n * Process styles to convert native ShadowDOM rules that will trip\n * up the css parser; we rely on decorating the stylesheet with inert rules.\n * \n * For example, we convert this rule:\n * \n * polyfill-next-selector { content: ' :host menu-item'; }\n * ::content menu-item {\n * \n * to this:\n * \n * scopeName menu-item {\n *\n **/\n insertPolyfillDirectivesInCssText: func tion(cssText) {\n // TODO(sorvell): remove either content or comment\n css Text = cssText.replace(cssCommentNextSelectorRe, function(match, p1) {\n // remove end comment delimiter and add block start\n return p1.slice(0, -2) + '{';\n });\n return cssText.replace(cssContentNextSelectorRe, function(m atch, p1) {\n return p1 + ' {';\n });\n },\n /*\n * Process styles t o add rules which will only apply under the polyfill\n * \n * For example, w e convert this rule:\n * \n * polyfill-rule {\n * content: ':host menu-i tem';\n * ...\n * }\n * \n * to this:\n * \n * scopeName menu-item { ...}\n *\n **/\n insertPolyfillRulesInCssText: function(cssText) {\n // T ODO(sorvell): remove either content or comment\n cssText = cssText.replace(cs sCommentRuleRe, function(match, p1) {\n // remove end comment delimiter\n return p1.slice(0, -1);\n });\n return cssText.replace(cssContentRuleR e, function(match, p1, p2, p3) {\n var rule = match.replace(p1, '').replace (p2, '');\n return p3 + rule;\n });\n },\n /* Ensure styles are scoped . Pseudo-scoping takes a rule like:\n * \n * .foo {... } \n * \n * an d converts this to\n * \n * scopeName .foo { ... }\n */\n scopeCssText: function(cssText, scopeSelector) {\n var unscoped = this.extractUnscopedRules FromCssText(cssText);\n cssText = this.insertPolyfillHostInCssText(cssText);\ n cssText = this.convertColonHost(cssText);\n cssText = this.convertColonH ostContext(cssText);\n cssText = this.convertCombinators(cssText);\n if (s copeSelector) {\n var self = this, cssText;\n withCssRules(cssText, fu nction(rules) {\n cssText = self.scopeRules(rules, scopeSelector);\n });\n\n }\n cssText = cssText + '\\n' + unscoped;\n return cssText.tri m();\n },\n /*\n * Process styles to add rules which will only apply under t he polyfill\n * and do not process via CSSOM. (CSSOM is destructive to rules o n rare \n * occasions, e.g. -webkit-calc on Safari.)\n * For example, we con vert this rule:\n * \n * (comment start) @polyfill-unscoped-rule menu-item { \n * ... } (comment end)\n * \n * to this:\n * \n * menu-item {...}\n *\n **/\n extractUnscopedRulesFromCssText: function(cssText) {\n // TODO (sorvell): remove either content or comment\n var r = '', m;\n while (m = cssCommentUnscopedRuleRe.exec(cssText)) {\n r += m[1].slice(0, -1) + '\\n\\ n';\n }\n while (m = cssContentUnscopedRuleRe.exec(cssText)) {\n r += m[0].replace(m[2], '').replace(m[1], m[3]) + '\\n\\n';\n }\n return r;\n },\n /*\n * convert a rule like :host(.foo) > .bar { }\n *\n * to\n *\ n * scopeName.foo > .bar\n */\n convertColonHost: function(cssText) {\n r eturn this.convertColonRule(cssText, cssColonHostRe,\n this.colonHostPart Replacer);\n },\n /*\n * convert a rule like :host-context(.foo) > .bar { }\ n *\n * to\n *\n * scopeName.foo > .bar, .foo scopeName > .bar { }\n * \n * and\n *\n * :host-context(.foo:host) .bar { ... }\n * \n * to\n * \n * scopeName.foo .bar { ... }\n */\n convertColonHostContext: function (cssText) {\n return this.convertColonRule(cssText, cssColonHostContextRe,\n this.colonHostContextPartReplacer);\n },\n convertColonRule: function(c ssText, regExp, partReplacer) {\n // p1 = :host, p2 = contents of (), p3 rest of rule\n return cssText.replace(regExp, function(m, p1, p2, p3) {\n p1 = polyfillHostNoCombinator;\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 colonHostContextPartReplacer: function(host, part, suffix) {\ n if (part.match(polyfillHost)) {\n return this.colonHostPartReplacer(ho st, part, suffix);\n } else {\n return host + part + suffix + ', ' + par t + ' ' + host + suffix;\n }\n },\n colonHostPartReplacer: function(host, p art, suffix) {\n return host + part.replace(polyfillHost, '') + suffix;\n }, \n /*\n * Convert ^ and ^^ combinators by replacing with space.\n */\n conv ertCombinators: function(cssText) {\n for (var i=0; i < combinatorsRe.length; i++) {\n cssText = cssText.replace(combinatorsRe[i], ' ');\n }\n ret urn cssText;\n },\n // change a selector like 'div' to 'name div'\n scopeRule s: function(cssRules, scopeSelector) {\n var cssText = '';\n if (cssRules) {\n Array.prototype.forEach.call(cssRules, function(rule) {\n if (r ule.selectorText && (rule.style && rule.style.cssText)) {\n cssText += this.scopeSelector(rule.selectorText, scopeSelector, \n this.strictSt yling) + ' {\\n\\t';\n cssText += this.propertiesFromRule(rule) + '\\n} \\n\\n';\n } else if (rule.type === CSSRule.MEDIA_RULE) {\n cssT ext += '@media ' + rule.media.mediaText + ' {\\n';\n cssText += this.sc opeRules(rule.cssRules, scopeSelector);\n cssText += '\\n}\\n\\n';\n } else if (rule.cssText) {\n cssText += rule.cssText + '\\n\\n';\n }\n }, this);\n }\n return cssText;\n },\n scopeSelector: f unction(selector, scopeSelector, strict) {\n var r = [], parts = selector.spl it(',');\n parts.forEach(function(p) {\n p = p.trim();\n if (this.s electorNeedsScoping(p, scopeSelector)) {\n p = (strict && !p.match(polyfi llHostNoCombinator)) ? \n this.applyStrictSelectorScope(p, scopeSelec tor) :\n this.applySimpleSelectorScope(p, scopeSelector);\n }\n r.push(p);\n }, this);\n return r.join(', ');\n },\n selectorNeedsS coping: function(selector, scopeSelector) {\n var re = this.makeScopeMatcher( scopeSelector);\n return !selector.match(re);\n },\n makeScopeMatcher: func tion(scopeSelector) {\n scopeSelector = scopeSelector.replace(/\\[/g, '\\\\[' ).replace(/\\[/g, '\\\\]');\n return new RegExp('^(' + scopeSelector + ')' + selectorReSuffix, 'm');\n },\n // scope via name and [is=name]\n applySimpleS electorScope: function(selector, scopeSelector) {\n if (selector.match(polyfi llHostRe)) {\n selector = selector.replace(polyfillHostNoCombinator, scopeS elector);\n return selector.replace(polyfillHostRe, scopeSelector + ' ');\n } else {\n return scopeSelector + ' ' + selector;\n }\n },\n // re turn a selector with [name] suffix on each simple selector\n // e.g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name]\n applyStrictSelectorScope: fun ction(selector, scopeSelector) {\n scopeSelector = scopeSelector.replace(/\\[ is=([^\\]]*)\\]/g, '$1');\n var splits = [' ', '>', '+', '~'],\n scoped = selector,\n attrName = '[' + scopeSelector + ']';\n splits.forEach(fun ction(sep) {\n var parts = scoped.split(sep);\n scoped = parts.map(fun ction(p) {\n // remove :host since it should be unnecessary\n var 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(selecto r) {\n return selector.replace(colonHostContextRe, polyfillHostContext).repla ce(\n colonHostRe, polyfillHost);\n },\n propertiesFromRule: function(r ule) {\n var cssText = rule.style.cssText;\n // TODO(sorvell): Safari csso m incorrectly removes quotes from the content\n // property. (https://bugs.we bkit.org/show_bug.cgi?id=118045)\n // don't replace attr rules\n if (rule. style.content && !rule.style.content.match(/['\"]+|attr/)) {\n cssText = cs sText.replace(/content:[^;]*;/g, 'content: \\'' + \n rule.style.content + '\\';');\n }\n // TODO(sorvell): we can workaround this issue here, but we need a list\n // of troublesome properties to fix https://github.com/Poly mer/platform/issues/53\n //\n // inherit rules can be omitted from cssText \n // TODO(sorvell): remove when Blink bug is fixed:\n // https://code.goo gle.com/p/chromium/issues/detail?id=358273\n var style = rule.style;\n for (var i in style) {\n if (style[i] === 'initial') {\n cssText += i + ': initial; ';\n }\n }\n return cssText;\n },\n replaceTextInStyle s: function(styles, action) {\n if (styles && action) {\n if (!(styles i nstanceof Array)) {\n styles = [styles];\n }\n Array.prototype. forEach.call(styles, function(s) {\n s.textContent = action.call(this, s. textContent);\n }, this);\n }\n },\n addCssToDocument: function(cssTex t, name) {\n if (cssText.match('@import')) {\n addOwnSheet(cssText, name );\n } else {\n addCssToDocument(cssText);\n }\n }\n};\n\nvar select orRe = /([^{]*)({[\\s\\S]*?})/gim,\n cssCommentRe = /\\/\\*[^*]*\\*+([^/*][^* ]*\\*+)*\\//gim,\n // TODO(sorvell): remove either content or comment\n cs sCommentNextSelectorRe = /\\/\\*\\s*@polyfill ([^*]*\\*+([^/*][^*]*\\*+)*\\/)([^ {]*?){/gim,\n cssContentNextSelectorRe = /polyfill-next-selector[^}]*content\ \:[\\s]*'([^']*)'[^}]*}([^{]*?){/gim,\n // TODO(sorvell): remove either conte nt or comment\n cssCommentRuleRe = /\\/\\*\\s@polyfill-rule([^*]*\\*+([^/*][^ *]*\\*+)*)\\//gim,\n cssContentRuleRe = /(polyfill-rule)[^}]*(content\\:[\\s] *'([^']*)'[^;]*;)[^}]*}/gim,\n // TODO(sorvell): remove either content or com ment\n cssCommentUnscopedRuleRe = /\\/\\*\\s@polyfill-unscoped-rule([^*]*\\*+ ([^/*][^*]*\\*+)*)\\//gim,\n cssContentUnscopedRuleRe = /(polyfill-unscoped-r ule)[^}]*(content\\:[\\s]*'([^']*)'[^;]*;)[^}]*}/gim,\n cssPseudoRe = /::(x-[ ^\\s{,(]*)/gim,\n cssPartRe = /::part\\(([^)]*)\\)/gim,\n // note: :host p re-processed to -shadowcsshost.\n polyfillHost = '-shadowcsshost',\n // no te: :host-context pre-processed to -shadowcsshostcontext.\n polyfillHostConte xt = '-shadowcsscontext',\n parenSuffix = ')(?:\\\\((' +\n '(?:\\\\([^ )(]*\\\\)|[^)(]*)+?' +\n ')\\\\))?([^,{]*)';\n cssColonHostRe = new Re gExp('(' + polyfillHost + parenSuffix, 'gim'),\n cssColonHostContextRe = new RegExp('(' + polyfillHostContext + parenSuffix, 'gim'),\n selectorReSuffix = '([>\\\\s~+\\[.,{:][\\\\s\\\\S]*)?$',\n colonHostRe = /\\:host/gim,\n colo nHostContextRe = /\\:host-context/gim,\n /* host name without combinator */\n polyfillHostNoCombinator = polyfillHost + '-no-combinator',\n polyfillHos tRe = new RegExp(polyfillHost, 'gim'),\n polyfillHostContextRe = new RegExp(p olyfillHostContext, 'gim'),\n combinatorsRe = [\n /\\^\\^/g,\n /\\^ /g,\n /\\/shadow\\//g,\n /\\/shadow-deep\\//g,\n /::shadow/g,\n /\\/deep\\//g\n ];\n\nfunction stylesToCssText(styles, preserveComments) {\n var cssText = '';\n Array.prototype.forEach.call(styles, function(s) {\n cssText += s.textContent + '\\n\\n';\n });\n // strip comments for easier pr ocessing\n if (!preserveComments) {\n cssText = cssText.replace(cssCommentRe , '');\n }\n return cssText;\n}\n\nfunction cssTextToStyle(cssText) {\n var s tyle = document.createElement('style');\n style.textContent = cssText;\n retur n style;\n}\n\nfunction cssToRules(cssText) {\n var style = cssTextToStyle(cssT ext);\n document.head.appendChild(style);\n var rules = [];\n if (style.sheet ) {\n // TODO(sorvell): Firefox throws when accessing the rules of a styleshe et\n // with an @import\n // https://bugzilla.mozilla.org/show_bug.cgi?id= 625013\n try {\n rules = style.sheet.cssRules;\n } catch(e) {\n //\n }\n } else {\n console.warn('sheet not found', style);\n }\n style .parentNode.removeChild(style);\n return rules;\n}\n\nvar frame = document.crea teElement('iframe');\nframe.style.display = 'none';\n\nfunction initFrame() {\n frame.initialized = true;\n document.body.appendChild(frame);\n var doc = fra me.contentDocument;\n var base = doc.createElement('base');\n base.href = docu ment.baseURI;\n doc.head.appendChild(base);\n}\n\nfunction inFrame(fn) {\n if (!frame.initialized) {\n initFrame();\n }\n document.body.appendChild(frame );\n fn(frame.contentDocument);\n document.body.removeChild(frame);\n}\n\n// T ODO(sorvell): use an iframe if the cssText contains an @import to workaround\n// https://code.google.com/p/chromium/issues/detail?id=345114\nvar isChrome = navi gator.userAgent.match('Chrome');\nfunction withCssRules(cssText, callback) {\n if (!callback) {\n return;\n }\n var rules;\n if (cssText.match('@import') && isChrome) {\n var style = cssTextToStyle(cssText);\n inFrame(function( doc) {\n doc.head.appendChild(style.impl);\n rules = style.sheet.cssRu les;\n callback(rules);\n });\n } else {\n rules = cssToRules(cssTex t);\n callback(rules);\n }\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 i f (cssText) {\n getSheet().appendChild(document.createTextNode(cssText));\n }\n}\n\nfunction addOwnSheet(cssText, name) {\n var style = cssTextToStyle(cssT ext);\n style.setAttribute(name, '');\n style.setAttribute(SHIMMED_ATTRIBUTE, '');\n document.head.appendChild(style);\n}\n\nvar SHIM_ATTRIBUTE = 'shim-shado wdom';\nvar SHIMMED_ATTRIBUTE = 'shim-shadowdom-css';\nvar NO_SHIM_ATTRIBUTE = ' no-shim';\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 var originalPars eGeneric = HTMLImports.parser.parseGeneric;\n\n HTMLImports.parser.parseGen eric = function(elt) {\n if (elt[SHIMMED_ATTRIBUTE]) {\n return; \n }\n var style = elt.__importElement || elt;\n if (!style .hasAttribute(SHIM_ATTRIBUTE)) {\n originalParseGeneric.call(this, elt) ;\n return;\n }\n if (elt.__resource) {\n style = elt.ownerDocument.createElement('style');\n style.textContent = urlRe solver.resolveCssText(\n elt.__resource, elt.href);\n } else {\n urlResolver.resolveStyle(style); \n }\n style.textC ontent = ShadowCSS.shimStyle(style);\n style.removeAttribute(SHIM_ATTRIBU TE, '');\n style.setAttribute(SHIMMED_ATTRIBUTE, '');\n style[SHIM MED_ATTRIBUTE] = true;\n // place in document\n if (style.parentNo de !== 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.__impo rtParsed = true;\n this.markParsingComplete(elt);\n }\n\n var h asResource = HTMLImports.parser.hasResource;\n HTMLImports.parser.hasResour ce = function(node) {\n if (node.localName === 'link' && node.rel === 'st ylesheet' &&\n node.hasAttribute(SHIM_ATTRIBUTE)) {\n return (node.__resource);\n } else {\n return hasResource.call(this, n ode);\n }\n }\n\n }\n });\n}\n\n// exports\nscope.ShadowCSS = Sh adowCSS;\n\n})(window.Platform);","/*\n * Copyright 2013 The Polymer Authors. Al l rights reserved.\n * Use of this source code is governed by a BSD-style\n * li cense that can be found in the LICENSE file.\n */\n(function() {\n\n // poor ma n's adapter for template.content on various platform scenarios\n window.templat eContent = window.templateContent || function(inTemplate) {\n return inTempla te.content;\n };\n\n // so we can call wrap/unwrap without testing for ShadowD OMPolyfill\n\n window.wrap = window.unwrap = function(n){\n return n;\n }\n \n addEventListener('DOMContentLoaded', function() {\n if (CustomElements. useNative === false) {\n var originalCreateShadowRoot = Element.prototype.c reateShadowRoot;\n Element.prototype.createShadowRoot = function() {\n var root = originalCreateShadowRoot.call(this);\n CustomElements.watch Shadow(this);\n return root;\n };\n }\n });\n \n window.templa teContent = function(inTemplate) {\n // if MDV exists, it may need to boostra p this template to reveal content\n if (window.HTMLTemplateElement && HTMLTem plateElement.bootstrap) {\n HTMLTemplateElement.bootstrap(inTemplate);\n }\n // fallback when there is no Shadow DOM polyfill, no MDV polyfill, and n o\n // native template support\n if (!inTemplate.content && !inTemplate._c ontent) {\n var frag = document.createDocumentFragment();\n while (inT emplate.firstChild) {\n frag.appendChild(inTemplate.firstChild);\n } \n inTemplate._content = frag;\n }\n return inTemplate.content || inT emplate._content;\n };\n\n})();","/* Any copyright is dedicated to the Public D omain.\n * http://creativecommons.org/publicdomain/zero/1.0/ */\n\n(function(sco pe) {\n 'use strict';\n\n // feature detect for URL constructor\n var hasWork ingUrl = 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 relative = Object.create(nu ll);\n relative['ftp'] = 21;\n relative['file'] = 0;\n relative['gopher'] = 7 0;\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 relativePathDotMapping['.%2e'] = '. .';\n relativePathDotMapping['%2e.'] = '..';\n relativePathDotMapping['%2e%2e' ] = '..';\n\n function isRelativeScheme(scheme) {\n return relative[scheme] !== undefined;\n }\n\n function invalid() {\n clear.call(this);\n this._ isInvalid = true;\n }\n\n function IDNAToASCII(h) {\n if ('' == h) {\n invalid.call(this)\n }\n // XXX\n return h.toLowerCase()\n }\n\n fun ction percentEscape(c) {\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ? `\n [0x22, 0x23, 0 x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) == -1\n ) {\n return c;\n } \n return encodeURIComponent(c);\n }\n\n function percentEscapeQuery(c) {\n // XXX This actually needs to encode c using encoding and then\n // conve rt the bytes one-by-one.\n\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ` (do not escape '?')\n [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) == -1\n ) {\n re turn 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 f unction parse(input, stateOverride, base) {\n function err(message) {\n errors.push(message)\n }\n\n var state = stateOverride || 'scheme start',\ n cursor = 0,\n buffer = '',\n seenAt = false,\n see nBracket = 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 && ALPHANUMERIC.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._isRelative = true;\n }\n if ('file' == this._scheme) {\n state = 'rela tive';\n } else if (this._isRelative && base && base._scheme == this. _scheme) {\n state = 'relative or authority';\n } else i f (this._isRelative) {\n state = 'authority first slash';\n } else {\n state = 'scheme data';\n }\n } e lse 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 poin t not allowed in scheme: ' + c)\n break loop;\n }\n break;\n\n case 'scheme data':\n if ('?' == c) {\n q uery = '?';\n state = 'query';\n } else if ('#' == c) {\n this._fragment = '#';\n state = 'fragment';\n } els e {\n // XXX error handling\n if (EOF != c && '\\t' != c & & '\\n' != c && '\\r' != c) {\n this._schemeData += percentEscape(c );\n }\n }\n break;\n\n case 'no scheme':\n if (!base || !(isRelativeScheme(base._scheme))) {\n err('Mis sing 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[cur sor+1]) {\n state = 'authority ignore slashes';\n } else {\n err('Expected /, got: ' + c);\n state = 'relative';\n continue\n }\n break;\n\n case 'relative':\n this._isRelative = true;\n if ('file' != this._scheme)\n this._scheme = base._scheme;\n if (EOF == c) {\n this._h ost = 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 = b ase._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 = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._fragment = '#';\n state = 'fragment';\n } else {\n var nextC = input[cursor+1 ]\n var nextNextC = input[cursor+2]\n if (\n 'file' != this._scheme || !ALPHA.test(c) ||\n (nextC != ':' && next C != '|') ||\n (EOF != nextNextC && '/' != nextNextC && '\\\\' != n extNextC && '?' != 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 stat e = 'file host';\n } else {\n state = 'authority ignore slashes';\n }\n } else {\n if ('file' != this._sc heme) {\n this._host = base._host;\n this._port = base ._port;\n }\n state = 'relative path';\n contin ue;\n }\n break;\n\n case 'authority first slash':\n if ('/' == c) {\n state = 'authority second slash';\n } else {\n err(\"Expected '/', got: \" + c);\n state = 'a uthority ignore slashes';\n continue;\n }\n break;\ n\n case 'authority second slash':\n state = 'authority ignore s lashes';\n if ('/' != c) {\n err(\"Expected '/', got: \" + c );\n continue;\n }\n break;\n\n case 'author ity ignore slashes':\n if ('/' != c && '\\\\' != c) {\n stat e = 'authority';\n continue;\n } else {\n err('Ex pected authority, got: ' + c);\n }\n break;\n\n case 'a uthority':\n if ('@' == c) {\n if (seenAt) {\n err('@ already seen.');\n buffer += '%40';\n }\n seenAt = true;\n for (var i = 0; i < buffer.length; i++) {\n var cp = buffer[i];\n if ('\\t' == cp || '\\n' == cp || '\ \r' == cp) {\n err('Invalid whitespace in authority.');\n continue;\n }\n // XXX check URL code points\n if (':' == cp && null === this._password) {\n this. _password = '';\n continue;\n }\n var t empC = percentEscape(cp);\n (null !== this._password) ? this._passw ord += tempC : this._username += tempC;\n }\n buffer = ''; \n } else if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c) {\n cursor -= buffer.length;\n buffer = '';\n state = 'host';\n continue;\n } else {\n buffe r += c;\n }\n break;\n\n case 'file host':\n i f (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c) {\n i f (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ':' || buffer[1] == '|')) {\n state = 'relative path';\n } else if (buff er.length == 0) {\n state = 'relative path start';\n } e lse {\n this._host = IDNAToASCII.call(this, buffer);\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 && !seenBracket) {\n / / XXX host parsing\n this._host = IDNAToASCII.call(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 buffer = '';\n state = 'relative path start';\n if (stateOverride) {\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 seenBra cket = 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 ('' != buffer) {\n var temp = parseInt(buffer, 10);\n if (temp != relative[this._sc heme]) {\n this._port = temp + '';\n }\n buffer = '';\n }\n if (stateOverride) {\n b reak loop;\n }\n state = 'relative path 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 break;\n\n case 'relative path':\n if (EOF == c || '/' == c || '\\\\' == c || (!stateO verride && ('?' == c || '#' == c))) {\n if ('\\\\' == c) {\n err('\\\\ not allowed in relative path.');\n }\n var tmp;\n if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {\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._path.push('');\n } else if ('.' != buffer) {\n if ('file' == this._scheme && t his._path.length == 0 && buffer.length == 2 && ALPHA.test(buffer[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 this._fragment = '#'; \n state = 'fragment';\n }\n } else if ('\\t' ! = c && '\\n' != c && '\\r' != c) {\n buffer += percentEscape(c);\n }\n break;\n\n case 'query':\n if (!stateOverrid e && '#' == c) {\n this._fragment = '#';\n state = 'fragme nt';\n } else if (EOF != c && '\\t' != c && '\\n' != c && '\\r' != c) { \n this._query += percentEscapeQuery(c);\n }\n brea k;\n\n case 'fragment':\n if (EOF != c && '\\t' != c && '\\n' != c && '\\r' != c) {\n this._fragment += c;\n }\n br eak;\n }\n\n cursor++;\n }\n }\n\n function clear() {\n this._ scheme = '';\n this._schemeData = '';\n this._username = '';\n this._pa ssword = 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 parameter.\n function j URL(url, base /* , encoding */) {\n if (base !== undefined && !(base instance of jURL))\n base = new jURL(String(base));\n\n this._url = url;\n cle ar.call(this);\n\n var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f] +$/g, '');\n // encoding = encoding || 'utf-8'\n\n parse.call(this, input, null, base);\n }\n\n jURL.prototype = {\n get href() {\n if (this._is Invalid)\n return this._url;\n\n var authority = '';\n if ('' ! = this._username || null != this._password) {\n authority = this._usernam e +\n (null != this._password ? ':' + this._password : '') + '@';\n }\n\n return this.protocol +\n (this._isRelative ? '//' + auth ority + this.host : '') +\n this.pathname + this._query + this._fragmen t;\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._isInv alid || !this._isRelative)\n return;\n parse.call(this, host, 'host' );\n },\n\n get hostname() {\n return this._host;\n },\n set ho stname(hostname) {\n if (this._isInvalid || !this._isRelative)\n ret urn;\n parse.call(this, hostname, 'hostname');\n },\n\n get port() {\ n return this._port;\n },\n set port(port) {\n if (this._isInval id || !this._isRelative)\n return;\n parse.call(this, port, 'port'); \n },\n\n get pathname() {\n return this._isInvalid ? '' : this._isRe lative ?\n '/' + this._path.join('/') : this._schemeData;\n },\n set pathname(pathname) {\n if (this._isInvalid || !this._isRelative)\n return;\n this._path = [];\n parse.call(this, pathname, 'relative p ath start');\n },\n\n get search() {\n return this._isInvalid || !thi s._query || '?' == this._query ?\n '' : this._query;\n },\n set s earch(search) {\n if (this._isInvalid || !this._isRelative)\n return ;\n this._query = '?';\n if ('?' == search[0])\n search = searc h.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._isI nvalid)\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 * Copyright 2013 The Poly mer Authors. All rights reserved.\n * Use of this source code is governed by a B SD-style\n * license that can be found in the LICENSE file.\n */\n\n(function(sc ope) {\n\n// Old versions of iOS do not have bind.\n\nif (!Function.prototype.bi nd) {\n Function.prototype.bind = function(scope) {\n var self = this;\n var args = Array.prototype.slice.call(arguments, 1);\n return function() {\n var args2 = args.slice();\n args2.push.apply(args2, arguments);\n return self.apply(scope, args2);\n };\n };\n}\n\n// mixin\n\n// copy all pr operties from inProps (et al) to inObj\nfunction mixin(inObj/*, inProps, inMoreP rops, ...*/) {\n var obj = inObj || {};\n for (var i = 1; i < arguments.length ; i++) {\n var p = arguments[i];\n try {\n for (var 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 inTarget object\nfunction copyProperty(inName, inSource, inTarget) {\n var pd = getPropertyDescriptor(in Source, inName);\n Object.defineProperty(inTarget, inName, pd);\n}\n\n// get pr operty descriptor for inName on inObject, even if\n// inName exists on some link in inObject's prototype chain\nfunction getPropertyDescriptor(inObject, inName) {\n if (inObject) {\n var pd = Object.getOwnPropertyDescriptor(inObject, in Name);\n return pd || getPropertyDescriptor(Object.getPrototypeOf(inObject), inName);\n }\n}\n\n// export\n\nscope.mixin = mixin;\n\n})(window.Platform);"," // Copyright 2011 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 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 applicable law or agr eed 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 exp ress or implied.\n// See the License for the specific language governing permiss ions and\n// limitations under the License.\n\n(function(scope) {\n\n 'use stri ct';\n\n // polyfill DOMTokenList\n // * add/remove: allow these methods to ta ke multiple classNames\n // * toggle: add a 2nd argument which forces the given state rather\n // than toggling.\n\n var add = DOMTokenList.prototype.add;\n var remove = DOMTokenList.prototype.remove;\n DOMTokenList.prototype.add = fu nction() {\n for (var i = 0; i < arguments.length; i++) {\n add.call(thi s, arguments[i]);\n }\n };\n DOMTokenList.prototype.remove = function() {\n for (var i = 0; i < arguments.length; i++) {\n remove.call(this, argume nts[i]);\n }\n };\n DOMTokenList.prototype.toggle = function(name, bool) {\ n if (arguments.length == 1) {\n bool = !this.contains(name);\n }\n bool ? this.add(name) : this.remove(name);\n };\n DOMTokenList.prototype.swi tch = function(oldName, newName) {\n oldName && this.remove(oldName);\n ne wName && this.add(newName);\n };\n\n // add array() to NodeList, NamedNodeMap, HTMLCollection\n\n var ArraySlice = function() {\n return Array.prototype.s lice.call(this);\n };\n\n var namedNodeMap = (window.NamedNodeMap || window.Mo zNamedAttrMap || {});\n\n NodeList.prototype.array = ArraySlice;\n namedNodeMa p.prototype.array = ArraySlice;\n HTMLCollection.prototype.array = ArraySlice;\ n\n // polyfill performance.now\n\n if (!window.performance) {\n var start = Date.now();\n // only at millisecond precision\n window.performance = {n ow: function(){ return Date.now() - start }};\n }\n\n // polyfill for requestA nimationFrame\n\n if (!window.requestAnimationFrame) {\n window.requestAnima tionFrame = (function() {\n var nativeRaf = window.webkitRequestAnimationFr ame ||\n window.mozRequestAnimationFrame;\n\n return nativeRaf ?\n function(callback) {\n return nativeRaf(function() {\n callback(performance.now());\n });\n } :\n function( cal lback ){\n return window.setTimeout(callback, 1000 / 60);\n };\n })();\n }\n\n if (!window.cancelAnimationFrame) {\n window.cancelAnimat ionFrame = (function() {\n return window.webkitCancelAnimationFrame ||\n window.mozCancelAnimationFrame ||\n function(id) {\n clear Timeout(id);\n };\n })();\n }\n\n // utility\n\n function createDOM (inTagOrNode, inHTML, inAttrs) {\n var dom = typeof inTagOrNode == 'string' ? \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 // i n a script after the import, 2 occurs before 1. We correct this here\n // by sp ecfiically patching Polymer(); this is not necessary under native\n // HTMLImpo rts.\n var elementDeclarations = [];\n\n var polymerStub = function(name, dict ionary) {\n elementDeclarations.push(arguments);\n }\n window.Polymer = pol ymerStub;\n\n // deliver queued delcarations\n scope.deliverDeclarations = fun ction() {\n scope.deliverDeclarations = function() {\n throw 'Possible at tempt to load Polymer twice';\n };\n return elementDeclarations;\n }\n\n // Once DOMContent has loaded, any main document scripts that depend on\n // P olymer() should have run. Calling Polymer() now is an error until\n // polymer is imported.\n window.addEventListener('DOMContentLoaded', function() {\n if (window.Polymer === polymerStub) {\n window.Polymer = function() {\n console.error('You tried to use polymer without loading it first. To ' +\n 'load polymer, <link rel=\"import\" href=\"' + \n 'components/pol ymer/polymer.html\">');\n };\n }\n });\n\n // exports\n scope.createD OM = createDOM;\n\n})(window.Platform);\n","/*\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\n// poor man's adap ter for template.content on various platform scenarios\nwindow.templateContent = window.templateContent || function(inTemplate) {\n return inTemplate.content;\ n};","(function(scope) {\n \n scope = scope || (window.Inspector = {});\n \n var inspector;\n\n window.sinspect = function(inNode, inProxy) {\n if (!ins pector) {\n inspector = window.open('', 'ShadowDOM Inspector', null, true); \n inspector.document.write(inspectorHTML);\n //inspector.document.clo se();\n inspector.api = {\n shadowize: shadowize\n };\n }\n inspect(inNode || wrap(document.body), inProxy);\n };\n\n var inspectorHTML = [\n '<!DOCTYPE html>',\n '<html>',\n ' <head>',\n ' <title>Sh adowDOM Inspector</title>',\n ' <style>',\n ' body {',\n ' }',\n ' pre {',\n ' font: 9pt \"Courier New\", monospace;',\n ' line-height: 1.5em;',\n ' }',\n ' tag {',\n ' color: purple;',\n ' }',\n ' ul {',\n ' margin: 0;',\n ' padding: 0;',\n ' list-style: none;',\n ' }',\n ' li {',\n ' display: inline-block;',\n ' b ackground-color: #f1f1f1;',\n ' padding: 4px 6px;',\n ' bo rder-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 ' </body>',\n '</h tml>'\n ].join('\\n');\n \n var crumbs = [];\n\n var displayCrumbs = functio n() {\n // alias our document\n var d = inspector.document;\n // get cr umbbar\n var cb = d.querySelector('#crumbs');\n // clear crumbs\n cb.te xtContent = '';\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.textConten t = c.localName;\n a.idx = i;\n a.onclick = function(event) {\n var c;\n while (crumbs.length > this.idx) {\n c = crumbs.pop(); \n }\n inspect(c.shadow || c, c);\n event.preventDefault(); \n };\n cb.appendChild(d.createElement('li')).appendChild(a);\n }\n };\n\n var inspect = function(inNode, inProxy) {\n // alias our document\n var d = inspector.document;\n // reset list of drillable nodes\n drill able = [];\n // memoize our crumb proxy\n var proxy = inProxy || inNode;\n crumbs.push(proxy);\n // update crumbs\n displayCrumbs();\n // refl ect local tree\n d.body.querySelector('#tree').innerHTML =\n '<pre>' + output(inNode, inNode.childNodes) + '</pre>';\n };\n\n var forEach = Array.pr ototype.forEach.call.bind(Array.prototype.forEach);\n\n var blacklisted = {STYL E:1, SCRIPT:1, \"#comment\": 1, TEMPLATE: 1};\n var blacklist = function(inNode ) {\n return blacklisted[inNode.nodeName];\n };\n\n var output = function(i nNode, inChildNodes, inIndent) {\n if (blacklist(inNode)) {\n return ''; \n }\n var indent = inIndent || '';\n if (inNode.localName || inNode.no deType == 11) {\n var name = inNode.localName || 'shadow-root';\n //in ChildNodes = ShadowDOM.localNodes(inNode);\n var info = indent + describe(i nNode);\n // if only textNodes\n // TODO(sjmiles): make correct for Sh adowDOM\n /*if (!inNode.children.length && inNode.localName !== 'content' & & inNode.localName !== 'shadow') {\n info += catTextContent(inChildNodes) ;\n } else*/ {\n // TODO(sjmiles): native <shadow> has no reference to its projection\n if (name == 'content' /*|| name == 'shadow'*/) {\n inChildNodes = inNode.getDistributedNodes();\n }\n info += '<br/>';\n var ind = indent + '&nbsp;&nbsp;';\n forEach(inChildNod es, function(n) {\n info += output(n, n.childNodes, ind);\n });\ n info += indent;\n }\n if (!({br:1}[name])) {\n info += '<tag>&lt;/' + name + '&gt;</tag>';\n info += '<br/>';\n }\n } e lse {\n var text = inNode.textContent.trim();\n info = text ? indent + '\"' + text + '\"' + '<br/>' : '';\n }\n return info;\n };\n\n var catT extContent = function(inChildNodes) {\n var info = '';\n forEach(inChildNo des, function(n) {\n info += n.textContent.trim();\n });\n return inf o;\n };\n\n var drillable = [];\n\n var describe = function(inNode) {\n va r tag = '<tag>' + '&lt;';\n var name = inNode.localName || 'shadow-root';\n if (inNode.webkitShadowRoot || inNode.shadowRoot) {\n tag += ' <button id x=\"' + 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(inNod e.attributes, function(a) {\n tag += ' ' + a.name + (a.value ? '=\"' + a. value + '\"' : '');\n });\n }\n tag += '&gt;'+ '</tag>';\n return tag;\n };\n\n // remote api\n\n shadowize = function() {\n var idx = Numbe r(this.attributes.idx.value);\n //alert(idx);\n var node = drillable[idx]; \n if (node) {\n inspect(node.webkitShadowRoot || node.shadowRoot, node) \n } else {\n console.log(\"bad shadowize node\");\n console.dir(th is);\n }\n };\n \n // export\n \n scope.output = output;\n \n})(window. Inspector);\n\n\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(function(scope) {\n\n // TODO(sorvell): It 's desireable to provide a default stylesheet \n // that's convenient for styli ng unresolved elements, but\n // it's cumbersome to have to include this manual ly in every page.\n // It would make sense to put inside some HTMLImport but \n // the HTMLImports polyfill does not allow loading of stylesheets \n // that block rendering. Therefore this injection is tolerated here.\n\n var style = do cument.createElement('style');\n style.textContent = ''\n + 'body {'\n + 'transition: opacity ease-in 0.2s;' \n + ' } \\n'\n + 'body[unreso lved] {'\n + 'opacity: 0; display: block; overflow: hidden;' \n + ' } \\n'\n ;\n var head = document.querySelector('head');\n head.insertBefore (style, head.firstChild);\n\n})(Platform);\n","(function(scope) {\n\n function withDependencies(task, depends) {\n depends = depends || [];\n if (!depend s.map) {\n depends = [depends];\n }\n return task.apply(this, depends .map(marshal));\n }\n\n function module(name, dependsOrFactory, moduleFactory) {\n var module;\n switch (arguments.length) {\n case 0:\n ret urn;\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 ret urn modules[name];\n }\n\n var modules = {};\n\n function using(depends, task ) {\n HTMLImports.whenImportsReady(function() {\n withDependencies(task, depends);\n });\n };\n\n // exports\n\n scope.marshal = marshal;\n scope .module = module;\n scope.using = using;\n\n})(window);","/*\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(func tion(scope) {\n\nvar iterations = 0;\nvar callbacks = [];\nvar twiddle = documen t.createTextNode('');\n\nfunction endOfMicrotask(callback) {\n twiddle.textCont ent = iterations++;\n callbacks.push(callback);\n}\n\nfunction atEndOfMicrotask () {\n while (callbacks.length) {\n callbacks.shift()();\n }\n}\n\nnew (win dow.MutationObserver || JsMutationObserver)(atEndOfMicrotask)\n .observe(twiddl e, {characterData: true})\n ;\n\n// exports\n\nscope.endOfMicrotask = endOfMicr otask;\n\n})(Platform);\n\n","/*\n * Copyright 2013 The Polymer Authors. All rig hts 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 urlRes olver = {\n resolveDom: function(root, url) {\n url = url || root.ownerDocum ent.baseURI;\n this.resolveAttributes(root, url);\n this.resolveStyles(roo t, url);\n // handle template.content\n var templates = root.querySelector All('template');\n if (templates) {\n for (var i = 0, l = templates.leng th, t; (i < l) && (t = templates[i]); i++) {\n if (t.content) {\n this.resolveDom(t.content, url);\n }\n }\n }\n },\n resolveTe mplate: function(template) {\n this.resolveDom(template.content, template.own erDocument.baseURI);\n },\n resolveStyles: function(root, url) {\n var styl es = root.querySelectorAll('style');\n if (styles) {\n for (var i = 0, l = styles.length, s; (i < l) && (s = styles[i]); i++) {\n this.resolveSty le(s, url);\n }\n }\n },\n resolveStyle: function(style, url) {\n u rl = url || style.ownerDocument.baseURI;\n style.textContent = this.resolveCs sText(style.textContent, url);\n },\n resolveCssText: function(cssText, baseUr l) {\n cssText = replaceUrlsInCssText(cssText, baseUrl, CSS_URL_REGEXP);\n return replaceUrlsInCssText(cssText, baseUrl, CSS_IMPORT_REGEXP);\n },\n reso lveAttributes: function(root, url) {\n if (root.hasAttributes && root.hasAttr ibutes()) {\n this.resolveElementAttributes(root, url);\n }\n // sear ch 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 = nodes[i]); i++) {\n this.resolveElementAttributes(n, u rl);\n }\n }\n },\n resolveElementAttributes: function(node, url) {\n url = url || node.ownerDocument.baseURI;\n URL_ATTRS.forEach(function(v) { \n var attr = node.attributes[v];\n if (attr && attr.value &&\n (attr.value.search(URL_TEMPLATE_SEARCH) < 0)) {\n var urlPath = resolve RelativeUrl(url, attr.value);\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', 'acti on'];\nvar URL_ATTRS_SELECTOR = '[' + URL_ATTRS.join('],[') + ']';\nvar URL_TEMP LATE_SEARCH = '{{.*}}';\n\nfunction replaceUrlsInCssText(cssText, baseUrl, regex p) {\n return cssText.replace(regexp, function(m, pre, url, post) {\n var ur lPath = url.replace(/[\"']/g, '');\n urlPath = resolveRelativeUrl(baseUrl, ur lPath);\n return pre + '\\'' + urlPath + '\\'' + post;\n });\n}\n\nfunction resolveRelativeUrl(baseUrl, url) {\n var u = new URL(url, baseUrl);\n return m akeDocumentRelPath(u.href);\n}\n\nfunction makeDocumentRelPath(url) {\n var roo t = document.baseURI;\n var u = new URL(url, root);\n if (u.host === root.host && u.port === root.port &&\n u.protocol === root.protocol) {\n return m akeRelPath(root.pathname, u.pathname);\n } else {\n return url;\n }\n}\n\n/ / make a relative path from source to target\nfunction makeRelPath(source, targe t) {\n var s = source.split('/');\n var t = target.split('/');\n while (s.len gth && 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\nscope.urlResolver = urlResolver;\n\n})(Platform);\n","/*\n * Copyright 2012 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 fi le.\n */\n\n(function(global) {\n\n var registrationsTable = new WeakMap();\n\n // We use setImmediate or postMessage for our future callback.\n var setImmed iate = window.msSetImmediate;\n\n // Use post message to emulate setImmediate.\ n if (!setImmediate) {\n var setImmediateQueue = [];\n var sentinel = Str ing(Math.random());\n window.addEventListener('message', function(e) {\n if (e.data === sentinel) {\n var queue = setImmediateQueue;\n set ImmediateQueue = [];\n queue.forEach(function(func) {\n func();\ n });\n }\n });\n setImmediate = function(func) {\n setIm mediateQueue.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 = false;\n\n // Keep track of observers that needs to be noti fied next time.\n var scheduledObservers = [];\n\n /**\n * Schedules |dispat chCallback| to be called in the future.\n * @param {MutationObserver} observer \n */\n function scheduleCallback(observer) {\n scheduledObservers.push(ob server);\n if (!isScheduled) {\n isScheduled = true;\n setImmediate (dispatchCallbacks);\n }\n }\n\n function wrapIfNeeded(node) {\n return window.ShadowDOMPolyfill &&\n window.ShadowDOMPolyfill.wrapIfNeeded(node) ||\n node;\n }\n\n function dispatchCallbacks() {\n // http://dom.s pec.whatwg.org/#mutation-observers\n\n isScheduled = false; // Used to allow a new setImmediate call above.\n\n var observers = scheduledObservers;\n s cheduledObservers = [];\n // Sort observers based on their creation UID (incr emental).\n observers.sort(function(o1, o2) {\n return o1.uid_ - o2.uid_ ;\n });\n\n var anyNonEmpty = false;\n observers.forEach(function(obser ver) {\n\n // 2.1, 2.2\n var queue = observer.takeRecords();\n // 2.3. Remove all transient registered observers whose observer is mo.\n rem oveTransientObserversFor(observer);\n\n // 2.4\n if (queue.length) {\n observer.callback_(queue, observer);\n anyNonEmpty = true;\n }\n });\n\n // 3.\n if (anyNonEmpty)\n dispatchCallbacks();\n }\ n\n function removeTransientObserversFor(observer) {\n observer.nodes_.forEa ch(function(node) {\n var registrations = registrationsTable.get(node);\n if (!registrations)\n return;\n registrations.forEach(function(r egistration) {\n if (registration.observer === observer)\n regis tration.removeTransientObservers();\n });\n });\n }\n\n /**\n * This function is used for the \"For each registered observer observer (with\n * ob server's options as options) in target's list of registered observers,\n * run these substeps:\" and the \"For each ancestor ancestor of target, and for\n * each registered observer observer (with options options) in ancestor's list\n * of registered observers, run these substeps:\" part of the algorithms. The\n * |options.subtree| is checked to ensure that the callback is called\n * cor rectly.\n *\n * @param {Node} target\n * @param {function(MutationObserver Init):MutationRecord} callback\n */\n function forEachAncestorAndObserverEnqu eueRecord(target, callback) {\n for (var node = target; node; node = node.par entNode) {\n var registrations = registrationsTable.get(node);\n\n if (registrations) {\n for (var j = 0; j < registrations.length; j++) {\n var registration = registrations[j];\n var options = registratio n.options;\n\n // Only target ignores subtree.\n if (node !== target && !options.subtree)\n continue;\n\n var record = cal lback(options);\n if (record)\n registration.enqueue(record) ;\n }\n }\n }\n }\n\n var uidCounter = 0;\n\n /**\n * The cl ass that maps to the DOM MutationObserver interface.\n * @param {Function} cal lback.\n * @constructor\n */\n function JsMutationObserver(callback) {\n this.callback_ = callback;\n this.nodes_ = [];\n this.records_ = [];\n this.uid_ = ++uidCounter;\n }\n\n JsMutationObserver.prototype = {\n obser ve: function(target, options) {\n target = wrapIfNeeded(target);\n\n / / 1.1\n if (!options.childList && !options.attributes && !options.character Data ||\n\n // 1.2\n options.attributeOldValue && !options.att ributes ||\n\n // 1.3\n options.attributeFilter && options.att ributeFilter.length &&\n !options.attributes ||\n\n // 1.4 \n options.characterDataOldValue && !options.characterData) {\n\n throw new SyntaxError();\n }\n\n var registrations = registrationsTa ble.get(target);\n if (!registrations)\n registrationsTable.set(targ et, registrations = []);\n\n // 2\n // If target's list of registered observers already includes a registered\n // observer associated with the c ontext object, replace that registered\n // observer's options with options .\n var registration;\n for (var i = 0; i < registrations.length; i++) {\n if (registrations[i].observer === this) {\n registration = registrations[i];\n registration.removeListeners();\n registra tion.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 add target to context object's list of nodes on which it\n // is registered.\n if (!registration) {\n registration = new R egistration(this, target, options);\n registrations.push(registration);\n this.nodes_.push(target);\n }\n\n registration.addListeners(); \n },\n\n disconnect: function() {\n this.nodes_.forEach(function(nod e) {\n var registrations = registrationsTable.get(node);\n for (va r i = 0; i < registrations.length; i++) {\n var registration = registra tions[i];\n if (registration.observer === this) {\n registra tion.removeListeners();\n registrations.splice(i, 1);\n // Each node can only have one registered observer associated with\n // this observer.\n break;\n }\n }\n }, this);\n this.records_ = [];\n },\n\n takeRecords: function() {\n var copy OfRecords = this.records_;\n this.records_ = [];\n return copyOfRecord s;\n }\n };\n\n /**\n * @param {string} type\n * @param {Node} target\n * @constructor\n */\n function MutationRecord(type, target) {\n this.ty pe = type;\n this.target = target;\n this.addedNodes = [];\n this.remov edNodes = [];\n this.previousSibling = null;\n this.nextSibling = null;\n this.attributeName = null;\n this.attributeNamespace = null;\n this.old Value = null;\n }\n\n function copyMutationRecord(original) {\n var record = new MutationRecord(original.type, original.target);\n record.addedNodes = o riginal.addedNodes.slice();\n record.removedNodes = original.removedNodes.sli ce();\n record.previousSibling = original.previousSibling;\n record.nextSi bling = original.nextSibling;\n record.attributeName = original.attributeName ;\n record.attributeNamespace = original.attributeNamespace;\n record.oldV alue = original.oldValue;\n return record;\n };\n\n // We keep track of the two (possibly one) records used in a single mutation.\n var currentRecord, rec ordWithOldValue;\n\n /**\n * Creates a record without |oldValue| and caches i t as |currentRecord| for\n * later use.\n * @param {string} oldValue\n * @ return {MutationRecord}\n */\n function getRecord(type, target) {\n return currentRecord = new MutationRecord(type, target);\n }\n\n /**\n * Gets or c reates a record with |oldValue| based in the |currentRecord|\n * @param {strin g} oldValue\n * @return {MutationRecord}\n */\n function getRecordWithOldVa lue(oldValue) {\n if (recordWithOldValue)\n return recordWithOldValue;\n recordWithOldValue = copyMutationRecord(currentRecord);\n recordWithOldVa lue.oldValue = oldValue;\n return recordWithOldValue;\n }\n\n function clea rRecords() {\n currentRecord = recordWithOldValue = undefined;\n }\n\n /**\ n * @param {MutationRecord} record\n * @return {boolean} Whether the record represents a record from the current\n * mutation event.\n */\n function re cordRepresentsCurrentMutation(record) {\n return record === recordWithOldValu e || record === currentRecord;\n }\n\n /**\n * Selects which record, if any, to replace the last record in the queue.\n * This returns |null| if no record should be replaced.\n *\n * @param {MutationRecord} lastRecord\n * @param {MutationRecord} newRecord\n * @param {MutationRecord}\n */\n function sel ectRecord(lastRecord, newRecord) {\n if (lastRecord === newRecord)\n ret urn lastRecord;\n\n // Check if the the record we are adding represents the s ame record. If\n // so, we keep the one with the oldValue in it.\n if (rec ordWithOldValue && recordRepresentsCurrentMutation(lastRecord))\n return re cordWithOldValue;\n\n return null;\n }\n\n /**\n * Class used to represen t a registered observer.\n * @param {MutationObserver} observer\n * @param { Node} target\n * @param {MutationObserverInit} options\n * @constructor\n */\n function Registration(observer, target, options) {\n this.observer = ob server;\n this.target = target;\n this.options = options;\n this.transi entObservedNodes = [];\n }\n\n Registration.prototype = {\n enqueue: functi on(record) {\n var records = this.observer.records_;\n var length = re cords.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 i f (records.length > 0) {\n var lastRecord = records[length - 1];\n var recordToReplaceLast = selectRecord(lastRecord, record);\n if (record ToReplaceLast) {\n records[length - 1] = recordToReplaceLast;\n return;\n }\n } else {\n scheduleCallback(this.observer);\n }\n\n records[length] = record;\n },\n\n addListeners: function () {\n this.addListeners_(this.target);\n },\n\n addListeners_: funct ion(node) {\n var options = this.options;\n if (options.attributes)\n node.addEventListener('DOMAttrModified', this, true);\n\n if (option s.characterData)\n node.addEventListener('DOMCharacterDataModified', this , true);\n\n if (options.childList)\n node.addEventListener('DOMNode Inserted', this, true);\n\n if (options.childList || options.subtree)\n node.addEventListener('DOMNodeRemoved', this, true);\n },\n\n removeLi steners: function() {\n this.removeListeners_(this.target);\n },\n\n removeListeners_: function(node) {\n var options = this.options;\n if (options.attributes)\n node.removeEventListener('DOMAttrModified', this, true);\n\n if (options.characterData)\n node.removeEventListener('DO MCharacterDataModified', this, true);\n\n if (options.childList)\n n ode.removeEventListener('DOMNodeInserted', this, true);\n\n if (options.chi ldList || options.subtree)\n node.removeEventListener('DOMNodeRemoved', t his, true);\n },\n\n /**\n * Adds a transient observer on node. The tr ansient 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.addListeners_(node);\n this.transie ntObservedNodes.push(node);\n var registrations = registrationsTable.get(no de);\n if (!registrations)\n registrationsTable.set(node, registrati ons = []);\n\n // We know that registrations does not contain this because we already\n // checked if node === this.target.\n registrations.push( this);\n },\n\n removeTransientObservers: function() {\n var transien tObservedNodes = this.transientObservedNodes;\n this.transientObservedNodes = [];\n\n transientObservedNodes.forEach(function(node) {\n // Tran sient observers are never added to the target.\n this.removeListeners_(no de);\n\n var registrations = registrationsTable.get(node);\n for ( var i = 0; i < registrations.length; i++) {\n if (registrations[i] === this) {\n registrations.splice(i, 1);\n // Each node can o nly have one registered observer associated with\n // this observer.\ n break;\n }\n }\n }, this);\n },\n\n hand leEvent: function(e) {\n // Stop propagation since we are managing the prop agation manually.\n // This means that other mutation events on the page wi ll not work\n // correctly but that is by design.\n e.stopImmediatePro pagation();\n\n switch (e.type) {\n case 'DOMAttrModified':\n // http://dom.spec.whatwg.org/#concept-mo-queue-attributes\n\n var n ame = e.attrName;\n var namespace = e.relatedNode.namespaceURI;\n var target = e.target;\n\n // 1.\n var record = new getRec ord('attributes', target);\n record.attributeName = name;\n re cord.attributeNamespace = namespace;\n\n // 2.\n var oldValue =\n e.attrChange === MutationEvent.ADDITION ? null : e.prevValue;\n \n forEachAncestorAndObserverEnqueueRecord(target, function(options) {\ n // 3.1, 4.2\n if (!options.attributes)\n re turn;\n\n // 3.2, 4.3\n if (options.attributeFilter && opt ions.attributeFilter.length &&\n options.attributeFilter.indexOf( name) === -1 &&\n options.attributeFilter.indexOf(namespace) === -1) {\n return;\n }\n // 3.3, 4.4\n if (options.attributeOldValue)\n return getRecordWithOldValue(old Value);\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', t arget);\n\n // 2.\n var oldValue = e.prevValue;\n\n\n forEachAncestorAndObserverEnqueueRecord(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 getRecordWithOldValue(oldValue);\n\n // 3.3, 4.4\n return record;\n });\n\n break;\n\n case 'DOMNo deRemoved':\n this.addTransientObserver(e.target);\n // Fall t hrough.\n case 'DOMNodeInserted':\n // http://dom.spec.whatwg.or g/#concept-mo-queue-childlist\n var target = e.relatedNode;\n var changedNode = e.target;\n var addedNodes, removedNodes;\n if (e.type === 'DOMNodeInserted') {\n addedNodes = [changedNode];\n removedNodes = [];\n } else {\n\n addedNodes = []; \n removedNodes = [changedNode];\n }\n var previous Sibling = changedNode.previousSibling;\n var nextSibling = changedNode. nextSibling;\n\n // 1.\n var record = getRecord('childList', t arget);\n record.addedNodes = addedNodes;\n record.removedNode s = removedNodes;\n record.previousSibling = previousSibling;\n record.nextSibling = nextSibling;\n\n forEachAncestorAndObserverEnque ueRecord(target, function(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.JsMutationObserver = JsMutationObserver;\n\n if (!global.MutationO bserver)\n global.MutationObserver = JsMutationObserver;\n\n\n})(this);\n","/ *\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this s ource code is governed by a BSD-style\n * license that can be found in the LICEN SE file.\n */\nwindow.HTMLImports = window.HTMLImports || {flags:{}};","/*\n * C opyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source c ode is governed by a BSD-style\n * license that can be found in the LICENSE file .\n */\n\n(function(scope) {\n\n // imports\n var path = scope.path;\n var xh r = scope.xhr;\n var flags = scope.flags;\n\n // TODO(sorvell): this loader su pports a dynamic list of urls\n // and an oncomplete callback that is called wh en the loader is done.\n // The polyfill currently does *not* need this dynamis m or the onComplete\n // concept. Because of this, the loader could be simplifi ed quite a bit.\n var Loader = function(onLoad, onComplete) {\n this.cache = {};\n this.onload = onLoad;\n this.oncomplete = onComplete;\n this.inf light = 0;\n this.pending = {};\n };\n\n Loader.prototype = {\n addNodes : function(nodes) {\n // number of transactions to complete\n this.inf light += nodes.length;\n // commence transactions\n for (var i=0, l=no des.length, n; (i<l) && (n=nodes[i]); i++) {\n this.require(n);\n }\ n // anything to do?\n this.checkDone();\n },\n addNode: functio n(node) {\n // number of transactions to complete\n this.inflight++;\n // commence transactions\n this.require(node);\n // anything to do?\n this.checkDone();\n },\n require: function(elt) {\n var ur l = elt.src || elt.href;\n // ensure we have a standard url that can be use d\n // reliably for deduping.\n // TODO(sjmiles): ad-hoc\n elt.__ nodeUrl = url;\n // deduplication\n if (!this.dedupe(url, elt)) {\n // fetch this resource\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 i f (this.cache[url]) {\n this.onload(url, elt, this.cache[url]);\n // finished this transaction\n this.tail();\n // don't need fetch\ n return true;\n }\n // first node waiting for inUrl\n thi s.pending[url] = [elt];\n // need fetch (not a dupe)\n return false;\n },\n fetch: function(url, elt) {\n flags.load && console.log('fetch' , url, elt);\n if (url.match(/^data:/)) {\n // Handle Data URI Schem e\n var pieces = url.split(',');\n var header = pieces[0];\n var body = pieces[1];\n if(header.indexOf(';base64') > -1) {\n body = atob(body);\n } else {\n body = decodeURIComponent(body) ;\n }\n setTimeout(function() {\n this.receive(url, elt , null, body);\n }.bind(this), 0);\n } else {\n var receiveXh r = function(err, resource) {\n this.receive(url, elt, err, resource);\ n }.bind(this);\n xhr.load(url, receiveXhr);\n // TODO(sorv ell): blocked on)\n // https://code.google.com/p/chromium/issues/detail?i d=257221\n // xhr'ing for a document makes scripts in imports runnable; o therwise\n // they are not; however, it requires that we have doctype=htm l 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, receiveXhr);\n }\n */\n }\n },\n receive: function(url, elt, err, resource) {\n this.cache[url] = resource;\n v ar $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.oncomp lete();\n }\n }\n };\n\n xhr = xhr || {\n async: true,\n ok: fun ction(request) {\n return (request.status >= 200 && request.status < 300)\n || (request.status === 304)\n || (request.status === 0);\n },\n load: function(url, next, nextContext) {\n var request = new XMLHt tpRequest();\n if (scope.flags.debug || scope.flags.bust) {\n url += '?' + Math.random();\n }\n request.open('GET', url, xhr.async);\n request.addEventListener('readystatechange', function(e) {\n if (reques t.readyState === 4) {\n next.call(nextContext, !xhr.ok(request) && requ est,\n request.response || request.responseText, url);\n }\n });\n request.send();\n return request;\n },\n loadDocumen t: function(url, next, nextContext) {\n this.load(url, next, nextContext).r esponseType = 'document';\n }\n };\n\n // exports\n scope.xhr = xhr;\n sc ope.Loader = Loader;\n\n})(window.HTMLImports);\n","/*\n * Copyright 2013 The Po lymer 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\nvar IMPORT_LINK_TYPE = 'import';\nvar flags = scope.flags;\nvar isIe = /Trident/.test(navigator.userAgent);\n// TODO(sorvell): SD polyfill intrusion \nvar mainDoc = window.ShadowDOMPolyfill ? \n window.ShadowDOMPolyfill.wrapIf Needed(document) : document;\n\n// importParser\n// highlander object to manage parsing of imports\n// parses import related elements\n// and ensures proper par se order\n// parse order is enforced by crawling the tree and monitoring which e lements\n// have been parsed; async parsing is also supported.\n\n// highlander object for parsing a document tree\nvar importParser = {\n // parse selectors f or main document elements\n documentSelectors: 'link[rel=' + IMPORT_LINK_TYPE + ']',\n // parse selectors for import document elements\n importsSelectors: [\ n 'link[rel=' + IMPORT_LINK_TYPE + ']',\n 'link[rel=stylesheet]',\n 'st yle',\n 'script:not([type])',\n 'script[type=\"text/javascript\"]'\n ].jo in(','),\n map: {\n link: 'parseLink',\n script: 'parseScript',\n styl e: 'parseStyle'\n },\n // try to parse the next import in the tree\n parseNex t: function() {\n var next = this.nextToParse();\n if (next) {\n this .parse(next);\n }\n },\n parse: function(elt) {\n if (this.isParsed(elt) ) {\n flags.parse && console.log('[%s] is already parsed', elt.localName);\ n return;\n }\n var fn = this[this.map[elt.localName]];\n if (fn) {\n this.markParsing(elt);\n fn.call(this, elt);\n }\n },\n // on ly 1 element may be parsed at a time; parsing is async so, each\n // parsing im plementation must inform the system that parsing is complete\n // via markParsi ngComplete.\n markParsing: function(elt) {\n flags.parse && console.log('par sing', elt);\n this.parsingElement = elt;\n },\n markParsingComplete: funct ion(elt) {\n elt.__importParsed = true;\n if (elt.__importElement) {\n elt.__importElement.__importParsed = true;\n }\n this.parsingElement = n ull;\n flags.parse && console.log('completed', elt);\n this.parseNext();\n },\n parseImport: function(elt) {\n elt.import.__importParsed = true;\n // TODO(sorvell): consider if there's a better way to do this;\n // expose a n imports parsing hook; this is needed, for example, by the\n // CustomElemen ts polyfill.\n if (HTMLImports.__importsParsingHook) {\n HTMLImports.__i mportsParsingHook(elt);\n }\n // fire load event\n if (elt.__resource) {\n elt.dispatchEvent(new CustomEvent('load', {bubbles: false})); \n } else {\n elt.dispatchEvent(new CustomEvent('error', {bubbles: false}));\n }\n // TODO(sorvell): workaround for Safari addEventListener not working\ n // for elements not in the main document.\n if (elt.__pending) {\n var fn;\n while (elt.__pending.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.parseG eneric(linkElt);\n }\n },\n parseStyle: function(elt) {\n // TODO(sorvel l): style element load event can just not fire so clone styles\n var src = el t;\n elt = cloneStyle(elt);\n elt.__importElement = src;\n this.parseGe neric(elt);\n },\n parseGeneric: function(elt) {\n this.trackElement(elt);\ n document.head.appendChild(elt);\n },\n // tracks when a loadable element has loaded\n trackElement: function(elt, callback) {\n var self = this;\n var done = function(e) {\n if (callback) {\n callback(e);\n }\ n self.markParsingComplete(elt);\n };\n elt.addEventListener('load', done);\n elt.addEventListener('error', done);\n\n // NOTE: IE does not fir e \"load\" event for styles that have already loaded\n // This is in violatio n of the spec, so we try our hardest to work around it\n if (isIe && elt.loca lName === 'style') {\n var fakeLoad = false;\n // If there's not @impo rt in the textContent, assume it has loaded\n if (elt.textContent.indexOf(' @import') == -1) {\n fakeLoad = true;\n // if we have a sheet, we ha ve been parsed\n } else if (elt.sheet) {\n fakeLoad = true;\n var csr = elt.sheet.cssRules;\n var len = csr ? csr.length : 0;\n // search the rules 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 @import has resolved, fake the load\n fakeLoad = fakeLoad && Boolean(r.styleSheet);\n }\n }\n }\n // dispatch a fake load event and continue parsing\n if (fakeLoad) {\n elt.dispatc hEvent(new CustomEvent('load', {bubbles: false}));\n }\n }\n },\n // N OTE: execute scripts by injecting them and watching for the load/error\n // eve nt. Inline scripts are handled via dataURL's because browsers tend to\n // prov ide correct parsing errors in this case. If this has any compatibility\n // iss ues, we can switch to injecting the inline script with textContent.\n // Script s with dataURL's do not appear to generate load events and therefore\n // we as sume they execute synchronously.\n parseScript: function(scriptElt) {\n var script = document.createElement('script');\n script.__importElement = scriptE lt;\n script.src = scriptElt.src ? scriptElt.src : \n generateScriptDa taUrl(scriptElt);\n scope.currentScript = scriptElt;\n this.trackElement(s cript, function(e) {\n script.parentNode.removeChild(script);\n scope. currentScript = null; \n });\n document.head.appendChild(script);\n },\n // determine the next element in the tree which should be parsed\n nextToPars e: function() {\n return !this.parsingElement && this.nextToParseInDoc(mainDo c);\n },\n nextToParseInDoc: function(doc, link) {\n var nodes = doc.queryS electorAll(this.parseSelectorsForNode(doc));\n for (var i=0, l=nodes.length, p=0, n; (i<l) && (n=nodes[i]); i++) {\n if (!this.isParsed(n)) {\n i f (this.hasResource(n)) {\n return nodeIsImport(n) ? this.nextToParseIn Doc(n.import, n) : n;\n } else {\n return;\n }\n }\n }\n // all nodes have been parsed, ready to parse import, if any\n ret urn 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.documentSelectors : this.importsSelecto rs;\n },\n isParsed: function(node) {\n return node.__importParsed;\n },\n hasResource: function(node) {\n if (nodeIsImport(node) && !node.import) {\n return false;\n }\n return true;\n }\n};\n\nfunction nodeIsImport(e lt) {\n return (elt.localName === 'link') && (elt.rel === IMPORT_LINK_TYPE);\n} \n\nfunction generateScriptDataUrl(script) {\n var scriptContent = generateScri ptContent(script), b64;\n try {\n b64 = btoa(scriptContent);\n } catch(e) { \n b64 = btoa(unescape(encodeURIComponent(scriptContent)));\n console.warn ('Script contained non-latin characters that were forced ' +\n 'to latin. S ome characters may be wrong.', script);\n }\n return 'data:text/javascript;bas e64,' + b64;\n}\n\nfunction generateScriptContent(script) {\n return script.tex tContent + generateSourceMapHint(script);\n}\n\n// calculate source map hint\nfu nction generateSourceMapHint(script) {\n var moniker = script.__nodeUrl;\n if (!moniker) {\n moniker = script.ownerDocument.baseURI;\n // there could be more than one script this url\n var tag = '[' + Math.floor((Math.random()+1) *1000) + ']';\n // TODO(sjmiles): Polymer hack, should be pluggable if we nee d to allow \n // this sort of thing\n var matches = script.textContent.mat ch(/Polymer\\(['\"]([^'\"]*)/);\n tag = matches && matches[1] || tag;\n // tag the moniker\n moniker += '/' + tag + '.js';\n }\n return '\\n//# sourc eURL=' + moniker + '\\n';\n}\n\n// style/stylesheet handling\n\n// clone style w ith proper path resolution for main document\n// NOTE: styles are the only eleme nts that require direct path fixup.\nfunction cloneStyle(style) {\n var clone = style.ownerDocument.createElement('style');\n clone.textContent = style.textCo ntent;\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 fi xup url's in url() and @import.\nvar CSS_URL_REGEXP = /(url\\()([^)]*)(\\))/g;\n var CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url\\())([^;]*)(;)/g;\n\nvar path = {\ n resolveUrlsInStyle: function(style) {\n var doc = style.ownerDocument;\n var resolver = doc.createElement('a');\n style.textContent = this.resolveUr lsInCssText(style.textContent, resolver);\n return style; \n },\n resolveU rlsInCssText: function(cssText, urlObj) {\n var r = this.replaceUrls(cssText, urlObj, CSS_URL_REGEXP);\n r = this.replaceUrls(r, urlObj, CSS_IMPORT_REGEXP );\n return r;\n },\n replaceUrls: function(text, urlObj, regexp) {\n re turn text.replace(regexp, function(m, pre, url, post) {\n var urlPath = url .replace(/[\"']/g, '');\n urlObj.href = urlPath;\n urlPath = urlObj.hr ef;\n return pre + '\\'' + urlPath + '\\'' + post;\n }); \n }\n}\n\n // exports\nscope.parser = importParser;\nscope.path = path;\nscope.isIE = isIe; \n\n})(HTMLImports);\n","/*\n * Copyright 2013 The Polymer Authors. All rights r eserved.\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// TODO(sorvell): SD p olyfill intrusion\nvar mainDoc = window.ShadowDOMPolyfill ? \n ShadowDOMPolyf ill.wrapIfNeeded(document) : document;\n\nif (!useNative) {\n\n // imports\n v ar xhr = scope.xhr;\n var Loader = scope.Loader;\n var parser = scope.parser;\ n\n // importer\n // highlander object to manage loading of imports\n\n // fo r any document, importer:\n // - loads any linked import documents (with dedupi ng)\n\n var importer = {\n documents: {},\n // nodes to load in the mian document\n documentPreloadSelectors: 'link[rel=' + IMPORT_LINK_TYPE + ']',\n // nodes to load in imports\n importsPreloadSelectors: [\n 'link[rel= ' + IMPORT_LINK_TYPE + ']'\n ].join(','),\n loadNode: function(node) {\n importLoader.addNode(node);\n },\n // load all loadable elements withi n the parent element\n loadSubtree: function(parent) {\n var nodes = thi s.marshalNodes(parent);\n // add these nodes to loader's queue\n impor tLoader.addNodes(nodes);\n },\n marshalNodes: function(parent) {\n // all preloadable nodes in inDocument\n return parent.querySelectorAll(this. loadSelectorsForNode(parent));\n },\n // find the proper set of load selec tors for a given node\n loadSelectorsForNode: function(node) {\n var doc = node.ownerDocument || node;\n return doc === mainDoc ? this.documentPrel oadSelectors :\n this.importsPreloadSelectors;\n },\n loaded: fun ction(url, elt, resource) {\n flags.load && console.log('loaded', url, elt) ;\n // store generic resource\n // TODO(sorvell): fails for nodes insi de <template>.content\n // see https://code.google.com/p/chromium/issues/de tail?id=249381.\n elt.__resource = resource;\n if (isDocumentLink(elt) ) {\n var doc = this.documents[url];\n // if we've never seen a do cument at this url\n if (!doc) {\n // generate an HTMLDocument f rom data\n doc = makeDocument(resource, url);\n doc.__importLi nk = elt;\n // TODO(sorvell): we cannot use MO to detect parsed nodes b ecause\n // SD polyfill does not report these as mutations.\n this.bootDocument(doc);\n // cache document\n this.documents[u rl] = doc;\n }\n // don't store import record until we're actually loaded\n // store document resource\n elt.import = doc;\n }\ n parser.parseNext();\n },\n bootDocument: function(doc) {\n thi s.loadSubtree(doc);\n this.observe(doc);\n parser.parseNext();\n }, \n loadedAll: function() {\n parser.parseNext();\n }\n };\n\n // lo ader 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 instanceof Document)) {\n doc = docu ment.implementation.createHTMLDocument(IMPORT_LINK_TYPE);\n }\n // cache t he new document's source url\n doc._URL = url;\n // establish a relative p ath via <base>\n var base = doc.createElement('base');\n base.setAttribute ('href', url);\n // add baseURI support to browsers (IE) that lack it.\n i f (!doc.baseURI) {\n doc.baseURI = url;\n }\n // ensure UTF-8 charset \n var meta = doc.createElement('meta');\n meta.setAttribute('charset', 'u tf-8');\n\n doc.head.appendChild(meta);\n doc.head.appendChild(base);\n // install HTML last as it may trigger CustomElement upgrades\n // TODO(sjmi les): problem wrt to template boostrapping below,\n // template bootstrapping must (?) come before element upgrade\n // but we cannot bootstrap templates until they are in a document\n // which is too late\n if (!(resource insta nceof Document)) {\n // install html\n doc.body.innerHTML = resource;\ n }\n // TODO(sorvell): ideally this code is not aware of Template polyfil l,\n // but for now the polyfill needs help to bootstrap these templates\n if (window.HTMLTemplateElement && HTMLTemplateElement.bootstrap) {\n HTMLT emplateElement.bootstrap(doc);\n }\n return doc;\n }\n} else {\n // do n othing if using native imports\n var importer = {};\n}\n\n// NOTE: We cannot po lyfill document.currentScript because it's not possible\n// both to override and maintain the ability to capture the native value;\n// therefore we choose to ex pose _currentScript both when native imports\n// and the polyfill are in use.\nv ar currentScriptDescriptor = {\n get: function() {\n return HTMLImports.curr entScript || document.currentScript;\n },\n configurable: true\n};\n\nObject.d efineProperty(document, '_currentScript', currentScriptDescriptor);\nObject.defi neProperty(mainDoc, '_currentScript', currentScriptDescriptor);\n\n// Polyfill d ocument.baseURI for browsers without it.\nif (!document.baseURI) {\n var baseUR IDescriptor = {\n get: function() {\n return window.location.href;\n },\n configurable: true\n };\n\n Object.defineProperty(document, 'baseURI', baseURIDescriptor);\n Object.defineProperty(mainDoc, 'baseURI', baseURIDescrip tor);\n}\n\n// call a callback when all HTMLImports in the document at call (or at least\n// document ready) time have loaded.\n// 1. ensure the document is in a ready state (has dom), then \n// 2. watch for loading of imports and call cal lback when done\nfunction whenImportsReady(callback, doc) {\n doc = doc || main Doc;\n // if document is loading, wait and try again\n whenDocumentReady(funct ion() {\n watchImportsLoad(callback, doc);\n }, doc);\n}\n\n// call the call back when the document is in a ready state (has dom)\nvar requiredReadyState = H TMLImports.isIE ? 'complete' : 'interactive';\nvar READY_EVENT = 'readystatechan ge';\nfunction isDocumentReady(doc) {\n return (doc.readyState === 'complete' | |\n doc.readyState === requiredReadyState);\n}\n\n// call <callback> when w e ensure the document is in a ready state\nfunction whenDocumentReady(callback, doc) {\n if (!isDocumentReady(doc)) {\n var checkReady = function() {\n if (doc.readyState === 'complete' || \n doc.readyState === requiredRea dyState) {\n doc.removeEventListener(READY_EVENT, checkReady);\n w henDocumentReady(callback, doc);\n }\n }\n doc.addEventListener(READY _EVENT, checkReady);\n } else if (callback) {\n callback();\n }\n}\n\n// ca ll <callback> when we ensure all imports have loaded\nfunction watchImportsLoad( callback, doc) {\n var imports = doc.querySelectorAll('link[rel=import]');\n v ar loaded = 0, l = imports.length;\n function checkDone(d) { \n if (loaded = = l) {\n // go async to ensure parser isn't stuck on a script tag\n re questAnimationFrame(callback);\n }\n }\n function loadedImport(e) {\n lo aded++;\n checkDone();\n }\n if (l) {\n for (var i=0, imp; (i<l) && (imp =imports[i]); i++) {\n if (isImportLoaded(imp)) {\n loadedImport.cal l(imp);\n } else {\n imp.addEventListener('load', loadedImport);\n imp.addEventListener('error', loadedImport);\n }\n }\n } else {\n checkDone();\n }\n}\n\nfunction isImportLoaded(link) {\n return useNative ? (link.import && (link.import.readyState !== 'loading')) :\n link.__import Parsed;\n}\n\n// exports\nscope.hasNative = hasNative;\nscope.useNative = useNat ive;\nscope.importer = importer;\nscope.whenImportsReady = whenImportsReady;\nsc ope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\nscope.isImportLoaded = isImportLoaded; \nscope.importLoader = importLoader;\n\n})(window.HTMLImports);\n"," /*\nCopyrig ht 2013 The Polymer Authors. All rights reserved.\nUse of this source code is go verned by a BSD-style\nlicense that can be found in the LICENSE file.\n*/\n\n(fu nction(scope){\n\nvar IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;\nvar importSele ctor = 'link[rel=' + IMPORT_LINK_TYPE + ']';\nvar importer = scope.importer;\n\n // we track mutations for addedNodes, looking for imports\nfunction handler(muta tions) {\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// find loadable elements and add them to the im porter\nfunction addedNodes(nodes) {\n for (var i=0, l=nodes.length, n; (i<l) & & (n=nodes[i]); i++) {\n if (shouldLoadNode(n)) {\n importer.loadNode(n) ;\n }\n if (n.children && n.children.length) {\n addedNodes(n.childre n);\n }\n }\n}\n\nfunction shouldLoadNode(node) {\n return (node.nodeType = == 1) && matches.call(node,\n importer.loadSelectorsForNode(node));\n}\n\n/ / x-plat matches\nvar matches = HTMLElement.prototype.matches || \n HTMLEleme nt.prototype.matchesSelector || \n HTMLElement.prototype.webkitMatchesSelecto r ||\n HTMLElement.prototype.mozMatchesSelector ||\n HTMLElement.prototype .msMatchesSelector;\n\nvar observer = new MutationObserver(handler);\n\n// obser ve the given root for loadable elements\nfunction observe(root) {\n observer.ob serve(root, {childList: true, subtree: true});\n}\n\n// exports\n// TODO(sorvell ): factor so can put on scope\nscope.observe = observe;\nimporter.observe = obse rve;\n\n})(HTMLImports);\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(function(){\n\n// bootstrap\n\n// IE shim for CustomEvent\nif (typeof window.CustomEvent !== 'function') {\n wind ow.CustomEvent = function(inType, dictionary) {\n var e = document.createEve nt('HTMLEvents');\n e.initEvent(inType,\n dictionary.bubbles === fals e ? false : true,\n dictionary.cancelable === false ? false : true,\n dictionary.detail);\n return e;\n };\n}\n\n// TODO(sorvell): SD polyfil l intrusion\nvar doc = window.ShadowDOMPolyfill ? \n window.ShadowDOMPolyfill .wrapIfNeeded(document) : document;\n\n// Fire the 'HTMLImportsLoaded' event whe n imports in document at load time \n// have loaded. This event is required to s imulate the script blocking \n// behavior of native imports. A main document scr ipt that needs to be sure\n// imports have loaded should wait for this event.\nH TMLImports.whenImportsReady(function() {\n HTMLImports.ready = true;\n HTMLImp orts.readyTime = new Date().getTime();\n doc.dispatchEvent(\n new CustomEven t('HTMLImportsLoaded', {bubbles: true})\n );\n});\n\n\n// no need to bootstrap the polyfill when native imports is available.\nif (!HTMLImports.useNative) {\n function bootstrap() {\n HTMLImports.importer.bootDocument(doc);\n }\n \ n // TODO(sorvell): SD polyfill does *not* generate mutations for nodes added\n // by the parser. For this reason, we must wait until the dom exists to \n // bootstrap.\n if (document.readyState === 'complete' ||\n (document.readyS tate === 'interactive' && !window.attachEvent)) {\n bootstrap();\n } else {\ n document.addEventListener('DOMContentLoaded', bootstrap);\n }\n}\n\n})();\ n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of t his source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\nwindow.CustomElements = window.CustomElements || {flags:{}}; "," /*\r\nCopyright 2013 The Polymer Authors. All rights reserved.\r\nUse of thi s source code is governed by a BSD-style\r\nlicense that can be found in the LIC ENSE file.\r\n*/\r\n\r\n(function(scope){\r\n\r\nvar logFlags = window.logFlags || {};\r\nvar IMPORT_LINK_TYPE = window.HTMLImports ? HTMLImports.IMPORT_LINK_TY PE : 'none';\r\n\r\n// walk the subtree 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\nfunction findAll(node, find, data) {\r\n v ar e = node.firstElementChild;\r\n if (!e) {\r\n e = node.firstChild;\r\n while (e && e.nodeType !== Node.ELEMENT_NODE) {\r\n e = e.nextSibling;\r\n }\r\n }\r\n while (e) {\r\n if (find(e, data) !== true) {\r\n find All(e, find, data);\r\n }\r\n e = e.nextElementSibling;\r\n }\r\n return null;\r\n}\r\n\r\n// walk all shadowRoots on a given node.\r\nfunction forRoots (node, cb) {\r\n var root = node.shadowRoot;\r\n while(root) {\r\n forSubtr ee(root, cb);\r\n root = root.olderShadowRoot;\r\n }\r\n}\r\n\r\n// walk the subtree rooted at node, including descent into shadow-roots,\r\n// applying 'cb ' to each element\r\nfunction forSubtree(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 forRoots(node, cb);\r\n //logFlags.dom && node.childNodes && node.childNodes.length && console.groupEnd();\r\n}\r\n\r\n// manage lifecycle on added node\r\nfunction added(node) {\r\n if (upgrade(node)) {\r\n insertedNode(node);\r\n return true;\r\n }\r\n inserted(node);\r\ n}\r\n\r\n// manage lifecycle on added node's subtree only\r\nfunction addedSubt ree(node) {\r\n forSubtree(node, function(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(node) {\r\n return added(node) || addedSubt ree(node);\r\n}\r\n\r\n// upgrade custom elements at node, if applicable\r\nfunc tion upgrade(node) {\r\n if (!node.__upgraded__ && node.nodeType === Node.ELEME NT_NODE) {\r\n var type = node.getAttribute('is') || node.localName;\r\n v ar 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.groupEnd();\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nfunction insertedNode(node) {\r\n inserted(node);\r\n if (inDo cument(node)) {\r\n forSubtree(node, function(e) {\r\n inserted(e);\r\n });\r\n }\r\n}\r\n\r\n// TODO(sorvell): on platforms without MutationObserve r, mutations may not be\r\n// reliable and therefore attached/detached are not r eliable.\r\n// To make these callbacks less likely to fail, we defer all inserts and removes\r\n// to give a chance for elements to be inserted into dom.\r\n// This ensures attachedCallback fires for elements that are created and\r\n// imme diately added to dom.\r\nvar hasPolyfillMutations = (!window.MutationObserver || \r\n (window.MutationObserver === window.JsMutationObserver));\r\nscope.hasPo lyfillMutations = hasPolyfillMutations;\r\n\r\nvar isPendingMutations = false;\r \nvar pendingMutations = [];\r\nfunction deferMutation(fn) {\r\n pendingMutatio ns.push(fn);\r\n if (!isPendingMutations) {\r\n isPendingMutations = true;\r \n var async = (window.Platform && window.Platform.endOfMicrotask) ||\r\n setTimeout;\r\n async(takeMutations);\r\n }\r\n}\r\n\r\nfunction takeMut ations() {\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 (hasPo lyfillMutations) {\r\n deferMutation(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 into trees that can never have inDocument(*) tr ue, fix this\r\nfunction _inserted(element) {\r\n // TODO(sjmiles): it's possib le 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 ar e 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 c an factor these cases into separate code paths we can have\r\n // better diagno stics.\r\n // TODO(sjmiles): when logging, do work on all custom elements so we can\r\n // track behavior even when callbacks not defined\r\n //console.log(' inserted: ', element.localName);\r\n if (element.attachedCallback || element.de tachedCallback || (element.__upgraded__ && logFlags.dom)) {\r\n logFlags.dom && console.group('inserted:', element.localName);\r\n if (inDocument(element) ) {\r\n element.__inserted = (element.__inserted || 0) + 1;\r\n // if we are in a 'removed' state, bluntly 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', squelch the callback\r\n if (element.__inser ted > 1) {\r\n logFlags.dom && console.warn('inserted:', element.localNam e,\r\n 'insert/remove count:', element.__inserted)\r\n } else if ( element.attachedCallback) {\r\n logFlags.dom && console.log('inserted:', element.localName);\r\n element.attachedCallback();\r\n }\r\n }\r \n logFlags.dom && console.groupEnd();\r\n }\r\n}\r\n\r\nfunction removedNod e(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 (hasPolyfillMutati ons) {\r\n deferMutation(function() {\r\n _removed(element);\r\n });\ r\n } else {\r\n _removed(element);\r\n }\r\n}\r\n\r\nfunction _removed(ele ment) {\r\n // TODO(sjmiles): temporary: do work on all custom elements so we c an track\r\n // behavior even when callbacks not defined\r\n if (element.attac hedCallback || element.detachedCallback || (element.__upgraded__ && logFlags.dom )) {\r\n logFlags.dom && console.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 'rem oved' 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('remo ved:', element.localName,\r\n 'insert/remove count:', element.__inser ted)\r\n } else if (element.detachedCallback) {\r\n element.detached Callback();\r\n }\r\n }\r\n logFlags.dom && console.groupEnd();\r\n }\r\n}\r\n\r\n// SD polyfill intrustion due mainly to the fact that 'document'\r \n// is not entirely wrapped\r\nfunction wrapIfNeeded(node) {\r\n return window .ShadowDOMPolyfill ? ShadowDOMPolyfill.wrapIfNeeded(node)\r\n : node;\r\n}\ r\n\r\nfunction inDocument(element) {\r\n var p = element;\r\n var doc = wrapI fNeeded(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 watchSh adow(node) {\r\n if (node.shadowRoot && !node.shadowRoot.__watched) {\r\n lo gFlags.dom && console.log('watching 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 watchRoot(root) {\r\n if (!root.__watched) {\r\n observe(root);\r\n root.__watched = true;\r\n }\r\n}\r\n\r\nfunction hand ler(mutations) {\r\n //\r\n if (logFlags.dom) {\r\n var mx = mutations[0];\ r\n if (mx && mx.type === 'childList' && mx.addedNodes) {\r\n if (mx.a ddedNodes) {\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._URL || (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.addedNode s, function(n) {\r\n //logFlags.dom && console.log(n.localName);\r\n if (!n.localName) {\r\n return;\r\n }\r\n // nodes add ed may need lifecycle management\r\n addedNode(n);\r\n });\r\n // removed nodes may need lifecycle management\r\n forEach(mx.removedNodes, function(n) {\r\n //logFlags.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 //logFlags.dom && console.groupEnd();\r\n });\r\ n logFlags.dom && console.groupEnd();\r\n};\r\n\r\nvar observer = new MutationO bserver(handler);\r\n\r\nfunction takeRecords() {\r\n // TODO(sjmiles): ask Raf why we have to call handler ourselves\r\n handler(observer.takeRecords());\r\n takeMutations();\r\n}\r\n\r\nvar forEach = Array.prototype.forEach.call.bind(A rray.prototype.forEach);\r\n\r\nfunction 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 logF lags.dom && console.group('upgradeDocument: ', (doc.baseURI).split('/').pop());\ r\n addedNode(doc);\r\n logFlags.dom && console.groupEnd();\r\n}\r\n\r\nfuncti on upgradeDocumentTree(doc) {\r\n doc = wrapIfNeeded(doc);\r\n //console.log(' upgradeDocumentTree: ', (doc.baseURI).split('/').pop());\r\n // upgrade contain ed imported documents\r\n var imports = doc.querySelectorAll('link[rel=' + IMPO RT_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 upgradeDocumen tTree(n.import);\r\n }\r\n }\r\n upgradeDocument(doc);\r\n}\r\n\r\n// expor ts\r\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\r\nscope.watchShadow = watchSha dow;\r\nscope.upgradeDocumentTree = upgradeDocumentTree;\r\nscope.upgradeAll = a ddedNode;\r\nscope.upgradeSubtree = addedSubtree;\r\nscope.insertedNode = insert edNode;\r\n\r\nscope.observeDocument = observeDocument;\r\nscope.upgradeDocument = upgradeDocument;\r\n\r\nscope.takeRecords = takeRecords;\r\n\r\n})(window.Cus tomElements);\r\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/**\n * Implements `document.register`\n * @module CustomElements\n*/\n\n/**\n * Polyfilled extensions to the `document` o bject.\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(document.regis terElement);\n// TODO(sorvell): See https://github.com/Polymer/polymer/issues/39 9\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 callbacks.\n// I f there is a compelling need to run CE native with SD polyfill,\n// we'll need t o fix this issue.\nvar useNative = !flags.register && hasNative && !window.Shado wDOMPolyfill;\n\nif (useNative) {\n\n // stub\n var nop = function() {};\n\n // exports\n scope.registry = {};\n scope.upgradeElement = nop;\n\n scope.wat chShadow = nop;\n scope.upgrade = nop;\n scope.upgradeAll = nop;\n scope.upgr adeSubtree = nop;\n scope.observeDocument = nop;\n scope.upgradeDocument = nop ;\n scope.upgradeDocumentTree = nop;\n scope.takeRecords = nop;\n scope.reser vedTagList = [];\n\n} else {\n\n /**\n * Registers a custom tag name with the document.\n *\n * When a registered element is created, a `readyCallback` m ethod is called\n * in the scope of the element. The `readyCallback` method ca n be specified on\n * either `options.prototype` or `options.lifecycle` with t he latter taking\n * precedence.\n *\n * @method register\n * @param {St ring} name The tag name to register. Must include a dash ('-'),\n * for exa mple 'x-component'.\n * @param {Object} options\n * @param {String} [opti ons.extends]\n * (_off spec_) Tag name of an element to extend (or blank for a new\n * element). This parameter is not part of the specification, but instead\n * is a hint for the polyfill because the extendee is diffic ult to infer.\n * Remember that the input prototype must chain to the ext ended element's\n * prototype (or HTMLElement.prototype) regardless of th e value of\n * `extends`.\n * @param {Object} options.prototype The prototype to use for the 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-butto n\", {\n * extends: 'button',\n * prototype: Object.create(HTM LButtonElement.prototype, {\n * readyCallback: {\n * val ue: 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 regist er(name, options) {\n //console.warn('document.registerElement(\"' + name + ' \", ', options, ')');\n // construct a defintion out of options\n // TODO( sjmiles): probably should clone options instead of mutating it\n var definiti on = options || {};\n if (!name) {\n // TODO(sjmiles): replace with more appropriate error (EricB can probably\n // offer guidance)\n throw ne w Error('document.registerElement: first argument `name` must not be empty');\n }\n if (name.indexOf('-') < 0) {\n // TODO(sjmiles): replace with mor e appropriate error (EricB can probably\n // offer guidance)\n throw n ew Error('document.registerElement: first argument (\\'name\\') must contain a d ash (\\'-\\'). Argument provided was \\'' + String(name) + '\\'.');\n }\n // prevent registering reserved names\n if (isReservedTag(name)) {\n thr ow new Error('Failed to execute \\'registerElement\\' on \\'Document\\': Registr ation failed for type \\'' + String(name) + '\\'. The type name is invalid.');\n }\n // elements may only be registered once\n if (getRegisteredDefinit ion(name)) {\n throw new Error('DuplicateDefinitionError: a type with name \\'' + String(name) + '\\' is already registered');\n }\n // must have a p rototype, default to an extension of HTMLElement\n // TODO(sjmiles): probably should throw if no prototype, check spec\n if (!definition.prototype) {\n // TODO(sjmiles): replace with more appropriate error (EricB can probably\n // offer guidance)\n throw new Error('Options missing required prototyp e property');\n }\n // record name\n definition.__name = name.toLowerCa se();\n // ensure a lifecycle object so we don't have to null test it\n de finition.lifecycle = definition.lifecycle || {};\n // build a list of ancestr al custom elements (for native base detection)\n // TODO(sjmiles): we used to need to store this, but current code only\n // uses it in 'resolveTagName': it should probably be inlined\n definition.ancestry = ancestry(definition.ext ends);\n // extensions of native specializations of HTMLElement require local Name\n // to remain native, and use secondary 'is' specifier for extension ty pe\n resolveTagName(definition);\n // some platforms require modifications to the user-supplied prototype\n // chain\n resolvePrototypeChain(definit ion);\n // overrides to implement attributeChanged callback\n overrideAttr ibuteApi(definition.prototype);\n // 7.1.5: Register the DEFINITION with DOCU MENT\n registerDefinition(definition.__name, definition);\n // 7.1.7. Run custom element constructor generation algorithm with PROTOTYPE\n // 7.1.8. Re turn the output of the previous step.\n definition.ctor = generateConstructor (definition);\n definition.ctor.prototype = definition.prototype;\n // for ce our .constructor to be our actual constructor\n definition.prototype.const ructor = definition.ctor;\n // if initial parsing is complete\n if (scope. ready) {\n // upgrade any pre-existing nodes of this type\n scope.upgr adeDocumentTree(document);\n }\n return definition.ctor;\n }\n\n functio n isReservedTag(name) {\n for (var i = 0; i < reservedTagList.length; i++) {\ n if (name === reservedTagList[i]) {\n return true;\n }\n }\ n }\n\n var reservedTagList = [\n 'annotation-xml', 'color-profile', 'font- face', 'font-face-src',\n 'font-face-uri', 'font-face-format', 'font-face-nam e', 'missing-glyph'\n ];\n\n function ancestry(extnds) {\n var extendee = g etRegisteredDefinition(extnds);\n if (extendee) {\n return ancestry(exte ndee.extends).concat([extendee]);\n }\n return [];\n }\n\n function reso lveTagName(definition) {\n // if we are explicitly extending something, that thing is our\n // baseTag, unless it represents a custom component\n var b aseTag = definition.extends;\n // if our ancestry includes custom components, we only have a\n // baseTag if one of them does\n for (var i=0, a; (a=def inition.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 definition.ta g = baseTag || definition.__name;\n if (baseTag) {\n // if there is a ba se 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 prec ise mixing in\n if (!Object.__proto__) {\n // default prototype\n v ar nativePrototype = HTMLElement.prototype;\n // work out prototype when us ing type-extension\n if (definition.is) {\n var inst = document.crea teElement(definition.tag);\n nativePrototype = Object.getPrototypeOf(inst );\n }\n // ensure __proto__ reference is installed at each point on t he prototype\n // chain.\n // NOTE: On platforms without __proto__, a mixin strategy is used instead\n // of prototype swizzling. In this case, t his generated __proto__ provides\n // limited support for prototype travers al.\n var proto = definition.prototype, ancestor;\n while (proto && (p roto !== nativePrototype)) {\n var ancestor = Object.getPrototypeOf(proto );\n proto.__proto__ = ancestor;\n proto = ancestor;\n }\n }\n // cache this in case of mixin\n definition.native = nativePrototype; \n }\n\n // SECTION 4\n\n function instantiate(definition) {\n // 4.a.1. C reate a new object that implements PROTOTYPE\n // 4.a.2. Let ELEMENT by this new object\n //\n // the custom element instantiation algorithm must also ensure that the\n // output is a valid DOM element with the proper wrapper in place.\n //\n return upgrade(domCreateElement(definition.tag), definition );\n }\n\n function upgrade(element, definition) {\n // some definitions sp ecify an 'is' attribute\n if (definition.is) {\n element.setAttribute('i s', definition.is);\n }\n // remove 'unresolved' attr, which is a standin for :unresolved.\n element.removeAttribute('unresolved');\n // make 'eleme nt' implement definition.prototype\n implement(element, definition);\n // flag as upgraded\n element.__upgraded__ = true;\n // lifecycle management\ n created(element);\n // attachedCallback fires in tree order, call before recursing\n scope.insertedNode(element);\n // there should never be a sha dow root on element at this point\n scope.upgradeSubtree(element);\n // OU TPUT\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-ac quire inPrototype via\n // getPrototypeOf(Element), we cannot do so when\n // we use mixin, so we install a magic reference\n customMixin(element , definition.prototype, definition.native);\n element.__proto__ = definitio n.prototype;\n }\n }\n\n function customMixin(inTarget, inSrc, inNative) {\ n // TODO(sjmiles): 'used' allows us to only copy the 'youngest' version of\n // any property. This set should be precalculated. We also need to\n // c onsider this for supporting 'super'.\n var used = {};\n // start with inSr c\n var p = inSrc;\n // The default is HTMLElement.prototype, so we add a test to avoid mixing in\n // native prototypes\n while (p !== inNative && p !== HTMLElement.prototype) {\n var keys = Object.getOwnPropertyNames(p);\ n for (var i=0, k; k=keys[i]; i++) {\n if (!used[k]) {\n Ob ject.defineProperty(inTarget, k,\n Object.getOwnPropertyDescriptor( p, k));\n used[k] = 1;\n }\n }\n p = Object.getPrototy peOf(p);\n }\n }\n\n function created(element) {\n // invoke createdCall back\n if (element.createdCallback) {\n element.createdCallback();\n }\n }\n\n // attribute watching\n\n function overrideAttributeApi(prototype) {\n // overrides to implement callbacks\n // TODO(sjmiles): should support access via .attributes NamedNodeMap\n // TODO(sjmiles): preserves user defin ed overrides, if any\n if (prototype.setAttribute._polyfilled) {\n retur n;\n }\n var setAttribute = prototype.setAttribute;\n prototype.setAttr ibute = function(name, value) {\n changeAttribute.call(this, name, value, s etAttribute);\n }\n var removeAttribute = prototype.removeAttribute;\n prototype.removeAttribute = function(name) {\n changeAttribute.call(this, n ame, null, removeAttribute);\n }\n prototype.setAttribute._polyfilled = tr ue;\n }\n\n // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/\ n // index.html#dfn-attribute-changed-callback\n function changeAttribute(name , value, operation) {\n var oldValue = this.getAttribute(name);\n operatio n.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 // element registry (maps tag names to definitions)\n\n var registry = {};\n\n function getRegisteredDefinition(name) {\n if (name) {\n return registry[name.toL owerCase()];\n }\n }\n\n function registerDefinition(name, definition) {\n registry[name] = definition;\n }\n\n function generateConstructor(definitio n) {\n return function() {\n return instantiate(definition);\n };\n }\n\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n function createEl ementNS(namespace, tag, typeExtension) {\n // NOTE: we do not support non-HTM L elements,\n // just call createElementNS for non HTML Elements\n if (nam espace === HTML_NAMESPACE) {\n return createElement(tag, typeExtension);\n } else {\n return domCreateElementNS(namespace, tag);\n }\n }\n\n f unction createElement(tag, typeExtension) {\n // TODO(sjmiles): ignore 'tag' when using 'typeExtension', we could\n // error check it, or perhaps there sh ould only ever be one argument\n var definition = getRegisteredDefinition(typ eExtension || tag);\n if (definition) {\n if (tag == definition.tag && t ypeExtension == definition.is) {\n return new definition.ctor();\n } \n // Handle empty string for type extension.\n if (!typeExtension && !definition.is) {\n return new definition.ctor();\n }\n }\n\n if (typeExtension) {\n var element = createElement(tag);\n element.set Attribute('is', typeExtension);\n return element;\n }\n var element = domCreateElement(tag);\n // Custom tags should be HTMLElements even if not u pgraded.\n if (tag.indexOf('-') >= 0) {\n implement(element, HTMLElement );\n }\n return element;\n }\n\n function upgradeElement(element) {\n if (!element.__upgraded__ && (element.nodeType === Node.ELEMENT_NODE)) {\n var is = element.getAttribute('is');\n var definition = getRegisteredDefin ition(is || element.localName);\n if (definition) {\n if (is && defi nition.tag == element.localName) {\n return upgrade(element, definition );\n } else if (!is && !definition.extends) {\n return upgrade(e lement, definition);\n }\n }\n }\n }\n\n function cloneNode(dee p) {\n // call original clone\n var n = domCloneNode.call(this, deep);\n // upgrade the element and subtree\n scope.upgradeAll(n);\n // return th e clone\n return n;\n }\n // capture native createElement before we overrid e it\n\n var domCreateElement = document.createElement.bind(document);\n var d omCreateElementNS = document.createElementNS.bind(document);\n\n // capture nat ive cloneNode before we override it\n\n var domCloneNode = Node.prototype.clone Node;\n\n // exports\n\n document.registerElement = register;\n document.crea teElement = createElement; // override\n document.createElementNS = createEleme ntNS; // override\n Node.prototype.cloneNode = cloneNode; // override\n\n scop e.registry = registry;\n\n /**\n * Upgrade an element to a custom element. Up grading an element\n * causes the custom prototype to be applied, an `is` attr ibute\n * to be attached (as needed), and invocation of the `readyCallback`.\n * `upgrade` does nothing if the element is already upgraded, or\n * if it m atches no registered custom tag name.\n *\n * @method ugprade\n * @param { Element} element The element to upgrade.\n * @return {Element} The upgraded el ement.\n */\n scope.upgrade = upgradeElement;\n}\n\n// Create a custom 'insta nceof'. This is necessary when CustomElements\n// are implemented via a mixin st rategy, as for example on IE10.\nvar isInstance;\nif (!Object.__proto__ && !useN ative) {\n isInstance = function(obj, ctor) {\n var p = obj;\n while (p) {\n // NOTE: this is not technically correct since we're not checking if\n // an object is an instance of a constructor; however, this should\n / / be good enough for the mixin strategy.\n if (p === ctor.prototype) {\n return true;\n }\n p = p.__proto__;\n }\n return false;\n }\n} else {\n isInstance = function(obj, base) {\n return obj instanceof bas e;\n }\n}\n\n// exports\nscope.instanceof = isInstance;\nscope.reservedTagList = reservedTagList;\n\n// bc\ndocument.register = document.registerElement;\n\nsc ope.hasNative = hasNative;\nscope.useNative = useNative;\n\n})(window.CustomElem ents);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * U se 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\n// import\n\nvar IMPORT_LINK_ TYPE = scope.IMPORT_LINK_TYPE;\n\n// highlander object for parsing a document tr ee\n\nvar parser = {\n selectors: [\n 'link[rel=' + IMPORT_LINK_TYPE + ']'\n ],\n map: {\n link: 'parseLink'\n },\n parse: function(inDocument) {\n if (!inDocument.__parsed) {\n // only parse once\n inDocument.__pars ed = true;\n // all parsable elements in inDocument (depth-first pre-order traversal)\n var elts = inDocument.querySelectorAll(parser.selectors);\n // for each parsable node type, call the mapped parsing method\n forEach (elts, function(e) {\n parser[parser.map[e.localName]](e);\n });\n // upgrade all upgradeable static elements, anything dynamically\n // c reated should be caught by observer\n CustomElements.upgradeDocument(inDocu ment);\n // observe document for dom changes\n CustomElements.observeD ocument(inDocument);\n }\n },\n parseLink: function(linkElt) {\n // impo rts\n if (isDocumentLink(linkElt)) {\n this.parseImport(linkElt);\n } \n },\n parseImport: function(linkElt) {\n if (linkElt.import) {\n par ser.parse(linkElt.import);\n }\n }\n};\n\nfunction isDocumentLink(inElt) {\n return (inElt.localName === 'link'\n && inElt.getAttribute('rel') === IMP ORT_LINK_TYPE);\n}\n\nvar forEach = Array.prototype.forEach.call.bind(Array.prot otype.forEach);\n\n// exports\n\nscope.parser = parser;\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\n\n})(window.CustomElements);","/*\n * Copyright 2013 The Po lymer 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(sc ope){\n\n// bootstrap parsing\nfunction bootstrap() {\n // parse document\n Cu stomElements.parser.parse(document);\n // one more pass before register is 'liv e'\n CustomElements.upgradeDocument(document);\n // choose async\n var async = window.Platform && Platform.endOfMicrotask ? \n Platform.endOfMicrotask :\n setTimeout;\n async(function() {\n // set internal 'ready' flag, now doc ument.registerElement will trigger \n // synchronous upgrades\n CustomElem ents.ready = true;\n // capture blunt profiling data\n CustomElements.read yTime = Date.now();\n if (window.HTMLImports) {\n CustomElements.elapsed = CustomElements.readyTime - HTMLImports.readyTime;\n }\n // notify the s ystem that we are bootstrapped\n document.dispatchEvent(\n new CustomEve nt('WebComponentsReady', {bubbles: true})\n );\n\n // install upgrade hook if HTMLImports are available\n if (window.HTMLImports) {\n HTMLImports. __importsParsingHook = function(elt) {\n CustomElements.parser.parse(elt. import);\n }\n }\n });\n}\n\n// CustomEvent shim for IE\nif (typeof win dow.CustomEvent !== 'function') {\n window.CustomEvent = function(inType) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(inType, true, tru e);\n return e;\n };\n}\n\n// When loading at readyState complete time (or v ia flag), boot custom elements\n// immediately.\n// If relevant, HTMLImports mus t already be loaded.\nif (document.readyState === 'complete' || scope.flags.eage r) {\n bootstrap();\n// When loading at readyState interactive 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' && !wind ow.attachEvent &&\n (!window.HTMLImports || window.HTMLImports.ready)) {\n b ootstrap();\n// When loading at other readyStates, wait for the appropriate DOM event to \n// bootstrap.\n} else {\n var loadEvent = window.HTMLImports && !HTM LImports.ready ?\n 'HTMLImportsLoaded' : 'DOMContentLoaded';\n window.addE ventListener(loadEvent, bootstrap);\n}\n\n})(window.CustomElements);\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 fil e.\n */\n(function() {\n\nif (window.ShadowDOMPolyfill) {\n\n // ensure wrapped inputs for these functions\n var fns = ['upgradeAll', 'upgradeSubtree', 'obser veDocument',\n 'upgradeDocument'];\n\n // cache originals\n var original = {};\n fns.forEach(function(fn) {\n original[fn] = CustomElements[fn];\n } );\n\n // override\n fns.forEach(function(fn) {\n CustomElements[fn] = func tion(inNode) {\n return original[fn](wrap(inNode));\n };\n });\n\n}\n\n })();\n","/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Us e of this source code is governed by a BSD-style\n * license that can be found i n the LICENSE file.\n */\n(function(scope) {\n var endOfMicrotask = scope.endOf Microtask;\n\n // Generic url loader\n function Loader(regex) {\n this.rege x = regex;\n }\n Loader.prototype = {\n // TODO(dfreedm): there may be a be tter factoring here\n // extract absolute urls from the text (full of relativ e urls)\n extractUrls: function(text, base) {\n var matches = [];\n var matched, u;\n while ((matched = this.regex.exec(text))) {\n u = new URL(matched[1], base);\n matches.push({matched: matched[0], url: u.h ref});\n }\n return matches;\n },\n // take a text blob, a root url, and a callback and load all the urls found within the text\n // returns a map of absolute url to text\n process: function(text, root, callback) {\n var matches = this.extractUrls(text, root);\n this.fetch(matches, {}, c allback);\n },\n // build a mapping of url -> text from matches\n fetch : function(matches, map, callback) {\n var inflight = matches.length;\n\n // return early if there is no fetching to be done\n if (!inflight) {\n return callback(map);\n }\n\n var done = function() {\n if (--inflight === 0) {\n callback(map);\n }\n };\n\n // map url -> responseText\n var handleXhr = function(err, request) {\n var match = request.match;\n var key = match.url;\n // handle errors with an empty string\n if (err) {\n map[key] = '';\n return done();\n }\n var response = request.response || requ est.responseText;\n map[key] = response;\n this.fetch(this.extract Urls(response, key), map, done);\n };\n\n var m, req, url;\n for (var i = 0; i < inflight; i++) {\n m = matches[i];\n url = m.url;\ n // if this url has already been requested, skip requesting it again\n if (map[url]) {\n // Async call to done to simplify the inflight logic\n endOfMicrotask(done);\n continue;\n }\n req = this.xhr(url, handleXhr, this);\n req.match = m;\n // tag th e map with an XHR request to deduplicate at the same level\n map[url] = r eq;\n }\n },\n xhr: function(url, callback, scope) {\n var reque st = new XMLHttpRequest();\n request.open('GET', url, true);\n request .send();\n request.onload = function() {\n callback.call(scope, null , request);\n };\n request.onerror = function() {\n callback.ca ll(scope, null, request);\n };\n return request;\n }\n };\n\n sco pe.Loader = Loader;\n})(window.Platform);\n","/*\n * Copyright 2014 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(function(scope) { \n\nvar urlResolver = scope.urlResolver;\nvar Loader = scope.Loader;\n\nfunction StyleResolver() {\n this.loader = new Loader(this.regex);\n}\nStyleResolver.pr ototype = {\n regex: /@import\\s+(?:url)?[\"'\\(]*([^'\"\\)]*)['\"\\)]*;/g,\n // Recursively replace @imports with the text at that url\n resolve: function(t ext, url, callback) {\n var done = function(map) {\n callback(this.flatt en(text, url, map));\n }.bind(this);\n this.loader.process(text, url, done );\n },\n // resolve the textContent of a style node\n resolveNode: function( style, callback) {\n var text = style.textContent;\n var url = style.owner Document.baseURI;\n var done = function(text) {\n style.textContent = te xt;\n callback(style);\n };\n this.resolve(text, url, done);\n },\n // flatten all the @imports to text\n flatten: function(text, base, map) {\n var matches = this.loader.extractUrls(text, base);\n var match, url, interm ediate;\n for (var i = 0; i < matches.length; i++) {\n match = matches[i ];\n url = match.url;\n // resolve any css text to be relative to the importer\n intermediate = urlResolver.resolveCssText(map[url], url);\n // flatten intermediate @imports\n intermediate = this.flatten(intermediat e, url, map);\n text = text.replace(match.matched, intermediate);\n }\n return text;\n },\n loadStyles: function(styles, callback) {\n var loade d=0, l = styles.length;\n // called in the context of the style\n function loadedStyle(style) {\n loaded++;\n if (loaded === l && callback) {\n callback();\n }\n }\n for (var i=0, s; (i<l) && (s=styles[i]); i++) {\n this.resolveNode(s, loadedStyle);\n }\n }\n};\n\nvar styleRes olver = new StyleResolver();\n\n// exports\nscope.styleResolver = styleResolver; \n\n})(window.Platform);\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(function(scope) {\n scope = sco pe || {};\n scope.external = scope.external || {};\n var target = {\n shado w: function(inEl) {\n if (inEl) {\n return inEl.shadowRoot || inEl.w ebkitShadowRoot;\n }\n },\n canTarget: function(shadow) {\n retu rn shadow && Boolean(shadow.elementFromPoint);\n },\n targetingShadow: fun ction(inEl) {\n var s = this.shadow(inEl);\n if (this.canTarget(s)) {\ n return s;\n }\n },\n olderShadow: function(shadow) {\n var os = shadow.olderShadowRoot;\n if (!os) {\n var se = shadow.quer ySelector('shadow');\n if (se) {\n os = se.olderShadowRoot;\n }\n }\n return os;\n },\n allShadows: function(element) {\n var shadows = [], s = this.shadow(element);\n while(s) {\n sha dows.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 e lement a shadow host?\n sr = this.targetingShadow(t);\n while (sr) {\n // find the the element inside the shadow root\n st = sr. elementFromPoint(x, y);\n if (!st) {\n // check for older sh adows\n sr = this.olderShadow(sr);\n } else {\n / / shadowed element may contain a shadow root\n var ssr = this.targeti ngShadow(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 // wa lk up until you hit the shadow root or document\n while (s.parentNode) {\n s = s.parentNode;\n }\n // the owner element is expected to be a Document or ShadowRoot\n if (s.nodeType != Node.DOCUMENT_NODE && s.nodeTy pe != Node.DOCUMENT_FRAGMENT_NODE) {\n s = document;\n }\n retu rn s;\n },\n findTarget: function(inEvent) {\n var x = inEvent.client X, y = inEvent.clientY;\n // if the listener is in the shadow root, it is m uch faster to start there\n var s = this.owner(inEvent.target);\n // i f x, y is not in this root, fall back to document search\n if (!s.elementFr omPoint(x, y)) {\n s = document;\n }\n return this.searchRoot(s , x, y);\n }\n };\n scope.targetFinding = target;\n scope.findTarget = tar get.findTarget.bind(target);\n\n window.PointerEventsPolyfill = scope;\n})(wind ow.PointerEventsPolyfill);\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(function() {\n function shadowS elector(v) {\n return 'body /shadow-deep/ ' + selector(v);\n }\n function s elector(v) {\n return '[touch-action=\"' + v + '\"]';\n }\n function rule(v ) {\n return '{ -ms-touch-action: ' + v + '; touch-action: ' + v + '; touch-a ction-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 style s = '';\n // only install stylesheet if the browser has touch action support\n var head = document.head;\n var hasNativePE = window.PointerEvent || window.MS PointerEvent;\n // only add shadow selectors if shadowdom is supported\n var h asShadowRoot = !window.ShadowDOMPolyfill && document.head.createShadowRoot;\n\n if (hasNativePE) {\n attrib2css.forEach(function(r) {\n if (String(r) = == r) {\n styles += selector(r) + rule(r) + '\\n';\n if (hasShadow Root) {\n styles += shadowSelector(r) + rule(r) + '\\n';\n }\n } else {\n styles += r.selectors.map(selector) + rule(r.rule) + '\\n' ;\n if (hasShadowRoot) {\n styles += r.selectors.map(shadowSelec tor) + rule(r.rule) + '\\n';\n }\n }\n });\n\n var el = docume nt.createElement('style');\n el.textContent = styles;\n document.head.appe ndChild(el);\n }\n})();\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 * This is the constructor f or new PointerEvents.\n *\n * New Pointer Events must be given a type, and an op tional dictionary of\n * initialization properties.\n *\n * Due to certain platf orm requirements, events returned from the constructor\n * identify as MouseEven ts.\n *\n * @constructor\n * @param {String} inType The type of the event to cre ate.\n * @param {Object} [inDict] An optional dictionary of initial event proper ties.\n * @return {Event} A new PointerEvent of type `inType` and initialized wi th properties from `inDict`.\n */\n(function(scope) {\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 'pageX', \n 'pageY'\n ];\n\n var MOUSE_DEFAULTS = [\n false,\n false,\n nul l,\n null,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false ,\n false,\n 0,\n null,\n 0,\n 0\n ];\n\n function PointerEvent (inType, inDict) {\n inDict = inDict || Object.create(null);\n\n var e = d ocument.createEvent('Event');\n e.initEvent(inType, inDict.bubbles || false, inDict.cancelable || false);\n\n // define inherited MouseEvent properties\n for(var i = 0, p; i < MOUSE_PROPS.length; i++) {\n p = MOUSE_PROPS[i];\n e[p] = inDict[p] || MOUSE_DEFAULTS[i];\n }\n e.buttons = inDict.butt ons || 0;\n\n // Spec requires that pointers without pressure specified use 0 .5 for down\n // state and 0 for up state.\n var pressure = 0;\n if (in Dict.pressure) {\n pressure = inDict.pressure;\n } else {\n pressur e = e.buttons ? 0.5 : 0;\n }\n\n // add x/y properties aliased to clientX/ Y\n e.x = e.clientX;\n e.y = e.clientY;\n\n // define the properties of the PointerEvent interface\n e.pointerId = inDict.pointerId || 0;\n e.wid th = inDict.width || 0;\n e.height = inDict.height || 0;\n e.pressure = pr essure;\n e.tiltX = inDict.tiltX || 0;\n e.tiltY = inDict.tiltY || 0;\n e.pointerType = inDict.pointerType || '';\n e.hwTimestamp = inDict.hwTimesta mp || 0;\n e.isPrimary = inDict.isPrimary || false;\n return e;\n }\n\n // attach to window\n if (!scope.PointerEvent) {\n scope.PointerEvent = Poin terEvent;\n }\n})(window);\n","/*\n * Copyright 2013 The Polymer Authors. All r ights reserved.\n * Use of this source code is governed by a BSD-style\n * licen se 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 = window.Map & & window.Map.prototype.forEach;\n var POINTERS_FN = function(){ return this.siz e; };\n function PointerMap() {\n if (USE_MAP) {\n var m = new Map();\n m.pointers = POINTERS_FN;\n return m;\n } else {\n this.keys = [];\n this.values = [];\n }\n }\n\n PointerMap.prototype = {\n se t: 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: funct ion(inId) {\n return this.keys.indexOf(inId) > -1;\n },\n 'delete': f unction(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 retu rn this.values[i];\n },\n clear: function() {\n this.keys.length = 0; \n this.values.length = 0;\n },\n // return value, key, map\n forE ach: 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 sc ope.PointerMap = PointerMap;\n})(window.PointerEventsPolyfill);\n","/*\n * Copyr ight 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 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 Level 3\n 'buttons',\n // PointerEvent\n 'pointerId',\n 'width',\n 'height',\n 'pressure',\n 'tiltX',\n 'tiltY',\n 'pointerType',\n 'hwTimestam p',\n 'isPrimary',\n // event instance\n 'type',\n 'target',\n 'c urrentTarget',\n 'which',\n 'pageX',\n 'pageY'\n ];\n\n var CLONE_DEF AULTS = [\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 instan ce\n '',\n null,\n null,\n 0,\n 0,\n 0\n ];\n\n var HAS_SVG_ INSTANCE = (typeof SVGElementInstance !== 'undefined');\n\n /**\n * This modu le is for normalizing events. Mouse and Touch events will be\n * collected her e, and fire PointerEvents that have the same semantics, no\n * matter the sour ce.\n * Events fired:\n * - pointerdown: a pointing is added\n * - poi nterup: a pointer is removed\n * - pointermove: a pointer is moved\n * - pointerover: a pointer crosses into an element\n * - pointerout: a pointer leaves an element\n * - pointercancel: a pointer will no longer generate eve nts\n */\n var dispatcher = {\n pointermap: new scope.PointerMap(),\n e ventMap: Object.create(null),\n captureInfo: Object.create(null),\n // Sco pe objects for native events.\n // This exists for ease of testing.\n even tSources: Object.create(null),\n eventSourceList: [],\n /**\n * Add a new event source that will generate pointer events.\n *\n * `inSource` m ust contain an array of event names named `events`, and\n * functions with t he names specified in the `events` array.\n * @param {string} name A name fo r the event source\n * @param {Object} source A new source of platform event s.\n */\n registerSource: function(name, source) {\n var s = source; \n var newEvents = s.events;\n if (newEvents) {\n newEvents.for Each(function(e) {\n if (s[e]) {\n this.eventMap[e] = s[e].b ind(s);\n }\n }, this);\n this.eventSources[name] = s;\n this.eventSourceList.push(s);\n }\n },\n register: function(el ement) {\n var l = this.eventSourceList.length;\n for (var i = 0, es; (i < l) && (es = this.eventSourceList[i]); i++) {\n // call eventsource r egister\n es.register.call(es, element);\n }\n },\n unregister : function(element) {\n var l = this.eventSourceList.length;\n for (va r i = 0, es; (i < l) && (es = this.eventSourceList[i]); i++) {\n // call eventsource register\n es.unregister.call(es, element);\n }\n },\ n contains: scope.external.contains || function(container, contained) {\n return container.contains(contained);\n },\n // EVENTS\n down: functi on(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerdown' , inEvent);\n },\n move: function(inEvent) {\n inEvent.bubbles = true ;\n this.fireEvent('pointermove', inEvent);\n },\n up: function(inEve nt) {\n inEvent.bubbles = true;\n this.fireEvent('pointerup', inEvent) ;\n },\n enter: function(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerenter', inEvent);\n },\n leave: function(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerleave', inEvent) ;\n },\n over: function(inEvent) {\n inEvent.bubbles = true;\n t his.fireEvent('pointerover', inEvent);\n },\n out: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerout', inEvent);\n } ,\n cancel: function(inEvent) {\n inEvent.bubbles = true;\n this.fi reEvent('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.relate dTarget)) {\n this.enter(event);\n }\n },\n // LISTENER LOGIC\ n eventHandler: function(inEvent) {\n // This is used to prevent multipl e dispatch of pointerevents from\n // platform events. This can happen when two elements in different scopes\n // are set up to create pointer events, which is relevant to Shadow DOM.\n if (inEvent._handledByPE) {\n re turn;\n }\n var type = inEvent.type;\n var fn = this.eventMap && this.eventMap[type];\n if (fn) {\n fn(inEvent);\n }\n inEv ent._handledByPE = true;\n },\n // set up event listeners\n listen: fun ction(target, events) {\n events.forEach(function(e) {\n this.addEve nt(target, e);\n }, this);\n },\n // remove event listeners\n unli sten: function(target, events) {\n events.forEach(function(e) {\n th is.removeEvent(target, e);\n }, this);\n },\n addEvent: scope.externa l.addEvent || function(target, eventName) {\n target.addEventListener(event Name, this.boundHandler);\n },\n removeEvent: scope.external.removeEvent | | function(target, eventName) {\n target.removeEventListener(eventName, thi s.boundHandler);\n },\n // EVENT CREATION AND TRACKING\n /**\n * Cr eates a new Event of type `inType`, based on the information in\n * `inEvent `.\n *\n * @param {string} inType A string representing the type of even t to create\n * @param {Event} inEvent A platform event with a target\n * @return {Event} A PointerEvent of type `inType`\n */\n makeEvent: funct ion(inType, inEvent) {\n // relatedTarget must be null if pointer is captur ed\n if (this.captureInfo[inEvent.pointerId]) {\n inEvent.relatedTar get = null;\n }\n var e = new PointerEvent(inType, inEvent);\n if (inEvent.preventDefault) {\n e.preventDefault = inEvent.preventDefault;\ n }\n e._target = e._target || inEvent.target;\n return e;\n } ,\n // make and dispatch an event in one call\n fireEvent: function(inType , inEvent) {\n var e = this.makeEvent(inType, inEvent);\n return this. dispatchEvent(e);\n },\n /**\n * Returns a snapshot of inEvent, with w ritable properties.\n *\n * @param {Event} inEvent An event that contain s properties to copy.\n * @return {Object} An object containing shallow copi es of `inEvent`'s\n * properties.\n */\n cloneEvent: function(inEv ent) {\n var eventCopy = Object.create(null), 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 sha dow tree\n // Return the <use> element that is represented by the instanc e for Safari, Chrome, IE.\n // This is the behavior implemented by Firefo x.\n if (HAS_SVG_INSTANCE && (p === 'target' || p === 'relatedTarget')) { \n if (eventCopy[p] instanceof SVGElementInstance) {\n event Copy[p] = eventCopy[p].correspondingUseElement;\n }\n }\n } \n // keep the semantics of preventDefault\n if (inEvent.preventDefaul t) {\n eventCopy.preventDefault = function() {\n inEvent.prevent Default();\n };\n }\n return eventCopy;\n },\n getTarget: function(inEvent) {\n // if pointer capture is set, route all events for t he specified pointerId\n // to the capture target\n return this.captur eInfo[inEvent.pointerId] || inEvent._target;\n },\n setCapture: function(i nPointerId, inTarget) {\n if (this.captureInfo[inPointerId]) {\n thi s.releaseCapture(inPointerId);\n }\n this.captureInfo[inPointerId] = i nTarget;\n var e = document.createEvent('Event');\n e.initEvent('gotpo intercapture', true, false);\n e.pointerId = inPointerId;\n this.impli citRelease = this.releaseCapture.bind(this, inPointerId);\n document.addEve ntListener('pointerup', this.implicitRelease);\n document.addEventListener( 'pointercancel', this.implicitRelease);\n e._target = inTarget;\n this .asyncDispatchEvent(e);\n },\n releaseCapture: function(inPointerId) {\n var t = this.captureInfo[inPointerId];\n if (t) {\n var e = docu ment.createEvent('Event');\n e.initEvent('lostpointercapture', true, fals e);\n e.pointerId = inPointerId;\n this.captureInfo[inPointerId] = undefined;\n document.removeEventListener('pointerup', this.implicitRele ase);\n document.removeEventListener('pointercancel', this.implicitReleas e);\n e._target = t;\n this.asyncDispatchEvent(e);\n }\n } ,\n /**\n * Dispatches the event to its target.\n *\n * @param {E vent} inEvent The event to be dispatched.\n * @return {Boolean} True if an e vent handler returns true, false otherwise.\n */\n dispatchEvent: scope.e xternal.dispatchEvent || function(inEvent) {\n var t = this.getTarget(inEve nt);\n if (t) {\n return t.dispatchEvent(inEvent);\n }\n },\ n asyncDispatchEvent: function(inEvent) {\n requestAnimationFrame(this.d ispatchEvent.bind(this, inEvent));\n }\n };\n dispatcher.boundHandler = dis patcher.eventHandler.bind(dispatcher);\n scope.dispatcher = dispatcher;\n scop e.register = dispatcher.register.bind(dispatcher);\n scope.unregister = dispatc her.unregister.bind(dispatcher);\n})(window.PointerEventsPolyfill);\n","/*\n * C opyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source c ode is governed by a BSD-style\n * license that can be found in the LICENSE file .\n */\n\n/**\n * This module uses Mutation Observers to dynamically adjust whic h nodes will\n * generate Pointer Events.\n *\n * All nodes that wish to generat e Pointer Events must have the attribute\n * `touch-action` set to `none`.\n */\ n(function(scope) {\n var forEach = Array.prototype.forEach.call.bind(Array.pro totype.forEach);\n var map = Array.prototype.map.call.bind(Array.prototype.map) ;\n var toArray = Array.prototype.slice.call.bind(Array.prototype.slice);\n va r filter = Array.prototype.filter.call.bind(Array.prototype.filter);\n var MO = window.MutationObserver || window.WebKitMutationObserver;\n var SELECTOR = '[t ouch-action]';\n var OBSERVER_INIT = {\n subtree: true,\n childList: true ,\n attributes: true,\n attributeOldValue: true,\n attributeFilter: ['t ouch-action']\n };\n\n function Installer(add, remove, changed, binder) {\n this.addCallback = add.bind(binder);\n this.removeCallback = remove.bind(bin der);\n this.changedCallback = changed.bind(binder);\n if (MO) {\n th is.observer = new MO(this.mutationWatcher.bind(this));\n }\n }\n\n Installe r.prototype = {\n watchSubtree: function(target) {\n // Only watch scope s that can target find, as these are top-level.\n // Otherwise we can see d uplicate additions and removals that add noise.\n //\n // TODO(dfreedm an): For some instances with ShadowDOMPolyfill, we can see\n // a removal w ithout an insertion when a node is redistributed among\n // shadows. Since it all ends up correct in the document, watching only\n // the document wil l yield the correct mutations to watch.\n if (scope.targetFinding.canTarget (target)) {\n this.observer.observe(target, OBSERVER_INIT);\n }\n },\n enableOnSubtree: function(target) {\n this.watchSubtree(target);\n if (target === document && document.readyState !== 'complete') {\n this.installOnLoad();\n } else {\n this.installNewSubtree(target);\n }\n },\n installNewSubtree: function(target) {\n forEach(this.f indElements(target), this.addElement, this);\n },\n findElements: function (target) {\n if (target.querySelectorAll) {\n return target.querySel ectorAll(SELECTOR);\n }\n return [];\n },\n removeElement: funct ion(el) {\n this.removeCallback(el);\n },\n addElement: function(el) {\n this.addCallback(el);\n },\n elementChanged: function(el, oldValu e) {\n this.changedCallback(el, oldValue);\n },\n concatLists: functi on(accum, list) {\n return accum.concat(toArray(list));\n },\n // reg ister all touch-action = none nodes on document load\n installOnLoad: functio n() {\n document.addEventListener('readystatechange', function() {\n if (document.readyState === 'complete') {\n this.installNewSubtree(doc ument);\n }\n }.bind(this));\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 // flatt en the list\n return tree.reduce(this.concatLists, []);\n },\n mutati onWatcher: function(mutations) {\n mutations.forEach(this.mutationHandler, this);\n },\n mutationHandler: function(m) {\n if (m.type === 'childL ist') {\n var added = this.flattenMutationTree(m.addedNodes);\n ad ded.forEach(this.addElement, this);\n var removed = this.flattenMutationT ree(m.removedNodes);\n removed.forEach(this.removeElement, this);\n } else if (m.type === 'attributes') {\n this.elementChanged(m.target, m.o ldValue);\n }\n }\n };\n\n if (!MO) {\n Installer.prototype.watchSu btree = function(){\n console.warn('PointerEventsPolyfill: MutationObserver s not found, touch-action will not be dynamically detected');\n };\n }\n\n scope.Installer = Installer;\n})(window.PointerEventsPolyfill);\n","/*\n * Copyr ight 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 // radius around touchend that swallows mouse even ts\n var DEDUP_DIST = 25;\n\n var WHICH_TO_BUTTONS = [0, 1, 4, 2];\n\n var HA S_BUTTONS = false;\n try {\n HAS_BUTTONS = new MouseEvent('test', {buttons: 1}).buttons === 1;\n } catch (e) {}\n\n // handler block for native mouse even ts\n var mouseEvents = {\n POINTER_ID: 1,\n POINTER_TYPE: 'mouse',\n e vents: [\n 'mousedown',\n 'mousemove',\n 'mouseup',\n 'mouse over',\n 'mouseout'\n ],\n register: function(target) {\n dispat cher.listen(target, this.events);\n },\n unregister: function(target) {\n dispatcher.unlisten(target, this.events);\n },\n lastTouches: [],\n // collide with the global mouse listener\n isEventSimulatedFromTouch: func tion(inEvent) {\n var lts = this.lastTouches;\n var x = inEvent.client X, 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 prim ary 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 = dispatc her.cloneEvent(inEvent);\n // forward mouse preventDefault\n var pd = e.preventDefault;\n e.preventDefault = function() {\n inEvent.preven tDefault();\n pd();\n };\n e.pointerId = this.POINTER_ID;\n e.isPrimary = true;\n e.pointerType = this.POINTER_TYPE;\n if (!HAS_ BUTTONS) {\n e.buttons = WHICH_TO_BUTTONS[e.which] || 0;\n }\n return e;\n },\n mousedown: function(inEvent) {\n if (!this.isEventSi mulatedFromTouch(inEvent)) {\n var p = pointermap.has(this.POINTER_ID);\n // TODO(dfreedman) workaround for some elements not sending mouseup\n // http://crbug/149091\n if (p) {\n this.cancel(inEvent);\n }\n var e = this.prepareEvent(inEvent);\n pointermap.set(t his.POINTER_ID, inEvent);\n dispatcher.down(e);\n }\n },\n mou semove: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n dispatcher.move(e);\n }\n },\n mouseup: function(inEvent) {\n if (!this.isEventSimulate dFromTouch(inEvent)) {\n var p = pointermap.get(this.POINTER_ID);\n if (p && p.button === inEvent.button) {\n var e = this.prepareEvent(i nEvent);\n dispatcher.up(e);\n this.cleanupMouse();\n } \n }\n },\n mouseover: function(inEvent) {\n if (!this.isEventSi mulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n dispatcher.enterOver(e);\n }\n },\n mouseout: function(inEvent) {\ n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.pre pareEvent(inEvent);\n dispatcher.leaveOut(e);\n }\n },\n cance l: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatc her.cancel(e);\n this.cleanupMouse();\n },\n cleanupMouse: function() {\n pointermap['delete'](this.POINTER_ID);\n }\n };\n\n scope.mouseEv ents = mouseEvents;\n})(window.PointerEventsPolyfill);\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(fu nction(scope) {\n var dispatcher = scope.dispatcher;\n var captureInfo = dispa tcher.captureInfo;\n var findTarget = scope.findTarget;\n var allShadows = sco pe.targetFinding.allShadows.bind(scope.targetFinding);\n var pointermap = dispa tcher.pointermap;\n var touchMap = Array.prototype.map.call.bind(Array.prototyp e.map);\n // This should be long enough to ignore compat mouse events made by t ouch\n var DEDUP_TIMEOUT = 2500;\n var CLICK_COUNT_TIMEOUT = 200;\n var ATTRI B = 'touch-action';\n var INSTALLER;\n // The presence of touch event handlers blocks scrolling, and so we must be careful to\n // avoid adding handlers unne cessarily. Chrome plans to add a touch-action-delay property\n // (crbug.com/3 29559) to address this, and once we have that we can opt-in to a simpler\n // h andler registration mechanism. Rather than try to predict how exactly to opt-in to\n // that we'll just leave this disabled until there is a build of Chrome t o test.\n var HAS_TOUCH_ACTION_DELAY = false;\n \n // handler block for nativ e touch events\n var touchEvents = {\n events: [\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel'\n ],\n register: fun ction(target) {\n if (HAS_TOUCH_ACTION_DELAY) {\n dispatcher.listen( target, this.events);\n } else {\n INSTALLER.enableOnSubtree(target) ;\n }\n },\n unregister: function(target) {\n if (HAS_TOUCH_ACTI ON_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 el._scrol lType = st;\n dispatcher.listen(el, this.events);\n // set touch-a ction on shadows as well\n allShadows(el).forEach(function(s) {\n s._scrollType = st;\n dispatcher.listen(s, this.events);\n }, this);\n }\n },\n elementRemoved: function(el) {\n el._scrollTyp e = undefined;\n dispatcher.unlisten(el, this.events);\n // remove tou ch-action from shadow\n allShadows(el).forEach(function(s) {\n s._sc rollType = undefined;\n dispatcher.unlisten(s, this.events);\n }, th is);\n },\n elementChanged: function(el, oldValue) {\n var a = el.get Attribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n var o ldSt = this.touchActionToScrollType(oldValue);\n // simply update scrollTyp e if listeners are already established\n if (st && oldSt) {\n el._sc rollType = st;\n allShadows(el).forEach(function(s) {\n s._scrol lType = st;\n }, this);\n } else if (oldSt) {\n this.elementR emoved(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 = to uchAction;\n var st = this.scrollTypes;\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.S CROLLER.exec(t)) {\n return 'XY';\n }\n },\n POINTER_TYPE: 'to uch',\n firstTouch: null,\n isPrimaryTouch: function(inTouch) {\n ret urn this.firstTouch === inTouch.identifier;\n },\n setPrimaryTouch: functi on(inTouch) {\n // set primary touch if there no pointers, or the only poin ter is the mouse\n if (pointermap.pointers() === 0 || (pointermap.pointers( ) === 1 && pointermap.has(1))) {\n this.firstTouch = inTouch.identifier;\ n this.firstXY = {X: inTouch.clientX, Y: inTouch.clientY};\n this. scrolling = false;\n this.cancelResetClickCount();\n }\n },\n removePrimaryPointer: function(inPointer) {\n if (inPointer.isPrimary) {\n this.firstTouch = null;\n this.firstXY = null;\n this.reset ClickCount();\n }\n },\n clickCount: 0,\n resetId: null,\n rese tClickCount: function() {\n var fn = function() {\n this.clickCount = 0;\n this.resetId = null;\n }.bind(this);\n this.resetId = se tTimeout(fn, CLICK_COUNT_TIMEOUT);\n },\n cancelResetClickCount: function( ) {\n if (this.resetId) {\n clearTimeout(this.resetId);\n }\n },\n typeToButtons: function(type) {\n var ret = 0;\n if (type == = 'touchstart' || type === 'touchmove') {\n ret = 1;\n }\n retu rn ret;\n },\n touchToPointer: function(inTouch) {\n var cte = this.c urrentTouchEvent;\n var e = dispatcher.cloneEvent(inTouch);\n // Spec specifies that pointerId 1 is reserved for Mouse.\n // Touch identifiers ca n start at 0.\n // Add 2 to the touch identifier for compatibility.\n var id = e.pointerId = inTouch.identifier + 2;\n e.target = captureInfo[id] || findTarget(e);\n e.bubbles = true;\n e.cancelable = true;\n e .detail = this.clickCount;\n e.button = 0;\n e.buttons = this.typeToBu ttons(cte.type);\n e.width = inTouch.webkitRadiusX || inTouch.radiusX || 0; \n e.height = inTouch.webkitRadiusY || inTouch.radiusY || 0;\n e.press ure = inTouch.webkitForce || inTouch.force || 0.5;\n e.isPrimary = this.isP rimaryTouch(inTouch);\n e.pointerType = this.POINTER_TYPE;\n // forwar d touch preventDefaults\n var self = this;\n e.preventDefault = functi on() {\n self.scrolling = false;\n self.firstXY = null;\n c te.preventDefault();\n };\n return e;\n },\n processTouches: fun ction(inEvent, inFunction) {\n var tl = inEvent.changedTouches;\n this .currentTouchEvent = inEvent;\n for (var i = 0, t; i < tl.length; i++) {\n t = tl[i];\n inFunction.call(this, this.touchToPointer(t));\n }\n },\n // For single axis scrollers, determines whether the element sho uld emit\n // pointer events or behave as a scroller\n shouldScroll: funct ion(inEvent) {\n if (this.firstXY) {\n var ret;\n var scrollA xis = inEvent.currentTarget._scrollType;\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(p);\n }\n }, this);\n d.forEach(this.cancelOut, this);\n }\n },\n touchstart: function(inEvent) {\n this.vacuumTouches(inEvent);\n this. setPrimaryTouch(inEvent.changedTouches[0]);\n this.dedupSynthMouse(inEvent) ;\n if (!this.scrolling) {\n this.clickCount++;\n this.proces sTouches(inEvent, this.overDown);\n }\n },\n overDown: function(inPoi nter) {\n var p = pointermap.set(inPointer.pointerId, {\n target: in Pointer.target,\n out: inPointer,\n outTarget: inPointer.target\n });\n dispatcher.over(inPointer);\n dispatcher.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(inEvent);\n } else {\n inEvent.preventDefault();\n this.processTouches(inEvent, t his.moveOverOut);\n }\n }\n },\n moveOverOut: function(inPoint er) {\n var event = inPointer;\n var pointer = pointermap.get(event.po interId);\n // a finger drifted off the screen, ignore it\n if (!point er) {\n return;\n }\n var outEvent = pointer.out;\n var ou tTarget = pointer.outTarget;\n dispatcher.move(event);\n if (outEvent && outTarget !== event.target) {\n outEvent.relatedTarget = event.target; \n event.relatedTarget = outTarget;\n // recover from retargeting by shadow\n outEvent.target = outTarget;\n if (event.target) {\n dispatcher.leaveOut(outEvent);\n dispatcher.enterOver(event);\n } else {\n // clean up case when finger leaves the screen\n event.target = outTarget;\n event.relatedTarget = null;\n this.cancelOut(event);\n }\n }\n pointer.out = event;\n pointer.outTarget = event.target;\n },\n touchend: function(inEvent) {\n this.dedupSynthMouse(inEvent);\n this.processTouches(inEvent, this.upOu t);\n },\n upOut: function(inPointer) {\n if (!this.scrolling) {\n dispatcher.up(inPointer);\n dispatcher.out(inPointer);\n disp atcher.leave(inPointer);\n }\n this.cleanUpPointer(inPointer);\n }, \n touchcancel: function(inEvent) {\n this.processTouches(inEvent, this. cancelOut);\n },\n cancelOut: function(inPointer) {\n dispatcher.canc el(inPointer);\n dispatcher.out(inPointer);\n dispatcher.leave(inPoint er);\n this.cleanUpPointer(inPointer);\n },\n cleanUpPointer: functio n(inPointer) {\n pointermap['delete'](inPointer.pointerId);\n this.rem ovePrimaryPointer(inPointer);\n },\n // prevent synth mouse events from cr eating pointer events\n dedupSynthMouse: function(inEvent) {\n var lts = scope.mouseEvents.lastTouches;\n var t = inEvent.changedTouches[0];\n // only the primary finger will synth mouse events\n if (this.isPrimaryTou ch(t)) {\n // remember x/y of last touch\n var lt = {x: t.clientX, y: t.clientY};\n lts.push(lt);\n var fn = (function(lts, lt){\n var i = lts.indexOf(lt);\n if (i > -1) {\n lts.splic e(i, 1);\n }\n }).bind(null, lts, lt);\n setTimeout(fn, D EDUP_TIMEOUT);\n }\n }\n };\n\n if (!HAS_TOUCH_ACTION_DELAY) {\n IN STALLER = new scope.Installer(touchEvents.elementAdded, touchEvents.elementRemov ed, touchEvents.elementChanged, touchEvents);\n }\n\n scope.touchEvents = touc hEvents;\n})(window.PointerEventsPolyfill);\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(function(scop e) {\n var dispatcher = scope.dispatcher;\n var pointermap = dispatcher.pointe rmap;\n var HAS_BITMAP_TYPE = window.MSPointerEvent && typeof window.MSPointerE vent.MSPOINTER_TYPE_MOUSE === 'number';\n var msEvents = {\n events: [\n 'MSPointerDown',\n 'MSPointerMove',\n 'MSPointerUp',\n 'MSPoint erOut',\n 'MSPointerOver',\n 'MSPointerCancel',\n 'MSGotPointerCa pture',\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.cloneEvent(inEvent);\n e.pointerType = this.POINTER_TYPES[inEvent.pointerType];\n }\n retu rn e;\n },\n cleanup: function(id) {\n pointermap['delete'](id);\n },\n MSPointerDown: function(inEvent) {\n pointermap.set(inEvent.pointe rId, inEvent);\n var e = this.prepareEvent(inEvent);\n dispatcher.down (e);\n },\n MSPointerMove: function(inEvent) {\n var e = this.prepare Event(inEvent);\n dispatcher.move(e);\n },\n MSPointerUp: function(in Event) {\n var e = this.prepareEvent(inEvent);\n dispatcher.up(e);\n this.cleanup(inEvent.pointerId);\n },\n MSPointerOut: function(inEvent ) {\n var e = this.prepareEvent(inEvent);\n dispatcher.leaveOut(e);\n },\n MSPointerOver: function(inEvent) {\n var e = this.prepareEvent(i nEvent);\n dispatcher.enterOver(e);\n },\n MSPointerCancel: function( inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e );\n this.cleanup(inEvent.pointerId);\n },\n MSLostPointerCapture: fu nction(inEvent) {\n var e = dispatcher.makeEvent('lostpointercapture', inEv ent);\n dispatcher.dispatchEvent(e);\n },\n MSGotPointerCapture: func tion(inEvent) {\n var e = dispatcher.makeEvent('gotpointercapture', inEvent );\n dispatcher.dispatchEvent(e);\n }\n };\n\n scope.msEvents = msEven ts;\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 contains the handlers for native platform events.\n * From here, the dispatcher is called to create unified pointer events.\n * Included are touch events (v1), mouse events, and MSPointerEvents.\n */\n(function(scope) {\n var dispatcher = scope.dispatcher;\n\n // only activate if this platform does not have pointer events\n if (window.PointerEvent !== scope.PointerEvent) {\n\n if (window.na vigator.msPointerEnabled) {\n var tp = window.navigator.msMaxTouchPoints;\n Object.defineProperty(window.navigator, '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.ontouchstart !== undefined) {\n dispatch er.registerSource('touch', scope.touchEvents);\n }\n }\n\n dispatcher .register(document);\n }\n})(window.PointerEventsPolyfill);\n","/*\n * Copyrigh t 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 n = window.na vigator;\n var s, r;\n function assertDown(id) {\n if (!dispatcher.pointerm ap.has(id)) {\n throw new Error('InvalidPointerId');\n }\n }\n if (n.m sPointerEnabled) {\n s = function(pointerId) {\n assertDown(pointerId);\ n this.msSetPointerCapture(pointerId);\n };\n r = function(pointerId) {\n assertDown(pointerId);\n this.msReleasePointerCapture(pointerId); \n };\n } else {\n s = function setPointerCapture(pointerId) {\n ass ertDown(pointerId);\n dispatcher.setCapture(pointerId, this);\n };\n r = function releasePointerCapture(pointerId) {\n assertDown(pointerId);\n dispatcher.releaseCapture(pointerId, this);\n };\n }\n if (window.Elem ent && !Element.prototype.setPointerCapture) {\n Object.defineProperties(Elem ent.prototype, {\n 'setPointerCapture': {\n value: s\n },\n 'releasePointerCapture': {\n value: r\n }\n });\n }\n})(window .PointerEventsPolyfill);\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(function(scope) {\n /**\n * T his class contains the gesture recognizers that create the PointerGesture\n * events.\n *\n * @class PointerGestures\n * @static\n */\n scope = scope || {};\n scope.utils = {\n LCA: {\n // Determines the lowest node in t he ancestor chain of a and b\n find: function(a, b) {\n if (a === b) {\n return a;\n }\n // fast case, a is a direct descenda nt of b or vice versa\n if (a.contains) {\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 return n;\n },\n depth: function (n) {\n var d = 0;\n while(n) {\n d++;\n n = n.p arentNode;\n }\n return d;\n }\n }\n };\n scope.findLCA = function(a, b) {\n return scope.utils.LCA.find(a, b);\n }\n window.Pointe rGestures = scope;\n})(window.PointerGestures);\n","/*\n * Copyright 2013 The Po lymer 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 * Th is module implements an map of pointer states\n */\n(function(scope) {\n var US E_MAP = window.Map && window.Map.prototype.forEach;\n var POINTERS_FN = functio n(){ return this.size; };\n function PointerMap() {\n if (USE_MAP) {\n var m = new Map();\n m.pointers = POINTERS_FN;\n return m;\n } else {\n this.keys = [];\n this.values = [];\n }\n }\n\n PointerMap.p rototype = {\n set: function(inId, inEvent) {\n var i = this.keys.indexO f(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.indexO f(inId);\n return this.values[i];\n },\n clear: function() {\n t his.keys.length = 0;\n this.values.length = 0;\n },\n // return value , key, map\n forEach: function(callback, thisArg) {\n this.values.forEac h(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.PointerGestures);\n" ,"/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of thi s source code is governed by a BSD-style\n * license that can be found in the LI CENSE 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 Level 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 'ta rget',\n 'currentTarget',\n 'screenX',\n 'screenY',\n 'pageX',\n 'pageY',\n 'tapPrevented'\n ];\n\n var CLONE_DEFAULTS = [\n // MouseEven t\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 L evel 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 handled Events: new WeakMap(),\n targets: new WeakMap(),\n handlers: {},\n reco gnizers: {},\n events: {},\n // Add a new gesture recognizer to the event listeners.\n // Recognizer needs an `events` property.\n registerRecognize r: function(inName, inRecognizer) {\n var r = inRecognizer;\n this.rec ognizers[inName] = r;\n r.events.forEach(function(e) {\n if (r[e]) { \n this.events[e] = true;\n var f = r[e].bind(r);\n t his.addHandler(e, f);\n }\n }, this);\n },\n addHandler: funct ion(inEvent, inFn) {\n var e = inEvent;\n if (!this.handlers[e]) {\n this.handlers[e] = [];\n }\n this.handlers[e].push(inFn);\n } ,\n // add event listeners for inTarget\n registerTarget: function(inTarge t) {\n this.listen(Object.keys(this.events), inTarget);\n },\n // rem ove event listeners for inTarget\n unregisterTarget: function(inTarget) {\n this.unlisten(Object.keys(this.events), inTarget);\n },\n // LISTENER LOGIC\n eventHandler: function(inEvent) {\n if (this.handledEvents.get(i nEvent)) {\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 shadowed) target correct for\n // async dispatching\n var e = this.cloneEvent(inEvent);\n requestAnimationFram e(this.runQueue.bind(this, inHandlerFns, e));\n },\n // Dispatch the queue d events\n runQueue: function(inHandlers, inEvent) {\n this.currentPoint erId = inEvent.pointerId;\n for (var i = 0, f, l = inHandlers.length; (i < l) && (f = inHandlers[i]); i++) {\n f(inEvent);\n }\n this.curr entPointerId = 0;\n },\n // set up event listeners\n listen: function(i nEvents, inTarget) {\n inEvents.forEach(function(e) {\n this.addEven t(e, this.boundHandler, false, inTarget);\n }, this);\n },\n // remov e event listeners\n unlisten: function(inEvents) {\n inEvents.forEach(fu nction(e) {\n this.removeEvent(e, this.boundHandler, false, inTarget);\n }, this);\n },\n addEvent: function(inEventName, inEventHandler, inCa pture, inTarget) {\n inTarget.addEventListener(inEventName, inEventHandler, inCapture);\n },\n removeEvent: function(inEventName, inEventHandler, inC apture, inTarget) {\n inTarget.removeEventListener(inEventName, inEventHand ler, inCapture);\n },\n // EVENT CREATION AND TRACKING\n // Creates a n ew Event of type `inType`, based on the information in\n // `inEvent`.\n m akeEvent: function(inType, inDict) {\n return new PointerGestureEvent(inTyp e, inDict);\n },\n /*\n * Returns a snapshot of inEvent, with writable properties.\n *\n * @method cloneEvent\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 }\n return eventCopy;\n },\n // Dispatches the event to its target.\n dispatchEvent: function(inEvent, inTarget) {\n var t = inTarget || this.targets.get(inEvent);\n if (t) {\n t.dispatchEvent(inEvent);\n if (inEvent.tapPrevented) {\n this.preventTap(this.currentPointerId);\n }\n }\n },\n a syncDispatchEvent: function(inEvent, inTarget) {\n requestAnimationFrame(th is.dispatchEvent.bind(this, inEvent, inTarget));\n },\n preventTap: functi on(inPointerId) {\n var t = this.recognizers.tap;\n if (t){\n t .preventTap(inPointerId);\n }\n }\n };\n dispatcher.boundHandler = dis patcher.eventHandler.bind(dispatcher);\n // recognizers call into the dispatche r and load later\n // solve the chicken and egg problem by having registerScope s module run last\n dispatcher.registerQueue = [];\n dispatcher.immediateRegis ter = false;\n scope.dispatcher = dispatcher;\n /**\n * Enable gesture event s for a given scope, typically\n * [ShadowRoots](https://dvcs.w3.org/hg/webcom ponents/raw-file/tip/spec/shadow/index.html#shadow-root-object).\n *\n * @fo r PointerGestures\n * @method register\n * @param {ShadowRoot} scope A top l evel scope to enable gesture\n * support on.\n */\n scope.register = functi on(inScope) {\n if (dispatcher.immediateRegister) {\n var pe = window.Po interEventsPolyfill;\n if (pe) {\n pe.register(inScope);\n }\n scope.dispatcher.registerTarget(inScope);\n } else {\n dispatcher.r egisterQueue.push(inScope);\n }\n };\n scope.register(document);\n})(window .PointerGestures);\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/**\n * This event is fired when a poin ter is held down for 200ms.\n *\n * @module PointerGestures\n * @submodule Event s\n * @class hold\n */\n/**\n * Type of pointer that made the holding event.\n * @type String\n * @property pointerType\n */\n/**\n * Screen X axis position of the held pointer\n * @type Number\n * @property clientX\n */\n/**\n * Screen Y a xis position of the held pointer\n * @type Number\n * @property clientY\n */\n/* *\n * Type of pointer that made the holding event.\n * @type String\n * @propert y pointerType\n */\n/**\n * This event is fired every 200ms while a pointer is h eld down.\n *\n * @class holdpulse\n * @extends hold\n */\n/**\n * Milliseconds pointer has been held down.\n * @type Number\n * @property holdTime\n */\n/**\n * This event is fired when a held pointer is released or moved.\n *\n * @class r eleased\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_DELAY: 200,\n // pointer can move WIGGLE_THRESHOLD pixels before not cou nting as a hold\n WIGGLE_THRESHOLD: 16,\n events: [\n 'pointerdown',\ n 'pointermove',\n 'pointerup',\n 'pointercancel'\n ],\n he ldPointer: null,\n holdJob: null,\n pulse: function() {\n var hold = Date.now() - this.heldPointer.timeStamp;\n var type = this.held ? 'holdpuls e' : 'hold';\n this.fireHold(type, hold);\n this.held = true;\n },\ n cancel: function() {\n clearInterval(this.holdJob);\n if (this.he ld) {\n this.fireHold('release');\n }\n this.held = false;\n this.heldPointer = null;\n this.target = null;\n this.holdJob = nul l;\n },\n pointerdown: function(inEvent) {\n if (inEvent.isPrimary && !this.heldPointer) {\n this.heldPointer = inEvent;\n this.target = inEvent.target;\n this.holdJob = setInterval(this.pulse.bind(this), thi s.HOLD_DELAY);\n }\n },\n pointerup: function(inEvent) {\n if (t his.heldPointer && this.heldPointer.pointerId === inEvent.pointerId) {\n this.cancel();\n }\n },\n pointercancel: function(inEvent) {\n t his.cancel();\n },\n pointermove: function(inEvent) {\n if (this.held Pointer && this.heldPointer.pointerId === inEvent.pointerId) {\n var x = inEvent.clientX - this.heldPointer.clientX;\n var y = inEvent.clientY - t his.heldPointer.clientY;\n if ((x * x + y * y) > this.WIGGLE_THRESHOLD) { \n this.cancel();\n }\n }\n },\n fireHold: function(i nType, inHoldTime) {\n var p = {\n pointerType: this.heldPointer.poi nterType,\n clientX: this.heldPointer.clientX,\n clientY: this.hel dPointer.clientY\n };\n if (inHoldTime) {\n p.holdTime = inHold Time;\n }\n var e = dispatcher.makeEvent(inType, p);\n dispatcher .dispatchEvent(e, this.target);\n if (e.tapPrevented) {\n dispatcher .preventTap(this.heldPointer.pointerId);\n }\n }\n };\n dispatcher.reg isterRecognizer('hold', hold);\n})(window.PointerGestures);\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 event denotes the beginning of a series of tracking events.\n *\n * @module PointerGestures\n * @submodule Events\n * @class trackstart\n */\n/** \n * Pixels moved in the x direction since trackstart.\n * @type Number\n * @pro perty dx\n */\n/**\n * Pixes moved in the y direction since trackstart.\n * @typ e Number\n * @property dy\n */\n/**\n * Pixels moved in the x direction since th e last track.\n * @type Number\n * @property ddx\n */\n/**\n * Pixles moved in t he y direction since the last track.\n * @type Number\n * @property ddy\n */\n/* *\n * The clientX position of the track gesture.\n * @type Number\n * @property clientX\n */\n/**\n * The clientY position of the track gesture.\n * @type Numbe r\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 trac k gesture.\n * @type Number\n * @property pageY\n */\n/**\n * The screenX positi on of the track gesture.\n * @type Number\n * @property screenX\n */\n/**\n * Th e screenY position of the track gesture.\n * @type Number\n * @property screenY\ n */\n/**\n * The last x axis direction of the pointer.\n * @type Number\n * @pr operty xDirection\n */\n/**\n * The last y axis direction of the pointer.\n * @t ype Number\n * @property yDirection\n */\n/**\n * A shared object between all tr acking events.\n * @type Object\n * @property trackInfo\n */\n/**\n * The elemen t currently under 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 pointerType\n */\n/**\n *\n * This event fires for all pointer moveme nt being tracked.\n *\n * @class track\n * @extends trackstart\n */\n/**\n * Thi s event fires when the pointer is no longer being tracked.\n *\n * @class tracke nd\n * @extends trackstart\n */\n\n (function(scope) {\n var dispatcher = scop e.dispatcher;\n var pointermap = new scope.PointerMap();\n var track = {\n events: [\n 'pointerdown',\n 'pointermove',\n 'pointerup',\ n 'pointercancel'\n ],\n WIGGLE_THRESHOLD: 4,\n clampDir: func tion(inDelta) {\n return inDelta > 0 ? 1 : -1;\n },\n calcPosition Delta: function(inA, inB) {\n var x = 0, y = 0;\n if (inA && inB) {\ n x = inB.pageX - inA.pageX;\n y = inB.pageY - inA.pageY;\n }\n return {x: x, y: y};\n },\n fireTrack: function(inType, inEv ent, inTrackingData) {\n var t = inTrackingData;\n var d = this.calc PositionDelta(t.downEvent, inEvent);\n var dd = this.calcPositionDelta(t.l astMoveEvent, inEvent);\n if (dd.x) {\n t.xDirection = this.clampD ir(dd.x);\n }\n if (dd.y) {\n t.yDirection = this.clampDir(d d.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 page Y: inEvent.pageY,\n screenX: inEvent.screenX,\n screenY: inEvent .screenY,\n xDirection: t.xDirection,\n yDirection: t.yDirection ,\n trackInfo: t.trackInfo,\n relatedTarget: inEvent.target,\n pointerType: inEvent.pointerType\n };\n var e = dispatcher.ma keEvent(inType, trackData);\n t.lastMoveEvent = inEvent;\n dispatche r.dispatchEvent(e, t.downTarget);\n },\n pointerdown: function(inEvent) {\n if (inEvent.isPrimary && (inEvent.pointerType === 'mouse' ? inEvent.bu ttons === 1 : true)) {\n var p = {\n downEvent: inEvent,\n downTarget: inEvent.target,\n trackInfo: {},\n lastMo veEvent: null,\n xDirection: 0,\n yDirection: 0,\n tracking: false\n };\n pointermap.set(inEvent.pointerId, p);\n }\n },\n pointermove: function(inEvent) {\n var p = pointerm ap.get(inEvent.pointerId);\n if (p) {\n if (!p.tracking) {\n var d = this.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_THRESHOLD\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 pointerup: function(inEvent) {\n var p = pointermap.get(inEv ent.pointerId);\n if (p) {\n if (p.tracking) {\n this.fi reTrack('trackend', inEvent, p);\n }\n pointermap.delete(inEvent .pointerId);\n }\n },\n pointercancel: function(inEvent) {\n this.pointerup(inEvent);\n }\n };\n dispatcher.registerRecognizer('trac k', track);\n })(window.PointerGestures);\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/**\n * This eve nt denotes a rapid down/move/up sequence from a pointer.\n *\n * The event is se nt to the first element the pointer went down on.\n *\n * @module PointerGesture s\n * @submodule Events\n * @class flick\n */\n/**\n * Signed velocity of the fl ick in the x direction.\n * @property xVelocity\n * @type Number\n */\n/**\n * S igned velocity of the flick in the y direction.\n * @type Number\n * @property y Velocity\n */\n/**\n * Unsigned total velocity of the flick.\n * @type Number\n * @property velocity\n */\n/**\n * Angle of the flick in degrees, with 0 along t he\n * positive x axis.\n * @type Number\n * @property angle\n */\n/**\n * Axis with the greatest absolute velocity. Denoted\n * with 'x' or 'y'.\n * @type Stri ng\n * @property majorAxis\n */\n/**\n * Type of the pointer that made the flick .\n * @type String\n * @property pointerType\n */\n\n(function(scope) {\n var d ispatcher = scope.dispatcher;\n var flick = {\n // TODO(dfreedman): value sh ould be low enough for low speed flicks, but\n // high enough to remove accid ental flicks\n MIN_VELOCITY: 0.5 /* px/ms */,\n MAX_QUEUE: 4,\n moveQue ue: [],\n target: null,\n pointerId: null,\n events: [\n 'pointerd own',\n 'pointermove',\n 'pointerup',\n 'pointercancel'\n ],\n pointerdown: function(inEvent) {\n if (inEvent.isPrimary && !this.point erId) {\n this.pointerId = inEvent.pointerId;\n this.target = inEv ent.target;\n this.addMove(inEvent);\n }\n },\n pointermove: f unction(inEvent) {\n if (inEvent.pointerId === this.pointerId) {\n t his.addMove(inEvent);\n }\n },\n pointerup: function(inEvent) {\n if (inEvent.pointerId === this.pointerId) {\n this.fireFlick(inEvent);\ n }\n this.cleanup();\n },\n pointercancel: function(inEvent) {\ n this.cleanup();\n },\n cleanup: function() {\n this.moveQueue = [];\n this.target = null;\n this.pointerId = null;\n },\n addM ove: function(inEvent) {\n if (this.moveQueue.length >= this.MAX_QUEUE) {\n this.moveQueue.shift();\n }\n this.moveQueue.push(inEvent);\n },\n fireFlick: 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.timeS tamp;\n dx = e.clientX - m.clientX, dy = e.clientY - m.clientY;\n tx = dx / dt, ty = 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 = Mat h.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: inEve nt.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 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\n/*\n * Basic strat egy: find the farthest apart points, use as diameter of circle\n * react to size change and rotation of the chord\n */\n\n/**\n * @module PointerGestures\n * @s ubmodule Events\n * @class pinch\n */\n/**\n * Scale of the pinch zoom gesture\n * @property scale\n * @type Number\n */\n/**\n * Center X position of pointers causing pinch\n * @property centerX\n * @type Number\n */\n/**\n * Center Y posi tion of pointers causing pinch\n * @property centerY\n * @type Number\n */\n\n/* *\n * @module PointerGestures\n * @submodule Events\n * @class rotate\n */\n/**\ n * Angle (in degrees) of rotation. Measured from starting positions of pointers .\n * @property angle\n * @type Number\n */\n/**\n * Center X position of pointe rs causing rotation\n * @property centerX\n * @type Number\n */\n/**\n * Center Y position of pointers causing rotation\n * @property centerY\n * @type Number\n */\n(function(scope) {\n var dispatcher = scope.dispatcher;\n var pointermap = new scope.PointerMap();\n var RAD_TO_DEG = 180 / Math.PI;\n var pinch = {\n events: [\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointercancel'\n ],\n reference: {},\n pointerdown: function(ev) { \n pointermap.set(ev.pointerId, ev);\n if (pointermap.pointers() == 2) {\n var points = this.calcChord();\n var angle = this.calcAngle(p oints);\n this.reference = {\n angle: angle,\n diameter : points.diameter,\n target: scope.findLCA(points.a.target, points.b.ta rget)\n };\n }\n },\n pointerup: function(ev) {\n pointer map.delete(ev.pointerId);\n },\n pointermove: function(ev) {\n if (po intermap.has(ev.pointerId)) {\n pointermap.set(ev.pointerId, ev);\n if (pointermap.pointers() > 1) {\n this.calcPinchRotate();\n } \n }\n },\n pointercancel: function(ev) {\n this.pointerup(ev);\ n },\n dispatchPinch: function(diameter, points) {\n var zoom = diame ter / this.reference.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 dispatchRotate: function(angle, points) {\n var diff = Math.r ound((angle - this.reference.angle) % 360);\n var ev = dispatcher.makeEvent ('rotate', {\n angle: diff,\n centerX: points.center.x,\n c enterY: points.center.y\n });\n dispatcher.dispatchEvent(ev, this.refe rence.target);\n },\n calcPinchRotate: function() {\n var points = th is.calcChord();\n var diameter = points.diameter;\n var angle = this.c alcAngle(points);\n if (diameter != this.reference.diameter) {\n thi s.dispatchPinch(diameter, points);\n }\n if (angle != this.reference.a ngle) {\n this.dispatchRotate(angle, points);\n }\n },\n calcC hord: function() {\n var pointers = [];\n pointermap.forEach(function( p) {\n pointers.push(p);\n });\n var dist = 0;\n // start with at least two pointers\n var points = {a: pointers[0], b: pointers[1]}; \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.clie ntX) / 2;\n y = Math.abs(points.a.clientY + points.b.clientY) / 2;\n p oints.center = { x: x, y: y };\n points.diameter = dist;\n return poin ts;\n },\n calcAngle: function(points) {\n var x = points.a.clientX - points.b.clientX;\n var y = points.a.clientY - points.b.clientY;\n re turn (360 + Math.atan2(y, x) * RAD_TO_DEG) % 360;\n },\n };\n dispatcher.re gisterRecognizer('pinch', pinch);\n})(window.PointerGestures);\n","/*\n * Copyri ght 2013 The Polymer Authors. All rights reserved.\n * Use of this source code i s governed 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 ev ent from being created by calling\n * `event.preventTap`.\n *\n * Any pointer ev ent can prevent the tap by setting the `tapPrevented` property\n * on itself.\n *\n * @module 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 ax is position of the tap.\n * @property y\n * @type Number\n */\n/**\n * Type of t he pointer that made the tap.\n * @property pointerType\n * @type String\n */\n( function(scope) {\n var dispatcher = scope.dispatcher;\n var pointermap = new scope.PointerMap();\n var tap = {\n events: [\n 'pointerdown',\n ' pointermove',\n 'pointerup',\n 'pointercancel',\n 'keyup'\n ], \n pointerdown: function(inEvent) {\n if (inEvent.isPrimary && !inEvent. tapPrevented) {\n pointermap.set(inEvent.pointerId, {\n target: inEvent.target,\n buttons: inEvent.buttons,\n x: inEvent.clien tX,\n y: inEvent.clientY\n });\n }\n },\n pointermove : function(inEvent) {\n if (inEvent.isPrimary) {\n var start = point ermap.get(inEvent.pointerId);\n if (start) {\n if (inEvent.tapPr evented) {\n pointermap.delete(inEvent.pointerId);\n }\n }\n }\n },\n shouldTap: function(e, downState) {\n if (!e.ta pPrevented) {\n if (e.pointerType === 'mouse') {\n // only allow left click to tap for mouse\n return downState.buttons === 1;\n } else {\n return true;\n }\n }\n },\n pointerup: fu nction(inEvent) {\n var start = pointermap.get(inEvent.pointerId);\n i f (start && this.shouldTap(inEvent, start)) {\n var t = scope.findLCA(sta rt.target, inEvent.target);\n if (t) {\n var e = dispatcher.make Event('tap', {\n x: inEvent.clientX,\n y: inEvent.clientY, \n detail: inEvent.detail,\n pointerType: inEvent.pointerT ype\n });\n dispatcher.dispatchEvent(e, t);\n }\n }\n pointermap.delete(inEvent.pointerId);\n },\n pointercancel: funct ion(inEvent) {\n pointermap.delete(inEvent.pointerId);\n },\n keyup: function(inEvent) {\n var code = inEvent.keyCode;\n // 32 == spacebar\ n if (code === 32) {\n var t = inEvent.target;\n if (!(t inst anceof HTMLInputElement || t instanceof HTMLTextAreaElement)) {\n dispa tcher.dispatchEvent(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 pointermap.delete(inPointerId);\n }\n };\n dispatcher.registerRecogn izer('tap', tap);\n})(window.PointerGestures);\n","/*\n * Copyright 2014 The Pol ymer 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 * Bec ause recognizers are loaded after dispatcher, we have to wait to register\n * sc opes until after all the recognizers.\n */\n(function(scope) {\n var dispatcher = scope.dispatcher;\n function registerScopes() {\n dispatcher.immediateReg ister = true;\n var rq = dispatcher.registerQueue;\n rq.forEach(scope.regi ster);\n rq.length = 0;\n }\n if (document.readyState === 'complete') {\n registerScopes();\n } else {\n // register scopes after a steadystate is r eached\n // less MutationObserver churn\n document.addEventListener('ready statechange', function() {\n if (document.readyState === 'complete') {\n registerScopes();\n }\n });\n }\n})(window.PointerGestures);\n","/ / Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n// This code may only be used under the BSD style license found at http://polymer.github .io/LICENSE.txt\n// The complete set of authors may be found at http://polymer.g ithub.io/AUTHORS.txt\n// The complete set of contributors may be found at http:/ /polymer.github.io/CONTRIBUTORS.txt\n// Code distributed by Google as part of th e polymer project is also\n// subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n\n(function(global) {\n 'use strict';\n\n var filter = Array.prototype.filter.call.bind(Array.prototype.filter);\n\n fu nction getTreeScope(node) {\n while (node.parentNode) {\n node = node.pa rentNode;\n }\n\n return typeof node.getElementById === 'function' ? node : null;\n }\n\n Node.prototype.bind = function(name, observable) {\n consol e.error('Unhandled binding to Node: ', this, name, observable);\n };\n\n funct ion updateBindings(node, name, binding) {\n var bindings = node.bindings_;\n if (!bindings)\n bindings = node.bindings_ = {};\n\n if (bindings[nam e])\n binding[name].close();\n\n return bindings[name] = binding;\n }\n \n function returnBinding(node, name, binding) {\n return binding;\n }\n\n function sanitizeValue(value) {\n return value == null ? '' : value;\n }\n\ n function updateText(node, value) {\n node.data = sanitizeValue(value);\n }\n\n function textBinding(node) {\n return function(value) {\n return updateText(node, value);\n };\n }\n\n var maybeUpdateBindings = returnBindi ng;\n\n Object.defineProperty(Platform, 'enableBindingsReflection', {\n get: function() {\n return maybeUpdateBindings === updateBindings;\n },\n set: function(enable) {\n maybeUpdateBindings = enable ? updateBindings : returnBinding;\n return enable;\n },\n configurable: true\n });\n\n Text.prototype.bind = function(name, value, oneTime) {\n if (name !== 'textC ontent')\n return Node.prototype.bind.call(this, name, value, oneTime);\n\n if (oneTime)\n return updateText(this, value);\n\n var observable = value;\n updateText(this, observable.open(textBinding(this)));\n return ma ybeUpdateBindings(this, name, observable);\n }\n\n function updateAttribute(el , name, conditional, value) {\n if (conditional) {\n if (value)\n el.setAttribute(name, '');\n else\n el.removeAttribute(name);\n return;\n }\n\n el.setAttribute(name, sanitizeValue(value));\n }\n\n f unction 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 conditional = name[na me.length - 1] == '?';\n if (conditional) {\n this.removeAttribute(name) ;\n name = name.slice(0, -1);\n }\n\n if (oneTime)\n return upda teAttribute(this, name, conditional, value);\n\n\n var observable = value;\n updateAttribute(this, name, conditional,\n observable.open(attributeBi nding(this, name, conditional)));\n\n return maybeUpdateBindings(this, name, observable);\n };\n\n var checkboxEventType;\n (function() {\n // Attempt to feature-detect which event (change or click) is fired first\n // for check boxes.\n var div = document.createElement('div');\n var checkbox = div.app endChild(document.createElement('input'));\n checkbox.setAttribute('type', 'c heckbox');\n var first;\n var count = 0;\n checkbox.addEventListener('c lick', function(e) {\n count++;\n first = first || 'click';\n });\n checkbox.addEventListener('change', function() {\n count++;\n firs t = first || 'change';\n });\n\n var event = document.createEvent('MouseEv ent');\n event.initMouseEvent(\"click\", true, true, window, 0, 0, 0, 0, 0, f alse,\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 = co unt == 1 ? 'change' : first;\n })();\n\n function getEventForInputType(element ) {\n switch (element.type) {\n case 'checkbox':\n return checkbo xEventType;\n case 'radio':\n case 'select-multiple':\n case 'sel ect-one':\n return 'change';\n case 'range':\n if (/Trident|M SIE/.test(navigator.userAgent))\n return 'change';\n default:\n return 'input';\n }\n }\n\n function updateInput(input, property, valu e, santizeFn) {\n input[property] = (santizeFn || sanitizeValue)(value);\n } \n\n function inputBinding(input, property, santizeFn) {\n return function(v alue) {\n return updateInput(input, property, value, santizeFn);\n }\n }\n\n function noop() {}\n\n function bindInputEvent(input, property, observab le, postEventFn) {\n var eventType = getEventForInputType(input);\n\n func tion eventHandler() {\n observable.setValue(input[property]);\n observ able.discardChanges();\n (postEventFn || noop)(input);\n Platform.perf ormMicrotaskCheckpoint();\n }\n input.addEventListener(eventType, eventHan dler);\n\n return {\n close: function() {\n input.removeEventList ener(eventType, eventHandler);\n observable.close();\n },\n\n o bservable_: observable\n }\n }\n\n function booleanSanitize(value) {\n r eturn Boolean(value);\n }\n\n // |element| is assumed to be an HTMLInputElemen t with |type| == 'radio'.\n // Returns an array containing all radio buttons ot her than |element| that\n // have the same |name|, either in the form that |ele ment| belongs to or,\n // if no form, in the document tree to which |element| b elongs.\n //\n // This implementation is based upon the HTML spec definition o f a\n // \"radio button group\":\n // http://www.whatwg.org/specs/web-apps/c urrent-work/multipage/number-state.html#radio-button-group\n //\n function get AssociatedRadioButtons(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 = getTreeSco pe(element);\n if (!treeScope)\n return [];\n var radios = tree Scope.querySelectorAll(\n 'input[type=\"radio\"][name=\"' + element.nam e + '\"]');\n return filter(radios, function(el) {\n return el != el ement && !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 // check 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.observable_.setValue(false);\n }\n });\n }\n }\n\n HTMLInputElement.prototype.bind = function(name, value, oneTime) {\n if (name !== 'value' && name !== 'checked')\n return HTMLElement.prototype. bind.call(this, name, value, oneTime);\n\n this.removeAttribute(name);\n v ar sanitizeFn = name == 'checked' ? booleanSanitize : sanitizeValue;\n var po stEventFn = name == 'checked' ? checkedPostEvent : noop;\n\n if (oneTime)\n return updateInput(this, name, value, sanitizeFn);\n\n\n var observable = value;\n var binding = bindInputEvent(this, name, observable, postEventFn);\ n updateInput(this, name,\n observable.open(inputBinding(this, name, sanitizeFn)),\n sanitizeFn);\n\n // Checkboxes may need to update bindings of other checkboxes.\n return updateBindings(this, name, binding);\n }\n\n HTMLTextAreaElement.prototype.bind = function(name, value, o neTime) {\n if (name !== 'value')\n return HTMLElement.prototype.bind.ca ll(this, name, value, oneTime);\n\n this.removeAttribute('value');\n\n if (oneTime)\n return updateInput(this, 'value', value);\n\n var observable = value;\n var binding = bindInputEvent(this, 'value', observable);\n upd ateInput(this, 'value',\n observable.open(inputBinding(this, 'val ue', sanitizeValue)));\n return maybeUpdateBindings(this, name, binding);\n }\n\n function updateOption(option, value) {\n var parentNode = option.paren tNode;;\n var select;\n var selectBinding;\n var oldValue;\n if (par entNode instanceof HTMLSelectElement &&\n parentNode.bindings_ &&\n parentNode.bindings_.value) {\n select = parentNode;\n selectBinding = select.bindings_.value;\n oldValue = select.value;\n }\n\n option. value = sanitizeValue(value);\n\n if (select && select.value != oldValue) {\n selectBinding.observable_.setValue(select.value);\n selectBinding.obs ervable_.discardChanges();\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, value, oneTime) {\n if (name !== 'value')\n return HTMLE lement.prototype.bind.call(this, name, value, oneTime);\n\n this.removeAttrib ute('value');\n\n if (oneTime)\n return updateOption(this, value);\n\n var observable = value;\n var binding = bindInputEvent(this, 'value', obser vable);\n updateOption(this, observable.open(optionBinding(this)));\n retu rn maybeUpdateBindings(this, name, binding);\n }\n\n HTMLSelectElement.prototy pe.bind = function(name, value, oneTime) {\n if (name === 'selectedindex')\n name = 'selectedIndex';\n\n if (name !== 'selectedIndex' && name !== 'va lue')\n return HTMLElement.prototype.bind.call(this, name, value, oneTime); \n\n this.removeAttribute(name);\n\n if (oneTime)\n return updateInpu t(this, name, value);\n\n var observable = value;\n var binding = bindInpu tEvent(this, name, observable);\n updateInput(this, name,\n ob servable.open(inputBinding(this, name)));\n\n // Option update events may nee d to access select bindings.\n return updateBindings(this, name, binding);\n }\n})(this);\n","// Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n// This code may only be used under the BSD style license found at ht tp://polymer.github.io/LICENSE.txt\n// The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n// The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n// Code distributed by G oogle as part of the polymer project is also\n// subject to an additional IP rig hts grant found at http://polymer.github.io/PATENTS.txt\n\n(function(global) {\n 'use strict';\n\n function assert(v) {\n if (!v)\n throw new Error('A ssertion failed');\n }\n\n var forEach = Array.prototype.forEach.call.bind(Arr ay.prototype.forEach);\n\n function getFragmentRoot(node) {\n var p;\n wh ile (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 = getFragmentRoot( node);\n\n if (node.protoContent_)\n ref = node.protoContent_.queryS elector(selector);\n else if (node.getElementById)\n ref = node.getE lementById(id);\n\n if (ref || !node.templateCreator_)\n break\n\n node = node.templateCreator_;\n }\n\n return ref;\n }\n\n function g etInstanceRoot(node) {\n while (node.parentNode) {\n node = node.parentN ode;\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: function(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(key);\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.keys.le ngth; i++)\n f.call(opt_this || this, this.values[i], this.keys[i], thi s);\n }\n };\n }\n\n // JScript does not have __proto__. We wrap all o bject literals with\n // createObject which uses Object.create, Object.definePr operty and\n // Object.getOwnPropertyDescriptor to create a new object that doe s 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) { return obj; } :\n function(obj) {\n var proto = obj.__proto__;\n if (!proto)\n return ob j;\n var newObject = Object.create(proto);\n Object.getOwnProperty Names(obj).forEach(function(name) {\n Object.defineProperty(newObject, name,\n Object.getOwnPropertyDescriptor(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 true;\n return this.documentE lement.contains(node);\n }\n }\n\n var BIND = 'bind';\n var REPEAT = 'repe at';\n var IF = 'if';\n\n var templateAttributeDirectives = {\n 'template': true,\n 'repeat': true,\n 'bind': true,\n 'ref': true\n };\n\n var s emanticTemplateElements = {\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 'OPTGROUP': true\n };\n\n var hasTemplateElement = typeof HTMLTemplateElement !== 'undefin ed';\n if (hasTemplateElement) {\n // TODO(rafaelw): Remove when fix for\n // https://codereview.chromium.org/164803002/\n // makes it to Chrome relea se.\n (function() {\n var t = document.createElement('template');\n var d = t.content.ownerDocument;\n var html = d.appendChild(d.createElemen t('html'));\n var head = html.appendChild(d.createElement('head'));\n var base = d.createElement('base');\n base.href = document.baseURI;\n head.appendChild(base);\n })();\n }\n\n var allTemplatesSelectors = 'templa te, ' +\n Object.keys(semanticTemplateElements).map(function(tagName) {\n return tagName.toLowerCase() + '[template]';\n }).join(', ');\n\n fu nction isSVGTemplate(el) {\n return el.tagName == 'template' &&\n e l.namespaceURI == 'http://www.w3.org/2000/svg';\n }\n\n function isHTMLTemplat e(el) {\n return el.tagName == 'TEMPLATE' &&\n el.namespaceURI == ' http://www.w3.org/1999/xhtml';\n }\n\n function isAttributeTemplate(el) {\n return Boolean(semanticTemplateElements[el.tagName] &&\n el.h asAttribute('template'));\n }\n\n function isTemplate(el) {\n if (el.isTemp late_ === undefined)\n el.isTemplate_ = el.tagName == 'TEMPLATE' || isAttri buteTemplate(el);\n\n return el.isTemplate_;\n }\n\n // FIXME: Observe temp lates being added/removed from documents\n // FIXME: Expose imperative API to d ecorate and observe templates in\n // \"disconnected tress\" (e.g. ShadowRoot)\ n document.addEventListener('DOMContentLoaded', function(e) {\n bootstrapTem platesRecursivelyFrom(document);\n // FIXME: Is this needed? Seems like it sh ouldn't be.\n Platform.performMicrotaskCheckpoint();\n }, false);\n\n funct ion forAllTemplatesFrom(node, fn) {\n var subTemplates = node.querySelectorAl l(allTemplatesSelectors);\n\n if (isTemplate(node))\n fn(node)\n forE ach(subTemplates, fn);\n }\n\n function bootstrapTemplatesRecursivelyFrom(node ) {\n function bootstrap(template) {\n if (!HTMLTemplateElement.decorate (template))\n bootstrapTemplatesRecursivelyFrom(template.content);\n } \n\n forAllTemplatesFrom(node, bootstrap);\n }\n\n if (!hasTemplateElement) {\n /**\n * This represents a <template> element.\n * @constructor\n * @extends {HTMLElement}\n */\n global.HTMLTemplateElement = functio n() {\n throw TypeError('Illegal constructor');\n };\n }\n\n var hasPr oto = '__proto__' in {};\n\n function mixin(to, from) {\n Object.getOwnPrope rtyNames(from).forEach(function(name) {\n Object.defineProperty(to, name,\n Object.getOwnPropertyDescriptor(from, name));\n } );\n }\n\n // http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/ index.html#dfn-template-contents-owner\n function getOrCreateTemplateContentsOw ner(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.removeChild(d.lastChild);\n }\n doc.templa teContentsOwner_ = d;\n }\n return d;\n }\n\n function getTemplateStagin gDocument(template) {\n if (!template.stagingDocument_) {\n var owner = template.ownerDocument;\n if (!owner.stagingDocument_) {\n owner.sta gingDocument_ = owner.implementation.createHTMLDocument('');\n\n // TODO( rafaelw): Remove when fix for\n // https://codereview.chromium.org/164803 002/\n // makes it to Chrome release.\n var base = owner.stagingDo cument_.createElement('base');\n base.href = document.baseURI;\n o wner.stagingDocument_.head.appendChild(base);\n\n owner.stagingDocument_. stagingDocument_ = owner.stagingDocument_;\n }\n\n template.stagingDoc ument_ = owner.stagingDocument_;\n }\n\n return template.stagingDocument_; \n }\n\n // For non-template browsers, the parser will disallow <template> in certain\n // locations, so we allow \"attribute templates\" which combine the t emplate\n // element with the top-level container node of the content, e.g.\n //\n // <tr template repeat=\"{{ foo }}\"\" class=\"bar\"><td>Bar</td></tr>\n //\n // becomes\n //\n // <template repeat=\"{{ foo }}\">\n // + #docu ment-fragment\n // + <tr class=\"bar\">\n // + <td>Bar</td>\n //\n function extractTemplateFromAttributeTemplate(el) {\n var template = el.owne rDocument.createElement('template');\n el.parentNode.insertBefore(template, e l);\n\n var attribs = el.attributes;\n var count = attribs.length;\n wh ile (count-- > 0) {\n var attrib = attribs[count];\n if (templateAttri buteDirectives[attrib.name]) {\n if (attrib.name !== 'template')\n template.setAttribute(attrib.name, attrib.value);\n el.removeAttribute (attrib.name);\n }\n }\n\n return template;\n }\n\n function extrac tTemplateFromSVGTemplate(el) {\n var template = el.ownerDocument.createElemen t('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, attr ib.value);\n el.removeAttribute(attrib.name);\n }\n\n el.parentNode.r emoveChild(el);\n return template;\n }\n\n function liftNonNativeTemplateCh ildrenIntoContent(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(chil d);\n }\n }\n\n var templateObserver;\n if (typeof MutationObserver == 'fu nction') {\n templateObserver = new MutationObserver(function(records) {\n for (var i = 0; i < records.length; i++) {\n records[i].target.refChan ged_();\n }\n });\n }\n\n /**\n * Ensures proper API and content mod el 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 createIns tance() is invoked.\n */\n HTMLTemplateElement.decorate = function(el, opt_in stanceRef) {\n if (el.templateIsDecorated_)\n return false;\n\n var t emplateElement = el;\n templateElement.templateIsDecorated_ = true;\n\n va r isNativeHTMLTemplate = isHTMLTemplate(templateElement) &&\n hasTemplateElement;\n var bootstrapContents = isNativeHTMLTemplat e;\n var liftContents = !isNativeHTMLTemplate;\n var liftRoot = false;\n\n if (!isNativeHTMLTemplate) {\n if (isAttributeTemplate(templateElement) ) {\n assert(!opt_instanceRef);\n templateElement = extractTemplat eFromAttributeTemplate(el);\n templateElement.templateIsDecorated_ = true ;\n isNativeHTMLTemplate = hasTemplateElement;\n liftRoot = true;\ n } else if (isSVGTemplate(templateElement)) {\n templateElement = e xtractTemplateFromSVGTemplate(el);\n templateElement.templateIsDecorated_ = true;\n isNativeHTMLTemplate = hasTemplateElement;\n }\n }\n\n if (!isNativeHTMLTemplate) {\n fixTemplateElementPrototype(templateElem ent);\n var doc = getOrCreateTemplateContentsOwner(templateElement);\n templateElement.content_ = doc.createDocumentFragment();\n }\n\n if (opt_ instanceRef) {\n // template is contained within an instance, its direct co ntent must be\n // empty\n templateElement.instanceRef_ = opt_instance Ref;\n } else if (liftContents) {\n liftNonNativeTemplateChildrenIntoCon tent(templateElement,\n el,\n liftRoot);\n } else if (bootstrapCo ntents) {\n bootstrapTemplatesRecursivelyFrom(templateElement.content);\n }\n\n return true;\n };\n\n // TODO(rafaelw): This used to decorate recur sively all templates from a given\n // node. This happens by default on 'DOMCon tentLoaded', but may be needed\n // in subtrees not descendent from document (e .g. ShadowRoot).\n // Review whether this is the right public API.\n HTMLTempl ateElement.bootstrap = bootstrapTemplatesRecursivelyFrom;\n\n var htmlElement = global.HTMLUnknownElement || HTMLElement;\n\n var contentDescriptor = {\n g et: 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 prototy pe as created in the constructor.\n HTMLTemplateElement.prototype = Object.cr eate(htmlElement.prototype);\n\n Object.defineProperty(HTMLTemplateElement.pr ototype, 'content',\n contentDescriptor);\n }\n\n fun ction fixTemplateElementPrototype(el) {\n if (hasProto)\n el.__proto__ = HTMLTemplateElement.prototype;\n else\n mixin(el, HTMLTemplateElement.p rototype);\n }\n\n function ensureSetModelScheduled(template) {\n if (!temp late.setModelFn_) {\n template.setModelFn_ = function() {\n template .setModelFnScheduled_ = false;\n var map = getBindings(template,\n template.delegate_ && template.delegate_.prepareBinding);\n processB indings(template, map, template.model_);\n };\n }\n\n if (!template.s etModelFnScheduled_) {\n template.setModelFnScheduled_ = true;\n Obser ver.runEOM_(template.setModelFn_);\n }\n }\n\n mixin(HTMLTemplateElement.pr ototype, {\n bind: function(name, value, oneTime) {\n if (name != 'ref') \n return Element.prototype.bind.call(this, name, value, oneTime);\n\n var self = this;\n var ref = oneTime ? value : value.open(function(ref) {\n self.setAttribute('ref', ref);\n self.refChanged_();\n }) ;\n\n this.setAttribute('ref', ref);\n this.refChanged_();\n if ( oneTime)\n return;\n\n if (!this.bindings_) {\n this.bindings _ = { ref: value };\n } else {\n this.bindings_.ref = value;\n }\n\n return value;\n },\n\n processBindingDirectives_: function(dire ctives) {\n if (this.iterator_)\n this.iterator_.closeDeps();\n\n if (!directives.if && !directives.bind && !directives.repeat) {\n if ( this.iterator_) {\n this.iterator_.close();\n this.iterator_ = undefined;\n }\n\n return;\n }\n\n if (!this.iterator_) {\n this.iterator_ = new TemplateIterator(this);\n }\n\n this. iterator_.updateDependencies(directives, this.model_);\n\n if (templateObse rver) {\n templateObserver.observe(this, { attributes: true,\n attributeFilter: ['ref'] });\n }\n\n ret urn this.iterator_;\n },\n\n createInstance: function(model, bindingDelega te, delegate_) {\n if (bindingDelegate)\n delegate_ = this.newDelega te_(bindingDelegate);\n\n if (!this.refContent_)\n this.refContent_ = this.ref_.content;\n var content = this.refContent_;\n if (content.f irstChild === null)\n return emptyInstance;\n\n var map = this.bindi ngMap_;\n if (!map || map.content !== content) {\n // TODO(rafaelw): Setup a MutationObserver on content to detect\n // when the instanceMap is invalid.\n map = createInstanceBindingMap(content,\n delega te_ && delegate_.prepareBinding) || [];\n map.content = content;\n this.bindingMap_ = map;\n }\n\n var stagingDocument = getTemplateStag ingDocument(this);\n var instance = stagingDocument.createDocumentFragment( );\n instance.templateCreator_ = this;\n instance.protoContent_ = cont ent;\n instance.bindings_ = [];\n instance.terminator_ = null;\n var instanceRecord = instance.templateInstance_ = {\n firstNode: null,\n lastNode: null,\n model: model\n };\n\n var i = 0;\n var collectTerminator = false;\n for (var child = content.firstChild; chi ld; child = child.nextSibling) {\n // The terminator of the instance is t he clone of the last child of the\n // content. If the last child is an a ctive template, it may produce\n // instances as a result of production, so simply collecting the last\n // child of the instance after it has fin ished producing may be wrong.\n if (child.nextSibling === null)\n collectTerminator = true;\n\n var clone = cloneAndBindInstance(child, i nstance, stagingDocument,\n map.children [i++],\n model,\n delegate_,\n instance. bindings_);\n clone.templateInstance_ = instanceRecord;\n if (coll ectTerminator)\n instance.terminator_ = clone;\n }\n\n instan ceRecord.firstNode = instance.firstChild;\n instanceRecord.lastNode = insta nce.lastChild;\n instance.templateCreator_ = undefined;\n instance.pro toContent_ = undefined;\n return instance;\n },\n\n get model() {\n return this.model_;\n },\n\n set model(model) {\n this.model_ = m odel;\n ensureSetModelScheduled(this);\n },\n\n get bindingDelegate() {\n return this.delegate_ && this.delegate_.raw;\n },\n\n refChanged _: function() {\n if (!this.iterator_ || this.refContent_ === this.ref_.con tent)\n return;\n\n this.refContent_ = undefined;\n this.iterat or_.valueChanged();\n this.iterator_.updateIteratedValue();\n },\n\n clear: function() {\n this.model_ = undefined;\n this.delegate_ = unde fined;\n if (this.bindings_ && this.bindings_.ref)\n this.bindings_. ref.close()\n this.refContent_ = undefined;\n if (!this.iterator_)\n return;\n this.iterator_.valueChanged();\n this.iterator_.close( )\n this.iterator_ = undefined;\n },\n\n setDelegate_: function(deleg ate) {\n this.delegate_ = delegate;\n this.bindingMap_ = undefined;\n if (this.iterator_) {\n this.iterator_.instancePositionChangedFn_ = 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 = bindi ngDelegate && bindingDelegate[name];\n if (typeof fn != 'function')\n return;\n\n return function() {\n return fn.apply(bindingD elegate, arguments);\n };\n }\n\n return {\n raw: bindin gDelegate,\n prepareBinding: delegateFn('prepareBinding'),\n prepa reInstanceModel: delegateFn('prepareInstanceModel'),\n prepareInstancePos itionChanged:\n delegateFn('prepareInstancePositionChanged')\n } ;\n },\n\n // TODO(rafaelw): Assigning .bindingDelegate always succeeds. I t may\n // make sense to issue a warning or even throw if the template is alr eady\n // \"activated\", since this would be a strange thing to do.\n set bindingDelegate(bindingDelegate) {\n if (this.delegate_) {\n throw E rror('Template must be cleared before a new bindingDelegate ' +\n 'can be assigned');\n }\n\n this.setDelegate_(this.newDelegate_(b indingDelegate));\n },\n\n get ref_() {\n var ref = searchRefId(this, this.getAttribute('ref'));\n if (!ref)\n ref = this.instanceRef_;\n \n if (!ref)\n return this;\n\n var nextRef = ref.ref_;\n return nextRef ? nextRef : ref;\n }\n });\n\n // Returns\n // a) undefin ed if there are no mustaches.\n // b) [TEXT, (ONE_TIME?, PATH, DELEGATE_FN, T EXT)+] if there is at least one mustache.\n function parseMustaches(s, name, no de, prepareBindingFn) {\n if (!s || !s.length)\n return;\n\n var toke ns;\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 oneTimeStart = s.indexOf('[[ ', lastIndex);\n var oneTime = false;\n var terminator = '}}';\n\n if (oneTimeStart >= 0 &&\n (startIndex < 0 || oneTimeStart < startInd ex)) {\n startIndex = oneTimeStart;\n oneTime = true;\n ter minator = ']]';\n }\n\n endIndex = startIndex < 0 ? -1 : s.indexOf(ter minator, startIndex + 2);\n\n if (endIndex < 0) {\n if (!tokens)\n return;\n\n tokens.push(s.slice(lastIndex)); // TEXT\n bre ak;\n }\n\n tokens = tokens || [];\n tokens.push(s.slice(lastInde x, startIndex)); // TEXT\n var pathString = s.slice(startIndex + 2, endInde x).trim();\n tokens.push(oneTime); // ONE_TIME?\n onlyOneTime = onlyOn eTime && oneTime;\n var delegateFn = prepareBindingFn &&\n prepareBindingFn(pathString, name, node);\n // Don't try to parse the expression if there's a prepareBinding function\n if (delegateFn == null) {\n tokens.push(Path.get(pathString)); // PATH\n } else {\n t okens.push(null);\n }\n tokens.push(delegateFn); // DELEGATE_FN\n lastIndex = endIndex + 2;\n }\n\n if (lastIndex === length)\n tokens .push(''); // TEXT\n\n tokens.hasOnePath = tokens.length === 5;\n tokens.i sSimplePath = tokens.hasOnePath &&\n tokens[0] == '' && \n tokens[4] == '';\n tokens.onlyOneTime = onlyOneTi me;\n\n tokens.combinator = function(values) {\n var newValue = tokens[0 ];\n\n for (var i = 1; i < tokens.length; i += 4) {\n var value = to kens.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 function processO neTimeBinding(name, tokens, node, model) {\n if (tokens.hasOnePath) {\n var delegateFn = tokens[3];\n var value = delegateFn ? delegateFn(model, no de, true) :\n tokens[2].getValueFrom(model);\n return tokens.isSimplePath ? value : tokens.combinator(value);\n }\n\n v ar values = [];\n for (var i = 1; i < tokens.length; i += 4) {\n var del egateFn = tokens[i + 2];\n values[(i - 1) / 4] = delegateFn ? delegateFn(mo del, node) :\n tokens[i + 1].getValueFrom(model);\n }\n\n return tokens.combinator(values);\n }\n\n function processSinglePathBinding(name, tok ens, node, model) {\n var delegateFn = tokens[3];\n var observer = delegat eFn ? delegateFn(model, node, false) :\n new PathObserver(model, tokens[2 ]);\n\n return tokens.isSimplePath ? observer :\n new ObserverTransfor m(observer, tokens.combinator);\n }\n\n function processBinding(name, tokens, node, model) {\n if (tokens.onlyOneTime)\n return processOneTimeBinding( name, tokens, node, model);\n\n if (tokens.hasOnePath)\n return processS inglePathBinding(name, tokens, node, model);\n\n var observer = new CompoundO bserver();\n\n for (var i = 1; i < tokens.length; i += 4) {\n var oneTim e = tokens[i];\n var delegateFn = tokens[i + 2];\n\n if (delegateFn) { \n var value = delegateFn(model, node, oneTime);\n if (oneTime)\n observer.addPath(value)\n else\n observer.addObserver(v alue);\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 ObserverTransform(obs erver, tokens.combinator);\n }\n\n function processBindings(node, bindings, mo del, 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(nam e, value, tokens.onlyOneTime);\n if (binding && instanceBindings)\n instanceBindings.push(binding);\n }\n\n if (!bindings.isTemplate)\n r eturn;\n\n node.model_ = model;\n var iter = node.processBindingDirectives _(bindings);\n if (instanceBindings && iter)\n instanceBindings.push(ite r);\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, prepa reBindingFn) {\n assert(element);\n\n var bindings = [];\n var ifFound = false;\n var bindFound = false;\n\n for (var i = 0; i < element.attribut es.length; i++) {\n var attr = element.attributes[i];\n var name = att r.name;\n var value = attr.value;\n\n // Allow bindings expressed in a ttributes to be prefixed with underbars.\n // We do this to allow correct s emantics for browsers that don't implement\n // <template> where certain at tributes might trigger side-effects -- and\n // for IE which sanitizes cert ain attributes, disallowing mustache\n // replacements in their text.\n while (name[0] === '_') {\n name = name.substring(1);\n }\n\n if (isTemplate(element) &&\n (name === IF || name === BIND || name === REPEAT)) {\n continue;\n }\n\n var tokens = parseMustaches(val ue, name, element,\n prepareBindingFn);\n if (!tokens)\n continue;\n\n bindings.push(name, tokens);\n }\n\n if (isTemplate(element)) {\n bindings.isTemplate = true;\n binding s.if = parseWithDefault(element, IF, prepareBindingFn);\n bindings.bind = p arseWithDefault(element, BIND, prepareBindingFn);\n bindings.repeat = parse WithDefault(element, REPEAT, prepareBindingFn);\n\n if (bindings.if && !bin dings.bind && !bindings.repeat)\n bindings.bind = parseMustaches('{{}}', BIND, element, prepareBindingFn);\n }\n\n return bindings;\n }\n\n funct ion getBindings(node, prepareBindingFn) {\n if (node.nodeType === Node.ELEMEN T_NODE)\n return parseAttributeBindings(node, prepareBindingFn);\n\n if (node.nodeType === Node.TEXT_NODE) {\n var tokens = parseMustaches(node.dat a, 'textContent', node,\n prepareBindingFn);\n if (tokens)\n return ['textContent', tokens];\n }\n\n return [ ];\n }\n\n function cloneAndBindInstance(node, parent, stagingDocument, bindin gs, model,\n delegate,\n instanceBindings,\n instanceRecord) {\n var clone = parent.appendChild(stagingDocument.importNode(node, false));\n\n var i = 0;\n for (var child = node.firstChild; child; child = child.nextSibl ing) {\n cloneAndBindInstance(child, clone, stagingDocument,\n bindings.children[i++],\n model,\n delegate,\n instanceBindings) ;\n }\n\n if (bindings.isTemplate) {\n HTMLTemplateElement.decorate(c lone, node);\n if (delegate)\n clone.setDelegate_(delegate);\n }\ n\n processBindings(clone, bindings, model, instanceBindings);\n return cl one;\n }\n\n function createInstanceBindingMap(node, prepareBindingFn) {\n var map = getBindings(node, prepareBindingFn);\n map.children = {};\n var index = 0;\n for (var child = node.firstChild; child; child = child.nextSibli ng) {\n map.children[index++] = createInstanceBindingMap(child, prepareBind ingFn);\n }\n\n return map;\n }\n\n Object.defineProperty(Node.prototype , 'templateInstance', {\n get: function() {\n var instance = this.templa teInstance_;\n return instance ? instance :\n (this.parentNode ? t his.parentNode.templateInstance : undefined);\n }\n });\n\n var emptyInstan ce = document.createDocumentFragment();\n emptyInstance.bindings_ = [];\n empt yInstance.terminator_ = null;\n\n function TemplateIterator(templateElement) {\ n this.closed = false;\n this.templateElement_ = templateElement;\n thi s.instances = [];\n this.deps = undefined;\n this.iteratedValue = [];\n this.presentValue = undefined;\n this.arrayObserver = undefined;\n }\n\n T emplateIterator.prototype = {\n closeDeps: function() {\n var deps = thi s.deps;\n if (deps) {\n if (deps.ifOneTime === false)\n dep s.ifValue.close();\n if (deps.oneTime === false)\n deps.value.cl ose();\n }\n },\n\n updateDependencies: function(directives, model) { \n this.closeDeps();\n\n var deps = this.deps = {};\n var templat e = this.templateElement_;\n\n if (directives.if) {\n deps.hasIf = t rue;\n deps.ifOneTime = directives.if.onlyOneTime;\n deps.ifValue = processBinding(IF, directives.if, template, model);\n\n // oneTime if & predicate is false. nothing else to do.\n if (deps.ifOneTime && !deps.if Value) {\n this.updateIteratedValue();\n return;\n }\n\ n if (!deps.ifOneTime)\n deps.ifValue.open(this.updateIteratedVa lue, this);\n }\n\n if (directives.repeat) {\n deps.repeat = tr ue;\n deps.oneTime = directives.repeat.onlyOneTime;\n deps.value = processBinding(REPEAT, directives.repeat, template, model);\n } else {\n deps.repeat = 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.updateIteratedV alue, this);\n\n this.updateIteratedValue();\n },\n\n updateIteratedV alue: function() {\n if (this.deps.hasIf) {\n var ifValue = this.dep s.ifValue;\n if (!this.deps.ifOneTime)\n ifValue = ifValue.disca rdChanges();\n if (!ifValue) {\n this.valueChanged();\n return;\n }\n }\n\n var value = this.deps.value;\n if (!t his.deps.oneTime)\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: functio n(value, observeValue) {\n if (!Array.isArray(value))\n value = [];\ n\n if (value === this.iteratedValue)\n return;\n\n this.unobse rve();\n this.presentValue = value;\n if (observeValue) {\n thi s.arrayObserver = new ArrayObserver(this.presentValue);\n this.arrayObser ver.open(this.handleSplices, this);\n }\n\n this.handleSplices(ArrayOb server.calculateSplices(this.presentValue,\n this.iteratedValue));\n },\n\n getLastInstanceNode: fu nction(index) {\n if (index == -1)\n return this.templateElement_;\n var instance = this.instances[index];\n var terminator = instance.ter minator_;\n if (!terminator)\n return this.getLastInstanceNode(index - 1);\n\n if (terminator.nodeType !== Node.ELEMENT_NODE ||\n this .templateElement_ === terminator) {\n return terminator;\n }\n\n var subtemplateIterator = terminator.iterator_;\n if (!subtemplateIterato r)\n return terminator;\n\n return subtemplateIterator.getLastTempla teNode();\n },\n\n getLastTemplateNode: function() {\n return this.ge tLastInstanceNode(this.instances.length - 1);\n },\n\n insertInstanceAt: f unction(index, fragment) {\n var previousInstanceLast = this.getLastInstanc eNode(index - 1);\n var parent = this.templateElement_.parentNode;\n t his.instances.splice(index, 0, fragment);\n\n parent.insertBefore(fragment, previousInstanceLast.nextSibling);\n },\n\n extractInstanceAt: function(i ndex) {\n var previousInstanceLast = this.getLastInstanceNode(index - 1);\n var lastNode = this.getLastInstanceNode(index);\n var parent = this.t emplateElement_.parentNode;\n var instance = this.instances.splice(index, 1 )[0];\n\n while (lastNode !== previousInstanceLast) {\n var node = p reviousInstanceLast.nextSibling;\n if (node == lastNode)\n lastN ode = previousInstanceLast;\n\n instance.appendChild(parent.removeChild(n ode));\n }\n\n return instance;\n },\n\n getDelegateFn: function (fn) {\n fn = fn && fn(this.templateElement_);\n return typeof fn === 'function' ? fn : null;\n },\n\n handleSplices: function(splices) {\n if (this.closed || !splices.length)\n return;\n\n var template = th is.templateElement_;\n\n if (!template.parentNode) {\n this.close(); \n return;\n }\n\n ArrayObserver.applySplices(this.iteratedValu e, this.presentValue,\n splices);\n\n var d elegate = template.delegate_;\n if (this.instanceModelFn_ === undefined) {\ n this.instanceModelFn_ =\n this.getDelegateFn(delegate && del egate.prepareInstanceModel);\n }\n\n if (this.instancePositionChangedF n_ === undefined) {\n this.instancePositionChangedFn_ =\n this .getDelegateFn(delegate &&\n delegate.prepareInsta ncePositionChanged);\n }\n\n // Instance Removals\n var instanceC ache = new Map;\n var removeDelta = 0;\n for (var i = 0; i < splices.l ength; i++) {\n var splice = splices[i];\n var removed = splice.re moved;\n for (var j = 0; j < removed.length; j++) {\n var model = removed[j];\n var instance = this.extractInstanceAt(splice.index + re moveDelta);\n if (instance !== emptyInstance) {\n instanceCa che.set(model, instance);\n }\n }\n\n removeDelta -= spli ce.addedCount;\n }\n\n // Instance Insertions\n for (var i = 0; i < splices.length; i++) {\n var splice = splices[i];\n var addInde x = splice.index;\n for (; addIndex < splice.index + splice.addedCount; a ddIndex++) {\n var model = this.iteratedValue[addIndex];\n var instance = instanceCache.get(model);\n if (instance) {\n in stanceCache.delete(model);\n } else {\n if (this.instanceMod elFn_) {\n model = this.instanceModelFn_(model);\n }\n\n if (model === undefined) {\n instance = emptyInstance;\ n } else {\n instance = template.createInstance(model, u ndefined, delegate);\n }\n }\n\n this.insertInstanc eAt(addIndex, instance);\n }\n }\n\n instanceCache.forEach(func tion(instance) {\n this.closeInstanceBindings(instance);\n }, this); \n\n if (this.instancePositionChangedFn_)\n this.reportInstancesMove d(splices);\n },\n\n reportInstanceMoved: function(index) {\n var ins tance = this.instances[index];\n if (instance === emptyInstance)\n r eturn;\n\n this.instancePositionChangedFn_(instance.templateInstance_, inde x);\n },\n\n reportInstancesMoved: function(splices) {\n var index = 0;\n var offset = 0;\n for (var i = 0; i < splices.length; i++) {\n var splice = splices[i];\n if (offset != 0) {\n while (inde x < splice.index) {\n this.reportInstanceMoved(index);\n i ndex++;\n }\n } else {\n index = splice.index;\n }\n\n while (index < splice.index + splice.addedCount) {\n this .reportInstanceMoved(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.instances.length;\n while (index < length) {\n this.reportInstanceMoved(index);\n index++;\n }\n },\n\n closeInstanceBindings: function(instance) {\n var bindings = instance.bindings_;\n for (var i = 0; i < bindings.length; i++) {\n bindings[i].close();\n }\n },\n\n unobserve: function() {\n i f (!this.arrayObserver)\n return;\n\n this.arrayObserver.close();\n this.arrayObserver = undefined;\n },\n\n close: function() {\n i f (this.closed)\n return;\n this.unobserve();\n for (var i = 0; i < this.instances.length; i++) {\n this.closeInstanceBindings(this.inst ances[i]);\n }\n\n this.instances.length = 0;\n this.closeDeps(); \n this.templateElement_.iterator_ = undefined;\n this.closed = true;\ n }\n };\n\n // Polyfill-specific API.\n HTMLTemplateElement.forAllTemplat esFrom_ = forAllTemplatesFrom;\n})(this);\n","/*\n Copyright (C) 2013 Ariya Hid ayat <ariya.hidayat@gmail.com>\n Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gm ail.com>\n Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n Copyri ght (C) 2012 Mathias Bynens <mathias@qiwi.be>\n Copyright (C) 2012 Joost-Wim Bo ekesteijn <joost-wim@boekesteijn.nl>\n Copyright (C) 2012 Kris Kowal <kris.kowa l@cixar.com>\n Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n Copy right (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 an d binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must reta in the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyr ight\n notice, this list of conditions and the following disclaimer in the\ n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n I MPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, I NDIRECT, 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; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEOR Y OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEG LIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVE N IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function (global) {\n 'use strict';\n\n var Token,\n TokenName,\n Syntax,\n M essages,\n source,\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 NullLitera l: 5,\n NumericLiteral: 6,\n Punctuator: 7,\n StringLiteral : 8\n };\n\n TokenName = {};\n TokenName[Token.BooleanLiteral] = 'Boole an';\n TokenName[Token.EOF] = '<end>';\n TokenName[Token.Identifier] = 'Id entifier';\n TokenName[Token.Keyword] = 'Keyword';\n TokenName[Token.NullL iteral] = 'Null';\n TokenName[Token.NumericLiteral] = 'Numeric';\n TokenNa me[Token.Punctuator] = 'Punctuator';\n TokenName[Token.StringLiteral] = 'Stri ng';\n\n Syntax = {\n ArrayExpression: 'ArrayExpression',\n Bin aryExpression: 'BinaryExpression',\n CallExpression: 'CallExpression',\n ConditionalExpression: 'ConditionalExpression',\n EmptyStatement: 'EmptyStatement',\n ExpressionStatement: 'ExpressionStatement',\n Identifier: 'Identifier',\n Literal: 'Literal',\n LabeledStatement : 'LabeledStatement',\n LogicalExpression: 'LogicalExpression',\n MemberExpression: 'MemberExpression',\n ObjectExpression: 'ObjectExpressi on',\n Program: 'Program',\n Property: 'Property',\n ThisEx pression: 'ThisExpression',\n UnaryExpression: 'UnaryExpression'\n };\ n\n // Error messages should be identical to V8.\n Messages = {\n U nexpectedToken: 'Unexpected token %0',\n UnknownLabel: 'Undefined label \\'%0\\'',\n Redeclaration: '%0 \\'%1\\' has already been declared'\n };\n\n // Ensure the condition is true, otherwise throw an error.\n // Thi s is only to have a better contract semantic, i.e. another safety net\n // to catch a logic error. The condition shall be fulfilled in normal case.\n // D o NOT use this to enforce a certain condition on any user input.\n\n function assert(condition, message) {\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n }\n\n function isDecimalDigit(ch ) {\n return (ch >= 48 && ch <= 57); // 0..9\n }\n\n\n // 7.2 Whi te Space\n\n function isWhiteSpace(ch) {\n return (ch === 32) || // s pace\n (ch === 9) || // tab\n (ch === 0xB) ||\n (ch === 0xC) ||\n (ch === 0xA0) ||\n (ch >= 0x1680 & & '\\u1680\\u180E\\u2000\\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 isIdenti fierStart(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 isIdentifie rPart(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 (ch >= 48 && ch <= 57); // 0..9\n }\n\n // 7.6.1.1 Keywords\n\n function isKeyword(id) {\n return (id === 'this')\n }\n\n // 7.4 Comments\n\n function skipWhitespace() {\n while (index < length && isWhiteSpace(source.charCo deAt(index))) {\n ++index;\n }\n }\n\n function getIdenti fier() {\n var start, ch;\n\n start = index++;\n while (ind ex < length) {\n ch = source.charCodeAt(index);\n if (isId entifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n\n return source.slice(start, inde x);\n }\n\n function scanIdentifier() {\n var start, id, type;\n\n start = index;\n\n id = getIdentifier();\n\n // There is no keyword or literal with only one character.\n // Thus, it must be an ide ntifier.\n if (id.length === 1) {\n type = Token.Identifier;\n } else if (isKeyword(id)) {\n type = Token.Keyword;\n } else if (id === 'null') {\n type = Token.NullLiteral;\n } el se if (id === 'true' || id === 'false') {\n type = Token.BooleanLiter al;\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 sc anPunctuator() {\n var start = index,\n code = source.charCode At(index),\n code2,\n ch1 = source[index],\n ch 2;\n\n switch (code) {\n\n // Check for most common single-charact er punctuators.\n case 46: // . dot\n case 40: // ( open brack et\n case 41: // ) close bracket\n case 59: // ; semicolon\n case 44: // , comma\n case 123: // { open curly brace\n c ase 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 default:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (char #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.fromCharCode(code) + String.fromCharCode(code2),\n range: [start, index]\n };\n\n cas e 33: // !\n case 61: // =\n index += 2;\n\n // !== and ===\n if (source.charCodeAt(inde x) === 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 more characters.\n\n ch2 = source[index + 1];\n\n // Other 2-character punctuators: && ||\n\n if (ch1 === ch2 && ('&|'.in dexOf(ch1) >= 0)) {\n index += 2;\n return {\n type: Token.Punctuator,\n value: ch1 + ch2,\n range: [start, index]\n };\n }\n\n if ('<>=!+-*%&|^/'.i ndexOf(ch1) >= 0) {\n ++index;\n return {\n type: Token.Punctuator,\n value: ch1,\n range: [s tart, index]\n };\n }\n\n throwError({}, Messages.Unexp ectedToken, 'ILLEGAL');\n }\n\n // 7.8.3 Numeric Literals\n function sc anNumericLiteral() {\n var number, start, ch;\n\n ch = source[inde x];\n assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),\n 'Numeric literal must start with a decimal digit or a decimal point');\n\n start = index;\n number = '';\n if (ch !== '.') {\n number = source[index++];\n ch = source[index];\n\n // H ex number starts with '0x'.\n // Octal number starts with '0'.\n if (number === '0') {\n // decimal number starts with '0' such as '09' is illegal.\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 = source[index];\n }\n\n if (ch === '.') {\n number += source[index++];\n while (isDecimalDigit(source.char CodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n\n if (ch === 'e' || ch === 'E' ) {\n number += source[index++];\n\n ch = source[index];\n if (ch === '+' || ch === '-') {\n number += source[in dex++];\n }\n if (isDecimalDigit(source.charCodeAt(index)) ) {\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n } else { \n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type: Token.NumericLiteral,\n value: par seFloat(number),\n range: [start, index]\n };\n }\n\n // 7.8.4 String Literals\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 st arts with a quote');\n\n start = index;\n ++index;\n\n whil e (index < length) {\n ch = source[index++];\n\n if (ch == = quote) {\n quote = '';\n break;\n } e lse if (ch === '\\\\') {\n ch = source[index++];\n if (!ch || !isLineTerminator(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[index] === '\\n') {\n ++index;\n }\n }\n } else if (isLineTerminator(ch.ch arCodeAt(0))) {\n break;\n } else {\n s tr += ch;\n }\n }\n\n if (quote !== '') {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n retur n {\n type: Token.StringLiteral,\n value: str,\n octal: octal,\n range: [start, index]\n };\n }\n\n fun ction isIdentifierName(token) {\n return token.type === Token.Identifier ||\n token.type === Token.Keyword ||\n token.type === Toke n.BooleanLiteral ||\n token.type === Token.NullLiteral;\n }\n\n function advance() {\n var ch;\n\n skipWhitespace();\n\n i f (index >= length) {\n return {\n type: Token.EOF,\n range: [index, index]\n };\n }\n\n ch = source.charCodeAt(index);\n\n // Very common: ( and ) and ;\n if ( ch === 40 || ch === 41 || ch === 58) {\n return scanPunctuator();\n }\n\n // String literal starts with single quote (#39) or double qu ote (#34).\n if (ch === 39 || ch === 34) {\n return scanString Literal();\n }\n\n if (isIdentifierStart(ch)) {\n retur n scanIdentifier();\n }\n\n // Dot (.) char #46 can also start a f loating-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 scanPunctuator();\n }\n\n if (isDecimalDigit(ch)) {\n return scanNumericLiteral();\n }\n\n return scanPunctuato r();\n }\n\n function lex() {\n var token;\n\n token = looka head;\n index = token.range[1];\n\n lookahead = advance();\n\n index = token.range[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 throwEr ror(token, messageFormat) {\n var error,\n args = Array.protot ype.slice.call(arguments, 2),\n msg = messageFormat.replace(\n /%(\\d)/g,\n function (whole, index) {\n assert(index < args.length, 'Message reference must be in range');\n return args[index];\n }\n );\n\n er ror = new Error(msg);\n error.index = index;\n error.description = msg;\n throw error;\n }\n\n // Throw an exception because of the t oken.\n\n function throwUnexpected(token) {\n throwError(token, Messag es.UnexpectedToken, token.value);\n }\n\n // Expect the next token to matc h the specified punctuator.\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 specifi ed punctuator.\n\n function match(value) {\n return lookahead.type === Token.Punctuator && lookahead.value === value;\n }\n\n // Return true if the next token matches the specified keyword\n\n function matchKeyword(keywor d) {\n return lookahead.type === Token.Keyword && lookahead.value === key word;\n }\n\n function consumeSemicolon() {\n // Catch the very com mon case first: immediately a semicolon (char #59).\n if (source.charCode At(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 throwUnexpected(lookahead);\n }\n }\n\n // 11.1.4 Array Initialiser\n\n function parseArrayInitialiser() {\n var element s = [];\n\n expect('[');\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.c reateArrayExpression(elements);\n }\n\n // 11.1.5 Object Initialiser\n\n function parseObjectPropertyKey() {\n var token;\n\n skipWhitesp ace();\n token = lex();\n\n // Note: This function is called only from parseObjectProperty(), where\n // EOF and Punctuator tokens are alre ady filtered out.\n if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) {\n return delegate.createLiteral(token);\n }\n\n return delegate.createIdentifier(token.value);\n }\n\n function parseObjectProperty() {\n var token, key;\n\n token = l ookahead;\n skipWhitespace();\n\n if (token.type === Token.EOF || token.type === Token.Punctuator) {\n throwUnexpected(token);\n }\n\n key = parseObjectPropertyKey();\n expect(':');\n ret urn delegate.createProperty('init', key, parseExpression());\n }\n\n funct ion parseObjectInitialiser() {\n var properties = [];\n\n expect(' {');\n\n while (!match('}')) {\n properties.push(parseObjectPr operty());\n\n if (!match('}')) {\n expect(',');\n }\n }\n\n expect('}');\n\n return delegate.createOb jectExpression(properties);\n }\n\n // 11.1.6 The Grouping Operator\n\n function parseGroupExpression() {\n var expr;\n\n expect('(');\n\ n expr = parseExpression();\n\n expect(')');\n\n return exp r;\n }\n\n\n // 11.1 Primary Expressions\n\n function parsePrimaryExpre ssion() {\n var type, token, expr;\n\n if (match('(')) {\n return parseGroupExpression();\n }\n\n type = lookahead.type;\ n\n if (type === Token.Identifier) {\n expr = delegate.createI dentifier(lex().value);\n } else if (type === Token.StringLiteral || type === Token.NumericLiteral) {\n expr = delegate.createLiteral(lex());\ n } else if (type === Token.Keyword) {\n if (matchKeyword('thi s')) {\n lex();\n expr = delegate.createThisExpres sion();\n }\n } else if (type === Token.BooleanLiteral) {\n token = lex();\n token.value = (token.value === 'true');\n expr = delegate.createLiteral(token);\n } else if (type === Tok en.NullLiteral) {\n token = lex();\n token.value = null;\n expr = delegate.createLiteral(token);\n } else if (match('[') ) {\n expr = parseArrayInitialiser();\n } else if (match('{')) {\n expr = parseObjectInitialiser();\n }\n\n if (expr) {\n return 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 (index < 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(t oken)) {\n throwUnexpected(token);\n }\n\n return deleg ate.createIdentifier(token.value);\n }\n\n function parseNonComputedMember () {\n expect('.');\n\n return parseNonComputedProperty();\n }\ n\n function parseComputedMember() {\n var expr;\n\n expect('[' );\n\n expr = parseExpression();\n\n expect(']');\n\n retur n 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 = parseNon ComputedMember();\n expr = delegate.createMemberExpression('.', e xpr, property);\n }\n }\n\n return expr;\n }\n\n // 11.3 Postfix Expressions\n\n var parsePostfixExpression = parseLeftHandSid eExpression;\n\n // 11.4 Unary Operators\n\n function parseUnaryExpression () {\n var token, expr;\n\n if (lookahead.type !== Token.Punctuato r && lookahead.type !== Token.Keyword) {\n expr = parsePostfixExpress ion();\n } else if (match('+') || match('-') || match('!')) {\n token = lex();\n expr = parseUnaryExpression();\n expr = delegate.createUnaryExpression(token.value, expr);\n } else if (matchKey word('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n throwError({}, Messages.UnexpectedToken);\n } else {\n expr = parsePostfixExpression();\n }\n\n return expr;\n }\n\n func tion 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 pre c = 1;\n break;\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 'instan ceof':\n prec = 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 Mu ltiplicative Operators\n // 11.6 Additive Operators\n // 11.7 Bitwise Shif t Operators\n // 11.8 Relational Operators\n // 11.9 Equality Operators\n // 11.10 Binary Bitwise Operators\n // 11.11 Binary Logical Operators\n\n function parseBinaryExpression() {\n var expr, token, prec, stack, rig ht, operator, left, i;\n\n left = parseUnaryExpression();\n\n toke n = lookahead;\n prec = binaryPrecedence(token);\n if (prec === 0) {\n return left;\n }\n token.prec = prec;\n lex ();\n\n right = parseUnaryExpression();\n\n stack = [left, token, right];\n\n while ((prec = binaryPrecedence(lookahead)) > 0) {\n\n // Reduce: make a binary expression from the three topmost entries.\n while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {\n right = stack.pop();\n operator = stack.pop().value ;\n left = stack.pop();\n expr = delegate.createBi naryExpression(operator, left, right);\n stack.push(expr);\n }\n\n // Shift.\n token = lex();\n token .prec = prec;\n stack.push(token);\n expr = parseUnaryExpr ession();\n stack.push(expr);\n }\n\n // Final reduce t o clean-up the stack.\n i = stack.length - 1;\n expr = stack[i];\n while (i > 1) {\n expr = delegate.createBinaryExpression(stac k[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 parse ConditionalExpression() {\n var expr, consequent, alternate;\n\n e xpr = parseBinaryExpression();\n\n if (match('?')) {\n lex();\ n consequent = parseConditionalExpression();\n expect(':') ;\n alternate = parseConditionalExpression();\n\n expr = d elegate.createConditionalExpression(expr, consequent, alternate);\n }\n\n return expr;\n }\n\n // Simplification since we do not support Ass ignmentExpression.\n var parseExpression = parseConditionalExpression;\n\n // Polymer Syntax extensions\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 throw Unexpected(identifier);\n }\n\n args = match('(') ? parseArguments () : [];\n\n return delegate.createFilter(identifier.value, args);\n } \n\n // Filters ::\n // \"|\" Filter\n // Filters \"|\" Filter\n\n function parseFilters() {\n while (match('|')) {\n lex();\n parseFilter();\n }\n }\n\n // TopLevel ::\n // Lab elledExpressions\n // AsExpression\n // InExpression\n // FilterE xpression\n\n // AsExpression ::\n // FilterExpression as Identifier\n\n // InExpression ::\n // Identifier, Identifier in FilterExpression\n // Identifier in FilterExpression\n\n // FilterExpression ::\n // Exp ression\n // Expression 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 parseA sExpression(expr);\n } else {\n delegate.creat eTopLevel(expr);\n }\n }\n }\n\n if (loo kahead.type !== Token.EOF) {\n throwUnexpected(lookahead);\n } \n }\n\n function parseAsExpression(expr) {\n lex(); // as\n var identifier = lex().value;\n delegate.createAsExpression(expr, ident ifier);\n }\n\n function parseInExpression(identifier) {\n var inde xName;\n if (lookahead.value === ',') {\n lex();\n if (lookahead.type !== Token.Identifier)\n throwUnexpected(lookah ead);\n indexName = lex().value;\n }\n\n lex(); // in\ n var expr = parseExpression();\n parseFilters();\n delegat e.createInExpression(identifier.name, indexName, expr);\n }\n\n function p arse(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 pars eTopLevel();\n }\n\n global.esprima = {\n parse: parse\n };\n})( this);\n","// Copyright (c) 2014 The Polymer Project Authors. All rights reserve d.\n// This code may only be used under the BSD style license found at http://po lymer.github.io/LICENSE.txt\n// The complete set of authors may be found at http ://polymer.github.io/AUTHORS.txt\n// The complete set of contributors may be fou nd at http://polymer.github.io/CONTRIBUTORS.txt\n// Code distributed by Google a s part of the polymer project is also\n// subject to an additional IP rights gra nt found at http://polymer.github.io/PATENTS.txt\n\n(function (global) {\n 'use strict';\n\n // JScript does not have __proto__. We wrap all object literals w ith\n // createObject which uses 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) { return 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).forEa ch(function(name) {\n Object.defineProperty(newObject, name,\n Object.getOwnPropertyDescriptor(obj, name));\n });\ n return newObject;\n };\n\n function prepareBinding(expressionText , name, node, filterRegistry) {\n var expression;\n try {\n expressio n = getExpression(expressionText);\n if (expression.scopeIdent &&\n (node.nodeType !== 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 } ca tch (ex) {\n console.error('Invalid expression syntax: ' + expressionText, ex);\n return;\n }\n\n return function(model, node, oneTime) {\n var binding = expression.getBinding(model, filterRegistry, oneTime);\n if (expression.scopeIdent && binding) {\n node.polymerExpressionScopeIdent_ = expression.scopeIdent;\n if (expression.indexIdent)\n node.pol ymerExpressionIndexIdent_ = expression.indexIdent;\n }\n\n return bind ing;\n }\n }\n\n // TODO(rafaelw): Implement simple LRU.\n var expressionP arseCache = Object.create(null);\n\n function getExpression(expressionText) {\n var expression = expressionParseCache[expressionText];\n if (!expression) {\n var delegate = new ASTDelegate();\n esprima.parse(expressionText, delegate);\n expression = new Expression(delegate);\n expressionParse Cache[expressionText] = expression;\n }\n return expression;\n }\n\n fun ction Literal(value) {\n this.value = value;\n this.valueFn_ = undefined;\ n }\n\n Literal.prototype = {\n valueFn: function() {\n if (!this.valu eFn_) {\n var value = this.value;\n this.valueFn_ = function() {\n return value;\n }\n }\n\n return this.valueFn_;\n }\n }\n\n function IdentPath(name) {\n this.name = name;\n this.path = P ath.get(name);\n }\n\n IdentPath.prototype = {\n valueFn: function() {\n if (!this.valueFn_) {\n var name = this.name;\n var path = this .path;\n this.valueFn_ = function(model, observer) {\n if (obser ver)\n observer.addPath(model, path);\n\n return path.getVal ueFrom(model);\n }\n }\n\n return this.valueFn_;\n },\n\n setValue: function(model, newValue) {\n if (this.path.length == 1);\n model = findScope(model, this.path[0]);\n\n return this.path.setValueFro m(model, newValue);\n }\n };\n\n function MemberExpression(object, property , accessor) {\n // convert literal computed property access where literal val ue is a value\n // path to ident dot-access.\n if (accessor == '[' &&\n property instanceof 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 th is.dynamic = typeof property == 'function' ||\n property.dynam ic ||\n accessor == '[';\n\n this.simplePath =\n !th is.dynamic &&\n !this.dynamicDeps &&\n property instanceof IdentPa th &&\n (object instanceof MemberExpression || object instanceof IdentPat h);\n\n this.object = this.simplePath ? object : getFn(object);\n this.pro perty = accessor == '.' ? property : getFn(property);\n }\n\n MemberExpression .prototype = {\n get fullPath() {\n if (!this.fullPath_) {\n var last = this.object instanceof IdentPath ?\n this.object.name : this.o bject.fullPath;\n this.fullPath_ = Path.get(last + '.' + this.property.na me);\n }\n\n return this.fullPath_;\n },\n\n valueFn: function() {\n if (!this.valueFn_) {\n var object = this.object;\n\n if (this.simplePath) {\n var path = this.fullPath;\n\n this.valu eFn_ = function(model, observer) {\n if (observer)\n obs erver.addPath(model, path);\n\n return path.getValueFrom(model);\n };\n } else if (this.property instanceof IdentPath) {\n v ar path = Path.get(this.property.name);\n\n this.valueFn_ = function(mo del, observer) {\n var context = object(model, observer);\n\n if (observer)\n observer.addPath(context, path);\n\n return path.getValueFrom(context);\n }\n } else {\n // Computed property.\n var property = this.property;\n\n this.v alueFn_ = function(model, observer) {\n var context = object(model, o bserver);\n var propName = property(model, observer);\n if (observer)\n observer.addPath(context, propName);\n\n r eturn context ? context[propName] : undefined;\n };\n }\n } \n return this.valueFn_;\n },\n\n setValue: function(model, newValue) {\n if (this.simplePath) {\n this.fullPath.setValueFrom(model, newV alue);\n return newValue;\n }\n\n var object = this.object(mode l);\n var propName = this.property instanceof IdentPath ? this.property.nam e :\n this.property(model);\n return object[propName] = newValue;\ n }\n };\n\n function Filter(name, args) {\n this.name = name;\n this .args = [];\n for (var i = 0; i < args.length; i++) {\n this.args[i] = g etFn(args[i]);\n }\n }\n\n Filter.prototype = {\n transform: function(va lue, toModelDirection, filterRegistry, model,\n observer) {\n var fn = filterRegistry[this.name];\n var context = model;\n if (fn) {\n context = undefined;\n } else {\n fn = context[t his.name];\n if (!fn) {\n console.error('Cannot find filter: ' + this.name);\n return;\n }\n }\n\n // If toModelDirect ion is falsey, then the \"normal\" (dom-bound) direction\n // is used. Othe rwise, it looks for a 'toModel' property function on the\n // object.\n if (toModelDirection) {\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 args = [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 Implemented'); }\n\n var unaryOperators = {\n '+': funct ion(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 '>': funct ion(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) { return l||r; },\n };\n\n functi on getFn(arg) {\n return typeof arg == 'function' ? arg : arg.valueFn();\n } \n\n function ASTDelegate() {\n this.expression = null;\n this.filters = [];\n this.deps = {};\n this.currentPath = undefined;\n this.scopeIdent = undefined;\n this.indexIdent = undefined;\n this.dynamicDeps = false;\n }\n\n ASTDelegate.prototype = {\n createUnaryExpression: function(op, argu ment) {\n if (!unaryOperators[op])\n throw Error('Disallowed operato r: ' + 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(left);\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 createConditionalExpression: function(test, consequent, alternate) {\n test = getFn(test);\n consequent = getFn(consequent);\n alternate = g etFn(alternate);\n\n return function(model, observer) {\n return tes t(model, observer) ?\n consequent(model, observer) : alternate(model, observer);\n }\n },\n\n createIdentifier: function(name) {\n va r ident = new IdentPath(name);\n ident.type = 'Identifier';\n return i dent;\n },\n\n createMemberExpression: function(accessor, object, property ) {\n var ex = new MemberExpression(object, property, accessor);\n if (ex.dynamicDeps)\n this.dynamicDeps = true;\n return ex;\n },\n\n createLiteral: function(token) {\n return new Literal(token.value);\n },\n\n createArrayExpression: function(elements) {\n for (var i = 0; i < elements.length; i++)\n elements[i] = getFn(elements[i]);\n\n ret urn function(model, observer) {\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, val ue) {\n return {\n key: key instanceof IdentPath ? key.name : key.va lue,\n value: value\n };\n },\n\n createObjectExpression: func tion(properties) {\n for (var i = 0; i < properties.length; i++)\n p roperties[i].value = getFn(properties[i].value);\n\n return function(model, observer) {\n var obj = {};\n for (var i = 0; i < properties.leng th; i++)\n obj[properties[i].key] = properties[i].value(model, observer );\n return obj;\n }\n },\n\n createFilter: function(name, arg s) {\n this.filters.push(new Filter(name, args));\n },\n\n createAsEx pression: function(expression, scopeIdent) {\n this.expression = expression ;\n this.scopeIdent = scopeIdent;\n },\n\n createInExpression: functi on(scopeIdent, indexIdent, expression) {\n this.expression = expression;\n this.scopeIdent = scopeIdent;\n this.indexIdent = indexIdent;\n },\ n\n createTopLevel: function(expression) {\n this.expression = expressio n;\n },\n\n createThisExpression: notImplemented\n }\n\n function Consta ntObservable(value) {\n this.value_ = value;\n }\n\n ConstantObservable.pro totype = {\n open: function() { return this.value_; },\n discardChanges: f unction() { return this.value_; },\n deliver: function() {},\n close: func tion() {},\n }\n\n function Expression(delegate) {\n this.scopeIdent = dele gate.scopeIdent;\n this.indexIdent = delegate.indexIdent;\n\n if (!delegat e.expression)\n throw Error('No expression found.');\n\n this.expression = delegate.expression;\n getFn(this.expression); // forces enumeration of pa th dependencies\n\n this.filters = delegate.filters;\n this.dynamicDeps = delegate.dynamicDeps;\n }\n\n Expression.prototype = {\n getBinding: functi on(model, filterRegistry, oneTime) {\n if (oneTime)\n return this.ge tValue(model, undefined, filterRegistry);\n\n var observer = new CompoundOb server();\n // captures deps.\n var firstValue = this.getValue(model, observer, filterRegistry);\n var firstTime = true;\n var self = this;\ n\n function valueFn() {\n // deps cannot have changed on first valu e retrieval.\n if (firstTime) {\n firstTime = false;\n return firstValue;\n }\n\n if (self.dynamicDeps)\n observ er.startReset();\n\n var value = self.getValue(model,\n self.dynamicDeps ? observer : undefined,\n filterRegistry);\n if (self.dynamicDeps)\n observer. finishReset();\n\n return value;\n }\n\n function setValueFn(ne wValue) {\n self.setValue(model, newValue, filterRegistry);\n retu rn newValue;\n }\n\n return new ObserverTransform(observer, valueFn, s etValueFn, true);\n },\n\n getValue: function(model, observer, filterRegis try) {\n var value = getFn(this.expression)(model, observer);\n for (v ar i = 0; i < this.filters.length; i++) {\n value = this.filters[i].trans form(value, false, filterRegistry, model,\n observer);\n }\n\n return value;\n },\n\n setValue: functio n(model, newValue, filterRegistry) {\n var count = this.filters ? this.filt ers.length : 0;\n while (count-- > 0) {\n newValue = this.filters[co unt].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 * C onverts a style property name to a css property name. For example:\n * \"Webki tUserSelect\" to \"-webkit-user-select\"\n */\n function convertStyleProperty Name(name) {\n return String(name).replace(/[A-Z]/g, function(c) {\n ret urn '-' + c.toLowerCase();\n });\n }\n\n function isEventHandler(name) {\n return name[0] === 'o' &&\n name[1] === 'n' &&\n name[2] === '-';\n }\n\n var mixedCaseEventTypes = {};\n [\n 'webkitAnimationStart ',\n 'webkitAnimationEnd',\n 'webkitTransitionEnd',\n 'DOMFocusOut',\n 'DOMFocusIn',\n 'DOMMouseScroll'\n ].forEach(function(e) {\n mixedCase EventTypes[e.toLowerCase()] = e;\n });\n\n var parentScopeName = '@' + Math.ra ndom().toString(36).slice(2);\n\n // Single ident paths must bind directly to t he appropriate scope object.\n // I.e. Pushed values in two-bindings need to be assigned to the actual model\n // object.\n function findScope(model, prop) { \n while (model[parentScopeName] &&\n !Object.prototype.hasOwnPrope rty.call(model, prop)) {\n model = model[parentScopeName];\n }\n\n re turn model;\n }\n\n function resolveEventReceiver(model, path, node) {\n if (path.length == 0)\n return undefined;\n\n if (path.length == 1)\n return findScope(model, path[0]);\n\n for (var i = 0; model != null && i < p ath.length - 1; i++) {\n model = model[path[i]];\n }\n\n return model ;\n }\n\n function prepareEventBinding(path, name, polymerExpressions) {\n var eventType = name.substring(3);\n eventType = mixedCaseEventTypes[eventTyp e] || eventType;\n\n return function(model, node, oneTime) {\n var fn, r eceiver, handler;\n if (typeof polymerExpressions.resolveEventHandler == 'f unction') {\n handler = function(e) {\n fn = fn || polymerExpres sions.resolveEventHandler(model, path, node);\n fn(e, e.detail, e.curre ntTarget);\n\n if (Platform && typeof Platform.flush == 'function')\n Platform.flush();\n };\n } else {\n handler = funct ion(e) {\n fn = fn || path.getValueFrom(model);\n receiver = r eceiver || resolveEventReceiver(model, path, node);\n\n fn.apply(receiv er, [e, e.detail, e.currentTarget]);\n\n if (Platform && typeof Platfor m.flush == 'function')\n Platform.flush();\n };\n }\n\n node.addEventListener(eventType, handler);\n\n if (oneTime)\n re turn;\n\n function bindingValue() {\n return '{{ ' + path + ' }}';\n }\n\n return {\n open: bindingValue,\n discardChanges: bindingValue,\n close: function() {\n node.removeEventListener(e ventType, handler);\n }\n };\n }\n }\n\n function isLiteralExpr ession(pathString) {\n switch (pathString) {\n case '':\n return false;\n\n case 'false':\n case 'null':\n case 'true':\n r eturn true;\n }\n\n if (!isNaN(Number(pathString)))\n return true;\n\ n return false;\n };\n\n function PolymerExpressions() {}\n\n PolymerExpre ssions.prototype = {\n // \"built-in\" filters\n styleObject: function(val ue) {\n var parts = [];\n for (var key in value) {\n parts.push (convertStylePropertyName(key) + ': ' + value[key]);\n }\n return part s.join('; ');\n },\n\n tokenList: function(value) {\n var tokens = [] ;\n for (var key in value) {\n if (value[key])\n tokens.pus h(key);\n }\n return tokens.join(' ');\n },\n\n // binding deleg ate API\n prepareInstancePositionChanged: function(template) {\n var ind exIdent = template.polymerExpressionIndexIdent_;\n if (!indexIdent)\n return;\n\n return function(templateInstance, index) {\n templateI nstance.model[indexIdent] = index;\n };\n },\n\n prepareBinding: func tion(pathString, name, node) {\n var path = Path.get(pathString);\n if (isEventHandler(name)) {\n if (!path.valid) {\n console.error(' on-* bindings must be simple path expressions');\n return;\n }\n \n return prepareEventBinding(path, name, this);\n }\n\n if (!i sLiteralExpression(pathString) && path.valid) {\n if (path.length == 1) { \n return function(model, node, oneTime) {\n if (oneTime)\n return path.getValueFrom(model);\n\n var scope = findSco pe(model, path[0]);\n return new PathObserver(scope, path);\n };\n }\n return; // bail out early if pathString is simple path. \n }\n\n return prepareBinding(pathString, name, node, this);\n },\ n\n prepareInstanceModel: function(template) {\n var scopeName = templat e.polymerExpressionScopeIdent_;\n if (!scopeName)\n return;\n\n var parentScope = template.templateInstance ?\n template.templateInsta nce.model :\n template.model;\n\n var indexName = template.polymer ExpressionIndexIdent_;\n\n return function(model) {\n var scope = Ob ject.create(parentScope);\n scope[scopeName] = model;\n scope[inde xName] = undefined;\n scope[parentScopeName] = parentScope;\n retu rn scope;\n };\n }\n };\n\n global.PolymerExpressions = PolymerExpress ions;\n if (global.exposeGetExpression)\n global.getExpression_ = getExpress ion;\n\n global.PolymerExpressions.prepareEventBinding = prepareEventBinding;\n })(this);\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 fou nd in the LICENSE file.\n */\n(function(scope) {\n\n// inject style sheet\nvar s tyle = document.createElement('style');\nstyle.textContent = 'template {display: none !important;} /* injected by platform.js */';\nvar head = document.querySel ector('head');\nhead.insertBefore(style, head.firstChild);\n\n// flush (with log ging)\nvar flushing;\nfunction flush() {\n if (!flushing) {\n flushing = tru e;\n scope.endOfMicrotask(function() {\n flushing = false;\n logFla gs.data && console.group('Platform.flush()');\n scope.performMicrotaskCheck point();\n logFlags.data && console.groupEnd();\n });\n }\n};\n\n// pol ling dirty checker\n// flush periodically if platform does not have object obser ve.\nif (!Observer.hasObjectObserve) {\n var FLUSH_POLL_INTERVAL = 125;\n wind ow.addEventListener('WebComponentsReady', function() {\n flush();\n scope. flushPoll = setInterval(flush, FLUSH_POLL_INTERVAL);\n });\n} else {\n // make flush a no-op when we have Object.observe\n flush = function() {};\n}\n\nif (w indow.CustomElements && !CustomElements.useNative) {\n var originalImportNode = Document.prototype.importNode;\n Document.prototype.importNode = function(node , deep) {\n var imported = originalImportNode.call(this, node, deep);\n Cu stomElements.upgradeAll(imported);\n return imported;\n }\n}\n\n// exports\n scope.flush = flush;\n\n})(window.Platform);\n\n"]} 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/TreeScope.js","../ShadowDOM/src/w rappers/events.js","../ShadowDOM/src/wrappers/NodeList.js","../ShadowDOM/src/wra ppers/HTMLCollection.js","../ShadowDOM/src/wrappers/Node.js","../ShadowDOM/src/q uerySelector.js","../ShadowDOM/src/wrappers/node-interfaces.js","../ShadowDOM/sr c/wrappers/CharacterData.js","../ShadowDOM/src/wrappers/Text.js","../ShadowDOM/s rc/wrappers/Element.js","../ShadowDOM/src/wrappers/HTMLElement.js","../ShadowDOM /src/wrappers/HTMLCanvasElement.js","../ShadowDOM/src/wrappers/HTMLContentElemen t.js","../ShadowDOM/src/wrappers/HTMLImageElement.js","../ShadowDOM/src/wrappers /HTMLShadowElement.js","../ShadowDOM/src/wrappers/HTMLTemplateElement.js","../Sh adowDOM/src/wrappers/HTMLMediaElement.js","../ShadowDOM/src/wrappers/HTMLAudioEl ement.js","../ShadowDOM/src/wrappers/HTMLOptionElement.js","../ShadowDOM/src/wra ppers/HTMLSelectElement.js","../ShadowDOM/src/wrappers/HTMLTableElement.js","../ ShadowDOM/src/wrappers/HTMLTableSectionElement.js","../ShadowDOM/src/wrappers/HT MLTableRowElement.js","../ShadowDOM/src/wrappers/HTMLUnknownElement.js","../Shad owDOM/src/wrappers/SVGElement.js","../ShadowDOM/src/wrappers/SVGUseElement.js"," ../ShadowDOM/src/wrappers/SVGElementInstance.js","../ShadowDOM/src/wrappers/Canv asRenderingContext2D.js","../ShadowDOM/src/wrappers/WebGLRenderingContext.js",". ./ShadowDOM/src/wrappers/Range.js","../ShadowDOM/src/wrappers/generic.js","../Sh adowDOM/src/wrappers/ShadowRoot.js","../ShadowDOM/src/ShadowRenderer.js","../Sha dowDOM/src/wrappers/elements-with-form-property.js","../ShadowDOM/src/wrappers/S election.js","../ShadowDOM/src/wrappers/Document.js","../ShadowDOM/src/wrappers/ Window.js","../ShadowDOM/src/wrappers/DataTransfer.js","../ShadowDOM/src/wrapper s/override-constructors.js","src/patches-shadowdom-polyfill.js","src/ShadowCSS.j s","src/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/mi crotask.js","src/url.js","../MutationObservers/MutationObserver.js","../HTMLImpo rts/src/scope.js","../HTMLImports/src/Loader.js","../HTMLImports/src/Parser.js", "../HTMLImports/src/HTMLImports.js","../HTMLImports/src/Observer.js","../HTMLImp orts/src/boot.js","../CustomElements/src/scope.js","../CustomElements/src/Observ er.js","../CustomElements/src/CustomElements.js","../CustomElements/src/Parser.j s","../CustomElements/src/boot.js","src/patches-custom-elements.js","src/loader. js","src/styleloader.js","../PointerEvents/src/boot.js","../PointerEvents/src/to uch-action.js","../PointerEvents/src/PointerEvent.js","../PointerEvents/src/poin termap.js","../PointerEvents/src/dispatcher.js","../PointerEvents/src/installer. js","../PointerEvents/src/mouse.js","../PointerEvents/src/touch.js","../PointerE vents/src/ms.js","../PointerEvents/src/platform-events.js","../PointerEvents/src /capture.js","../PointerGestures/src/initialize.js","../PointerGestures/src/poin termap.js","../PointerGestures/src/dispatcher.js","../PointerGestures/src/hold.j s","../PointerGestures/src/track.js","../PointerGestures/src/flick.js","../Point erGestures/src/pinch.js","../PointerGestures/src/tap.js","../PointerGestures/src /registerScopes.js","../NodeBind/src/NodeBind.js","../TemplateBinding/src/Templa teBinding.js","../polymer-expressions/third_party/esprima/esprima.js","../polyme r-expressions/src/polymer-expressions.js","src/patches-mdv.js"],"names":[],"mapp ings":"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 AEA,OAAA","sourcesContent":["/*\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 * PointerGestureEvent is th e constructor for all PointerGesture events.\n *\n * @module PointerGestures\n * @class PointerGestureEvent\n * @extends UIEvent\n * @constructor\n * @param {St ring} inType Event type\n * @param {Object} [inDict] Dictionary of properties to initialize on the event\n */\n\nfunction PointerGestureEvent(inType, inDict) {\ n var dict = inDict || {};\n var e = document.createEvent('Event');\n var pro ps = {\n bubbles: Boolean(dict.bubbles) === dict.bubbles || true,\n cancel able: Boolean(dict.cancelable) === dict.cancelable || true\n };\n\n e.initEven t(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 * Allow s for any gesture to prevent the tap gesture.\n *\n * @method preventTap\n */\nP ointerGestureEvent.prototype.preventTap = function() {\n this.tapPrevented = tr ue;\n};\n\n","/*\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be fou nd in the LICENSE file.\n */\n\nif (typeof WeakMap === 'undefined') {\n (functi on() {\n var defineProperty = Object.defineProperty;\n var counter = Date. now() % 1e9;\n\n var WeakMap = function() {\n this.name = '__st' + (Math .random() * 1e9 >>> 0) + (counter++ + '__');\n };\n\n WeakMap.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], writable: true});\n },\n get: function(key) {\n var entry;\n return (entry = key[this.name]) && entry[0] === key ?\n entry[1] : undefined;\n },\n delete: function(key) {\n this.set(key, undefined);\n }\ n };\n\n window.WeakMap = WeakMap;\n })();\n}\n","// Copyright 2012 Googl e 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 License.\n// You ma y obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LIC ENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, soft ware\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// Se e the License for the specific language governing permissions and\n// limitation s under the License.\n\n(function(global) {\n 'use strict';\n\n // Detect and do basic sanity checking on Object/Array.observe.\n function detectObjectObserv e() {\n if (typeof Object.observe !== 'function' ||\n typeof Array.obs erve !== 'function') {\n return false;\n }\n\n var records = [];\n\n function callback(recs) {\n records = recs;\n }\n\n var test = {}; \n var arr = [];\n Object.observe(test, callback);\n Array.observe(arr, callback);\n test.id = 1;\n test.id = 2;\n delete test.id;\n arr.pu sh(1, 2);\n arr.length = 0;\n\n Object.deliverChangeRecords(callback);\n if (records.length !== 5)\n return false;\n\n if (records[0].type != ' add' ||\n records[1].type != 'update' ||\n records[2].type != 'del ete' ||\n records[3].type != 'splice' ||\n records[4].type != 'spl ice') {\n return false;\n }\n\n Object.unobserve(test, callback);\n Array.unobserve(arr, callback);\n\n return true;\n }\n\n var hasObserve = detectObjectObserve();\n\n function detectEval() {\n // don't test for eval if document has CSP securityPolicy object and we can see that\n // eval is n ot supported. This 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 ha sEval = detectEval();\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.isNa N || function isNaN(value) {\n return typeof value === 'number' && global.isN aN(value);\n }\n\n function areSameValue(left, right) {\n if (left === righ t)\n return left !== 0 || 1 / left === 1 / right;\n if (numberIsNaN(left ) && numberIsNaN(right))\n return true;\n\n return left !== left && righ t !== right;\n }\n\n var createObject = ('__proto__' in {}) ?\n function(ob j) { return 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 Object .defineProperty(newObject, name,\n Object.getOwnProp ertyDescriptor(obj, 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 identOrElementIndex = '(?:' + ident + '|' + elementIndex + ')';\n var path = '(?:' + identOrElementIndex + ')(?:\\\\s*\\\\.\\\\s*' + identOrEleme ntIndex + ')*';\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 if (s == '')\n return true;\n\n if (s[0] == '.')\n r eturn false;\n\n return pathRegExp.test(s);\n }\n\n var constructorIsPrivat e = {};\n\n function Path(s, privateToken) {\n if (privateToken !== construc torIsPrivate)\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.p ush(s);\n return this;\n }\n\n s.split(/\\s*\\.\\s*/).filter(function (part) {\n return part;\n }).forEach(function(part) {\n this.push(p art);\n }, this);\n\n if (hasEval && this.length) {\n this.getValueFr om = this.compiledGetValueFromFn();\n }\n }\n\n // TODO(rafaelw): Make simp le LRU cache\n var pathCache = {};\n\n function getPath(pathString) {\n if (pathString instanceof Path)\n return pathString;\n\n if (pathString == null)\n pathString = '';\n\n if (typeof pathString !== 'string')\n pathString = String(pathString);\n\n var path = pathCache[pathString];\n i f (path)\n return path;\n if (!isPathValid(pathString))\n return in validPath;\n var path = new Path(pathString, constructorIsPrivate);\n path Cache[pathString] = path;\n return path;\n }\n\n Path.get = getPath;\n\n P ath.prototype = createObject({\n __proto__: [],\n valid: true,\n\n toSt ring: function() {\n return this.join('.');\n },\n\n getValueFrom: fu nction(obj, directObserver) {\n for (var i = 0; i < this.length; i++) {\n if (obj == null)\n return;\n obj = obj[this[i]];\n }\ n return obj;\n },\n\n iterateObjects: function(obj, observe) {\n for (var i = 0; i < this.length; i++) {\n if (i)\n obj = obj[t his[i - 1]];\n if (!isObject(obj))\n return;\n observe(ob j);\n }\n },\n\n compiledGetValueFromFn: function() {\n var acce ssors = this.map(function(ident) {\n return isIndex(ident) ? '[\"' + iden t + '\"]' : '.' + ident;\n });\n\n var str = '';\n var pathString = 'obj';\n str += 'if (obj != null';\n var i = 0;\n for (; i < ( this.length - 1); i++) {\n var ident = this[i];\n pathString += ac cessors[i];\n str += ' &&\\n ' + pathString + ' != null';\n }\n str += ')\\n';\n\n pathString += accessors[i];\n\n str += ' retu rn ' + pathString + ';\\nelse\\n return undefined;';\n return new Function ('obj', str);\n },\n\n setValueFrom: function(obj, value) {\n if (!th is.length)\n return false;\n\n for (var i = 0; i < this.length - 1; i++) {\n if (!isObject(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 = n ew Path('', constructorIsPrivate);\n invalidPath.valid = false;\n invalidPath. getValueFrom = invalidPath.setValueFrom = function() {};\n\n var MAX_DIRTY_CHEC K_CYCLES = 1000;\n\n function dirtyCheck(observer) {\n var cycles = 0;\n while (cycles < MAX_DIRTY_CHECK_CYCLES && observer.check_()) {\n cycles++;\ n }\n if (global.testingExposeCycleCount)\n global.dirtyCheckCycleCou nt = cycles;\n\n return cycles > 0;\n }\n\n function objectIsEmpty(object) {\n for (var prop in object)\n return false;\n return true;\n }\n\n function diffIsEmpty(diff) {\n return objectIsEmpty(diff.added) &&\n objectIsEmpty(diff.removed) &&\n objectIsEmpty(diff.changed);\n }\ n\n function diffObjectFromOldObject(object, oldObject) {\n var added = {};\ n var removed = {};\n var changed = {};\n\n for (var prop in oldObject) {\n var newValue = object[prop];\n\n if (newValue !== undefined && ne wValue === oldObject[prop])\n continue;\n\n if (!(prop in object)) { \n removed[prop] = undefined;\n continue;\n }\n\n if (ne wValue !== 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[prop];\n }\n\n if (Array.isArray(object) && object. length !== oldObject.length)\n changed.length = object.length;\n\n retur n {\n added: added,\n removed: removed,\n changed: changed\n } ;\n }\n\n var eomTasks = [];\n function runEOMTasks() {\n if (!eomTasks.le ngth)\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 = false;\n\n Object.observe(eomObj, function() {\n runEOMTasks();\n eomRunScheduled = false;\n });\n\n return function (fn) {\n eomTasks.push(fn);\n if (!eomRunScheduled) {\n eomRunS cheduled = true;\n eomObj.pingPong = !eomObj.pingPong;\n }\n };\n })() :\n (function() {\n return function(fn) {\n eomTasks.push(fn);\n };\n })();\n\n var observedObjectCache = [];\n\n function newObservedObje ct() {\n var observer;\n var object;\n var discardRecords = false;\n var first = true;\n\n function callback(records) {\n if (observer && ob server.state_ === OPENED && !discardRecords)\n observer.check_(records);\ n }\n\n return {\n open: function(obs) {\n if (observer)\n throw Error('ObservedObject in use');\n\n if (!first)\n Ob ject.deliverChangeRecords(callback);\n\n observer = obs;\n first = false;\n },\n observe: function(obj, arrayObserve) {\n object = obj;\n if (arrayObserve)\n Array.observe(object, callback);\n else\n Object.observe(object, callback);\n },\n delive r: function(discard) {\n discardRecords = discard;\n Object.delive rChangeRecords(callback);\n discardRecords = false;\n },\n clos e: function() {\n observer = undefined;\n Object.unobserve(object, callback);\n observedObjectCache.push(this);\n }\n };\n }\n\n function getObservedObject(observer, object, arrayObserve) {\n var dir = obse rvedObjectCache.pop() || newObservedObject();\n dir.open(observer);\n dir. observe(object, arrayObserve);\n return dir;\n }\n\n var emptyArray = [];\n var observedSetCache = [];\n\n function newObservedSet() {\n var observers = [];\n var observerCount = 0;\n var objects = [];\n var toRemove = em ptyArray;\n var resetNeeded = false;\n var resetScheduled = false;\n\n function observe(obj) {\n if (!obj)\n return;\n\n var index = t oRemove.indexOf(obj);\n if (index >= 0) {\n toRemove[index] = undefi ned;\n objects.push(obj);\n } else if (objects.indexOf(obj) < 0) {\n objects.push(obj);\n Object.observe(obj, callback);\n }\n\n observe(Object.getPrototypeOf(obj));\n }\n\n function reset() {\n var objs = toRemove === emptyArray ? [] : toRemove;\n toRemove = objects; \n objects = objs;\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 (var i = 0; i < toRemove.length; i++) {\n var obj = to Remove[i];\n if (obj)\n Object.unobserve(obj, callback);\n }\n\n toRemove.length = 0;\n }\n\n function scheduledReset() {\n resetScheduled = false;\n if (!resetNeeded)\n return;\n\n rese t();\n }\n\n function scheduleReset() {\n if (resetScheduled)\n return;\n\n resetNeeded = true;\n resetScheduled = true;\n runE OM(scheduledReset);\n }\n\n function callback() {\n reset();\n\n var observer;\n\n for (var id in observers) {\n observer = observer s[id];\n if (!observer || observer.state_ != OPENED)\n continue; \n\n observer.check_();\n }\n }\n\n var record = {\n obje ct: undefined,\n objects: objects,\n open: function(obs) {\n ob servers[obs.id_] = obs;\n observerCount++;\n obs.iterateObjects_(o bserve);\n },\n close: function(obs) {\n var anyLeft = false;\n \n observers[obs.id_] = undefined;\n observerCount--;\n\n i f (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.unobser vedCount++;\n }\n\n observers.length = 0;\n objects.length = 0;\n observedSetCache.push(this);\n },\n reset: scheduleReset \n };\n\n return record;\n }\n\n var lastObservedSet;\n\n function getO bservedSet(observer, obj) {\n if (!lastObservedSet || lastObservedSet.object !== obj) {\n lastObservedSet = observedSetCache.pop() || newObservedSet();\ n lastObservedSet.object = obj;\n }\n lastObservedSet.open(observer); \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 function Observer() {\n this.state_ = UNOPENED;\n this.callback_ = undefined;\n this.target_ = undefined; // TODO(rafaelw): Should be WeakRef\n this.directO bserver_ = undefined;\n this.value_ = undefined;\n this.id_ = nextObserver Id++;\n }\n\n Observer.prototype = {\n open: function(callback, target) {\n if (this.state_ != UNOPENED)\n throw Error('Observer has already be en 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.state_ != OPENED)\n return;\n\n removeFromAll(this);\n this.state_ = CLOSED;\n this.disconnect_();\n this.value_ = undefined;\n this.c allback_ = undefined;\n this.target_ = undefined;\n },\n\n deliver: f unction() {\n if (this.state_ != OPENED)\n return;\n\n dirtyChe ck(this);\n },\n\n report_: function(changes) {\n try {\n this .callback_.apply(this.target_, changes);\n } catch (ex) {\n Observer ._errorThrownDuringCallback = true;\n console.error('Exception caught dur ing observer callback: ' +\n (ex.stack || ex));\n }\n },\n\n discardChanges: function() {\n this.check_(undefined, true);\ n return this.value_;\n }\n }\n\n var collectObservers = !hasObserve;\ n var allObservers;\n Observer._allObserversCount = 0;\n\n if (collectObserve rs) {\n allObservers = [];\n }\n\n function addToAll(observer) {\n Obser ver._allObserversCount++;\n if (!collectObservers)\n return;\n\n allO bservers.push(observer);\n }\n\n function removeFromAll(observer) {\n Obser ver._allObserversCount--;\n }\n\n var runningMicrotaskCheckpoint = false;\n\n var hasDebugForceFullDelivery = hasObserve && (function() {\n try {\n e val('%RunMicrotasks()');\n return true;\n } catch (ex) {\n return f alse;\n }\n })();\n\n global.Platform = global.Platform || {};\n\n global. Platform.performMicrotaskCheckpoint = function() {\n if (runningMicrotaskChec kpoint)\n return;\n\n if (hasDebugForceFullDelivery) {\n eval('%Run Microtasks()');\n return;\n }\n\n if (!collectObservers)\n retur n;\n\n runningMicrotaskCheckpoint = true;\n\n var cycles = 0;\n var any Changed, toCheck;\n\n do {\n cycles++;\n toCheck = allObservers;\n allObservers = [];\n anyChanged = false;\n\n for (var i = 0; i < toCheck.length; i++) {\n var observer = toCheck[i];\n if (observer .state_ != 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_ CHECK_CYCLES && anyChanged);\n\n if (global.testingExposeCycleCount)\n g lobal.dirtyCheckCycleCount = cycles;\n\n runningMicrotaskCheckpoint = false;\ n };\n\n if (collectObservers) {\n global.Platform.clearObservers = functio n() {\n allObservers = [];\n };\n }\n\n function ObjectObserver(object ) {\n Observer.call(this);\n this.value_ = object;\n this.oldObject_ = undefined;\n }\n\n ObjectObserver.prototype = createObject({\n __proto__: O bserver.prototype,\n\n arrayObserve: false,\n\n connect_: function(callbac k, target) {\n if (hasObserve) {\n this.directObserver_ = getObserve dObject(this, this.value_,\n thi s.arrayObserve);\n } else {\n this.oldObject_ = this.copyObject(this .value_);\n }\n\n },\n\n copyObject: function(object) {\n var co py = Array.isArray(object) ? [] : {};\n for (var prop in object) {\n copy[prop] = object[prop];\n };\n if (Array.isArray(object))\n copy.length = object.length;\n return copy;\n },\n\n check_: functio n(changeRecords, skipChanges) {\n var diff;\n var oldValues;\n if (hasObserve) {\n if (!changeRecords)\n return false;\n\n oldValues = {};\n diff = diffObjectFromChangeRecords(this.value_, change Records,\n oldValues);\n } else { \n oldValues = this.oldObject_;\n diff = diffObjectFromOldObject(t his.value_, this.oldObject_);\n }\n\n if (diffIsEmpty(diff))\n return false;\n\n if (!hasObserve)\n this.oldObject_ = this.copyObje ct(this.value_);\n\n this.report_([\n diff.added || {},\n dif f.removed || {},\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.d irectObserver_.close();\n this.directObserver_ = undefined;\n } else {\n this.oldObject_ = undefined;\n }\n },\n\n deliver: functi on() {\n if (this.state_ != OPENED)\n return;\n\n if (hasObserv e)\n this.directObserver_.deliver(false);\n else\n dirtyCheck (this);\n },\n\n discardChanges: function() {\n if (this.directObserv er_)\n this.directObserver_.deliver(true);\n else\n this.oldO bject_ = this.copyObject(this.value_);\n\n return this.value_;\n }\n }) ;\n\n function ArrayObserver(array) {\n if (!Array.isArray(array))\n th row Error('Provided object is not an Array');\n ObjectObserver.call(this, arr ay);\n }\n\n ArrayObserver.prototype = createObject({\n\n __proto__: Object Observer.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_, changeRecor ds);\n } else {\n splices = calcSplices(this.value_, 0, this.value_. length,\n this.oldObject_, 0, this.oldObject_.lengt h);\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 ArrayO bserver.applySplices = function(previous, current, splices) {\n splices.forEa ch(function(splice) {\n var spliceArgs = [splice.index, splice.removed.leng th];\n var addIndex = splice.index;\n while (addIndex < splice.index + splice.addedCount) {\n spliceArgs.push(current[addIndex]);\n addI ndex++;\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 : getPath(path);\n this.directObserver_ = undefined;\n }\n\n PathObserver.pro totype = createObject({\n __proto__: Observer.prototype,\n\n connect_: fun ction() {\n if (hasObserve)\n this.directObserver_ = getObservedSet( this, this.object_);\n\n this.check_(undefined, true);\n },\n\n disco nnect_: function() {\n this.value_ = undefined;\n\n if (this.directObs erver_) {\n this.directObserver_.close(this);\n this.directObserve r_ = undefined;\n }\n },\n\n iterateObjects_: function(observe) {\n this.path_.iterateObjects(this.object_, observe);\n },\n\n check_: fun ction(changeRecords, skipChanges) {\n var oldValue = this.value_;\n th is.value_ = this.path_.getValueFrom(this.object_);\n if (skipChanges || are SameValue(this.value_, oldValue))\n return false;\n\n this.report_([ this.value_, oldValue]);\n return true;\n },\n\n setValue: function(n ewValue) {\n if (this.path_)\n this.path_.setValueFrom(this.object_, newValue);\n }\n });\n\n function CompoundObserver() {\n Observer.call( this);\n\n this.value_ = [];\n this.directObserver_ = undefined;\n this .observed_ = [];\n }\n\n var observerSentinel = {};\n\n CompoundObserver.prot otype = createObject({\n __proto__: Observer.prototype,\n\n connect_: func tion() {\n this.check_(undefined, true);\n\n if (!hasObserve)\n return;\n\n var object;\n var needsDirectObserver = false;\n for (var i = 0; i < this.observed_.length; i += 2) {\n object = this.observe d_[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 t his.directObserver_ = undefined;\n return;\n }\n\n if (needsDir ectObserver)\n this.directObserver_ = getObservedSet(this, object);\n },\n\n closeObservers_: function() {\n for (var i = 0; i < this.observed _.length; 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 this.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( path));\n },\n\n addObserver: function(observer) {\n if (this.state_ != UNOPENED && this.state_ != RESETTING)\n throw Error('Cannot add observ ers once started.');\n\n observer.open(this.deliver, this);\n this.obs erved_.push(observerSentinel, observer);\n },\n\n startReset: function() { \n if (this.state_ != OPENED)\n throw Error('Can only reset while op en');\n\n this.state_ = RESETTING;\n this.closeObservers_();\n },\n \n finishReset: function() {\n if (this.state_ != RESETTING)\n th row Error('Can only finishReset after startReset');\n this.state_ = OPENED; \n this.connect_();\n\n return this.value_;\n },\n\n iterateObje cts_: function(observe) {\n var object;\n for (var i = 0; i < this.obs erved_.length; i += 2) {\n object = this.observed_[i]\n if (object !== observerSentinel)\n this.observed_[i + 1].iterateObjects(object, o bserve)\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.o bserved_[i];\n var value = object === observerSentinel ?\n pat hOrObserver.discardChanges() :\n pathOrObserver.getValueFrom(object)\ n\n if (skipChanges) {\n this.value_[i / 2] = value;\n continue;\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 observ ed_ as the third callback arg here is\n // pretty lame API. Fix.\n thi s.report_([this.value_, oldValues, this.observed_]);\n return true;\n }\ n });\n\n function identFn(value) { return value; }\n\n function ObserverTran sform(observable, getValueFn, setValueFn,\n dontPass ThroughSet) {\n this.callback_ = undefined;\n this.target_ = undefined;\n this.value_ = undefined;\n this.observable_ = observable;\n this.getVal ueFn_ = 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.dontP assThroughSet_ = dontPassThroughSet;\n }\n\n ObserverTransform.prototype = {\n open: function(callback, target) {\n this.callback_ = callback;\n this.target_ = target;\n this.value_ =\n this.getValueFn_(this.obs ervable_.open(this.observedCallback_, this));\n return this.value_;\n }, \n\n observedCallback_: function(value) {\n value = this.getValueFn_(val ue);\n if (areSameValue(value, this.value_))\n return;\n var ol dValue = this.value_;\n this.value_ = value;\n this.callback_.call(thi s.target_, this.value_, oldValue);\n },\n\n discardChanges: function() {\n this.value_ = this.getValueFn_(this.observable_.discardChanges());\n return this.value_;\n },\n\n deliver: function() {\n return this.obse rvable_.deliver();\n },\n\n setValue: function(value) {\n value = thi s.setValueFn_(value);\n if (!this.dontPassThroughSet_ && this.observable_.s etValue)\n return this.observable_.setValue(value);\n },\n\n close: function() {\n if (this.observable_)\n this.observable_.close();\n this.callback_ = undefined;\n this.target_ = undefined;\n this.ob servable_ = undefined;\n this.value_ = undefined;\n this.getValueFn_ = undefined;\n this.setValueFn_ = undefined;\n }\n }\n\n var expectedRe cordTypes = {\n add: true,\n update: true,\n delete: true\n };\n\n fu nction notifyFunction(object, name) {\n if (typeof Object.observe !== 'functi on')\n return;\n\n var notifier = Object.getNotifier(object);\n retur n function(type, oldValue) {\n var changeRecord = {\n object: object ,\n type: type,\n name: name\n };\n if (arguments.length === 2)\n changeRecord.oldValue = oldValue;\n notifier.notify(change Record);\n }\n }\n\n Observer.defineComputedProperty = function(target, nam e, observable) {\n var notify = notifyFunction(target, name);\n var value = observable.open(function(newValue, oldValue) {\n value = newValue;\n if (notify)\n notify('update', oldValue);\n });\n\n Object.defineP roperty(target, name, {\n get: function() {\n observable.deliver();\ n return value;\n },\n set: function(newValue) {\n obser vable.setValue(newValue);\n return newValue;\n },\n configurabl e: true\n });\n\n return {\n close: function() {\n observable. close();\n Object.defineProperty(target, name, {\n value: value, \n writable: true,\n configurable: true\n });\n }\ n };\n }\n\n function diffObjectFromChangeRecords(object, changeRecords, ol dValues) {\n var added = {};\n var removed = {};\n\n for (var i = 0; i < changeRecords.length; i++) {\n var record = changeRecords[i];\n if ( !expectedRecordTypes[record.type]) {\n console.error('Unknown changeRecor d type: ' + record.type);\n console.error(record);\n continue;\n }\n\n if (!(record.name in oldValues))\n oldValues[record.name] = record.oldValue;\n\n if (record.type == 'update')\n continue;\n\n if (record.type == 'add') {\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.na me in added) {\n delete added[record.name];\n delete oldValues[rec ord.name];\n } else {\n removed[record.name] = true;\n }\n } \n\n for (var prop in added)\n added[prop] = object[prop];\n\n for (v ar 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[prop];\n if (oldValues[pro p] !== newValue)\n changed[prop] = newValue;\n }\n\n return {\n added: added,\n removed: removed,\n changed: changed\n };\n }\n\ n function newSplice(index, removed, addedCount) {\n return {\n index: index,\n removed: removed,\n addedCount: addedCount\n };\n }\n\n var EDIT_LEAVE = 0;\n var EDIT_UPDATE = 1;\n var EDIT_ADD = 2;\n var EDIT_DEL ETE = 3;\n\n function ArraySplice() {}\n\n ArraySplice.prototype = {\n\n // Note: This function is *based* on the computation of the Levenshtein\n // \" edit\" distance. The one change is that \"updates\" are treated as two\n // e dits - not one. With Array splices, an update is really a delete\n // followe d by an add. By retaining this, we optimize for \"keeping\" the\n // maximum array items in the original array. For example:\n //\n // 'xxxx123' -> ' 123yyyy'\n //\n // With 1-edit updates, the shortest path would be just to update all seven\n // characters. With 2-edit updates, we delete 4, leave 3, and add 4. This\n // leaves the substring '123' intact.\n calcEditDistanc es: function(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n // \"Deletion\" columns\n var rowCount = o ldEnd - oldStart + 1;\n var columnCount = currentEnd - currentStart + 1;\n var distances = new Array(rowCount);\n\n // \"Addition\" rows. Initial ize 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 < columnCount; j++)\n distan ces[0][j] = j;\n\n for (var i = 1; i < rowCount; i++) {\n for (var j = 1; j < columnCount; j++) {\n if (this.equals(current[currentStart + j - 1], old[oldStart + i - 1]))\n distances[i][j] = distances[i - 1][ j - 1];\n else {\n var north = distances[i - 1][j] + 1;\n var west = distances[i][j - 1] + 1;\n distances[i][j] = nort h < west ? north : west;\n }\n }\n }\n\n return distan ces;\n },\n\n // This starts at the final weight, and walks \"backward\" b y finding\n // the minimum previous weight recursively until the origin of th e weight\n // matrix.\n spliceOperationsFromEditDistances: function(distan ces) {\n var i = distances.length - 1;\n var 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 edits.push(EDIT_ADD);\n j--;\n continue;\n }\n if (j == 0) {\n edits .push(EDIT_DELETE);\n i--;\n continue;\n }\n var northWest = distances[i - 1][j - 1];\n var west = distances[i - 1][j];\n var north = distances[i][j - 1];\n\n var min;\n if (west < north)\n min = west < northWest ? west : northWest;\n else\n min = north < northWest ? north : northWest;\n\n if (min == northW est) {\n if (northWest == current) {\n edits.push(EDIT_LEAVE );\n } else {\n edits.push(EDIT_UPDATE);\n curren t = northWest;\n }\n i--;\n j--;\n } else if ( min == west) {\n edits.push(EDIT_DELETE);\n i--;\n cu rrent = west;\n } else {\n edits.push(EDIT_ADD);\n j--; \n current = north;\n }\n }\n\n edits.reverse();\n return edits;\n },\n\n /**\n * Splice Projection functions:\n *\ n * A splice map is a representation of how a previous array of items\n * was transformed into a new array of items. Conceptually it is a list of\n * tuples of\n *\n * <index, removed, addedCount>\n *\n * which are kept in ascending index order of. The tuple represents that at\n * the |index|, |removed| sequence of items were removed, and 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 state of an\n * array. The basic approach is to calculate the edit distance matrix 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, currentEnd,\n old, oldStart, oldEnd) {\n var prefixCount = 0;\n var suffixCou nt = 0;\n\n var minLength = Math.min(currentEnd - currentStart, oldEnd - ol dStart);\n if (currentStart == 0 && oldStart == 0)\n prefixCount = t his.sharedPrefix(current, old, minLength);\n\n if (currentEnd == current.le ngth && oldEnd == old.length)\n suffixCount = this.sharedSuffix(current, old, minLength - prefixCount);\n\n currentStart += prefixCount;\n oldS tart += prefixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCo unt;\n\n if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n return [];\n\n if (currentStart == currentEnd) {\n var splice = newSplice(currentStart, [], 0);\n while (oldStart < oldEnd)\n s plice.removed.push(old[oldStart++]);\n\n return [ splice ];\n } else if (oldStart == oldEnd)\n return [ newSplice(currentStart, [], currentEn d - currentStart) ];\n\n var ops = this.spliceOperationsFromEditDistances(\ n this.calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd));\n\n var splice = undefined; \n var splices = [];\n var index = currentStart;\n var oldIndex = oldStart;\n for (var i = 0; i < ops.length; i++) {\n switch(ops[i]) {\n case EDIT_LEAVE:\n if (splice) {\n splices .push(splice);\n splice = undefined;\n }\n\n index++;\n oldIndex++;\n break;\n case EDIT_UPDAT E:\n if (!splice)\n splice = newSplice(index, [], 0);\n\ n splice.addedCount++;\n index++;\n\n splice.re moved.push(old[oldIndex]);\n oldIndex++;\n break;\n case EDIT_ADD:\n if (!splice)\n splice = newSplice(in dex, [], 0);\n\n splice.addedCount++;\n index++;\n break;\n case EDIT_DELETE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.removed.push(old[oldInd ex]);\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, searchLength) {\n for (var i = 0; i < searchLength; i++)\n if (!this.equals(current[i], old[i]))\n return i;\n return searchLength;\n },\n\n sharedSuffix: func tion(current, old, searchLength) {\n var index1 = current.length;\n va r index2 = old.length;\n var count = 0;\n while (count < searchLength && this.equals(current[--index1], old[--index2]))\n count++;\n\n ret urn count;\n },\n\n calculateSplices: function(current, previous) {\n return this.calcSplices(current, 0, current.length, previous, 0,\n previous.length);\n },\n\n equals: function(currentValue, previousValue) {\n return currentValue === previousValue;\n }\n };\n\n var arraySplice = new ArraySplice();\n\n function calcSplices(current, curren tStart, currentEnd,\n old, oldStart, oldEnd) {\n return arraySplice.calcSplices(current, currentStart, currentEnd,\n old, oldStart, oldEnd);\n }\n\n function intersect(start1, end 1, start2, end2) {\n // Disjoint\n if (end1 < start2 || end2 < start1)\n return -1;\n\n // Adjacent\n if (end1 == start2 || end2 == start1)\n return 0;\n\n // Non-zero intersect, span1 first\n if (start1 < start2 ) {\n if (end1 < end2)\n return end1 - start2; // Overlap\n els e\n return end2 - start2; // Contained\n } else {\n // Non-zero i ntersect, 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, addedCount) {\n\n var splice = newSplice(index, removed, addedCount);\n\n var inserted = false;\n var in sertionOffset = 0;\n\n for (var i = 0; i < splices.length; i++) {\n var current = splices[i];\n current.index += insertionOffset;\n\n if (inse rted)\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 - current.removed.length;\n\n splice.addedCount += current.addedCount - intersectCount;\n var del eteCount = splice.removed.length +\n current.removed.le ngth - intersectCount;\n\n if (!splice.addedCount && !deleteCount) {\n // merged splice is a noop. discard.\n inserted = true;\n } else {\n var removed = current.removed;\n\n if (splice.inde x < current.index) {\n // some prefix of splice.removed is prepended to current.removed.\n var prepend = splice.removed.slice(0, current.i ndex - splice.index);\n Array.prototype.push.apply(prepend, removed); \n removed = prepend;\n }\n\n if (splice.index + sp lice.removed.length > current.index + current.addedCount) {\n // some suffix of splice.removed is appended to current.removed.\n var appen d = splice.removed.slice(current.index + current.addedCount - splice.index);\n Array.prototype.push.apply(removed, append);\n }\n\n splice.removed = removed;\n if (current.index < splice.index) {\n splice.index = current.index;\n }\n }\n } else if (s plice.index < current.index) {\n // Insert splice here.\n\n insert ed = true;\n\n splices.splice(i, 0, splice);\n i++;\n\n var offset = splice.addedCount - splice.removed.length\n current.index += of fset;\n insertionOffset += offset;\n }\n }\n\n if (!inserted)\ n splices.push(splice);\n }\n\n function createInitialSplices(array, chan geRecords) {\n var splices = [];\n\n for (var i = 0; i < changeRecords.len gth; i++) {\n var record = changeRecords[i];\n switch(record.type) {\n case 'splice':\n mergeSplice(splices, record.index, record.remo ved.slice(), record.addedCount);\n break;\n case 'add':\n case 'update':\n case 'delete':\n if (!isIndex(record.name))\n continue;\n var index = toNumber(record.name);\n if (index < 0)\n continue;\n mergeSplice(splices, index, [reco rd.oldValue], 1);\n break;\n default:\n console.error(' Unexpected record type: ' + JSON.stringify(record));\n break;\n }\ n }\n\n return splices;\n }\n\n function projectArraySplices(array, chan geRecords) {\n var splices = [];\n\n createInitialSplices(array, changeRec ords).forEach(function(splice) {\n if (splice.addedCount == 1 && splice.rem oved.length == 1) {\n if (splice.removed[0] !== array[splice.index])\n splices.push(splice);\n\n return\n };\n\n splices = spli ces.concat(calcSplices(array, splice.index, splice.index + splice.addedCount,\n splice.removed, 0, splice.removed.leng th));\n });\n\n return splices;\n }\n\n global.Observer = Observer;\n g lobal.Observer.runEOM_ = runEOM;\n global.Observer.hasObjectObserve = hasObserv e;\n global.ArrayObserver = ArrayObserver;\n global.ArrayObserver.calculateSpl ices = function(current, previous) {\n return arraySplice.calculateSplices(cu rrent, previous);\n };\n\n global.ArraySplice = ArraySplice;\n global.ObjectO bserver = ObjectObserver;\n global.PathObserver = PathObserver;\n global.Compo undObserver = CompoundObserver;\n global.Path = Path;\n global.ObserverTransfo rm = ObserverTransform;\n})(typeof global !== 'undefined' && global && typeof mo dule !== 'undefined' && module ? global : this || window);\n","// prepoulate win dow.Platform.flags for default controls\r\nwindow.Platform = window.Platform || {};\r\n// prepopulate window.logFlags if necessary\r\nwindow.logFlags = window.l ogFlags || {};\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.se arch.slice(1).split('&').forEach(function(o) {\r\n o = o.split('=');\r\n o [0] && (flags[o[0]] = o[1] || true);\r\n });\r\n var entryPoint = document.cur rentScript ||\r\n document.querySelector('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 (f lags.log) {\r\n flags.log.split(',').forEach(function(f) {\r\n window.lo gFlags[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 det ect native\r\n // ShadowDOM, results in polyfill\r\n flags.shadow = flags.shad ow || flags.shadowdom || flags.polyfill;\r\n if (flags.shadow === 'native') {\r \n flags.shadow = false;\r\n } else {\r\n flags.shadow = flags.shadow || !HTMLElement.prototype.createShadowRoot;\r\n }\r\n\r\n if (flags.shadow && doc ument.querySelectorAll('script').length > 1) {\r\n console.warn('platform.js is not the first script on the page. ' +\r\n 'See http://www.polymer-proj ect.org/docs/start/platform.html#setup ' +\r\n 'for details.');\r\n }\r\ n\r\n // CustomElements polyfill flag\r\n if (flags.register) {\r\n window. CustomElements = window.CustomElements || {flags: {}};\r\n window.CustomEleme nts.flags.register = flags.register;\r\n }\r\n\r\n if (flags.imports) {\r\n window.HTMLImports = window.HTMLImports || {flags: {}};\r\n window.HTMLImpor ts.flags.imports = flags.imports;\r\n }\r\n\r\n // export\r\n scope.flags = f lags;\r\n})(Platform);\r\n\r\n// select ShadowDOM impl\r\nif (Platform.flags.sha dow) {\r\n","// Copyright 2012 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\nwindow.ShadowDOMPolyfill = {};\n\n(function(scope) {\n ' use strict';\n\n var constructorTable = new WeakMap();\n var nativePrototypeTa ble = new WeakMap();\n var wrappers = Object.create(null);\n\n // Don't test f or 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 e xception is caught\n var hasEval = !('securityPolicy' in document) ||\n do cument.securityPolicy.allowsEval;\n if (hasEval) {\n try {\n var f = ne w Function('', 'return true;');\n hasEval = f();\n } catch (ex) {\n hasEval = false;\n }\n }\n\n function assert(b) {\n if (!b)\n thro w new Error('Assertion failed');\n };\n\n var defineProperty = Object.definePr operty;\n var getOwnPropertyNames = Object.getOwnPropertyNames;\n var getOwnPr opertyDescriptor = Object.getOwnPropertyDescriptor;\n\n function mixin(to, from ) {\n getOwnPropertyNames(from).forEach(function(name) {\n definePropert y(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 'prototyp e':\n case 'toString':\n return;\n }\n defineProperty( to, name, getOwnPropertyDescriptor(from, name));\n });\n return to;\n };\ n\n function oneOf(object, propertyNames) {\n for (var i = 0; i < propertyNa mes.length; i++) {\n if (propertyNames[i] in object)\n return proper tyNames[i];\n }\n }\n\n // Mozilla's old DOM bindings are bretty busted:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=855844\n // Make sure they are create before we start modifying things.\n getOwnPropertyNames(window);\n\n f unction getWrapperConstructor(node) {\n var nativePrototype = node.__proto__ || Object.getPrototypeOf(node);\n var wrapperConstructor = constructorTable.g et(nativePrototype);\n if (wrapperConstructor)\n return wrapperConstruct or;\n\n var parentWrapperConstructor = getWrapperConstructor(nativePrototype) ;\n\n var GeneratedWrapper = createWrapperConstructor(parentWrapperConstructo r);\n registerInternal(nativePrototype, GeneratedWrapper, node);\n\n retur n GeneratedWrapper;\n }\n\n function addForwardingProperties(nativePrototype, wrapperPrototype) {\n installProperty(nativePrototype, wrapperPrototype, true );\n }\n\n function registerInstanceProperties(wrapperPrototype, instanceObjec t) {\n installProperty(instanceObject, wrapperPrototype, false);\n }\n\n va r isFirefox = /Firefox/.test(navigator.userAgent);\n\n // This is used as a fal lback when getting the descriptor fails in\n // installProperty.\n var dummyDe scriptor = {\n get: function() {},\n set: function(v) {},\n configurabl e: true,\n enumerable: true\n };\n\n function isEventHandlerName(name) {\n return /^on[a-z]+$/.test(name);\n }\n\n function isIdentifierName(name) {\n return /^\\w[a-zA-Z_0-9]*$/.test(name);\n }\n\n function getGetter(name) { \n return hasEval && isIdentifierName(name) ?\n new Function('return t his.impl.' + name) :\n function() { return this.impl[name]; };\n }\n\n function getSetter(name) {\n return hasEval && isIdentifierName(name) ?\n new Function('v', 'this.impl.' + name + ' = v') :\n function(v) { thi s.impl[name] = v; };\n }\n\n function getMethod(name) {\n return hasEval && isIdentifierName(name) ?\n new Function('return this.impl.' + name +\n '.apply(this.impl, arguments)') :\n function() { retur n this.impl[name].apply(this.impl, arguments); };\n }\n\n function getDescript or(source, name) {\n try {\n return Object.getOwnPropertyDescriptor(sour ce, name);\n } catch (ex) {\n // JSC and V8 both use data properties ins tead of accessors which can\n // cause getting the property desciptor to th row an exception.\n // https://bugs.webkit.org/show_bug.cgi?id=49739\n return dummyDescriptor;\n }\n }\n\n function installProperty(source, targe t, allowMethod, opt_blacklist) {\n var names = getOwnPropertyNames(source);\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n if (name === 'polymerBlackList_')\n continue;\n\n if (name in target )\n continue;\n\n if (source.polymerBlackList_ && source.polymerBlac kList_[name])\n continue;\n\n if (isFirefox) {\n // Tickle Fi refox's old bindings.\n source.__lookupGetter__(name);\n }\n va r descriptor = getDescriptor(source, name);\n var getter, setter;\n if (allowMethod && typeof descriptor.value === 'function') {\n target[name] = getMethod(name);\n continue;\n }\n\n var isEvent = isEventHa ndlerName(name);\n if (isEvent)\n getter = scope.getEventHandlerGett er(name);\n else\n getter = getGetter(name);\n\n if (descriptor .writable || descriptor.set) {\n if (isEvent)\n setter = scope.g etEventHandlerSetter(name);\n else\n setter = getSetter(name);\n }\n\n defineProperty(target, name, {\n get: getter,\n s et: setter,\n configurable: descriptor.configurable,\n enumerable: descriptor.enumerable\n });\n }\n }\n\n /**\n * @param {Function} n ativeConstructor\n * @param {Function} wrapperConstructor\n * @param {Object =} opt_instance If present, this is used to extract\n * properties from an instance object.\n */\n function register(nativeConstructor, wrapperConstruc tor, opt_instance) {\n var nativePrototype = nativeConstructor.prototype;\n registerInternal(nativePrototype, wrapperConstructor, opt_instance);\n mixi nStatics(wrapperConstructor, nativeConstructor);\n }\n\n function registerInte rnal(nativePrototype, wrapperConstructor, opt_instance) {\n var wrapperProtot ype = wrapperConstructor.prototype;\n assert(constructorTable.get(nativeProto type) === undefined);\n\n constructorTable.set(nativePrototype, wrapperConstr uctor);\n nativePrototypeTable.set(wrapperPrototype, nativePrototype);\n\n addForwardingProperties(nativePrototype, wrapperPrototype);\n if (opt_instan ce)\n registerInstanceProperties(wrapperPrototype, opt_instance);\n defi neProperty(wrapperPrototype, 'constructor', {\n value: wrapperConstructor,\ n configurable: true,\n enumerable: false,\n writable: true\n });\n // Set it again. Some VMs optimizes objects that are used as prototypes .\n wrapperConstructor.prototype = wrapperPrototype;\n }\n\n function isWra pperFor(wrapperConstructor, nativeConstructor) {\n return constructorTable.ge t(nativeConstructor.prototype) ===\n wrapperConstructor;\n }\n\n /**\n * Creates a generic wrapper constructor based on |object| and its\n * constr uctor.\n * @param {Node} object\n * @return {Function} The generated constru ctor.\n */\n function registerObject(object) {\n var nativePrototype = Obj ect.getPrototypeOf(object);\n\n var superWrapperConstructor = getWrapperConst ructor(nativePrototype);\n var GeneratedWrapper = createWrapperConstructor(su perWrapperConstructor);\n registerInternal(nativePrototype, GeneratedWrapper, object);\n\n return GeneratedWrapper;\n }\n\n function createWrapperConstr uctor(superWrapperConstructor) {\n function GeneratedWrapper(node) {\n s uperWrapperConstructor.call(this, node);\n }\n var p = Object.create(super WrapperConstructor.prototype);\n p.constructor = GeneratedWrapper;\n Gener atedWrapper.prototype = p;\n\n return GeneratedWrapper;\n }\n\n var Origina lDOMImplementation = window.DOMImplementation;\n var OriginalEventTarget = wind ow.EventTarget;\n var OriginalEvent = window.Event;\n var OriginalNode = windo w.Node;\n var OriginalWindow = window.Window;\n var OriginalRange = window.Ran ge;\n var OriginalCanvasRenderingContext2D = window.CanvasRenderingContext2D;\n var OriginalWebGLRenderingContext = window.WebGLRenderingContext;\n var Origi nalSVGElementInstance = window.SVGElementInstance;\n\n function isWrapper(objec t) {\n return object instanceof wrappers.EventTarget ||\n object in stanceof wrappers.Event ||\n object instanceof wrappers.Range ||\n object instanceof wrappers.DOMImplementation ||\n object instan ceof wrappers.CanvasRenderingContext2D ||\n wrappers.WebGLRenderingCon text &&\n object instanceof wrappers.WebGLRenderingContext;\n }\n \n function isNative(object) {\n return OriginalEventTarget && object instan ceof OriginalEventTarget ||\n object instanceof OriginalNode ||\n object instanceof OriginalEvent ||\n object instanceof OriginalW indow ||\n object instanceof OriginalRange ||\n object insta nceof OriginalDOMImplementation ||\n object instanceof OriginalCanvasR enderingContext2D ||\n OriginalWebGLRenderingContext &&\n object instanceof OriginalWebGLRenderingContext ||\n OriginalSVGElem entInstance &&\n object instanceof OriginalSVGElementInstance;\n }\n\n /**\n * Wraps a node in a WrapperNode. If there already exists a wrappe r for the\n * |node| that wrapper is returned instead.\n * @param {Node} nod e\n * @return {WrapperNode}\n */\n function wrap(impl) {\n if (impl === null)\n return null;\n\n assert(isNative(impl));\n return impl.polyme rWrapper_ ||\n (impl.polymerWrapper_ = new (getWrapperConstructor(impl))( impl));\n }\n\n /**\n * Unwraps a wrapper and returns the node it is wrappin g.\n * @param {WrapperNode} wrapper\n * @return {Node}\n */\n function un wrap(wrapper) {\n if (wrapper === null)\n return null;\n assert(isWra pper(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 object.\n */\n function unwrapIfNeeded(object) {\n return o bject && isWrapper(object) ? unwrap(object) : object;\n }\n\n /**\n * Wraps object if it is not a wrapper.\n * @param {Object} object\n * @return {Objec t} The wrapper for object.\n */\n function wrapIfNeeded(object) {\n return object && !isWrapper(object) ? wrap(object) : object;\n }\n\n /**\n * Overr ides the current wrapper (if any) for node.\n * @param {Node} node\n * @para m {WrapperNode=} wrapper If left out the wrapper will be created as\n * ne eded next time someone wraps the node.\n */\n function rewrap(node, wrapper) {\n if (wrapper === null)\n return;\n assert(isNative(node));\n as sert(wrapper === undefined || isWrapper(wrapper));\n node.polymerWrapper_ = w rapper;\n }\n\n function defineGetter(constructor, name, getter) {\n define Property(constructor.prototype, name, {\n get: getter,\n configurable: true,\n enumerable: true\n });\n }\n\n function defineWrapGetter(cons tructor, name) {\n defineGetter(constructor, name, function() {\n return wrap(this.impl[name]);\n });\n }\n\n /**\n * Forwards existing methods o n the native object to the wrapper methods.\n * This does not wrap any of the arguments or the return value since the\n * wrapper implementation already tak es care of that.\n * @param {Array.<Function>} constructors\n * @parem {Arra y.<string>} names\n */\n function forwardMethodsToWrapper(constructors, names ) {\n constructors.forEach(function(constructor) {\n names.forEach(funct ion(name) {\n constructor.prototype[name] = function() {\n var w = wrapIfNeeded(this);\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.defineWrapGe tter = defineWrapGetter;\n scope.forwardMethodsToWrapper = forwardMethodsToWrap per;\n scope.isWrapper = isWrapper;\n scope.isWrapperFor = isWrapperFor;\n sc ope.mixin = mixin;\n scope.nativePrototypeTable = nativePrototypeTable;\n scop e.oneOf = oneOf;\n scope.registerObject = registerObject;\n scope.registerWrap per = register;\n scope.rewrap = rewrap;\n scope.unwrap = unwrap;\n scope.unw rapIfNeeded = unwrapIfNeeded;\n scope.wrap = wrap;\n scope.wrapIfNeeded = wrap IfNeeded;\n scope.wrappers = wrappers;\n\n})(window.ShadowDOMPolyfill);\n","/*\ n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sou rce code is goverened by a BSD-style\n * license that can be found in the LICENS E file.\n */\n\n(function(context) {\n 'use strict';\n\n var OriginalMutationO bserver = window.MutationObserver;\n var callbacks = [];\n var pending = false ;\n var timerFunc;\n\n function handle() {\n pending = false;\n var copi es = callbacks.slice(0);\n callbacks = [];\n for (var i = 0; i < copies.le ngth; i++) {\n (0, copies[i])();\n }\n }\n\n if (OriginalMutationObser ver) {\n var counter = 1;\n var observer = new OriginalMutationObserver(ha ndle);\n var textNode = document.createTextNode(counter);\n observer.obser ve(textNode, {characterData: true});\n\n timerFunc = function() {\n coun ter = (counter + 1) % 2;\n textNode.data = counter;\n };\n\n } else {\n timerFunc = window.setImmediate || window.setTimeout;\n }\n\n function set EndOfMicrotask(func) {\n callbacks.push(func);\n if (pending)\n retur n;\n pending = true;\n timerFunc(handle, 0);\n }\n\n context.setEndOfMic rotask = setEndOfMicrotask;\n\n})(window.ShadowDOMPolyfill);\n","/*\n * Copyrigh t 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.setEn dOfMicrotask\n var wrapIfNeeded = scope.wrapIfNeeded\n var wrappers = scope.wr appers;\n\n var registrationsTable = new WeakMap();\n var globalMutationObserv ers = [];\n var isScheduled = false;\n\n function scheduleCallback(observer) { \n if (isScheduled)\n return;\n setEndOfMicrotask(notifyObservers);\n isScheduled = true;\n }\n\n // http://dom.spec.whatwg.org/#mutation-observ ers\n function notifyObservers() {\n isScheduled = false;\n\n do {\n var notifyList = globalMutationObservers.slice();\n var anyNonEmpty = fals e;\n for (var i = 0; i < notifyList.length; i++) {\n var mo = notify List[i];\n var queue = mo.takeRecords();\n removeTransientObserver sFor(mo);\n if (queue.length) {\n mo.callback_(queue, mo);\n anyNonEmpty = true;\n }\n }\n } while (anyNonEmpty);\n }\n \n /**\n * @param {string} type\n * @param {Node} target\n * @constructor \n */\n function MutationRecord(type, target) {\n this.type = type;\n t his.target = target;\n this.addedNodes = new wrappers.NodeList();\n this.r emovedNodes = new wrappers.NodeList();\n this.previousSibling = null;\n th is.nextSibling = null;\n this.attributeName = null;\n this.attributeNamesp ace = null;\n this.oldValue = null;\n }\n\n /**\n * Registers transient o bservers to ancestor and its ancesors for the node\n * which was removed.\n * @param {!Node} ancestor\n * @param {!Node} node\n */\n function registerT ransientObservers(ancestor, node) {\n for (; ancestor; ancestor = ancestor.pa rentNode) {\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 (regist ration.options.subtree)\n registration.addTransientObserver(node);\n }\n }\n }\n\n function removeTransientObserversFor(observer) {\n for (var i = 0; i < observer.nodes_.length; i++) {\n var node = observer.nodes_ [i];\n var registrations = registrationsTable.get(node);\n if (!regist rations)\n return;\n for (var j = 0; j < registrations.length; j++) {\n var registration = registrations[j];\n if (registration.observ er === observer)\n registration.removeTransientObservers();\n }\n }\n }\n\n // http://dom.spec.whatwg.org/#queue-a-mutation-record\n functio n enqueueMutation(target, type, data) {\n // 1.\n var interestedObservers = Object.create(null);\n var associatedStrings = Object.create(null);\n\n // 2.\n for (var node = target; node; node = node.parentNode) {\n // 3.\ n var registrations = registrationsTable.get(node);\n if (!registratio ns)\n continue;\n for (var j = 0; j < registrations.length; j++) {\n var registration = 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\", opt ions's attributeFilter is present, and\n // either options's attributeFil ter does not contain name or namespace\n // is non-null, continue.\n if (type === 'attributes' && options.attributeFilter &&\n (data.na mespace !== 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 intereste dObservers[observer.uid_] = observer;\n\n // 7. If either type is \"attri butes\" and options's attributeOldValue is\n // true, or type is \"charac terData\" and options's characterDataOldValue\n // is true, set the paire d string of registered observer's observer in\n // interested observers t o oldValue.\n if (type === 'attributes' && options.attributeOldValue ||\n type === 'characterData' && options.characterDataOldValue) {\n associatedStrings[observer.uid_] = data.oldValue;\n }\n }\n } \n\n var anyRecordsEnqueued = false;\n\n // 4.\n for (var uid in intere stedObservers) {\n var observer = interestedObservers[uid];\n var reco rd = new MutationRecord(type, target);\n\n // 2.\n if ('name' in data && 'namespace' in data) {\n record.attributeName = data.name;\n re cord.attributeNamespace = data.namespace;\n }\n\n // 3.\n if (dat a.addedNodes)\n record.addedNodes = data.addedNodes;\n\n // 4.\n if (data.removedNodes)\n record.removedNodes = data.removedNodes;\n\n // 5.\n if (data.previousSibling)\n record.previousSibling = dat a.previousSibling;\n\n // 6.\n if (data.nextSibling)\n record.n extSibling = data.nextSibling;\n\n // 7.\n if (associatedStrings[uid] !== undefined)\n record.oldValue = associatedStrings[uid];\n\n // 8. \n observer.records_.push(record);\n\n anyRecordsEnqueued = true;\n }\n\n if (anyRecordsEnqueued)\n scheduleCallback();\n }\n\n var slice = Array.prototype.slice;\n\n /**\n * @param {!Object} options\n * @constru ctor\n */\n function MutationObserverOptions(options) {\n this.childList = !!options.childList;\n this.subtree = !!options.subtree;\n\n // 1. If eit her options' attributeOldValue or attributeFilter is present\n // and options ' attributes is omitted, set options' attributes to true.\n if (!('attributes ' in options) &&\n ('attributeOldValue' in options || 'attributeFilter' i n options)) {\n this.attributes = true;\n } else {\n this.attribute s = !!options.attributes;\n }\n\n // 2. If options' characterDataOldValue is present and options'\n // characterData is omitted, set options' character Data to true.\n if ('characterDataOldValue' in options && !('characterData' i n options))\n this.characterData = true;\n else\n this.characterDat a = !!options.characterData;\n\n // 3. & 4.\n if (!this.attributes &&\n (options.attributeOldValue || 'attributeFilter' in options) ||\n // 5.\n !this.characterData && options.characterDataOldValue) {\n throw new TypeError();\n }\n\n this.characterData = !!options.characterData;\n this.attributeOldValue = !!options.attributeOldValue;\n this.characterData OldValue = !!options.characterDataOldValue;\n if ('attributeFilter' in option s) {\n if (options.attributeFilter == null ||\n typeof options.att ributeFilter !== 'object') {\n throw new TypeError();\n }\n thi s.attributeFilter = slice.call(options.attributeFilter);\n } else {\n th is.attributeFilter = null;\n }\n }\n\n var uidCounter = 0;\n\n /**\n * T he 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_ = ++uidCounter;\n\n // This will leak. There is no way to imple ment this without WeakRefs :'(\n globalMutationObservers.push(this);\n }\n\n MutationObserver.prototype = {\n // http://dom.spec.whatwg.org/#dom-mutatio nobserver-observe\n observe: function(target, options) {\n target = wrap IfNeeded(target);\n\n var newOptions = new MutationObserverOptions(options) ;\n\n // 6.\n var registration;\n var registrations = registratio nsTable.get(target);\n if (!registrations)\n registrationsTable.set( target, registrations = []);\n\n for (var i = 0; i < registrations.length; i++) {\n if (registrations[i].observer === this) {\n registratio n = registrations[i];\n // 6.1.\n registration.removeTransient Observers();\n // 6.2.\n registration.options = newOptions;\n }\n }\n\n // 7.\n if (!registration) {\n registrati on = new Registration(this, target, newOptions);\n registrations.push(reg istration);\n this.nodes_.push(target);\n }\n },\n\n // http:/ /dom.spec.whatwg.org/#dom-mutationobserver-disconnect\n disconnect: function( ) {\n this.nodes_.forEach(function(node) {\n var registrations = reg istrationsTable.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 // E ach node can only have one registered observer associated with\n // t his observer.\n break;\n }\n }\n }, this);\n this.records_ = [];\n },\n\n takeRecords: function() {\n var copyOf Records = this.records_;\n this.records_ = [];\n return copyOfRecords; \n }\n };\n\n /**\n * Class used to represent a registered observer.\n * @param {MutationObserver} observer\n * @param {Node} target\n * @param {Mu tationObserverOptions} options\n * @constructor\n */\n function Registratio n(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 chang e records.\n * @param {Node} node\n */\n addTransientObserver: functi on(node) {\n // Don't add transient observers on the target itself. We alre ady have all\n // the required listeners set up on the target.\n if (n ode === this.target)\n return;\n\n this.transientObservedNodes.push( node);\n var registrations = registrationsTable.get(node);\n if (!regi strations)\n registrationsTable.set(node, registrations = []);\n\n / / We know that registrations does not contain this because we already\n // checked if node === this.target.\n registrations.push(this);\n },\n\n removeTransientObservers: function() {\n var transientObservedNodes = this .transientObservedNodes;\n this.transientObservedNodes = [];\n\n for ( var i = 0; i < transientObservedNodes.length; i++) {\n var node = transie ntObservedNodes[i];\n var registrations = registrationsTable.get(node);\n for (var j = 0; j < registrations.length; j++) {\n if (registra tions[j] === this) {\n registrations.splice(j, 1);\n // Ea ch node can only have one registered observer associated with\n // th is observer.\n break;\n }\n }\n }\n }\n };\n \n scope.enqueueMutation = enqueueMutation;\n scope.registerTransientObservers = registerTransientObservers;\n scope.wrappers.MutationObserver = MutationObse rver;\n scope.wrappers.MutationRecord = MutationRecord;\n\n})(window.ShadowDOMP olyfill);\n","/**\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 f ound in the LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n /**\n * A tree scope represents the root of a tree. All nodes in a tree point to\n * the same TreeScope object. The tree scope of a node get set the first time\n * it is accessed or when a node is added or remove to a tree.\n * @construc tor\n */\n function TreeScope(root, parent) {\n this.root = root;\n thi s.parent = parent;\n }\n\n TreeScope.prototype = {\n get renderer() {\n if (this.root instanceof scope.wrappers.ShadowRoot) {\n return scope.ge tRendererForHost(this.root.host);\n }\n return null;\n },\n\n co ntains: function(treeScope) {\n for (; treeScope; treeScope = treeScope.par ent) {\n if (treeScope === this)\n return true;\n }\n return false;\n }\n };\n\n function setTreeScope(node, treeScope) {\n if (node.treeScope_ !== treeScope) {\n node.treeScope_ = treeScope;\n fo r (var sr = node.shadowRoot; sr; sr = sr.olderShadowRoot) {\n sr.treeScop e_.parent = treeScope;\n }\n for (var child = node.firstChild; child; child = child.nextSibling) {\n setTreeScope(child, treeScope);\n }\n }\n }\n\n function getTreeScope(node) {\n if (node.treeScope_)\n r eturn node.treeScope_;\n var parent = node.parentNode;\n var treeScope;\n if (parent)\n treeScope = getTreeScope(parent);\n else\n treeSco pe = new TreeScope(node, null);\n return node.treeScope_ = treeScope;\n }\n\ n scope.TreeScope = TreeScope;\n scope.getTreeScope = getTreeScope;\n scope.s etTreeScope = setTreeScope;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 20 13 The Polymer Authors. All rights reserved.\n// Use of this source code is gove rened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(func tion(scope) {\n 'use strict';\n\n var forwardMethodsToWrapper = scope.forwardM ethodsToWrapper;\n var getTreeScope = scope.getTreeScope;\n var mixin = scope. mixin;\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unw rap;\n var wrap = scope.wrap;\n var wrappers = scope.wrappers;\n\n var wrappe dFuns = new WeakMap();\n var listenersTable = new WeakMap();\n var handledEven tsTable = new WeakMap();\n var currentlyDispatchingEvents = new WeakMap();\n v ar targetTable = new WeakMap();\n var currentTargetTable = new WeakMap();\n va r relatedTargetTable = new WeakMap();\n var eventPhaseTable = new WeakMap();\n var stopPropagationTable = new WeakMap();\n var stopImmediatePropagationTable = new WeakMap();\n var eventHandlersTable = new WeakMap();\n var eventPathTabl e = new WeakMap();\n\n function isShadowRoot(node) {\n return node instanceo f wrappers.ShadowRoot;\n }\n\n function isInsertionPoint(node) {\n var loca lName = node.localName;\n return localName === 'content' || localName === 'sh adow';\n }\n\n function isShadowHost(node) {\n return !!node.shadowRoot;\n }\n\n function getEventParent(node) {\n var dv;\n return node.parentNode || (dv = node.defaultView) && wrap(dv) || null;\n }\n\n // https://dvcs.w3.or g/hg/webcomponents/raw-file/tip/spec/shadow/index.html#dfn-adjusted-parent\n fu nction calculateParents(node, context, 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 eventParent s = scope.eventParentsTable.get(node);\n if (eventParents) {\n // Copy o ver the remaining event parents for next iteration.\n for (var i = 1; i < e ventParents.length; i++) {\n ancestors[i - 1] = eventParents[i];\n } \n return eventParents[0];\n }\n\n // 3.\n if (context && isInsert ionPoint(node)) {\n var parentNode = node.parentNode;\n if (parentNode && isShadowHost(parentNode)) {\n var trees = scope.getShadowTrees(parent Node);\n var p = getInsertionParent(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 // h ttps://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#event-re targeting\n function retarget(node) {\n var stack = []; // 1.\n var ance stor = node; // 2.\n var targets = [];\n var ancestors = [];\n while ( ancestor) { // 3.\n var context = null; // 3.2.\n // TODO(arv): Chan ge order of these. If the stack is empty we always end\n // up pushing ance stor, no matter what.\n if (isInsertionPoint(ancestor)) { // 3.1.\n context = topMostNotInsertionPoint(stack); // 3.1.1.\n var top = stack[ stack.length - 1] || ancestor; // 3.1.2.\n stack.push(top);\n } els e if (!stack.length) {\n stack.push(ancestor); // 3.3.\n }\n v ar target = stack[stack.length - 1]; // 3.4.\n targets.push({target: targe t, currentTarget: ancestor}); // 3.5.\n if (isShadowRoot(ancestor)) // 3. 6.\n stack.pop(); // 3.6.1.\n\n ancestor = calculateParents(ancesto r, 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 (!isInsertionPoint(stack[i]))\n return stack[i];\n }\n return null;\n }\n\n // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/s pec/shadow/index.html#dfn-adjusted-related-target\n function adjustRelatedTarge t(target, related) {\n var ancestors = [];\n while (target) { // 3.\n var stack = []; // 3.1.\n var ancestor = related; // 3.2.\n var la st = undefined; // 3.3. Needs to be reset every iteration.\n while (ancest or) {\n var context = null;\n if (!stack.length) {\n stac k.push(ancestor);\n } else {\n if (isInsertionPoint(ancestor)) { // 3.4.3.\n context = topMostNotInsertionPoint(stack);\n // isDistributed is more general than checking whether last is\n // assigned into ancestor.\n if (isDistributed(last)) { // 3.4.3.2.\n var head = stack[stack.length - 1];\n stack.push(head); \n }\n }\n }\n\n if (inSameTree(ancestor, targ et)) // 3.4.4.\n return stack[stack.length - 1];\n\n if (isShad owRoot(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 (isShadowRoot(target)) // 3.5.\n target = target.host;\n else\n target = target.parentNode; // 3.6.\n }\n }\n\n function getInsertionParent(node) {\n return scope.insertionParentTab le.get(node);\n }\n\n function isDistributed(node) {\n return getInsertionP arent(node);\n }\n\n function inSameTree(a, b) {\n return getTreeScope(a) = == getTreeScope(b);\n }\n\n function dispatchOriginalEvent(originalEvent) {\n // Make sure this event is only dispatched once.\n if (handledEventsTable. get(originalEvent))\n return;\n handledEventsTable.set(originalEvent, tr ue);\n dispatchEvent(wrap(originalEvent), wrap(originalEvent.target));\n }\n \n function isLoadLikeEvent(event) {\n switch (event.type) {\n case 'be foreunload':\n case 'load':\n case 'unload':\n return true;\n }\n return false;\n }\n\n function dispatchEvent(event, originalWrapperTa rget) {\n if (currentlyDispatchingEvents.get(event))\n throw new Error(' InvalidStateError')\n currentlyDispatchingEvents.set(event, true);\n\n // Render to ensure that the event path is correct.\n scope.renderAllPending();\ n var eventPath = retarget(originalWrapperTarget);\n\n // For window \"loa d\" 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/cu rrent-work/multipage/the-end.html#the-end\n //\n // TODO(arv): Find a less hacky way to do this.\n if (eventPath.length === 2 &&\n eventPath[0]. target instanceof wrappers.Document &&\n isLoadLikeEvent(event)) {\n eventPath.shift();\n }\n\n eventPathTable.set(event, eventPath);\n\n i f (dispatchCapturing(event, eventPath)) {\n if (dispatchAtTarget(event, eve ntPath)) {\n dispatchBubbling(event, eventPath);\n }\n }\n\n e ventPhaseTable.set(event, Event.NONE);\n currentTargetTable.delete(event, nul l);\n currentlyDispatchingEvents.delete(event);\n\n return event.defaultPr evented;\n }\n\n function dispatchCapturing(event, eventPath) {\n var phase ;\n\n for (var i = eventPath.length - 1; i > 0; i--) {\n var target = ev entPath[i].target;\n var currentTarget = eventPath[i].currentTarget;\n if (target === currentTarget)\n continue;\n\n phase = Event.CAPTURI NG_PHASE;\n if (!invoke(eventPath[i], event, phase))\n return 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, ph ase);\n }\n\n function dispatchBubbling(event, eventPath) {\n var 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 = eventPat h[i].currentTarget;\n if (target === currentTarget)\n phase = 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 funct ion invoke(tuple, event, phase) {\n var target = tuple.target;\n var curre ntTarget = tuple.currentTarget;\n\n var listeners = listenersTable.get(curren tTarget);\n if (!listeners)\n return true;\n\n if ('relatedTarget' in event) {\n var originalEvent = unwrap(event);\n var unwrappedRelatedT arget = originalEvent.relatedTarget;\n\n // X-Tag sets relatedTarget on a C ustomEvent. If they do that there is no\n // way to have relatedTarget retu rn the adjusted target but worse is that\n // the originalEvent might not h ave a relatedTarget so we hit an assert\n // when we try to wrap it.\n if (unwrappedRelatedTarget) {\n // In IE we can get objects that are not EventTargets at this point.\n // Safari does not have an EventTarget int erface so revert to checking\n // for addEventListener as an approximatio n.\n if (unwrappedRelatedTarget instanceof Object &&\n unwrapp edRelatedTarget.addEventListener) {\n var relatedTarget = wrap(unwrappe dRelatedTarget);\n\n var adjusted = adjustRelatedTarget(currentTarget, relatedTarget);\n if (adjusted === target)\n return true;\n } else {\n adjusted = null;\n }\n relatedTargetTab le.set(event, adjusted);\n }\n }\n\n eventPhaseTable.set(event, phase );\n var type = event.type;\n\n var anyRemoved = false;\n targetTable.s et(event, target);\n currentTargetTable.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 && phas e === Event.CAPTURING_PHASE ||\n listener.capture && phase === Event.BU BBLING_PHASE) {\n continue;\n }\n\n try {\n if (typeof l istener.handler === 'function')\n listener.handler.call(currentTarget, event);\n else\n listener.handler.handleEvent(event);\n\n if (stopImmediatePropagationTable.get(event))\n return false;\n\n } catch (ex) {\n if (window.onerror)\n window.onerror(ex.messag e);\n else\n console.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 < copy.length; i++) {\n if (!copy[i].remove d)\n listeners.push(copy[i]);\n }\n }\n\n return !stopPropag ationTable.get(event);\n }\n\n function Listener(type, handler, capture) {\n this.type = type;\n this.handler = handler;\n this.capture = Boolean(cap ture);\n }\n Listener.prototype = {\n equals: function(that) {\n retur n this.handler === that.handler && this.type === that.type &&\n this.ca pture === that.capture;\n },\n get removed() {\n return this.handler === null;\n },\n remove: function() {\n this.handler = null;\n }\n };\n\n var OriginalEvent = window.Event;\n OriginalEvent.prototype.polymerBl ackList_ = {\n returnValue: true,\n // TODO(arv): keyLocation is part of K eyboardEvent but Firefox does not\n // support constructable KeyboardEvent so we keep it here for now.\n keyLocation: true\n };\n\n /**\n * Creates a new Event wrapper or wraps an existin native Event object.\n * @param {string| Event} type\n * @param {Object=} options\n * @constructor\n */\n function Event(type, options) {\n if (type instanceof OriginalEvent) {\n var imp l = type;\n if (!OriginalBeforeUnloadEvent && impl.type === 'beforeunload') \n return new BeforeUnloadEvent(impl);\n this.impl = impl;\n } el se {\n return wrap(constructEvent(OriginalEvent, 'Event', type, options));\ n }\n }\n Event.prototype = {\n get target() {\n return targetTable .get(this);\n },\n get currentTarget() {\n return currentTargetTable. get(this);\n },\n get eventPhase() {\n return eventPhaseTable.get(thi s);\n },\n get path() {\n var nodeList = new wrappers.NodeList();\n var eventPath = eventPathTable.get(this);\n if (eventPath) {\n v ar index = 0;\n var lastIndex = eventPath.length - 1;\n var baseRo ot = getTreeScope(currentTargetTable.get(this));\n\n for (var i = 0; i <= lastIndex; i++) {\n var currentTarget = eventPath[i].currentTarget;\n var currentRoot = getTreeScope(currentTarget);\n if (currentRo ot.contains(baseRoot) &&\n // Make sure we do not add Window to the path.\n (i !== lastIndex || currentTarget instanceof wrappers.Node )) {\n nodeList[index++] = currentTarget;\n }\n }\n nodeList.length = index;\n }\n return nodeList;\n },\n sto pPropagation: function() {\n stopPropagationTable.set(this, true);\n },\ n stopImmediatePropagation: function() {\n stopPropagationTable.set(this , true);\n stopImmediatePropagationTable.set(this, true);\n }\n };\n r egisterWrapper(OriginalEvent, Event, document.createEvent('Event'));\n\n functi on unwrapOptions(options) {\n if (!options || !options.relatedTarget)\n return options;\n return Object.create(options, {\n relatedTarget: {valu e: unwrap(options.relatedTarget)}\n });\n }\n\n function registerGenericEve nt(name, SuperEvent, prototype) {\n var OriginalEvent = window[name];\n va r GenericEvent = function(type, options) {\n if (type instanceof OriginalEv ent)\n this.impl = type;\n else\n return wrap(constructEvent( OriginalEvent, name, type, options));\n };\n GenericEvent.prototype = Obje ct.create(SuperEvent.prototype);\n if (prototype)\n mixin(GenericEvent.p rototype, prototype);\n if (OriginalEvent) {\n // - Old versions of Safa ri fails on new FocusEvent (and others?).\n // - IE does not support event constructors.\n // - createEvent('FocusEvent') throws in Firefox.\n // => Try the best practice solution first and fallback to the old way\n // i f needed.\n try {\n registerWrapper(OriginalEvent, GenericEvent, new OriginalEvent('temp'));\n } catch (ex) {\n registerWrapper(Original Event, GenericEvent,\n document.createEvent(name));\n }\n }\n return GenericEvent;\n }\n\n var UIEvent = registerGenericEven t('UIEvent', Event);\n var CustomEvent = registerGenericEvent('CustomEvent', Ev ent);\n\n var relatedTargetProto = {\n get relatedTarget() {\n var rela tedTarget = relatedTargetTable.get(this);\n // relatedTarget can be null.\n if (relatedTarget !== undefined)\n return relatedTarget;\n ret urn wrap(unwrap(this).relatedTarget);\n }\n };\n\n function getInitFunction (name, relatedTargetIndex) {\n return function() {\n arguments[relatedTa rgetIndex] = unwrap(arguments[relatedTargetIndex]);\n var impl = unwrap(thi s);\n impl[name].apply(impl, arguments);\n };\n }\n\n var mouseEventPr oto = mixin({\n initMouseEvent: getInitFunction('initMouseEvent', 14)\n }, r elatedTargetProto);\n\n var focusEventProto = mixin({\n initFocusEvent: getI nitFunction('initFocusEvent', 5)\n }, relatedTargetProto);\n\n var MouseEvent = registerGenericEvent('MouseEvent', UIEvent, mouseEventProto);\n var FocusEven t = registerGenericEvent('FocusEvent', UIEvent, focusEventProto);\n\n // In cas e the browser does not support event constructors we polyfill that\n // by call ing `createEvent('Foo')` and `initFooEvent` where the arguments to\n // `initFo oEvent` are derived from the registered default event init dict.\n var defaultI nitDicts = Object.create(null);\n\n var supportsEventConstructors = (function() {\n try {\n new window.FocusEvent('focus');\n } catch (ex) {\n return false;\n }\n return true;\n })();\n\n /**\n * Constructs a new native event.\n */\n function constructEvent(OriginalEvent, name, type, optio ns) {\n if (supportsEventConstructors)\n return new OriginalEvent(type, unwrapOptions(options));\n\n // Create the arguments from the default diction ary.\n var event = unwrap(document.createEvent(name));\n var defaultDict = defaultInitDicts[name];\n var args = [type];\n Object.keys(defaultDict).f orEach(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( event, args);\n return event;\n }\n\n if (!supportsEventConstructors) {\n var configureEventConstructor = function(name, initDict, superName) {\n i f (superName) {\n var superDict = defaultInitDicts[superName];\n i nitDict = mixin(mixin({}, superDict), initDict);\n }\n\n defaultInitDi cts[name] = initDict;\n };\n\n // The order of the default event init dict ionary keys is important, the\n // arguments to initFooEvent is derived from that.\n configureEventConstructor('Event', {bubbles: false, cancelable: false });\n configureEventConstructor('CustomEvent', {detail: null}, 'Event');\n configureEventConstructor('UIEvent', {view: null, detail: 0}, 'Event');\n co nfigureEventConstructor('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 related Target: null\n }, 'UIEvent');\n configureEventConstructor('FocusEvent', {r elatedTarget: null}, 'UIEvent');\n }\n\n // Safari 7 does not yet have BeforeU nloadEvent.\n // https://bugs.webkit.org/show_bug.cgi?id=120849\n var Original BeforeUnloadEvent = window.BeforeUnloadEvent;\n\n function BeforeUnloadEvent(im pl) {\n Event.call(this, impl);\n }\n BeforeUnloadEvent.prototype = Object. create(Event.prototype);\n mixin(BeforeUnloadEvent.prototype, {\n get return Value() {\n return this.impl.returnValue;\n },\n set returnValue(v) { \n this.impl.returnValue = v;\n }\n });\n\n if (OriginalBeforeUnloadEv ent)\n registerWrapper(OriginalBeforeUnloadEvent, BeforeUnloadEvent);\n\n fu nction isValidListener(fun) {\n if (typeof fun === 'function')\n return true;\n return fun && fun.handleEvent;\n }\n\n function isMutationEvent(typ e) {\n switch (type) {\n case 'DOMAttrModified':\n case 'DOMAttribu teNameChanged':\n case 'DOMCharacterDataModified':\n case 'DOMElementN ameChanged':\n case 'DOMNodeInserted':\n case 'DOMNodeInsertedIntoDocu ment':\n case 'DOMNodeRemoved':\n case 'DOMNodeRemovedFromDocument':\n case 'DOMSubtreeModified':\n return true;\n }\n return false; \n }\n\n var OriginalEventTarget = window.EventTarget;\n\n /**\n * This rep resents a wrapper for an EventTarget.\n * @param {!EventTarget} impl The origi nal event target.\n * @constructor\n */\n function EventTarget(impl) {\n this.impl = impl;\n }\n\n // Node and Window have different internal type che cks in WebKit so we cannot\n // use the same method as the original function.\n var methodNames = [\n 'addEventListener',\n 'removeEventListener',\n 'dispatchEvent'\n ];\n\n [Node, Window].forEach(function(constructor) {\n v ar p = constructor.prototype;\n methodNames.forEach(function(name) {\n O bject.defineProperty(p, name + '_', {value: p[name]});\n });\n });\n\n func tion getTargetToListenAt(wrapper) {\n if (wrapper instanceof wrappers.ShadowR oot)\n wrapper = wrapper.host;\n return unwrap(wrapper);\n }\n\n Event Target.prototype = {\n addEventListener: function(type, fun, capture) {\n if (!isValidListener(fun) || isMutationEvent(type))\n return;\n\n var listener = new Listener(type, fun, capture);\n var listeners = listener sTable.get(this);\n if (!listeners) {\n listeners = [];\n lis tenersTable.set(this, listeners);\n } else {\n // Might have a dupli cate.\n for (var i = 0; i < listeners.length; i++) {\n if (liste ner.equals(listeners[i]))\n return;\n }\n }\n\n list eners.push(listener);\n\n var target = getTargetToListenAt(this);\n ta rget.addEventListener_(type, dispatchOriginalEvent, true);\n },\n removeEv entListener: function(type, fun, capture) {\n capture = Boolean(capture);\n var listeners = listenersTable.get(this);\n if (!listeners)\n return;\n var count = 0, found = false;\n for (var i = 0; i < listener s.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 = ge tTargetToListenAt(this);\n target.removeEventListener_(type, dispatchOrig inalEvent, true);\n }\n },\n dispatchEvent: function(event) {\n // We want to use the native dispatchEvent because it triggers the default\n // actions (like checking a checkbox). However, if there are no listeners\n // in the composed tree then there are 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 listener s 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 disp atching the same event again. This is safe because if user\n // code calls this during an existing dispatch of the same event the\n // native dispatch Event throws (that is required by the spec).\n handledEventsTable.set(nativ eEvent, false);\n\n // Force rendering since we prefer native dispatch and that works on the\n // composed tree.\n scope.renderAllPending();\n\n var tempListener;\n if (!hasListenerInAncestors(this, eventType)) {\n tempListener = function() {};\n this.addEventListener(eventType, t empListener, true);\n }\n\n try {\n return unwrap(this).dispatc hEvent_(nativeEvent);\n } finally {\n if (tempListener)\n t his.removeEventListener(eventType, tempListener, true);\n }\n }\n };\n\ n function hasListener(node, type) {\n var listeners = listenersTable.get(no de);\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n if (!listeners[i].removed && listeners[i].type === type)\n retu rn true;\n }\n }\n return false;\n }\n\n function hasListenerInAnce stors(target, type) {\n for (var node = unwrap(target); node; node = node.par entNode) {\n if (hasListener(wrap(node), type))\n return true;\n }\n return false;\n }\n\n if (OriginalEventTarget)\n registerWrapper(Ori ginalEventTarget, EventTarget);\n\n function wrapEventTargetMethods(constructor s) {\n forwardMethodsToWrapper(constructors, methodNames);\n }\n\n var orig inalElementFromPoint = document.elementFromPoint;\n\n function elementFromPoint (self, document, x, y) {\n scope.renderAllPending();\n\n var element = wra p(originalElementFromPoint.call(document.impl, x, y));\n var targets = retarg et(element, this)\n for (var i = 0; i < targets.length; i++) {\n var tar get = targets[i];\n if (target.currentTarget === self)\n return targ et.target;\n }\n return null;\n }\n\n /**\n * Returns a function that is to be used as a getter for `onfoo` properties.\n * @param {string} name\n * @return {Function}\n */\n function getEventHandlerGetter(name) {\n retu rn function() {\n var inlineEventHandlers = eventHandlersTable.get(this);\n return inlineEventHandlers && inlineEventHandlers[name] &&\n inli neEventHandlers[name].value || null;\n };\n }\n\n /**\n * Returns a func tion 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 in lineEventHandlers = eventHandlersTable.get(this);\n if (!inlineEventHandler s) {\n inlineEventHandlers = Object.create(null);\n eventHandlersT able.set(this, inlineEventHandlers);\n }\n\n var old = inlineEventHand lers[name];\n if (old)\n this.removeEventListener(eventType, old.wra pped, false);\n\n if (typeof value === 'function') {\n var wrapped = function(e) {\n var rv = value.call(this, e);\n if (rv === fa lse)\n e.preventDefault();\n else if (name === 'onbeforeunlo ad' && typeof rv === 'string')\n e.returnValue = rv;\n // mo useover uses true for preventDefault but preventDefault for\n // mouseo ver is ignored by browsers these day.\n };\n\n this.addEventListen er(eventType, wrapped, false);\n inlineEventHandlers[name] = {\n value: value,\n wrapped: wrapped\n };\n }\n };\n }\n\n scope.adjustRelatedTarget = adjustRelatedTarget;\n scope.elementFromPoint = e lementFromPoint;\n scope.getEventHandlerGetter = getEventHandlerGetter;\n scop e.getEventHandlerSetter = getEventHandlerSetter;\n scope.wrapEventTargetMethods = wrapEventTargetMethods;\n scope.wrappers.BeforeUnloadEvent = BeforeUnloadEve nt;\n scope.wrappers.CustomEvent = CustomEvent;\n scope.wrappers.Event = Event ;\n scope.wrappers.EventTarget = EventTarget;\n scope.wrappers.FocusEvent = Fo cusEvent;\n scope.wrappers.MouseEvent = MouseEvent;\n scope.wrappers.UIEvent = UIEvent;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2012 The Polymer Aut hors. All rights reserved.\n// Use of this source code is goverened by a BSD-sty le\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, {enumerable: false});\n }\n\n function NodeL ist() {\n this.length = 0;\n nonEnum(this, 'length');\n }\n NodeList.pro totype = {\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 wrapperList.length = length;\n return wrapperLi st;\n }\n\n function addWrapNodeListMethod(wrapperConstructor, name) {\n wr apperConstructor.prototype[name] = function() {\n return wrapNodeList(this. impl[name].apply(this.impl, arguments));\n };\n }\n\n scope.wrappers.NodeLi st = NodeList;\n scope.addWrapNodeListMethod = addWrapNodeListMethod;\n scope. wrapNodeList = wrapNodeList;\n\n})(window.ShadowDOMPolyfill);\n","/*\n * Copyrig ht 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\n(function(scope) {\n 'use strict';\n\n // TODO(arv): Implement.\n\n scop e.wrapHTMLCollection = scope.wrapNodeList;\n scope.wrappers.HTMLCollection = sc ope.wrappers.NodeList;\n\n})(window.ShadowDOMPolyfill);\n","/**\n * Copyright 20 12 The Polymer Authors. All rights reserved.\n * Use of this source code is gove rened 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 EventTarget = scope.wrappers.EventT arget;\n var NodeList = scope.wrappers.NodeList;\n var TreeScope = scope.TreeS cope;\n var assert = scope.assert;\n var defineWrapGetter = scope.defineWrapGe tter;\n var enqueueMutation = scope.enqueueMutation;\n var getTreeScope = scop e.getTreeScope;\n var isWrapper = scope.isWrapper;\n var mixin = scope.mixin;\ n var registerTransientObservers = scope.registerTransientObservers;\n var reg isterWrapper = scope.registerWrapper;\n var setTreeScope = scope.setTreeScope;\ n var unwrap = scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n v ar wrap = scope.wrap;\n var wrapIfNeeded = scope.wrapIfNeeded;\n var wrappers = scope.wrappers;\n\n function assertIsNodeWrapper(node) {\n assert(node ins tanceof Node);\n }\n\n function createOneElementNodeList(node) {\n var node s = new NodeList();\n nodes[0] = node;\n nodes.length = 1;\n return nod es;\n }\n\n var surpressMutations = false;\n\n /**\n * Called before node i s inserted into a node to enqueue its removal from its\n * old parent.\n * @ param {!Node} node The node that is about to be removed.\n * @param {!Node} pa rent The parent node that the node is being removed from.\n * @param {!NodeLis t} nodes The collected nodes.\n */\n function enqueueRemovalForInsertedNodes( node, parent, nodes) {\n enqueueMutation(parent, 'childList', {\n remove dNodes: nodes,\n previousSibling: node.previousSibling,\n nextSibling: node.nextSibling\n });\n }\n\n function enqueueRemovalForInsertedDocumentF ragment(df, nodes) {\n enqueueMutation(df, 'childList', {\n removedNodes : nodes\n });\n }\n\n /**\n * Collects nodes from a DocumentFragment or a Node for removal followed\n * by an insertion.\n *\n * This updates the i nternal pointers for node, previousNode and nextNode.\n */\n function collect Nodes(node, parentNode, previousNode, nextNode) {\n if (node instanceof Docum entFragment) {\n var nodes = collectNodesForDocumentFragment(node);\n\n // The extra loop is to work around bugs with DocumentFragments in IE.\n surpressMutations = true;\n for (var i = nodes.length - 1; i >= 0; i--) {\n node.removeChild(nodes[i]);\n nodes[i].parentNode_ = parentNode;\ n }\n surpressMutations = false;\n\n for (var i = 0; i < nodes.le ngth; 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 (nextNod e)\n nextNode.previousSibling_ = nodes[nodes.length - 1];\n\n return nodes;\n }\n\n var nodes = createOneElementNodeList(node);\n var oldPa rent = node.parentNode;\n if (oldParent) {\n // This will enqueue the mu tation record for the removal as needed.\n oldParent.removeChild(node);\n }\n\n node.parentNode_ = parentNode;\n node.previousSibling_ = previousN ode;\n node.nextSibling_ = nextNode;\n if (previousNode)\n previousNo de.nextSibling_ = node;\n if (nextNode)\n nextNode.previousSibling_ = no de;\n\n return nodes;\n }\n\n function collectNodesNative(node) {\n if ( node instanceof DocumentFragment)\n return collectNodesForDocumentFragment( node);\n\n var nodes = createOneElementNodeList(node);\n var oldParent = n ode.parentNode;\n if (oldParent)\n enqueueRemovalForInsertedNodes(node, oldParent, nodes);\n return nodes;\n }\n\n function collectNodesForDocument Fragment(node) {\n var nodes = new NodeList();\n var i = 0;\n for (var child = node.firstChild; child; child = child.nextSibling) {\n nodes[i++] = child;\n }\n nodes.length = i;\n enqueueRemovalForInsertedDocumentFrag ment(node, nodes);\n return nodes;\n }\n\n function snapshotNodeList(nodeLi st) {\n // NodeLists are not live at the moment so just return the same objec t.\n return nodeList;\n }\n\n // http://dom.spec.whatwg.org/#node-is-insert ed\n function nodeWasAdded(node, treeScope) {\n setTreeScope(node, treeScope );\n node.nodeIsInserted_();\n }\n\n function nodesWereAdded(nodes, parent) {\n var treeScope = getTreeScope(parent);\n for (var i = 0; i < nodes.len gth; i++) {\n nodeWasAdded(nodes[i], treeScope);\n }\n }\n\n // http:/ /dom.spec.whatwg.org/#node-is-removed\n function nodeWasRemoved(node) {\n se tTreeScope(node, new TreeScope(node, null));\n }\n\n function nodesWereRemoved (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n nodeWasRemoved(no des[i]);\n }\n }\n\n function ensureSameOwnerDocument(parent, child) {\n var ownerDoc = parent.nodeType === Node.DOCUMENT_NODE ?\n parent : paren t.ownerDocument;\n if (ownerDoc !== child.ownerDocument)\n ownerDoc.adop tNode(child);\n }\n\n function adoptNodesIfNeeded(owner, nodes) {\n if (!no des.length)\n return;\n\n var ownerDoc = owner.ownerDocument;\n\n // All nodes have the same ownerDocument when we get here.\n if (ownerDoc === no des[0].ownerDocument)\n return;\n\n for (var i = 0; i < nodes.length; i+ +) {\n scope.adoptNodeNoRemove(nodes[i], ownerDoc);\n }\n }\n\n functi on unwrapNodesForInsertion(owner, nodes) {\n adoptNodesIfNeeded(owner, nodes) ;\n var length = nodes.length;\n\n if (length === 1)\n return unwrap( nodes[0]);\n\n var df = unwrap(owner.ownerDocument.createDocumentFragment()); \n for (var i = 0; i < length; i++) {\n df.appendChild(unwrap(nodes[i])) ;\n }\n return df;\n }\n\n function clearChildNodes(wrapper) {\n if ( wrapper.firstChild_ !== undefined) {\n var child = wrapper.firstChild_;\n while (child) {\n var tmp = child;\n child = child.nextSibling _;\n tmp.parentNode_ = tmp.previousSibling_ = tmp.nextSibling_ = undefine d;\n }\n }\n wrapper.firstChild_ = wrapper.lastChild_ = undefined;\n }\n\n function removeAllChildNodes(wrapper) {\n if (wrapper.invalidateShado wRenderer()) {\n var childWrapper = wrapper.firstChild;\n while (child Wrapper) {\n assert(childWrapper.parentNode === wrapper);\n var ne xtSibling = childWrapper.nextSibling;\n var childNode = unwrap(childWrapp er);\n var parentNode = childNode.parentNode;\n if (parentNode)\n originalRemoveChild.call(parentNode, childNode);\n childWrapper. previousSibling_ = childWrapper.nextSibling_ =\n childWrapper.parentN ode_ = null;\n childWrapper = nextSibling;\n }\n wrapper.firstC hild_ = wrapper.lastChild_ = null;\n } else {\n var node = unwrap(wrappe r);\n var child = node.firstChild;\n var nextSibling;\n while (ch ild) {\n nextSibling = child.nextSibling;\n originalRemoveChild.ca ll(node, child);\n child = nextSibling;\n }\n }\n }\n\n functio n invalidateParent(node) {\n var p = node.parentNode;\n return p && p.inva lidateShadowRenderer();\n }\n\n function cleanupNodes(nodes) {\n for (var i = 0, n; i < nodes.length; i++) {\n n = nodes[i];\n n.parentNode.remov eChild(n);\n }\n }\n\n var originalImportNode = document.importNode;\n var originalCloneNode = window.Node.prototype.cloneNode;\n\n function cloneNode(no de, deep, opt_doc) {\n var clone;\n if (opt_doc)\n clone = wrap(origi nalImportNode.call(opt_doc, node.impl, false));\n else\n clone = wrap(or iginalCloneNode.call(node.impl, false));\n\n if (deep) {\n for (var chil d = node.firstChild; child; child = child.nextSibling) {\n clone.appendCh ild(cloneNode(child, true, opt_doc));\n }\n\n if (node instanceof wrap pers.HTMLTemplateElement) {\n var cloneContent = clone.content;\n for (var child = node.content.firstChild;\n child;\n chi ld = child.nextSibling) {\n cloneContent.appendChild(cloneNode(child, tr ue, opt_doc));\n }\n }\n }\n // TODO(arv): Some HTML elements also clone other data like value.\n return clone;\n }\n\n function contains (self, child) {\n if (!child || getTreeScope(self) !== getTreeScope(child))\n return false;\n\n for (var node = child; node; node = node.parentNode) {\n if (node === self)\n return true;\n }\n return false;\n } \n\n var OriginalNode = window.Node;\n\n /**\n * This represents a wrapper o f a native DOM node.\n * @param {!Node} original The original DOM node, aka, t he visual DOM node.\n * @constructor\n * @extends {EventTarget}\n */\n fu nction Node(original) {\n assert(original instanceof OriginalNode);\n\n Ev entTarget.call(this, original);\n\n // These properties are used to override the visual references with the\n // logical ones. If the value is undefined i t means that the logical is the\n // same as the visual.\n\n /**\n * @ type {Node|undefined}\n * @private\n */\n this.parentNode_ = undefine d;\n\n /**\n * @type {Node|undefined}\n * @private\n */\n this .firstChild_ = undefined;\n\n /**\n * @type {Node|undefined}\n * @pri vate\n */\n this.lastChild_ = undefined;\n\n /**\n * @type {Node|u ndefined}\n * @private\n */\n this.nextSibling_ = undefined;\n\n / **\n * @type {Node|undefined}\n * @private\n */\n this.previousSi bling_ = undefined;\n\n this.treeScope_ = undefined;\n }\n\n var OriginalDo cumentFragment = window.DocumentFragment;\n var originalAppendChild = OriginalN ode.prototype.appendChild;\n var originalCompareDocumentPosition =\n Origi nalNode.prototype.compareDocumentPosition;\n var originalInsertBefore = Origina lNode.prototype.insertBefore;\n var originalRemoveChild = OriginalNode.prototyp e.removeChild;\n var originalReplaceChild = OriginalNode.prototype.replaceChild ;\n\n var isIe = /Trident/.test(navigator.userAgent);\n\n var removeChildOrigi nalHelper = isIe ?\n function(parent, child) {\n try {\n or iginalRemoveChild.call(parent, child);\n } catch (ex) {\n if (!( parent instanceof OriginalDocumentFragment))\n throw ex;\n }\n } :\n function(parent, child) {\n originalRemoveChild.call(par ent, child);\n };\n\n Node.prototype = Object.create(EventTarget.prototype );\n mixin(Node.prototype, {\n appendChild: function(childWrapper) {\n return this.insertBefore(childWrapper, null);\n },\n\n insertBefore: funct ion(childWrapper, refWrapper) {\n assertIsNodeWrapper(childWrapper);\n\n var refNode;\n if (refWrapper) {\n if (isWrapper(refWrapper)) {\n refNode = unwrap(refWrapper);\n } else {\n refNode = r efWrapper;\n refWrapper = wrap(refNode);\n }\n } else {\n refWrapper = null;\n refNode = null;\n }\n\n refWrapper & & assert(refWrapper.parentNode === this);\n\n var nodes;\n var previou sNode =\n refWrapper ? refWrapper.previousSibling : this.lastChild;\n\n var useNative = !this.invalidateShadowRenderer() &&\n !invalidateParent(childWrapper);\n\n if (useNative)\n nodes = colle ctNodesNative(childWrapper);\n else\n nodes = collectNodes(childWrap per, this, previousNode, refWrapper);\n\n if (useNative) {\n ensureS ameOwnerDocument(this, childWrapper);\n clearChildNodes(this);\n o riginalInsertBefore.call(this.impl, unwrap(childWrapper), refNode);\n } els e {\n if (!previousNode)\n this.firstChild_ = nodes[0];\n if (!refWrapper)\n this.lastChild_ = nodes[nodes.length - 1];\n\n var parentNode = refNode ? refNode.parentNode : this.impl;\n\n // inse rtBefore refWrapper no matter what the parent is?\n if (parentNode) {\n originalInsertBefore.call(parentNode,\n unwrapNodesForInser tion(this, nodes), refNode);\n } else {\n adoptNodesIfNeeded(thi s, nodes);\n }\n }\n\n enqueueMutation(this, 'childList', {\n addedNodes: nodes,\n nextSibling: refWrapper,\n previousSibl ing: previousNode\n });\n\n nodesWereAdded(nodes, this);\n\n retu rn childWrapper;\n },\n\n removeChild: function(childWrapper) {\n ass ertIsNodeWrapper(childWrapper);\n if (childWrapper.parentNode !== this) {\n // IE has invalid DOM trees at times.\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 = true;\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 childWrapperNextSibling = childWrapper.nextS ibling;\n var childWrapperPreviousSibling = 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 tha t that mutation event is dispatched before\n // the pointers have changed .\n var thisFirstChild = this.firstChild;\n var thisLastChild = th is.lastChild;\n\n var parentNode = childNode.parentNode;\n if (par entNode)\n removeChildOriginalHelper(parentNode, childNode);\n\n if (thisFirstChild === childWrapper)\n this.firstChild_ = childWrapper NextSibling;\n if (thisLastChild === childWrapper)\n this.lastCh ild_ = childWrapperPreviousSibling;\n if (childWrapperPreviousSibling)\n childWrapperPreviousSibling.nextSibling_ = childWrapperNextSibling;\n if (childWrapperNextSibling) {\n childWrapperNextSibling.previous Sibling_ =\n childWrapperPreviousSibling;\n }\n\n chi ldWrapper.previousSibling_ = childWrapper.nextSibling_ =\n childWrapp er.parentNode_ = undefined;\n } else {\n clearChildNodes(this);\n removeChildOriginalHelper(this.impl, childNode);\n }\n\n if (!sur pressMutations) {\n enqueueMutation(this, 'childList', {\n remov edNodes: createOneElementNodeList(childWrapper),\n nextSibling: childWr apperNextSibling,\n previousSibling: childWrapperPreviousSibling\n });\n }\n\n registerTransientObservers(this, childWrapper);\n\n return childWrapper;\n },\n\n replaceChild: function(newChildWrapper, ol dChildWrapper) {\n assertIsNodeWrapper(newChildWrapper);\n\n var oldCh ildNode;\n if (isWrapper(oldChildWrapper)) {\n oldChildNode = unwrap (oldChildWrapper);\n } else {\n oldChildNode = oldChildWrapper;\n oldChildWrapper = wrap(oldChildNode);\n }\n\n if (oldChildWrapper .parentNode !== this) {\n // TODO(arv): DOMException\n throw new E rror('NotFoundError');\n }\n\n var nextNode = oldChildWrapper.nextSibl ing;\n var previousNode = oldChildWrapper.previousSibling;\n var nodes ;\n\n var useNative = !this.invalidateShadowRenderer() &&\n !invalidateParent(newChildWrapper);\n\n if (useNative) {\n nod es = 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 === oldChildWrap per)\n this.lastChild_ = nodes[nodes.length - 1];\n\n oldChildWr apper.previousSibling_ = oldChildWrapper.nextSibling_ =\n oldChildWra pper.parentNode_ = undefined;\n\n // replaceChild no matter what the pare nt is?\n if (oldChildNode.parentNode) {\n originalReplaceChild.c all(\n oldChildNode.parentNode,\n unwrapNodesForInsert ion(this, nodes),\n oldChildNode);\n }\n } else {\n ensureSameOwnerDocument(this, newChildWrapper);\n clearChildNodes(thi s);\n originalReplaceChild.call(this.impl, unwrap(newChildWrapper),\n oldChildNode);\n }\n\n enqueueMutation(t his, 'childList', {\n addedNodes: nodes,\n removedNodes: createOne ElementNodeList(oldChildWrapper),\n nextSibling: nextNode,\n previ ousSibling: previousNode\n });\n\n nodeWasRemoved(oldChildWrapper);\n nodesWereAdded(nodes, this);\n\n return oldChildWrapper;\n },\n\n /**\n * Called after a node was inserted. Subclasses override this to inva lidate\n * the renderer as needed.\n * @private\n */\n nodeIsInse rted_: function() {\n for (var child = this.firstChild; child; child = chil d.nextSibling) {\n child.nodeIsInserted_();\n }\n },\n\n hasCh ildNodes: function() {\n return this.firstChild !== null;\n },\n\n /* * @type {Node} */\n get parentNode() {\n // If the parentNode has not be en overridden, use the original parentNode.\n return this.parentNode_ !== u ndefined ?\n this.parentNode_ : wrap(this.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_ : wrap(this.impl.lastChild);\n }, \n\n /** @type {Node} */\n get nextSibling() {\n return this.nextSibl ing_ !== undefined ?\n this.nextSibling_ : wrap(this.impl.nextSibling); \n },\n\n /** @type {Node} */\n get previousSibling() {\n return t his.previousSibling_ !== undefined ?\n this.previousSibling_ : wrap(thi s.impl.previousSibling);\n },\n\n get parentElement() {\n var p = thi s.parentNode;\n while (p && p.nodeType !== Node.ELEMENT_NODE) {\n p = p.parentNode;\n }\n return p;\n },\n\n get textContent() {\n // TODO(arv): This should fallback to this.impl.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.childNodes);\n\n if (this.i nvalidateShadowRenderer()) {\n removeAllChildNodes(this);\n if (te xtContent !== '') {\n var textNode = this.impl.ownerDocument.createText Node(textContent);\n this.appendChild(textNode);\n }\n } el se {\n clearChildNodes(this);\n this.impl.textContent = textConten t;\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, this);\n },\n\n get childNodes() {\n var wrapperList = new NodeList();\n var i = 0;\n for (var child = th is.firstChild; child; child = child.nextSibling) {\n wrapperList[i++] = c hild;\n }\n wrapperList.length = i;\n return wrapperList;\n }, \n\n cloneNode: function(deep) {\n return cloneNode(this, deep);\n }, \n\n contains: function(child) {\n return contains(this, wrapIfNeeded(ch ild));\n },\n\n compareDocumentPosition: function(otherNode) {\n // T his only wraps, it therefore only operates on the composed DOM and not\n // the logical DOM.\n return originalCompareDocumentPosition.call(this.impl,\ n unwrapIfNeeded(otherNode));\n },\n\n normalize: function() {\n var nodes = snapshotNodeList(this.c hildNodes);\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.nodeType === Node.TEXT_NODE) {\n if (!modNode && !n.data.length )\n this.removeNode(n);\n else if (!modNode)\n mo dNode = n;\n else {\n s += n.data;\n remNodes.pus h(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 (mod Node && remNodes.length) {\n modNode.data += s;\n cleanupNodes(rem Nodes);\n }\n }\n });\n\n defineWrapGetter(Node, 'ownerDocument');\n\n // We use a DocumentFragment as a base and then delete the properties of\n // DocumentFragment.prototype from the wrapper Node. Since delete makes\n // obje cts slow in some JS engines we recreate the prototype object.\n registerWrapper (OriginalNode, Node, document.createDocumentFragment());\n delete Node.prototyp e.querySelector;\n delete Node.prototype.querySelectorAll;\n Node.prototype = mixin(Object.create(EventTarget.prototype), Node.prototype);\n\n scope.cloneNod e = cloneNode;\n scope.nodeWasAdded = nodeWasAdded;\n scope.nodeWasRemoved = n odeWasRemoved;\n scope.nodesWereAdded = nodesWereAdded;\n scope.nodesWereRemov ed = nodesWereRemoved;\n scope.snapshotNodeList = snapshotNodeList;\n scope.wr appers.Node = Node;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The P olymer 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(scop e) {\n 'use strict';\n\n function findOne(node, selector) {\n var m, el = n ode.firstElementChild;\n while (el) {\n if (el.matches(selector))\n return el;\n m = findOne(el, selector);\n if (m)\n return m; \n el = el.nextElementSibling;\n }\n return null;\n }\n\n function findAll(node, selector, results) {\n var el = node.firstElementChild;\n wh ile (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 SelectorsInterf ace = {\n querySelector: function(selector) {\n return findOne(this, sel ector);\n },\n querySelectorAll: function(selector) {\n return findAl l(this, selector, new NodeList())\n }\n };\n\n var GetElementsByInterface = {\n getElementsByTagName: function(tagName) {\n // TODO(arv): Check tag Name?\n return this.querySelectorAll(tagName);\n },\n getElementsByCl assName: function(className) {\n // TODO(arv): Check className?\n retu rn this.querySelectorAll('.' + className);\n },\n getElementsByTagNameNS: function(ns, tagName) {\n if (ns === '*')\n return this.getElementsB yTagName(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.ShadowDOMPolyfil l);\n","// Copyright 2013 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 NodeList = scope. wrappers.NodeList;\n\n function forwardElement(node) {\n while (node && node .nodeType !== Node.ELEMENT_NODE) {\n node = node.nextSibling;\n }\n r eturn node;\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 lastEleme ntChild() {\n return backwardsElement(this.lastChild);\n },\n\n get c hildElementCount() {\n var count = 0;\n for (var child = this.firstEle mentChild;\n child;\n child = child.nextElementSibling) {\n count++;\n }\n return count;\n },\n\n get children() {\n var wrapperList = new NodeList();\n var i = 0;\n for (var child = this.firstElementChild;\n child;\n child = child.nextElemen tSibling) {\n wrapperList[i++] = child;\n }\n wrapperList.lengt h = i;\n return wrapperList;\n },\n\n remove: function() {\n var p = this.parentNode;\n if (p)\n p.removeChild(this);\n }\n };\n \n var ChildNodeInterface = {\n get nextElementSibling() {\n return for wardElement(this.nextSibling);\n },\n\n get previousElementSibling() {\n return backwardsElement(this.previousSibling);\n }\n };\n\n scope.Child NodeInterface = ChildNodeInterface;\n scope.ParentNodeInterface = ParentNodeInt erface;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Autho rs. 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 'us e strict';\n\n var ChildNodeInterface = scope.ChildNodeInterface;\n var Node = scope.wrappers.Node;\n var enqueueMutation = scope.enqueueMutation;\n var mix in = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n\n var Origi nalCharacterData = window.CharacterData;\n\n function CharacterData(node) {\n Node.call(this, node);\n }\n CharacterData.prototype = Object.create(Node.pr ototype);\n mixin(CharacterData.prototype, {\n get textContent() {\n re turn this.data;\n },\n set textContent(value) {\n this.data = value;\ n },\n get data() {\n return this.impl.data;\n },\n set data(va lue) {\n var oldValue = this.impl.data;\n enqueueMutation(this, 'chara cterData', {\n oldValue: oldValue\n });\n this.impl.data = valu e;\n }\n });\n\n mixin(CharacterData.prototype, ChildNodeInterface);\n\n r egisterWrapper(OriginalCharacterData, CharacterData,\n document .createTextNode(''));\n\n scope.wrappers.CharacterData = CharacterData;\n})(win dow.ShadowDOMPolyfill);\n","// Copyright 2014 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 CharacterData = scope.wrappers.CharacterData;\n var enqueueMutation = scope. enqueueMutation;\n var mixin = scope.mixin;\n var registerWrapper = scope.regi sterWrapper;\n\n function toUInt32(x) {\n return x >>> 0;\n }\n\n var Orig inalText = window.Text;\n\n function Text(node) {\n CharacterData.call(this, node);\n }\n Text.prototype = Object.create(CharacterData.prototype);\n mixi n(Text.prototype, {\n splitText: function(offset) {\n offset = toUInt32( offset);\n var s = this.data;\n if (offset > s.length)\n throw new Error('IndexSizeError');\n var head = s.slice(0, offset);\n var ta il = s.slice(offset);\n this.data = head;\n var newTextNode = this.own erDocument.createTextNode(tail);\n if (this.parentNode)\n this.paren tNode.insertBefore(newTextNode, this.nextSibling);\n return newTextNode;\n }\n });\n\n registerWrapper(OriginalText, Text, document.createTextNode('') );\n\n scope.wrappers.Text = Text;\n})(window.ShadowDOMPolyfill);\n","// Copyri ght 2013 The Polymer Authors. All rights reserved.\n// Use of this source code i s 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 ChildNodeInterface = scope.ChildNo deInterface;\n var GetElementsByInterface = scope.GetElementsByInterface;\n va r Node = scope.wrappers.Node;\n var ParentNodeInterface = scope.ParentNodeInter face;\n var SelectorsInterface = scope.SelectorsInterface;\n var addWrapNodeLi stMethod = scope.addWrapNodeListMethod;\n var enqueueMutation = scope.enqueueMu tation;\n var mixin = scope.mixin;\n var oneOf = scope.oneOf;\n var registerW rapper = scope.registerWrapper;\n var wrappers = scope.wrappers;\n\n var Origi nalElement = window.Element;\n\n var matchesNames = [\n 'matches', // needs to come first.\n 'mozMatchesSelector',\n 'msMatchesSelector',\n 'webki tMatchesSelector',\n ].filter(function(name) {\n return OriginalElement.prot otype[name];\n });\n\n var matchesName = matchesNames[0];\n\n var originalMat ches = OriginalElement.prototype[matchesName];\n\n function invalidateRendererB asedOnAttribute(element, name) {\n // Only invalidate if parent node is a sha dow host.\n var p = element.parentNode;\n if (!p || !p.shadowRoot)\n return;\n\n var renderer = scope.getRendererForHost(p);\n if (renderer.dep endsOnAttribute(name))\n renderer.invalidate();\n }\n\n function enqueAtt ributeChange(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 enque ueMutation(element, 'attributes', {\n name: name,\n namespace: null,\n oldValue: oldValue\n });\n }\n\n function Element(node) {\n Node.c all(this, node);\n }\n Element.prototype = Object.create(Node.prototype);\n m ixin(Element.prototype, {\n createShadowRoot: function() {\n var newShad owRoot = new wrappers.ShadowRoot(this);\n this.impl.polymerShadowRoot_ = ne wShadowRoot;\n\n var renderer = scope.getRendererForHost(this);\n rend erer.invalidate();\n\n return newShadowRoot;\n },\n\n get shadowRoot( ) {\n return this.impl.polymerShadowRoot_ || null;\n },\n\n setAttrib ute: function(name, value) {\n var oldValue = this.impl.getAttribute(name); \n this.impl.setAttribute(name, value);\n enqueAttributeChange(this, n ame, oldValue);\n invalidateRendererBasedOnAttribute(this, name);\n },\n \n removeAttribute: function(name) {\n var oldValue = this.impl.getAttri bute(name);\n this.impl.removeAttribute(name);\n enqueAttributeChange( this, name, oldValue);\n invalidateRendererBasedOnAttribute(this, name);\n },\n\n matches: function(selector) {\n return originalMatches.call(th is.impl, selector);\n }\n });\n\n matchesNames.forEach(function(name) {\n if (name !== 'matches') {\n Element.prototype[name] = function(selector) {\n return this.matches(selector);\n };\n }\n });\n\n if (Origi nalElement.prototype.webkitCreateShadowRoot) {\n Element.prototype.webkitCrea teShadowRoot =\n Element.prototype.createShadowRoot;\n }\n\n /**\n * Useful for generating the accessor pair for a property that reflects an\n * at tribute.\n */\n function setterDirtiesAttribute(prototype, propertyName, opt_ attrName) {\n var attrName = opt_attrName || propertyName;\n Object.define Property(prototype, propertyName, {\n get: function() {\n return thi s.impl[propertyName];\n },\n set: function(v) {\n this.impl[pro pertyName] = v;\n invalidateRendererBasedOnAttribute(this, attrName);\n },\n configurable: true,\n enumerable: true\n });\n }\n\n set terDirtiesAttribute(Element.prototype, 'id');\n setterDirtiesAttribute(Element. prototype, 'className', 'class');\n\n mixin(Element.prototype, ChildNodeInterfa ce);\n mixin(Element.prototype, GetElementsByInterface);\n mixin(Element.proto type, ParentNodeInterface);\n mixin(Element.prototype, SelectorsInterface);\n\n registerWrapper(OriginalElement, Element,\n document.createEl ementNS(null, 'x'));\n\n // TODO(arv): Export setterDirtiesAttribute and apply it to more bindings\n // that reflect attributes.\n scope.matchesNames = match esNames;\n scope.wrappers.Element = Element;\n})(window.ShadowDOMPolyfill);\n", "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this sou rce code is goverened by a BSD-style\n// license that can be found in the LICENS E file.\n\n(function(scope) {\n 'use strict';\n\n var Element = scope.wrappers .Element;\n var defineGetter = scope.defineGetter;\n var enqueueMutation = sco pe.enqueueMutation;\n var mixin = scope.mixin;\n var nodesWereAdded = scope.no desWereAdded;\n var nodesWereRemoved = scope.nodesWereRemoved;\n var registerW rapper = scope.registerWrapper;\n var snapshotNodeList = scope.snapshotNodeList ;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var wrappers = scop e.wrappers;\n\n /////////////////////////////////////////////////////////////// //////////////\n // innerHTML and outerHTML\n\n // http://www.whatwg.org/specs /web-apps/current-work/multipage/the-end.html#escapingString\n var escapeAttrRe gExp = /[&\\u00A0\"]/g;\n var escapeDataRegExp = /[&\\u00A0<>]/g;\n\n function escapeReplace(c) {\n switch (c) {\n case '&':\n return '&amp;';\ n case '<':\n return '&lt;';\n case '>':\n return '&gt;' ;\n case '\"':\n return '&quot;'\n case '\\u00A0':\n ret urn '&nbsp;';\n }\n }\n\n function escapeAttr(s) {\n return s.replace(es capeAttrRegExp, 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 voidElements = makeSet([\n 'area',\n ' base',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'hr',\n 'img ',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'so urce',\n 'track',\n 'wbr'\n ]);\n\n var plaintextParents = makeSet([\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'nofra mes',\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.toLowerCase();\n var s = '<' + tagName;\n var attrs = node.attributes;\n for (var i = 0, attr; attr = attrs[ i]; i++) {\n s += ' ' + attr.name + '=\"' + escapeAttr(attr.value) + '\ "';\n }\n s += '>';\n if (voidElements[tagName])\n return s;\n\n return s + getInnerHTML(node) + '</' + tagName + '>';\n\n case Node.TEXT_NODE:\n var data = node.data;\n if (parentNode && plaintextParents[parentNode.localName])\n return data;\n ret urn escapeData(data);\n\n case Node.COMMENT_NODE:\n return '<!--' + node.data + '-->';\n\n default:\n console.error(node);\n thro w new Error('not implemented');\n }\n }\n\n function getInnerHTML(node) {\n if (node instanceof wrappers.HTMLTemplateElement)\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 th e user agent string.\n var oldIe = /MSIE/.test(navigator.userAgent);\n\n var O riginalHTMLElement = window.HTMLElement;\n var OriginalHTMLTemplateElement = wi ndow.HTMLTemplateElement;\n\n function HTMLElement(node) {\n Element.call(th is, node);\n }\n HTMLElement.prototype = Object.create(Element.prototype);\n mixin(HTMLElement.prototype, {\n get innerHTML() {\n return getInnerHTML (this);\n },\n set innerHTML(value) {\n // IE9 does not handle set in nerHTML correctly on plaintextParents. It\n // creates element children. Fo r example\n //\n // scriptElement.innerHTML = '<a>test</a>'\n / /\n // Creates a single HTMLAnchorElement child.\n if (oldIe && plaint extParents[this.localName]) {\n this.textContent = value;\n return ;\n }\n\n var removedNodes = snapshotNodeList(this.childNodes);\n\n if (this.invalidateShadowRenderer()) {\n if (this instanceof wrappers. HTMLTemplateElement)\n setInnerHTML(this.content, value);\n else \n setInnerHTML(this, value, this.tagName);\n\n // If we have a no n native template element we need to handle this\n // manually since settin g impl.innerHTML would add the html as direct\n // children and not be move d over to the content fragment.\n } else if (!OriginalHTMLTemplateElement & &\n this instanceof wrappers.HTMLTemplateElement) {\n set InnerHTML(this.content, value);\n } else {\n this.impl.innerHTML = v alue;\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, this);\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.invalidateShadowR enderer();\n var df = frag(p, value);\n p.replaceChild(df, this);\ n }\n },\n\n insertAdjacentHTML: function(position, text) {\n va r contextElement, refNode;\n switch (String(position).toLowerCase()) {\n case 'beforebegin':\n contextElement = this.parentNode;\n refNode = this;\n break;\n case 'afterend':\n contextE lement = this.parentNode;\n refNode = this.nextSibling;\n brea k;\n case 'afterbegin':\n contextElement = this;\n refN ode = this.firstChild;\n break;\n case 'beforeend':\n c ontextElement = this;\n refNode = null;\n break;\n defa ult:\n return;\n }\n\n var df = frag(contextElement, text);\n contextElement.insertBefore(df, refNode);\n }\n });\n\n function frag (contextElement, html) {\n // TODO(arv): This does not work with SVG and othe r non HTML elements.\n var p = unwrap(contextElement.cloneNode(false));\n p.innerHTML = html;\n var df = unwrap(document.createDocumentFragment());\n var c;\n while (c = p.firstChild) {\n df.appendChild(c);\n }\n r eturn wrap(df);\n }\n\n function getter(name) {\n return function() {\n scope.renderAllPending();\n return this.impl[name];\n };\n }\n\n fun ction getterRequiresRendering(name) {\n defineGetter(HTMLElement, name, gette r(name));\n }\n\n [\n 'clientHeight',\n 'clientLeft',\n 'clientTop',\ n 'clientWidth',\n 'offsetHeight',\n 'offsetLeft',\n 'offsetTop',\n 'offsetWidth',\n 'scrollHeight',\n 'scrollWidth',\n ].forEach(getterRe quiresRendering);\n\n function getterAndSetterRequiresRendering(name) {\n Ob ject.defineProperty(HTMLElement.prototype, name, {\n get: getter(name),\n set: function(v) {\n scope.renderAllPending();\n this.impl[nam e] = v;\n },\n configurable: true,\n enumerable: true\n });\n }\n\n [\n 'scrollLeft',\n 'scrollTop',\n ].forEach(getterAndSetterRequi resRendering);\n\n function methodRequiresRendering(name) {\n Object.defineP roperty(HTMLElement.prototype, name, {\n value: function() {\n scope .renderAllPending();\n return this.impl[name].apply(this.impl, arguments) ;\n },\n configurable: true,\n enumerable: true\n });\n }\n\n [\n 'getBoundingClientRect',\n 'getClientRects',\n 'scrollIntoView'\n ].forEach(methodRequiresRendering);\n\n // HTMLElement is abstract so we use a subclass that has no members.\n registerWrapper(OriginalHTMLElement, HTMLElem ent,\n document.createElement('b'));\n\n scope.wrappers.HTMLEl ement = HTMLElement;\n\n // TODO: Find a better way to share these two with Wra pperShadowRoot.\n scope.getInnerHTML = getInnerHTML;\n scope.setInnerHTML = se tInnerHTML\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 HTMLElement = scope.wrappers.HTMLElement;\n var mixin = sc ope.mixin;\n var registerWrapper = scope.registerWrapper;\n var wrap = scope.w rap;\n\n var OriginalHTMLCanvasElement = window.HTMLCanvasElement;\n\n functio n HTMLCanvasElement(node) {\n HTMLElement.call(this, node);\n }\n HTMLCanva sElement.prototype = Object.create(HTMLElement.prototype);\n\n mixin(HTMLCanvas Element.prototype, {\n getContext: function() {\n var context = this.imp l.getContext.apply(this.impl, arguments);\n return context && wrap(context) ;\n }\n });\n\n registerWrapper(OriginalHTMLCanvasElement, HTMLCanvasElemen t,\n document.createElement('canvas'));\n\n scope.wrappers.HTM LCanvasElement = HTMLCanvasElement;\n})(window.ShadowDOMPolyfill);\n","// Copyri ght 2013 The Polymer Authors. All rights reserved.\n// Use of this source code i s 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.HTMLE lement;\n var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapp er;\n\n var OriginalHTMLContentElement = window.HTMLContentElement;\n\n functi on HTMLContentElement(node) {\n HTMLElement.call(this, node);\n }\n HTMLCon tentElement.prototype = Object.create(HTMLElement.prototype);\n mixin(HTMLConte ntElement.prototype, {\n get select() {\n return this.getAttribute('sele ct');\n },\n set select(value) {\n this.setAttribute('select', value) ;\n },\n\n setAttribute: function(n, v) {\n HTMLElement.prototype.set Attribute.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: attribute boolean resetStyleInheritan ce;\n });\n\n if (OriginalHTMLContentElement)\n registerWrapper(OriginalHTM LContentElement, HTMLContentElement);\n\n scope.wrappers.HTMLContentElement = H TMLContentElement;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 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(function(scope) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement;\n var re gisterWrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var rewr ap = scope.rewrap;\n\n var OriginalHTMLImageElement = window.HTMLImageElement;\ n\n function HTMLImageElement(node) {\n HTMLElement.call(this, node);\n }\n HTMLImageElement.prototype = Object.create(HTMLElement.prototype);\n\n regist erWrapper(OriginalHTMLImageElement, HTMLImageElement,\n documen t.createElement('img'));\n\n function Image(width, height) {\n if (!(this in stanceof Image)) {\n throw new TypeError(\n 'DOM object constructo r cannot be called as a function.');\n }\n\n var node = unwrap(document.cr eateElement('img'));\n HTMLElement.call(this, node);\n rewrap(node, this); \n\n if (width !== undefined)\n node.width = width;\n if (height !== undefined)\n node.height = height;\n }\n\n Image.prototype = HTMLImageEle ment.prototype;\n\n scope.wrappers.HTMLImageElement = HTMLImageElement;\n scop e.wrappers.Image = Image;\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\n v ar OriginalHTMLShadowElement = window.HTMLShadowElement;\n\n function HTMLShado wElement(node) {\n HTMLElement.call(this, node);\n }\n HTMLShadowElement.pr ototype = Object.create(HTMLElement.prototype);\n mixin(HTMLShadowElement.proto type, {\n // TODO: attribute boolean resetStyleInheritance;\n });\n\n if (O riginalHTMLShadowElement)\n registerWrapper(OriginalHTMLShadowElement, HTMLSh adowElement);\n\n scope.wrappers.HTMLShadowElement = HTMLShadowElement;\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 HTMLElement = scope.wrappers.HTMLElement;\n var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var wr ap = scope.wrap;\n\n var contentTable = new WeakMap();\n var templateContentsO wnerTable = new WeakMap();\n\n // http://dvcs.w3.org/hg/webcomponents/raw-file/ tip/spec/templates/index.html#dfn-template-contents-owner\n function getTemplat eContentsOwner(doc) {\n if (!doc.defaultView)\n return doc;\n var d = templateContentsOwnerTable.get(doc);\n if (!d) {\n // TODO(arv): This s hould either be a Document or HTMLDocument depending\n // on doc.\n d = doc.implementation.createHTMLDocument('');\n while (d.lastChild) {\n d.removeChild(d.lastChild);\n }\n templateContentsOwnerTable.set(do c, d);\n }\n return d;\n }\n\n function extractContent(templateElement) {\n // templateElement is not a wrapper here.\n var doc = getTemplateConte ntsOwner(templateElement.ownerDocument);\n var df = unwrap(doc.createDocument Fragment());\n var child;\n while (child = templateElement.firstChild) {\n df.appendChild(child);\n }\n return df;\n }\n\n var OriginalHTMLTe mplateElement = window.HTMLTemplateElement;\n\n function HTMLTemplateElement(no de) {\n HTMLElement.call(this, node);\n if (!OriginalHTMLTemplateElement) {\n var content = extractContent(node);\n contentTable.set(this, wrap( content));\n }\n }\n HTMLTemplateElement.prototype = Object.create(HTMLElem ent.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 n eeds to clone content.\n\n });\n\n if (OriginalHTMLTemplateElement)\n regis terWrapper(OriginalHTMLTemplateElement, HTMLTemplateElement);\n\n scope.wrapper s.HTMLTemplateElement = HTMLTemplateElement;\n})(window.ShadowDOMPolyfill);\n"," // Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this sour ce 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.wrapp ers.HTMLElement;\n var registerWrapper = scope.registerWrapper;\n\n var Origin alHTMLMediaElement = window.HTMLMediaElement;\n\n function HTMLMediaElement(nod e) {\n HTMLElement.call(this, node);\n }\n HTMLMediaElement.prototype = Obj ect.create(HTMLElement.prototype);\n\n registerWrapper(OriginalHTMLMediaElement , HTMLMediaElement,\n document.createElement('audio'));\n\n sc ope.wrappers.HTMLMediaElement = HTMLMediaElement;\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 LI CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLMediaElement = s cope.wrappers.HTMLMediaElement;\n var registerWrapper = scope.registerWrapper;\ n var unwrap = scope.unwrap;\n var rewrap = scope.rewrap;\n\n var OriginalHTM LAudioElement = window.HTMLAudioElement;\n\n function HTMLAudioElement(node) {\ n HTMLMediaElement.call(this, node);\n }\n HTMLAudioElement.prototype = Obj ect.create(HTMLMediaElement.prototype);\n\n registerWrapper(OriginalHTMLAudioEl ement, HTMLAudioElement,\n document.createElement('audio'));\n\ n function Audio(src) {\n if (!(this instanceof Audio)) {\n throw new T ypeError(\n 'DOM object constructor cannot be called as a function.');\ n }\n\n var node = unwrap(document.createElement('audio'));\n HTMLMedia Element.call(this, node);\n rewrap(node, this);\n\n node.setAttribute('pre load', 'auto');\n if (src !== undefined)\n node.setAttribute('src', src) ;\n }\n\n Audio.prototype = HTMLAudioElement.prototype;\n\n scope.wrappers.HT MLAudioElement = HTMLAudioElement;\n scope.wrappers.Audio = Audio;\n})(window.S hadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserve d.\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 HT MLElement = scope.wrappers.HTMLElement;\n var mixin = scope.mixin;\n var regis terWrapper = scope.registerWrapper;\n var rewrap = scope.rewrap;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n var OriginalHTMLOptionElement = w indow.HTMLOptionElement;\n\n function trimText(s) {\n return s.replace(/\\s+ /g, ' ').trim();\n }\n\n function HTMLOptionElement(node) {\n HTMLElement.c all(this, node);\n }\n HTMLOptionElement.prototype = Object.create(HTMLElement .prototype);\n mixin(HTMLOptionElement.prototype, {\n get text() {\n re turn trimText(this.textContent);\n },\n set text(value) {\n this.text Content = trimText(String(value));\n },\n get form() {\n return wrap( unwrap(this).form);\n }\n });\n\n registerWrapper(OriginalHTMLOptionElement , HTMLOptionElement,\n document.createElement('option'));\n\n function Option(text, value, defaultSelected, selected) {\n if (!(this instan ceof Option)) {\n throw new TypeError(\n 'DOM object constructor c annot be called as a function.');\n }\n\n var node = unwrap(document.creat eElement('option'));\n HTMLElement.call(this, node);\n rewrap(node, this); \n\n if (text !== undefined)\n node.text = text;\n if (value !== unde fined)\n node.setAttribute('value', value);\n if (defaultSelected === tr ue)\n node.setAttribute('selected', '');\n node.selected = selected === true;\n }\n\n Option.prototype = HTMLOptionElement.prototype;\n\n scope.wrapp ers.HTMLOptionElement = HTMLOptionElement;\n scope.wrappers.Option = Option;\n} )(window.ShadowDOMPolyfill);\n","// Copyright 2014 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 mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n v ar wrap = scope.wrap;\n\n var OriginalHTMLSelectElement = window.HTMLSelectElem ent;\n\n function HTMLSelectElement(node) {\n HTMLElement.call(this, node);\ n }\n HTMLSelectElement.prototype = Object.create(HTMLElement.prototype);\n m ixin(HTMLSelectElement.prototype, {\n add: function(element, before) {\n if (typeof before === 'object') // also includes null\n before = unwrap (before);\n unwrap(this).add(unwrap(element), before);\n },\n\n remov e: function(indexOrNode) {\n // Spec only allows index but implementations allow index or node.\n // remove() is also allowed which is same as remove( undefined)\n if (indexOrNode === undefined) {\n HTMLElement.prototyp e.remove.call(this);\n return;\n }\n\n if (typeof indexOrNode = == 'object')\n indexOrNode = unwrap(indexOrNode);\n\n unwrap(this).r emove(indexOrNode);\n },\n\n get form() {\n return wrap(unwrap(this). form);\n }\n });\n\n registerWrapper(OriginalHTMLSelectElement, HTMLSelectE lement,\n document.createElement('select'));\n\n scope.wrapper s.HTMLSelectElement = HTMLSelectElement;\n})(window.ShadowDOMPolyfill);\n","/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of this sour ce 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 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 var wrapHTMLCollection = scope.wrapHTMLCollection;\n\n var OriginalHTMLTableElemen t = window.HTMLTableElement;\n\n function HTMLTableElement(node) {\n HTMLEle ment.call(this, node);\n }\n HTMLTableElement.prototype = Object.create(HTMLEl ement.prototype);\n mixin(HTMLTableElement.prototype, {\n get caption() {\n return wrap(unwrap(this).caption);\n },\n createCaption: function() { \n return wrap(unwrap(this).createCaption());\n },\n\n get tHead() {\ n return wrap(unwrap(this).tHead);\n },\n createTHead: function() {\n return wrap(unwrap(this).createTHead());\n },\n\n createTFoot: funct ion() {\n return wrap(unwrap(this).createTFoot());\n },\n get tFoot() {\n return wrap(unwrap(this).tFoot);\n },\n\n get tBodies() {\n return wrapHTMLCollection(unwrap(this).tBodies);\n },\n createTBody: func tion() {\n return wrap(unwrap(this).createTBody());\n },\n\n get rows () {\n return wrapHTMLCollection(unwrap(this).rows);\n },\n insertRow : function(index) {\n return wrap(unwrap(this).insertRow(index));\n }\n });\n\n registerWrapper(OriginalHTMLTableElement, HTMLTableElement,\n document.createElement('table'));\n\n scope.wrappers.HTMLTableElement = HTMLTableElement;\n})(window.ShadowDOMPolyfill);\n","/*\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\n(funct ion(scope) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement; \n var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var wrapHTMLCollection = scope.wrapHTMLCollection;\n var unwrap = scope.unwrap; \n var wrap = scope.wrap;\n\n var OriginalHTMLTableSectionElement = window.HTM LTableSectionElement;\n\n function HTMLTableSectionElement(node) {\n HTMLEle ment.call(this, node);\n }\n HTMLTableSectionElement.prototype = Object.create (HTMLElement.prototype);\n mixin(HTMLTableSectionElement.prototype, {\n get rows() {\n return wrapHTMLCollection(unwrap(this).rows);\n },\n inser tRow: function(index) {\n return wrap(unwrap(this).insertRow(index));\n }\n });\n\n registerWrapper(OriginalHTMLTableSectionElement, HTMLTableSectionE lement,\n document.createElement('thead'));\n\n scope.wrappers .HTMLTableSectionElement = HTMLTableSectionElement;\n})(window.ShadowDOMPolyfill );\n","/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use o f 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 HTMLEleme nt = scope.wrappers.HTMLElement;\n var mixin = scope.mixin;\n var registerWrap per = scope.registerWrapper;\n var wrapHTMLCollection = scope.wrapHTMLCollectio n;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n var OriginalHTML TableRowElement = window.HTMLTableRowElement;\n\n function HTMLTableRowElement( node) {\n HTMLElement.call(this, node);\n }\n HTMLTableRowElement.prototype = Object.create(HTMLElement.prototype);\n mixin(HTMLTableRowElement.prototype, {\n get cells() {\n return wrapHTMLCollection(unwrap(this).cells);\n },\n\n insertCell: function(index) {\n return wrap(unwrap(this).insertC ell(index));\n }\n });\n\n registerWrapper(OriginalHTMLTableRowElement, HTM LTableRowElement,\n document.createElement('tr'));\n\n scope.w rappers.HTMLTableRowElement = HTMLTableRowElement;\n})(window.ShadowDOMPolyfill) ;\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of thi s source code is goverened by a BSD-style\n// license that can be found in the L ICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLContentElement = scope.wrappers.HTMLContentElement;\n var HTMLElement = scope.wrappers.HTMLEle ment;\n var HTMLShadowElement = scope.wrappers.HTMLShadowElement;\n var HTMLTe mplateElement = scope.wrappers.HTMLTemplateElement;\n var mixin = scope.mixin;\ n var registerWrapper = scope.registerWrapper;\n\n var OriginalHTMLUnknownElem ent = window.HTMLUnknownElement;\n\n function HTMLUnknownElement(node) {\n s witch (node.localName) {\n case 'content':\n return new HTMLContentE lement(node);\n case 'shadow':\n return new HTMLShadowElement(node); \n case 'template':\n return new HTMLTemplateElement(node);\n }\n HTMLElement.call(this, node);\n }\n HTMLUnknownElement.prototype = Object. create(HTMLElement.prototype);\n registerWrapper(OriginalHTMLUnknownElement, HT MLUnknownElement);\n scope.wrappers.HTMLUnknownElement = HTMLUnknownElement;\n} )(window.ShadowDOMPolyfill);\n","// Copyright 2014 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 registerObject = scope.registerObject;\n\n var SVG_NS = 'http://www.w3. org/2000/svg';\n var svgTitleElement = document.createElementNS(SVG_NS, 'title' );\n var SVGTitleElement = registerObject(svgTitleElement);\n var SVGElement = Object.getPrototypeOf(SVGTitleElement.prototype).constructor;\n\n scope.wrappe rs.SVGElement = SVGElement;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2014 The Polymer Authors. All rights reserved.\n// Use of this source code is govere ned by a BSD-style\n// license that can be found in the LICENSE file.\n\n(functi on(scope) {\n 'use strict';\n\n var mixin = scope.mixin;\n var registerWrappe r = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var wrap = scope.wra p;\n\n var OriginalSVGUseElement = window.SVGUseElement;\n\n // IE uses SVGEle ment as parent interface, SVG2 (Blink & Gecko) uses\n // SVGGraphicsElement. Us e the <g> element to get the right prototype.\n\n var SVG_NS = 'http://www.w3.o rg/2000/svg';\n var gWrapper = wrap(document.createElementNS(SVG_NS, 'g'));\n var useElement = document.createElementNS(SVG_NS, 'use');\n var SVGGElement = g Wrapper.constructor;\n var parentInterfacePrototype = Object.getPrototypeOf(SVG GElement.prototype);\n var parentInterface = parentInterfacePrototype.construct or;\n\n function SVGUseElement(impl) {\n parentInterface.call(this, impl);\n }\n\n SVGUseElement.prototype = Object.create(parentInterfacePrototype);\n\n // Firefox does not expose instanceRoot.\n if ('instanceRoot' in useElement) { \n mixin(SVGUseElement.prototype, {\n get instanceRoot() {\n retu rn wrap(unwrap(this).instanceRoot);\n },\n get animatedInstanceRoot() {\n return wrap(unwrap(this).animatedInstanceRoot);\n },\n });\n }\n\n registerWrapper(OriginalSVGUseElement, SVGUseElement, useElement);\n\n scope.wrappers.SVGUseElement = SVGUseElement;\n})(window.ShadowDOMPolyfill);\n", "// Copyright 2014 The Polymer Authors. All rights reserved.\n// Use of this sou rce code is goverened by a BSD-style\n// license that can be found in the LICENS E file.\n\n(function(scope) {\n 'use strict';\n\n var EventTarget = scope.wrap pers.EventTarget;\n var mixin = scope.mixin;\n var registerWrapper = scope.reg isterWrapper;\n var wrap = scope.wrap;\n\n var OriginalSVGElementInstance = wi ndow.SVGElementInstance;\n if (!OriginalSVGElementInstance)\n return;\n\n f unction SVGElementInstance(impl) {\n EventTarget.call(this, impl);\n }\n\n SVGElementInstance.prototype = Object.create(EventTarget.prototype);\n mixin(SV GElementInstance.prototype, {\n /** @type {SVGElement} */\n get correspond ingElement() {\n return wrap(this.impl.correspondingElement);\n },\n\n /** @type {SVGUseElement} */\n get correspondingUseElement() {\n retur n wrap(this.impl.correspondingUseElement);\n },\n\n /** @type {SVGElementI nstance} */\n get parentNode() {\n return wrap(this.impl.parentNode);\n },\n\n /** @type {SVGElementInstanceList} */\n get childNodes() {\n throw new Error('Not implemented');\n },\n\n /** @type {SVGElementInstan ce} */\n get firstChild() {\n return wrap(this.impl.firstChild);\n }, \n\n /** @type {SVGElementInstance} */\n get lastChild() {\n return w rap(this.impl.lastChild);\n },\n\n /** @type {SVGElementInstance} */\n get previousSibling() {\n return wrap(this.impl.previousSibling);\n },\n \n /** @type {SVGElementInstance} */\n get nextSibling() {\n return w rap(this.impl.nextSibling);\n }\n });\n\n registerWrapper(OriginalSVGElemen tInstance, SVGElementInstance);\n\n scope.wrappers.SVGElementInstance = SVGElem entInstance;\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 unwrap = scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIf Needed;\n var wrap = scope.wrap;\n\n var OriginalCanvasRenderingContext2D = wi ndow.CanvasRenderingContext2D;\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: f unction() {\n arguments[0] = unwrapIfNeeded(arguments[0]);\n this.impl .drawImage.apply(this.impl, arguments);\n },\n\n createPattern: function() {\n arguments[0] = unwrap(arguments[0]);\n return this.impl.createPat tern.apply(this.impl, arguments);\n }\n });\n\n registerWrapper(OriginalCan vasRenderingContext2D, CanvasRenderingContext2D,\n document.cre ateElement('canvas').getContext('2d'));\n\n scope.wrappers.CanvasRenderingConte xt2D = CanvasRenderingContext2D;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this source code is g overened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(f unction(scope) {\n 'use strict';\n\n var mixin = scope.mixin;\n var registerW rapper = scope.registerWrapper;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = scope.wrap;\n\n var OriginalWebGLRenderingContext = window.WebGLRen deringContext;\n\n // IE10 does not have WebGL.\n if (!OriginalWebGLRenderingC ontext)\n return;\n\n function WebGLRenderingContext(impl) {\n this.impl = impl;\n }\n\n mixin(WebGLRenderingContext.prototype, {\n get canvas() {\n return wrap(this.impl.canvas);\n },\n\n texImage2D: function() {\n arguments[5] = unwrapIfNeeded(arguments[5]);\n this.impl.texImage2D.app ly(this.impl, arguments);\n },\n\n texSubImage2D: function() {\n argu ments[6] = unwrapIfNeeded(arguments[6]);\n this.impl.texSubImage2D.apply(th is.impl, arguments);\n }\n });\n\n // Blink/WebKit has broken DOM bindings. Usually we would create an instance\n // of the object and pass it into regist erWrapper as a \"blueprint\" but\n // creating WebGL contexts is expensive and might fail so we use a dummy\n // object with dummy instance properties for the se broken browsers.\n var instanceProperties = /WebKit/.test(navigator.userAgen t) ?\n {drawingBufferHeight: null, drawingBufferWidth: null} : {};\n\n reg isterWrapper(OriginalWebGLRenderingContext, WebGLRenderingContext,\n instan ceProperties);\n\n scope.wrappers.WebGLRenderingContext = WebGLRenderingContext ;\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// lic ense that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict ';\n\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unwra p;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = scope.wrap;\n\n var OriginalRange = window.Range;\n\n function Range(impl) {\n this.impl = i mpl;\n }\n Range.prototype = {\n get startContainer() {\n return wrap( this.impl.startContainer);\n },\n get endContainer() {\n return wrap( this.impl.endContainer);\n },\n get commonAncestorContainer() {\n ret urn wrap(this.impl.commonAncestorContainer);\n },\n setStart: function(ref Node,offset) {\n this.impl.setStart(unwrapIfNeeded(refNode), offset);\n },\n setEnd: function(refNode,offset) {\n this.impl.setEnd(unwrapIfNeede d(refNode), offset);\n },\n setStartBefore: function(refNode) {\n thi s.impl.setStartBefore(unwrapIfNeeded(refNode));\n },\n setStartAfter: func tion(refNode) {\n this.impl.setStartAfter(unwrapIfNeeded(refNode));\n }, \n setEndBefore: function(refNode) {\n this.impl.setEndBefore(unwrapIfNe eded(refNode));\n },\n setEndAfter: function(refNode) {\n this.impl.s etEndAfter(unwrapIfNeeded(refNode));\n },\n selectNode: function(refNode) {\n this.impl.selectNode(unwrapIfNeeded(refNode));\n },\n selectNodeC ontents: function(refNode) {\n this.impl.selectNodeContents(unwrapIfNeeded( refNode));\n },\n compareBoundaryPoints: function(how, sourceRange) {\n return this.impl.compareBoundaryPoints(how, unwrap(sourceRange));\n },\n extractContents: function() {\n return wrap(this.impl.extractContents()); \n },\n cloneContents: function() {\n return wrap(this.impl.cloneCont ents());\n },\n insertNode: function(node) {\n this.impl.insertNode(u nwrapIfNeeded(node));\n },\n surroundContents: function(newParent) {\n this.impl.surroundContents(unwrapIfNeeded(newParent));\n },\n cloneRange : function() {\n return wrap(this.impl.cloneRange());\n },\n isPointI nRange: function(node, offset) {\n return this.impl.isPointInRange(unwrapIf Needed(node), offset);\n },\n comparePoint: function(node, offset) {\n return this.impl.comparePoint(unwrapIfNeeded(node), offset);\n },\n inte rsectsNode: function(node) {\n return this.impl.intersectsNode(unwrapIfNeed ed(node));\n },\n toString: function() {\n return this.impl.toString( );\n }\n };\n\n // IE9 does not have createContextualFragment.\n if (Origi nalRange.prototype.createContextualFragment) {\n Range.prototype.createContex tualFragment = function(html) {\n return wrap(this.impl.createContextualFra gment(html));\n };\n }\n\n registerWrapper(window.Range, Range, document.cr eateRange());\n\n scope.wrappers.Range = Range;\n\n})(window.ShadowDOMPolyfill) ;\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of thi s source code is goverened by a BSD-style\n// license that can be found in the L ICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var GetElementsByInterf ace = scope.GetElementsByInterface;\n var ParentNodeInterface = scope.ParentNod eInterface;\n var SelectorsInterface = scope.SelectorsInterface;\n var mixin = scope.mixin;\n var registerObject = scope.registerObject;\n\n var DocumentFra gment = registerObject(document.createDocumentFragment());\n mixin(DocumentFrag ment.prototype, ParentNodeInterface);\n mixin(DocumentFragment.prototype, Selec torsInterface);\n mixin(DocumentFragment.prototype, GetElementsByInterface);\n\ n var Comment = registerObject(document.createComment(''));\n\n scope.wrappers .Comment = Comment;\n scope.wrappers.DocumentFragment = DocumentFragment;\n\n}) (window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All right s 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 DocumentFragment = scope.wrappers.DocumentFragment;\n var TreeScope = sc ope.TreeScope;\n var elementFromPoint = scope.elementFromPoint;\n var getInner HTML = scope.getInnerHTML;\n var getTreeScope = scope.getTreeScope;\n var mixi n = scope.mixin;\n var rewrap = scope.rewrap;\n var setInnerHTML = scope.setIn nerHTML;\n var unwrap = scope.unwrap;\n\n var shadowHostTable = new WeakMap(); \n var nextOlderShadowTreeTable = new WeakMap();\n\n var spaceCharRe = /[ \\t\ \n\\r\\f]/;\n\n function ShadowRoot(hostWrapper) {\n var node = unwrap(hostW rapper.impl.ownerDocument.createDocumentFragment());\n DocumentFragment.call( this, node);\n\n // createDocumentFragment associates the node with a wrapper \n // DocumentFragment instance. Override that.\n rewrap(node, this);\n\n this.treeScope_ = new TreeScope(this, getTreeScope(hostWrapper));\n\n var oldShadowRoot = hostWrapper.shadowRoot;\n nextOlderShadowTreeTable.set(this, oldShadowRoot);\n\n shadowHostTable.set(this, hostWrapper);\n }\n ShadowRoo t.prototype = Object.create(DocumentFragment.prototype);\n mixin(ShadowRoot.pro totype, {\n get innerHTML() {\n return getInnerHTML(this);\n },\n set innerHTML(value) {\n setInnerHTML(this, value);\n this.invalidateS hadowRenderer();\n },\n\n get olderShadowRoot() {\n return nextOlderS hadowTreeTable.get(this) || null;\n },\n\n get host() {\n return shad owHostTable.get(this) || null;\n },\n\n invalidateShadowRenderer: function () {\n return shadowHostTable.get(this).invalidateShadowRenderer();\n }, \n\n elementFromPoint: function(x, y) {\n return elementFromPoint(this, this.ownerDocument, x, y);\n },\n\n getElementById: function(id) {\n if (spaceCharRe.test(id))\n return null;\n return this.querySelector ('[id=\"' + id + '\"]');\n }\n });\n\n scope.wrappers.ShadowRoot = ShadowRo ot;\n\n})(window.ShadowDOMPolyfill);\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(scope) {\n 'use str ict';\n\n var Element = scope.wrappers.Element;\n var HTMLContentElement = sco pe.wrappers.HTMLContentElement;\n var HTMLShadowElement = scope.wrappers.HTMLSh adowElement;\n var Node = scope.wrappers.Node;\n var ShadowRoot = scope.wrappe rs.ShadowRoot;\n var assert = scope.assert;\n var getTreeScope = scope.getTree Scope;\n var mixin = scope.mixin;\n var oneOf = scope.oneOf;\n var unwrap = s cope.unwrap;\n var wrap = scope.wrap;\n\n /**\n * Updates the fields of a wr apper to a snapshot of the logical DOM as needed.\n * Up means parentNode\n * Sideways means previous and next sibling.\n * @param {!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 field s of a wrapper to a snapshot of the logical DOM as needed.\n * Down means firs t and last child\n * @param {!Node} wrapper\n */\n function updateWrapperDo wn(wrapper) {\n wrapper.firstChild_ = wrapper.firstChild;\n wrapper.lastCh ild_ = wrapper.lastChild;\n }\n\n function updateAllChildNodes(parentNodeWrapp er) {\n assert(parentNodeWrapper instanceof Node);\n for (var childWrapper = parentNodeWrapper.firstChild;\n childWrapper;\n childWrapper = childWrapper.nextSibling) {\n updateWrapperUpAndSideways(childWrapper);\n }\n updateWrapperDown(parentNodeWrapper);\n }\n\n function insertBefore (parentNodeWrapper, newChildWrapper, refChildWrapper) {\n var parentNode = un wrap(parentNodeWrapper);\n var newChild = unwrap(newChildWrapper);\n var r efChild = refChildWrapper ? unwrap(refChildWrapper) : null;\n\n remove(newChi ldWrapper);\n updateWrapperUpAndSideways(newChildWrapper);\n\n if (!refChi ldWrapper) {\n parentNodeWrapper.lastChild_ = parentNodeWrapper.lastChild;\ n if (parentNodeWrapper.lastChild === parentNodeWrapper.firstChild)\n parentNodeWrapper.firstChild_ = parentNodeWrapper.firstChild;\n\n var las tChildWrapper = wrap(parentNode.lastChild);\n if (lastChildWrapper)\n lastChildWrapper.nextSibling_ = lastChildWrapper.nextSibling;\n } else {\n if (parentNodeWrapper.firstChild === refChildWrapper)\n parentNodeWr apper.firstChild_ = refChildWrapper;\n\n refChildWrapper.previousSibling_ = refChildWrapper.previousSibling;\n }\n\n parentNode.insertBefore(newChild , refChild);\n }\n\n function remove(nodeWrapper) {\n var node = unwrap(nod eWrapper)\n var parentNode = node.parentNode;\n if (!parentNode)\n re turn;\n\n var parentNodeWrapper = wrap(parentNode);\n updateWrapperUpAndSi deways(nodeWrapper);\n\n if (nodeWrapper.previousSibling)\n nodeWrapper. previousSibling.nextSibling_ = nodeWrapper;\n if (nodeWrapper.nextSibling)\n nodeWrapper.nextSibling.previousSibling_ = nodeWrapper;\n\n if (parentNo deWrapper.lastChild === nodeWrapper)\n parentNodeWrapper.lastChild_ = nodeW rapper;\n if (parentNodeWrapper.firstChild === nodeWrapper)\n parentNode Wrapper.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 rendererForHostT able = new WeakMap();\n\n function distributeChildToInsertionPoint(child, inser tionPoint) {\n getDistributedChildNodes(insertionPoint).push(child);\n ass ignToInsertionPoint(child, insertionPoint);\n\n var eventParents = eventParen tsTable.get(child);\n if (!eventParents)\n eventParentsTable.set(child, eventParents = []);\n eventParents.push(insertionPoint);\n }\n\n function r esetDistributedChildNodes(insertionPoint) {\n distributedChildNodesTable.set( insertionPoint, []);\n }\n\n function getDistributedChildNodes(insertionPoint) {\n var rv = distributedChildNodesTable.get(insertionPoint);\n if (!rv)\n distributedChildNodesTable.set(insertionPoint, rv = []);\n return rv;\n }\n\n function getChildNodesSnapshot(node) {\n var result = [], i = 0;\n for (var child = node.firstChild; child; child = child.nextSibling) {\n r esult[i++] = child;\n }\n return result;\n }\n\n /**\n * Visits all no des in the tree that fulfils the |predicate|. If the |visitor|\n * function re turns |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 operates on lo gical DOM.\n for (var node = tree.firstChild; node; node = node.nextSibling) {\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/webcompone nts/raw-file/tip/spec/shadow/index.html#matching-insertion-points\n\n // TODO(a rv): Verify this... I don't remember why I picked this regexp.\n var selectorMa tchRegExp = /^[*.:#[a-zA-Z_|]/;\n\n var allowedPseudoRegExp = new RegExp('^:(' + [\n 'link',\n 'visited',\n 'target',\n 'enabled',\n 'disabled', \n 'checked',\n 'indeterminate',\n 'nth-child',\n 'nth-last-child',\ n 'nth-of-type',\n 'nth-last-of-type',\n 'first-child',\n 'last-chil d',\n 'first-of-type',\n 'last-of-type',\n 'only-of-type',\n ].join('| ') + ')');\n\n\n /**\n * @param {Element} node\n * @oaram {Element} point T he insertion point element.\n * @return {boolean} Whether the node matches the insertion point.\n */\n function matchesCriteria(node, point) {\n var sel ect = point.getAttribute('select');\n if (!select)\n return true;\n\n // Here we know the select attribute is a non empty string.\n select = selec t.trim();\n if (!select)\n return true;\n\n if (!(node instanceof Ele ment))\n return false;\n\n // The native matches function in IE9 does no t correctly work with elements\n // that are not in the document.\n // TOD O(arv): Implement matching in JS.\n // https://github.com/Polymer/ShadowDOM/i ssues/361\n if (select === '*' || select === node.localName)\n return tr ue;\n\n // TODO(arv): This does not seem right. Need to check for a simple se lector.\n if (!selectorMatchRegExp.test(select))\n return false;\n\n // TODO(arv): This no longer matches the spec.\n if (select[0] === ':' && !al lowedPseudoRegExp.test(select))\n return false;\n\n try {\n return node.matches(select);\n } catch (ex) {\n // Invalid selector.\n ret urn false;\n }\n }\n\n var request = oneOf(window, [\n 'requestAnimation Frame',\n 'mozRequestAnimationFrame',\n 'webkitRequestAnimationFrame',\n 'setTimeout'\n ]);\n\n var pendingDirtyRenderers = [];\n var renderTimer;\n \n function renderAllPending() {\n // TODO(arv): Order these in document ord er. That way we do not have to\n // render something twice.\n for (var i = 0; i < pendingDirtyRenderers.length; i++) {\n var renderer = pendingDirtyR enderers[i];\n var parentRenderer = renderer.parentRenderer;\n if (par entRenderer && parentRenderer.dirty)\n continue;\n renderer.render() ;\n }\n\n pendingDirtyRenderers = [];\n }\n\n function handleRequestAnim ationFrame() {\n renderTimer = null;\n renderAllPending();\n }\n\n /**\n * Returns existing shadow renderer for a host or creates it if it is needed.\ n * @params {!Element} host\n * @return {!ShadowRenderer}\n */\n function getRendererForHost(host) {\n var renderer = rendererForHostTable.get(host);\ n if (!renderer) {\n renderer = new ShadowRenderer(host);\n rendere rForHostTable.set(host, renderer);\n }\n return renderer;\n }\n\n functi on getShadowRootAncestor(node) {\n var root = getTreeScope(node).root;\n i f (root instanceof ShadowRoot)\n return root;\n return null;\n }\n\n f unction getRendererForShadowRoot(shadowRoot) {\n return getRendererForHost(sh adowRoot.host);\n }\n\n var spliceDiff = new ArraySplice();\n spliceDiff.equa ls = function(renderNode, rawNode) {\n return unwrap(renderNode.node) === raw Node;\n };\n\n /**\n * RenderNode is used as an in memory \"render tree\". W hen we render the\n * composed tree we create a tree of RenderNodes, then we d iff 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: fun ction(node) {\n var rv = new RenderNode(node);\n this.childNodes.push( rv);\n return rv;\n },\n\n sync: function(opt_added) {\n if (thi s.skip)\n return;\n\n var nodeWrapper = this.node;\n // plain a rray of RenderNodes\n var newChildren = this.childNodes;\n // plain ar ray of real nodes.\n var oldChildren = getChildNodesSnapshot(unwrap(nodeWra pper));\n var added = opt_added || new WeakMap();\n\n var splices = sp liceDiff.calculateSplices(newChildren, oldChildren);\n\n var newIndex = 0, oldIndex = 0;\n var lastIndex = 0;\n for (var i = 0; i < splices.lengt h; i++) {\n var splice = splices[i];\n for (; lastIndex < splice.i ndex; lastIndex++) {\n oldIndex++;\n newChildren[newIndex++].s ync(added);\n }\n\n var removedCount = splice.removed.length;\n for (var j = 0; j < removedCount; j++) {\n var wrapper = wrap(oldC hildren[oldIndex++]);\n if (!added.get(wrapper))\n remove(wr apper);\n }\n\n var addedCount = splice.addedCount;\n var r efNode = oldChildren[oldIndex] && wrap(oldChildren[oldIndex]);\n for (var j = 0; j < addedCount; j++) {\n var newChildRenderNode = newChildren[n ewIndex++];\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 adde d.\n added.set(newChildWrapper, true);\n\n newChildRenderNode. sync(added);\n }\n\n lastIndex += addedCount;\n }\n\n fo r (var i = lastIndex; i < newChildren.length; i++) {\n newChildren[i].syn c(added);\n }\n }\n };\n\n function ShadowRenderer(host) {\n this.h ost = host;\n this.dirty = false;\n this.invalidateAttributes();\n this .associateNode(host);\n }\n\n ShadowRenderer.prototype = {\n\n // http://dv cs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#rendering-shadow- trees\n render: function(opt_renderNode) {\n if (!this.dirty)\n r eturn;\n\n this.invalidateAttributes();\n this.treeComposition();\n\n var host = this.host;\n var shadowRoot = host.shadowRoot;\n\n thi s.associateNode(host);\n var topMostRenderer = !renderNode;\n var rend erNode = opt_renderNode || new RenderNode(host);\n\n for (var node = shadow Root.firstChild; node; node = node.nextSibling) {\n this.renderNode(shado wRoot, renderNode, node, false);\n }\n\n if (topMostRenderer)\n renderNode.sync();\n\n this.dirty = false;\n },\n\n get parentRender er() {\n return getTreeScope(this.host).renderer;\n },\n\n invalidate : function() {\n if (!this.dirty) {\n this.dirty = true;\n pe ndingDirtyRenderers.push(this);\n if (renderTimer)\n return;\n renderTimer = window[request](handleRequestAnimationFrame, 0);\n }\n },\n\n renderNode: function(shadowRoot, renderNode, node, isNested) {\n if (isShadowHost(node)) {\n renderNode = renderNode.append(node);\n var 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(sha dowRoot, renderNode, node, isNested);\n } else if (isShadowInsertionPoint(n ode)) {\n this.renderShadowInsertionPoint(shadowRoot, renderNode, node);\ n } else {\n this.renderAsAnyDomTree(shadowRoot, renderNode, node, i sNested);\n }\n },\n\n renderAsAnyDomTree: function(shadowRoot, rende rNode, node, isNested) {\n renderNode = renderNode.append(node);\n\n i f (isShadowHost(node)) {\n var renderer = getRendererForHost(node);\n renderNode.skip = !renderer.dirty;\n renderer.render(renderNode);\n } else {\n for (var child = node.firstChild; child; child = child.nex tSibling) {\n this.renderNode(shadowRoot, renderNode, child, isNested); \n }\n }\n },\n\n renderInsertionPoint: function(shadowRoot, r enderNode, insertionPoint,\n isNested) {\n var distributedChildNodes = getDistributedChildNodes(insertionPoint);\n i f (distributedChildNodes.length) {\n this.associateNode(insertionPoint);\ n\n for (var i = 0; i < distributedChildNodes.length; i++) {\n v ar child = distributedChildNodes[i];\n if (isInsertionPoint(child) && i sNested)\n this.renderInsertionPoint(shadowRoot, renderNode, child, i sNested);\n else\n this.renderAsAnyDomTree(shadowRoot, rende rNode, child, isNested);\n }\n } else {\n this.renderFallback Content(shadowRoot, renderNode, insertionPoint);\n }\n this.associateN ode(insertionPoint.parentNode);\n },\n\n renderShadowInsertionPoint: funct ion(shadowRoot, renderNode,\n shadowInse rtionPoint) {\n var nextOlderTree = shadowRoot.olderShadowRoot;\n if ( nextOlderTree) {\n assignToInsertionPoint(nextOlderTree, shadowInsertionP oint);\n this.associateNode(shadowInsertionPoint.parentNode);\n fo r (var node = nextOlderTree.firstChild;\n node;\n node = node.nextSibling) {\n this.renderNode(nextOlderTree, renderNode, node, true);\n }\n } else {\n this.renderFallbackContent(shadowRoo t, renderNode,\n shadowInsertionPoint);\n }\n },\n\n renderFallbackContent: function(shadowRoot, renderNode, fallba ckHost) {\n this.associateNode(fallbackHost);\n this.associateNode(fal lbackHost.parentNode);\n for (var node = fallbackHost.firstChild; node; nod e = node.nextSibling) {\n this.renderAsAnyDomTree(shadowRoot, renderNode, node, false);\n }\n },\n\n /**\n * Invalidates the attributes us ed to keep track of which attributes may\n * cause the renderer to be invali dated.\n */\n invalidateAttributes: function() {\n this.attributes = Object.create(null);\n },\n\n /**\n * Parses the selector and makes t his renderer dependent on the attribute\n * being used in the selector.\n * @param {string} selector\n */\n updateDependentAttributes: function(s elector) {\n if (!selector)\n return;\n\n var attributes = this .attributes;\n\n // .class\n if (/\\.\\w+/.test(selector))\n at tributes['class'] = true;\n\n // #id\n if (/#\\w+/.test(selector))\n attributes['id'] = true;\n\n selector.replace(/\\[\\s*([^\\s=\\|~\\]] +)/g, function(_, name) {\n attributes[name] = true;\n });\n\n // Pseudo selectors have been removed from the spec.\n },\n\n dependsOnAtt ribute: function(name) {\n return this.attributes[name];\n },\n\n // http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#dfn-dist ribution-algorithm\n distribute: function(tree, pool) {\n var self = thi s;\n\n visit(tree, isActiveInsertionPoint,\n function(insertionPoi nt) {\n resetDistributedChildNodes(insertionPoint);\n self .updateDependentAttributes(\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) // remo ved\n continue;\n if (matchesCriteria(node, insertio nPoint)) { // 1.2.2\n distributeChildToInsertionPoint(node, inse rtionPoint); // 1.2.2.1\n pool[i] = undefined; // 1.2.2.2\n }\n }\n });\n },\n\n // http://dvcs.w3.org/h g/webcomponents/raw-file/tip/spec/shadow/index.html#dfn-tree-composition\n tr eeComposition: function () {\n var shadowHost = this.host;\n var tree = shadowHost.shadowRoot; // 1.\n var pool = []; // 2.\n\n for (var c hild = shadowHost.firstChild;\n child;\n child = child.nextS ibling) { // 3.\n if (isInsertionPoint(child)) { // 3.2.\n var reprojected = getDistributedChildNodes(child); // 3.2.1.\n // if repr ojected is undef... reset it?\n if (!reprojected || !reprojected.length ) // 3.2.2.\n reprojected = getChildNodesSnapshot(child);\n pool.push.apply(pool, reprojected); // 3.2.3.\n } else {\n poo l.push(child); // 3.3.\n }\n }\n\n var shadowInsertionPoint, po int;\n while (tree) { // 4.\n // 4.1.\n shadowInsertionPoint = undefined; // Reset every iteration.\n visit(tree, isActiveShadowInse rtionPoint, function(point) {\n shadowInsertionPoint = point;\n return false;\n });\n point = shadowInsertionPoint;\n\n t his.distribute(tree, pool); // 4.2.\n if (point) { // 4.3.\n v ar nextOlderTree = tree.olderShadowRoot; // 4.3.1.\n if (!nextOlderTre e) {\n break; // 4.3.1.1.\n } else {\n tree = ne xtOlderTree; // 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: functio n(node) {\n node.impl.polymerShadowRenderer_ = this;\n }\n };\n\n func tion isInsertionPoint(node) {\n // Should this include <shadow>?\n return node instanceof HTMLContentElement;\n }\n\n function isActiveInsertionPoint(no de) {\n // <content> inside another <content> or <shadow> is considered inact ive.\n return node instanceof HTMLContentElement;\n }\n\n function isShadow InsertionPoint(node) {\n return node instanceof HTMLShadowElement;\n }\n\n function isActiveShadowInsertionPoint(node) {\n // <shadow> inside another <c ontent> or <shadow> is considered inactive.\n return node instanceof HTMLShad owElement;\n }\n\n function isShadowHost(shadowHost) {\n return shadowHost. shadowRoot;\n }\n\n function getShadowTrees(host) {\n var trees = [];\n\n for (var tree = host.shadowRoot; tree; tree = tree.olderShadowRoot) {\n t rees.push(tree);\n }\n return trees;\n }\n\n function assignToInsertionP oint(tree, point) {\n insertionParentTable.set(tree, point);\n }\n\n // htt p://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#rendering-s hadow-trees\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 ShadowRoot is added or removed\n // - a direct child to the host is added o r removed\n // - a new shadow root is created\n // - a direct child to a conte nt/shadow element is added or removed\n // - a sibling to a content/shadow elem ent is added or removed\n // - content[select] is changed\n // - an attribute in a direct child to a host is modified\n\n /**\n * This gets called when a n ode was added or removed to it.\n */\n Node.prototype.invalidateShadowRendere r = function(force) {\n var renderer = this.impl.polymerShadowRenderer_;\n if (renderer) {\n renderer.invalidate();\n return true;\n }\n\n return false;\n };\n\n HTMLContentElement.prototype.getDistributedNodes = fun ction() {\n // TODO(arv): We should only rerender the dirty ancestor renderer s (from\n // the root and down).\n renderAllPending();\n return getDist ributedChildNodes(this);\n };\n\n HTMLShadowElement.prototype.nodeIsInserted_ =\n HTMLContentElement.prototype.nodeIsInserted_ = function() {\n // Invalid ate old renderer if any.\n this.invalidateShadowRenderer();\n\n var shadow Root = getShadowRootAncestor(this);\n var renderer;\n if (shadowRoot)\n renderer = getRendererForShadowRoot(shadowRoot);\n this.impl.polymerShadow Renderer_ = renderer;\n if (renderer)\n renderer.invalidate();\n };\n\n scope.eventParentsTable = eventParentsTable;\n scope.getRendererForHost = get RendererForHost;\n scope.getShadowTrees = getShadowTrees;\n scope.insertionPar entTable = insertionParentTable;\n scope.renderAllPending = renderAllPending;\n \n // Exposed for testing\n scope.visual = {\n insertBefore: insertBefore,\ n remove: remove,\n };\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 201 3 The Polymer Authors. All rights reserved.\n// Use of this source code is gover ened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(funct ion(scope) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement; \n var assert = scope.assert;\n var mixin = scope.mixin;\n var registerWrappe r = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var wrap = scope.wra p;\n\n var elementsWithFormProperty = [\n 'HTMLButtonElement',\n 'HTMLFie ldSetElement',\n 'HTMLInputElement',\n 'HTMLKeygenElement',\n 'HTMLLabe lElement',\n 'HTMLLegendElement',\n 'HTMLObjectElement',\n // HTMLOptio nElement is handled in HTMLOptionElement.js\n 'HTMLOutputElement',\n // HT MLSelectElement is handled in HTMLSelectElement.js\n 'HTMLTextAreaElement',\n ];\n\n function createWrapperConstructor(name) {\n if (!window[name])\n return;\n\n // Ensure we are not overriding an already existing constructo r.\n assert(!scope.wrappers[name]);\n\n var GeneratedWrapper = function(no de) {\n // At this point all of them extend HTMLElement.\n HTMLElement .call(this, node);\n }\n GeneratedWrapper.prototype = Object.create(HTMLEl ement.prototype);\n mixin(GeneratedWrapper.prototype, {\n get form() {\n return wrap(unwrap(this).form);\n },\n });\n\n registerWrappe r(window[name], GeneratedWrapper,\n document.createElement(name.slice(4, -7)));\n scope.wrappers[name] = GeneratedWrapper;\n }\n\n elementsWithFormP roperty.forEach(createWrapperConstructor);\n\n})(window.ShadowDOMPolyfill);\n"," // Copyright 2014 The Polymer Authors. All rights reserved.\n// Use of this sour ce 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 registerWrapper = scope.r egisterWrapper;\n var unwrap = scope.unwrap;\n var unwrapIfNeeded = scope.unwr apIfNeeded;\n var wrap = scope.wrap;\n\n var OriginalSelection = window.Select ion;\n\n function Selection(impl) {\n this.impl = impl;\n }\n Selection.pr ototype = {\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(unwrapIfNeeded(node), allowPartial);\n },\n extend: function(node, offset) {\n this.impl.extend(unwrapIfNeeded(node), offset);\n },\n getRangeAt: function(index) {\n return wrap(this.impl .getRangeAt(index));\n },\n removeRange: function(range) {\n this.imp l.removeRange(unwrap(range));\n },\n selectAllChildren: function(node) {\n this.impl.selectAllChildren(unwrapIfNeeded(node));\n },\n toString: function() {\n return this.impl.toString();\n }\n };\n\n // WebKit ext ensions. Not implemented.\n // readonly attribute Node baseNode;\n // readonly attribute long baseOffset;\n // readonly attribute Node extentNode;\n // read only attribute long extentOffset;\n // [RaisesException] void setBaseAndExtent( [Default=Undefined] optional Node baseNode,\n // [Default =Undefined] optional long baseOffset,\n // [Default=Undef ined] optional Node extentNode,\n // [Default=Undefined] optional long extentOffset);\n // [RaisesException, ImplementedAs=collapse] voi d setPosition([Default=Undefined] optional Node node,\n // [De fault=Undefined] optional long offset);\n\n registerWrapper(window.Selection, S election, window.getSelection());\n\n scope.wrappers.Selection = Selection;\n\n })(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rig hts reserved.\n// Use of this source code is goverened by a BSD-style\n// licens e that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\ n\n var GetElementsByInterface = scope.GetElementsByInterface;\n var Node = sc ope.wrappers.Node;\n var ParentNodeInterface = scope.ParentNodeInterface;\n va r Selection = scope.wrappers.Selection;\n var SelectorsInterface = scope.Select orsInterface;\n var ShadowRoot = scope.wrappers.ShadowRoot;\n var TreeScope = scope.TreeScope;\n var cloneNode = scope.cloneNode;\n var defineWrapGetter = s cope.defineWrapGetter;\n var elementFromPoint = scope.elementFromPoint;\n var forwardMethodsToWrapper = scope.forwardMethodsToWrapper;\n var matchesNames = s cope.matchesNames;\n var mixin = scope.mixin;\n var registerWrapper = scope.re gisterWrapper;\n var renderAllPending = scope.renderAllPending;\n var rewrap = scope.rewrap;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var wr apEventTargetMethods = scope.wrapEventTargetMethods;\n var wrapNodeList = scope .wrapNodeList;\n\n var implementationTable = new WeakMap();\n\n function Docum ent(node) {\n Node.call(this, node);\n this.treeScope_ = new TreeScope(thi s, null);\n }\n Document.prototype = Object.create(Node.prototype);\n\n defin eWrapGetter(Document, 'documentElement');\n\n // Conceptually both body and hea d can be in a shadow but suporting that seems\n // overkill at this point.\n d efineWrapGetter(Document, 'body');\n defineWrapGetter(Document, 'head');\n\n / / document cannot be overridden so we override a bunch of its methods\n // dire ctly on the instance.\n\n function wrapMethod(name) {\n var original = docum ent[name];\n Document.prototype[name] = function() {\n return wrap(origi nal.apply(this.impl, arguments));\n };\n }\n\n [\n 'createComment',\n 'createDocumentFragment',\n 'createElement',\n 'createElementNS',\n 'c reateEvent',\n 'createEventNS',\n 'createRange',\n 'createTextNode',\n 'getElementById'\n ].forEach(wrapMethod);\n\n var originalAdoptNode = docum ent.adoptNode;\n\n function adoptNodeNoRemove(node, doc) {\n originalAdoptNo de.call(doc.impl, unwrap(node));\n adoptSubtree(node, doc);\n }\n\n functio n adoptSubtree(node, doc) {\n if (node.shadowRoot)\n doc.adoptNode(node. shadowRoot);\n if (node instanceof ShadowRoot)\n adoptOlderShadowRoots(n ode, doc);\n for (var child = node.firstChild; child; child = child.nextSibli ng) {\n adoptSubtree(child, doc);\n }\n }\n\n function adoptOlderShado wRoots(shadowRoot, doc) {\n var oldShadowRoot = shadowRoot.olderShadowRoot;\n if (oldShadowRoot)\n doc.adoptNode(oldShadowRoot);\n }\n\n var origin alGetSelection = document.getSelection;\n\n mixin(Document.prototype, {\n ad optNode: function(node) {\n if (node.parentNode)\n node.parentNode.r emoveChild(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 clon eNode(node, deep, this.impl);\n },\n getSelection: function() {\n ren derAllPending();\n return new Selection(originalGetSelection.call(unwrap(th is)));\n }\n });\n\n if (document.registerElement) {\n var originalRegis terElement = document.registerElement;\n Document.prototype.registerElement = function(tagName, object) {\n var prototype, extendsOption;\n if (obj ect !== undefined) {\n prototype = object.prototype;\n extendsOpti on = object.extends;\n }\n\n if (!prototype)\n prototype = Obje ct.create(HTMLElement.prototype);\n\n\n // If we already used the object as a prototype for another custom\n // element.\n if (scope.nativeProtot ypeTable.get(prototype)) {\n // TODO(arv): DOMException\n throw ne w Error('NotSupportedError');\n }\n\n // Find first object on the prot otype chain that already have a native\n // prototype. Keep track of all th e objects before that so we can create\n // a similar structure for the nat ive case.\n var proto = Object.getPrototypeOf(prototype);\n var native Prototype;\n var prototypes = [];\n while (proto) {\n nativePro totype = scope.nativePrototypeTable.get(proto);\n if (nativePrototype)\n break;\n prototypes.push(proto);\n proto = Object.getProt otypeOf(proto);\n }\n\n if (!nativePrototype) {\n // TODO(arv): DOMException\n throw new Error('NotSupportedError');\n }\n\n / / This works by creating a new prototype object that is empty, but has\n // the native prototype as its proto. The original prototype object\n // pass ed into register is used as the wrapper prototype.\n\n var newPrototype = O bject.create(nativePrototype);\n for (var i = prototypes.length - 1; i >= 0 ; i--) {\n newPrototype = Object.create(newPrototype);\n }\n\n // Add callbacks if present.\n // Names are taken from:\n // https:/ /code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/Source/bi ndings/v8/CustomElementConstructorBuilder.cpp&sq=package:chromium&type=cs&l=156\ n // and not from the spec since the spec is out of date.\n [\n 'createdCallback',\n 'attachedCallback',\n 'detachedCallback',\n 'attributeChangedCallback',\n ].forEach(function(name) {\n va r f = prototype[name];\n if (!f)\n return;\n newPrototype [name] = function() {\n // if this element has been wrapped prior to re gistration,\n // the wrapper is stale; in this case rewrap\n i f (!(wrap(this) instanceof CustomElementConstructor)) {\n rewrap(this );\n }\n f.apply(wrap(this), arguments);\n };\n }) ;\n\n var p = {prototype: newPrototype};\n if (extendsOption)\n p.extends = extendsOption;\n\n function CustomElementConstructor(node) {\n if (!node) {\n if (extendsOption) {\n return documen t.createElement(extendsOption, tagName);\n } else {\n return document.createElement(tagName);\n }\n }\n this.impl = n ode;\n }\n CustomElementConstructor.prototype = prototype;\n Cust omElementConstructor.prototype.constructor = CustomElementConstructor;\n\n scope.constructorTable.set(newPrototype, CustomElementConstructor);\n scope .nativePrototypeTable.set(prototype, newPrototype);\n\n // registration is synchronous so do it last\n var nativeConstructor = originalRegisterElement .call(unwrap(this),\n tagName, p);\n return CustomElementConstruct or;\n };\n\n forwardMethodsToWrapper([\n window.HTMLDocument || windo w.Document, // Gecko adds these to HTMLDocument\n ], [\n 'registerEleme nt',\n ]);\n }\n\n // We also override some of the methods on document.body and document.head\n // for convenience.\n forwardMethodsToWrapper([\n wind ow.HTMLBodyElement,\n window.HTMLDocument || window.Document, // Gecko adds these to HTMLDocument\n window.HTMLHeadElement,\n window.HTMLHtmlElement,\ n ], [\n 'appendChild',\n 'compareDocumentPosition',\n 'contains',\n 'getElementsByClassName',\n 'getElementsByTagName',\n 'getElementsByTagN ameNS',\n 'insertBefore',\n 'querySelector',\n 'querySelectorAll',\n 'removeChild',\n 'replaceChild',\n ].concat(matchesNames));\n\n forwardMet hodsToWrapper([\n window.HTMLDocument || window.Document, // Gecko adds thes e to HTMLDocument\n ], [\n 'adoptNode',\n 'importNode',\n 'contains',\ n 'createComment',\n 'createDocumentFragment',\n 'createElement',\n 'createElementNS',\n 'createEvent',\n 'createEventNS',\n 'createRange', \n 'createTextNode',\n 'elementFromPoint',\n 'getElementById',\n 'ge tSelection',\n ]);\n\n mixin(Document.prototype, GetElementsByInterface);\n m ixin(Document.prototype, ParentNodeInterface);\n mixin(Document.prototype, Sele ctorsInterface);\n\n mixin(Document.prototype, {\n get implementation() {\n var implementation = implementationTable.get(this);\n if (implementati on)\n return implementation;\n implementation =\n new DOMIm plementation(unwrap(this).implementation);\n implementationTable.set(this, implementation);\n return implementation;\n }\n });\n\n registerWrappe r(window.Document, Document,\n document.implementation.createHTMLDocument(' '));\n\n // Both WebKit and Gecko uses HTMLDocument for document. HTML5/DOM onl y has\n // one Document interface and IE implements the standard correctly.\n if (window.HTMLDocument)\n registerWrapper(window.HTMLDocument, Document);\n\ n wrapEventTargetMethods([\n window.HTMLBodyElement,\n window.HTMLDocumen t || window.Document, // Gecko adds these to HTMLDocument\n window.HTMLHeadE lement,\n ]);\n\n function DOMImplementation(impl) {\n this.impl = impl;\n }\n\n function wrapImplMethod(constructor, name) {\n var original = documen t.implementation[name];\n constructor.prototype[name] = function() {\n r eturn wrap(original.apply(this.impl, arguments));\n };\n }\n\n function for wardImplMethod(constructor, name) {\n var original = document.implementation[ name];\n constructor.prototype[name] = function() {\n return original.ap ply(this.impl, arguments);\n };\n }\n\n wrapImplMethod(DOMImplementation, ' createDocumentType');\n wrapImplMethod(DOMImplementation, 'createDocument');\n wrapImplMethod(DOMImplementation, 'createHTMLDocument');\n forwardImplMethod(D OMImplementation, 'hasFeature');\n\n registerWrapper(window.DOMImplementation, DOMImplementation);\n\n forwardMethodsToWrapper([\n window.DOMImplementation ,\n ], [\n 'createDocumentType',\n 'createDocument',\n 'createHTMLDocu ment',\n 'hasFeature',\n ]);\n\n scope.adoptNodeNoRemove = adoptNodeNoRemov e;\n scope.wrappers.DOMImplementation = DOMImplementation;\n scope.wrappers.Do cument = Document;\n\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 EventTarget = scope.wrappers.EventTarget;\n var Selection = scope.wrappers.Selection;\n var mixin = scope.mixin;\n var registe rWrapper = scope.registerWrapper;\n var renderAllPending = scope.renderAllPendi ng;\n var unwrap = scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\ n var wrap = scope.wrap;\n\n var OriginalWindow = window.Window;\n var origin alGetComputedStyle = window.getComputedStyle;\n var originalGetSelection = wind ow.getSelection;\n\n function Window(impl) {\n EventTarget.call(this, impl); \n }\n Window.prototype = Object.create(EventTarget.prototype);\n\n OriginalW indow.prototype.getComputedStyle = function(el, pseudo) {\n return wrap(this || window).getComputedStyle(unwrapIfNeeded(el), pseudo);\n };\n\n OriginalWind ow.prototype.getSelection = function() {\n return wrap(this || window).getSel ection();\n };\n\n // Work around for https://bugzilla.mozilla.org/show_bug.cg i?id=943065\n delete window.getComputedStyle;\n delete window.getSelection;\n\ n ['addEventListener', 'removeEventListener', 'dispatchEvent'].forEach(\n function(name) {\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=943065\n delete window[name];\n });\n\n mixin(Window.prototy pe, {\n getComputedStyle: function(el, pseudo) {\n renderAllPending();\n return originalGetComputedStyle.call(unwrap(this), unwrapIfNeeded(el),\n pseudo);\n },\n getSelection: fun ction() {\n renderAllPending();\n return new Selection(originalGetSele ction.call(unwrap(this)));\n },\n });\n\n registerWrapper(OriginalWindow, W indow);\n\n scope.wrappers.Window = Window;\n\n})(window.ShadowDOMPolyfill);\n" ,"/**\n * Copyright 2014 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\n(function(scope) {\n 'use strict';\n\n var unwrap = scop e.unwrap;\n\n // DataTransfer (Clipboard in old Blink/WebKit) has a single meth od that\n // requires wrapping. Since it is only a method we do not need a real wrapper,\n // we can just override the method.\n\n var OriginalDataTransfer = window.DataTransfer || window.Clipboard;\n var OriginalDataTransferSetDragImag e =\n OriginalDataTransfer.prototype.setDragImage;\n\n OriginalDataTransfe r.prototype.setDragImage = function(image, x, y) {\n OriginalDataTransferSetD ragImage.call(this, unwrap(image), x, y);\n };\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 LI CENSE 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 constructor\n // for.\n var elements = {\n 'a': 'HTMLAnchorElement', \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 // 'apple t': 'HTMLAppletElement',\n 'area': 'HTMLAreaElement',\n 'audio': 'HTMLAudi oElement',\n 'base': 'HTMLBaseElement',\n 'body': 'HTMLBodyElement',\n 'br': 'HTMLBRElement',\n 'button': 'HTMLButtonElement',\n 'canvas': 'HTMLC anvasElement',\n 'caption': 'HTMLTableCaptionElement',\n 'col': 'HTMLTable ColElement',\n // 'command': 'HTMLCommandElement', // Not fully implemented in Gecko.\n 'content': 'HTMLContentElement',\n 'data': 'HTMLDataElement',\ n 'datalist': 'HTMLDataListElement',\n 'del': 'HTMLModElement',\n 'dir' : 'HTMLDirectoryElement',\n 'div': 'HTMLDivElement',\n 'dl': 'HTMLDListEle ment',\n 'embed': 'HTMLEmbedElement',\n 'fieldset': 'HTMLFieldSetElement', \n 'font': 'HTMLFontElement',\n 'form': 'HTMLFormElement',\n 'frame': ' HTMLFrameElement',\n 'frameset': 'HTMLFrameSetElement',\n 'h1': 'HTMLHeadi ngElement',\n 'head': 'HTMLHeadElement',\n 'hr': 'HTMLHRElement',\n 'ht ml': 'HTMLHtmlElement',\n 'iframe': 'HTMLIFrameElement',\n 'img': 'HTMLIma geElement',\n 'input': 'HTMLInputElement',\n 'keygen': 'HTMLKeygenElement' ,\n 'label': 'HTMLLabelElement',\n 'legend': 'HTMLLegendElement',\n 'li ': 'HTMLLIElement',\n 'link': 'HTMLLinkElement',\n 'map': 'HTMLMapElement' ,\n 'marquee': 'HTMLMarqueeElement',\n 'menu': 'HTMLMenuElement',\n 'me nuitem': 'HTMLMenuItemElement',\n 'meta': 'HTMLMetaElement',\n 'meter': 'H TMLMeterElement',\n 'object': 'HTMLObjectElement',\n 'ol': 'HTMLOListEleme nt',\n 'optgroup': 'HTMLOptGroupElement',\n 'option': 'HTMLOptionElement', \n 'output': 'HTMLOutputElement',\n 'p': 'HTMLParagraphElement',\n 'par am': 'HTMLParamElement',\n 'pre': 'HTMLPreElement',\n 'progress': 'HTMLPro gressElement',\n 'q': 'HTMLQuoteElement',\n 'script': 'HTMLScriptElement', \n 'select': 'HTMLSelectElement',\n 'shadow': 'HTMLShadowElement',\n 's ource': 'HTMLSourceElement',\n 'span': 'HTMLSpanElement',\n 'style': 'HTML StyleElement',\n 'table': 'HTMLTableElement',\n 'tbody': 'HTMLTableSection Element',\n // WebKit and Moz are wrong:\n // https://bugs.webkit.org/show _bug.cgi?id=111469\n // https://bugzilla.mozilla.org/show_bug.cgi?id=848096\n // 'td': 'HTMLTableCellElement',\n 'template': 'HTMLTemplateElement',\n 'textarea': 'HTMLTextAreaElement',\n 'thead': 'HTMLTableSectionElement',\n 'time': 'HTMLTimeElement',\n 'title': 'HTMLTitleElement',\n 'tr': 'HTML TableRowElement',\n 'track': 'HTMLTrackElement',\n 'ul': 'HTMLUListElement ',\n 'video': 'HTMLVideoElement',\n };\n\n function overrideConstructor(tag Name) {\n var nativeConstructorName = elements[tagName];\n var nativeConst ructor = window[nativeConstructorName];\n if (!nativeConstructor)\n retu rn;\n var element = document.createElement(tagName);\n var wrapperConstruc tor = element.constructor;\n window[nativeConstructorName] = wrapperConstruct or;\n }\n\n Object.keys(elements).forEach(overrideConstructor);\n\n Object.ge tOwnPropertyNames(scope.wrappers).forEach(function(name) {\n window[name] = s cope.wrappers[name]\n });\n\n})(window.ShadowDOMPolyfill);\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 (function() {\n\n // convenient global\n window.wrap = ShadowDOMPolyfill.wrapI fNeeded;\n window.unwrap = ShadowDOMPolyfill.unwrapIfNeeded;\n\n // users may want to customize other types\n // TODO(sjmiles): 'button' is now supported by ShadowDOMPolyfill, but\n // I've left this code here in case we need to tempora rily patch another\n // type\n /*\n (function() {\n var elts = {HTMLButton Element: 'button'};\n for (var c in elts) {\n window[c] = function() { t hrow 'Patched Constructor'; };\n window[c].prototype = Object.getPrototypeO f(\n document.createElement(elts[c]));\n }\n })();\n */\n\n // pa tch in prefixed name\n Object.defineProperty(Element.prototype, 'webkitShadowRo ot',\n Object.getOwnPropertyDescriptor(Element.prototype, 'shadowRoot'));\n \n var originalCreateShadowRoot = Element.prototype.createShadowRoot;\n Elemen t.prototype.createShadowRoot = function() {\n var root = originalCreateShadow Root.call(this);\n CustomElements.watchShadow(this);\n return root;\n };\ n\n Element.prototype.webkitCreateShadowRoot = Element.prototype.createShadowRo ot;\n})();\n","/*\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be fo und in the LICENSE file.\n */\n\n/*\n This is a limited shim for ShadowDOM css styling.\n https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index. html#styles\n \n The intention here is to support only the styling features wh ich can be \n relatively simply implemented. The goal is to allow users to avoi d the \n most obvious pitfalls and do so without compromising performance signi ficantly. \n For ShadowDOM styling that's not covered here, a set of best pract ices\n can be provided that should allow users to accomplish more complex styli ng.\n\n The following is a list of specific ShadowDOM styling features and a br ief\n discussion of the approach used to shim.\n\n Shimmed features:\n\n * :h ost, :host-context: ShadowDOM allows styling of the shadowRoot's host\n element using the :host rule. To shim this feature, the :host styles are \n reformatte d and prefixed with a given scope name and promoted to a \n document level styl esheet.\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 * encapsultion: Styles defined within Sha dowDOM, apply only to \n dom inside the ShadowDOM. Polymer uses one of two tech niques to imlement\n this feature.\n \n By default, rules are prefixed with t he host element tag name \n as a descendant selector. This ensures styling does not leak out of the 'top'\n of the element'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 selectors are scoped by adding an attribu te selector suffix to each\n simple selector that contains the host element tag name. Each element \n in the element's ShadowDOM template is also given the sc ope attribute. \n Thus, these rules match only elements that have the scope att ribute.\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 that elements that are dynamically added to a scope must have the scope\n selector added to them manually.\n\n * upper /lower bound encapsulation: Styles which are defined outside a\n shadowRoot sho uld not cross the ShadowDOM boundary and should not apply\n inside a shadowRoot .\n\n This styling behavior is not emulated. Some possible ways to do this that \n were rejected due to complexity and/or performance concerns include: (1) re set\n every possible property for every possible selector for a given scope nam e;\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 not emulated. It's often not necessary\ n to style the contents of a specific insertion point and instead, descendants\ n of the host element can be styled selectively. Users can also create an \n e xtra node around an insertion point and style that node's contents\n via descen dent selectors. For example, with a shadowRoot like this:\n \n <style>\n ::content(div) {\n background: red;\n }\n </style>\n <conten t></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-container\">\n <content></content>\n </div>\n \n Note the use of @polyfill in the comment above a ShadowDOM spec ific style\n declaration. This is a directive to the styling shim to use the se lector \n in comments in lieu of the next selector when running under polyfill. \n*/\n(function(scope) {\n\nvar ShadowCSS = {\n strictStyling: false,\n regist ry: {},\n // Shim styles for a given root associated with a name and extendsNam e\n // 1. cache root styles by name\n // 2. optionally tag root nodes with sco pe name\n // 3. shim polyfill directives /* @polyfill */ and /* @polyfill-rule */\n // 4. shim :host and scoping\n shimStyling: function(root, name, extendsN ame) {\n var scopeStyles = this.prepareRoot(root, name, extendsName);\n va r typeExtension = this.isTypeExtension(extendsName);\n var scopeSelector = th is.makeScopeSelector(name, typeExtension);\n // use caching to make working w ith styles nodes easier and to facilitate\n // lookup of extendee\n var cs sText = stylesToCssText(scopeStyles, true);\n cssText = this.scopeCssText(css Text, scopeSelector);\n // cache shimmed css on root for user extensibility\n if (root) {\n root.shimmedStyle = cssText;\n }\n // add style to document\n this.addCssToDocument(cssText, name);\n },\n /*\n * Shim a styl e element with the given selector. Returns cssText that can\n * be included in the document via Platform.ShadowCSS.addCssToDocument(css).\n */\n shimStyle: f unction(style, selector) {\n return this.shimCssText(style.textContent, selec tor);\n },\n /*\n * Shim some cssText with the given selector. Returns cssTex t that can\n * be included in the document via Platform.ShadowCSS.addCssToDocum ent(css).\n */\n shimCssText: function(cssText, selector) {\n cssText = thi s.insertDirectives(cssText);\n return this.scopeCssText(cssText, selector);\n },\n makeScopeSelector: function(name, typeExtension) {\n if (name) {\n return typeExtension ? '[is=' + name + ']' : name;\n }\n return '';\n },\n isTypeExtension: function(extendsName) {\n return extendsName && extend sName.indexOf('-') < 0;\n },\n prepareRoot: function(root, name, extendsName) {\n var def = this.registerRoot(root, name, extendsName);\n this.replaceTe xtInStyles(def.rootStyles, this.insertDirectives);\n // remove existing style elements\n this.removeStyles(root, def.rootStyles);\n // apply strict att r\n if (this.strictStyling) {\n this.applyScopeToContent(root, name);\n }\n return def.scopeStyles;\n },\n removeStyles: function(root, styles) {\n for (var i=0, l=styles.length, s; (i<l) && (s=styles[i]); i++) {\n s .parentNode.removeChild(s);\n }\n },\n registerRoot: function(root, name, e xtendsName) {\n var def = this.registry[name] = {\n root: root,\n n ame: name,\n extendsName: extendsName\n }\n var styles = this.findSty les(root);\n def.rootStyles = styles;\n def.scopeStyles = def.rootStyles;\ n var extendee = this.registry[def.extendsName];\n if (extendee) {\n def.scopeStyles = extendee.scopeStyles.concat(def.scopeStyles);\n }\n retu rn def;\n },\n findStyles: function(root) {\n if (!root) {\n return [] ;\n }\n var styles = root.querySelectorAll('style');\n return Array.pro totype.filter.call(styles, function(s) {\n return !s.hasAttribute(NO_SHIM_A TTRIBUTE);\n });\n },\n applyScopeToContent: function(root, name) {\n if (root) {\n // add the name attribute to each node in root.\n Array.pr ototype.forEach.call(root.querySelectorAll('*'),\n function(node) {\n node.setAttribute(name, '');\n });\n // and template con tents too\n Array.prototype.forEach.call(root.querySelectorAll('template'), \n function(template) {\n this.applyScopeToContent(template. content, name);\n },\n this);\n }\n },\n insertDirectives : function(cssText) {\n cssText = this.insertPolyfillDirectivesInCssText(cssT ext);\n return this.insertPolyfillRulesInCssText(cssText);\n },\n /*\n * Process styles to convert native ShadowDOM rules that will trip\n * up the css parser; we rely on decorating the stylesheet with inert rules.\n * \n * For example, we convert this rule:\n * \n * polyfill-next-selector { content: ' :host menu-item'; }\n * ::content menu-item {\n * \n * to this:\n * \n * scopeName menu-item {\n *\n **/\n insertPolyfillDirectivesInCssText: func tion(cssText) {\n // TODO(sorvell): remove either content or comment\n css Text = cssText.replace(cssCommentNextSelectorRe, function(match, p1) {\n // remove end comment delimiter and add block start\n return p1.slice(0, -2) + '{';\n });\n return cssText.replace(cssContentNextSelectorRe, function(m atch, p1) {\n return p1 + ' {';\n });\n },\n /*\n * Process styles t o add rules which will only apply under the polyfill\n * \n * For example, w e convert this rule:\n * \n * polyfill-rule {\n * content: ':host menu-i tem';\n * ...\n * }\n * \n * to this:\n * \n * scopeName menu-item { ...}\n *\n **/\n insertPolyfillRulesInCssText: function(cssText) {\n // T ODO(sorvell): remove either content or comment\n cssText = cssText.replace(cs sCommentRuleRe, function(match, p1) {\n // remove end comment delimiter\n return p1.slice(0, -1);\n });\n return cssText.replace(cssContentRuleR e, function(match, p1, p2, p3) {\n var rule = match.replace(p1, '').replace (p2, '');\n return p3 + rule;\n });\n },\n /* Ensure styles are scoped . Pseudo-scoping takes a rule like:\n * \n * .foo {... } \n * \n * an d converts this to\n * \n * scopeName .foo { ... }\n */\n scopeCssText: function(cssText, scopeSelector) {\n var unscoped = this.extractUnscopedRules FromCssText(cssText);\n cssText = this.insertPolyfillHostInCssText(cssText);\ n cssText = this.convertColonHost(cssText);\n cssText = this.convertColonH ostContext(cssText);\n cssText = this.convertCombinators(cssText);\n if (s copeSelector) {\n var self = this, cssText;\n withCssRules(cssText, fu nction(rules) {\n cssText = self.scopeRules(rules, scopeSelector);\n });\n\n }\n cssText = cssText + '\\n' + unscoped;\n return cssText.tri m();\n },\n /*\n * Process styles to add rules which will only apply under t he polyfill\n * and do not process via CSSOM. (CSSOM is destructive to rules o n rare \n * occasions, e.g. -webkit-calc on Safari.)\n * For example, we con vert this rule:\n * \n * (comment start) @polyfill-unscoped-rule menu-item { \n * ... } (comment end)\n * \n * to this:\n * \n * menu-item {...}\n *\n **/\n extractUnscopedRulesFromCssText: function(cssText) {\n // TODO (sorvell): remove either content or comment\n var r = '', m;\n while (m = cssCommentUnscopedRuleRe.exec(cssText)) {\n r += m[1].slice(0, -1) + '\\n\\ n';\n }\n while (m = cssContentUnscopedRuleRe.exec(cssText)) {\n r += m[0].replace(m[2], '').replace(m[1], m[3]) + '\\n\\n';\n }\n return r;\n },\n /*\n * convert a rule like :host(.foo) > .bar { }\n *\n * to\n *\ n * scopeName.foo > .bar\n */\n convertColonHost: function(cssText) {\n r eturn this.convertColonRule(cssText, cssColonHostRe,\n this.colonHostPart Replacer);\n },\n /*\n * convert a rule like :host-context(.foo) > .bar { }\ n *\n * to\n *\n * scopeName.foo > .bar, .foo scopeName > .bar { }\n * \n * and\n *\n * :host-context(.foo:host) .bar { ... }\n * \n * to\n * \n * scopeName.foo .bar { ... }\n */\n convertColonHostContext: function (cssText) {\n return this.convertColonRule(cssText, cssColonHostContextRe,\n this.colonHostContextPartReplacer);\n },\n convertColonRule: function(c ssText, regExp, partReplacer) {\n // p1 = :host, p2 = contents of (), p3 rest of rule\n return cssText.replace(regExp, function(m, p1, p2, p3) {\n p1 = polyfillHostNoCombinator;\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 colonHostContextPartReplacer: function(host, part, suffix) {\ n if (part.match(polyfillHost)) {\n return this.colonHostPartReplacer(ho st, part, suffix);\n } else {\n return host + part + suffix + ', ' + par t + ' ' + host + suffix;\n }\n },\n colonHostPartReplacer: function(host, p art, suffix) {\n return host + part.replace(polyfillHost, '') + suffix;\n }, \n /*\n * Convert ^ and ^^ combinators by replacing with space.\n */\n conv ertCombinators: function(cssText) {\n for (var i=0; i < combinatorsRe.length; i++) {\n cssText = cssText.replace(combinatorsRe[i], ' ');\n }\n ret urn cssText;\n },\n // change a selector like 'div' to 'name div'\n scopeRule s: function(cssRules, scopeSelector) {\n var cssText = '';\n if (cssRules) {\n Array.prototype.forEach.call(cssRules, function(rule) {\n if (r ule.selectorText && (rule.style && rule.style.cssText)) {\n cssText += this.scopeSelector(rule.selectorText, scopeSelector, \n this.strictSt yling) + ' {\\n\\t';\n cssText += this.propertiesFromRule(rule) + '\\n} \\n\\n';\n } else if (rule.type === CSSRule.MEDIA_RULE) {\n cssT ext += '@media ' + rule.media.mediaText + ' {\\n';\n cssText += this.sc opeRules(rule.cssRules, scopeSelector);\n cssText += '\\n}\\n\\n';\n } else if (rule.cssText) {\n cssText += rule.cssText + '\\n\\n';\n }\n }, this);\n }\n return cssText;\n },\n scopeSelector: f unction(selector, scopeSelector, strict) {\n var r = [], parts = selector.spl it(',');\n parts.forEach(function(p) {\n p = p.trim();\n if (this.s electorNeedsScoping(p, scopeSelector)) {\n p = (strict && !p.match(polyfi llHostNoCombinator)) ? \n this.applyStrictSelectorScope(p, scopeSelec tor) :\n this.applySimpleSelectorScope(p, scopeSelector);\n }\n r.push(p);\n }, this);\n return r.join(', ');\n },\n selectorNeedsS coping: function(selector, scopeSelector) {\n var re = this.makeScopeMatcher( scopeSelector);\n return !selector.match(re);\n },\n makeScopeMatcher: func tion(scopeSelector) {\n scopeSelector = scopeSelector.replace(/\\[/g, '\\\\[' ).replace(/\\[/g, '\\\\]');\n return new RegExp('^(' + scopeSelector + ')' + selectorReSuffix, 'm');\n },\n // scope via name and [is=name]\n applySimpleS electorScope: function(selector, scopeSelector) {\n if (selector.match(polyfi llHostRe)) {\n selector = selector.replace(polyfillHostNoCombinator, scopeS elector);\n return selector.replace(polyfillHostRe, scopeSelector + ' ');\n } else {\n return scopeSelector + ' ' + selector;\n }\n },\n // re turn a selector with [name] suffix on each simple selector\n // e.g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name]\n applyStrictSelectorScope: fun ction(selector, scopeSelector) {\n scopeSelector = scopeSelector.replace(/\\[ is=([^\\]]*)\\]/g, '$1');\n var splits = [' ', '>', '+', '~'],\n scoped = selector,\n attrName = '[' + scopeSelector + ']';\n splits.forEach(fun ction(sep) {\n var parts = scoped.split(sep);\n scoped = parts.map(fun ction(p) {\n // remove :host since it should be unnecessary\n var 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(selecto r) {\n return selector.replace(colonHostContextRe, polyfillHostContext).repla ce(\n colonHostRe, polyfillHost);\n },\n propertiesFromRule: function(r ule) {\n var cssText = rule.style.cssText;\n // TODO(sorvell): Safari csso m incorrectly removes quotes from the content\n // property. (https://bugs.we bkit.org/show_bug.cgi?id=118045)\n // don't replace attr rules\n if (rule. style.content && !rule.style.content.match(/['\"]+|attr/)) {\n cssText = cs sText.replace(/content:[^;]*;/g, 'content: \\'' + \n rule.style.content + '\\';');\n }\n // TODO(sorvell): we can workaround this issue here, but we need a list\n // of troublesome properties to fix https://github.com/Poly mer/platform/issues/53\n //\n // inherit rules can be omitted from cssText \n // TODO(sorvell): remove when Blink bug is fixed:\n // https://code.goo gle.com/p/chromium/issues/detail?id=358273\n var style = rule.style;\n for (var i in style) {\n if (style[i] === 'initial') {\n cssText += i + ': initial; ';\n }\n }\n return cssText;\n },\n replaceTextInStyle s: function(styles, action) {\n if (styles && action) {\n if (!(styles i nstanceof Array)) {\n styles = [styles];\n }\n Array.prototype. forEach.call(styles, function(s) {\n s.textContent = action.call(this, s. textContent);\n }, this);\n }\n },\n addCssToDocument: function(cssTex t, name) {\n if (cssText.match('@import')) {\n addOwnSheet(cssText, name );\n } else {\n addCssToDocument(cssText);\n }\n }\n};\n\nvar select orRe = /([^{]*)({[\\s\\S]*?})/gim,\n cssCommentRe = /\\/\\*[^*]*\\*+([^/*][^* ]*\\*+)*\\//gim,\n // TODO(sorvell): remove either content or comment\n cs sCommentNextSelectorRe = /\\/\\*\\s*@polyfill ([^*]*\\*+([^/*][^*]*\\*+)*\\/)([^ {]*?){/gim,\n cssContentNextSelectorRe = /polyfill-next-selector[^}]*content\ \:[\\s]*'([^']*)'[^}]*}([^{]*?){/gim,\n // TODO(sorvell): remove either conte nt or comment\n cssCommentRuleRe = /\\/\\*\\s@polyfill-rule([^*]*\\*+([^/*][^ *]*\\*+)*)\\//gim,\n cssContentRuleRe = /(polyfill-rule)[^}]*(content\\:[\\s] *'([^']*)'[^;]*;)[^}]*}/gim,\n // TODO(sorvell): remove either content or com ment\n cssCommentUnscopedRuleRe = /\\/\\*\\s@polyfill-unscoped-rule([^*]*\\*+ ([^/*][^*]*\\*+)*)\\//gim,\n cssContentUnscopedRuleRe = /(polyfill-unscoped-r ule)[^}]*(content\\:[\\s]*'([^']*)'[^;]*;)[^}]*}/gim,\n cssPseudoRe = /::(x-[ ^\\s{,(]*)/gim,\n cssPartRe = /::part\\(([^)]*)\\)/gim,\n // note: :host p re-processed to -shadowcsshost.\n polyfillHost = '-shadowcsshost',\n // no te: :host-context pre-processed to -shadowcsshostcontext.\n polyfillHostConte xt = '-shadowcsscontext',\n parenSuffix = ')(?:\\\\((' +\n '(?:\\\\([^ )(]*\\\\)|[^)(]*)+?' +\n ')\\\\))?([^,{]*)';\n cssColonHostRe = new Re gExp('(' + polyfillHost + parenSuffix, 'gim'),\n cssColonHostContextRe = new RegExp('(' + polyfillHostContext + parenSuffix, 'gim'),\n selectorReSuffix = '([>\\\\s~+\\[.,{:][\\\\s\\\\S]*)?$',\n colonHostRe = /\\:host/gim,\n colo nHostContextRe = /\\:host-context/gim,\n /* host name without combinator */\n polyfillHostNoCombinator = polyfillHost + '-no-combinator',\n polyfillHos tRe = new RegExp(polyfillHost, 'gim'),\n polyfillHostContextRe = new RegExp(p olyfillHostContext, 'gim'),\n combinatorsRe = [\n /\\^\\^/g,\n /\\^ /g,\n /\\/shadow\\//g,\n /\\/shadow-deep\\//g,\n /::shadow/g,\n /\\/deep\\//g\n ];\n\nfunction stylesToCssText(styles, preserveComments) {\n var cssText = '';\n Array.prototype.forEach.call(styles, function(s) {\n cssText += s.textContent + '\\n\\n';\n });\n // strip comments for easier pr ocessing\n if (!preserveComments) {\n cssText = cssText.replace(cssCommentRe , '');\n }\n return cssText;\n}\n\nfunction cssTextToStyle(cssText) {\n var s tyle = document.createElement('style');\n style.textContent = cssText;\n retur n style;\n}\n\nfunction cssToRules(cssText) {\n var style = cssTextToStyle(cssT ext);\n document.head.appendChild(style);\n var rules = [];\n if (style.sheet ) {\n // TODO(sorvell): Firefox throws when accessing the rules of a styleshe et\n // with an @import\n // https://bugzilla.mozilla.org/show_bug.cgi?id= 625013\n try {\n rules = style.sheet.cssRules;\n } catch(e) {\n //\n }\n } else {\n console.warn('sheet not found', style);\n }\n style .parentNode.removeChild(style);\n return rules;\n}\n\nvar frame = document.crea teElement('iframe');\nframe.style.display = 'none';\n\nfunction initFrame() {\n frame.initialized = true;\n document.body.appendChild(frame);\n var doc = fra me.contentDocument;\n var base = doc.createElement('base');\n base.href = docu ment.baseURI;\n doc.head.appendChild(base);\n}\n\nfunction inFrame(fn) {\n if (!frame.initialized) {\n initFrame();\n }\n document.body.appendChild(frame );\n fn(frame.contentDocument);\n document.body.removeChild(frame);\n}\n\n// T ODO(sorvell): use an iframe if the cssText contains an @import to workaround\n// https://code.google.com/p/chromium/issues/detail?id=345114\nvar isChrome = navi gator.userAgent.match('Chrome');\nfunction withCssRules(cssText, callback) {\n if (!callback) {\n return;\n }\n var rules;\n if (cssText.match('@import') && isChrome) {\n var style = cssTextToStyle(cssText);\n inFrame(function( doc) {\n doc.head.appendChild(style.impl);\n rules = style.sheet.cssRu les;\n callback(rules);\n });\n } else {\n rules = cssToRules(cssTex t);\n callback(rules);\n }\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 i f (cssText) {\n getSheet().appendChild(document.createTextNode(cssText));\n }\n}\n\nfunction addOwnSheet(cssText, name) {\n var style = cssTextToStyle(cssT ext);\n style.setAttribute(name, '');\n style.setAttribute(SHIMMED_ATTRIBUTE, '');\n document.head.appendChild(style);\n}\n\nvar SHIM_ATTRIBUTE = 'shim-shado wdom';\nvar SHIMMED_ATTRIBUTE = 'shim-shadowdom-css';\nvar NO_SHIM_ATTRIBUTE = ' no-shim';\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 var originalPars eGeneric = HTMLImports.parser.parseGeneric;\n\n HTMLImports.parser.parseGen eric = function(elt) {\n if (elt[SHIMMED_ATTRIBUTE]) {\n return; \n }\n var style = elt.__importElement || elt;\n if (!style .hasAttribute(SHIM_ATTRIBUTE)) {\n originalParseGeneric.call(this, elt) ;\n return;\n }\n if (elt.__resource) {\n style = elt.ownerDocument.createElement('style');\n style.textContent = urlRe solver.resolveCssText(\n elt.__resource, elt.href);\n } else {\n urlResolver.resolveStyle(style); \n }\n style.textC ontent = ShadowCSS.shimStyle(style);\n style.removeAttribute(SHIM_ATTRIBU TE, '');\n style.setAttribute(SHIMMED_ATTRIBUTE, '');\n style[SHIM MED_ATTRIBUTE] = true;\n // place in document\n if (style.parentNo de !== 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.__impo rtParsed = true;\n this.markParsingComplete(elt);\n }\n\n var h asResource = HTMLImports.parser.hasResource;\n HTMLImports.parser.hasResour ce = function(node) {\n if (node.localName === 'link' && node.rel === 'st ylesheet' &&\n node.hasAttribute(SHIM_ATTRIBUTE)) {\n return (node.__resource);\n } else {\n return hasResource.call(this, n ode);\n }\n }\n\n }\n });\n}\n\n// exports\nscope.ShadowCSS = Sh adowCSS;\n\n})(window.Platform);","/*\n * Copyright 2013 The Polymer Authors. Al l rights reserved.\n * Use of this source code is governed by a BSD-style\n * li cense that can be found in the LICENSE file.\n */\n(function() {\n\n // poor ma n's adapter for template.content on various platform scenarios\n window.templat eContent = window.templateContent || function(inTemplate) {\n return inTempla te.content;\n };\n\n // so we can call wrap/unwrap without testing for ShadowD OMPolyfill\n\n window.wrap = window.unwrap = function(n){\n return n;\n }\n \n addEventListener('DOMContentLoaded', function() {\n if (CustomElements. useNative === false) {\n var originalCreateShadowRoot = Element.prototype.c reateShadowRoot;\n Element.prototype.createShadowRoot = function() {\n var root = originalCreateShadowRoot.call(this);\n CustomElements.watch Shadow(this);\n return root;\n };\n }\n });\n \n window.templa teContent = function(inTemplate) {\n // if MDV exists, it may need to boostra p this template to reveal content\n if (window.HTMLTemplateElement && HTMLTem plateElement.bootstrap) {\n HTMLTemplateElement.bootstrap(inTemplate);\n }\n // fallback when there is no Shadow DOM polyfill, no MDV polyfill, and n o\n // native template support\n if (!inTemplate.content && !inTemplate._c ontent) {\n var frag = document.createDocumentFragment();\n while (inT emplate.firstChild) {\n frag.appendChild(inTemplate.firstChild);\n } \n inTemplate._content = frag;\n }\n return inTemplate.content || inT emplate._content;\n };\n\n})();","/* Any copyright is dedicated to the Public D omain.\n * http://creativecommons.org/publicdomain/zero/1.0/ */\n\n(function(sco pe) {\n 'use strict';\n\n // feature detect for URL constructor\n var hasWork ingUrl = 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 relative = Object.create(nu ll);\n relative['ftp'] = 21;\n relative['file'] = 0;\n relative['gopher'] = 7 0;\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 relativePathDotMapping['.%2e'] = '. .';\n relativePathDotMapping['%2e.'] = '..';\n relativePathDotMapping['%2e%2e' ] = '..';\n\n function isRelativeScheme(scheme) {\n return relative[scheme] !== undefined;\n }\n\n function invalid() {\n clear.call(this);\n this._ isInvalid = true;\n }\n\n function IDNAToASCII(h) {\n if ('' == h) {\n invalid.call(this)\n }\n // XXX\n return h.toLowerCase()\n }\n\n fun ction percentEscape(c) {\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ? `\n [0x22, 0x23, 0 x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) == -1\n ) {\n return c;\n } \n return encodeURIComponent(c);\n }\n\n function percentEscapeQuery(c) {\n // XXX This actually needs to encode c using encoding and then\n // conve rt the bytes one-by-one.\n\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ` (do not escape '?')\n [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) == -1\n ) {\n re turn 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 f unction parse(input, stateOverride, base) {\n function err(message) {\n errors.push(message)\n }\n\n var state = stateOverride || 'scheme start',\ n cursor = 0,\n buffer = '',\n seenAt = false,\n see nBracket = 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 && ALPHANUMERIC.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._isRelative = true;\n }\n if ('file' == this._scheme) {\n state = 'rela tive';\n } else if (this._isRelative && base && base._scheme == this. _scheme) {\n state = 'relative or authority';\n } else i f (this._isRelative) {\n state = 'authority first slash';\n } else {\n state = 'scheme data';\n }\n } e lse 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 poin t not allowed in scheme: ' + c)\n break loop;\n }\n break;\n\n case 'scheme data':\n if ('?' == c) {\n q uery = '?';\n state = 'query';\n } else if ('#' == c) {\n this._fragment = '#';\n state = 'fragment';\n } els e {\n // XXX error handling\n if (EOF != c && '\\t' != c & & '\\n' != c && '\\r' != c) {\n this._schemeData += percentEscape(c );\n }\n }\n break;\n\n case 'no scheme':\n if (!base || !(isRelativeScheme(base._scheme))) {\n err('Mis sing 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[cur sor+1]) {\n state = 'authority ignore slashes';\n } else {\n err('Expected /, got: ' + c);\n state = 'relative';\n continue\n }\n break;\n\n case 'relative':\n this._isRelative = true;\n if ('file' != this._scheme)\n this._scheme = base._scheme;\n if (EOF == c) {\n this._h ost = 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 = b ase._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 = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._fragment = '#';\n state = 'fragment';\n } else {\n var nextC = input[cursor+1 ]\n var nextNextC = input[cursor+2]\n if (\n 'file' != this._scheme || !ALPHA.test(c) ||\n (nextC != ':' && next C != '|') ||\n (EOF != nextNextC && '/' != nextNextC && '\\\\' != n extNextC && '?' != 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 stat e = 'file host';\n } else {\n state = 'authority ignore slashes';\n }\n } else {\n if ('file' != this._sc heme) {\n this._host = base._host;\n this._port = base ._port;\n }\n state = 'relative path';\n contin ue;\n }\n break;\n\n case 'authority first slash':\n if ('/' == c) {\n state = 'authority second slash';\n } else {\n err(\"Expected '/', got: \" + c);\n state = 'a uthority ignore slashes';\n continue;\n }\n break;\ n\n case 'authority second slash':\n state = 'authority ignore s lashes';\n if ('/' != c) {\n err(\"Expected '/', got: \" + c );\n continue;\n }\n break;\n\n case 'author ity ignore slashes':\n if ('/' != c && '\\\\' != c) {\n stat e = 'authority';\n continue;\n } else {\n err('Ex pected authority, got: ' + c);\n }\n break;\n\n case 'a uthority':\n if ('@' == c) {\n if (seenAt) {\n err('@ already seen.');\n buffer += '%40';\n }\n seenAt = true;\n for (var i = 0; i < buffer.length; i++) {\n var cp = buffer[i];\n if ('\\t' == cp || '\\n' == cp || '\ \r' == cp) {\n err('Invalid whitespace in authority.');\n continue;\n }\n // XXX check URL code points\n if (':' == cp && null === this._password) {\n this. _password = '';\n continue;\n }\n var t empC = percentEscape(cp);\n (null !== this._password) ? this._passw ord += tempC : this._username += tempC;\n }\n buffer = ''; \n } else if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c) {\n cursor -= buffer.length;\n buffer = '';\n state = 'host';\n continue;\n } else {\n buffe r += c;\n }\n break;\n\n case 'file host':\n i f (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c) {\n i f (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ':' || buffer[1] == '|')) {\n state = 'relative path';\n } else if (buff er.length == 0) {\n state = 'relative path start';\n } e lse {\n this._host = IDNAToASCII.call(this, buffer);\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 && !seenBracket) {\n / / XXX host parsing\n this._host = IDNAToASCII.call(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 buffer = '';\n state = 'relative path start';\n if (stateOverride) {\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 seenBra cket = 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 ('' != buffer) {\n var temp = parseInt(buffer, 10);\n if (temp != relative[this._sc heme]) {\n this._port = temp + '';\n }\n buffer = '';\n }\n if (stateOverride) {\n b reak loop;\n }\n state = 'relative path 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 break;\n\n case 'relative path':\n if (EOF == c || '/' == c || '\\\\' == c || (!stateO verride && ('?' == c || '#' == c))) {\n if ('\\\\' == c) {\n err('\\\\ not allowed in relative path.');\n }\n var tmp;\n if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {\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._path.push('');\n } else if ('.' != buffer) {\n if ('file' == this._scheme && t his._path.length == 0 && buffer.length == 2 && ALPHA.test(buffer[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 this._fragment = '#'; \n state = 'fragment';\n }\n } else if ('\\t' ! = c && '\\n' != c && '\\r' != c) {\n buffer += percentEscape(c);\n }\n break;\n\n case 'query':\n if (!stateOverrid e && '#' == c) {\n this._fragment = '#';\n state = 'fragme nt';\n } else if (EOF != c && '\\t' != c && '\\n' != c && '\\r' != c) { \n this._query += percentEscapeQuery(c);\n }\n brea k;\n\n case 'fragment':\n if (EOF != c && '\\t' != c && '\\n' != c && '\\r' != c) {\n this._fragment += c;\n }\n br eak;\n }\n\n cursor++;\n }\n }\n\n function clear() {\n this._ scheme = '';\n this._schemeData = '';\n this._username = '';\n this._pa ssword = 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 parameter.\n function j URL(url, base /* , encoding */) {\n if (base !== undefined && !(base instance of jURL))\n base = new jURL(String(base));\n\n this._url = url;\n cle ar.call(this);\n\n var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f] +$/g, '');\n // encoding = encoding || 'utf-8'\n\n parse.call(this, input, null, base);\n }\n\n jURL.prototype = {\n get href() {\n if (this._is Invalid)\n return this._url;\n\n var authority = '';\n if ('' ! = this._username || null != this._password) {\n authority = this._usernam e +\n (null != this._password ? ':' + this._password : '') + '@';\n }\n\n return this.protocol +\n (this._isRelative ? '//' + auth ority + this.host : '') +\n this.pathname + this._query + this._fragmen t;\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._isInv alid || !this._isRelative)\n return;\n parse.call(this, host, 'host' );\n },\n\n get hostname() {\n return this._host;\n },\n set ho stname(hostname) {\n if (this._isInvalid || !this._isRelative)\n ret urn;\n parse.call(this, hostname, 'hostname');\n },\n\n get port() {\ n return this._port;\n },\n set port(port) {\n if (this._isInval id || !this._isRelative)\n return;\n parse.call(this, port, 'port'); \n },\n\n get pathname() {\n return this._isInvalid ? '' : this._isRe lative ?\n '/' + this._path.join('/') : this._schemeData;\n },\n set pathname(pathname) {\n if (this._isInvalid || !this._isRelative)\n return;\n this._path = [];\n parse.call(this, pathname, 'relative p ath start');\n },\n\n get search() {\n return this._isInvalid || !thi s._query || '?' == this._query ?\n '' : this._query;\n },\n set s earch(search) {\n if (this._isInvalid || !this._isRelative)\n return ;\n this._query = '?';\n if ('?' == search[0])\n search = searc h.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._isI nvalid)\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 * Copyright 2013 The Poly mer Authors. All rights reserved.\n * Use of this source code is governed by a B SD-style\n * license that can be found in the LICENSE file.\n */\n\n(function(sc ope) {\n\n// Old versions of iOS do not have bind.\n\nif (!Function.prototype.bi nd) {\n Function.prototype.bind = function(scope) {\n var self = this;\n var args = Array.prototype.slice.call(arguments, 1);\n return function() {\n var args2 = args.slice();\n args2.push.apply(args2, arguments);\n return self.apply(scope, args2);\n };\n };\n}\n\n// mixin\n\n// copy all pr operties from inProps (et al) to inObj\nfunction mixin(inObj/*, inProps, inMoreP rops, ...*/) {\n var obj = inObj || {};\n for (var i = 1; i < arguments.length ; i++) {\n var p = arguments[i];\n try {\n for (var 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 inTarget object\nfunction copyProperty(inName, inSource, inTarget) {\n var pd = getPropertyDescriptor(in Source, inName);\n Object.defineProperty(inTarget, inName, pd);\n}\n\n// get pr operty descriptor for inName on inObject, even if\n// inName exists on some link in inObject's prototype chain\nfunction getPropertyDescriptor(inObject, inName) {\n if (inObject) {\n var pd = Object.getOwnPropertyDescriptor(inObject, in Name);\n return pd || getPropertyDescriptor(Object.getPrototypeOf(inObject), inName);\n }\n}\n\n// export\n\nscope.mixin = mixin;\n\n})(window.Platform);"," // Copyright 2011 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 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 applicable law or agr eed 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 exp ress or implied.\n// See the License for the specific language governing permiss ions and\n// limitations under the License.\n\n(function(scope) {\n\n 'use stri ct';\n\n // polyfill DOMTokenList\n // * add/remove: allow these methods to ta ke multiple classNames\n // * toggle: add a 2nd argument which forces the given state rather\n // than toggling.\n\n var add = DOMTokenList.prototype.add;\n var remove = DOMTokenList.prototype.remove;\n DOMTokenList.prototype.add = fu nction() {\n for (var i = 0; i < arguments.length; i++) {\n add.call(thi s, arguments[i]);\n }\n };\n DOMTokenList.prototype.remove = function() {\n for (var i = 0; i < arguments.length; i++) {\n remove.call(this, argume nts[i]);\n }\n };\n DOMTokenList.prototype.toggle = function(name, bool) {\ n if (arguments.length == 1) {\n bool = !this.contains(name);\n }\n bool ? this.add(name) : this.remove(name);\n };\n DOMTokenList.prototype.swi tch = function(oldName, newName) {\n oldName && this.remove(oldName);\n ne wName && this.add(newName);\n };\n\n // add array() to NodeList, NamedNodeMap, HTMLCollection\n\n var ArraySlice = function() {\n return Array.prototype.s lice.call(this);\n };\n\n var namedNodeMap = (window.NamedNodeMap || window.Mo zNamedAttrMap || {});\n\n NodeList.prototype.array = ArraySlice;\n namedNodeMa p.prototype.array = ArraySlice;\n HTMLCollection.prototype.array = ArraySlice;\ n\n // polyfill performance.now\n\n if (!window.performance) {\n var start = Date.now();\n // only at millisecond precision\n window.performance = {n ow: function(){ return Date.now() - start }};\n }\n\n // polyfill for requestA nimationFrame\n\n if (!window.requestAnimationFrame) {\n window.requestAnima tionFrame = (function() {\n var nativeRaf = window.webkitRequestAnimationFr ame ||\n window.mozRequestAnimationFrame;\n\n return nativeRaf ?\n function(callback) {\n return nativeRaf(function() {\n callback(performance.now());\n });\n } :\n function( cal lback ){\n return window.setTimeout(callback, 1000 / 60);\n };\n })();\n }\n\n if (!window.cancelAnimationFrame) {\n window.cancelAnimat ionFrame = (function() {\n return window.webkitCancelAnimationFrame ||\n window.mozCancelAnimationFrame ||\n function(id) {\n clear Timeout(id);\n };\n })();\n }\n\n // utility\n\n function createDOM (inTagOrNode, inHTML, inAttrs) {\n var dom = typeof inTagOrNode == 'string' ? \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 // i n a script after the import, 2 occurs before 1. We correct this here\n // by sp ecfiically patching Polymer(); this is not necessary under native\n // HTMLImpo rts.\n var elementDeclarations = [];\n\n var polymerStub = function(name, dict ionary) {\n elementDeclarations.push(arguments);\n }\n window.Polymer = pol ymerStub;\n\n // deliver queued delcarations\n scope.deliverDeclarations = fun ction() {\n scope.deliverDeclarations = function() {\n throw 'Possible at tempt to load Polymer twice';\n };\n return elementDeclarations;\n }\n\n // Once DOMContent has loaded, any main document scripts that depend on\n // P olymer() should have run. Calling Polymer() now is an error until\n // polymer is imported.\n window.addEventListener('DOMContentLoaded', function() {\n if (window.Polymer === polymerStub) {\n window.Polymer = function() {\n console.error('You tried to use polymer without loading it first. To ' +\n 'load polymer, <link rel=\"import\" href=\"' + \n 'components/pol ymer/polymer.html\">');\n };\n }\n });\n\n // exports\n scope.createD OM = createDOM;\n\n})(window.Platform);\n","/*\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\n// poor man's adap ter for template.content on various platform scenarios\nwindow.templateContent = window.templateContent || function(inTemplate) {\n return inTemplate.content;\ n};","(function(scope) {\n \n scope = scope || (window.Inspector = {});\n \n var inspector;\n\n window.sinspect = function(inNode, inProxy) {\n if (!ins pector) {\n inspector = window.open('', 'ShadowDOM Inspector', null, true); \n inspector.document.write(inspectorHTML);\n //inspector.document.clo se();\n inspector.api = {\n shadowize: shadowize\n };\n }\n inspect(inNode || wrap(document.body), inProxy);\n };\n\n var inspectorHTML = [\n '<!DOCTYPE html>',\n '<html>',\n ' <head>',\n ' <title>Sh adowDOM Inspector</title>',\n ' <style>',\n ' body {',\n ' }',\n ' pre {',\n ' font: 9pt \"Courier New\", monospace;',\n ' line-height: 1.5em;',\n ' }',\n ' tag {',\n ' color: purple;',\n ' }',\n ' ul {',\n ' margin: 0;',\n ' padding: 0;',\n ' list-style: none;',\n ' }',\n ' li {',\n ' display: inline-block;',\n ' b ackground-color: #f1f1f1;',\n ' padding: 4px 6px;',\n ' bo rder-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 ' </body>',\n '</h tml>'\n ].join('\\n');\n \n var crumbs = [];\n\n var displayCrumbs = functio n() {\n // alias our document\n var d = inspector.document;\n // get cr umbbar\n var cb = d.querySelector('#crumbs');\n // clear crumbs\n cb.te xtContent = '';\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.textConten t = c.localName;\n a.idx = i;\n a.onclick = function(event) {\n var c;\n while (crumbs.length > this.idx) {\n c = crumbs.pop(); \n }\n inspect(c.shadow || c, c);\n event.preventDefault(); \n };\n cb.appendChild(d.createElement('li')).appendChild(a);\n }\n };\n\n var inspect = function(inNode, inProxy) {\n // alias our document\n var d = inspector.document;\n // reset list of drillable nodes\n drill able = [];\n // memoize our crumb proxy\n var proxy = inProxy || inNode;\n crumbs.push(proxy);\n // update crumbs\n displayCrumbs();\n // refl ect local tree\n d.body.querySelector('#tree').innerHTML =\n '<pre>' + output(inNode, inNode.childNodes) + '</pre>';\n };\n\n var forEach = Array.pr ototype.forEach.call.bind(Array.prototype.forEach);\n\n var blacklisted = {STYL E:1, SCRIPT:1, \"#comment\": 1, TEMPLATE: 1};\n var blacklist = function(inNode ) {\n return blacklisted[inNode.nodeName];\n };\n\n var output = function(i nNode, inChildNodes, inIndent) {\n if (blacklist(inNode)) {\n return ''; \n }\n var indent = inIndent || '';\n if (inNode.localName || inNode.no deType == 11) {\n var name = inNode.localName || 'shadow-root';\n //in ChildNodes = ShadowDOM.localNodes(inNode);\n var info = indent + describe(i nNode);\n // if only textNodes\n // TODO(sjmiles): make correct for Sh adowDOM\n /*if (!inNode.children.length && inNode.localName !== 'content' & & inNode.localName !== 'shadow') {\n info += catTextContent(inChildNodes) ;\n } else*/ {\n // TODO(sjmiles): native <shadow> has no reference to its projection\n if (name == 'content' /*|| name == 'shadow'*/) {\n inChildNodes = inNode.getDistributedNodes();\n }\n info += '<br/>';\n var ind = indent + '&nbsp;&nbsp;';\n forEach(inChildNod es, function(n) {\n info += output(n, n.childNodes, ind);\n });\ n info += indent;\n }\n if (!({br:1}[name])) {\n info += '<tag>&lt;/' + name + '&gt;</tag>';\n info += '<br/>';\n }\n } e lse {\n var text = inNode.textContent.trim();\n info = text ? indent + '\"' + text + '\"' + '<br/>' : '';\n }\n return info;\n };\n\n var catT extContent = function(inChildNodes) {\n var info = '';\n forEach(inChildNo des, function(n) {\n info += n.textContent.trim();\n });\n return inf o;\n };\n\n var drillable = [];\n\n var describe = function(inNode) {\n va r tag = '<tag>' + '&lt;';\n var name = inNode.localName || 'shadow-root';\n if (inNode.webkitShadowRoot || inNode.shadowRoot) {\n tag += ' <button id x=\"' + 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(inNod e.attributes, function(a) {\n tag += ' ' + a.name + (a.value ? '=\"' + a. value + '\"' : '');\n });\n }\n tag += '&gt;'+ '</tag>';\n return tag;\n };\n\n // remote api\n\n shadowize = function() {\n var idx = Numbe r(this.attributes.idx.value);\n //alert(idx);\n var node = drillable[idx]; \n if (node) {\n inspect(node.webkitShadowRoot || node.shadowRoot, node) \n } else {\n console.log(\"bad shadowize node\");\n console.dir(th is);\n }\n };\n \n // export\n \n scope.output = output;\n \n})(window. Inspector);\n\n\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(function(scope) {\n\n // TODO(sorvell): It 's desireable to provide a default stylesheet \n // that's convenient for styli ng unresolved elements, but\n // it's cumbersome to have to include this manual ly in every page.\n // It would make sense to put inside some HTMLImport but \n // the HTMLImports polyfill does not allow loading of stylesheets \n // that block rendering. Therefore this injection is tolerated here.\n\n var style = do cument.createElement('style');\n style.textContent = ''\n + 'body {'\n + 'transition: opacity ease-in 0.2s;' \n + ' } \\n'\n + 'body[unreso lved] {'\n + 'opacity: 0; display: block; overflow: hidden;' \n + ' } \\n'\n ;\n var head = document.querySelector('head');\n head.insertBefore (style, head.firstChild);\n\n})(Platform);\n","(function(scope) {\n\n function withDependencies(task, depends) {\n depends = depends || [];\n if (!depend s.map) {\n depends = [depends];\n }\n return task.apply(this, depends .map(marshal));\n }\n\n function module(name, dependsOrFactory, moduleFactory) {\n var module;\n switch (arguments.length) {\n case 0:\n ret urn;\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 ret urn modules[name];\n }\n\n var modules = {};\n\n function using(depends, task ) {\n HTMLImports.whenImportsReady(function() {\n withDependencies(task, depends);\n });\n };\n\n // exports\n\n scope.marshal = marshal;\n scope .module = module;\n scope.using = using;\n\n})(window);","/*\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(func tion(scope) {\n\nvar iterations = 0;\nvar callbacks = [];\nvar twiddle = documen t.createTextNode('');\n\nfunction endOfMicrotask(callback) {\n twiddle.textCont ent = iterations++;\n callbacks.push(callback);\n}\n\nfunction atEndOfMicrotask () {\n while (callbacks.length) {\n callbacks.shift()();\n }\n}\n\nnew (win dow.MutationObserver || JsMutationObserver)(atEndOfMicrotask)\n .observe(twiddl e, {characterData: true})\n ;\n\n// exports\n\nscope.endOfMicrotask = endOfMicr otask;\n\n})(Platform);\n\n","/*\n * Copyright 2013 The Polymer Authors. All rig hts 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 urlRes olver = {\n resolveDom: function(root, url) {\n url = url || root.ownerDocum ent.baseURI;\n this.resolveAttributes(root, url);\n this.resolveStyles(roo t, url);\n // handle template.content\n var templates = root.querySelector All('template');\n if (templates) {\n for (var i = 0, l = templates.leng th, t; (i < l) && (t = templates[i]); i++) {\n if (t.content) {\n this.resolveDom(t.content, url);\n }\n }\n }\n },\n resolveTe mplate: function(template) {\n this.resolveDom(template.content, template.own erDocument.baseURI);\n },\n resolveStyles: function(root, url) {\n var styl es = root.querySelectorAll('style');\n if (styles) {\n for (var i = 0, l = styles.length, s; (i < l) && (s = styles[i]); i++) {\n this.resolveSty le(s, url);\n }\n }\n },\n resolveStyle: function(style, url) {\n u rl = url || style.ownerDocument.baseURI;\n style.textContent = this.resolveCs sText(style.textContent, url);\n },\n resolveCssText: function(cssText, baseUr l) {\n cssText = replaceUrlsInCssText(cssText, baseUrl, CSS_URL_REGEXP);\n return replaceUrlsInCssText(cssText, baseUrl, CSS_IMPORT_REGEXP);\n },\n reso lveAttributes: function(root, url) {\n if (root.hasAttributes && root.hasAttr ibutes()) {\n this.resolveElementAttributes(root, url);\n }\n // sear ch 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 = nodes[i]); i++) {\n this.resolveElementAttributes(n, u rl);\n }\n }\n },\n resolveElementAttributes: function(node, url) {\n url = url || node.ownerDocument.baseURI;\n URL_ATTRS.forEach(function(v) { \n var attr = node.attributes[v];\n if (attr && attr.value &&\n (attr.value.search(URL_TEMPLATE_SEARCH) < 0)) {\n var urlPath = resolve RelativeUrl(url, attr.value);\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', 'acti on'];\nvar URL_ATTRS_SELECTOR = '[' + URL_ATTRS.join('],[') + ']';\nvar URL_TEMP LATE_SEARCH = '{{.*}}';\n\nfunction replaceUrlsInCssText(cssText, baseUrl, regex p) {\n return cssText.replace(regexp, function(m, pre, url, post) {\n var ur lPath = url.replace(/[\"']/g, '');\n urlPath = resolveRelativeUrl(baseUrl, ur lPath);\n return pre + '\\'' + urlPath + '\\'' + post;\n });\n}\n\nfunction resolveRelativeUrl(baseUrl, url) {\n var u = new URL(url, baseUrl);\n return m akeDocumentRelPath(u.href);\n}\n\nfunction makeDocumentRelPath(url) {\n var roo t = document.baseURI;\n var u = new URL(url, root);\n if (u.host === root.host && u.port === root.port &&\n u.protocol === root.protocol) {\n return m akeRelPath(root.pathname, u.pathname);\n } else {\n return url;\n }\n}\n\n/ / make a relative path from source to target\nfunction makeRelPath(source, targe t) {\n var s = source.split('/');\n var t = target.split('/');\n while (s.len gth && 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\nscope.urlResolver = urlResolver;\n\n})(Platform);\n","/*\n * Copyright 2012 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 fi le.\n */\n\n(function(global) {\n\n var registrationsTable = new WeakMap();\n\n // We use setImmediate or postMessage for our future callback.\n var setImmed iate = window.msSetImmediate;\n\n // Use post message to emulate setImmediate.\ n if (!setImmediate) {\n var setImmediateQueue = [];\n var sentinel = Str ing(Math.random());\n window.addEventListener('message', function(e) {\n if (e.data === sentinel) {\n var queue = setImmediateQueue;\n set ImmediateQueue = [];\n queue.forEach(function(func) {\n func();\ n });\n }\n });\n setImmediate = function(func) {\n setIm mediateQueue.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 = false;\n\n // Keep track of observers that needs to be noti fied next time.\n var scheduledObservers = [];\n\n /**\n * Schedules |dispat chCallback| to be called in the future.\n * @param {MutationObserver} observer \n */\n function scheduleCallback(observer) {\n scheduledObservers.push(ob server);\n if (!isScheduled) {\n isScheduled = true;\n setImmediate (dispatchCallbacks);\n }\n }\n\n function wrapIfNeeded(node) {\n return window.ShadowDOMPolyfill &&\n window.ShadowDOMPolyfill.wrapIfNeeded(node) ||\n node;\n }\n\n function dispatchCallbacks() {\n // http://dom.s pec.whatwg.org/#mutation-observers\n\n isScheduled = false; // Used to allow a new setImmediate call above.\n\n var observers = scheduledObservers;\n s cheduledObservers = [];\n // Sort observers based on their creation UID (incr emental).\n observers.sort(function(o1, o2) {\n return o1.uid_ - o2.uid_ ;\n });\n\n var anyNonEmpty = false;\n observers.forEach(function(obser ver) {\n\n // 2.1, 2.2\n var queue = observer.takeRecords();\n // 2.3. Remove all transient registered observers whose observer is mo.\n rem oveTransientObserversFor(observer);\n\n // 2.4\n if (queue.length) {\n observer.callback_(queue, observer);\n anyNonEmpty = true;\n }\n });\n\n // 3.\n if (anyNonEmpty)\n dispatchCallbacks();\n }\ n\n function removeTransientObserversFor(observer) {\n observer.nodes_.forEa ch(function(node) {\n var registrations = registrationsTable.get(node);\n if (!registrations)\n return;\n registrations.forEach(function(r egistration) {\n if (registration.observer === observer)\n regis tration.removeTransientObservers();\n });\n });\n }\n\n /**\n * This function is used for the \"For each registered observer observer (with\n * ob server's options as options) in target's list of registered observers,\n * run these substeps:\" and the \"For each ancestor ancestor of target, and for\n * each registered observer observer (with options options) in ancestor's list\n * of registered observers, run these substeps:\" part of the algorithms. The\n * |options.subtree| is checked to ensure that the callback is called\n * cor rectly.\n *\n * @param {Node} target\n * @param {function(MutationObserver Init):MutationRecord} callback\n */\n function forEachAncestorAndObserverEnqu eueRecord(target, callback) {\n for (var node = target; node; node = node.par entNode) {\n var registrations = registrationsTable.get(node);\n\n if (registrations) {\n for (var j = 0; j < registrations.length; j++) {\n var registration = registrations[j];\n var options = registratio n.options;\n\n // Only target ignores subtree.\n if (node !== target && !options.subtree)\n continue;\n\n var record = cal lback(options);\n if (record)\n registration.enqueue(record) ;\n }\n }\n }\n }\n\n var uidCounter = 0;\n\n /**\n * The cl ass that maps to the DOM MutationObserver interface.\n * @param {Function} cal lback.\n * @constructor\n */\n function JsMutationObserver(callback) {\n this.callback_ = callback;\n this.nodes_ = [];\n this.records_ = [];\n this.uid_ = ++uidCounter;\n }\n\n JsMutationObserver.prototype = {\n obser ve: function(target, options) {\n target = wrapIfNeeded(target);\n\n / / 1.1\n if (!options.childList && !options.attributes && !options.character Data ||\n\n // 1.2\n options.attributeOldValue && !options.att ributes ||\n\n // 1.3\n options.attributeFilter && options.att ributeFilter.length &&\n !options.attributes ||\n\n // 1.4 \n options.characterDataOldValue && !options.characterData) {\n\n throw new SyntaxError();\n }\n\n var registrations = registrationsTa ble.get(target);\n if (!registrations)\n registrationsTable.set(targ et, registrations = []);\n\n // 2\n // If target's list of registered observers already includes a registered\n // observer associated with the c ontext object, replace that registered\n // observer's options with options .\n var registration;\n for (var i = 0; i < registrations.length; i++) {\n if (registrations[i].observer === this) {\n registration = registrations[i];\n registration.removeListeners();\n registra tion.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 add target to context object's list of nodes on which it\n // is registered.\n if (!registration) {\n registration = new R egistration(this, target, options);\n registrations.push(registration);\n this.nodes_.push(target);\n }\n\n registration.addListeners(); \n },\n\n disconnect: function() {\n this.nodes_.forEach(function(nod e) {\n var registrations = registrationsTable.get(node);\n for (va r i = 0; i < registrations.length; i++) {\n var registration = registra tions[i];\n if (registration.observer === this) {\n registra tion.removeListeners();\n registrations.splice(i, 1);\n // Each node can only have one registered observer associated with\n // this observer.\n break;\n }\n }\n }, this);\n this.records_ = [];\n },\n\n takeRecords: function() {\n var copy OfRecords = this.records_;\n this.records_ = [];\n return copyOfRecord s;\n }\n };\n\n /**\n * @param {string} type\n * @param {Node} target\n * @constructor\n */\n function MutationRecord(type, target) {\n this.ty pe = type;\n this.target = target;\n this.addedNodes = [];\n this.remov edNodes = [];\n this.previousSibling = null;\n this.nextSibling = null;\n this.attributeName = null;\n this.attributeNamespace = null;\n this.old Value = null;\n }\n\n function copyMutationRecord(original) {\n var record = new MutationRecord(original.type, original.target);\n record.addedNodes = o riginal.addedNodes.slice();\n record.removedNodes = original.removedNodes.sli ce();\n record.previousSibling = original.previousSibling;\n record.nextSi bling = original.nextSibling;\n record.attributeName = original.attributeName ;\n record.attributeNamespace = original.attributeNamespace;\n record.oldV alue = original.oldValue;\n return record;\n };\n\n // We keep track of the two (possibly one) records used in a single mutation.\n var currentRecord, rec ordWithOldValue;\n\n /**\n * Creates a record without |oldValue| and caches i t as |currentRecord| for\n * later use.\n * @param {string} oldValue\n * @ return {MutationRecord}\n */\n function getRecord(type, target) {\n return currentRecord = new MutationRecord(type, target);\n }\n\n /**\n * Gets or c reates a record with |oldValue| based in the |currentRecord|\n * @param {strin g} oldValue\n * @return {MutationRecord}\n */\n function getRecordWithOldVa lue(oldValue) {\n if (recordWithOldValue)\n return recordWithOldValue;\n recordWithOldValue = copyMutationRecord(currentRecord);\n recordWithOldVa lue.oldValue = oldValue;\n return recordWithOldValue;\n }\n\n function clea rRecords() {\n currentRecord = recordWithOldValue = undefined;\n }\n\n /**\ n * @param {MutationRecord} record\n * @return {boolean} Whether the record represents a record from the current\n * mutation event.\n */\n function re cordRepresentsCurrentMutation(record) {\n return record === recordWithOldValu e || record === currentRecord;\n }\n\n /**\n * Selects which record, if any, to replace the last record in the queue.\n * This returns |null| if no record should be replaced.\n *\n * @param {MutationRecord} lastRecord\n * @param {MutationRecord} newRecord\n * @param {MutationRecord}\n */\n function sel ectRecord(lastRecord, newRecord) {\n if (lastRecord === newRecord)\n ret urn lastRecord;\n\n // Check if the the record we are adding represents the s ame record. If\n // so, we keep the one with the oldValue in it.\n if (rec ordWithOldValue && recordRepresentsCurrentMutation(lastRecord))\n return re cordWithOldValue;\n\n return null;\n }\n\n /**\n * Class used to represen t a registered observer.\n * @param {MutationObserver} observer\n * @param { Node} target\n * @param {MutationObserverInit} options\n * @constructor\n */\n function Registration(observer, target, options) {\n this.observer = ob server;\n this.target = target;\n this.options = options;\n this.transi entObservedNodes = [];\n }\n\n Registration.prototype = {\n enqueue: functi on(record) {\n var records = this.observer.records_;\n var length = re cords.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 i f (records.length > 0) {\n var lastRecord = records[length - 1];\n var recordToReplaceLast = selectRecord(lastRecord, record);\n if (record ToReplaceLast) {\n records[length - 1] = recordToReplaceLast;\n return;\n }\n } else {\n scheduleCallback(this.observer);\n }\n\n records[length] = record;\n },\n\n addListeners: function () {\n this.addListeners_(this.target);\n },\n\n addListeners_: funct ion(node) {\n var options = this.options;\n if (options.attributes)\n node.addEventListener('DOMAttrModified', this, true);\n\n if (option s.characterData)\n node.addEventListener('DOMCharacterDataModified', this , true);\n\n if (options.childList)\n node.addEventListener('DOMNode Inserted', this, true);\n\n if (options.childList || options.subtree)\n node.addEventListener('DOMNodeRemoved', this, true);\n },\n\n removeLi steners: function() {\n this.removeListeners_(this.target);\n },\n\n removeListeners_: function(node) {\n var options = this.options;\n if (options.attributes)\n node.removeEventListener('DOMAttrModified', this, true);\n\n if (options.characterData)\n node.removeEventListener('DO MCharacterDataModified', this, true);\n\n if (options.childList)\n n ode.removeEventListener('DOMNodeInserted', this, true);\n\n if (options.chi ldList || options.subtree)\n node.removeEventListener('DOMNodeRemoved', t his, true);\n },\n\n /**\n * Adds a transient observer on node. The tr ansient 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.addListeners_(node);\n this.transie ntObservedNodes.push(node);\n var registrations = registrationsTable.get(no de);\n if (!registrations)\n registrationsTable.set(node, registrati ons = []);\n\n // We know that registrations does not contain this because we already\n // checked if node === this.target.\n registrations.push( this);\n },\n\n removeTransientObservers: function() {\n var transien tObservedNodes = this.transientObservedNodes;\n this.transientObservedNodes = [];\n\n transientObservedNodes.forEach(function(node) {\n // Tran sient observers are never added to the target.\n this.removeListeners_(no de);\n\n var registrations = registrationsTable.get(node);\n for ( var i = 0; i < registrations.length; i++) {\n if (registrations[i] === this) {\n registrations.splice(i, 1);\n // Each node can o nly have one registered observer associated with\n // this observer.\ n break;\n }\n }\n }, this);\n },\n\n hand leEvent: function(e) {\n // Stop propagation since we are managing the prop agation manually.\n // This means that other mutation events on the page wi ll not work\n // correctly but that is by design.\n e.stopImmediatePro pagation();\n\n switch (e.type) {\n case 'DOMAttrModified':\n // http://dom.spec.whatwg.org/#concept-mo-queue-attributes\n\n var n ame = e.attrName;\n var namespace = e.relatedNode.namespaceURI;\n var target = e.target;\n\n // 1.\n var record = new getRec ord('attributes', target);\n record.attributeName = name;\n re cord.attributeNamespace = namespace;\n\n // 2.\n var oldValue =\n e.attrChange === MutationEvent.ADDITION ? null : e.prevValue;\n \n forEachAncestorAndObserverEnqueueRecord(target, function(options) {\ n // 3.1, 4.2\n if (!options.attributes)\n re turn;\n\n // 3.2, 4.3\n if (options.attributeFilter && opt ions.attributeFilter.length &&\n options.attributeFilter.indexOf( name) === -1 &&\n options.attributeFilter.indexOf(namespace) === -1) {\n return;\n }\n // 3.3, 4.4\n if (options.attributeOldValue)\n return getRecordWithOldValue(old Value);\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', t arget);\n\n // 2.\n var oldValue = e.prevValue;\n\n\n forEachAncestorAndObserverEnqueueRecord(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 getRecordWithOldValue(oldValue);\n\n // 3.3, 4.4\n return record;\n });\n\n break;\n\n case 'DOMNo deRemoved':\n this.addTransientObserver(e.target);\n // Fall t hrough.\n case 'DOMNodeInserted':\n // http://dom.spec.whatwg.or g/#concept-mo-queue-childlist\n var target = e.relatedNode;\n var changedNode = e.target;\n var addedNodes, removedNodes;\n if (e.type === 'DOMNodeInserted') {\n addedNodes = [changedNode];\n removedNodes = [];\n } else {\n\n addedNodes = []; \n removedNodes = [changedNode];\n }\n var previous Sibling = changedNode.previousSibling;\n var nextSibling = changedNode. nextSibling;\n\n // 1.\n var record = getRecord('childList', t arget);\n record.addedNodes = addedNodes;\n record.removedNode s = removedNodes;\n record.previousSibling = previousSibling;\n record.nextSibling = nextSibling;\n\n forEachAncestorAndObserverEnque ueRecord(target, function(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.JsMutationObserver = JsMutationObserver;\n\n if (!global.MutationO bserver)\n global.MutationObserver = JsMutationObserver;\n\n\n})(this);\n","/ *\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this s ource code is governed by a BSD-style\n * license that can be found in the LICEN SE file.\n */\nwindow.HTMLImports = window.HTMLImports || {flags:{}};","/*\n * C opyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source c ode is governed by a BSD-style\n * license that can be found in the LICENSE file .\n */\n\n(function(scope) {\n\n // imports\n var path = scope.path;\n var xh r = scope.xhr;\n var flags = scope.flags;\n\n // TODO(sorvell): this loader su pports a dynamic list of urls\n // and an oncomplete callback that is called wh en the loader is done.\n // The polyfill currently does *not* need this dynamis m or the onComplete\n // concept. Because of this, the loader could be simplifi ed quite a bit.\n var Loader = function(onLoad, onComplete) {\n this.cache = {};\n this.onload = onLoad;\n this.oncomplete = onComplete;\n this.inf light = 0;\n this.pending = {};\n };\n\n Loader.prototype = {\n addNodes : function(nodes) {\n // number of transactions to complete\n this.inf light += nodes.length;\n // commence transactions\n for (var i=0, l=no des.length, n; (i<l) && (n=nodes[i]); i++) {\n this.require(n);\n }\ n // anything to do?\n this.checkDone();\n },\n addNode: functio n(node) {\n // number of transactions to complete\n this.inflight++;\n // commence transactions\n this.require(node);\n // anything to do?\n this.checkDone();\n },\n require: function(elt) {\n var ur l = elt.src || elt.href;\n // ensure we have a standard url that can be use d\n // reliably for deduping.\n // TODO(sjmiles): ad-hoc\n elt.__ nodeUrl = url;\n // deduplication\n if (!this.dedupe(url, elt)) {\n // fetch this resource\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 i f (this.cache[url]) {\n this.onload(url, elt, this.cache[url]);\n // finished this transaction\n this.tail();\n // don't need fetch\ n return true;\n }\n // first node waiting for inUrl\n thi s.pending[url] = [elt];\n // need fetch (not a dupe)\n return false;\n },\n fetch: function(url, elt) {\n flags.load && console.log('fetch' , url, elt);\n if (url.match(/^data:/)) {\n // Handle Data URI Schem e\n var pieces = url.split(',');\n var header = pieces[0];\n var body = pieces[1];\n if(header.indexOf(';base64') > -1) {\n body = atob(body);\n } else {\n body = decodeURIComponent(body) ;\n }\n setTimeout(function() {\n this.receive(url, elt , null, body);\n }.bind(this), 0);\n } else {\n var receiveXh r = function(err, resource) {\n this.receive(url, elt, err, resource);\ n }.bind(this);\n xhr.load(url, receiveXhr);\n // TODO(sorv ell): blocked on)\n // https://code.google.com/p/chromium/issues/detail?i d=257221\n // xhr'ing for a document makes scripts in imports runnable; o therwise\n // they are not; however, it requires that we have doctype=htm l 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, receiveXhr);\n }\n */\n }\n },\n receive: function(url, elt, err, resource) {\n this.cache[url] = resource;\n v ar $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.oncomp lete();\n }\n }\n };\n\n xhr = xhr || {\n async: true,\n ok: fun ction(request) {\n return (request.status >= 200 && request.status < 300)\n || (request.status === 304)\n || (request.status === 0);\n },\n load: function(url, next, nextContext) {\n var request = new XMLHt tpRequest();\n if (scope.flags.debug || scope.flags.bust) {\n url += '?' + Math.random();\n }\n request.open('GET', url, xhr.async);\n request.addEventListener('readystatechange', function(e) {\n if (reques t.readyState === 4) {\n next.call(nextContext, !xhr.ok(request) && requ est,\n request.response || request.responseText, url);\n }\n });\n request.send();\n return request;\n },\n loadDocumen t: function(url, next, nextContext) {\n this.load(url, next, nextContext).r esponseType = 'document';\n }\n };\n\n // exports\n scope.xhr = xhr;\n sc ope.Loader = Loader;\n\n})(window.HTMLImports);\n","/*\n * Copyright 2013 The Po lymer 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\nvar IMPORT_LINK_TYPE = 'import';\nvar flags = scope.flags;\nvar isIe = /Trident/.test(navigator.userAgent);\n// TODO(sorvell): SD polyfill intrusion \nvar mainDoc = window.ShadowDOMPolyfill ? \n window.ShadowDOMPolyfill.wrapIf Needed(document) : document;\n\n// importParser\n// highlander object to manage parsing of imports\n// parses import related elements\n// and ensures proper par se order\n// parse order is enforced by crawling the tree and monitoring which e lements\n// have been parsed; async parsing is also supported.\n\n// highlander object for parsing a document tree\nvar importParser = {\n // parse selectors f or main document elements\n documentSelectors: 'link[rel=' + IMPORT_LINK_TYPE + ']',\n // parse selectors for import document elements\n importsSelectors: [\ n 'link[rel=' + IMPORT_LINK_TYPE + ']',\n 'link[rel=stylesheet]',\n 'st yle',\n 'script:not([type])',\n 'script[type=\"text/javascript\"]'\n ].jo in(','),\n map: {\n link: 'parseLink',\n script: 'parseScript',\n styl e: 'parseStyle'\n },\n // try to parse the next import in the tree\n parseNex t: function() {\n var next = this.nextToParse();\n if (next) {\n this .parse(next);\n }\n },\n parse: function(elt) {\n if (this.isParsed(elt) ) {\n flags.parse && console.log('[%s] is already parsed', elt.localName);\ n return;\n }\n var fn = this[this.map[elt.localName]];\n if (fn) {\n this.markParsing(elt);\n fn.call(this, elt);\n }\n },\n // on ly 1 element may be parsed at a time; parsing is async so, each\n // parsing im plementation must inform the system that parsing is complete\n // via markParsi ngComplete.\n markParsing: function(elt) {\n flags.parse && console.log('par sing', elt);\n this.parsingElement = elt;\n },\n markParsingComplete: funct ion(elt) {\n elt.__importParsed = true;\n if (elt.__importElement) {\n elt.__importElement.__importParsed = true;\n }\n this.parsingElement = n ull;\n flags.parse && console.log('completed', elt);\n this.parseNext();\n },\n parseImport: function(elt) {\n elt.import.__importParsed = true;\n // TODO(sorvell): consider if there's a better way to do this;\n // expose a n imports parsing hook; this is needed, for example, by the\n // CustomElemen ts polyfill.\n if (HTMLImports.__importsParsingHook) {\n HTMLImports.__i mportsParsingHook(elt);\n }\n // fire load event\n if (elt.__resource) {\n elt.dispatchEvent(new CustomEvent('load', {bubbles: false})); \n } else {\n elt.dispatchEvent(new CustomEvent('error', {bubbles: false}));\n }\n // TODO(sorvell): workaround for Safari addEventListener not working\ n // for elements not in the main document.\n if (elt.__pending) {\n var fn;\n while (elt.__pending.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.parseG eneric(linkElt);\n }\n },\n parseStyle: function(elt) {\n // TODO(sorvel l): style element load event can just not fire so clone styles\n var src = el t;\n elt = cloneStyle(elt);\n elt.__importElement = src;\n this.parseGe neric(elt);\n },\n parseGeneric: function(elt) {\n this.trackElement(elt);\ n document.head.appendChild(elt);\n },\n // tracks when a loadable element has loaded\n trackElement: function(elt, callback) {\n var self = this;\n var done = function(e) {\n if (callback) {\n callback(e);\n }\ n self.markParsingComplete(elt);\n };\n elt.addEventListener('load', done);\n elt.addEventListener('error', done);\n\n // NOTE: IE does not fir e \"load\" event for styles that have already loaded\n // This is in violatio n of the spec, so we try our hardest to work around it\n if (isIe && elt.loca lName === 'style') {\n var fakeLoad = false;\n // If there's not @impo rt in the textContent, assume it has loaded\n if (elt.textContent.indexOf(' @import') == -1) {\n fakeLoad = true;\n // if we have a sheet, we ha ve been parsed\n } else if (elt.sheet) {\n fakeLoad = true;\n var csr = elt.sheet.cssRules;\n var len = csr ? csr.length : 0;\n // search the rules 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 @import has resolved, fake the load\n fakeLoad = fakeLoad && Boolean(r.styleSheet);\n }\n }\n }\n // dispatch a fake load event and continue parsing\n if (fakeLoad) {\n elt.dispatc hEvent(new CustomEvent('load', {bubbles: false}));\n }\n }\n },\n // N OTE: execute scripts by injecting them and watching for the load/error\n // eve nt. Inline scripts are handled via dataURL's because browsers tend to\n // prov ide correct parsing errors in this case. If this has any compatibility\n // iss ues, we can switch to injecting the inline script with textContent.\n // Script s with dataURL's do not appear to generate load events and therefore\n // we as sume they execute synchronously.\n parseScript: function(scriptElt) {\n var script = document.createElement('script');\n script.__importElement = scriptE lt;\n script.src = scriptElt.src ? scriptElt.src : \n generateScriptDa taUrl(scriptElt);\n scope.currentScript = scriptElt;\n this.trackElement(s cript, function(e) {\n script.parentNode.removeChild(script);\n scope. currentScript = null; \n });\n document.head.appendChild(script);\n },\n // determine the next element in the tree which should be parsed\n nextToPars e: function() {\n return !this.parsingElement && this.nextToParseInDoc(mainDo c);\n },\n nextToParseInDoc: function(doc, link) {\n var nodes = doc.queryS electorAll(this.parseSelectorsForNode(doc));\n for (var i=0, l=nodes.length, p=0, n; (i<l) && (n=nodes[i]); i++) {\n if (!this.isParsed(n)) {\n i f (this.hasResource(n)) {\n return nodeIsImport(n) ? this.nextToParseIn Doc(n.import, n) : n;\n } else {\n return;\n }\n }\n }\n // all nodes have been parsed, ready to parse import, if any\n ret urn 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.documentSelectors : this.importsSelecto rs;\n },\n isParsed: function(node) {\n return node.__importParsed;\n },\n hasResource: function(node) {\n if (nodeIsImport(node) && !node.import) {\n return false;\n }\n return true;\n }\n};\n\nfunction nodeIsImport(e lt) {\n return (elt.localName === 'link') && (elt.rel === IMPORT_LINK_TYPE);\n} \n\nfunction generateScriptDataUrl(script) {\n var scriptContent = generateScri ptContent(script), b64;\n try {\n b64 = btoa(scriptContent);\n } catch(e) { \n b64 = btoa(unescape(encodeURIComponent(scriptContent)));\n console.warn ('Script contained non-latin characters that were forced ' +\n 'to latin. S ome characters may be wrong.', script);\n }\n return 'data:text/javascript;bas e64,' + b64;\n}\n\nfunction generateScriptContent(script) {\n return script.tex tContent + generateSourceMapHint(script);\n}\n\n// calculate source map hint\nfu nction generateSourceMapHint(script) {\n var moniker = script.__nodeUrl;\n if (!moniker) {\n moniker = script.ownerDocument.baseURI;\n // there could be more than one script this url\n var tag = '[' + Math.floor((Math.random()+1) *1000) + ']';\n // TODO(sjmiles): Polymer hack, should be pluggable if we nee d to allow \n // this sort of thing\n var matches = script.textContent.mat ch(/Polymer\\(['\"]([^'\"]*)/);\n tag = matches && matches[1] || tag;\n // tag the moniker\n moniker += '/' + tag + '.js';\n }\n return '\\n//# sourc eURL=' + moniker + '\\n';\n}\n\n// style/stylesheet handling\n\n// clone style w ith proper path resolution for main document\n// NOTE: styles are the only eleme nts that require direct path fixup.\nfunction cloneStyle(style) {\n var clone = style.ownerDocument.createElement('style');\n clone.textContent = style.textCo ntent;\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 fi xup url's in url() and @import.\nvar CSS_URL_REGEXP = /(url\\()([^)]*)(\\))/g;\n var CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url\\())([^;]*)(;)/g;\n\nvar path = {\ n resolveUrlsInStyle: function(style) {\n var doc = style.ownerDocument;\n var resolver = doc.createElement('a');\n style.textContent = this.resolveUr lsInCssText(style.textContent, resolver);\n return style; \n },\n resolveU rlsInCssText: function(cssText, urlObj) {\n var r = this.replaceUrls(cssText, urlObj, CSS_URL_REGEXP);\n r = this.replaceUrls(r, urlObj, CSS_IMPORT_REGEXP );\n return r;\n },\n replaceUrls: function(text, urlObj, regexp) {\n re turn text.replace(regexp, function(m, pre, url, post) {\n var urlPath = url .replace(/[\"']/g, '');\n urlObj.href = urlPath;\n urlPath = urlObj.hr ef;\n return pre + '\\'' + urlPath + '\\'' + post;\n }); \n }\n}\n\n // exports\nscope.parser = importParser;\nscope.path = path;\nscope.isIE = isIe; \n\n})(HTMLImports);\n","/*\n * Copyright 2013 The Polymer Authors. All rights r eserved.\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// TODO(sorvell): SD p olyfill intrusion\nvar mainDoc = window.ShadowDOMPolyfill ? \n ShadowDOMPolyf ill.wrapIfNeeded(document) : document;\n\nif (!useNative) {\n\n // imports\n v ar xhr = scope.xhr;\n var Loader = scope.Loader;\n var parser = scope.parser;\ n\n // importer\n // highlander object to manage loading of imports\n\n // fo r any document, importer:\n // - loads any linked import documents (with dedupi ng)\n\n var importer = {\n documents: {},\n // nodes to load in the mian document\n documentPreloadSelectors: 'link[rel=' + IMPORT_LINK_TYPE + ']',\n // nodes to load in imports\n importsPreloadSelectors: [\n 'link[rel= ' + IMPORT_LINK_TYPE + ']'\n ].join(','),\n loadNode: function(node) {\n importLoader.addNode(node);\n },\n // load all loadable elements withi n the parent element\n loadSubtree: function(parent) {\n var nodes = thi s.marshalNodes(parent);\n // add these nodes to loader's queue\n impor tLoader.addNodes(nodes);\n },\n marshalNodes: function(parent) {\n // all preloadable nodes in inDocument\n return parent.querySelectorAll(this. loadSelectorsForNode(parent));\n },\n // find the proper set of load selec tors for a given node\n loadSelectorsForNode: function(node) {\n var doc = node.ownerDocument || node;\n return doc === mainDoc ? this.documentPrel oadSelectors :\n this.importsPreloadSelectors;\n },\n loaded: fun ction(url, elt, resource) {\n flags.load && console.log('loaded', url, elt) ;\n // store generic resource\n // TODO(sorvell): fails for nodes insi de <template>.content\n // see https://code.google.com/p/chromium/issues/de tail?id=249381.\n elt.__resource = resource;\n if (isDocumentLink(elt) ) {\n var doc = this.documents[url];\n // if we've never seen a do cument at this url\n if (!doc) {\n // generate an HTMLDocument f rom data\n doc = makeDocument(resource, url);\n doc.__importLi nk = elt;\n // TODO(sorvell): we cannot use MO to detect parsed nodes b ecause\n // SD polyfill does not report these as mutations.\n this.bootDocument(doc);\n // cache document\n this.documents[u rl] = doc;\n }\n // don't store import record until we're actually loaded\n // store document resource\n elt.import = doc;\n }\ n parser.parseNext();\n },\n bootDocument: function(doc) {\n thi s.loadSubtree(doc);\n this.observe(doc);\n parser.parseNext();\n }, \n loadedAll: function() {\n parser.parseNext();\n }\n };\n\n // lo ader 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 instanceof Document)) {\n doc = docu ment.implementation.createHTMLDocument(IMPORT_LINK_TYPE);\n }\n // cache t he new document's source url\n doc._URL = url;\n // establish a relative p ath via <base>\n var base = doc.createElement('base');\n base.setAttribute ('href', url);\n // add baseURI support to browsers (IE) that lack it.\n i f (!doc.baseURI) {\n doc.baseURI = url;\n }\n // ensure UTF-8 charset \n var meta = doc.createElement('meta');\n meta.setAttribute('charset', 'u tf-8');\n\n doc.head.appendChild(meta);\n doc.head.appendChild(base);\n // install HTML last as it may trigger CustomElement upgrades\n // TODO(sjmi les): problem wrt to template boostrapping below,\n // template bootstrapping must (?) come before element upgrade\n // but we cannot bootstrap templates until they are in a document\n // which is too late\n if (!(resource insta nceof Document)) {\n // install html\n doc.body.innerHTML = resource;\ n }\n // TODO(sorvell): ideally this code is not aware of Template polyfil l,\n // but for now the polyfill needs help to bootstrap these templates\n if (window.HTMLTemplateElement && HTMLTemplateElement.bootstrap) {\n HTMLT emplateElement.bootstrap(doc);\n }\n return doc;\n }\n} else {\n // do n othing if using native imports\n var importer = {};\n}\n\n// NOTE: We cannot po lyfill document.currentScript because it's not possible\n// both to override and maintain the ability to capture the native value;\n// therefore we choose to ex pose _currentScript both when native imports\n// and the polyfill are in use.\nv ar currentScriptDescriptor = {\n get: function() {\n return HTMLImports.curr entScript || document.currentScript;\n },\n configurable: true\n};\n\nObject.d efineProperty(document, '_currentScript', currentScriptDescriptor);\nObject.defi neProperty(mainDoc, '_currentScript', currentScriptDescriptor);\n\n// Polyfill d ocument.baseURI for browsers without it.\nif (!document.baseURI) {\n var baseUR IDescriptor = {\n get: function() {\n return window.location.href;\n },\n configurable: true\n };\n\n Object.defineProperty(document, 'baseURI', baseURIDescriptor);\n Object.defineProperty(mainDoc, 'baseURI', baseURIDescrip tor);\n}\n\n// call a callback when all HTMLImports in the document at call (or at least\n// document ready) time have loaded.\n// 1. ensure the document is in a ready state (has dom), then \n// 2. watch for loading of imports and call cal lback when done\nfunction whenImportsReady(callback, doc) {\n doc = doc || main Doc;\n // if document is loading, wait and try again\n whenDocumentReady(funct ion() {\n watchImportsLoad(callback, doc);\n }, doc);\n}\n\n// call the call back when the document is in a ready state (has dom)\nvar requiredReadyState = H TMLImports.isIE ? 'complete' : 'interactive';\nvar READY_EVENT = 'readystatechan ge';\nfunction isDocumentReady(doc) {\n return (doc.readyState === 'complete' | |\n doc.readyState === requiredReadyState);\n}\n\n// call <callback> when w e ensure the document is in a ready state\nfunction whenDocumentReady(callback, doc) {\n if (!isDocumentReady(doc)) {\n var checkReady = function() {\n if (doc.readyState === 'complete' || \n doc.readyState === requiredRea dyState) {\n doc.removeEventListener(READY_EVENT, checkReady);\n w henDocumentReady(callback, doc);\n }\n }\n doc.addEventListener(READY _EVENT, checkReady);\n } else if (callback) {\n callback();\n }\n}\n\n// ca ll <callback> when we ensure all imports have loaded\nfunction watchImportsLoad( callback, doc) {\n var imports = doc.querySelectorAll('link[rel=import]');\n v ar loaded = 0, l = imports.length;\n function checkDone(d) { \n if (loaded = = l) {\n // go async to ensure parser isn't stuck on a script tag\n re questAnimationFrame(callback);\n }\n }\n function loadedImport(e) {\n lo aded++;\n checkDone();\n }\n if (l) {\n for (var i=0, imp; (i<l) && (imp =imports[i]); i++) {\n if (isImportLoaded(imp)) {\n loadedImport.cal l(imp);\n } else {\n imp.addEventListener('load', loadedImport);\n imp.addEventListener('error', loadedImport);\n }\n }\n } else {\n checkDone();\n }\n}\n\nfunction isImportLoaded(link) {\n return useNative ? (link.import && (link.import.readyState !== 'loading')) :\n link.__import Parsed;\n}\n\n// exports\nscope.hasNative = hasNative;\nscope.useNative = useNat ive;\nscope.importer = importer;\nscope.whenImportsReady = whenImportsReady;\nsc ope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\nscope.isImportLoaded = isImportLoaded; \nscope.importLoader = importLoader;\n\n})(window.HTMLImports);\n"," /*\nCopyrig ht 2013 The Polymer Authors. All rights reserved.\nUse of this source code is go verned by a BSD-style\nlicense that can be found in the LICENSE file.\n*/\n\n(fu nction(scope){\n\nvar IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;\nvar importSele ctor = 'link[rel=' + IMPORT_LINK_TYPE + ']';\nvar importer = scope.importer;\n\n // we track mutations for addedNodes, looking for imports\nfunction handler(muta tions) {\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// find loadable elements and add them to the im porter\nfunction addedNodes(nodes) {\n for (var i=0, l=nodes.length, n; (i<l) & & (n=nodes[i]); i++) {\n if (shouldLoadNode(n)) {\n importer.loadNode(n) ;\n }\n if (n.children && n.children.length) {\n addedNodes(n.childre n);\n }\n }\n}\n\nfunction shouldLoadNode(node) {\n return (node.nodeType = == 1) && matches.call(node,\n importer.loadSelectorsForNode(node));\n}\n\n/ / x-plat matches\nvar matches = HTMLElement.prototype.matches || \n HTMLEleme nt.prototype.matchesSelector || \n HTMLElement.prototype.webkitMatchesSelecto r ||\n HTMLElement.prototype.mozMatchesSelector ||\n HTMLElement.prototype .msMatchesSelector;\n\nvar observer = new MutationObserver(handler);\n\n// obser ve the given root for loadable elements\nfunction observe(root) {\n observer.ob serve(root, {childList: true, subtree: true});\n}\n\n// exports\n// TODO(sorvell ): factor so can put on scope\nscope.observe = observe;\nimporter.observe = obse rve;\n\n})(HTMLImports);\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(function(){\n\n// bootstrap\n\n// IE shim for CustomEvent\nif (typeof window.CustomEvent !== 'function') {\n wind ow.CustomEvent = function(inType, dictionary) {\n var e = document.createEve nt('HTMLEvents');\n e.initEvent(inType,\n dictionary.bubbles === fals e ? false : true,\n dictionary.cancelable === false ? false : true,\n dictionary.detail);\n return e;\n };\n}\n\n// TODO(sorvell): SD polyfil l intrusion\nvar doc = window.ShadowDOMPolyfill ? \n window.ShadowDOMPolyfill .wrapIfNeeded(document) : document;\n\n// Fire the 'HTMLImportsLoaded' event whe n imports in document at load time \n// have loaded. This event is required to s imulate the script blocking \n// behavior of native imports. A main document scr ipt that needs to be sure\n// imports have loaded should wait for this event.\nH TMLImports.whenImportsReady(function() {\n HTMLImports.ready = true;\n HTMLImp orts.readyTime = new Date().getTime();\n doc.dispatchEvent(\n new CustomEven t('HTMLImportsLoaded', {bubbles: true})\n );\n});\n\n\n// no need to bootstrap the polyfill when native imports is available.\nif (!HTMLImports.useNative) {\n function bootstrap() {\n HTMLImports.importer.bootDocument(doc);\n }\n \ n // TODO(sorvell): SD polyfill does *not* generate mutations for nodes added\n // by the parser. For this reason, we must wait until the dom exists to \n // bootstrap.\n if (document.readyState === 'complete' ||\n (document.readyS tate === 'interactive' && !window.attachEvent)) {\n bootstrap();\n } else {\ n document.addEventListener('DOMContentLoaded', bootstrap);\n }\n}\n\n})();\ n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of t his source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\nwindow.CustomElements = window.CustomElements || {flags:{}}; "," /*\r\nCopyright 2013 The Polymer Authors. All rights reserved.\r\nUse of thi s source code is governed by a BSD-style\r\nlicense that can be found in the LIC ENSE file.\r\n*/\r\n\r\n(function(scope){\r\n\r\nvar logFlags = window.logFlags || {};\r\nvar IMPORT_LINK_TYPE = window.HTMLImports ? HTMLImports.IMPORT_LINK_TY PE : 'none';\r\n\r\n// walk the subtree 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\nfunction findAll(node, find, data) {\r\n v ar e = node.firstElementChild;\r\n if (!e) {\r\n e = node.firstChild;\r\n while (e && e.nodeType !== Node.ELEMENT_NODE) {\r\n e = e.nextSibling;\r\n }\r\n }\r\n while (e) {\r\n if (find(e, data) !== true) {\r\n find All(e, find, data);\r\n }\r\n e = e.nextElementSibling;\r\n }\r\n return null;\r\n}\r\n\r\n// walk all shadowRoots on a given node.\r\nfunction forRoots (node, cb) {\r\n var root = node.shadowRoot;\r\n while(root) {\r\n forSubtr ee(root, cb);\r\n root = root.olderShadowRoot;\r\n }\r\n}\r\n\r\n// walk the subtree rooted at node, including descent into shadow-roots,\r\n// applying 'cb ' to each element\r\nfunction forSubtree(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 forRoots(node, cb);\r\n //logFlags.dom && node.childNodes && node.childNodes.length && console.groupEnd();\r\n}\r\n\r\n// manage lifecycle on added node\r\nfunction added(node) {\r\n if (upgrade(node)) {\r\n insertedNode(node);\r\n return true;\r\n }\r\n inserted(node);\r\ n}\r\n\r\n// manage lifecycle on added node's subtree only\r\nfunction addedSubt ree(node) {\r\n forSubtree(node, function(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(node) {\r\n return added(node) || addedSubt ree(node);\r\n}\r\n\r\n// upgrade custom elements at node, if applicable\r\nfunc tion upgrade(node) {\r\n if (!node.__upgraded__ && node.nodeType === Node.ELEME NT_NODE) {\r\n var type = node.getAttribute('is') || node.localName;\r\n v ar 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.groupEnd();\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nfunction insertedNode(node) {\r\n inserted(node);\r\n if (inDo cument(node)) {\r\n forSubtree(node, function(e) {\r\n inserted(e);\r\n });\r\n }\r\n}\r\n\r\n// TODO(sorvell): on platforms without MutationObserve r, mutations may not be\r\n// reliable and therefore attached/detached are not r eliable.\r\n// To make these callbacks less likely to fail, we defer all inserts and removes\r\n// to give a chance for elements to be inserted into dom.\r\n// This ensures attachedCallback fires for elements that are created and\r\n// imme diately added to dom.\r\nvar hasPolyfillMutations = (!window.MutationObserver || \r\n (window.MutationObserver === window.JsMutationObserver));\r\nscope.hasPo lyfillMutations = hasPolyfillMutations;\r\n\r\nvar isPendingMutations = false;\r \nvar pendingMutations = [];\r\nfunction deferMutation(fn) {\r\n pendingMutatio ns.push(fn);\r\n if (!isPendingMutations) {\r\n isPendingMutations = true;\r \n var async = (window.Platform && window.Platform.endOfMicrotask) ||\r\n setTimeout;\r\n async(takeMutations);\r\n }\r\n}\r\n\r\nfunction takeMut ations() {\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 (hasPo lyfillMutations) {\r\n deferMutation(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 into trees that can never have inDocument(*) tr ue, fix this\r\nfunction _inserted(element) {\r\n // TODO(sjmiles): it's possib le 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 ar e 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 c an factor these cases into separate code paths we can have\r\n // better diagno stics.\r\n // TODO(sjmiles): when logging, do work on all custom elements so we can\r\n // track behavior even when callbacks not defined\r\n //console.log(' inserted: ', element.localName);\r\n if (element.attachedCallback || element.de tachedCallback || (element.__upgraded__ && logFlags.dom)) {\r\n logFlags.dom && console.group('inserted:', element.localName);\r\n if (inDocument(element) ) {\r\n element.__inserted = (element.__inserted || 0) + 1;\r\n // if we are in a 'removed' state, bluntly 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', squelch the callback\r\n if (element.__inser ted > 1) {\r\n logFlags.dom && console.warn('inserted:', element.localNam e,\r\n 'insert/remove count:', element.__inserted)\r\n } else if ( element.attachedCallback) {\r\n logFlags.dom && console.log('inserted:', element.localName);\r\n element.attachedCallback();\r\n }\r\n }\r \n logFlags.dom && console.groupEnd();\r\n }\r\n}\r\n\r\nfunction removedNod e(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 (hasPolyfillMutati ons) {\r\n deferMutation(function() {\r\n _removed(element);\r\n });\ r\n } else {\r\n _removed(element);\r\n }\r\n}\r\n\r\nfunction _removed(ele ment) {\r\n // TODO(sjmiles): temporary: do work on all custom elements so we c an track\r\n // behavior even when callbacks not defined\r\n if (element.attac hedCallback || element.detachedCallback || (element.__upgraded__ && logFlags.dom )) {\r\n logFlags.dom && console.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 'rem oved' 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('remo ved:', element.localName,\r\n 'insert/remove count:', element.__inser ted)\r\n } else if (element.detachedCallback) {\r\n element.detached Callback();\r\n }\r\n }\r\n logFlags.dom && console.groupEnd();\r\n }\r\n}\r\n\r\n// SD polyfill intrustion due mainly to the fact that 'document'\r \n// is not entirely wrapped\r\nfunction wrapIfNeeded(node) {\r\n return window .ShadowDOMPolyfill ? ShadowDOMPolyfill.wrapIfNeeded(node)\r\n : node;\r\n}\ r\n\r\nfunction inDocument(element) {\r\n var p = element;\r\n var doc = wrapI fNeeded(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 watchSh adow(node) {\r\n if (node.shadowRoot && !node.shadowRoot.__watched) {\r\n lo gFlags.dom && console.log('watching 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 watchRoot(root) {\r\n if (!root.__watched) {\r\n observe(root);\r\n root.__watched = true;\r\n }\r\n}\r\n\r\nfunction hand ler(mutations) {\r\n //\r\n if (logFlags.dom) {\r\n var mx = mutations[0];\ r\n if (mx && mx.type === 'childList' && mx.addedNodes) {\r\n if (mx.a ddedNodes) {\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._URL || (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.addedNode s, function(n) {\r\n //logFlags.dom && console.log(n.localName);\r\n if (!n.localName) {\r\n return;\r\n }\r\n // nodes add ed may need lifecycle management\r\n addedNode(n);\r\n });\r\n // removed nodes may need lifecycle management\r\n forEach(mx.removedNodes, function(n) {\r\n //logFlags.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 //logFlags.dom && console.groupEnd();\r\n });\r\ n logFlags.dom && console.groupEnd();\r\n};\r\n\r\nvar observer = new MutationO bserver(handler);\r\n\r\nfunction takeRecords() {\r\n // TODO(sjmiles): ask Raf why we have to call handler ourselves\r\n handler(observer.takeRecords());\r\n takeMutations();\r\n}\r\n\r\nvar forEach = Array.prototype.forEach.call.bind(A rray.prototype.forEach);\r\n\r\nfunction 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 logF lags.dom && console.group('upgradeDocument: ', (doc.baseURI).split('/').pop());\ r\n addedNode(doc);\r\n logFlags.dom && console.groupEnd();\r\n}\r\n\r\nfuncti on upgradeDocumentTree(doc) {\r\n doc = wrapIfNeeded(doc);\r\n //console.log(' upgradeDocumentTree: ', (doc.baseURI).split('/').pop());\r\n // upgrade contain ed imported documents\r\n var imports = doc.querySelectorAll('link[rel=' + IMPO RT_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 upgradeDocumen tTree(n.import);\r\n }\r\n }\r\n upgradeDocument(doc);\r\n}\r\n\r\n// expor ts\r\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\r\nscope.watchShadow = watchSha dow;\r\nscope.upgradeDocumentTree = upgradeDocumentTree;\r\nscope.upgradeAll = a ddedNode;\r\nscope.upgradeSubtree = addedSubtree;\r\nscope.insertedNode = insert edNode;\r\n\r\nscope.observeDocument = observeDocument;\r\nscope.upgradeDocument = upgradeDocument;\r\n\r\nscope.takeRecords = takeRecords;\r\n\r\n})(window.Cus tomElements);\r\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/**\n * Implements `document.register`\n * @module CustomElements\n*/\n\n/**\n * Polyfilled extensions to the `document` o bject.\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(document.regis terElement);\n// TODO(sorvell): See https://github.com/Polymer/polymer/issues/39 9\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 callbacks.\n// I f there is a compelling need to run CE native with SD polyfill,\n// we'll need t o fix this issue.\nvar useNative = !flags.register && hasNative && !window.Shado wDOMPolyfill;\n\nif (useNative) {\n\n // stub\n var nop = function() {};\n\n // exports\n scope.registry = {};\n scope.upgradeElement = nop;\n\n scope.wat chShadow = nop;\n scope.upgrade = nop;\n scope.upgradeAll = nop;\n scope.upgr adeSubtree = nop;\n scope.observeDocument = nop;\n scope.upgradeDocument = nop ;\n scope.upgradeDocumentTree = nop;\n scope.takeRecords = nop;\n scope.reser vedTagList = [];\n\n} else {\n\n /**\n * Registers a custom tag name with the document.\n *\n * When a registered element is created, a `readyCallback` m ethod is called\n * in the scope of the element. The `readyCallback` method ca n be specified on\n * either `options.prototype` or `options.lifecycle` with t he latter taking\n * precedence.\n *\n * @method register\n * @param {St ring} name The tag name to register. Must include a dash ('-'),\n * for exa mple 'x-component'.\n * @param {Object} options\n * @param {String} [opti ons.extends]\n * (_off spec_) Tag name of an element to extend (or blank for a new\n * element). This parameter is not part of the specification, but instead\n * is a hint for the polyfill because the extendee is diffic ult to infer.\n * Remember that the input prototype must chain to the ext ended element's\n * prototype (or HTMLElement.prototype) regardless of th e value of\n * `extends`.\n * @param {Object} options.prototype The prototype to use for the 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-butto n\", {\n * extends: 'button',\n * prototype: Object.create(HTM LButtonElement.prototype, {\n * readyCallback: {\n * val ue: 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 regist er(name, options) {\n //console.warn('document.registerElement(\"' + name + ' \", ', options, ')');\n // construct a defintion out of options\n // TODO( sjmiles): probably should clone options instead of mutating it\n var definiti on = options || {};\n if (!name) {\n // TODO(sjmiles): replace with more appropriate error (EricB can probably\n // offer guidance)\n throw ne w Error('document.registerElement: first argument `name` must not be empty');\n }\n if (name.indexOf('-') < 0) {\n // TODO(sjmiles): replace with mor e appropriate error (EricB can probably\n // offer guidance)\n throw n ew Error('document.registerElement: first argument (\\'name\\') must contain a d ash (\\'-\\'). Argument provided was \\'' + String(name) + '\\'.');\n }\n // prevent registering reserved names\n if (isReservedTag(name)) {\n thr ow new Error('Failed to execute \\'registerElement\\' on \\'Document\\': Registr ation failed for type \\'' + String(name) + '\\'. The type name is invalid.');\n }\n // elements may only be registered once\n if (getRegisteredDefinit ion(name)) {\n throw new Error('DuplicateDefinitionError: a type with name \\'' + String(name) + '\\' is already registered');\n }\n // must have a p rototype, default to an extension of HTMLElement\n // TODO(sjmiles): probably should throw if no prototype, check spec\n if (!definition.prototype) {\n // TODO(sjmiles): replace with more appropriate error (EricB can probably\n // offer guidance)\n throw new Error('Options missing required prototyp e property');\n }\n // record name\n definition.__name = name.toLowerCa se();\n // ensure a lifecycle object so we don't have to null test it\n de finition.lifecycle = definition.lifecycle || {};\n // build a list of ancestr al custom elements (for native base detection)\n // TODO(sjmiles): we used to need to store this, but current code only\n // uses it in 'resolveTagName': it should probably be inlined\n definition.ancestry = ancestry(definition.ext ends);\n // extensions of native specializations of HTMLElement require local Name\n // to remain native, and use secondary 'is' specifier for extension ty pe\n resolveTagName(definition);\n // some platforms require modifications to the user-supplied prototype\n // chain\n resolvePrototypeChain(definit ion);\n // overrides to implement attributeChanged callback\n overrideAttr ibuteApi(definition.prototype);\n // 7.1.5: Register the DEFINITION with DOCU MENT\n registerDefinition(definition.__name, definition);\n // 7.1.7. Run custom element constructor generation algorithm with PROTOTYPE\n // 7.1.8. Re turn the output of the previous step.\n definition.ctor = generateConstructor (definition);\n definition.ctor.prototype = definition.prototype;\n // for ce our .constructor to be our actual constructor\n definition.prototype.const ructor = definition.ctor;\n // if initial parsing is complete\n if (scope. ready) {\n // upgrade any pre-existing nodes of this type\n scope.upgr adeDocumentTree(document);\n }\n return definition.ctor;\n }\n\n functio n isReservedTag(name) {\n for (var i = 0; i < reservedTagList.length; i++) {\ n if (name === reservedTagList[i]) {\n return true;\n }\n }\ n }\n\n var reservedTagList = [\n 'annotation-xml', 'color-profile', 'font- face', 'font-face-src',\n 'font-face-uri', 'font-face-format', 'font-face-nam e', 'missing-glyph'\n ];\n\n function ancestry(extnds) {\n var extendee = g etRegisteredDefinition(extnds);\n if (extendee) {\n return ancestry(exte ndee.extends).concat([extendee]);\n }\n return [];\n }\n\n function reso lveTagName(definition) {\n // if we are explicitly extending something, that thing is our\n // baseTag, unless it represents a custom component\n var b aseTag = definition.extends;\n // if our ancestry includes custom components, we only have a\n // baseTag if one of them does\n for (var i=0, a; (a=def inition.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 definition.ta g = baseTag || definition.__name;\n if (baseTag) {\n // if there is a ba se 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 prec ise mixing in\n if (!Object.__proto__) {\n // default prototype\n v ar nativePrototype = HTMLElement.prototype;\n // work out prototype when us ing type-extension\n if (definition.is) {\n var inst = document.crea teElement(definition.tag);\n nativePrototype = Object.getPrototypeOf(inst );\n }\n // ensure __proto__ reference is installed at each point on t he prototype\n // chain.\n // NOTE: On platforms without __proto__, a mixin strategy is used instead\n // of prototype swizzling. In this case, t his generated __proto__ provides\n // limited support for prototype travers al.\n var proto = definition.prototype, ancestor;\n while (proto && (p roto !== nativePrototype)) {\n var ancestor = Object.getPrototypeOf(proto );\n proto.__proto__ = ancestor;\n proto = ancestor;\n }\n }\n // cache this in case of mixin\n definition.native = nativePrototype; \n }\n\n // SECTION 4\n\n function instantiate(definition) {\n // 4.a.1. C reate a new object that implements PROTOTYPE\n // 4.a.2. Let ELEMENT by this new object\n //\n // the custom element instantiation algorithm must also ensure that the\n // output is a valid DOM element with the proper wrapper in place.\n //\n return upgrade(domCreateElement(definition.tag), definition );\n }\n\n function upgrade(element, definition) {\n // some definitions sp ecify an 'is' attribute\n if (definition.is) {\n element.setAttribute('i s', definition.is);\n }\n // remove 'unresolved' attr, which is a standin for :unresolved.\n element.removeAttribute('unresolved');\n // make 'eleme nt' implement definition.prototype\n implement(element, definition);\n // flag as upgraded\n element.__upgraded__ = true;\n // lifecycle management\ n created(element);\n // attachedCallback fires in tree order, call before recursing\n scope.insertedNode(element);\n // there should never be a sha dow root on element at this point\n scope.upgradeSubtree(element);\n // OU TPUT\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-ac quire inPrototype via\n // getPrototypeOf(Element), we cannot do so when\n // we use mixin, so we install a magic reference\n customMixin(element , definition.prototype, definition.native);\n element.__proto__ = definitio n.prototype;\n }\n }\n\n function customMixin(inTarget, inSrc, inNative) {\ n // TODO(sjmiles): 'used' allows us to only copy the 'youngest' version of\n // any property. This set should be precalculated. We also need to\n // c onsider this for supporting 'super'.\n var used = {};\n // start with inSr c\n var p = inSrc;\n // The default is HTMLElement.prototype, so we add a test to avoid mixing in\n // native prototypes\n while (p !== inNative && p !== HTMLElement.prototype) {\n var keys = Object.getOwnPropertyNames(p);\ n for (var i=0, k; k=keys[i]; i++) {\n if (!used[k]) {\n Ob ject.defineProperty(inTarget, k,\n Object.getOwnPropertyDescriptor( p, k));\n used[k] = 1;\n }\n }\n p = Object.getPrototy peOf(p);\n }\n }\n\n function created(element) {\n // invoke createdCall back\n if (element.createdCallback) {\n element.createdCallback();\n }\n }\n\n // attribute watching\n\n function overrideAttributeApi(prototype) {\n // overrides to implement callbacks\n // TODO(sjmiles): should support access via .attributes NamedNodeMap\n // TODO(sjmiles): preserves user defin ed overrides, if any\n if (prototype.setAttribute._polyfilled) {\n retur n;\n }\n var setAttribute = prototype.setAttribute;\n prototype.setAttr ibute = function(name, value) {\n changeAttribute.call(this, name, value, s etAttribute);\n }\n var removeAttribute = prototype.removeAttribute;\n prototype.removeAttribute = function(name) {\n changeAttribute.call(this, n ame, null, removeAttribute);\n }\n prototype.setAttribute._polyfilled = tr ue;\n }\n\n // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/\ n // index.html#dfn-attribute-changed-callback\n function changeAttribute(name , value, operation) {\n var oldValue = this.getAttribute(name);\n operatio n.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 // element registry (maps tag names to definitions)\n\n var registry = {};\n\n function getRegisteredDefinition(name) {\n if (name) {\n return registry[name.toL owerCase()];\n }\n }\n\n function registerDefinition(name, definition) {\n registry[name] = definition;\n }\n\n function generateConstructor(definitio n) {\n return function() {\n return instantiate(definition);\n };\n }\n\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n function createEl ementNS(namespace, tag, typeExtension) {\n // NOTE: we do not support non-HTM L elements,\n // just call createElementNS for non HTML Elements\n if (nam espace === HTML_NAMESPACE) {\n return createElement(tag, typeExtension);\n } else {\n return domCreateElementNS(namespace, tag);\n }\n }\n\n f unction createElement(tag, typeExtension) {\n // TODO(sjmiles): ignore 'tag' when using 'typeExtension', we could\n // error check it, or perhaps there sh ould only ever be one argument\n var definition = getRegisteredDefinition(typ eExtension || tag);\n if (definition) {\n if (tag == definition.tag && t ypeExtension == definition.is) {\n return new definition.ctor();\n } \n // Handle empty string for type extension.\n if (!typeExtension && !definition.is) {\n return new definition.ctor();\n }\n }\n\n if (typeExtension) {\n var element = createElement(tag);\n element.set Attribute('is', typeExtension);\n return element;\n }\n var element = domCreateElement(tag);\n // Custom tags should be HTMLElements even if not u pgraded.\n if (tag.indexOf('-') >= 0) {\n implement(element, HTMLElement );\n }\n return element;\n }\n\n function upgradeElement(element) {\n if (!element.__upgraded__ && (element.nodeType === Node.ELEMENT_NODE)) {\n var is = element.getAttribute('is');\n var definition = getRegisteredDefin ition(is || element.localName);\n if (definition) {\n if (is && defi nition.tag == element.localName) {\n return upgrade(element, definition );\n } else if (!is && !definition.extends) {\n return upgrade(e lement, definition);\n }\n }\n }\n }\n\n function cloneNode(dee p) {\n // call original clone\n var n = domCloneNode.call(this, deep);\n // upgrade the element and subtree\n scope.upgradeAll(n);\n // return th e clone\n return n;\n }\n // capture native createElement before we overrid e it\n\n var domCreateElement = document.createElement.bind(document);\n var d omCreateElementNS = document.createElementNS.bind(document);\n\n // capture nat ive cloneNode before we override it\n\n var domCloneNode = Node.prototype.clone Node;\n\n // exports\n\n document.registerElement = register;\n document.crea teElement = createElement; // override\n document.createElementNS = createEleme ntNS; // override\n Node.prototype.cloneNode = cloneNode; // override\n\n scop e.registry = registry;\n\n /**\n * Upgrade an element to a custom element. Up grading an element\n * causes the custom prototype to be applied, an `is` attr ibute\n * to be attached (as needed), and invocation of the `readyCallback`.\n * `upgrade` does nothing if the element is already upgraded, or\n * if it m atches no registered custom tag name.\n *\n * @method ugprade\n * @param { Element} element The element to upgrade.\n * @return {Element} The upgraded el ement.\n */\n scope.upgrade = upgradeElement;\n}\n\n// Create a custom 'insta nceof'. This is necessary when CustomElements\n// are implemented via a mixin st rategy, as for example on IE10.\nvar isInstance;\nif (!Object.__proto__ && !useN ative) {\n isInstance = function(obj, ctor) {\n var p = obj;\n while (p) {\n // NOTE: this is not technically correct since we're not checking if\n // an object is an instance of a constructor; however, this should\n / / be good enough for the mixin strategy.\n if (p === ctor.prototype) {\n return true;\n }\n p = p.__proto__;\n }\n return false;\n }\n} else {\n isInstance = function(obj, base) {\n return obj instanceof bas e;\n }\n}\n\n// exports\nscope.instanceof = isInstance;\nscope.reservedTagList = reservedTagList;\n\n// bc\ndocument.register = document.registerElement;\n\nsc ope.hasNative = hasNative;\nscope.useNative = useNative;\n\n})(window.CustomElem ents);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * U se 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\n// import\n\nvar IMPORT_LINK_ TYPE = scope.IMPORT_LINK_TYPE;\n\n// highlander object for parsing a document tr ee\n\nvar parser = {\n selectors: [\n 'link[rel=' + IMPORT_LINK_TYPE + ']'\n ],\n map: {\n link: 'parseLink'\n },\n parse: function(inDocument) {\n if (!inDocument.__parsed) {\n // only parse once\n inDocument.__pars ed = true;\n // all parsable elements in inDocument (depth-first pre-order traversal)\n var elts = inDocument.querySelectorAll(parser.selectors);\n // for each parsable node type, call the mapped parsing method\n forEach (elts, function(e) {\n parser[parser.map[e.localName]](e);\n });\n // upgrade all upgradeable static elements, anything dynamically\n // c reated should be caught by observer\n CustomElements.upgradeDocument(inDocu ment);\n // observe document for dom changes\n CustomElements.observeD ocument(inDocument);\n }\n },\n parseLink: function(linkElt) {\n // impo rts\n if (isDocumentLink(linkElt)) {\n this.parseImport(linkElt);\n } \n },\n parseImport: function(linkElt) {\n if (linkElt.import) {\n par ser.parse(linkElt.import);\n }\n }\n};\n\nfunction isDocumentLink(inElt) {\n return (inElt.localName === 'link'\n && inElt.getAttribute('rel') === IMP ORT_LINK_TYPE);\n}\n\nvar forEach = Array.prototype.forEach.call.bind(Array.prot otype.forEach);\n\n// exports\n\nscope.parser = parser;\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\n\n})(window.CustomElements);","/*\n * Copyright 2013 The Po lymer 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(sc ope){\n\n// bootstrap parsing\nfunction bootstrap() {\n // parse document\n Cu stomElements.parser.parse(document);\n // one more pass before register is 'liv e'\n CustomElements.upgradeDocument(document);\n // choose async\n var async = window.Platform && Platform.endOfMicrotask ? \n Platform.endOfMicrotask :\n setTimeout;\n async(function() {\n // set internal 'ready' flag, now doc ument.registerElement will trigger \n // synchronous upgrades\n CustomElem ents.ready = true;\n // capture blunt profiling data\n CustomElements.read yTime = Date.now();\n if (window.HTMLImports) {\n CustomElements.elapsed = CustomElements.readyTime - HTMLImports.readyTime;\n }\n // notify the s ystem that we are bootstrapped\n document.dispatchEvent(\n new CustomEve nt('WebComponentsReady', {bubbles: true})\n );\n\n // install upgrade hook if HTMLImports are available\n if (window.HTMLImports) {\n HTMLImports. __importsParsingHook = function(elt) {\n CustomElements.parser.parse(elt. import);\n }\n }\n });\n}\n\n// CustomEvent shim for IE\nif (typeof win dow.CustomEvent !== 'function') {\n window.CustomEvent = function(inType) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(inType, true, tru e);\n return e;\n };\n}\n\n// When loading at readyState complete time (or v ia flag), boot custom elements\n// immediately.\n// If relevant, HTMLImports mus t already be loaded.\nif (document.readyState === 'complete' || scope.flags.eage r) {\n bootstrap();\n// When loading at readyState interactive 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' && !wind ow.attachEvent &&\n (!window.HTMLImports || window.HTMLImports.ready)) {\n b ootstrap();\n// When loading at other readyStates, wait for the appropriate DOM event to \n// bootstrap.\n} else {\n var loadEvent = window.HTMLImports && !HTM LImports.ready ?\n 'HTMLImportsLoaded' : 'DOMContentLoaded';\n window.addE ventListener(loadEvent, bootstrap);\n}\n\n})(window.CustomElements);\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 fil e.\n */\n(function() {\n\nif (window.ShadowDOMPolyfill) {\n\n // ensure wrapped inputs for these functions\n var fns = ['upgradeAll', 'upgradeSubtree', 'obser veDocument',\n 'upgradeDocument'];\n\n // cache originals\n var original = {};\n fns.forEach(function(fn) {\n original[fn] = CustomElements[fn];\n } );\n\n // override\n fns.forEach(function(fn) {\n CustomElements[fn] = func tion(inNode) {\n return original[fn](wrap(inNode));\n };\n });\n\n}\n\n })();\n","/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Us e of this source code is governed by a BSD-style\n * license that can be found i n the LICENSE file.\n */\n(function(scope) {\n var endOfMicrotask = scope.endOf Microtask;\n\n // Generic url loader\n function Loader(regex) {\n this.rege x = regex;\n }\n Loader.prototype = {\n // TODO(dfreedm): there may be a be tter factoring here\n // extract absolute urls from the text (full of relativ e urls)\n extractUrls: function(text, base) {\n var matches = [];\n var matched, u;\n while ((matched = this.regex.exec(text))) {\n u = new URL(matched[1], base);\n matches.push({matched: matched[0], url: u.h ref});\n }\n return matches;\n },\n // take a text blob, a root url, and a callback and load all the urls found within the text\n // returns a map of absolute url to text\n process: function(text, root, callback) {\n var matches = this.extractUrls(text, root);\n this.fetch(matches, {}, c allback);\n },\n // build a mapping of url -> text from matches\n fetch : function(matches, map, callback) {\n var inflight = matches.length;\n\n // return early if there is no fetching to be done\n if (!inflight) {\n return callback(map);\n }\n\n var done = function() {\n if (--inflight === 0) {\n callback(map);\n }\n };\n\n // map url -> responseText\n var handleXhr = function(err, request) {\n var match = request.match;\n var key = match.url;\n // handle errors with an empty string\n if (err) {\n map[key] = '';\n return done();\n }\n var response = request.response || requ est.responseText;\n map[key] = response;\n this.fetch(this.extract Urls(response, key), map, done);\n };\n\n var m, req, url;\n for (var i = 0; i < inflight; i++) {\n m = matches[i];\n url = m.url;\ n // if this url has already been requested, skip requesting it again\n if (map[url]) {\n // Async call to done to simplify the inflight logic\n endOfMicrotask(done);\n continue;\n }\n req = this.xhr(url, handleXhr, this);\n req.match = m;\n // tag th e map with an XHR request to deduplicate at the same level\n map[url] = r eq;\n }\n },\n xhr: function(url, callback, scope) {\n var reque st = new XMLHttpRequest();\n request.open('GET', url, true);\n request .send();\n request.onload = function() {\n callback.call(scope, null , request);\n };\n request.onerror = function() {\n callback.ca ll(scope, null, request);\n };\n return request;\n }\n };\n\n sco pe.Loader = Loader;\n})(window.Platform);\n","/*\n * Copyright 2014 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(function(scope) { \n\nvar urlResolver = scope.urlResolver;\nvar Loader = scope.Loader;\n\nfunction StyleResolver() {\n this.loader = new Loader(this.regex);\n}\nStyleResolver.pr ototype = {\n regex: /@import\\s+(?:url)?[\"'\\(]*([^'\"\\)]*)['\"\\)]*;/g,\n // Recursively replace @imports with the text at that url\n resolve: function(t ext, url, callback) {\n var done = function(map) {\n callback(this.flatt en(text, url, map));\n }.bind(this);\n this.loader.process(text, url, done );\n },\n // resolve the textContent of a style node\n resolveNode: function( style, callback) {\n var text = style.textContent;\n var url = style.owner Document.baseURI;\n var done = function(text) {\n style.textContent = te xt;\n callback(style);\n };\n this.resolve(text, url, done);\n },\n // flatten all the @imports to text\n flatten: function(text, base, map) {\n var matches = this.loader.extractUrls(text, base);\n var match, url, interm ediate;\n for (var i = 0; i < matches.length; i++) {\n match = matches[i ];\n url = match.url;\n // resolve any css text to be relative to the importer\n intermediate = urlResolver.resolveCssText(map[url], url);\n // flatten intermediate @imports\n intermediate = this.flatten(intermediat e, url, map);\n text = text.replace(match.matched, intermediate);\n }\n return text;\n },\n loadStyles: function(styles, callback) {\n var loade d=0, l = styles.length;\n // called in the context of the style\n function loadedStyle(style) {\n loaded++;\n if (loaded === l && callback) {\n callback();\n }\n }\n for (var i=0, s; (i<l) && (s=styles[i]); i++) {\n this.resolveNode(s, loadedStyle);\n }\n }\n};\n\nvar styleRes olver = new StyleResolver();\n\n// exports\nscope.styleResolver = styleResolver; \n\n})(window.Platform);\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(function(scope) {\n scope = sco pe || {};\n scope.external = scope.external || {};\n var target = {\n shado w: function(inEl) {\n if (inEl) {\n return inEl.shadowRoot || inEl.w ebkitShadowRoot;\n }\n },\n canTarget: function(shadow) {\n retu rn shadow && Boolean(shadow.elementFromPoint);\n },\n targetingShadow: fun ction(inEl) {\n var s = this.shadow(inEl);\n if (this.canTarget(s)) {\ n return s;\n }\n },\n olderShadow: function(shadow) {\n var os = shadow.olderShadowRoot;\n if (!os) {\n var se = shadow.quer ySelector('shadow');\n if (se) {\n os = se.olderShadowRoot;\n }\n }\n return os;\n },\n allShadows: function(element) {\n var shadows = [], s = this.shadow(element);\n while(s) {\n sha dows.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 e lement a shadow host?\n sr = this.targetingShadow(t);\n while (sr) {\n // find the the element inside the shadow root\n st = sr. elementFromPoint(x, y);\n if (!st) {\n // check for older sh adows\n sr = this.olderShadow(sr);\n } else {\n / / shadowed element may contain a shadow root\n var ssr = this.targeti ngShadow(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 // wa lk up until you hit the shadow root or document\n while (s.parentNode) {\n s = s.parentNode;\n }\n // the owner element is expected to be a Document or ShadowRoot\n if (s.nodeType != Node.DOCUMENT_NODE && s.nodeTy pe != Node.DOCUMENT_FRAGMENT_NODE) {\n s = document;\n }\n retu rn s;\n },\n findTarget: function(inEvent) {\n var x = inEvent.client X, y = inEvent.clientY;\n // if the listener is in the shadow root, it is m uch faster to start there\n var s = this.owner(inEvent.target);\n // i f x, y is not in this root, fall back to document search\n if (!s.elementFr omPoint(x, y)) {\n s = document;\n }\n return this.searchRoot(s , x, y);\n }\n };\n scope.targetFinding = target;\n scope.findTarget = tar get.findTarget.bind(target);\n\n window.PointerEventsPolyfill = scope;\n})(wind ow.PointerEventsPolyfill);\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(function() {\n function shadowS elector(v) {\n return 'body /shadow-deep/ ' + selector(v);\n }\n function s elector(v) {\n return '[touch-action=\"' + v + '\"]';\n }\n function rule(v ) {\n return '{ -ms-touch-action: ' + v + '; touch-action: ' + v + '; touch-a ction-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 style s = '';\n // only install stylesheet if the browser has touch action support\n var head = document.head;\n var hasNativePE = window.PointerEvent || window.MS PointerEvent;\n // only add shadow selectors if shadowdom is supported\n var h asShadowRoot = !window.ShadowDOMPolyfill && document.head.createShadowRoot;\n\n if (hasNativePE) {\n attrib2css.forEach(function(r) {\n if (String(r) = == r) {\n styles += selector(r) + rule(r) + '\\n';\n if (hasShadow Root) {\n styles += shadowSelector(r) + rule(r) + '\\n';\n }\n } else {\n styles += r.selectors.map(selector) + rule(r.rule) + '\\n' ;\n if (hasShadowRoot) {\n styles += r.selectors.map(shadowSelec tor) + rule(r.rule) + '\\n';\n }\n }\n });\n\n var el = docume nt.createElement('style');\n el.textContent = styles;\n document.head.appe ndChild(el);\n }\n})();\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 * This is the constructor f or new PointerEvents.\n *\n * New Pointer Events must be given a type, and an op tional dictionary of\n * initialization properties.\n *\n * Due to certain platf orm requirements, events returned from the constructor\n * identify as MouseEven ts.\n *\n * @constructor\n * @param {String} inType The type of the event to cre ate.\n * @param {Object} [inDict] An optional dictionary of initial event proper ties.\n * @return {Event} A new PointerEvent of type `inType` and initialized wi th properties from `inDict`.\n */\n(function(scope) {\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 'pageX', \n 'pageY'\n ];\n\n var MOUSE_DEFAULTS = [\n false,\n false,\n nul l,\n null,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false ,\n false,\n 0,\n null,\n 0,\n 0\n ];\n\n function PointerEvent (inType, inDict) {\n inDict = inDict || Object.create(null);\n\n var e = d ocument.createEvent('Event');\n e.initEvent(inType, inDict.bubbles || false, inDict.cancelable || false);\n\n // define inherited MouseEvent properties\n for(var i = 0, p; i < MOUSE_PROPS.length; i++) {\n p = MOUSE_PROPS[i];\n e[p] = inDict[p] || MOUSE_DEFAULTS[i];\n }\n e.buttons = inDict.butt ons || 0;\n\n // Spec requires that pointers without pressure specified use 0 .5 for down\n // state and 0 for up state.\n var pressure = 0;\n if (in Dict.pressure) {\n pressure = inDict.pressure;\n } else {\n pressur e = e.buttons ? 0.5 : 0;\n }\n\n // add x/y properties aliased to clientX/ Y\n e.x = e.clientX;\n e.y = e.clientY;\n\n // define the properties of the PointerEvent interface\n e.pointerId = inDict.pointerId || 0;\n e.wid th = inDict.width || 0;\n e.height = inDict.height || 0;\n e.pressure = pr essure;\n e.tiltX = inDict.tiltX || 0;\n e.tiltY = inDict.tiltY || 0;\n e.pointerType = inDict.pointerType || '';\n e.hwTimestamp = inDict.hwTimesta mp || 0;\n e.isPrimary = inDict.isPrimary || false;\n return e;\n }\n\n // attach to window\n if (!scope.PointerEvent) {\n scope.PointerEvent = Poin terEvent;\n }\n})(window);\n","/*\n * Copyright 2013 The Polymer Authors. All r ights reserved.\n * Use of this source code is governed by a BSD-style\n * licen se 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 = window.Map & & window.Map.prototype.forEach;\n var POINTERS_FN = function(){ return this.siz e; };\n function PointerMap() {\n if (USE_MAP) {\n var m = new Map();\n m.pointers = POINTERS_FN;\n return m;\n } else {\n this.keys = [];\n this.values = [];\n }\n }\n\n PointerMap.prototype = {\n se t: 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: funct ion(inId) {\n return this.keys.indexOf(inId) > -1;\n },\n 'delete': f unction(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 retu rn this.values[i];\n },\n clear: function() {\n this.keys.length = 0; \n this.values.length = 0;\n },\n // return value, key, map\n forE ach: 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 sc ope.PointerMap = PointerMap;\n})(window.PointerEventsPolyfill);\n","/*\n * Copyr ight 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 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 Level 3\n 'buttons',\n // PointerEvent\n 'pointerId',\n 'width',\n 'height',\n 'pressure',\n 'tiltX',\n 'tiltY',\n 'pointerType',\n 'hwTimestam p',\n 'isPrimary',\n // event instance\n 'type',\n 'target',\n 'c urrentTarget',\n 'which',\n 'pageX',\n 'pageY'\n ];\n\n var CLONE_DEF AULTS = [\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 instan ce\n '',\n null,\n null,\n 0,\n 0,\n 0\n ];\n\n var HAS_SVG_ INSTANCE = (typeof SVGElementInstance !== 'undefined');\n\n /**\n * This modu le is for normalizing events. Mouse and Touch events will be\n * collected her e, and fire PointerEvents that have the same semantics, no\n * matter the sour ce.\n * Events fired:\n * - pointerdown: a pointing is added\n * - poi nterup: a pointer is removed\n * - pointermove: a pointer is moved\n * - pointerover: a pointer crosses into an element\n * - pointerout: a pointer leaves an element\n * - pointercancel: a pointer will no longer generate eve nts\n */\n var dispatcher = {\n pointermap: new scope.PointerMap(),\n e ventMap: Object.create(null),\n captureInfo: Object.create(null),\n // Sco pe objects for native events.\n // This exists for ease of testing.\n even tSources: Object.create(null),\n eventSourceList: [],\n /**\n * Add a new event source that will generate pointer events.\n *\n * `inSource` m ust contain an array of event names named `events`, and\n * functions with t he names specified in the `events` array.\n * @param {string} name A name fo r the event source\n * @param {Object} source A new source of platform event s.\n */\n registerSource: function(name, source) {\n var s = source; \n var newEvents = s.events;\n if (newEvents) {\n newEvents.for Each(function(e) {\n if (s[e]) {\n this.eventMap[e] = s[e].b ind(s);\n }\n }, this);\n this.eventSources[name] = s;\n this.eventSourceList.push(s);\n }\n },\n register: function(el ement) {\n var l = this.eventSourceList.length;\n for (var i = 0, es; (i < l) && (es = this.eventSourceList[i]); i++) {\n // call eventsource r egister\n es.register.call(es, element);\n }\n },\n unregister : function(element) {\n var l = this.eventSourceList.length;\n for (va r i = 0, es; (i < l) && (es = this.eventSourceList[i]); i++) {\n // call eventsource register\n es.unregister.call(es, element);\n }\n },\ n contains: scope.external.contains || function(container, contained) {\n return container.contains(contained);\n },\n // EVENTS\n down: functi on(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerdown' , inEvent);\n },\n move: function(inEvent) {\n inEvent.bubbles = true ;\n this.fireEvent('pointermove', inEvent);\n },\n up: function(inEve nt) {\n inEvent.bubbles = true;\n this.fireEvent('pointerup', inEvent) ;\n },\n enter: function(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerenter', inEvent);\n },\n leave: function(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerleave', inEvent) ;\n },\n over: function(inEvent) {\n inEvent.bubbles = true;\n t his.fireEvent('pointerover', inEvent);\n },\n out: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerout', inEvent);\n } ,\n cancel: function(inEvent) {\n inEvent.bubbles = true;\n this.fi reEvent('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.relate dTarget)) {\n this.enter(event);\n }\n },\n // LISTENER LOGIC\ n eventHandler: function(inEvent) {\n // This is used to prevent multipl e dispatch of pointerevents from\n // platform events. This can happen when two elements in different scopes\n // are set up to create pointer events, which is relevant to Shadow DOM.\n if (inEvent._handledByPE) {\n re turn;\n }\n var type = inEvent.type;\n var fn = this.eventMap && this.eventMap[type];\n if (fn) {\n fn(inEvent);\n }\n inEv ent._handledByPE = true;\n },\n // set up event listeners\n listen: fun ction(target, events) {\n events.forEach(function(e) {\n this.addEve nt(target, e);\n }, this);\n },\n // remove event listeners\n unli sten: function(target, events) {\n events.forEach(function(e) {\n th is.removeEvent(target, e);\n }, this);\n },\n addEvent: scope.externa l.addEvent || function(target, eventName) {\n target.addEventListener(event Name, this.boundHandler);\n },\n removeEvent: scope.external.removeEvent | | function(target, eventName) {\n target.removeEventListener(eventName, thi s.boundHandler);\n },\n // EVENT CREATION AND TRACKING\n /**\n * Cr eates a new Event of type `inType`, based on the information in\n * `inEvent `.\n *\n * @param {string} inType A string representing the type of even t to create\n * @param {Event} inEvent A platform event with a target\n * @return {Event} A PointerEvent of type `inType`\n */\n makeEvent: funct ion(inType, inEvent) {\n // relatedTarget must be null if pointer is captur ed\n if (this.captureInfo[inEvent.pointerId]) {\n inEvent.relatedTar get = null;\n }\n var e = new PointerEvent(inType, inEvent);\n if (inEvent.preventDefault) {\n e.preventDefault = inEvent.preventDefault;\ n }\n e._target = e._target || inEvent.target;\n return e;\n } ,\n // make and dispatch an event in one call\n fireEvent: function(inType , inEvent) {\n var e = this.makeEvent(inType, inEvent);\n return this. dispatchEvent(e);\n },\n /**\n * Returns a snapshot of inEvent, with w ritable properties.\n *\n * @param {Event} inEvent An event that contain s properties to copy.\n * @return {Object} An object containing shallow copi es of `inEvent`'s\n * properties.\n */\n cloneEvent: function(inEv ent) {\n var eventCopy = Object.create(null), 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 sha dow tree\n // Return the <use> element that is represented by the instanc e for Safari, Chrome, IE.\n // This is the behavior implemented by Firefo x.\n if (HAS_SVG_INSTANCE && (p === 'target' || p === 'relatedTarget')) { \n if (eventCopy[p] instanceof SVGElementInstance) {\n event Copy[p] = eventCopy[p].correspondingUseElement;\n }\n }\n } \n // keep the semantics of preventDefault\n if (inEvent.preventDefaul t) {\n eventCopy.preventDefault = function() {\n inEvent.prevent Default();\n };\n }\n return eventCopy;\n },\n getTarget: function(inEvent) {\n // if pointer capture is set, route all events for t he specified pointerId\n // to the capture target\n return this.captur eInfo[inEvent.pointerId] || inEvent._target;\n },\n setCapture: function(i nPointerId, inTarget) {\n if (this.captureInfo[inPointerId]) {\n thi s.releaseCapture(inPointerId);\n }\n this.captureInfo[inPointerId] = i nTarget;\n var e = document.createEvent('Event');\n e.initEvent('gotpo intercapture', true, false);\n e.pointerId = inPointerId;\n this.impli citRelease = this.releaseCapture.bind(this, inPointerId);\n document.addEve ntListener('pointerup', this.implicitRelease);\n document.addEventListener( 'pointercancel', this.implicitRelease);\n e._target = inTarget;\n this .asyncDispatchEvent(e);\n },\n releaseCapture: function(inPointerId) {\n var t = this.captureInfo[inPointerId];\n if (t) {\n var e = docu ment.createEvent('Event');\n e.initEvent('lostpointercapture', true, fals e);\n e.pointerId = inPointerId;\n this.captureInfo[inPointerId] = undefined;\n document.removeEventListener('pointerup', this.implicitRele ase);\n document.removeEventListener('pointercancel', this.implicitReleas e);\n e._target = t;\n this.asyncDispatchEvent(e);\n }\n } ,\n /**\n * Dispatches the event to its target.\n *\n * @param {E vent} inEvent The event to be dispatched.\n * @return {Boolean} True if an e vent handler returns true, false otherwise.\n */\n dispatchEvent: scope.e xternal.dispatchEvent || function(inEvent) {\n var t = this.getTarget(inEve nt);\n if (t) {\n return t.dispatchEvent(inEvent);\n }\n },\ n asyncDispatchEvent: function(inEvent) {\n requestAnimationFrame(this.d ispatchEvent.bind(this, inEvent));\n }\n };\n dispatcher.boundHandler = dis patcher.eventHandler.bind(dispatcher);\n scope.dispatcher = dispatcher;\n scop e.register = dispatcher.register.bind(dispatcher);\n scope.unregister = dispatc her.unregister.bind(dispatcher);\n})(window.PointerEventsPolyfill);\n","/*\n * C opyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source c ode is governed by a BSD-style\n * license that can be found in the LICENSE file .\n */\n\n/**\n * This module uses Mutation Observers to dynamically adjust whic h nodes will\n * generate Pointer Events.\n *\n * All nodes that wish to generat e Pointer Events must have the attribute\n * `touch-action` set to `none`.\n */\ n(function(scope) {\n var forEach = Array.prototype.forEach.call.bind(Array.pro totype.forEach);\n var map = Array.prototype.map.call.bind(Array.prototype.map) ;\n var toArray = Array.prototype.slice.call.bind(Array.prototype.slice);\n va r filter = Array.prototype.filter.call.bind(Array.prototype.filter);\n var MO = window.MutationObserver || window.WebKitMutationObserver;\n var SELECTOR = '[t ouch-action]';\n var OBSERVER_INIT = {\n subtree: true,\n childList: true ,\n attributes: true,\n attributeOldValue: true,\n attributeFilter: ['t ouch-action']\n };\n\n function Installer(add, remove, changed, binder) {\n this.addCallback = add.bind(binder);\n this.removeCallback = remove.bind(bin der);\n this.changedCallback = changed.bind(binder);\n if (MO) {\n th is.observer = new MO(this.mutationWatcher.bind(this));\n }\n }\n\n Installe r.prototype = {\n watchSubtree: function(target) {\n // Only watch scope s that can target find, as these are top-level.\n // Otherwise we can see d uplicate additions and removals that add noise.\n //\n // TODO(dfreedm an): For some instances with ShadowDOMPolyfill, we can see\n // a removal w ithout an insertion when a node is redistributed among\n // shadows. Since it all ends up correct in the document, watching only\n // the document wil l yield the correct mutations to watch.\n if (scope.targetFinding.canTarget (target)) {\n this.observer.observe(target, OBSERVER_INIT);\n }\n },\n enableOnSubtree: function(target) {\n this.watchSubtree(target);\n if (target === document && document.readyState !== 'complete') {\n this.installOnLoad();\n } else {\n this.installNewSubtree(target);\n }\n },\n installNewSubtree: function(target) {\n forEach(this.f indElements(target), this.addElement, this);\n },\n findElements: function (target) {\n if (target.querySelectorAll) {\n return target.querySel ectorAll(SELECTOR);\n }\n return [];\n },\n removeElement: funct ion(el) {\n this.removeCallback(el);\n },\n addElement: function(el) {\n this.addCallback(el);\n },\n elementChanged: function(el, oldValu e) {\n this.changedCallback(el, oldValue);\n },\n concatLists: functi on(accum, list) {\n return accum.concat(toArray(list));\n },\n // reg ister all touch-action = none nodes on document load\n installOnLoad: functio n() {\n document.addEventListener('readystatechange', function() {\n if (document.readyState === 'complete') {\n this.installNewSubtree(doc ument);\n }\n }.bind(this));\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 // flatt en the list\n return tree.reduce(this.concatLists, []);\n },\n mutati onWatcher: function(mutations) {\n mutations.forEach(this.mutationHandler, this);\n },\n mutationHandler: function(m) {\n if (m.type === 'childL ist') {\n var added = this.flattenMutationTree(m.addedNodes);\n ad ded.forEach(this.addElement, this);\n var removed = this.flattenMutationT ree(m.removedNodes);\n removed.forEach(this.removeElement, this);\n } else if (m.type === 'attributes') {\n this.elementChanged(m.target, m.o ldValue);\n }\n }\n };\n\n if (!MO) {\n Installer.prototype.watchSu btree = function(){\n console.warn('PointerEventsPolyfill: MutationObserver s not found, touch-action will not be dynamically detected');\n };\n }\n\n scope.Installer = Installer;\n})(window.PointerEventsPolyfill);\n","/*\n * Copyr ight 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 // radius around touchend that swallows mouse even ts\n var DEDUP_DIST = 25;\n\n var WHICH_TO_BUTTONS = [0, 1, 4, 2];\n\n var HA S_BUTTONS = false;\n try {\n HAS_BUTTONS = new MouseEvent('test', {buttons: 1}).buttons === 1;\n } catch (e) {}\n\n // handler block for native mouse even ts\n var mouseEvents = {\n POINTER_ID: 1,\n POINTER_TYPE: 'mouse',\n e vents: [\n 'mousedown',\n 'mousemove',\n 'mouseup',\n 'mouse over',\n 'mouseout'\n ],\n register: function(target) {\n dispat cher.listen(target, this.events);\n },\n unregister: function(target) {\n dispatcher.unlisten(target, this.events);\n },\n lastTouches: [],\n // collide with the global mouse listener\n isEventSimulatedFromTouch: func tion(inEvent) {\n var lts = this.lastTouches;\n var x = inEvent.client X, 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 prim ary 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 = dispatc her.cloneEvent(inEvent);\n // forward mouse preventDefault\n var pd = e.preventDefault;\n e.preventDefault = function() {\n inEvent.preven tDefault();\n pd();\n };\n e.pointerId = this.POINTER_ID;\n e.isPrimary = true;\n e.pointerType = this.POINTER_TYPE;\n if (!HAS_ BUTTONS) {\n e.buttons = WHICH_TO_BUTTONS[e.which] || 0;\n }\n return e;\n },\n mousedown: function(inEvent) {\n if (!this.isEventSi mulatedFromTouch(inEvent)) {\n var p = pointermap.has(this.POINTER_ID);\n // TODO(dfreedman) workaround for some elements not sending mouseup\n // http://crbug/149091\n if (p) {\n this.cancel(inEvent);\n }\n var e = this.prepareEvent(inEvent);\n pointermap.set(t his.POINTER_ID, inEvent);\n dispatcher.down(e);\n }\n },\n mou semove: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n dispatcher.move(e);\n }\n },\n mouseup: function(inEvent) {\n if (!this.isEventSimulate dFromTouch(inEvent)) {\n var p = pointermap.get(this.POINTER_ID);\n if (p && p.button === inEvent.button) {\n var e = this.prepareEvent(i nEvent);\n dispatcher.up(e);\n this.cleanupMouse();\n } \n }\n },\n mouseover: function(inEvent) {\n if (!this.isEventSi mulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n dispatcher.enterOver(e);\n }\n },\n mouseout: function(inEvent) {\ n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.pre pareEvent(inEvent);\n dispatcher.leaveOut(e);\n }\n },\n cance l: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatc her.cancel(e);\n this.cleanupMouse();\n },\n cleanupMouse: function() {\n pointermap['delete'](this.POINTER_ID);\n }\n };\n\n scope.mouseEv ents = mouseEvents;\n})(window.PointerEventsPolyfill);\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(fu nction(scope) {\n var dispatcher = scope.dispatcher;\n var captureInfo = dispa tcher.captureInfo;\n var findTarget = scope.findTarget;\n var allShadows = sco pe.targetFinding.allShadows.bind(scope.targetFinding);\n var pointermap = dispa tcher.pointermap;\n var touchMap = Array.prototype.map.call.bind(Array.prototyp e.map);\n // This should be long enough to ignore compat mouse events made by t ouch\n var DEDUP_TIMEOUT = 2500;\n var CLICK_COUNT_TIMEOUT = 200;\n var ATTRI B = 'touch-action';\n var INSTALLER;\n // The presence of touch event handlers blocks scrolling, and so we must be careful to\n // avoid adding handlers unne cessarily. Chrome plans to add a touch-action-delay property\n // (crbug.com/3 29559) to address this, and once we have that we can opt-in to a simpler\n // h andler registration mechanism. Rather than try to predict how exactly to opt-in to\n // that we'll just leave this disabled until there is a build of Chrome t o test.\n var HAS_TOUCH_ACTION_DELAY = false;\n \n // handler block for nativ e touch events\n var touchEvents = {\n events: [\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel'\n ],\n register: fun ction(target) {\n if (HAS_TOUCH_ACTION_DELAY) {\n dispatcher.listen( target, this.events);\n } else {\n INSTALLER.enableOnSubtree(target) ;\n }\n },\n unregister: function(target) {\n if (HAS_TOUCH_ACTI ON_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 el._scrol lType = st;\n dispatcher.listen(el, this.events);\n // set touch-a ction on shadows as well\n allShadows(el).forEach(function(s) {\n s._scrollType = st;\n dispatcher.listen(s, this.events);\n }, this);\n }\n },\n elementRemoved: function(el) {\n el._scrollTyp e = undefined;\n dispatcher.unlisten(el, this.events);\n // remove tou ch-action from shadow\n allShadows(el).forEach(function(s) {\n s._sc rollType = undefined;\n dispatcher.unlisten(s, this.events);\n }, th is);\n },\n elementChanged: function(el, oldValue) {\n var a = el.get Attribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n var o ldSt = this.touchActionToScrollType(oldValue);\n // simply update scrollTyp e if listeners are already established\n if (st && oldSt) {\n el._sc rollType = st;\n allShadows(el).forEach(function(s) {\n s._scrol lType = st;\n }, this);\n } else if (oldSt) {\n this.elementR emoved(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 = to uchAction;\n var st = this.scrollTypes;\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.S CROLLER.exec(t)) {\n return 'XY';\n }\n },\n POINTER_TYPE: 'to uch',\n firstTouch: null,\n isPrimaryTouch: function(inTouch) {\n ret urn this.firstTouch === inTouch.identifier;\n },\n setPrimaryTouch: functi on(inTouch) {\n // set primary touch if there no pointers, or the only poin ter is the mouse\n if (pointermap.pointers() === 0 || (pointermap.pointers( ) === 1 && pointermap.has(1))) {\n this.firstTouch = inTouch.identifier;\ n this.firstXY = {X: inTouch.clientX, Y: inTouch.clientY};\n this. scrolling = false;\n this.cancelResetClickCount();\n }\n },\n removePrimaryPointer: function(inPointer) {\n if (inPointer.isPrimary) {\n this.firstTouch = null;\n this.firstXY = null;\n this.reset ClickCount();\n }\n },\n clickCount: 0,\n resetId: null,\n rese tClickCount: function() {\n var fn = function() {\n this.clickCount = 0;\n this.resetId = null;\n }.bind(this);\n this.resetId = se tTimeout(fn, CLICK_COUNT_TIMEOUT);\n },\n cancelResetClickCount: function( ) {\n if (this.resetId) {\n clearTimeout(this.resetId);\n }\n },\n typeToButtons: function(type) {\n var ret = 0;\n if (type == = 'touchstart' || type === 'touchmove') {\n ret = 1;\n }\n retu rn ret;\n },\n touchToPointer: function(inTouch) {\n var cte = this.c urrentTouchEvent;\n var e = dispatcher.cloneEvent(inTouch);\n // Spec specifies that pointerId 1 is reserved for Mouse.\n // Touch identifiers ca n start at 0.\n // Add 2 to the touch identifier for compatibility.\n var id = e.pointerId = inTouch.identifier + 2;\n e.target = captureInfo[id] || findTarget(e);\n e.bubbles = true;\n e.cancelable = true;\n e .detail = this.clickCount;\n e.button = 0;\n e.buttons = this.typeToBu ttons(cte.type);\n e.width = inTouch.webkitRadiusX || inTouch.radiusX || 0; \n e.height = inTouch.webkitRadiusY || inTouch.radiusY || 0;\n e.press ure = inTouch.webkitForce || inTouch.force || 0.5;\n e.isPrimary = this.isP rimaryTouch(inTouch);\n e.pointerType = this.POINTER_TYPE;\n // forwar d touch preventDefaults\n var self = this;\n e.preventDefault = functi on() {\n self.scrolling = false;\n self.firstXY = null;\n c te.preventDefault();\n };\n return e;\n },\n processTouches: fun ction(inEvent, inFunction) {\n var tl = inEvent.changedTouches;\n this .currentTouchEvent = inEvent;\n for (var i = 0, t; i < tl.length; i++) {\n t = tl[i];\n inFunction.call(this, this.touchToPointer(t));\n }\n },\n // For single axis scrollers, determines whether the element sho uld emit\n // pointer events or behave as a scroller\n shouldScroll: funct ion(inEvent) {\n if (this.firstXY) {\n var ret;\n var scrollA xis = inEvent.currentTarget._scrollType;\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(p);\n }\n }, this);\n d.forEach(this.cancelOut, this);\n }\n },\n touchstart: function(inEvent) {\n this.vacuumTouches(inEvent);\n this. setPrimaryTouch(inEvent.changedTouches[0]);\n this.dedupSynthMouse(inEvent) ;\n if (!this.scrolling) {\n this.clickCount++;\n this.proces sTouches(inEvent, this.overDown);\n }\n },\n overDown: function(inPoi nter) {\n var p = pointermap.set(inPointer.pointerId, {\n target: in Pointer.target,\n out: inPointer,\n outTarget: inPointer.target\n });\n dispatcher.over(inPointer);\n dispatcher.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(inEvent);\n } else {\n inEvent.preventDefault();\n this.processTouches(inEvent, t his.moveOverOut);\n }\n }\n },\n moveOverOut: function(inPoint er) {\n var event = inPointer;\n var pointer = pointermap.get(event.po interId);\n // a finger drifted off the screen, ignore it\n if (!point er) {\n return;\n }\n var outEvent = pointer.out;\n var ou tTarget = pointer.outTarget;\n dispatcher.move(event);\n if (outEvent && outTarget !== event.target) {\n outEvent.relatedTarget = event.target; \n event.relatedTarget = outTarget;\n // recover from retargeting by shadow\n outEvent.target = outTarget;\n if (event.target) {\n dispatcher.leaveOut(outEvent);\n dispatcher.enterOver(event);\n } else {\n // clean up case when finger leaves the screen\n event.target = outTarget;\n event.relatedTarget = null;\n this.cancelOut(event);\n }\n }\n pointer.out = event;\n pointer.outTarget = event.target;\n },\n touchend: function(inEvent) {\n this.dedupSynthMouse(inEvent);\n this.processTouches(inEvent, this.upOu t);\n },\n upOut: function(inPointer) {\n if (!this.scrolling) {\n dispatcher.up(inPointer);\n dispatcher.out(inPointer);\n disp atcher.leave(inPointer);\n }\n this.cleanUpPointer(inPointer);\n }, \n touchcancel: function(inEvent) {\n this.processTouches(inEvent, this. cancelOut);\n },\n cancelOut: function(inPointer) {\n dispatcher.canc el(inPointer);\n dispatcher.out(inPointer);\n dispatcher.leave(inPoint er);\n this.cleanUpPointer(inPointer);\n },\n cleanUpPointer: functio n(inPointer) {\n pointermap['delete'](inPointer.pointerId);\n this.rem ovePrimaryPointer(inPointer);\n },\n // prevent synth mouse events from cr eating pointer events\n dedupSynthMouse: function(inEvent) {\n var lts = scope.mouseEvents.lastTouches;\n var t = inEvent.changedTouches[0];\n // only the primary finger will synth mouse events\n if (this.isPrimaryTou ch(t)) {\n // remember x/y of last touch\n var lt = {x: t.clientX, y: t.clientY};\n lts.push(lt);\n var fn = (function(lts, lt){\n var i = lts.indexOf(lt);\n if (i > -1) {\n lts.splic e(i, 1);\n }\n }).bind(null, lts, lt);\n setTimeout(fn, D EDUP_TIMEOUT);\n }\n }\n };\n\n if (!HAS_TOUCH_ACTION_DELAY) {\n IN STALLER = new scope.Installer(touchEvents.elementAdded, touchEvents.elementRemov ed, touchEvents.elementChanged, touchEvents);\n }\n\n scope.touchEvents = touc hEvents;\n})(window.PointerEventsPolyfill);\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(function(scop e) {\n var dispatcher = scope.dispatcher;\n var pointermap = dispatcher.pointe rmap;\n var HAS_BITMAP_TYPE = window.MSPointerEvent && typeof window.MSPointerE vent.MSPOINTER_TYPE_MOUSE === 'number';\n var msEvents = {\n events: [\n 'MSPointerDown',\n 'MSPointerMove',\n 'MSPointerUp',\n 'MSPoint erOut',\n 'MSPointerOver',\n 'MSPointerCancel',\n 'MSGotPointerCa pture',\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.cloneEvent(inEvent);\n e.pointerType = this.POINTER_TYPES[inEvent.pointerType];\n }\n retu rn e;\n },\n cleanup: function(id) {\n pointermap['delete'](id);\n },\n MSPointerDown: function(inEvent) {\n pointermap.set(inEvent.pointe rId, inEvent);\n var e = this.prepareEvent(inEvent);\n dispatcher.down (e);\n },\n MSPointerMove: function(inEvent) {\n var e = this.prepare Event(inEvent);\n dispatcher.move(e);\n },\n MSPointerUp: function(in Event) {\n var e = this.prepareEvent(inEvent);\n dispatcher.up(e);\n this.cleanup(inEvent.pointerId);\n },\n MSPointerOut: function(inEvent ) {\n var e = this.prepareEvent(inEvent);\n dispatcher.leaveOut(e);\n },\n MSPointerOver: function(inEvent) {\n var e = this.prepareEvent(i nEvent);\n dispatcher.enterOver(e);\n },\n MSPointerCancel: function( inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e );\n this.cleanup(inEvent.pointerId);\n },\n MSLostPointerCapture: fu nction(inEvent) {\n var e = dispatcher.makeEvent('lostpointercapture', inEv ent);\n dispatcher.dispatchEvent(e);\n },\n MSGotPointerCapture: func tion(inEvent) {\n var e = dispatcher.makeEvent('gotpointercapture', inEvent );\n dispatcher.dispatchEvent(e);\n }\n };\n\n scope.msEvents = msEven ts;\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 contains the handlers for native platform events.\n * From here, the dispatcher is called to create unified pointer events.\n * Included are touch events (v1), mouse events, and MSPointerEvents.\n */\n(function(scope) {\n var dispatcher = scope.dispatcher;\n\n // only activate if this platform does not have pointer events\n if (window.PointerEvent !== scope.PointerEvent) {\n\n if (window.na vigator.msPointerEnabled) {\n var tp = window.navigator.msMaxTouchPoints;\n Object.defineProperty(window.navigator, '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.ontouchstart !== undefined) {\n dispatch er.registerSource('touch', scope.touchEvents);\n }\n }\n\n dispatcher .register(document);\n }\n})(window.PointerEventsPolyfill);\n","/*\n * Copyrigh t 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 n = window.na vigator;\n var s, r;\n function assertDown(id) {\n if (!dispatcher.pointerm ap.has(id)) {\n throw new Error('InvalidPointerId');\n }\n }\n if (n.m sPointerEnabled) {\n s = function(pointerId) {\n assertDown(pointerId);\ n this.msSetPointerCapture(pointerId);\n };\n r = function(pointerId) {\n assertDown(pointerId);\n this.msReleasePointerCapture(pointerId); \n };\n } else {\n s = function setPointerCapture(pointerId) {\n ass ertDown(pointerId);\n dispatcher.setCapture(pointerId, this);\n };\n r = function releasePointerCapture(pointerId) {\n assertDown(pointerId);\n dispatcher.releaseCapture(pointerId, this);\n };\n }\n if (window.Elem ent && !Element.prototype.setPointerCapture) {\n Object.defineProperties(Elem ent.prototype, {\n 'setPointerCapture': {\n value: s\n },\n 'releasePointerCapture': {\n value: r\n }\n });\n }\n})(window .PointerEventsPolyfill);\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(function(scope) {\n /**\n * T his class contains the gesture recognizers that create the PointerGesture\n * events.\n *\n * @class PointerGestures\n * @static\n */\n scope = scope || {};\n scope.utils = {\n LCA: {\n // Determines the lowest node in t he ancestor chain of a and b\n find: function(a, b) {\n if (a === b) {\n return a;\n }\n // fast case, a is a direct descenda nt of b or vice versa\n if (a.contains) {\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 return n;\n },\n depth: function (n) {\n var d = 0;\n while(n) {\n d++;\n n = n.p arentNode;\n }\n return d;\n }\n }\n };\n scope.findLCA = function(a, b) {\n return scope.utils.LCA.find(a, b);\n }\n window.Pointe rGestures = scope;\n})(window.PointerGestures);\n","/*\n * Copyright 2013 The Po lymer 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 * Th is module implements an map of pointer states\n */\n(function(scope) {\n var US E_MAP = window.Map && window.Map.prototype.forEach;\n var POINTERS_FN = functio n(){ return this.size; };\n function PointerMap() {\n if (USE_MAP) {\n var m = new Map();\n m.pointers = POINTERS_FN;\n return m;\n } else {\n this.keys = [];\n this.values = [];\n }\n }\n\n PointerMap.p rototype = {\n set: function(inId, inEvent) {\n var i = this.keys.indexO f(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.indexO f(inId);\n return this.values[i];\n },\n clear: function() {\n t his.keys.length = 0;\n this.values.length = 0;\n },\n // return value , key, map\n forEach: function(callback, thisArg) {\n this.values.forEac h(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.PointerGestures);\n" ,"/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of thi s source code is governed by a BSD-style\n * license that can be found in the LI CENSE 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 Level 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 'ta rget',\n 'currentTarget',\n 'screenX',\n 'screenY',\n 'pageX',\n 'pageY',\n 'tapPrevented'\n ];\n\n var CLONE_DEFAULTS = [\n // MouseEven t\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 L evel 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 handled Events: new WeakMap(),\n targets: new WeakMap(),\n handlers: {},\n reco gnizers: {},\n events: {},\n // Add a new gesture recognizer to the event listeners.\n // Recognizer needs an `events` property.\n registerRecognize r: function(inName, inRecognizer) {\n var r = inRecognizer;\n this.rec ognizers[inName] = r;\n r.events.forEach(function(e) {\n if (r[e]) { \n this.events[e] = true;\n var f = r[e].bind(r);\n t his.addHandler(e, f);\n }\n }, this);\n },\n addHandler: funct ion(inEvent, inFn) {\n var e = inEvent;\n if (!this.handlers[e]) {\n this.handlers[e] = [];\n }\n this.handlers[e].push(inFn);\n } ,\n // add event listeners for inTarget\n registerTarget: function(inTarge t) {\n this.listen(Object.keys(this.events), inTarget);\n },\n // rem ove event listeners for inTarget\n unregisterTarget: function(inTarget) {\n this.unlisten(Object.keys(this.events), inTarget);\n },\n // LISTENER LOGIC\n eventHandler: function(inEvent) {\n if (this.handledEvents.get(i nEvent)) {\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 shadowed) target correct for\n // async dispatching\n var e = this.cloneEvent(inEvent);\n requestAnimationFram e(this.runQueue.bind(this, inHandlerFns, e));\n },\n // Dispatch the queue d events\n runQueue: function(inHandlers, inEvent) {\n this.currentPoint erId = inEvent.pointerId;\n for (var i = 0, f, l = inHandlers.length; (i < l) && (f = inHandlers[i]); i++) {\n f(inEvent);\n }\n this.curr entPointerId = 0;\n },\n // set up event listeners\n listen: function(i nEvents, inTarget) {\n inEvents.forEach(function(e) {\n this.addEven t(e, this.boundHandler, false, inTarget);\n }, this);\n },\n // remov e event listeners\n unlisten: function(inEvents) {\n inEvents.forEach(fu nction(e) {\n this.removeEvent(e, this.boundHandler, false, inTarget);\n }, this);\n },\n addEvent: function(inEventName, inEventHandler, inCa pture, inTarget) {\n inTarget.addEventListener(inEventName, inEventHandler, inCapture);\n },\n removeEvent: function(inEventName, inEventHandler, inC apture, inTarget) {\n inTarget.removeEventListener(inEventName, inEventHand ler, inCapture);\n },\n // EVENT CREATION AND TRACKING\n // Creates a n ew Event of type `inType`, based on the information in\n // `inEvent`.\n m akeEvent: function(inType, inDict) {\n return new PointerGestureEvent(inTyp e, inDict);\n },\n /*\n * Returns a snapshot of inEvent, with writable properties.\n *\n * @method cloneEvent\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 }\n return eventCopy;\n },\n // Dispatches the event to its target.\n dispatchEvent: function(inEvent, inTarget) {\n var t = inTarget || this.targets.get(inEvent);\n if (t) {\n t.dispatchEvent(inEvent);\n if (inEvent.tapPrevented) {\n this.preventTap(this.currentPointerId);\n }\n }\n },\n a syncDispatchEvent: function(inEvent, inTarget) {\n requestAnimationFrame(th is.dispatchEvent.bind(this, inEvent, inTarget));\n },\n preventTap: functi on(inPointerId) {\n var t = this.recognizers.tap;\n if (t){\n t .preventTap(inPointerId);\n }\n }\n };\n dispatcher.boundHandler = dis patcher.eventHandler.bind(dispatcher);\n // recognizers call into the dispatche r and load later\n // solve the chicken and egg problem by having registerScope s module run last\n dispatcher.registerQueue = [];\n dispatcher.immediateRegis ter = false;\n scope.dispatcher = dispatcher;\n /**\n * Enable gesture event s for a given scope, typically\n * [ShadowRoots](https://dvcs.w3.org/hg/webcom ponents/raw-file/tip/spec/shadow/index.html#shadow-root-object).\n *\n * @fo r PointerGestures\n * @method register\n * @param {ShadowRoot} scope A top l evel scope to enable gesture\n * support on.\n */\n scope.register = functi on(inScope) {\n if (dispatcher.immediateRegister) {\n var pe = window.Po interEventsPolyfill;\n if (pe) {\n pe.register(inScope);\n }\n scope.dispatcher.registerTarget(inScope);\n } else {\n dispatcher.r egisterQueue.push(inScope);\n }\n };\n scope.register(document);\n})(window .PointerGestures);\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/**\n * This event is fired when a poin ter is held down for 200ms.\n *\n * @module PointerGestures\n * @submodule Event s\n * @class hold\n */\n/**\n * Type of pointer that made the holding event.\n * @type String\n * @property pointerType\n */\n/**\n * Screen X axis position of the held pointer\n * @type Number\n * @property clientX\n */\n/**\n * Screen Y a xis position of the held pointer\n * @type Number\n * @property clientY\n */\n/* *\n * Type of pointer that made the holding event.\n * @type String\n * @propert y pointerType\n */\n/**\n * This event is fired every 200ms while a pointer is h eld down.\n *\n * @class holdpulse\n * @extends hold\n */\n/**\n * Milliseconds pointer has been held down.\n * @type Number\n * @property holdTime\n */\n/**\n * This event is fired when a held pointer is released or moved.\n *\n * @class r eleased\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_DELAY: 200,\n // pointer can move WIGGLE_THRESHOLD pixels before not cou nting as a hold\n WIGGLE_THRESHOLD: 16,\n events: [\n 'pointerdown',\ n 'pointermove',\n 'pointerup',\n 'pointercancel'\n ],\n he ldPointer: null,\n holdJob: null,\n pulse: function() {\n var hold = Date.now() - this.heldPointer.timeStamp;\n var type = this.held ? 'holdpuls e' : 'hold';\n this.fireHold(type, hold);\n this.held = true;\n },\ n cancel: function() {\n clearInterval(this.holdJob);\n if (this.he ld) {\n this.fireHold('release');\n }\n this.held = false;\n this.heldPointer = null;\n this.target = null;\n this.holdJob = nul l;\n },\n pointerdown: function(inEvent) {\n if (inEvent.isPrimary && !this.heldPointer) {\n this.heldPointer = inEvent;\n this.target = inEvent.target;\n this.holdJob = setInterval(this.pulse.bind(this), thi s.HOLD_DELAY);\n }\n },\n pointerup: function(inEvent) {\n if (t his.heldPointer && this.heldPointer.pointerId === inEvent.pointerId) {\n this.cancel();\n }\n },\n pointercancel: function(inEvent) {\n t his.cancel();\n },\n pointermove: function(inEvent) {\n if (this.held Pointer && this.heldPointer.pointerId === inEvent.pointerId) {\n var x = inEvent.clientX - this.heldPointer.clientX;\n var y = inEvent.clientY - t his.heldPointer.clientY;\n if ((x * x + y * y) > this.WIGGLE_THRESHOLD) { \n this.cancel();\n }\n }\n },\n fireHold: function(i nType, inHoldTime) {\n var p = {\n pointerType: this.heldPointer.poi nterType,\n clientX: this.heldPointer.clientX,\n clientY: this.hel dPointer.clientY\n };\n if (inHoldTime) {\n p.holdTime = inHold Time;\n }\n var e = dispatcher.makeEvent(inType, p);\n dispatcher .dispatchEvent(e, this.target);\n if (e.tapPrevented) {\n dispatcher .preventTap(this.heldPointer.pointerId);\n }\n }\n };\n dispatcher.reg isterRecognizer('hold', hold);\n})(window.PointerGestures);\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 event denotes the beginning of a series of tracking events.\n *\n * @module PointerGestures\n * @submodule Events\n * @class trackstart\n */\n/** \n * Pixels moved in the x direction since trackstart.\n * @type Number\n * @pro perty dx\n */\n/**\n * Pixes moved in the y direction since trackstart.\n * @typ e Number\n * @property dy\n */\n/**\n * Pixels moved in the x direction since th e last track.\n * @type Number\n * @property ddx\n */\n/**\n * Pixles moved in t he y direction since the last track.\n * @type Number\n * @property ddy\n */\n/* *\n * The clientX position of the track gesture.\n * @type Number\n * @property clientX\n */\n/**\n * The clientY position of the track gesture.\n * @type Numbe r\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 trac k gesture.\n * @type Number\n * @property pageY\n */\n/**\n * The screenX positi on of the track gesture.\n * @type Number\n * @property screenX\n */\n/**\n * Th e screenY position of the track gesture.\n * @type Number\n * @property screenY\ n */\n/**\n * The last x axis direction of the pointer.\n * @type Number\n * @pr operty xDirection\n */\n/**\n * The last y axis direction of the pointer.\n * @t ype Number\n * @property yDirection\n */\n/**\n * A shared object between all tr acking events.\n * @type Object\n * @property trackInfo\n */\n/**\n * The elemen t currently under 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 pointerType\n */\n/**\n *\n * This event fires for all pointer moveme nt being tracked.\n *\n * @class track\n * @extends trackstart\n */\n/**\n * Thi s event fires when the pointer is no longer being tracked.\n *\n * @class tracke nd\n * @extends trackstart\n */\n\n (function(scope) {\n var dispatcher = scop e.dispatcher;\n var pointermap = new scope.PointerMap();\n var track = {\n events: [\n 'pointerdown',\n 'pointermove',\n 'pointerup',\ n 'pointercancel'\n ],\n WIGGLE_THRESHOLD: 4,\n clampDir: func tion(inDelta) {\n return inDelta > 0 ? 1 : -1;\n },\n calcPosition Delta: function(inA, inB) {\n var x = 0, y = 0;\n if (inA && inB) {\ n x = inB.pageX - inA.pageX;\n y = inB.pageY - inA.pageY;\n }\n return {x: x, y: y};\n },\n fireTrack: function(inType, inEv ent, inTrackingData) {\n var t = inTrackingData;\n var d = this.calc PositionDelta(t.downEvent, inEvent);\n var dd = this.calcPositionDelta(t.l astMoveEvent, inEvent);\n if (dd.x) {\n t.xDirection = this.clampD ir(dd.x);\n }\n if (dd.y) {\n t.yDirection = this.clampDir(d d.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 page Y: inEvent.pageY,\n screenX: inEvent.screenX,\n screenY: inEvent .screenY,\n xDirection: t.xDirection,\n yDirection: t.yDirection ,\n trackInfo: t.trackInfo,\n relatedTarget: inEvent.target,\n pointerType: inEvent.pointerType\n };\n var e = dispatcher.ma keEvent(inType, trackData);\n t.lastMoveEvent = inEvent;\n dispatche r.dispatchEvent(e, t.downTarget);\n },\n pointerdown: function(inEvent) {\n if (inEvent.isPrimary && (inEvent.pointerType === 'mouse' ? inEvent.bu ttons === 1 : true)) {\n var p = {\n downEvent: inEvent,\n downTarget: inEvent.target,\n trackInfo: {},\n lastMo veEvent: null,\n xDirection: 0,\n yDirection: 0,\n tracking: false\n };\n pointermap.set(inEvent.pointerId, p);\n }\n },\n pointermove: function(inEvent) {\n var p = pointerm ap.get(inEvent.pointerId);\n if (p) {\n if (!p.tracking) {\n var d = this.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_THRESHOLD\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 pointerup: function(inEvent) {\n var p = pointermap.get(inEv ent.pointerId);\n if (p) {\n if (p.tracking) {\n this.fi reTrack('trackend', inEvent, p);\n }\n pointermap.delete(inEvent .pointerId);\n }\n },\n pointercancel: function(inEvent) {\n this.pointerup(inEvent);\n }\n };\n dispatcher.registerRecognizer('trac k', track);\n })(window.PointerGestures);\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/**\n * This eve nt denotes a rapid down/move/up sequence from a pointer.\n *\n * The event is se nt to the first element the pointer went down on.\n *\n * @module PointerGesture s\n * @submodule Events\n * @class flick\n */\n/**\n * Signed velocity of the fl ick in the x direction.\n * @property xVelocity\n * @type Number\n */\n/**\n * S igned velocity of the flick in the y direction.\n * @type Number\n * @property y Velocity\n */\n/**\n * Unsigned total velocity of the flick.\n * @type Number\n * @property velocity\n */\n/**\n * Angle of the flick in degrees, with 0 along t he\n * positive x axis.\n * @type Number\n * @property angle\n */\n/**\n * Axis with the greatest absolute velocity. Denoted\n * with 'x' or 'y'.\n * @type Stri ng\n * @property majorAxis\n */\n/**\n * Type of the pointer that made the flick .\n * @type String\n * @property pointerType\n */\n\n(function(scope) {\n var d ispatcher = scope.dispatcher;\n var flick = {\n // TODO(dfreedman): value sh ould be low enough for low speed flicks, but\n // high enough to remove accid ental flicks\n MIN_VELOCITY: 0.5 /* px/ms */,\n MAX_QUEUE: 4,\n moveQue ue: [],\n target: null,\n pointerId: null,\n events: [\n 'pointerd own',\n 'pointermove',\n 'pointerup',\n 'pointercancel'\n ],\n pointerdown: function(inEvent) {\n if (inEvent.isPrimary && !this.point erId) {\n this.pointerId = inEvent.pointerId;\n this.target = inEv ent.target;\n this.addMove(inEvent);\n }\n },\n pointermove: f unction(inEvent) {\n if (inEvent.pointerId === this.pointerId) {\n t his.addMove(inEvent);\n }\n },\n pointerup: function(inEvent) {\n if (inEvent.pointerId === this.pointerId) {\n this.fireFlick(inEvent);\ n }\n this.cleanup();\n },\n pointercancel: function(inEvent) {\ n this.cleanup();\n },\n cleanup: function() {\n this.moveQueue = [];\n this.target = null;\n this.pointerId = null;\n },\n addM ove: function(inEvent) {\n if (this.moveQueue.length >= this.MAX_QUEUE) {\n this.moveQueue.shift();\n }\n this.moveQueue.push(inEvent);\n },\n fireFlick: 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.timeS tamp;\n dx = e.clientX - m.clientX, dy = e.clientY - m.clientY;\n tx = dx / dt, ty = 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 = Mat h.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: inEve nt.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 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\n/*\n * Basic strat egy: find the farthest apart points, use as diameter of circle\n * react to size change and rotation of the chord\n */\n\n/**\n * @module PointerGestures\n * @s ubmodule Events\n * @class pinch\n */\n/**\n * Scale of the pinch zoom gesture\n * @property scale\n * @type Number\n */\n/**\n * Center X position of pointers causing pinch\n * @property centerX\n * @type Number\n */\n/**\n * Center Y posi tion of pointers causing pinch\n * @property centerY\n * @type Number\n */\n\n/* *\n * @module PointerGestures\n * @submodule Events\n * @class rotate\n */\n/**\ n * Angle (in degrees) of rotation. Measured from starting positions of pointers .\n * @property angle\n * @type Number\n */\n/**\n * Center X position of pointe rs causing rotation\n * @property centerX\n * @type Number\n */\n/**\n * Center Y position of pointers causing rotation\n * @property centerY\n * @type Number\n */\n(function(scope) {\n var dispatcher = scope.dispatcher;\n var pointermap = new scope.PointerMap();\n var RAD_TO_DEG = 180 / Math.PI;\n var pinch = {\n events: [\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointercancel'\n ],\n reference: {},\n pointerdown: function(ev) { \n pointermap.set(ev.pointerId, ev);\n if (pointermap.pointers() == 2) {\n var points = this.calcChord();\n var angle = this.calcAngle(p oints);\n this.reference = {\n angle: angle,\n diameter : points.diameter,\n target: scope.findLCA(points.a.target, points.b.ta rget)\n };\n }\n },\n pointerup: function(ev) {\n pointer map.delete(ev.pointerId);\n },\n pointermove: function(ev) {\n if (po intermap.has(ev.pointerId)) {\n pointermap.set(ev.pointerId, ev);\n if (pointermap.pointers() > 1) {\n this.calcPinchRotate();\n } \n }\n },\n pointercancel: function(ev) {\n this.pointerup(ev);\ n },\n dispatchPinch: function(diameter, points) {\n var zoom = diame ter / this.reference.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 dispatchRotate: function(angle, points) {\n var diff = Math.r ound((angle - this.reference.angle) % 360);\n var ev = dispatcher.makeEvent ('rotate', {\n angle: diff,\n centerX: points.center.x,\n c enterY: points.center.y\n });\n dispatcher.dispatchEvent(ev, this.refe rence.target);\n },\n calcPinchRotate: function() {\n var points = th is.calcChord();\n var diameter = points.diameter;\n var angle = this.c alcAngle(points);\n if (diameter != this.reference.diameter) {\n thi s.dispatchPinch(diameter, points);\n }\n if (angle != this.reference.a ngle) {\n this.dispatchRotate(angle, points);\n }\n },\n calcC hord: function() {\n var pointers = [];\n pointermap.forEach(function( p) {\n pointers.push(p);\n });\n var dist = 0;\n // start with at least two pointers\n var points = {a: pointers[0], b: pointers[1]}; \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.clie ntX) / 2;\n y = Math.abs(points.a.clientY + points.b.clientY) / 2;\n p oints.center = { x: x, y: y };\n points.diameter = dist;\n return poin ts;\n },\n calcAngle: function(points) {\n var x = points.a.clientX - points.b.clientX;\n var y = points.a.clientY - points.b.clientY;\n re turn (360 + Math.atan2(y, x) * RAD_TO_DEG) % 360;\n },\n };\n dispatcher.re gisterRecognizer('pinch', pinch);\n})(window.PointerGestures);\n","/*\n * Copyri ght 2013 The Polymer Authors. All rights reserved.\n * Use of this source code i s governed 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 ev ent from being created by calling\n * `event.preventTap`.\n *\n * Any pointer ev ent can prevent the tap by setting the `tapPrevented` property\n * on itself.\n *\n * @module 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 ax is position of the tap.\n * @property y\n * @type Number\n */\n/**\n * Type of t he pointer that made the tap.\n * @property pointerType\n * @type String\n */\n( function(scope) {\n var dispatcher = scope.dispatcher;\n var pointermap = new scope.PointerMap();\n var tap = {\n events: [\n 'pointerdown',\n ' pointermove',\n 'pointerup',\n 'pointercancel',\n 'keyup'\n ], \n pointerdown: function(inEvent) {\n if (inEvent.isPrimary && !inEvent. tapPrevented) {\n pointermap.set(inEvent.pointerId, {\n target: inEvent.target,\n buttons: inEvent.buttons,\n x: inEvent.clien tX,\n y: inEvent.clientY\n });\n }\n },\n pointermove : function(inEvent) {\n if (inEvent.isPrimary) {\n var start = point ermap.get(inEvent.pointerId);\n if (start) {\n if (inEvent.tapPr evented) {\n pointermap.delete(inEvent.pointerId);\n }\n }\n }\n },\n shouldTap: function(e, downState) {\n if (!e.ta pPrevented) {\n if (e.pointerType === 'mouse') {\n // only allow left click to tap for mouse\n return downState.buttons === 1;\n } else {\n return true;\n }\n }\n },\n pointerup: fu nction(inEvent) {\n var start = pointermap.get(inEvent.pointerId);\n i f (start && this.shouldTap(inEvent, start)) {\n var t = scope.findLCA(sta rt.target, inEvent.target);\n if (t) {\n var e = dispatcher.make Event('tap', {\n x: inEvent.clientX,\n y: inEvent.clientY, \n detail: inEvent.detail,\n pointerType: inEvent.pointerT ype\n });\n dispatcher.dispatchEvent(e, t);\n }\n }\n pointermap.delete(inEvent.pointerId);\n },\n pointercancel: funct ion(inEvent) {\n pointermap.delete(inEvent.pointerId);\n },\n keyup: function(inEvent) {\n var code = inEvent.keyCode;\n // 32 == spacebar\ n if (code === 32) {\n var t = inEvent.target;\n if (!(t inst anceof HTMLInputElement || t instanceof HTMLTextAreaElement)) {\n dispa tcher.dispatchEvent(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 pointermap.delete(inPointerId);\n }\n };\n dispatcher.registerRecogn izer('tap', tap);\n})(window.PointerGestures);\n","/*\n * Copyright 2014 The Pol ymer 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 * Bec ause recognizers are loaded after dispatcher, we have to wait to register\n * sc opes until after all the recognizers.\n */\n(function(scope) {\n var dispatcher = scope.dispatcher;\n function registerScopes() {\n dispatcher.immediateReg ister = true;\n var rq = dispatcher.registerQueue;\n rq.forEach(scope.regi ster);\n rq.length = 0;\n }\n if (document.readyState === 'complete') {\n registerScopes();\n } else {\n // register scopes after a steadystate is r eached\n // less MutationObserver churn\n document.addEventListener('ready statechange', function() {\n if (document.readyState === 'complete') {\n registerScopes();\n }\n });\n }\n})(window.PointerGestures);\n","/ / Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n// This code may only be used under the BSD style license found at http://polymer.github .io/LICENSE.txt\n// The complete set of authors may be found at http://polymer.g ithub.io/AUTHORS.txt\n// The complete set of contributors may be found at http:/ /polymer.github.io/CONTRIBUTORS.txt\n// Code distributed by Google as part of th e polymer project is also\n// subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n\n(function(global) {\n 'use strict';\n\n var filter = Array.prototype.filter.call.bind(Array.prototype.filter);\n\n fu nction getTreeScope(node) {\n while (node.parentNode) {\n node = node.pa rentNode;\n }\n\n return typeof node.getElementById === 'function' ? node : null;\n }\n\n Node.prototype.bind = function(name, observable) {\n consol e.error('Unhandled binding to Node: ', this, name, observable);\n };\n\n funct ion updateBindings(node, name, binding) {\n var bindings = node.bindings_;\n if (!bindings)\n bindings = node.bindings_ = {};\n\n if (bindings[nam e])\n binding[name].close();\n\n return bindings[name] = binding;\n }\n \n function returnBinding(node, name, binding) {\n return binding;\n }\n\n function sanitizeValue(value) {\n return value == null ? '' : value;\n }\n\ n function updateText(node, value) {\n node.data = sanitizeValue(value);\n }\n\n function textBinding(node) {\n return function(value) {\n return updateText(node, value);\n };\n }\n\n var maybeUpdateBindings = returnBindi ng;\n\n Object.defineProperty(Platform, 'enableBindingsReflection', {\n get: function() {\n return maybeUpdateBindings === updateBindings;\n },\n set: function(enable) {\n maybeUpdateBindings = enable ? updateBindings : returnBinding;\n return enable;\n },\n configurable: true\n });\n\n Text.prototype.bind = function(name, value, oneTime) {\n if (name !== 'textC ontent')\n return Node.prototype.bind.call(this, name, value, oneTime);\n\n if (oneTime)\n return updateText(this, value);\n\n var observable = value;\n updateText(this, observable.open(textBinding(this)));\n return ma ybeUpdateBindings(this, name, observable);\n }\n\n function updateAttribute(el , name, conditional, value) {\n if (conditional) {\n if (value)\n el.setAttribute(name, '');\n else\n el.removeAttribute(name);\n return;\n }\n\n el.setAttribute(name, sanitizeValue(value));\n }\n\n f unction 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 conditional = name[na me.length - 1] == '?';\n if (conditional) {\n this.removeAttribute(name) ;\n name = name.slice(0, -1);\n }\n\n if (oneTime)\n return upda teAttribute(this, name, conditional, value);\n\n\n var observable = value;\n updateAttribute(this, name, conditional,\n observable.open(attributeBi nding(this, name, conditional)));\n\n return maybeUpdateBindings(this, name, observable);\n };\n\n var checkboxEventType;\n (function() {\n // Attempt to feature-detect which event (change or click) is fired first\n // for check boxes.\n var div = document.createElement('div');\n var checkbox = div.app endChild(document.createElement('input'));\n checkbox.setAttribute('type', 'c heckbox');\n var first;\n var count = 0;\n checkbox.addEventListener('c lick', function(e) {\n count++;\n first = first || 'click';\n });\n checkbox.addEventListener('change', function() {\n count++;\n firs t = first || 'change';\n });\n\n var event = document.createEvent('MouseEv ent');\n event.initMouseEvent(\"click\", true, true, window, 0, 0, 0, 0, 0, f alse,\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 = co unt == 1 ? 'change' : first;\n })();\n\n function getEventForInputType(element ) {\n switch (element.type) {\n case 'checkbox':\n return checkbo xEventType;\n case 'radio':\n case 'select-multiple':\n case 'sel ect-one':\n return 'change';\n case 'range':\n if (/Trident|M SIE/.test(navigator.userAgent))\n return 'change';\n default:\n return 'input';\n }\n }\n\n function updateInput(input, property, valu e, santizeFn) {\n input[property] = (santizeFn || sanitizeValue)(value);\n } \n\n function inputBinding(input, property, santizeFn) {\n return function(v alue) {\n return updateInput(input, property, value, santizeFn);\n }\n }\n\n function noop() {}\n\n function bindInputEvent(input, property, observab le, postEventFn) {\n var eventType = getEventForInputType(input);\n\n func tion eventHandler() {\n observable.setValue(input[property]);\n observ able.discardChanges();\n (postEventFn || noop)(input);\n Platform.perf ormMicrotaskCheckpoint();\n }\n input.addEventListener(eventType, eventHan dler);\n\n return {\n close: function() {\n input.removeEventList ener(eventType, eventHandler);\n observable.close();\n },\n\n o bservable_: observable\n }\n }\n\n function booleanSanitize(value) {\n r eturn Boolean(value);\n }\n\n // |element| is assumed to be an HTMLInputElemen t with |type| == 'radio'.\n // Returns an array containing all radio buttons ot her than |element| that\n // have the same |name|, either in the form that |ele ment| belongs to or,\n // if no form, in the document tree to which |element| b elongs.\n //\n // This implementation is based upon the HTML spec definition o f a\n // \"radio button group\":\n // http://www.whatwg.org/specs/web-apps/c urrent-work/multipage/number-state.html#radio-button-group\n //\n function get AssociatedRadioButtons(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 = getTreeSco pe(element);\n if (!treeScope)\n return [];\n var radios = tree Scope.querySelectorAll(\n 'input[type=\"radio\"][name=\"' + element.nam e + '\"]');\n return filter(radios, function(el) {\n return el != el ement && !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 // check 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.observable_.setValue(false);\n }\n });\n }\n }\n\n HTMLInputElement.prototype.bind = function(name, value, oneTime) {\n if (name !== 'value' && name !== 'checked')\n return HTMLElement.prototype. bind.call(this, name, value, oneTime);\n\n this.removeAttribute(name);\n v ar sanitizeFn = name == 'checked' ? booleanSanitize : sanitizeValue;\n var po stEventFn = name == 'checked' ? checkedPostEvent : noop;\n\n if (oneTime)\n return updateInput(this, name, value, sanitizeFn);\n\n\n var observable = value;\n var binding = bindInputEvent(this, name, observable, postEventFn);\ n updateInput(this, name,\n observable.open(inputBinding(this, name, sanitizeFn)),\n sanitizeFn);\n\n // Checkboxes may need to update bindings of other checkboxes.\n return updateBindings(this, name, binding);\n }\n\n HTMLTextAreaElement.prototype.bind = function(name, value, o neTime) {\n if (name !== 'value')\n return HTMLElement.prototype.bind.ca ll(this, name, value, oneTime);\n\n this.removeAttribute('value');\n\n if (oneTime)\n return updateInput(this, 'value', value);\n\n var observable = value;\n var binding = bindInputEvent(this, 'value', observable);\n upd ateInput(this, 'value',\n observable.open(inputBinding(this, 'val ue', sanitizeValue)));\n return maybeUpdateBindings(this, name, binding);\n }\n\n function updateOption(option, value) {\n var parentNode = option.paren tNode;;\n var select;\n var selectBinding;\n var oldValue;\n if (par entNode instanceof HTMLSelectElement &&\n parentNode.bindings_ &&\n parentNode.bindings_.value) {\n select = parentNode;\n selectBinding = select.bindings_.value;\n oldValue = select.value;\n }\n\n option. value = sanitizeValue(value);\n\n if (select && select.value != oldValue) {\n selectBinding.observable_.setValue(select.value);\n selectBinding.obs ervable_.discardChanges();\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, value, oneTime) {\n if (name !== 'value')\n return HTMLE lement.prototype.bind.call(this, name, value, oneTime);\n\n this.removeAttrib ute('value');\n\n if (oneTime)\n return updateOption(this, value);\n\n var observable = value;\n var binding = bindInputEvent(this, 'value', obser vable);\n updateOption(this, observable.open(optionBinding(this)));\n retu rn maybeUpdateBindings(this, name, binding);\n }\n\n HTMLSelectElement.prototy pe.bind = function(name, value, oneTime) {\n if (name === 'selectedindex')\n name = 'selectedIndex';\n\n if (name !== 'selectedIndex' && name !== 'va lue')\n return HTMLElement.prototype.bind.call(this, name, value, oneTime); \n\n this.removeAttribute(name);\n\n if (oneTime)\n return updateInpu t(this, name, value);\n\n var observable = value;\n var binding = bindInpu tEvent(this, name, observable);\n updateInput(this, name,\n ob servable.open(inputBinding(this, name)));\n\n // Option update events may nee d to access select bindings.\n return updateBindings(this, name, binding);\n }\n})(this);\n","// Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n// This code may only be used under the BSD style license found at ht tp://polymer.github.io/LICENSE.txt\n// The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n// The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n// Code distributed by G oogle as part of the polymer project is also\n// subject to an additional IP rig hts grant found at http://polymer.github.io/PATENTS.txt\n\n(function(global) {\n 'use strict';\n\n function assert(v) {\n if (!v)\n throw new Error('A ssertion failed');\n }\n\n var forEach = Array.prototype.forEach.call.bind(Arr ay.prototype.forEach);\n\n function getFragmentRoot(node) {\n var p;\n wh ile (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 = getFragmentRoot( node);\n\n if (node.protoContent_)\n ref = node.protoContent_.queryS elector(selector);\n else if (node.getElementById)\n ref = node.getE lementById(id);\n\n if (ref || !node.templateCreator_)\n break\n\n node = node.templateCreator_;\n }\n\n return ref;\n }\n\n function g etInstanceRoot(node) {\n while (node.parentNode) {\n node = node.parentN ode;\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: function(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(key);\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.keys.le ngth; i++)\n f.call(opt_this || this, this.values[i], this.keys[i], thi s);\n }\n };\n }\n\n // JScript does not have __proto__. We wrap all o bject literals with\n // createObject which uses Object.create, Object.definePr operty and\n // Object.getOwnPropertyDescriptor to create a new object that doe s 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) { return obj; } :\n function(obj) {\n var proto = obj.__proto__;\n if (!proto)\n return ob j;\n var newObject = Object.create(proto);\n Object.getOwnProperty Names(obj).forEach(function(name) {\n Object.defineProperty(newObject, name,\n Object.getOwnPropertyDescriptor(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 true;\n return this.documentE lement.contains(node);\n }\n }\n\n var BIND = 'bind';\n var REPEAT = 'repe at';\n var IF = 'if';\n\n var templateAttributeDirectives = {\n 'template': true,\n 'repeat': true,\n 'bind': true,\n 'ref': true\n };\n\n var s emanticTemplateElements = {\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 'OPTGROUP': true\n };\n\n var hasTemplateElement = typeof HTMLTemplateElement !== 'undefin ed';\n if (hasTemplateElement) {\n // TODO(rafaelw): Remove when fix for\n // https://codereview.chromium.org/164803002/\n // makes it to Chrome relea se.\n (function() {\n var t = document.createElement('template');\n var d = t.content.ownerDocument;\n var html = d.appendChild(d.createElemen t('html'));\n var head = html.appendChild(d.createElement('head'));\n var base = d.createElement('base');\n base.href = document.baseURI;\n head.appendChild(base);\n })();\n }\n\n var allTemplatesSelectors = 'templa te, ' +\n Object.keys(semanticTemplateElements).map(function(tagName) {\n return tagName.toLowerCase() + '[template]';\n }).join(', ');\n\n fu nction isSVGTemplate(el) {\n return el.tagName == 'template' &&\n e l.namespaceURI == 'http://www.w3.org/2000/svg';\n }\n\n function isHTMLTemplat e(el) {\n return el.tagName == 'TEMPLATE' &&\n el.namespaceURI == ' http://www.w3.org/1999/xhtml';\n }\n\n function isAttributeTemplate(el) {\n return Boolean(semanticTemplateElements[el.tagName] &&\n el.h asAttribute('template'));\n }\n\n function isTemplate(el) {\n if (el.isTemp late_ === undefined)\n el.isTemplate_ = el.tagName == 'TEMPLATE' || isAttri buteTemplate(el);\n\n return el.isTemplate_;\n }\n\n // FIXME: Observe temp lates being added/removed from documents\n // FIXME: Expose imperative API to d ecorate and observe templates in\n // \"disconnected tress\" (e.g. ShadowRoot)\ n document.addEventListener('DOMContentLoaded', function(e) {\n bootstrapTem platesRecursivelyFrom(document);\n // FIXME: Is this needed? Seems like it sh ouldn't be.\n Platform.performMicrotaskCheckpoint();\n }, false);\n\n funct ion forAllTemplatesFrom(node, fn) {\n var subTemplates = node.querySelectorAl l(allTemplatesSelectors);\n\n if (isTemplate(node))\n fn(node)\n forE ach(subTemplates, fn);\n }\n\n function bootstrapTemplatesRecursivelyFrom(node ) {\n function bootstrap(template) {\n if (!HTMLTemplateElement.decorate (template))\n bootstrapTemplatesRecursivelyFrom(template.content);\n } \n\n forAllTemplatesFrom(node, bootstrap);\n }\n\n if (!hasTemplateElement) {\n /**\n * This represents a <template> element.\n * @constructor\n * @extends {HTMLElement}\n */\n global.HTMLTemplateElement = functio n() {\n throw TypeError('Illegal constructor');\n };\n }\n\n var hasPr oto = '__proto__' in {};\n\n function mixin(to, from) {\n Object.getOwnPrope rtyNames(from).forEach(function(name) {\n Object.defineProperty(to, name,\n Object.getOwnPropertyDescriptor(from, name));\n } );\n }\n\n // http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/ index.html#dfn-template-contents-owner\n function getOrCreateTemplateContentsOw ner(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.removeChild(d.lastChild);\n }\n doc.templa teContentsOwner_ = d;\n }\n return d;\n }\n\n function getTemplateStagin gDocument(template) {\n if (!template.stagingDocument_) {\n var owner = template.ownerDocument;\n if (!owner.stagingDocument_) {\n owner.sta gingDocument_ = owner.implementation.createHTMLDocument('');\n\n // TODO( rafaelw): Remove when fix for\n // https://codereview.chromium.org/164803 002/\n // makes it to Chrome release.\n var base = owner.stagingDo cument_.createElement('base');\n base.href = document.baseURI;\n o wner.stagingDocument_.head.appendChild(base);\n\n owner.stagingDocument_. stagingDocument_ = owner.stagingDocument_;\n }\n\n template.stagingDoc ument_ = owner.stagingDocument_;\n }\n\n return template.stagingDocument_; \n }\n\n // For non-template browsers, the parser will disallow <template> in certain\n // locations, so we allow \"attribute templates\" which combine the t emplate\n // element with the top-level container node of the content, e.g.\n //\n // <tr template repeat=\"{{ foo }}\"\" class=\"bar\"><td>Bar</td></tr>\n //\n // becomes\n //\n // <template repeat=\"{{ foo }}\">\n // + #docu ment-fragment\n // + <tr class=\"bar\">\n // + <td>Bar</td>\n //\n function extractTemplateFromAttributeTemplate(el) {\n var template = el.owne rDocument.createElement('template');\n el.parentNode.insertBefore(template, e l);\n\n var attribs = el.attributes;\n var count = attribs.length;\n wh ile (count-- > 0) {\n var attrib = attribs[count];\n if (templateAttri buteDirectives[attrib.name]) {\n if (attrib.name !== 'template')\n template.setAttribute(attrib.name, attrib.value);\n el.removeAttribute (attrib.name);\n }\n }\n\n return template;\n }\n\n function extrac tTemplateFromSVGTemplate(el) {\n var template = el.ownerDocument.createElemen t('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, attr ib.value);\n el.removeAttribute(attrib.name);\n }\n\n el.parentNode.r emoveChild(el);\n return template;\n }\n\n function liftNonNativeTemplateCh ildrenIntoContent(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(chil d);\n }\n }\n\n var templateObserver;\n if (typeof MutationObserver == 'fu nction') {\n templateObserver = new MutationObserver(function(records) {\n for (var i = 0; i < records.length; i++) {\n records[i].target.refChan ged_();\n }\n });\n }\n\n /**\n * Ensures proper API and content mod el 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 createIns tance() is invoked.\n */\n HTMLTemplateElement.decorate = function(el, opt_in stanceRef) {\n if (el.templateIsDecorated_)\n return false;\n\n var t emplateElement = el;\n templateElement.templateIsDecorated_ = true;\n\n va r isNativeHTMLTemplate = isHTMLTemplate(templateElement) &&\n hasTemplateElement;\n var bootstrapContents = isNativeHTMLTemplat e;\n var liftContents = !isNativeHTMLTemplate;\n var liftRoot = false;\n\n if (!isNativeHTMLTemplate) {\n if (isAttributeTemplate(templateElement) ) {\n assert(!opt_instanceRef);\n templateElement = extractTemplat eFromAttributeTemplate(el);\n templateElement.templateIsDecorated_ = true ;\n isNativeHTMLTemplate = hasTemplateElement;\n liftRoot = true;\ n } else if (isSVGTemplate(templateElement)) {\n templateElement = e xtractTemplateFromSVGTemplate(el);\n templateElement.templateIsDecorated_ = true;\n isNativeHTMLTemplate = hasTemplateElement;\n }\n }\n\n if (!isNativeHTMLTemplate) {\n fixTemplateElementPrototype(templateElem ent);\n var doc = getOrCreateTemplateContentsOwner(templateElement);\n templateElement.content_ = doc.createDocumentFragment();\n }\n\n if (opt_ instanceRef) {\n // template is contained within an instance, its direct co ntent must be\n // empty\n templateElement.instanceRef_ = opt_instance Ref;\n } else if (liftContents) {\n liftNonNativeTemplateChildrenIntoCon tent(templateElement,\n el,\n liftRoot);\n } else if (bootstrapCo ntents) {\n bootstrapTemplatesRecursivelyFrom(templateElement.content);\n }\n\n return true;\n };\n\n // TODO(rafaelw): This used to decorate recur sively all templates from a given\n // node. This happens by default on 'DOMCon tentLoaded', but may be needed\n // in subtrees not descendent from document (e .g. ShadowRoot).\n // Review whether this is the right public API.\n HTMLTempl ateElement.bootstrap = bootstrapTemplatesRecursivelyFrom;\n\n var htmlElement = global.HTMLUnknownElement || HTMLElement;\n\n var contentDescriptor = {\n g et: 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 prototy pe as created in the constructor.\n HTMLTemplateElement.prototype = Object.cr eate(htmlElement.prototype);\n\n Object.defineProperty(HTMLTemplateElement.pr ototype, 'content',\n contentDescriptor);\n }\n\n fun ction fixTemplateElementPrototype(el) {\n if (hasProto)\n el.__proto__ = HTMLTemplateElement.prototype;\n else\n mixin(el, HTMLTemplateElement.p rototype);\n }\n\n function ensureSetModelScheduled(template) {\n if (!temp late.setModelFn_) {\n template.setModelFn_ = function() {\n template .setModelFnScheduled_ = false;\n var map = getBindings(template,\n template.delegate_ && template.delegate_.prepareBinding);\n processB indings(template, map, template.model_);\n };\n }\n\n if (!template.s etModelFnScheduled_) {\n template.setModelFnScheduled_ = true;\n Obser ver.runEOM_(template.setModelFn_);\n }\n }\n\n mixin(HTMLTemplateElement.pr ototype, {\n bind: function(name, value, oneTime) {\n if (name != 'ref') \n return Element.prototype.bind.call(this, name, value, oneTime);\n\n var self = this;\n var ref = oneTime ? value : value.open(function(ref) {\n self.setAttribute('ref', ref);\n self.refChanged_();\n }) ;\n\n this.setAttribute('ref', ref);\n this.refChanged_();\n if ( oneTime)\n return;\n\n if (!this.bindings_) {\n this.bindings _ = { ref: value };\n } else {\n this.bindings_.ref = value;\n }\n\n return value;\n },\n\n processBindingDirectives_: function(dire ctives) {\n if (this.iterator_)\n this.iterator_.closeDeps();\n\n if (!directives.if && !directives.bind && !directives.repeat) {\n if ( this.iterator_) {\n this.iterator_.close();\n this.iterator_ = undefined;\n }\n\n return;\n }\n\n if (!this.iterator_) {\n this.iterator_ = new TemplateIterator(this);\n }\n\n this. iterator_.updateDependencies(directives, this.model_);\n\n if (templateObse rver) {\n templateObserver.observe(this, { attributes: true,\n attributeFilter: ['ref'] });\n }\n\n ret urn this.iterator_;\n },\n\n createInstance: function(model, bindingDelega te, delegate_) {\n if (bindingDelegate)\n delegate_ = this.newDelega te_(bindingDelegate);\n\n if (!this.refContent_)\n this.refContent_ = this.ref_.content;\n var content = this.refContent_;\n if (content.f irstChild === null)\n return emptyInstance;\n\n var map = this.bindi ngMap_;\n if (!map || map.content !== content) {\n // TODO(rafaelw): Setup a MutationObserver on content to detect\n // when the instanceMap is invalid.\n map = createInstanceBindingMap(content,\n delega te_ && delegate_.prepareBinding) || [];\n map.content = content;\n this.bindingMap_ = map;\n }\n\n var stagingDocument = getTemplateStag ingDocument(this);\n var instance = stagingDocument.createDocumentFragment( );\n instance.templateCreator_ = this;\n instance.protoContent_ = cont ent;\n instance.bindings_ = [];\n instance.terminator_ = null;\n var instanceRecord = instance.templateInstance_ = {\n firstNode: null,\n lastNode: null,\n model: model\n };\n\n var i = 0;\n var collectTerminator = false;\n for (var child = content.firstChild; chi ld; child = child.nextSibling) {\n // The terminator of the instance is t he clone of the last child of the\n // content. If the last child is an a ctive template, it may produce\n // instances as a result of production, so simply collecting the last\n // child of the instance after it has fin ished producing may be wrong.\n if (child.nextSibling === null)\n collectTerminator = true;\n\n var clone = cloneAndBindInstance(child, i nstance, stagingDocument,\n map.children [i++],\n model,\n delegate_,\n instance. bindings_);\n clone.templateInstance_ = instanceRecord;\n if (coll ectTerminator)\n instance.terminator_ = clone;\n }\n\n instan ceRecord.firstNode = instance.firstChild;\n instanceRecord.lastNode = insta nce.lastChild;\n instance.templateCreator_ = undefined;\n instance.pro toContent_ = undefined;\n return instance;\n },\n\n get model() {\n return this.model_;\n },\n\n set model(model) {\n this.model_ = m odel;\n ensureSetModelScheduled(this);\n },\n\n get bindingDelegate() {\n return this.delegate_ && this.delegate_.raw;\n },\n\n refChanged _: function() {\n if (!this.iterator_ || this.refContent_ === this.ref_.con tent)\n return;\n\n this.refContent_ = undefined;\n this.iterat or_.valueChanged();\n this.iterator_.updateIteratedValue();\n },\n\n clear: function() {\n this.model_ = undefined;\n this.delegate_ = unde fined;\n if (this.bindings_ && this.bindings_.ref)\n this.bindings_. ref.close()\n this.refContent_ = undefined;\n if (!this.iterator_)\n return;\n this.iterator_.valueChanged();\n this.iterator_.close( )\n this.iterator_ = undefined;\n },\n\n setDelegate_: function(deleg ate) {\n this.delegate_ = delegate;\n this.bindingMap_ = undefined;\n if (this.iterator_) {\n this.iterator_.instancePositionChangedFn_ = 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 = bindi ngDelegate && bindingDelegate[name];\n if (typeof fn != 'function')\n return;\n\n return function() {\n return fn.apply(bindingD elegate, arguments);\n };\n }\n\n return {\n raw: bindin gDelegate,\n prepareBinding: delegateFn('prepareBinding'),\n prepa reInstanceModel: delegateFn('prepareInstanceModel'),\n prepareInstancePos itionChanged:\n delegateFn('prepareInstancePositionChanged')\n } ;\n },\n\n // TODO(rafaelw): Assigning .bindingDelegate always succeeds. I t may\n // make sense to issue a warning or even throw if the template is alr eady\n // \"activated\", since this would be a strange thing to do.\n set bindingDelegate(bindingDelegate) {\n if (this.delegate_) {\n throw E rror('Template must be cleared before a new bindingDelegate ' +\n 'can be assigned');\n }\n\n this.setDelegate_(this.newDelegate_(b indingDelegate));\n },\n\n get ref_() {\n var ref = searchRefId(this, this.getAttribute('ref'));\n if (!ref)\n ref = this.instanceRef_;\n \n if (!ref)\n return this;\n\n var nextRef = ref.ref_;\n return nextRef ? nextRef : ref;\n }\n });\n\n // Returns\n // a) undefin ed if there are no mustaches.\n // b) [TEXT, (ONE_TIME?, PATH, DELEGATE_FN, T EXT)+] if there is at least one mustache.\n function parseMustaches(s, name, no de, prepareBindingFn) {\n if (!s || !s.length)\n return;\n\n var toke ns;\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 oneTimeStart = s.indexOf('[[ ', lastIndex);\n var oneTime = false;\n var terminator = '}}';\n\n if (oneTimeStart >= 0 &&\n (startIndex < 0 || oneTimeStart < startInd ex)) {\n startIndex = oneTimeStart;\n oneTime = true;\n ter minator = ']]';\n }\n\n endIndex = startIndex < 0 ? -1 : s.indexOf(ter minator, startIndex + 2);\n\n if (endIndex < 0) {\n if (!tokens)\n return;\n\n tokens.push(s.slice(lastIndex)); // TEXT\n bre ak;\n }\n\n tokens = tokens || [];\n tokens.push(s.slice(lastInde x, startIndex)); // TEXT\n var pathString = s.slice(startIndex + 2, endInde x).trim();\n tokens.push(oneTime); // ONE_TIME?\n onlyOneTime = onlyOn eTime && oneTime;\n var delegateFn = prepareBindingFn &&\n prepareBindingFn(pathString, name, node);\n // Don't try to parse the expression if there's a prepareBinding function\n if (delegateFn == null) {\n tokens.push(Path.get(pathString)); // PATH\n } else {\n t okens.push(null);\n }\n tokens.push(delegateFn); // DELEGATE_FN\n lastIndex = endIndex + 2;\n }\n\n if (lastIndex === length)\n tokens .push(''); // TEXT\n\n tokens.hasOnePath = tokens.length === 5;\n tokens.i sSimplePath = tokens.hasOnePath &&\n tokens[0] == '' && \n tokens[4] == '';\n tokens.onlyOneTime = onlyOneTi me;\n\n tokens.combinator = function(values) {\n var newValue = tokens[0 ];\n\n for (var i = 1; i < tokens.length; i += 4) {\n var value = to kens.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 function processO neTimeBinding(name, tokens, node, model) {\n if (tokens.hasOnePath) {\n var delegateFn = tokens[3];\n var value = delegateFn ? delegateFn(model, no de, true) :\n tokens[2].getValueFrom(model);\n return tokens.isSimplePath ? value : tokens.combinator(value);\n }\n\n v ar values = [];\n for (var i = 1; i < tokens.length; i += 4) {\n var del egateFn = tokens[i + 2];\n values[(i - 1) / 4] = delegateFn ? delegateFn(mo del, node) :\n tokens[i + 1].getValueFrom(model);\n }\n\n return tokens.combinator(values);\n }\n\n function processSinglePathBinding(name, tok ens, node, model) {\n var delegateFn = tokens[3];\n var observer = delegat eFn ? delegateFn(model, node, false) :\n new PathObserver(model, tokens[2 ]);\n\n return tokens.isSimplePath ? observer :\n new ObserverTransfor m(observer, tokens.combinator);\n }\n\n function processBinding(name, tokens, node, model) {\n if (tokens.onlyOneTime)\n return processOneTimeBinding( name, tokens, node, model);\n\n if (tokens.hasOnePath)\n return processS inglePathBinding(name, tokens, node, model);\n\n var observer = new CompoundO bserver();\n\n for (var i = 1; i < tokens.length; i += 4) {\n var oneTim e = tokens[i];\n var delegateFn = tokens[i + 2];\n\n if (delegateFn) { \n var value = delegateFn(model, node, oneTime);\n if (oneTime)\n observer.addPath(value)\n else\n observer.addObserver(v alue);\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 ObserverTransform(obs erver, tokens.combinator);\n }\n\n function processBindings(node, bindings, mo del, 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(nam e, value, tokens.onlyOneTime);\n if (binding && instanceBindings)\n instanceBindings.push(binding);\n }\n\n if (!bindings.isTemplate)\n r eturn;\n\n node.model_ = model;\n var iter = node.processBindingDirectives _(bindings);\n if (instanceBindings && iter)\n instanceBindings.push(ite r);\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, prepa reBindingFn) {\n assert(element);\n\n var bindings = [];\n var ifFound = false;\n var bindFound = false;\n\n for (var i = 0; i < element.attribut es.length; i++) {\n var attr = element.attributes[i];\n var name = att r.name;\n var value = attr.value;\n\n // Allow bindings expressed in a ttributes to be prefixed with underbars.\n // We do this to allow correct s emantics for browsers that don't implement\n // <template> where certain at tributes might trigger side-effects -- and\n // for IE which sanitizes cert ain attributes, disallowing mustache\n // replacements in their text.\n while (name[0] === '_') {\n name = name.substring(1);\n }\n\n if (isTemplate(element) &&\n (name === IF || name === BIND || name === REPEAT)) {\n continue;\n }\n\n var tokens = parseMustaches(val ue, name, element,\n prepareBindingFn);\n if (!tokens)\n continue;\n\n bindings.push(name, tokens);\n }\n\n if (isTemplate(element)) {\n bindings.isTemplate = true;\n binding s.if = parseWithDefault(element, IF, prepareBindingFn);\n bindings.bind = p arseWithDefault(element, BIND, prepareBindingFn);\n bindings.repeat = parse WithDefault(element, REPEAT, prepareBindingFn);\n\n if (bindings.if && !bin dings.bind && !bindings.repeat)\n bindings.bind = parseMustaches('{{}}', BIND, element, prepareBindingFn);\n }\n\n return bindings;\n }\n\n funct ion getBindings(node, prepareBindingFn) {\n if (node.nodeType === Node.ELEMEN T_NODE)\n return parseAttributeBindings(node, prepareBindingFn);\n\n if (node.nodeType === Node.TEXT_NODE) {\n var tokens = parseMustaches(node.dat a, 'textContent', node,\n prepareBindingFn);\n if (tokens)\n return ['textContent', tokens];\n }\n\n return [ ];\n }\n\n function cloneAndBindInstance(node, parent, stagingDocument, bindin gs, model,\n delegate,\n instanceBindings,\n instanceRecord) {\n var clone = parent.appendChild(stagingDocument.importNode(node, false));\n\n var i = 0;\n for (var child = node.firstChild; child; child = child.nextSibl ing) {\n cloneAndBindInstance(child, clone, stagingDocument,\n bindings.children[i++],\n model,\n delegate,\n instanceBindings) ;\n }\n\n if (bindings.isTemplate) {\n HTMLTemplateElement.decorate(c lone, node);\n if (delegate)\n clone.setDelegate_(delegate);\n }\ n\n processBindings(clone, bindings, model, instanceBindings);\n return cl one;\n }\n\n function createInstanceBindingMap(node, prepareBindingFn) {\n var map = getBindings(node, prepareBindingFn);\n map.children = {};\n var index = 0;\n for (var child = node.firstChild; child; child = child.nextSibli ng) {\n map.children[index++] = createInstanceBindingMap(child, prepareBind ingFn);\n }\n\n return map;\n }\n\n Object.defineProperty(Node.prototype , 'templateInstance', {\n get: function() {\n var instance = this.templa teInstance_;\n return instance ? instance :\n (this.parentNode ? t his.parentNode.templateInstance : undefined);\n }\n });\n\n var emptyInstan ce = document.createDocumentFragment();\n emptyInstance.bindings_ = [];\n empt yInstance.terminator_ = null;\n\n function TemplateIterator(templateElement) {\ n this.closed = false;\n this.templateElement_ = templateElement;\n thi s.instances = [];\n this.deps = undefined;\n this.iteratedValue = [];\n this.presentValue = undefined;\n this.arrayObserver = undefined;\n }\n\n T emplateIterator.prototype = {\n closeDeps: function() {\n var deps = thi s.deps;\n if (deps) {\n if (deps.ifOneTime === false)\n dep s.ifValue.close();\n if (deps.oneTime === false)\n deps.value.cl ose();\n }\n },\n\n updateDependencies: function(directives, model) { \n this.closeDeps();\n\n var deps = this.deps = {};\n var templat e = this.templateElement_;\n\n if (directives.if) {\n deps.hasIf = t rue;\n deps.ifOneTime = directives.if.onlyOneTime;\n deps.ifValue = processBinding(IF, directives.if, template, model);\n\n // oneTime if & predicate is false. nothing else to do.\n if (deps.ifOneTime && !deps.if Value) {\n this.updateIteratedValue();\n return;\n }\n\ n if (!deps.ifOneTime)\n deps.ifValue.open(this.updateIteratedVa lue, this);\n }\n\n if (directives.repeat) {\n deps.repeat = tr ue;\n deps.oneTime = directives.repeat.onlyOneTime;\n deps.value = processBinding(REPEAT, directives.repeat, template, model);\n } else {\n deps.repeat = 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.updateIteratedV alue, this);\n\n this.updateIteratedValue();\n },\n\n updateIteratedV alue: function() {\n if (this.deps.hasIf) {\n var ifValue = this.dep s.ifValue;\n if (!this.deps.ifOneTime)\n ifValue = ifValue.disca rdChanges();\n if (!ifValue) {\n this.valueChanged();\n return;\n }\n }\n\n var value = this.deps.value;\n if (!t his.deps.oneTime)\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: functio n(value, observeValue) {\n if (!Array.isArray(value))\n value = [];\ n\n if (value === this.iteratedValue)\n return;\n\n this.unobse rve();\n this.presentValue = value;\n if (observeValue) {\n thi s.arrayObserver = new ArrayObserver(this.presentValue);\n this.arrayObser ver.open(this.handleSplices, this);\n }\n\n this.handleSplices(ArrayOb server.calculateSplices(this.presentValue,\n this.iteratedValue));\n },\n\n getLastInstanceNode: fu nction(index) {\n if (index == -1)\n return this.templateElement_;\n var instance = this.instances[index];\n var terminator = instance.ter minator_;\n if (!terminator)\n return this.getLastInstanceNode(index - 1);\n\n if (terminator.nodeType !== Node.ELEMENT_NODE ||\n this .templateElement_ === terminator) {\n return terminator;\n }\n\n var subtemplateIterator = terminator.iterator_;\n if (!subtemplateIterato r)\n return terminator;\n\n return subtemplateIterator.getLastTempla teNode();\n },\n\n getLastTemplateNode: function() {\n return this.ge tLastInstanceNode(this.instances.length - 1);\n },\n\n insertInstanceAt: f unction(index, fragment) {\n var previousInstanceLast = this.getLastInstanc eNode(index - 1);\n var parent = this.templateElement_.parentNode;\n t his.instances.splice(index, 0, fragment);\n\n parent.insertBefore(fragment, previousInstanceLast.nextSibling);\n },\n\n extractInstanceAt: function(i ndex) {\n var previousInstanceLast = this.getLastInstanceNode(index - 1);\n var lastNode = this.getLastInstanceNode(index);\n var parent = this.t emplateElement_.parentNode;\n var instance = this.instances.splice(index, 1 )[0];\n\n while (lastNode !== previousInstanceLast) {\n var node = p reviousInstanceLast.nextSibling;\n if (node == lastNode)\n lastN ode = previousInstanceLast;\n\n instance.appendChild(parent.removeChild(n ode));\n }\n\n return instance;\n },\n\n getDelegateFn: function (fn) {\n fn = fn && fn(this.templateElement_);\n return typeof fn === 'function' ? fn : null;\n },\n\n handleSplices: function(splices) {\n if (this.closed || !splices.length)\n return;\n\n var template = th is.templateElement_;\n\n if (!template.parentNode) {\n this.close(); \n return;\n }\n\n ArrayObserver.applySplices(this.iteratedValu e, this.presentValue,\n splices);\n\n var d elegate = template.delegate_;\n if (this.instanceModelFn_ === undefined) {\ n this.instanceModelFn_ =\n this.getDelegateFn(delegate && del egate.prepareInstanceModel);\n }\n\n if (this.instancePositionChangedF n_ === undefined) {\n this.instancePositionChangedFn_ =\n this .getDelegateFn(delegate &&\n delegate.prepareInsta ncePositionChanged);\n }\n\n // Instance Removals\n var instanceC ache = new Map;\n var removeDelta = 0;\n for (var i = 0; i < splices.l ength; i++) {\n var splice = splices[i];\n var removed = splice.re moved;\n for (var j = 0; j < removed.length; j++) {\n var model = removed[j];\n var instance = this.extractInstanceAt(splice.index + re moveDelta);\n if (instance !== emptyInstance) {\n instanceCa che.set(model, instance);\n }\n }\n\n removeDelta -= spli ce.addedCount;\n }\n\n // Instance Insertions\n for (var i = 0; i < splices.length; i++) {\n var splice = splices[i];\n var addInde x = splice.index;\n for (; addIndex < splice.index + splice.addedCount; a ddIndex++) {\n var model = this.iteratedValue[addIndex];\n var instance = instanceCache.get(model);\n if (instance) {\n in stanceCache.delete(model);\n } else {\n if (this.instanceMod elFn_) {\n model = this.instanceModelFn_(model);\n }\n\n if (model === undefined) {\n instance = emptyInstance;\ n } else {\n instance = template.createInstance(model, u ndefined, delegate);\n }\n }\n\n this.insertInstanc eAt(addIndex, instance);\n }\n }\n\n instanceCache.forEach(func tion(instance) {\n this.closeInstanceBindings(instance);\n }, this); \n\n if (this.instancePositionChangedFn_)\n this.reportInstancesMove d(splices);\n },\n\n reportInstanceMoved: function(index) {\n var ins tance = this.instances[index];\n if (instance === emptyInstance)\n r eturn;\n\n this.instancePositionChangedFn_(instance.templateInstance_, inde x);\n },\n\n reportInstancesMoved: function(splices) {\n var index = 0;\n var offset = 0;\n for (var i = 0; i < splices.length; i++) {\n var splice = splices[i];\n if (offset != 0) {\n while (inde x < splice.index) {\n this.reportInstanceMoved(index);\n i ndex++;\n }\n } else {\n index = splice.index;\n }\n\n while (index < splice.index + splice.addedCount) {\n this .reportInstanceMoved(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.instances.length;\n while (index < length) {\n this.reportInstanceMoved(index);\n index++;\n }\n },\n\n closeInstanceBindings: function(instance) {\n var bindings = instance.bindings_;\n for (var i = 0; i < bindings.length; i++) {\n bindings[i].close();\n }\n },\n\n unobserve: function() {\n i f (!this.arrayObserver)\n return;\n\n this.arrayObserver.close();\n this.arrayObserver = undefined;\n },\n\n close: function() {\n i f (this.closed)\n return;\n this.unobserve();\n for (var i = 0; i < this.instances.length; i++) {\n this.closeInstanceBindings(this.inst ances[i]);\n }\n\n this.instances.length = 0;\n this.closeDeps(); \n this.templateElement_.iterator_ = undefined;\n this.closed = true;\ n }\n };\n\n // Polyfill-specific API.\n HTMLTemplateElement.forAllTemplat esFrom_ = forAllTemplatesFrom;\n})(this);\n","/*\n Copyright (C) 2013 Ariya Hid ayat <ariya.hidayat@gmail.com>\n Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gm ail.com>\n Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n Copyri ght (C) 2012 Mathias Bynens <mathias@qiwi.be>\n Copyright (C) 2012 Joost-Wim Bo ekesteijn <joost-wim@boekesteijn.nl>\n Copyright (C) 2012 Kris Kowal <kris.kowa l@cixar.com>\n Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n Copy right (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 an d binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must reta in the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyr ight\n notice, this list of conditions and the following disclaimer in the\ n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n I MPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, I NDIRECT, 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; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEOR Y OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEG LIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVE N IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function (global) {\n 'use strict';\n\n var Token,\n TokenName,\n Syntax,\n M essages,\n source,\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 NullLitera l: 5,\n NumericLiteral: 6,\n Punctuator: 7,\n StringLiteral : 8\n };\n\n TokenName = {};\n TokenName[Token.BooleanLiteral] = 'Boole an';\n TokenName[Token.EOF] = '<end>';\n TokenName[Token.Identifier] = 'Id entifier';\n TokenName[Token.Keyword] = 'Keyword';\n TokenName[Token.NullL iteral] = 'Null';\n TokenName[Token.NumericLiteral] = 'Numeric';\n TokenNa me[Token.Punctuator] = 'Punctuator';\n TokenName[Token.StringLiteral] = 'Stri ng';\n\n Syntax = {\n ArrayExpression: 'ArrayExpression',\n Bin aryExpression: 'BinaryExpression',\n CallExpression: 'CallExpression',\n ConditionalExpression: 'ConditionalExpression',\n EmptyStatement: 'EmptyStatement',\n ExpressionStatement: 'ExpressionStatement',\n Identifier: 'Identifier',\n Literal: 'Literal',\n LabeledStatement : 'LabeledStatement',\n LogicalExpression: 'LogicalExpression',\n MemberExpression: 'MemberExpression',\n ObjectExpression: 'ObjectExpressi on',\n Program: 'Program',\n Property: 'Property',\n ThisEx pression: 'ThisExpression',\n UnaryExpression: 'UnaryExpression'\n };\ n\n // Error messages should be identical to V8.\n Messages = {\n U nexpectedToken: 'Unexpected token %0',\n UnknownLabel: 'Undefined label \\'%0\\'',\n Redeclaration: '%0 \\'%1\\' has already been declared'\n };\n\n // Ensure the condition is true, otherwise throw an error.\n // Thi s is only to have a better contract semantic, i.e. another safety net\n // to catch a logic error. The condition shall be fulfilled in normal case.\n // D o NOT use this to enforce a certain condition on any user input.\n\n function assert(condition, message) {\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n }\n\n function isDecimalDigit(ch ) {\n return (ch >= 48 && ch <= 57); // 0..9\n }\n\n\n // 7.2 Whi te Space\n\n function isWhiteSpace(ch) {\n return (ch === 32) || // s pace\n (ch === 9) || // tab\n (ch === 0xB) ||\n (ch === 0xC) ||\n (ch === 0xA0) ||\n (ch >= 0x1680 & & '\\u1680\\u180E\\u2000\\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 isIdenti fierStart(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 isIdentifie rPart(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 (ch >= 48 && ch <= 57); // 0..9\n }\n\n // 7.6.1.1 Keywords\n\n function isKeyword(id) {\n return (id === 'this')\n }\n\n // 7.4 Comments\n\n function skipWhitespace() {\n while (index < length && isWhiteSpace(source.charCo deAt(index))) {\n ++index;\n }\n }\n\n function getIdenti fier() {\n var start, ch;\n\n start = index++;\n while (ind ex < length) {\n ch = source.charCodeAt(index);\n if (isId entifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n\n return source.slice(start, inde x);\n }\n\n function scanIdentifier() {\n var start, id, type;\n\n start = index;\n\n id = getIdentifier();\n\n // There is no keyword or literal with only one character.\n // Thus, it must be an ide ntifier.\n if (id.length === 1) {\n type = Token.Identifier;\n } else if (isKeyword(id)) {\n type = Token.Keyword;\n } else if (id === 'null') {\n type = Token.NullLiteral;\n } el se if (id === 'true' || id === 'false') {\n type = Token.BooleanLiter al;\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 sc anPunctuator() {\n var start = index,\n code = source.charCode At(index),\n code2,\n ch1 = source[index],\n ch 2;\n\n switch (code) {\n\n // Check for most common single-charact er punctuators.\n case 46: // . dot\n case 40: // ( open brack et\n case 41: // ) close bracket\n case 59: // ; semicolon\n case 44: // , comma\n case 123: // { open curly brace\n c ase 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 default:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (char #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.fromCharCode(code) + String.fromCharCode(code2),\n range: [start, index]\n };\n\n cas e 33: // !\n case 61: // =\n index += 2;\n\n // !== and ===\n if (source.charCodeAt(inde x) === 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 more characters.\n\n ch2 = source[index + 1];\n\n // Other 2-character punctuators: && ||\n\n if (ch1 === ch2 && ('&|'.in dexOf(ch1) >= 0)) {\n index += 2;\n return {\n type: Token.Punctuator,\n value: ch1 + ch2,\n range: [start, index]\n };\n }\n\n if ('<>=!+-*%&|^/'.i ndexOf(ch1) >= 0) {\n ++index;\n return {\n type: Token.Punctuator,\n value: ch1,\n range: [s tart, index]\n };\n }\n\n throwError({}, Messages.Unexp ectedToken, 'ILLEGAL');\n }\n\n // 7.8.3 Numeric Literals\n function sc anNumericLiteral() {\n var number, start, ch;\n\n ch = source[inde x];\n assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),\n 'Numeric literal must start with a decimal digit or a decimal point');\n\n start = index;\n number = '';\n if (ch !== '.') {\n number = source[index++];\n ch = source[index];\n\n // H ex number starts with '0x'.\n // Octal number starts with '0'.\n if (number === '0') {\n // decimal number starts with '0' such as '09' is illegal.\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 = source[index];\n }\n\n if (ch === '.') {\n number += source[index++];\n while (isDecimalDigit(source.char CodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n\n if (ch === 'e' || ch === 'E' ) {\n number += source[index++];\n\n ch = source[index];\n if (ch === '+' || ch === '-') {\n number += source[in dex++];\n }\n if (isDecimalDigit(source.charCodeAt(index)) ) {\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n } else { \n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type: Token.NumericLiteral,\n value: par seFloat(number),\n range: [start, index]\n };\n }\n\n // 7.8.4 String Literals\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 st arts with a quote');\n\n start = index;\n ++index;\n\n whil e (index < length) {\n ch = source[index++];\n\n if (ch == = quote) {\n quote = '';\n break;\n } e lse if (ch === '\\\\') {\n ch = source[index++];\n if (!ch || !isLineTerminator(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[index] === '\\n') {\n ++index;\n }\n }\n } else if (isLineTerminator(ch.ch arCodeAt(0))) {\n break;\n } else {\n s tr += ch;\n }\n }\n\n if (quote !== '') {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n retur n {\n type: Token.StringLiteral,\n value: str,\n octal: octal,\n range: [start, index]\n };\n }\n\n fun ction isIdentifierName(token) {\n return token.type === Token.Identifier ||\n token.type === Token.Keyword ||\n token.type === Toke n.BooleanLiteral ||\n token.type === Token.NullLiteral;\n }\n\n function advance() {\n var ch;\n\n skipWhitespace();\n\n i f (index >= length) {\n return {\n type: Token.EOF,\n range: [index, index]\n };\n }\n\n ch = source.charCodeAt(index);\n\n // Very common: ( and ) and ;\n if ( ch === 40 || ch === 41 || ch === 58) {\n return scanPunctuator();\n }\n\n // String literal starts with single quote (#39) or double qu ote (#34).\n if (ch === 39 || ch === 34) {\n return scanString Literal();\n }\n\n if (isIdentifierStart(ch)) {\n retur n scanIdentifier();\n }\n\n // Dot (.) char #46 can also start a f loating-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 scanPunctuator();\n }\n\n if (isDecimalDigit(ch)) {\n return scanNumericLiteral();\n }\n\n return scanPunctuato r();\n }\n\n function lex() {\n var token;\n\n token = looka head;\n index = token.range[1];\n\n lookahead = advance();\n\n index = token.range[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 throwEr ror(token, messageFormat) {\n var error,\n args = Array.protot ype.slice.call(arguments, 2),\n msg = messageFormat.replace(\n /%(\\d)/g,\n function (whole, index) {\n assert(index < args.length, 'Message reference must be in range');\n return args[index];\n }\n );\n\n er ror = new Error(msg);\n error.index = index;\n error.description = msg;\n throw error;\n }\n\n // Throw an exception because of the t oken.\n\n function throwUnexpected(token) {\n throwError(token, Messag es.UnexpectedToken, token.value);\n }\n\n // Expect the next token to matc h the specified punctuator.\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 specifi ed punctuator.\n\n function match(value) {\n return lookahead.type === Token.Punctuator && lookahead.value === value;\n }\n\n // Return true if the next token matches the specified keyword\n\n function matchKeyword(keywor d) {\n return lookahead.type === Token.Keyword && lookahead.value === key word;\n }\n\n function consumeSemicolon() {\n // Catch the very com mon case first: immediately a semicolon (char #59).\n if (source.charCode At(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 throwUnexpected(lookahead);\n }\n }\n\n // 11.1.4 Array Initialiser\n\n function parseArrayInitialiser() {\n var element s = [];\n\n expect('[');\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.c reateArrayExpression(elements);\n }\n\n // 11.1.5 Object Initialiser\n\n function parseObjectPropertyKey() {\n var token;\n\n skipWhitesp ace();\n token = lex();\n\n // Note: This function is called only from parseObjectProperty(), where\n // EOF and Punctuator tokens are alre ady filtered out.\n if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) {\n return delegate.createLiteral(token);\n }\n\n return delegate.createIdentifier(token.value);\n }\n\n function parseObjectProperty() {\n var token, key;\n\n token = l ookahead;\n skipWhitespace();\n\n if (token.type === Token.EOF || token.type === Token.Punctuator) {\n throwUnexpected(token);\n }\n\n key = parseObjectPropertyKey();\n expect(':');\n ret urn delegate.createProperty('init', key, parseExpression());\n }\n\n funct ion parseObjectInitialiser() {\n var properties = [];\n\n expect(' {');\n\n while (!match('}')) {\n properties.push(parseObjectPr operty());\n\n if (!match('}')) {\n expect(',');\n }\n }\n\n expect('}');\n\n return delegate.createOb jectExpression(properties);\n }\n\n // 11.1.6 The Grouping Operator\n\n function parseGroupExpression() {\n var expr;\n\n expect('(');\n\ n expr = parseExpression();\n\n expect(')');\n\n return exp r;\n }\n\n\n // 11.1 Primary Expressions\n\n function parsePrimaryExpre ssion() {\n var type, token, expr;\n\n if (match('(')) {\n return parseGroupExpression();\n }\n\n type = lookahead.type;\ n\n if (type === Token.Identifier) {\n expr = delegate.createI dentifier(lex().value);\n } else if (type === Token.StringLiteral || type === Token.NumericLiteral) {\n expr = delegate.createLiteral(lex());\ n } else if (type === Token.Keyword) {\n if (matchKeyword('thi s')) {\n lex();\n expr = delegate.createThisExpres sion();\n }\n } else if (type === Token.BooleanLiteral) {\n token = lex();\n token.value = (token.value === 'true');\n expr = delegate.createLiteral(token);\n } else if (type === Tok en.NullLiteral) {\n token = lex();\n token.value = null;\n expr = delegate.createLiteral(token);\n } else if (match('[') ) {\n expr = parseArrayInitialiser();\n } else if (match('{')) {\n expr = parseObjectInitialiser();\n }\n\n if (expr) {\n return 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 (index < 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(t oken)) {\n throwUnexpected(token);\n }\n\n return deleg ate.createIdentifier(token.value);\n }\n\n function parseNonComputedMember () {\n expect('.');\n\n return parseNonComputedProperty();\n }\ n\n function parseComputedMember() {\n var expr;\n\n expect('[' );\n\n expr = parseExpression();\n\n expect(']');\n\n retur n 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 = parseNon ComputedMember();\n expr = delegate.createMemberExpression('.', e xpr, property);\n }\n }\n\n return expr;\n }\n\n // 11.3 Postfix Expressions\n\n var parsePostfixExpression = parseLeftHandSid eExpression;\n\n // 11.4 Unary Operators\n\n function parseUnaryExpression () {\n var token, expr;\n\n if (lookahead.type !== Token.Punctuato r && lookahead.type !== Token.Keyword) {\n expr = parsePostfixExpress ion();\n } else if (match('+') || match('-') || match('!')) {\n token = lex();\n expr = parseUnaryExpression();\n expr = delegate.createUnaryExpression(token.value, expr);\n } else if (matchKey word('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n throwError({}, Messages.UnexpectedToken);\n } else {\n expr = parsePostfixExpression();\n }\n\n return expr;\n }\n\n func tion 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 pre c = 1;\n break;\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 'instan ceof':\n prec = 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 Mu ltiplicative Operators\n // 11.6 Additive Operators\n // 11.7 Bitwise Shif t Operators\n // 11.8 Relational Operators\n // 11.9 Equality Operators\n // 11.10 Binary Bitwise Operators\n // 11.11 Binary Logical Operators\n\n function parseBinaryExpression() {\n var expr, token, prec, stack, rig ht, operator, left, i;\n\n left = parseUnaryExpression();\n\n toke n = lookahead;\n prec = binaryPrecedence(token);\n if (prec === 0) {\n return left;\n }\n token.prec = prec;\n lex ();\n\n right = parseUnaryExpression();\n\n stack = [left, token, right];\n\n while ((prec = binaryPrecedence(lookahead)) > 0) {\n\n // Reduce: make a binary expression from the three topmost entries.\n while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {\n right = stack.pop();\n operator = stack.pop().value ;\n left = stack.pop();\n expr = delegate.createBi naryExpression(operator, left, right);\n stack.push(expr);\n }\n\n // Shift.\n token = lex();\n token .prec = prec;\n stack.push(token);\n expr = parseUnaryExpr ession();\n stack.push(expr);\n }\n\n // Final reduce t o clean-up the stack.\n i = stack.length - 1;\n expr = stack[i];\n while (i > 1) {\n expr = delegate.createBinaryExpression(stac k[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 parse ConditionalExpression() {\n var expr, consequent, alternate;\n\n e xpr = parseBinaryExpression();\n\n if (match('?')) {\n lex();\ n consequent = parseConditionalExpression();\n expect(':') ;\n alternate = parseConditionalExpression();\n\n expr = d elegate.createConditionalExpression(expr, consequent, alternate);\n }\n\n return expr;\n }\n\n // Simplification since we do not support Ass ignmentExpression.\n var parseExpression = parseConditionalExpression;\n\n // Polymer Syntax extensions\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 throw Unexpected(identifier);\n }\n\n args = match('(') ? parseArguments () : [];\n\n return delegate.createFilter(identifier.value, args);\n } \n\n // Filters ::\n // \"|\" Filter\n // Filters \"|\" Filter\n\n function parseFilters() {\n while (match('|')) {\n lex();\n parseFilter();\n }\n }\n\n // TopLevel ::\n // Lab elledExpressions\n // AsExpression\n // InExpression\n // FilterE xpression\n\n // AsExpression ::\n // FilterExpression as Identifier\n\n // InExpression ::\n // Identifier, Identifier in FilterExpression\n // Identifier in FilterExpression\n\n // FilterExpression ::\n // Exp ression\n // Expression 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 parseA sExpression(expr);\n } else {\n delegate.creat eTopLevel(expr);\n }\n }\n }\n\n if (loo kahead.type !== Token.EOF) {\n throwUnexpected(lookahead);\n } \n }\n\n function parseAsExpression(expr) {\n lex(); // as\n var identifier = lex().value;\n delegate.createAsExpression(expr, ident ifier);\n }\n\n function parseInExpression(identifier) {\n var inde xName;\n if (lookahead.value === ',') {\n lex();\n if (lookahead.type !== Token.Identifier)\n throwUnexpected(lookah ead);\n indexName = lex().value;\n }\n\n lex(); // in\ n var expr = parseExpression();\n parseFilters();\n delegat e.createInExpression(identifier.name, indexName, expr);\n }\n\n function p arse(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 pars eTopLevel();\n }\n\n global.esprima = {\n parse: parse\n };\n})( this);\n","// Copyright (c) 2014 The Polymer Project Authors. All rights reserve d.\n// This code may only be used under the BSD style license found at http://po lymer.github.io/LICENSE.txt\n// The complete set of authors may be found at http ://polymer.github.io/AUTHORS.txt\n// The complete set of contributors may be fou nd at http://polymer.github.io/CONTRIBUTORS.txt\n// Code distributed by Google a s part of the polymer project is also\n// subject to an additional IP rights gra nt found at http://polymer.github.io/PATENTS.txt\n\n(function (global) {\n 'use strict';\n\n // JScript does not have __proto__. We wrap all object literals w ith\n // createObject which uses 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) { return 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).forEa ch(function(name) {\n Object.defineProperty(newObject, name,\n Object.getOwnPropertyDescriptor(obj, name));\n });\ n return newObject;\n };\n\n function prepareBinding(expressionText , name, node, filterRegistry) {\n var expression;\n try {\n expressio n = getExpression(expressionText);\n if (expression.scopeIdent &&\n (node.nodeType !== 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 } ca tch (ex) {\n console.error('Invalid expression syntax: ' + expressionText, ex);\n return;\n }\n\n return function(model, node, oneTime) {\n var binding = expression.getBinding(model, filterRegistry, oneTime);\n if (expression.scopeIdent && binding) {\n node.polymerExpressionScopeIdent_ = expression.scopeIdent;\n if (expression.indexIdent)\n node.pol ymerExpressionIndexIdent_ = expression.indexIdent;\n }\n\n return bind ing;\n }\n }\n\n // TODO(rafaelw): Implement simple LRU.\n var expressionP arseCache = Object.create(null);\n\n function getExpression(expressionText) {\n var expression = expressionParseCache[expressionText];\n if (!expression) {\n var delegate = new ASTDelegate();\n esprima.parse(expressionText, delegate);\n expression = new Expression(delegate);\n expressionParse Cache[expressionText] = expression;\n }\n return expression;\n }\n\n fun ction Literal(value) {\n this.value = value;\n this.valueFn_ = undefined;\ n }\n\n Literal.prototype = {\n valueFn: function() {\n if (!this.valu eFn_) {\n var value = this.value;\n this.valueFn_ = function() {\n return value;\n }\n }\n\n return this.valueFn_;\n }\n }\n\n function IdentPath(name) {\n this.name = name;\n this.path = P ath.get(name);\n }\n\n IdentPath.prototype = {\n valueFn: function() {\n if (!this.valueFn_) {\n var name = this.name;\n var path = this .path;\n this.valueFn_ = function(model, observer) {\n if (obser ver)\n observer.addPath(model, path);\n\n return path.getVal ueFrom(model);\n }\n }\n\n return this.valueFn_;\n },\n\n setValue: function(model, newValue) {\n if (this.path.length == 1);\n model = findScope(model, this.path[0]);\n\n return this.path.setValueFro m(model, newValue);\n }\n };\n\n function MemberExpression(object, property , accessor) {\n // convert literal computed property access where literal val ue is a value\n // path to ident dot-access.\n if (accessor == '[' &&\n property instanceof 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 th is.dynamic = typeof property == 'function' ||\n property.dynam ic ||\n accessor == '[';\n\n this.simplePath =\n !th is.dynamic &&\n !this.dynamicDeps &&\n property instanceof IdentPa th &&\n (object instanceof MemberExpression || object instanceof IdentPat h);\n\n this.object = this.simplePath ? object : getFn(object);\n this.pro perty = accessor == '.' ? property : getFn(property);\n }\n\n MemberExpression .prototype = {\n get fullPath() {\n if (!this.fullPath_) {\n var last = this.object instanceof IdentPath ?\n this.object.name : this.o bject.fullPath;\n this.fullPath_ = Path.get(last + '.' + this.property.na me);\n }\n\n return this.fullPath_;\n },\n\n valueFn: function() {\n if (!this.valueFn_) {\n var object = this.object;\n\n if (this.simplePath) {\n var path = this.fullPath;\n\n this.valu eFn_ = function(model, observer) {\n if (observer)\n obs erver.addPath(model, path);\n\n return path.getValueFrom(model);\n };\n } else if (this.property instanceof IdentPath) {\n v ar path = Path.get(this.property.name);\n\n this.valueFn_ = function(mo del, observer) {\n var context = object(model, observer);\n\n if (observer)\n observer.addPath(context, path);\n\n return path.getValueFrom(context);\n }\n } else {\n // Computed property.\n var property = this.property;\n\n this.v alueFn_ = function(model, observer) {\n var context = object(model, o bserver);\n var propName = property(model, observer);\n if (observer)\n observer.addPath(context, propName);\n\n r eturn context ? context[propName] : undefined;\n };\n }\n } \n return this.valueFn_;\n },\n\n setValue: function(model, newValue) {\n if (this.simplePath) {\n this.fullPath.setValueFrom(model, newV alue);\n return newValue;\n }\n\n var object = this.object(mode l);\n var propName = this.property instanceof IdentPath ? this.property.nam e :\n this.property(model);\n return object[propName] = newValue;\ n }\n };\n\n function Filter(name, args) {\n this.name = name;\n this .args = [];\n for (var i = 0; i < args.length; i++) {\n this.args[i] = g etFn(args[i]);\n }\n }\n\n Filter.prototype = {\n transform: function(va lue, toModelDirection, filterRegistry, model,\n observer) {\n var fn = filterRegistry[this.name];\n var context = model;\n if (fn) {\n context = undefined;\n } else {\n fn = context[t his.name];\n if (!fn) {\n console.error('Cannot find filter: ' + this.name);\n return;\n }\n }\n\n // If toModelDirect ion is falsey, then the \"normal\" (dom-bound) direction\n // is used. Othe rwise, it looks for a 'toModel' property function on the\n // object.\n if (toModelDirection) {\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 args = [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 Implemented'); }\n\n var unaryOperators = {\n '+': funct ion(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 '>': funct ion(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) { return l||r; },\n };\n\n functi on getFn(arg) {\n return typeof arg == 'function' ? arg : arg.valueFn();\n } \n\n function ASTDelegate() {\n this.expression = null;\n this.filters = [];\n this.deps = {};\n this.currentPath = undefined;\n this.scopeIdent = undefined;\n this.indexIdent = undefined;\n this.dynamicDeps = false;\n }\n\n ASTDelegate.prototype = {\n createUnaryExpression: function(op, argu ment) {\n if (!unaryOperators[op])\n throw Error('Disallowed operato r: ' + 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(left);\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 createConditionalExpression: function(test, consequent, alternate) {\n test = getFn(test);\n consequent = getFn(consequent);\n alternate = g etFn(alternate);\n\n return function(model, observer) {\n return tes t(model, observer) ?\n consequent(model, observer) : alternate(model, observer);\n }\n },\n\n createIdentifier: function(name) {\n va r ident = new IdentPath(name);\n ident.type = 'Identifier';\n return i dent;\n },\n\n createMemberExpression: function(accessor, object, property ) {\n var ex = new MemberExpression(object, property, accessor);\n if (ex.dynamicDeps)\n this.dynamicDeps = true;\n return ex;\n },\n\n createLiteral: function(token) {\n return new Literal(token.value);\n },\n\n createArrayExpression: function(elements) {\n for (var i = 0; i < elements.length; i++)\n elements[i] = getFn(elements[i]);\n\n ret urn function(model, observer) {\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, val ue) {\n return {\n key: key instanceof IdentPath ? key.name : key.va lue,\n value: value\n };\n },\n\n createObjectExpression: func tion(properties) {\n for (var i = 0; i < properties.length; i++)\n p roperties[i].value = getFn(properties[i].value);\n\n return function(model, observer) {\n var obj = {};\n for (var i = 0; i < properties.leng th; i++)\n obj[properties[i].key] = properties[i].value(model, observer );\n return obj;\n }\n },\n\n createFilter: function(name, arg s) {\n this.filters.push(new Filter(name, args));\n },\n\n createAsEx pression: function(expression, scopeIdent) {\n this.expression = expression ;\n this.scopeIdent = scopeIdent;\n },\n\n createInExpression: functi on(scopeIdent, indexIdent, expression) {\n this.expression = expression;\n this.scopeIdent = scopeIdent;\n this.indexIdent = indexIdent;\n },\ n\n createTopLevel: function(expression) {\n this.expression = expressio n;\n },\n\n createThisExpression: notImplemented\n }\n\n function Consta ntObservable(value) {\n this.value_ = value;\n }\n\n ConstantObservable.pro totype = {\n open: function() { return this.value_; },\n discardChanges: f unction() { return this.value_; },\n deliver: function() {},\n close: func tion() {},\n }\n\n function Expression(delegate) {\n this.scopeIdent = dele gate.scopeIdent;\n this.indexIdent = delegate.indexIdent;\n\n if (!delegat e.expression)\n throw Error('No expression found.');\n\n this.expression = delegate.expression;\n getFn(this.expression); // forces enumeration of pa th dependencies\n\n this.filters = delegate.filters;\n this.dynamicDeps = delegate.dynamicDeps;\n }\n\n Expression.prototype = {\n getBinding: functi on(model, filterRegistry, oneTime) {\n if (oneTime)\n return this.ge tValue(model, undefined, filterRegistry);\n\n var observer = new CompoundOb server();\n // captures deps.\n var firstValue = this.getValue(model, observer, filterRegistry);\n var firstTime = true;\n var self = this;\ n\n function valueFn() {\n // deps cannot have changed on first valu e retrieval.\n if (firstTime) {\n firstTime = false;\n return firstValue;\n }\n\n if (self.dynamicDeps)\n observ er.startReset();\n\n var value = self.getValue(model,\n self.dynamicDeps ? observer : undefined,\n filterRegistry);\n if (self.dynamicDeps)\n observer. finishReset();\n\n return value;\n }\n\n function setValueFn(ne wValue) {\n self.setValue(model, newValue, filterRegistry);\n retu rn newValue;\n }\n\n return new ObserverTransform(observer, valueFn, s etValueFn, true);\n },\n\n getValue: function(model, observer, filterRegis try) {\n var value = getFn(this.expression)(model, observer);\n for (v ar i = 0; i < this.filters.length; i++) {\n value = this.filters[i].trans form(value, false, filterRegistry, model,\n observer);\n }\n\n return value;\n },\n\n setValue: functio n(model, newValue, filterRegistry) {\n var count = this.filters ? this.filt ers.length : 0;\n while (count-- > 0) {\n newValue = this.filters[co unt].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 * C onverts a style property name to a css property name. For example:\n * \"Webki tUserSelect\" to \"-webkit-user-select\"\n */\n function convertStyleProperty Name(name) {\n return String(name).replace(/[A-Z]/g, function(c) {\n ret urn '-' + c.toLowerCase();\n });\n }\n\n function isEventHandler(name) {\n return name[0] === 'o' &&\n name[1] === 'n' &&\n name[2] === '-';\n }\n\n var mixedCaseEventTypes = {};\n [\n 'webkitAnimationStart ',\n 'webkitAnimationEnd',\n 'webkitTransitionEnd',\n 'DOMFocusOut',\n 'DOMFocusIn',\n 'DOMMouseScroll'\n ].forEach(function(e) {\n mixedCase EventTypes[e.toLowerCase()] = e;\n });\n\n var parentScopeName = '@' + Math.ra ndom().toString(36).slice(2);\n\n // Single ident paths must bind directly to t he appropriate scope object.\n // I.e. Pushed values in two-bindings need to be assigned to the actual model\n // object.\n function findScope(model, prop) { \n while (model[parentScopeName] &&\n !Object.prototype.hasOwnPrope rty.call(model, prop)) {\n model = model[parentScopeName];\n }\n\n re turn model;\n }\n\n function resolveEventReceiver(model, path, node) {\n if (path.length == 0)\n return undefined;\n\n if (path.length == 1)\n return findScope(model, path[0]);\n\n for (var i = 0; model != null && i < p ath.length - 1; i++) {\n model = model[path[i]];\n }\n\n return model ;\n }\n\n function prepareEventBinding(path, name, polymerExpressions) {\n var eventType = name.substring(3);\n eventType = mixedCaseEventTypes[eventTyp e] || eventType;\n\n return function(model, node, oneTime) {\n var fn, r eceiver, handler;\n if (typeof polymerExpressions.resolveEventHandler == 'f unction') {\n handler = function(e) {\n fn = fn || polymerExpres sions.resolveEventHandler(model, path, node);\n fn(e, e.detail, e.curre ntTarget);\n\n if (Platform && typeof Platform.flush == 'function')\n Platform.flush();\n };\n } else {\n handler = funct ion(e) {\n fn = fn || path.getValueFrom(model);\n receiver = r eceiver || resolveEventReceiver(model, path, node);\n\n fn.apply(receiv er, [e, e.detail, e.currentTarget]);\n\n if (Platform && typeof Platfor m.flush == 'function')\n Platform.flush();\n };\n }\n\n node.addEventListener(eventType, handler);\n\n if (oneTime)\n re turn;\n\n function bindingValue() {\n return '{{ ' + path + ' }}';\n }\n\n return {\n open: bindingValue,\n discardChanges: bindingValue,\n close: function() {\n node.removeEventListener(e ventType, handler);\n }\n };\n }\n }\n\n function isLiteralExpr ession(pathString) {\n switch (pathString) {\n case '':\n return false;\n\n case 'false':\n case 'null':\n case 'true':\n r eturn true;\n }\n\n if (!isNaN(Number(pathString)))\n return true;\n\ n return false;\n };\n\n function PolymerExpressions() {}\n\n PolymerExpre ssions.prototype = {\n // \"built-in\" filters\n styleObject: function(val ue) {\n var parts = [];\n for (var key in value) {\n parts.push (convertStylePropertyName(key) + ': ' + value[key]);\n }\n return part s.join('; ');\n },\n\n tokenList: function(value) {\n var tokens = [] ;\n for (var key in value) {\n if (value[key])\n tokens.pus h(key);\n }\n return tokens.join(' ');\n },\n\n // binding deleg ate API\n prepareInstancePositionChanged: function(template) {\n var ind exIdent = template.polymerExpressionIndexIdent_;\n if (!indexIdent)\n return;\n\n return function(templateInstance, index) {\n templateI nstance.model[indexIdent] = index;\n };\n },\n\n prepareBinding: func tion(pathString, name, node) {\n var path = Path.get(pathString);\n if (isEventHandler(name)) {\n if (!path.valid) {\n console.error(' on-* bindings must be simple path expressions');\n return;\n }\n \n return prepareEventBinding(path, name, this);\n }\n\n if (!i sLiteralExpression(pathString) && path.valid) {\n if (path.length == 1) { \n return function(model, node, oneTime) {\n if (oneTime)\n return path.getValueFrom(model);\n\n var scope = findSco pe(model, path[0]);\n return new PathObserver(scope, path);\n };\n }\n return; // bail out early if pathString is simple path. \n }\n\n return prepareBinding(pathString, name, node, this);\n },\ n\n prepareInstanceModel: function(template) {\n var scopeName = templat e.polymerExpressionScopeIdent_;\n if (!scopeName)\n return;\n\n var parentScope = template.templateInstance ?\n template.templateInsta nce.model :\n template.model;\n\n var indexName = template.polymer ExpressionIndexIdent_;\n\n return function(model) {\n var scope = Ob ject.create(parentScope);\n scope[scopeName] = model;\n scope[inde xName] = undefined;\n scope[parentScopeName] = parentScope;\n retu rn scope;\n };\n }\n };\n\n global.PolymerExpressions = PolymerExpress ions;\n if (global.exposeGetExpression)\n global.getExpression_ = getExpress ion;\n\n global.PolymerExpressions.prepareEventBinding = prepareEventBinding;\n })(this);\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 fou nd in the LICENSE file.\n */\n(function(scope) {\n\n// inject style sheet\nvar s tyle = document.createElement('style');\nstyle.textContent = 'template {display: none !important;} /* injected by platform.js */';\nvar head = document.querySel ector('head');\nhead.insertBefore(style, head.firstChild);\n\n// flush (with log ging)\nvar flushing;\nfunction flush() {\n if (!flushing) {\n flushing = tru e;\n scope.endOfMicrotask(function() {\n flushing = false;\n logFla gs.data && console.group('Platform.flush()');\n scope.performMicrotaskCheck point();\n logFlags.data && console.groupEnd();\n });\n }\n};\n\n// pol ling dirty checker\n// flush periodically if platform does not have object obser ve.\nif (!Observer.hasObjectObserve) {\n var FLUSH_POLL_INTERVAL = 125;\n wind ow.addEventListener('WebComponentsReady', function() {\n flush();\n scope. flushPoll = setInterval(flush, FLUSH_POLL_INTERVAL);\n });\n} else {\n // make flush a no-op when we have Object.observe\n flush = function() {};\n}\n\nif (w indow.CustomElements && !CustomElements.useNative) {\n var originalImportNode = Document.prototype.importNode;\n Document.prototype.importNode = function(node , deep) {\n var imported = originalImportNode.call(this, node, deep);\n Cu stomElements.upgradeAll(imported);\n return imported;\n }\n}\n\n// exports\n scope.flush = flush;\n\n})(window.Platform);\n\n"]}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698