import {Component} from 'angular2/core';
import {CountdownLocalVarParentComponent,
        CountdownViewChildParentComponent} from './countdown-parent.component';

@Component({
  selector: 'app',
  templateUrl: 'app/app.component.html',
  directives: [
    CountdownLocalVarParentComponent,
    CountdownViewChildParentComponent
  ]
})
export class AppComponent { }


/*
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at http://angular.io/license
*/
import {Component, OnInit, OnDestroy} from 'angular2/core';

@Component({
  selector:'countdown-timer',
  template: '<p>{{message}}</p>'
})
export class CountdownTimerComponent implements OnInit, OnDestroy {

  intervalId = 0;
  message = '';
  seconds = 11;

  clearTimer() {clearInterval(this.intervalId);}

  ngOnInit()    { this.start(); }
  ngOnDestroy() { this.clearTimer(); }

  start() { this._countDown(); }
  stop()  {
    this.clearTimer();
    this.message = `Holding at T-${this.seconds} seconds`;
  }

  private _countDown() {
    this.clearTimer();
    this.intervalId = setInterval(()=>{
      this.seconds -= 1;
      if (this.seconds == 0) {
        this.message = "Blast off!";
      } else {
        if (this.seconds < 0) { this.seconds = 10;} // reset
        this.message = `T-${this.seconds} seconds and counting`;
      }
    }, 1000);
  }
}

/*
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at http://angular.io/license
*/
import {bootstrap}    from 'angular2/platform/browser';
import {AppComponent} from './app.component';

bootstrap(AppComponent);

/*
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at http://angular.io/license
*/
/* Component Communication cookbook specific styles */
.seconds {
  background-color: black;
  color: red;
  font-size: 3em;
  margin: 0.3em 0;
  text-align: center;
  width: 1.5em;
}


/*
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at http://angular.io/license
*/
/* Master Styles */
h1 {
  color: #369; 
  font-family: Arial, Helvetica, sans-serif;   
  font-size: 250%;
}
h2, h3 { 
  color: #444;
  font-family: Arial, Helvetica, sans-serif;   
  font-weight: lighter;
}
body { 
  margin: 2em; 
}
body, input[text], button { 
  color: #888; 
  font-family: Cambria, Georgia; 
}
a {
  cursor: pointer;
  cursor: hand;
}
button {
  font-family: Arial;
  background-color: #eee;
  border: none;
  padding: 5px 10px;
  border-radius: 4px;
  cursor: pointer;
  cursor: hand;
}
button:hover {
  background-color: #cfd8dc;
}
button:disabled {
  background-color: #eee;
  color: #aaa; 
  cursor: auto;
}

/* Navigation link styles */
nav a {
  padding: 5px 10px;
  text-decoration: none;
  margin-top: 10px;
  display: inline-block;
  background-color: #eee;
  border-radius: 4px;
}
nav a:visited, a:link {
  color: #607D8B;
}
nav a:hover {
  color: #039be5;
  background-color: #CFD8DC;
}
nav a.router-link-active {
  color: #039be5;
}

/* items class */
.items {
  margin: 0 0 2em 0;
  list-style-type: none;
  padding: 0;
  width: 24em;
}
.items li {
  cursor: pointer;
  position: relative;
  left: 0;
  background-color: #EEE;
  margin: .5em;
  padding: .3em 0;
  height: 1.6em;
  border-radius: 4px;
}
.items li:hover {
  color: #607D8B;
  background-color: #DDD;
  left: .1em;
}
.items li.selected:hover {
  background-color: #BBD8DC;
  color: white;
}
.items .text {
  position: relative;
  top: -3px;
}
.items {
  margin: 0 0 2em 0;
  list-style-type: none;
  padding: 0;
  width: 24em;
}
.items li {
  cursor: pointer;
  position: relative;
  left: 0;
  background-color: #EEE;
  margin: .5em;
  padding: .3em 0;
  height: 1.6em;
  border-radius: 4px;
}
.items li:hover {
  color: #607D8B;
  background-color: #DDD;
  left: .1em;
}
.items li.selected {
  background-color: #CFD8DC;
  color: white;
}

.items li.selected:hover {
  background-color: #BBD8DC;
}
.items .text {
  position: relative;
  top: -3px;
}
.items .badge {
  display: inline-block;
  font-size: small;
  color: white;
  padding: 0.8em 0.7em 0 0.7em;
  background-color: #607D8B;
  line-height: 1em;
  position: relative;
  left: -1px;
  top: -4px;
  height: 1.8em;
  margin-right: .8em;
  border-radius: 4px 0 0 4px;
}

/* everywhere else */
* { 
  font-family: Arial, Helvetica, sans-serif; 
}


/*
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at http://angular.io/license
*/
<h1 id="top">Component Communication Cookbook</h1>

  <countdown-parent-lv></countdown-parent-lv>
  <hr>
  <countdown-parent-vc></countdown-parent-vc>



<!-- 
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at http://angular.io/license
-->
<!DOCTYPE html>
<html>

  <head>
    <title>Passing information from parent to child</title>
    <style>
      .to-top {margin-top: 8px; display: block;}
    </style>
    <link rel="stylesheet" href="styles.css">
    <link rel="stylesheet" href="demo.css">

    <!-- IE required polyfills, in this exact order -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.35.0/es6-shim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.20/system-polyfills.js"></script>
    <script src="https://npmcdn.com/angular2@2.0.0-beta.11/es6/dev/src/testing/shims_for_IE.js"></script>

    <script src="angular2-polyfills.js"></script>
    <script src="https://code.angularjs.org/tools/system.js"></script>
    <script src="https://npmcdn.com/typescript@1.8.9/lib/typescript.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.11/Rx.js"></script>
    <script src="angular2.min.js"></script>
    <script>
      System.config({
        transpiler: 'typescript', 
        typescriptOptions: { emitDecoratorMetadata: true }, 
        packages: {'app': {defaultExtension: 'ts'}} 
      });
      System.import('app/main')
            .then(null, console.error.bind(console));
    </script>
  </head>

  <body>
    <app>loading...</app>
  </body>

</html>


<!-- 
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at http://angular.io/license
-->
/**
 @license
The MIT License

Copyright (c) 2016 Google, Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

 */

/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};

/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {

/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId])
/******/ 			return installedModules[moduleId].exports;

/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			exports: {},
/******/ 			id: moduleId,
/******/ 			loaded: false
/******/ 		};

/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

/******/ 		// Flag the module as loaded
/******/ 		module.loaded = true;

/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}


/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;

/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;

/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";

/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(global) {"use strict";
	__webpack_require__(1);
	var event_target_1 = __webpack_require__(2);
	var define_property_1 = __webpack_require__(4);
	var register_element_1 = __webpack_require__(5);
	var property_descriptor_1 = __webpack_require__(6);
	var utils_1 = __webpack_require__(3);
	var set = 'set';
	var clear = 'clear';
	var blockingMethods = ['alert', 'prompt', 'confirm'];
	var _global = typeof window == 'undefined' ? global : window;
	patchTimer(_global, set, clear, 'Timeout');
	patchTimer(_global, set, clear, 'Interval');
	patchTimer(_global, set, clear, 'Immediate');
	patchTimer(_global, 'request', 'cancelMacroTask', 'AnimationFrame');
	patchTimer(_global, 'mozRequest', 'mozCancel', 'AnimationFrame');
	patchTimer(_global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');
	for (var i = 0; i < blockingMethods.length; i++) {
	    var name = blockingMethods[i];
	    utils_1.patchMethod(_global, name, function (delegate, symbol, name) {
	        return function (s, args) {
	            return Zone.current.run(delegate, _global, args, name);
	        };
	    });
	}
	event_target_1.eventTargetPatch(_global);
	property_descriptor_1.propertyDescriptorPatch(_global);
	utils_1.patchClass('MutationObserver');
	utils_1.patchClass('WebKitMutationObserver');
	utils_1.patchClass('FileReader');
	define_property_1.propertyPatch();
	register_element_1.registerElementPatch(_global);
	/// GEO_LOCATION
	if (_global['navigator'] && _global['navigator'].geolocation) {
	    utils_1.patchPrototype(_global['navigator'].geolocation, [
	        'getCurrentPosition',
	        'watchPosition'
	    ]);
	}
	function patchTimer(window, setName, cancelName, nameSuffix) {
	    setName += nameSuffix;
	    cancelName += nameSuffix;
	    function scheduleTask(task) {
	        var data = task.data;
	        data.args[0] = task.invoke;
	        data.handleId = setNative.apply(window, data.args);
	        return task;
	    }
	    function clearTask(task) {
	        return clearNative(task.data.handleId);
	    }
	    var setNative = utils_1.patchMethod(window, setName, function (delegate) { return function (self, args) {
	        if (typeof args[0] === 'function') {
	            var zone = Zone.current;
	            var options = {
	                handleId: null,
	                isPeriodic: nameSuffix == 'Interval',
	                delay: (nameSuffix == 'Timeout' || nameSuffix == 'Interval') ? args[1] || 0 : null,
	                args: args
	            };
	            return zone.scheduleMacroTask(setName, args[0], options, scheduleTask, clearTask);
	        }
	        else {
	            // cause an error by calling it directly.
	            return delegate.apply(window, args);
	        }
	    }; });
	    var clearNative = utils_1.patchMethod(window, cancelName, function (delegate) { return function (self, args) {
	        var task = args[0];
	        if (task && typeof task.type == 'string') {
	            task.zone.cancelTask(task);
	        }
	        else {
	            // cause an error by calling it directly.
	            delegate.apply(window, args);
	        }
	    }; });
	}

	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))

/***/ },
/* 1 */
/***/ function(module, exports) {

	/* WEBPACK VAR INJECTION */(function(global) {;
	;
	var Zone = (function (global) {
	    var Zone = (function () {
	        function Zone(parent, zoneSpec) {
	            this._properties = null;
	            this._parent = parent;
	            this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '<root>';
	            this._properties = zoneSpec && zoneSpec.properties || {};
	            this._zoneDelegate = new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);
	        }
	        Object.defineProperty(Zone, "current", {
	            get: function () { return _currentZone; },
	            enumerable: true,
	            configurable: true
	        });
	        ;
	        Object.defineProperty(Zone, "currentTask", {
	            get: function () { return _currentTask; },
	            enumerable: true,
	            configurable: true
	        });
	        ;
	        Object.defineProperty(Zone.prototype, "parent", {
	            get: function () { return this._parent; },
	            enumerable: true,
	            configurable: true
	        });
	        ;
	        Object.defineProperty(Zone.prototype, "name", {
	            get: function () { return this._name; },
	            enumerable: true,
	            configurable: true
	        });
	        ;
	        Zone.prototype.get = function (key) {
	            var current = this;
	            while (current) {
	                if (current._properties.hasOwnProperty(key)) {
	                    return current._properties[key];
	                }
	                current = current._parent;
	            }
	        };
	        Zone.prototype.fork = function (zoneSpec) {
	            if (!zoneSpec)
	                throw new Error('ZoneSpec required!');
	            return this._zoneDelegate.fork(this, zoneSpec);
	        };
	        Zone.prototype.wrap = function (callback, source) {
	            if (typeof callback != 'function') {
	                throw new Error('Expecting function got: ' + callback);
	            }
	            var callback = this._zoneDelegate.intercept(this, callback, source);
	            var zone = this;
	            return function () {
	                return zone.runGuarded(callback, this, arguments, source);
	            };
	        };
	        Zone.prototype.run = function (callback, applyThis, applyArgs, source) {
	            if (applyThis === void 0) { applyThis = null; }
	            if (applyArgs === void 0) { applyArgs = null; }
	            if (source === void 0) { source = null; }
	            var oldZone = _currentZone;
	            _currentZone = this;
	            try {
	                return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);
	            }
	            finally {
	                _currentZone = oldZone;
	            }
	        };
	        Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) {
	            if (applyThis === void 0) { applyThis = null; }
	            if (applyArgs === void 0) { applyArgs = null; }
	            if (source === void 0) { source = null; }
	            var oldZone = _currentZone;
	            _currentZone = this;
	            try {
	                try {
	                    return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);
	                }
	                catch (error) {
	                    if (this._zoneDelegate.handleError(this, error)) {
	                        throw error;
	                    }
	                }
	            }
	            finally {
	                _currentZone = oldZone;
	            }
	        };
	        Zone.prototype.runTask = function (task, applyThis, applyArgs) {
	            if (task.zone != this)
	                throw new Error('A task can only be run in the zone which created it! (Creation: ' +
	                    task.zone.name + '; Execution: ' + this.name + ')');
	            var previousTask = _currentTask;
	            _currentTask = task;
	            var oldZone = _currentZone;
	            _currentZone = this;
	            try {
	                try {
	                    return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);
	                }
	                catch (error) {
	                    if (this._zoneDelegate.handleError(this, error)) {
	                        throw error;
	                    }
	                }
	            }
	            finally {
	                _currentZone = oldZone;
	                _currentTask = previousTask;
	                if (task.type == 'microTask') {
	                }
	            }
	        };
	        Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) {
	            return this._zoneDelegate.scheduleTask(this, new ZoneTask('microTask', this, source, callback, data, customSchedule, null));
	        };
	        Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) {
	            return this._zoneDelegate.scheduleTask(this, new ZoneTask('macroTask', this, source, callback, data, customSchedule, customCancel));
	        };
	        Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) {
	            return this._zoneDelegate.scheduleTask(this, new ZoneTask('eventTask', this, source, callback, data, customSchedule, customCancel));
	        };
	        Zone.prototype.cancelTask = function (task) {
	            var value = this._zoneDelegate.cancelTask(this, task);
	            task.cancelFn = null;
	            return value;
	        };
	        Zone.__symbol__ = __symbol__;
	        return Zone;
	    }());
	    ;
	    var ZoneDelegate = (function () {
	        function ZoneDelegate(zone, parentDelegate, zoneSpec) {
	            this._taskCounts = { microTask: 0, macroTask: 0, eventTask: 0 };
	            this.zone = zone;
	            this._parentDelegate = parentDelegate;
	            this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);
	            this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);
	            this._interceptZS = zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);
	            this._interceptDlgt = zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);
	            this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);
	            this._invokeDlgt = zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);
	            this._handleErrorZS = zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);
	            this._handleErrorDlgt = zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);
	            this._scheduleTaskZS = zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);
	            this._scheduleTaskDlgt = zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);
	            this._invokeTaskZS = zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);
	            this._invokeTaskDlgt = zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);
	            this._cancelTaskZS = zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);
	            this._cancelTaskDlgt = zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);
	            this._hasTaskZS = zoneSpec && (zoneSpec.onHasTask ? zoneSpec : parentDelegate._hasTaskZS);
	            this._hasTaskDlgt = zoneSpec && (zoneSpec.onHasTask ? parentDelegate : parentDelegate._hasTaskDlgt);
	        }
	        ZoneDelegate.prototype.fork = function (targetZone, zoneSpec) {
	            return this._forkZS
	                ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec)
	                : new Zone(targetZone, zoneSpec);
	        };
	        ZoneDelegate.prototype.intercept = function (targetZone, callback, source) {
	            return this._interceptZS
	                ? this._interceptZS.onIntercept(this._interceptDlgt, this.zone, targetZone, callback, source)
	                : callback;
	        };
	        ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) {
	            return this._invokeZS
	                ? this._invokeZS.onInvoke(this._invokeDlgt, this.zone, targetZone, callback, applyThis, applyArgs, source)
	                : callback.apply(applyThis, applyArgs);
	        };
	        ZoneDelegate.prototype.handleError = function (targetZone, error) {
	            return this._handleErrorZS
	                ? this._handleErrorZS.onHandleError(this._handleErrorDlgt, this.zone, targetZone, error)
	                : true;
	        };
	        ZoneDelegate.prototype.scheduleTask = function (targetZone, task) {
	            try {
	                if (this._scheduleTaskZS) {
	                    return this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this.zone, targetZone, task);
	                }
	                else if (task.scheduleFn) {
	                    task.scheduleFn(task);
	                }
	                else if (task.type == 'microTask') {
	                    scheduleMicroTask(task);
	                }
	                else {
	                    throw new Error('Task is missing scheduleFn.');
	                }
	                return task;
	            }
	            finally {
	                if (targetZone == this.zone) {
	                    this._updateTaskCount(task.type, 1);
	                }
	            }
	        };
	        ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) {
	            try {
	                return this._invokeTaskZS
	                    ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this.zone, targetZone, task, applyThis, applyArgs)
	                    : task.callback.apply(applyThis, applyArgs);
	            }
	            finally {
	                if (targetZone == this.zone && (task.type != 'eventTask') && !(task.data && task.data.isPeriodic)) {
	                    this._updateTaskCount(task.type, -1);
	                }
	            }
	        };
	        ZoneDelegate.prototype.cancelTask = function (targetZone, task) {
	            var value;
	            if (this._cancelTaskZS) {
	                value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this.zone, targetZone, task);
	            }
	            else if (!task.cancelFn) {
	                throw new Error('Task does not support cancellation, or is already canceled.');
	            }
	            else {
	                value = task.cancelFn(task);
	            }
	            if (targetZone == this.zone) {
	                // this should not be in the finally block, because exceptions assume not canceled.
	                this._updateTaskCount(task.type, -1);
	            }
	            return value;
	        };
	        ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) {
	            return this._hasTaskZS && this._hasTaskZS.onHasTask(this._hasTaskDlgt, this.zone, targetZone, isEmpty);
	        };
	        ZoneDelegate.prototype._updateTaskCount = function (type, count) {
	            var counts = this._taskCounts;
	            var prev = counts[type];
	            var next = counts[type] = prev + count;
	            if (next < 0) {
	                debugger;
	                throw new Error('More tasks executed then were scheduled.');
	            }
	            if (prev == 0 || next == 0) {
	                var isEmpty = {
	                    microTask: counts.microTask > 0,
	                    macroTask: counts.macroTask > 0,
	                    eventTask: counts.eventTask > 0,
	                    change: type
	                };
	                try {
	                    this.hasTask(this.zone, isEmpty);
	                }
	                finally {
	                    if (this._parentDelegate) {
	                        this._parentDelegate._updateTaskCount(type, count);
	                    }
	                }
	            }
	        };
	        return ZoneDelegate;
	    }());
	    var ZoneTask = (function () {
	        function ZoneTask(type, zone, source, callback, options, scheduleFn, cancelFn) {
	            this.type = type;
	            this.zone = zone;
	            this.source = source;
	            this.data = options;
	            this.scheduleFn = scheduleFn;
	            this.cancelFn = cancelFn;
	            this.callback = callback;
	            var self = this;
	            this.invoke = function () {
	                try {
	                    return zone.runTask(self, this, arguments);
	                }
	                finally {
	                    drainMicroTaskQueue();
	                }
	            };
	        }
	        return ZoneTask;
	    }());
	    function __symbol__(name) { return '__zone_symbol__' + name; }
	    ;
	    var symbolSetTimeout = __symbol__('setTimeout');
	    var symbolPromise = __symbol__('Promise');
	    var symbolThen = __symbol__('then');
	    var _currentZone = new Zone(null, null);
	    var _currentTask = null;
	    var _microTaskQueue = [];
	    var _isDrainingMicrotaskQueue = false;
	    var _uncaughtPromiseErrors = [];
	    var _drainScheduled = false;
	    function scheduleQueueDrain() {
	        if (!_drainScheduled && !_currentTask && _microTaskQueue.length == 0) {
	            // We are not running in Task, so we need to kickstart the microtask queue.
	            if (global[symbolPromise]) {
	                global[symbolPromise].resolve(0)[symbolThen](drainMicroTaskQueue);
	            }
	            else {
	                global[symbolSetTimeout](drainMicroTaskQueue, 0);
	            }
	        }
	    }
	    function scheduleMicroTask(task) {
	        scheduleQueueDrain();
	        _microTaskQueue.push(task);
	    }
	    function consoleError(e) {
	        var rejection = e && e.rejection;
	        if (rejection) {
	            console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection);
	        }
	        console.error(e);
	    }
	    function drainMicroTaskQueue() {
	        if (!_isDrainingMicrotaskQueue) {
	            _isDrainingMicrotaskQueue = true;
	            while (_microTaskQueue.length) {
	                var queue = _microTaskQueue;
	                _microTaskQueue = [];
	                for (var i = 0; i < queue.length; i++) {
	                    var task = queue[i];
	                    try {
	                        task.zone.runTask(task, null, null);
	                    }
	                    catch (e) {
	                        consoleError(e);
	                    }
	                }
	            }
	            while (_uncaughtPromiseErrors.length) {
	                var uncaughtPromiseErrors = _uncaughtPromiseErrors;
	                _uncaughtPromiseErrors = [];
	                for (var i = 0; i < uncaughtPromiseErrors.length; i++) {
	                    var uncaughtPromiseError = uncaughtPromiseErrors[i];
	                    try {
	                        uncaughtPromiseError.zone.runGuarded(function () { throw uncaughtPromiseError; });
	                    }
	                    catch (e) {
	                        consoleError(e);
	                    }
	                }
	            }
	            _isDrainingMicrotaskQueue = false;
	            _drainScheduled = false;
	        }
	    }
	    function isThenable(value) {
	        return value && value.then;
	    }
	    function forwardResolution(value) { return value; }
	    function forwardRejection(rejection) { return ZoneAwarePromise.reject(rejection); }
	    var symbolState = __symbol__('state');
	    var symbolValue = __symbol__('value');
	    var source = 'Promise.then';
	    var UNRESOLVED = null;
	    var RESOLVED = true;
	    var REJECTED = false;
	    var REJECTED_NO_CATCH = 0;
	    function makeResolver(promise, state) {
	        return function (v) {
	            resolvePromise(promise, state, v);
	            // Do not return value or you will break the Promise spec.
	        };
	    }
	    function resolvePromise(promise, state, value) {
	        if (promise[symbolState] === UNRESOLVED) {
	            if (value instanceof ZoneAwarePromise && value[symbolState] !== UNRESOLVED) {
	                clearRejectedNoCatch(value);
	                resolvePromise(promise, value[symbolState], value[symbolValue]);
	            }
	            else if (isThenable(value)) {
	                value.then(makeResolver(promise, state), makeResolver(promise, false));
	            }
	            else {
	                promise[symbolState] = state;
	                var queue = promise[symbolValue];
	                promise[symbolValue] = value;
	                for (var i = 0; i < queue.length;) {
	                    scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);
	                }
	                if (queue.length == 0 && state == REJECTED) {
	                    promise[symbolState] = REJECTED_NO_CATCH;
	                    try {
	                        throw new Error("Uncaught (in promise): " + value);
	                    }
	                    catch (e) {
	                        var error = e;
	                        error.rejection = value;
	                        error.promise = promise;
	                        error.zone = Zone.current;
	                        error.task = Zone.currentTask;
	                        _uncaughtPromiseErrors.push(error);
	                        scheduleQueueDrain();
	                    }
	                }
	            }
	        }
	        // Resolving an already resolved promise is a noop.
	        return promise;
	    }
	    function clearRejectedNoCatch(promise) {
	        if (promise[symbolState] === REJECTED_NO_CATCH) {
	            promise[symbolState] = REJECTED;
	            for (var i = 0; i < _uncaughtPromiseErrors.length; i++) {
	                if (promise === _uncaughtPromiseErrors[i].promise) {
	                    _uncaughtPromiseErrors.splice(i, 1);
	                    break;
	                }
	            }
	        }
	    }
	    function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {
	        clearRejectedNoCatch(promise);
	        var delegate = promise[symbolState] ? onFulfilled || forwardResolution : onRejected || forwardRejection;
	        zone.scheduleMicroTask(source, function () {
	            try {
	                resolvePromise(chainPromise, true, zone.run(delegate, null, [promise[symbolValue]]));
	            }
	            catch (error) {
	                resolvePromise(chainPromise, false, error);
	            }
	        });
	    }
	    var ZoneAwarePromise = (function () {
	        function ZoneAwarePromise(executor) {
	            var promise = this;
	            promise[symbolState] = UNRESOLVED;
	            promise[symbolValue] = []; // queue;
	            try {
	                executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED));
	            }
	            catch (e) {
	                resolvePromise(promise, false, e);
	            }
	        }
	        ZoneAwarePromise.resolve = function (value) {
	            return resolvePromise(new this(null), RESOLVED, value);
	        };
	        ZoneAwarePromise.reject = function (error) {
	            return resolvePromise(new this(null), REJECTED, error);
	        };
	        ZoneAwarePromise.race = function (values) {
	            var resolve;
	            var reject;
	            var promise = new this(function (res, rej) { resolve = res; reject = rej; });
	            function onResolve(value) { promise && (promise = null || resolve(value)); }
	            function onReject(error) { promise && (promise = null || reject(error)); }
	            for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {
	                var value = values_1[_i];
	                if (!isThenable(value)) {
	                    value = this.resolve(value);
	                }
	                value.then(onResolve, onReject);
	            }
	            return promise;
	        };
	        ZoneAwarePromise.all = function (values) {
	            var resolve;
	            var reject;
	            var promise = new this(function (res, rej) { resolve = res; reject = rej; });
	            var resolvedValues = [];
	            var count = 0;
	            function onReject(error) { promise && reject(error); promise = null; }
	            for (var _i = 0, values_2 = values; _i < values_2.length; _i++) {
	                var value = values_2[_i];
	                if (!isThenable(value)) {
	                    value = this.resolve(value);
	                }
	                value.then((function (index) { return function (value) {
	                    resolvedValues[index] = value;
	                    count--;
	                    if (promise && !count) {
	                        resolve(resolvedValues);
	                    }
	                    promise == null;
	                }; })(count), onReject);
	                count++;
	            }
	            if (!count)
	                resolve(resolvedValues);
	            return promise;
	        };
	        ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) {
	            var chainPromise = new ZoneAwarePromise(null);
	            var zone = Zone.current;
	            if (this[symbolState] == UNRESOLVED) {
	                this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);
	            }
	            else {
	                scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);
	            }
	            return chainPromise;
	        };
	        ZoneAwarePromise.prototype.catch = function (onRejected) {
	            return this.then(null, onRejected);
	        };
	        return ZoneAwarePromise;
	    }());
	    var NativePromise = global[__symbol__('Promise')] = global.Promise;
	    global.Promise = ZoneAwarePromise;
	    if (NativePromise) {
	        var NativePromiseProtototype = NativePromise.prototype;
	        var NativePromiseThen = NativePromiseProtototype[__symbol__('then')]
	            = NativePromiseProtototype.then;
	        NativePromiseProtototype.then = function (onResolve, onReject) {
	            var nativePromise = this;
	            return new ZoneAwarePromise(function (resolve, reject) {
	                NativePromiseThen.call(nativePromise, resolve, reject);
	            }).then(onResolve, onReject);
	        };
	    }
	    return global.Zone = Zone;
	})(typeof window == 'undefined' ? global : window);

	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))

/***/ },
/* 2 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var utils_1 = __webpack_require__(3);
	var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video';
	var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex'.split(',');
	var EVENT_TARGET = 'EventTarget';
	function eventTargetPatch(_global) {
	    var apis = [];
	    var isWtf = _global['wtf'];
	    if (isWtf) {
	        // Workaround for: https://github.com/google/tracing-framework/issues/555
	        apis = WTF_ISSUE_555.split(',').map(function (v) { return 'HTML' + v + 'Element'; }).concat(NO_EVENT_TARGET);
	    }
	    else if (_global[EVENT_TARGET]) {
	        apis.push(EVENT_TARGET);
	    }
	    else {
	        // Note: EventTarget is not available in all browsers,
	        // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget
	        apis = NO_EVENT_TARGET;
	    }
	    for (var i = 0; i < apis.length; i++) {
	        var type = _global[apis[i]];
	        utils_1.patchEventTargetMethods(type && type.prototype);
	    }
	}
	exports.eventTargetPatch = eventTargetPatch;


/***/ },
/* 3 */
/***/ function(module, exports) {

	/* WEBPACK VAR INJECTION */(function(global) {"use strict";
	exports.zoneSymbol = Zone['__symbol__'];
	var _global = typeof window == 'undefined' ? global : window;
	function bindArguments(args, source) {
	    for (var i = args.length - 1; i >= 0; i--) {
	        if (typeof args[i] === 'function') {
	            args[i] = Zone.current.wrap(args[i], source + '_' + i);
	        }
	    }
	    return args;
	}
	exports.bindArguments = bindArguments;
	;
	function patchPrototype(prototype, fnNames) {
	    var source = prototype.constructor['name'];
	    for (var i = 0; i < fnNames.length; i++) {
	        var name = fnNames[i];
	        var delegate = prototype[name];
	        if (delegate) {
	            prototype[name] = (function (delegate) {
	                return function () {
	                    return delegate.apply(this, bindArguments(arguments, source + '.' + name));
	                };
	            })(delegate);
	        }
	    }
	}
	exports.patchPrototype = patchPrototype;
	;
	exports.isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope);
	exports.isNode = (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]');
	exports.isBrowser = !exports.isNode && !exports.isWebWorker && !!(window && window['HTMLElement']);
	function patchProperty(obj, prop) {
	    var desc = Object.getOwnPropertyDescriptor(obj, prop) || {
	        enumerable: true,
	        configurable: true
	    };
	    // A property descriptor cannot have getter/setter and be writable
	    // deleting the writable and value properties avoids this error:
	    //
	    // TypeError: property descriptors must not specify a value or be writable when a
	    // getter or setter has been specified
	    delete desc.writable;
	    delete desc.value;
	    // substr(2) cuz 'onclick' -> 'click', etc
	    var eventName = prop.substr(2);
	    var _prop = '_' + prop;
	    desc.set = function (fn) {
	        if (this[_prop]) {
	            this.removeEventListener(eventName, this[_prop]);
	        }
	        if (typeof fn === 'function') {
	            var wrapFn = function (event) {
	                var result;
	                result = fn.apply(this, arguments);
	                if (result != undefined && !result)
	                    event.preventDefault();
	            };
	            this[_prop] = wrapFn;
	            this.addEventListener(eventName, wrapFn, false);
	        }
	        else {
	            this[_prop] = null;
	        }
	    };
	    desc.get = function () {
	        return this[_prop];
	    };
	    Object.defineProperty(obj, prop, desc);
	}
	exports.patchProperty = patchProperty;
	;
	function patchOnProperties(obj, properties) {
	    var onProperties = [];
	    for (var prop in obj) {
	        if (prop.substr(0, 2) == 'on') {
	            onProperties.push(prop);
	        }
	    }
	    for (var j = 0; j < onProperties.length; j++) {
	        patchProperty(obj, onProperties[j]);
	    }
	    if (properties) {
	        for (var i = 0; i < properties.length; i++) {
	            patchProperty(obj, 'on' + properties[i]);
	        }
	    }
	}
	exports.patchOnProperties = patchOnProperties;
	;
	var EVENT_TASKS = exports.zoneSymbol('eventTasks');
	var ADD_EVENT_LISTENER = 'addEventListener';
	var REMOVE_EVENT_LISTENER = 'removeEventListener';
	var SYMBOL_ADD_EVENT_LISTENER = exports.zoneSymbol(ADD_EVENT_LISTENER);
	var SYMBOL_REMOVE_EVENT_LISTENER = exports.zoneSymbol(REMOVE_EVENT_LISTENER);
	function findExistingRegisteredTask(target, handler, name, capture, remove) {
	    var eventTasks = target[EVENT_TASKS];
	    if (eventTasks) {
	        for (var i = 0; i < eventTasks.length; i++) {
	            var eventTask = eventTasks[i];
	            var data = eventTask.data;
	            if (data.handler === handler
	                && data.useCapturing === capture
	                && data.eventName === name) {
	                if (remove) {
	                    eventTasks.splice(i, 1);
	                }
	                return eventTask;
	            }
	        }
	    }
	    return null;
	}
	function attachRegisteredEvent(target, eventTask) {
	    var eventTasks = target[EVENT_TASKS];
	    if (!eventTasks) {
	        eventTasks = target[EVENT_TASKS] = [];
	    }
	    eventTasks.push(eventTask);
	}
	function scheduleEventListener(eventTask) {
	    var meta = eventTask.data;
	    attachRegisteredEvent(meta.target, eventTask);
	    return meta.target[SYMBOL_ADD_EVENT_LISTENER](meta.eventName, eventTask.invoke, meta.useCapturing);
	}
	function cancelEventListener(eventTask) {
	    var meta = eventTask.data;
	    findExistingRegisteredTask(meta.target, eventTask.invoke, meta.eventName, meta.useCapturing, true);
	    meta.target[SYMBOL_REMOVE_EVENT_LISTENER](meta.eventName, eventTask.invoke, meta.useCapturing);
	}
	function zoneAwareAddEventListener(self, args) {
	    var eventName = args[0];
	    var handler = args[1];
	    var useCapturing = args[2] || false;
	    // - Inside a Web Worker, `this` is undefined, the context is `global`
	    // - When `addEventListener` is called on the global context in strict mode, `this` is undefined
	    // see https://github.com/angular/zone.js/issues/190
	    var target = self || _global;
	    var delegate = null;
	    if (typeof handler == 'function') {
	        delegate = handler;
	    }
	    else if (handler && handler.handleEvent) {
	        delegate = function (event) { return handler.handleEvent(event); };
	    }
	    // Ignore special listeners of IE11 & Edge dev tools, see https://github.com/angular/zone.js/issues/150
	    if (!delegate || handler && handler.toString() === "[object FunctionWrapper]") {
	        return target[SYMBOL_ADD_EVENT_LISTENER](eventName, handler, useCapturing);
	    }
	    var eventTask = findExistingRegisteredTask(target, handler, eventName, useCapturing, false);
	    if (eventTask) {
	        // we already registered, so this will have noop.
	        return target[SYMBOL_ADD_EVENT_LISTENER](eventName, eventTask.invoke, useCapturing);
	    }
	    var zone = Zone.current;
	    var source = target.constructor['name'] + '.addEventListener:' + eventName;
	    var data = {
	        target: target,
	        eventName: eventName,
	        name: eventName,
	        useCapturing: useCapturing,
	        handler: handler
	    };
	    zone.scheduleEventTask(source, delegate, data, scheduleEventListener, cancelEventListener);
	}
	function zoneAwareRemoveEventListener(self, args) {
	    var eventName = args[0];
	    var handler = args[1];
	    var useCapturing = args[2] || false;
	    // - Inside a Web Worker, `this` is undefined, the context is `global`
	    // - When `addEventListener` is called on the global context in strict mode, `this` is undefined
	    // see https://github.com/angular/zone.js/issues/190
	    var target = self || _global;
	    var eventTask = findExistingRegisteredTask(target, handler, eventName, useCapturing, true);
	    if (eventTask) {
	        eventTask.zone.cancelTask(eventTask);
	    }
	    else {
	        target[SYMBOL_REMOVE_EVENT_LISTENER](eventName, handler, useCapturing);
	    }
	}
	function patchEventTargetMethods(obj) {
	    if (obj && obj.addEventListener) {
	        patchMethod(obj, ADD_EVENT_LISTENER, function () { return zoneAwareAddEventListener; });
	        patchMethod(obj, REMOVE_EVENT_LISTENER, function () { return zoneAwareRemoveEventListener; });
	        return true;
	    }
	    else {
	        return false;
	    }
	}
	exports.patchEventTargetMethods = patchEventTargetMethods;
	;
	var originalInstanceKey = exports.zoneSymbol('originalInstance');
	// wrap some native API on `window`
	function patchClass(className) {
	    var OriginalClass = _global[className];
	    if (!OriginalClass)
	        return;
	    _global[className] = function () {
	        var a = bindArguments(arguments, className);
	        switch (a.length) {
	            case 0:
	                this[originalInstanceKey] = new OriginalClass();
	                break;
	            case 1:
	                this[originalInstanceKey] = new OriginalClass(a[0]);
	                break;
	            case 2:
	                this[originalInstanceKey] = new OriginalClass(a[0], a[1]);
	                break;
	            case 3:
	                this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);
	                break;
	            case 4:
	                this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);
	                break;
	            default: throw new Error('Arg list too long.');
	        }
	    };
	    var instance = new OriginalClass(function () { });
	    var prop;
	    for (prop in instance) {
	        (function (prop) {
	            if (typeof instance[prop] === 'function') {
	                _global[className].prototype[prop] = function () {
	                    return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);
	                };
	            }
	            else {
	                Object.defineProperty(_global[className].prototype, prop, {
	                    set: function (fn) {
	                        if (typeof fn === 'function') {
	                            this[originalInstanceKey][prop] = Zone.current.wrap(fn, className + '.' + prop);
	                        }
	                        else {
	                            this[originalInstanceKey][prop] = fn;
	                        }
	                    },
	                    get: function () {
	                        return this[originalInstanceKey][prop];
	                    }
	                });
	            }
	        }(prop));
	    }
	    for (prop in OriginalClass) {
	        if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {
	            _global[className][prop] = OriginalClass[prop];
	        }
	    }
	}
	exports.patchClass = patchClass;
	;
	function createNamedFn(name, delegate) {
	    try {
	        return (Function('f', "return function " + name + "(){return f(this, arguments)}"))(delegate);
	    }
	    catch (e) {
	        // if we fail, we must be CSP, just return delegate.
	        return function () {
	            return delegate(this, arguments);
	        };
	    }
	}
	exports.createNamedFn = createNamedFn;
	function patchMethod(target, name, patchFn) {
	    var proto = target;
	    while (proto && !proto.hasOwnProperty(name)) {
	        proto = Object.getPrototypeOf(proto);
	    }
	    if (!proto && target[name]) {
	        // somehow we did not find it, but we can see it. This happens on IE for Window properties.
	        proto = target;
	    }
	    var delegateName = exports.zoneSymbol(name);
	    var delegate;
	    if (proto && !(delegate = proto[delegateName])) {
	        delegate = proto[delegateName] = proto[name];
	        proto[name] = createNamedFn(name, patchFn(delegate, delegateName, name));
	    }
	    return delegate;
	}
	exports.patchMethod = patchMethod;

	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))

/***/ },
/* 4 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var utils_1 = __webpack_require__(3);
	// might need similar for object.freeze
	// i regret nothing
	var _defineProperty = Object.defineProperty;
	var _getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
	var _create = Object.create;
	var unconfigurablesKey = utils_1.zoneSymbol('unconfigurables');
	function propertyPatch() {
	    Object.defineProperty = function (obj, prop, desc) {
	        if (isUnconfigurable(obj, prop)) {
	            throw new TypeError('Cannot assign to read only property \'' + prop + '\' of ' + obj);
	        }
	        if (prop !== 'prototype') {
	            desc = rewriteDescriptor(obj, prop, desc);
	        }
	        return _defineProperty(obj, prop, desc);
	    };
	    Object.defineProperties = function (obj, props) {
	        Object.keys(props).forEach(function (prop) {
	            Object.defineProperty(obj, prop, props[prop]);
	        });
	        return obj;
	    };
	    Object.create = function (obj, proto) {
	        if (typeof proto === 'object') {
	            Object.keys(proto).forEach(function (prop) {
	                proto[prop] = rewriteDescriptor(obj, prop, proto[prop]);
	            });
	        }
	        return _create(obj, proto);
	    };
	    Object.getOwnPropertyDescriptor = function (obj, prop) {
	        var desc = _getOwnPropertyDescriptor(obj, prop);
	        if (isUnconfigurable(obj, prop)) {
	            desc.configurable = false;
	        }
	        return desc;
	    };
	}
	exports.propertyPatch = propertyPatch;
	;
	function _redefineProperty(obj, prop, desc) {
	    desc = rewriteDescriptor(obj, prop, desc);
	    return _defineProperty(obj, prop, desc);
	}
	exports._redefineProperty = _redefineProperty;
	;
	function isUnconfigurable(obj, prop) {
	    return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop];
	}
	function rewriteDescriptor(obj, prop, desc) {
	    desc.configurable = true;
	    if (!desc.configurable) {
	        if (!obj[unconfigurablesKey]) {
	            _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} });
	        }
	        obj[unconfigurablesKey][prop] = true;
	    }
	    return desc;
	}


/***/ },
/* 5 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var define_property_1 = __webpack_require__(4);
	var utils_1 = __webpack_require__(3);
	function registerElementPatch(_global) {
	    if (!utils_1.isBrowser || !('registerElement' in _global.document)) {
	        return;
	    }
	    var _registerElement = document.registerElement;
	    var callbacks = [
	        'createdCallback',
	        'attachedCallback',
	        'detachedCallback',
	        'attributeChangedCallback'
	    ];
	    document.registerElement = function (name, opts) {
	        if (opts && opts.prototype) {
	            callbacks.forEach(function (callback) {
	                var source = 'Document.registerElement::' + callback;
	                if (opts.prototype.hasOwnProperty(callback)) {
	                    var descriptor = Object.getOwnPropertyDescriptor(opts.prototype, callback);
	                    if (descriptor && descriptor.value) {
	                        descriptor.value = Zone.current.wrap(descriptor.value, source);
	                        define_property_1._redefineProperty(opts.prototype, callback, descriptor);
	                    }
	                    else {
	                        opts.prototype[callback] = Zone.current.wrap(opts.prototype[callback], source);
	                    }
	                }
	                else if (opts.prototype[callback]) {
	                    opts.prototype[callback] = Zone.current.wrap(opts.prototype[callback], source);
	                }
	            });
	        }
	        return _registerElement.apply(document, [name, opts]);
	    };
	}
	exports.registerElementPatch = registerElementPatch;


/***/ },
/* 6 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var webSocketPatch = __webpack_require__(7);
	var utils_1 = __webpack_require__(3);
	var eventNames = 'copy cut paste abort blur focus canplay canplaythrough change click contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop durationchange emptied ended input invalid keydown keypress keyup load loadeddata loadedmetadata loadstart message mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup pause play playing progress ratechange reset scroll seeked seeking select show stalled submit suspend timeupdate volumechange waiting mozfullscreenchange mozfullscreenerror mozpointerlockchange mozpointerlockerror error webglcontextrestored webglcontextlost webglcontextcreationerror'.split(' ');
	function propertyDescriptorPatch(_global) {
	    if (utils_1.isNode) {
	        return;
	    }
	    var supportsWebSocket = typeof WebSocket !== 'undefined';
	    if (canPatchViaPropertyDescriptor()) {
	        // for browsers that we can patch the descriptor:  Chrome & Firefox
	        if (utils_1.isBrowser) {
	            utils_1.patchOnProperties(HTMLElement.prototype, eventNames);
	        }
	        utils_1.patchOnProperties(XMLHttpRequest.prototype, null);
	        if (typeof IDBIndex !== 'undefined') {
	            utils_1.patchOnProperties(IDBIndex.prototype, null);
	            utils_1.patchOnProperties(IDBRequest.prototype, null);
	            utils_1.patchOnProperties(IDBOpenDBRequest.prototype, null);
	            utils_1.patchOnProperties(IDBDatabase.prototype, null);
	            utils_1.patchOnProperties(IDBTransaction.prototype, null);
	            utils_1.patchOnProperties(IDBCursor.prototype, null);
	        }
	        if (supportsWebSocket) {
	            utils_1.patchOnProperties(WebSocket.prototype, null);
	        }
	    }
	    else {
	        // Safari, Android browsers (Jelly Bean)
	        patchViaCapturingAllTheEvents();
	        utils_1.patchClass('XMLHttpRequest');
	        if (supportsWebSocket) {
	            webSocketPatch.apply(_global);
	        }
	    }
	}
	exports.propertyDescriptorPatch = propertyDescriptorPatch;
	function canPatchViaPropertyDescriptor() {
	    if (utils_1.isBrowser && !Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'onclick')
	        && typeof Element !== 'undefined') {
	        // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364
	        // IDL interface attributes are not configurable
	        var desc = Object.getOwnPropertyDescriptor(Element.prototype, 'onclick');
	        if (desc && !desc.configurable)
	            return false;
	    }
	    Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', {
	        get: function () {
	            return true;
	        }
	    });
	    var req = new XMLHttpRequest();
	    var result = !!req.onreadystatechange;
	    Object.defineProperty(XMLHttpRequest.prototype, 'onreadystatechange', {});
	    return result;
	}
	;
	var unboundKey = utils_1.zoneSymbol('unbound');
	// Whenever any eventListener fires, we check the eventListener target and all parents
	// for `onwhatever` properties and replace them with zone-bound functions
	// - Chrome (for now)
	function patchViaCapturingAllTheEvents() {
	    for (var i = 0; i < eventNames.length; i++) {
	        var property = eventNames[i];
	        var onproperty = 'on' + property;
	        document.addEventListener(property, function (event) {
	            var elt = event.target, bound;
	            var source = elt.constructor['name'] + '.' + onproperty;
	            while (elt) {
	                if (elt[onproperty] && !elt[onproperty][unboundKey]) {
	                    bound = Zone.current.wrap(elt[onproperty], source);
	                    bound[unboundKey] = elt[onproperty];
	                    elt[onproperty] = bound;
	                }
	                elt = elt.parentElement;
	            }
	        }, true);
	    }
	    ;
	}
	;


/***/ },
/* 7 */
/***/ function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(global) {"use strict";
	var utils_1 = __webpack_require__(3);
	// we have to patch the instance since the proto is non-configurable
	function apply(_global) {
	    var WS = _global.WebSocket;
	    // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener
	    // On older Chrome, no need since EventTarget was already patched
	    if (!_global.EventTarget) {
	        utils_1.patchEventTargetMethods(WS.prototype);
	    }
	    _global.WebSocket = function (a, b) {
	        var socket = arguments.length > 1 ? new WS(a, b) : new WS(a);
	        var proxySocket;
	        // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance
	        var onmessageDesc = Object.getOwnPropertyDescriptor(socket, 'onmessage');
	        if (onmessageDesc && onmessageDesc.configurable === false) {
	            proxySocket = Object.create(socket);
	            ['addEventListener', 'removeEventListener', 'send', 'close'].forEach(function (propName) {
	                proxySocket[propName] = function () {
	                    return socket[propName].apply(socket, arguments);
	                };
	            });
	        }
	        else {
	            // we can patch the real socket
	            proxySocket = socket;
	        }
	        utils_1.patchOnProperties(proxySocket, ['close', 'error', 'message', 'open']);
	        return proxySocket;
	    };
	    global.WebSocket.prototype = Object.create(WS.prototype, { constructor: { value: WebSocket } });
	}
	exports.apply = apply;

	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))

/***/ }
/******/ ]);
/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};

/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {

/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId])
/******/ 			return installedModules[moduleId].exports;

/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			exports: {},
/******/ 			id: moduleId,
/******/ 			loaded: false
/******/ 		};

/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

/******/ 		// Flag the module as loaded
/******/ 		module.loaded = true;

/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}


/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;

/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;

/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";

/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports) {

	'use strict';
	(function () {
	    var NEWLINE = '\n';
	    var SEP = '  -------------  ';
	    var IGNORE_FRAMES = [];
	    var creationTrace = '__creationTrace__';
	    var LongStackTrace = (function () {
	        function LongStackTrace() {
	            this.error = getStacktrace();
	            this.timestamp = new Date();
	        }
	        return LongStackTrace;
	    }());
	    function getStacktraceWithUncaughtError() {
	        return new Error('STACKTRACE TRACKING');
	    }
	    function getStacktraceWithCaughtError() {
	        try {
	            throw getStacktraceWithUncaughtError();
	        }
	        catch (e) {
	            return e;
	        }
	    }
	    // Some implementations of exception handling don't create a stack trace if the exception
	    // isn't thrown, however it's faster not to actually throw the exception.
	    var error = getStacktraceWithUncaughtError();
	    var coughtError = getStacktraceWithCaughtError();
	    var getStacktrace = error.stack
	        ? getStacktraceWithUncaughtError
	        : (coughtError.stack ? getStacktraceWithCaughtError : getStacktraceWithUncaughtError);
	    function getFrames(error) {
	        return error.stack ? error.stack.split(NEWLINE) : [];
	    }
	    function addErrorStack(lines, error) {
	        var trace;
	        trace = getFrames(error);
	        for (var i = 0; i < trace.length; i++) {
	            var frame = trace[i];
	            // Filter out the Frames which are part of stack capturing.
	            if (!(i < IGNORE_FRAMES.length && IGNORE_FRAMES[i] === frame)) {
	                lines.push(trace[i]);
	            }
	        }
	    }
	    function renderLongStackTrace(frames, stack) {
	        var longTrace = [stack];
	        if (frames) {
	            var timestamp = new Date().getTime();
	            for (var i = 0; i < frames.length; i++) {
	                var traceFrames = frames[i];
	                var lastTime = traceFrames.timestamp;
	                longTrace.push(SEP + " Elapsed: " + (timestamp - lastTime.getTime()) + " ms; At: " + lastTime + " " + SEP);
	                addErrorStack(longTrace, traceFrames.error);
	                timestamp = lastTime.getTime();
	            }
	        }
	        return longTrace.join(NEWLINE);
	    }
	    Zone['longStackTraceZoneSpec'] = {
	        name: 'long-stack-trace',
	        longStackTraceLimit: 10,
	        onScheduleTask: function (parentZoneDelegate, currentZone, targetZone, task) {
	            var currentTask = Zone.currentTask;
	            var trace = currentTask && currentTask.data && currentTask.data[creationTrace] || [];
	            trace = [new LongStackTrace()].concat(trace);
	            if (trace.length > this.longStackTraceLimit) {
	                trace.length = this.longStackTraceLimit;
	            }
	            if (!task.data)
	                task.data = {};
	            task.data[creationTrace] = trace;
	            return parentZoneDelegate.scheduleTask(targetZone, task);
	        },
	        onHandleError: function (parentZoneDelegate, currentZone, targetZone, error) {
	            var parentTask = Zone.currentTask;
	            if (error instanceof Error && parentTask) {
	                var descriptor = Object.getOwnPropertyDescriptor(error, 'stack');
	                if (descriptor) {
	                    var delegateGet = descriptor.get;
	                    var value = descriptor.value;
	                    descriptor = {
	                        get: function () {
	                            return renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], delegateGet ? delegateGet.apply(this) : value);
	                        }
	                    };
	                    Object.defineProperty(error, 'stack', descriptor);
	                }
	                else {
	                    error.stack = renderLongStackTrace(parentTask.data && parentTask.data[creationTrace], error.stack);
	                }
	            }
	            return parentZoneDelegate.handleError(targetZone, error);
	        }
	    };
	    function captureStackTraces(stackTraces, count) {
	        if (count > 0) {
	            stackTraces.push(getFrames((new LongStackTrace()).error));
	            captureStackTraces(stackTraces, count - 1);
	        }
	    }
	    function computeIgnoreFrames() {
	        var frames = [];
	        captureStackTraces(frames, 2);
	        var frames1 = frames[0];
	        var frames2 = frames[1];
	        for (var i = 0; i < frames1.length; i++) {
	            var frame1 = frames1[i];
	            var frame2 = frames2[i];
	            if (frame1 === frame2) {
	                IGNORE_FRAMES.push(frame1);
	            }
	            else {
	                break;
	            }
	        }
	    }
	    computeIgnoreFrames();
	})();


/***/ }
/******/ ]);
/**
 @license
Apache License

Version 2.0, January 2004

http://www.apache.org/licenses/ 

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

You must give any other recipients of the Work or Derivative Works a copy of this License; and

You must cause any modified files to carry prominent notices stating that You changed the files; and

You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS
 */

/*! *****************************************************************************
Copyright (C) Microsoft. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0

THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.

See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
"use strict";
var Reflect;
(function (Reflect) {
    // Load global or shim versions of Map, Set, and WeakMap
    var functionPrototype = Object.getPrototypeOf(Function);
    var _Map = typeof Map === "function" ? Map : CreateMapPolyfill();
    var _Set = typeof Set === "function" ? Set : CreateSetPolyfill();
    var _WeakMap = typeof WeakMap === "function" ? WeakMap : CreateWeakMapPolyfill();
    // [[Metadata]] internal slot
    var __Metadata__ = new _WeakMap();
    /**
      * Applies a set of decorators to a property of a target object.
      * @param decorators An array of decorators.
      * @param target The target object.
      * @param targetKey (Optional) The property key to decorate.
      * @param targetDescriptor (Optional) The property descriptor for the target key
      * @remarks Decorators are applied in reverse order.
      * @example
      *
      *     class C {
      *         // property declarations are not part of ES6, though they are valid in TypeScript:
      *         // static staticProperty;
      *         // property;
      *
      *         constructor(p) { }
      *         static staticMethod(p) { }
      *         method(p) { }
      *     }
      *
      *     // constructor
      *     C = Reflect.decorate(decoratorsArray, C);
      *
      *     // property (on constructor)
      *     Reflect.decorate(decoratorsArray, C, "staticProperty");
      *
      *     // property (on prototype)
      *     Reflect.decorate(decoratorsArray, C.prototype, "property");
      *
      *     // method (on constructor)
      *     Object.defineProperty(C, "staticMethod",
      *         Reflect.decorate(decoratorsArray, C, "staticMethod",
      *             Object.getOwnPropertyDescriptor(C, "staticMethod")));
      *
      *     // method (on prototype)
      *     Object.defineProperty(C.prototype, "method",
      *         Reflect.decorate(decoratorsArray, C.prototype, "method",
      *             Object.getOwnPropertyDescriptor(C.prototype, "method")));
      *
      */
    function decorate(decorators, target, targetKey, targetDescriptor) {
        if (!IsUndefined(targetDescriptor)) {
            if (!IsArray(decorators)) {
                throw new TypeError();
            }
            else if (!IsObject(target)) {
                throw new TypeError();
            }
            else if (IsUndefined(targetKey)) {
                throw new TypeError();
            }
            else if (!IsObject(targetDescriptor)) {
                throw new TypeError();
            }
            targetKey = ToPropertyKey(targetKey);
            return DecoratePropertyWithDescriptor(decorators, target, targetKey, targetDescriptor);
        }
        else if (!IsUndefined(targetKey)) {
            if (!IsArray(decorators)) {
                throw new TypeError();
            }
            else if (!IsObject(target)) {
                throw new TypeError();
            }
            targetKey = ToPropertyKey(targetKey);
            return DecoratePropertyWithoutDescriptor(decorators, target, targetKey);
        }
        else {
            if (!IsArray(decorators)) {
                throw new TypeError();
            }
            else if (!IsConstructor(target)) {
                throw new TypeError();
            }
            return DecorateConstructor(decorators, target);
        }
    }
    Reflect.decorate = decorate;
    /**
      * A default metadata decorator factory that can be used on a class, class member, or parameter.
      * @param metadataKey The key for the metadata entry.
      * @param metadataValue The value for the metadata entry.
      * @returns A decorator function.
      * @remarks
      * If `metadataKey` is already defined for the target and target key, the
      * metadataValue for that key will be overwritten.
      * @example
      *
      *     // constructor
      *     @Reflect.metadata(key, value)
      *     class C {
      *     }
      *
      *     // property (on constructor, TypeScript only)
      *     class C {
      *         @Reflect.metadata(key, value)
      *         static staticProperty;
      *     }
      *
      *     // property (on prototype, TypeScript only)
      *     class C {
      *         @Reflect.metadata(key, value)
      *         property;
      *     }
      *
      *     // method (on constructor)
      *     class C {
      *         @Reflect.metadata(key, value)
      *         static staticMethod() { }
      *     }
      *
      *     // method (on prototype)
      *     class C {
      *         @Reflect.metadata(key, value)
      *         method() { }
      *     }
      *
      */
    function metadata(metadataKey, metadataValue) {
        function decorator(target, targetKey) {
            if (!IsUndefined(targetKey)) {
                if (!IsObject(target)) {
                    throw new TypeError();
                }
                targetKey = ToPropertyKey(targetKey);
                OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, targetKey);
            }
            else {
                if (!IsConstructor(target)) {
                    throw new TypeError();
                }
                OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, undefined);
            }
        }
        return decorator;
    }
    Reflect.metadata = metadata;
    /**
      * Define a unique metadata entry on the target.
      * @param metadataKey A key used to store and retrieve metadata.
      * @param metadataValue A value that contains attached metadata.
      * @param target The target object on which to define metadata.
      * @param targetKey (Optional) The property key for the target.
      * @example
      *
      *     class C {
      *         // property declarations are not part of ES6, though they are valid in TypeScript:
      *         // static staticProperty;
      *         // property;
      *
      *         constructor(p) { }
      *         static staticMethod(p) { }
      *         method(p) { }
      *     }
      *
      *     // constructor
      *     Reflect.defineMetadata("custom:annotation", options, C);
      *
      *     // property (on constructor)
      *     Reflect.defineMetadata("custom:annotation", options, C, "staticProperty");
      *
      *     // property (on prototype)
      *     Reflect.defineMetadata("custom:annotation", options, C.prototype, "property");
      *
      *     // method (on constructor)
      *     Reflect.defineMetadata("custom:annotation", options, C, "staticMethod");
      *
      *     // method (on prototype)
      *     Reflect.defineMetadata("custom:annotation", options, C.prototype, "method");
      *
      *     // decorator factory as metadata-producing annotation.
      *     function MyAnnotation(options): Decorator {
      *         return (target, key?) => Reflect.defineMetadata("custom:annotation", options, target, key);
      *     }
      *
      */
    function defineMetadata(metadataKey, metadataValue, target, targetKey) {
        if (!IsObject(target)) {
            throw new TypeError();
        }
        else if (!IsUndefined(targetKey)) {
            targetKey = ToPropertyKey(targetKey);
        }
        return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, targetKey);
    }
    Reflect.defineMetadata = defineMetadata;
    /**
      * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.
      * @param metadataKey A key used to store and retrieve metadata.
      * @param target The target object on which the metadata is defined.
      * @param targetKey (Optional) The property key for the target.
      * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.
      * @example
      *
      *     class C {
      *         // property declarations are not part of ES6, though they are valid in TypeScript:
      *         // static staticProperty;
      *         // property;
      *
      *         constructor(p) { }
      *         static staticMethod(p) { }
      *         method(p) { }
      *     }
      *
      *     // constructor
      *     result = Reflect.hasMetadata("custom:annotation", C);
      *
      *     // property (on constructor)
      *     result = Reflect.hasMetadata("custom:annotation", C, "staticProperty");
      *
      *     // property (on prototype)
      *     result = Reflect.hasMetadata("custom:annotation", C.prototype, "property");
      *
      *     // method (on constructor)
      *     result = Reflect.hasMetadata("custom:annotation", C, "staticMethod");
      *
      *     // method (on prototype)
      *     result = Reflect.hasMetadata("custom:annotation", C.prototype, "method");
      *
      */
    function hasMetadata(metadataKey, target, targetKey) {
        if (!IsObject(target)) {
            throw new TypeError();
        }
        else if (!IsUndefined(targetKey)) {
            targetKey = ToPropertyKey(targetKey);
        }
        return OrdinaryHasMetadata(metadataKey, target, targetKey);
    }
    Reflect.hasMetadata = hasMetadata;
    /**
      * Gets a value indicating whether the target object has the provided metadata key defined.
      * @param metadataKey A key used to store and retrieve metadata.
      * @param target The target object on which the metadata is defined.
      * @param targetKey (Optional) The property key for the target.
      * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.
      * @example
      *
      *     class C {
      *         // property declarations are not part of ES6, though they are valid in TypeScript:
      *         // static staticProperty;
      *         // property;
      *
      *         constructor(p) { }
      *         static staticMethod(p) { }
      *         method(p) { }
      *     }
      *
      *     // constructor
      *     result = Reflect.hasOwnMetadata("custom:annotation", C);
      *
      *     // property (on constructor)
      *     result = Reflect.hasOwnMetadata("custom:annotation", C, "staticProperty");
      *
      *     // property (on prototype)
      *     result = Reflect.hasOwnMetadata("custom:annotation", C.prototype, "property");
      *
      *     // method (on constructor)
      *     result = Reflect.hasOwnMetadata("custom:annotation", C, "staticMethod");
      *
      *     // method (on prototype)
      *     result = Reflect.hasOwnMetadata("custom:annotation", C.prototype, "method");
      *
      */
    function hasOwnMetadata(metadataKey, target, targetKey) {
        if (!IsObject(target)) {
            throw new TypeError();
        }
        else if (!IsUndefined(targetKey)) {
            targetKey = ToPropertyKey(targetKey);
        }
        return OrdinaryHasOwnMetadata(metadataKey, target, targetKey);
    }
    Reflect.hasOwnMetadata = hasOwnMetadata;
    /**
      * Gets the metadata value for the provided metadata key on the target object or its prototype chain.
      * @param metadataKey A key used to store and retrieve metadata.
      * @param target The target object on which the metadata is defined.
      * @param targetKey (Optional) The property key for the target.
      * @returns The metadata value for the metadata key if found; otherwise, `undefined`.
      * @example
      *
      *     class C {
      *         // property declarations are not part of ES6, though they are valid in TypeScript:
      *         // static staticProperty;
      *         // property;
      *
      *         constructor(p) { }
      *         static staticMethod(p) { }
      *         method(p) { }
      *     }
      *
      *     // constructor
      *     result = Reflect.getMetadata("custom:annotation", C);
      *
      *     // property (on constructor)
      *     result = Reflect.getMetadata("custom:annotation", C, "staticProperty");
      *
      *     // property (on prototype)
      *     result = Reflect.getMetadata("custom:annotation", C.prototype, "property");
      *
      *     // method (on constructor)
      *     result = Reflect.getMetadata("custom:annotation", C, "staticMethod");
      *
      *     // method (on prototype)
      *     result = Reflect.getMetadata("custom:annotation", C.prototype, "method");
      *
      */
    function getMetadata(metadataKey, target, targetKey) {
        if (!IsObject(target)) {
            throw new TypeError();
        }
        else if (!IsUndefined(targetKey)) {
            targetKey = ToPropertyKey(targetKey);
        }
        return OrdinaryGetMetadata(metadataKey, target, targetKey);
    }
    Reflect.getMetadata = getMetadata;
    /**
      * Gets the metadata value for the provided metadata key on the target object.
      * @param metadataKey A key used to store and retrieve metadata.
      * @param target The target object on which the metadata is defined.
      * @param targetKey (Optional) The property key for the target.
      * @returns The metadata value for the metadata key if found; otherwise, `undefined`.
      * @example
      *
      *     class C {
      *         // property declarations are not part of ES6, though they are valid in TypeScript:
      *         // static staticProperty;
      *         // property;
      *
      *         constructor(p) { }
      *         static staticMethod(p) { }
      *         method(p) { }
      *     }
      *
      *     // constructor
      *     result = Reflect.getOwnMetadata("custom:annotation", C);
      *
      *     // property (on constructor)
      *     result = Reflect.getOwnMetadata("custom:annotation", C, "staticProperty");
      *
      *     // property (on prototype)
      *     result = Reflect.getOwnMetadata("custom:annotation", C.prototype, "property");
      *
      *     // method (on constructor)
      *     result = Reflect.getOwnMetadata("custom:annotation", C, "staticMethod");
      *
      *     // method (on prototype)
      *     result = Reflect.getOwnMetadata("custom:annotation", C.prototype, "method");
      *
      */
    function getOwnMetadata(metadataKey, target, targetKey) {
        if (!IsObject(target)) {
            throw new TypeError();
        }
        else if (!IsUndefined(targetKey)) {
            targetKey = ToPropertyKey(targetKey);
        }
        return OrdinaryGetOwnMetadata(metadataKey, target, targetKey);
    }
    Reflect.getOwnMetadata = getOwnMetadata;
    /**
      * Gets the metadata keys defined on the target object or its prototype chain.
      * @param target The target object on which the metadata is defined.
      * @param targetKey (Optional) The property key for the target.
      * @returns An array of unique metadata keys.
      * @example
      *
      *     class C {
      *         // property declarations are not part of ES6, though they are valid in TypeScript:
      *         // static staticProperty;
      *         // property;
      *
      *         constructor(p) { }
      *         static staticMethod(p) { }
      *         method(p) { }
      *     }
      *
      *     // constructor
      *     result = Reflect.getMetadataKeys(C);
      *
      *     // property (on constructor)
      *     result = Reflect.getMetadataKeys(C, "staticProperty");
      *
      *     // property (on prototype)
      *     result = Reflect.getMetadataKeys(C.prototype, "property");
      *
      *     // method (on constructor)
      *     result = Reflect.getMetadataKeys(C, "staticMethod");
      *
      *     // method (on prototype)
      *     result = Reflect.getMetadataKeys(C.prototype, "method");
      *
      */
    function getMetadataKeys(target, targetKey) {
        if (!IsObject(target)) {
            throw new TypeError();
        }
        else if (!IsUndefined(targetKey)) {
            targetKey = ToPropertyKey(targetKey);
        }
        return OrdinaryMetadataKeys(target, targetKey);
    }
    Reflect.getMetadataKeys = getMetadataKeys;
    /**
      * Gets the unique metadata keys defined on the target object.
      * @param target The target object on which the metadata is defined.
      * @param targetKey (Optional) The property key for the target.
      * @returns An array of unique metadata keys.
      * @example
      *
      *     class C {
      *         // property declarations are not part of ES6, though they are valid in TypeScript:
      *         // static staticProperty;
      *         // property;
      *
      *         constructor(p) { }
      *         static staticMethod(p) { }
      *         method(p) { }
      *     }
      *
      *     // constructor
      *     result = Reflect.getOwnMetadataKeys(C);
      *
      *     // property (on constructor)
      *     result = Reflect.getOwnMetadataKeys(C, "staticProperty");
      *
      *     // property (on prototype)
      *     result = Reflect.getOwnMetadataKeys(C.prototype, "property");
      *
      *     // method (on constructor)
      *     result = Reflect.getOwnMetadataKeys(C, "staticMethod");
      *
      *     // method (on prototype)
      *     result = Reflect.getOwnMetadataKeys(C.prototype, "method");
      *
      */
    function getOwnMetadataKeys(target, targetKey) {
        if (!IsObject(target)) {
            throw new TypeError();
        }
        else if (!IsUndefined(targetKey)) {
            targetKey = ToPropertyKey(targetKey);
        }
        return OrdinaryOwnMetadataKeys(target, targetKey);
    }
    Reflect.getOwnMetadataKeys = getOwnMetadataKeys;
    /**
      * Deletes the metadata entry from the target object with the provided key.
      * @param metadataKey A key used to store and retrieve metadata.
      * @param target The target object on which the metadata is defined.
      * @param targetKey (Optional) The property key for the target.
      * @returns `true` if the metadata entry was found and deleted; otherwise, false.
      * @example
      *
      *     class C {
      *         // property declarations are not part of ES6, though they are valid in TypeScript:
      *         // static staticProperty;
      *         // property;
      *
      *         constructor(p) { }
      *         static staticMethod(p) { }
      *         method(p) { }
      *     }
      *
      *     // constructor
      *     result = Reflect.deleteMetadata("custom:annotation", C);
      *
      *     // property (on constructor)
      *     result = Reflect.deleteMetadata("custom:annotation", C, "staticProperty");
      *
      *     // property (on prototype)
      *     result = Reflect.deleteMetadata("custom:annotation", C.prototype, "property");
      *
      *     // method (on constructor)
      *     result = Reflect.deleteMetadata("custom:annotation", C, "staticMethod");
      *
      *     // method (on prototype)
      *     result = Reflect.deleteMetadata("custom:annotation", C.prototype, "method");
      *
      */
    function deleteMetadata(metadataKey, target, targetKey) {
        if (!IsObject(target)) {
            throw new TypeError();
        }
        else if (!IsUndefined(targetKey)) {
            targetKey = ToPropertyKey(targetKey);
        }
        // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#deletemetadata-metadatakey-p-
        var metadataMap = GetOrCreateMetadataMap(target, targetKey, false);
        if (IsUndefined(metadataMap)) {
            return false;
        }
        if (!metadataMap.delete(metadataKey)) {
            return false;
        }
        if (metadataMap.size > 0) {
            return true;
        }
        var targetMetadata = __Metadata__.get(target);
        targetMetadata.delete(targetKey);
        if (targetMetadata.size > 0) {
            return true;
        }
        __Metadata__.delete(target);
        return true;
    }
    Reflect.deleteMetadata = deleteMetadata;
    function DecorateConstructor(decorators, target) {
        for (var i = decorators.length - 1; i >= 0; --i) {
            var decorator = decorators[i];
            var decorated = decorator(target);
            if (!IsUndefined(decorated)) {
                if (!IsConstructor(decorated)) {
                    throw new TypeError();
                }
                target = decorated;
            }
        }
        return target;
    }
    function DecoratePropertyWithDescriptor(decorators, target, propertyKey, descriptor) {
        for (var i = decorators.length - 1; i >= 0; --i) {
            var decorator = decorators[i];
            var decorated = decorator(target, propertyKey, descriptor);
            if (!IsUndefined(decorated)) {
                if (!IsObject(decorated)) {
                    throw new TypeError();
                }
                descriptor = decorated;
            }
        }
        return descriptor;
    }
    function DecoratePropertyWithoutDescriptor(decorators, target, propertyKey) {
        for (var i = decorators.length - 1; i >= 0; --i) {
            var decorator = decorators[i];
            decorator(target, propertyKey);
        }
    }
    // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#getorcreatemetadatamap--o-p-create-
    function GetOrCreateMetadataMap(target, targetKey, create) {
        var targetMetadata = __Metadata__.get(target);
        if (!targetMetadata) {
            if (!create) {
                return undefined;
            }
            targetMetadata = new _Map();
            __Metadata__.set(target, targetMetadata);
        }
        var keyMetadata = targetMetadata.get(targetKey);
        if (!keyMetadata) {
            if (!create) {
                return undefined;
            }
            keyMetadata = new _Map();
            targetMetadata.set(targetKey, keyMetadata);
        }
        return keyMetadata;
    }
    // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinaryhasmetadata--metadatakey-o-p-
    function OrdinaryHasMetadata(MetadataKey, O, P) {
        var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);
        if (hasOwn) {
            return true;
        }
        var parent = GetPrototypeOf(O);
        if (parent !== null) {
            return OrdinaryHasMetadata(MetadataKey, parent, P);
        }
        return false;
    }
    // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinaryhasownmetadata--metadatakey-o-p-
    function OrdinaryHasOwnMetadata(MetadataKey, O, P) {
        var metadataMap = GetOrCreateMetadataMap(O, P, false);
        if (metadataMap === undefined) {
            return false;
        }
        return Boolean(metadataMap.has(MetadataKey));
    }
    // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinarygetmetadata--metadatakey-o-p-
    function OrdinaryGetMetadata(MetadataKey, O, P) {
        var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);
        if (hasOwn) {
            return OrdinaryGetOwnMetadata(MetadataKey, O, P);
        }
        var parent = GetPrototypeOf(O);
        if (parent !== null) {
            return OrdinaryGetMetadata(MetadataKey, parent, P);
        }
        return undefined;
    }
    // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinarygetownmetadata--metadatakey-o-p-
    function OrdinaryGetOwnMetadata(MetadataKey, O, P) {
        var metadataMap = GetOrCreateMetadataMap(O, P, false);
        if (metadataMap === undefined) {
            return undefined;
        }
        return metadataMap.get(MetadataKey);
    }
    // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinarydefineownmetadata--metadatakey-metadatavalue-o-p-
    function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {
        var metadataMap = GetOrCreateMetadataMap(O, P, true);
        metadataMap.set(MetadataKey, MetadataValue);
    }
    // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinarymetadatakeys--o-p-
    function OrdinaryMetadataKeys(O, P) {
        var ownKeys = OrdinaryOwnMetadataKeys(O, P);
        var parent = GetPrototypeOf(O);
        if (parent === null) {
            return ownKeys;
        }
        var parentKeys = OrdinaryMetadataKeys(parent, P);
        if (parentKeys.length <= 0) {
            return ownKeys;
        }
        if (ownKeys.length <= 0) {
            return parentKeys;
        }
        var set = new _Set();
        var keys = [];
        for (var _i = 0; _i < ownKeys.length; _i++) {
            var key = ownKeys[_i];
            var hasKey = set.has(key);
            if (!hasKey) {
                set.add(key);
                keys.push(key);
            }
        }
        for (var _a = 0; _a < parentKeys.length; _a++) {
            var key = parentKeys[_a];
            var hasKey = set.has(key);
            if (!hasKey) {
                set.add(key);
                keys.push(key);
            }
        }
        return keys;
    }
    // https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md#ordinaryownmetadatakeys--o-p-
    function OrdinaryOwnMetadataKeys(target, targetKey) {
        var metadataMap = GetOrCreateMetadataMap(target, targetKey, false);
        var keys = [];
        if (metadataMap) {
            metadataMap.forEach(function (_, key) { return keys.push(key); });
        }
        return keys;
    }
    // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-language-types-undefined-type
    function IsUndefined(x) {
        return x === undefined;
    }
    // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isarray
    function IsArray(x) {
        return Array.isArray(x);
    }
    // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object-type
    function IsObject(x) {
        return typeof x === "object" ? x !== null : typeof x === "function";
    }
    // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isconstructor
    function IsConstructor(x) {
        return typeof x === "function";
    }
    // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-language-types-symbol-type
    function IsSymbol(x) {
        return typeof x === "symbol";
    }
    // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-topropertykey
    function ToPropertyKey(value) {
        if (IsSymbol(value)) {
            return value;
        }
        return String(value);
    }
    function GetPrototypeOf(O) {
        var proto = Object.getPrototypeOf(O);
        if (typeof O !== "function" || O === functionPrototype) {
            return proto;
        }
        // TypeScript doesn't set __proto__ in ES5, as it's non-standard. 
        // Try to determine the superclass constructor. Compatible implementations
        // must either set __proto__ on a subclass constructor to the superclass constructor,
        // or ensure each class has a valid `constructor` property on its prototype that
        // points back to the constructor.
        // If this is not the same as Function.[[Prototype]], then this is definately inherited.
        // This is the case when in ES6 or when using __proto__ in a compatible browser.
        if (proto !== functionPrototype) {
            return proto;
        }
        // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.
        var prototype = O.prototype;
        var prototypeProto = Object.getPrototypeOf(prototype);
        if (prototypeProto == null || prototypeProto === Object.prototype) {
            return proto;
        }
        // if the constructor was not a function, then we cannot determine the heritage.
        var constructor = prototypeProto.constructor;
        if (typeof constructor !== "function") {
            return proto;
        }
        // if we have some kind of self-reference, then we cannot determine the heritage.
        if (constructor === O) {
            return proto;
        }
        // we have a pretty good guess at the heritage.
        return constructor;
    }
    // naive Map shim
    function CreateMapPolyfill() {
        var cacheSentinel = {};
        function Map() {
            this._keys = [];
            this._values = [];
            this._cache = cacheSentinel;
        }
        Map.prototype = {
            get size() {
                return this._keys.length;
            },
            has: function (key) {
                if (key === this._cache) {
                    return true;
                }
                if (this._find(key) >= 0) {
                    this._cache = key;
                    return true;
                }
                return false;
            },
            get: function (key) {
                var index = this._find(key);
                if (index >= 0) {
                    this._cache = key;
                    return this._values[index];
                }
                return undefined;
            },
            set: function (key, value) {
                this.delete(key);
                this._keys.push(key);
                this._values.push(value);
                this._cache = key;
                return this;
            },
            delete: function (key) {
                var index = this._find(key);
                if (index >= 0) {
                    this._keys.splice(index, 1);
                    this._values.splice(index, 1);
                    this._cache = cacheSentinel;
                    return true;
                }
                return false;
            },
            clear: function () {
                this._keys.length = 0;
                this._values.length = 0;
                this._cache = cacheSentinel;
            },
            forEach: function (callback, thisArg) {
                var size = this.size;
                for (var i = 0; i < size; ++i) {
                    var key = this._keys[i];
                    var value = this._values[i];
                    this._cache = key;
                    callback.call(this, value, key, this);
                }
            },
            _find: function (key) {
                var keys = this._keys;
                var size = keys.length;
                for (var i = 0; i < size; ++i) {
                    if (keys[i] === key) {
                        return i;
                    }
                }
                return -1;
            }
        };
        return Map;
    }
    // naive Set shim
    function CreateSetPolyfill() {
        var cacheSentinel = {};
        function Set() {
            this._map = new _Map();
        }
        Set.prototype = {
            get size() {
                return this._map.length;
            },
            has: function (value) {
                return this._map.has(value);
            },
            add: function (value) {
                this._map.set(value, value);
                return this;
            },
            delete: function (value) {
                return this._map.delete(value);
            },
            clear: function () {
                this._map.clear();
            },
            forEach: function (callback, thisArg) {
                this._map.forEach(callback, thisArg);
            }
        };
        return Set;
    }
    // naive WeakMap shim
    function CreateWeakMapPolyfill() {
        var UUID_SIZE = 16;
        var isNode = typeof global !== "undefined" && Object.prototype.toString.call(global.process) === '[object process]';
        var nodeCrypto = isNode && require("crypto");
        var hasOwn = Object.prototype.hasOwnProperty;
        var keys = {};
        var rootKey = CreateUniqueKey();
        function WeakMap() {
            this._key = CreateUniqueKey();
        }
        WeakMap.prototype = {
            has: function (target) {
                var table = GetOrCreateWeakMapTable(target, false);
                if (table) {
                    return this._key in table;
                }
                return false;
            },
            get: function (target) {
                var table = GetOrCreateWeakMapTable(target, false);
                if (table) {
                    return table[this._key];
                }
                return undefined;
            },
            set: function (target, value) {
                var table = GetOrCreateWeakMapTable(target, true);
                table[this._key] = value;
                return this;
            },
            delete: function (target) {
                var table = GetOrCreateWeakMapTable(target, false);
                if (table && this._key in table) {
                    return delete table[this._key];
                }
                return false;
            },
            clear: function () {
                // NOTE: not a real clear, just makes the previous data unreachable
                this._key = CreateUniqueKey();
            }
        };
        function FillRandomBytes(buffer, size) {
            for (var i = 0; i < size; ++i) {
                buffer[i] = Math.random() * 255 | 0;
            }
        }
        function GenRandomBytes(size) {
            if (nodeCrypto) {
                var data = nodeCrypto.randomBytes(size);
                return data;
            }
            else if (typeof Uint8Array === "function") {
                var data = new Uint8Array(size);
                if (typeof crypto !== "undefined") {
                    crypto.getRandomValues(data);
                }
                else if (typeof msCrypto !== "undefined") {
                    msCrypto.getRandomValues(data);
                }
                else {
                    FillRandomBytes(data, size);
                }
                return data;
            }
            else {
                var data = new Array(size);
                FillRandomBytes(data, size);
                return data;
            }
        }
        function CreateUUID() {
            var data = GenRandomBytes(UUID_SIZE);
            // mark as random - RFC 4122 § 4.4
            data[6] = data[6] & 0x4f | 0x40;
            data[8] = data[8] & 0xbf | 0x80;
            var result = "";
            for (var offset = 0; offset < UUID_SIZE; ++offset) {
                var byte = data[offset];
                if (offset === 4 || offset === 6 || offset === 8) {
                    result += "-";
                }
                if (byte < 16) {
                    result += "0";
                }
                result += byte.toString(16).toLowerCase();
            }
            return result;
        }
        function CreateUniqueKey() {
            var key;
            do {
                key = "@@WeakMap@@" + CreateUUID();
            } while (hasOwn.call(keys, key));
            keys[key] = true;
            return key;
        }
        function GetOrCreateWeakMapTable(target, create) {
            if (!hasOwn.call(target, rootKey)) {
                if (!create) {
                    return undefined;
                }
                Object.defineProperty(target, rootKey, { value: Object.create(null) });
            }
            return target[rootKey];
        }
        return WeakMap;
    }
    // hook global Reflect
    (function (__global) {
        if (typeof __global.Reflect !== "undefined") {
            if (__global.Reflect !== Reflect) {
                for (var p in Reflect) {
                    __global.Reflect[p] = Reflect[p];
                }
            }
        }
        else {
            __global.Reflect = Reflect;
        }
    })(typeof window !== "undefined" ? window :
        typeof WorkerGlobalScope !== "undefined" ? self :
            typeof global !== "undefined" ? global :
                Function("return this;")());
})(Reflect || (Reflect = {}));
//# sourceMappingURLDisabled=Reflect.js.map
"format register";System.register("angular2/src/facade/lang",[],!0,function(e,t,r){function n(e){Zone.current.scheduleMicroTask("scheduleMicrotask",e)}function i(e){return e.name}function o(){G=!0}function a(){if(G)throw"Cannot enable prod mode after platform setup.";q=!1}function s(){return q}function c(e){return e}function l(){return function(e){return e}}function u(e){return void 0!==e&&null!==e}function p(e){return void 0===e||null===e}function d(e){return"string"==typeof e}function f(e){return"function"==typeof e}function h(e){return f(e)}function g(e){return"object"==typeof e&&null!==e}function m(e){return e instanceof H.Promise}function v(e){return Array.isArray(e)}function y(e){return"number"==typeof e}function _(e){return e instanceof t.Date&&!isNaN(e.valueOf())}function b(){}function C(e){if("string"==typeof e)return e;if(void 0===e||null===e)return""+e;if(e.name)return e.name;if(e.overriddenName)return e.overriddenName;var t=e.toString(),r=t.indexOf("\n");return-1===r?t:t.substring(0,r)}function w(e){return e}function P(e,t){return e}function E(e,t){return e[t]}function S(e,t){return e===t||"number"==typeof e&&"number"==typeof t&&isNaN(e)&&isNaN(t)}function R(e){return e}function x(e){return p(e)?null:e}function O(e){return p(e)?!1:e}function D(e){return null!==e&&("function"==typeof e||"object"==typeof e)}function A(e){console.log(e)}function T(e,t,r){for(var n=t.split("."),i=e;n.length>1;){var o=n.shift();i=i.hasOwnProperty(o)&&u(i[o])?i[o]:i[o]={}}(void 0===i||null===i)&&(i={}),i[n.shift()]=r}function I(){if(p(te))if(u(Symbol)&&u(Symbol.iterator))te=Symbol.iterator;else for(var e=Object.getOwnPropertyNames(Map.prototype),t=0;t<e.length;++t){var r=e[t];"entries"!==r&&"size"!==r&&Map.prototype[r]===Map.prototype.entries&&(te=r)}return te}function k(e,t,r,n){var i=r+"\nreturn "+t+"\n//# sourceURL="+e,o=[],a=[];for(var s in n)o.push(s),a.push(n[s]);return(new(Function.bind.apply(Function,[void 0].concat(o.concat(i))))).apply(void 0,a)}function N(e){return!D(e)}function V(e,t){return e.constructor===t}function M(e){return e.reduce(function(e,t){return e|t})}function j(e){return e.reduce(function(e,t){return e&t})}function B(e){return H.encodeURI(e)}var L=System.global,F=L.define;L.define=void 0;var W,U=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)};W="undefined"==typeof window?"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:L:window,t.scheduleMicroTask=n,t.IS_DART=!1;var H=W;t.global=H,t.Type=Function,t.getTypeNameForDebugging=i,t.Math=H.Math,t.Date=H.Date;var q=!0,G=!1;t.lockMode=o,t.enableProdMode=a,t.assertionsEnabled=s,H.assert=function(e){},t.CONST_EXPR=c,t.CONST=l,t.isPresent=u,t.isBlank=p,t.isString=d,t.isFunction=f,t.isType=h,t.isStringMap=g,t.isPromise=m,t.isArray=v,t.isNumber=y,t.isDate=_,t.noop=b,t.stringify=C,t.serializeEnum=w,t.deserializeEnum=P,t.resolveEnumToken=E;var K=function(){function e(){}return e.fromCharCode=function(e){return String.fromCharCode(e)},e.charCodeAt=function(e,t){return e.charCodeAt(t)},e.split=function(e,t){return e.split(t)},e.equals=function(e,t){return e===t},e.stripLeft=function(e,t){if(e&&e.length){for(var r=0,n=0;n<e.length&&e[n]==t;n++)r++;e=e.substring(r)}return e},e.stripRight=function(e,t){if(e&&e.length){for(var r=e.length,n=e.length-1;n>=0&&e[n]==t;n--)r--;e=e.substring(0,r)}return e},e.replace=function(e,t,r){return e.replace(t,r)},e.replaceAll=function(e,t,r){return e.replace(t,r)},e.slice=function(e,t,r){return void 0===t&&(t=0),void 0===r&&(r=null),e.slice(t,null===r?void 0:r)},e.replaceAllMapped=function(e,t,r){return e.replace(t,function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];return e.splice(-2,2),r(e)})},e.contains=function(e,t){return-1!=e.indexOf(t)},e.compare=function(e,t){return t>e?-1:e>t?1:0},e}();t.StringWrapper=K;var z=function(){function e(e){void 0===e&&(e=[]),this.parts=e}return e.prototype.add=function(e){this.parts.push(e)},e.prototype.toString=function(){return this.parts.join("")},e}();t.StringJoiner=z;var Q=function(e){function t(t){e.call(this),this.message=t}return U(t,e),t.prototype.toString=function(){return this.message},t}(Error);t.NumberParseError=Q;var $=function(){function e(){}return e.toFixed=function(e,t){return e.toFixed(t)},e.equal=function(e,t){return e===t},e.parseIntAutoRadix=function(e){var t=parseInt(e);if(isNaN(t))throw new Q("Invalid integer literal when parsing "+e);return t},e.parseInt=function(e,t){if(10==t){if(/^(\-|\+)?[0-9]+$/.test(e))return parseInt(e,t)}else if(16==t){if(/^(\-|\+)?[0-9ABCDEFabcdef]+$/.test(e))return parseInt(e,t)}else{var r=parseInt(e,t);if(!isNaN(r))return r}throw new Q("Invalid integer literal when parsing "+e+" in base "+t)},e.parseFloat=function(e){return parseFloat(e)},Object.defineProperty(e,"NaN",{get:function(){return NaN},enumerable:!0,configurable:!0}),e.isNaN=function(e){return isNaN(e)},e.isInteger=function(e){return Number.isInteger(e)},e}();t.NumberWrapper=$,t.RegExp=H.RegExp;var X=function(){function e(){}return e.create=function(e,t){return void 0===t&&(t=""),t=t.replace(/g/g,""),new H.RegExp(e,t+"g")},e.firstMatch=function(e,t){return e.lastIndex=0,e.exec(t)},e.test=function(e,t){return e.lastIndex=0,e.test(t)},e.matcher=function(e,t){return e.lastIndex=0,{re:e,input:t}},e}();t.RegExpWrapper=X;var Z=function(){function e(){}return e.next=function(e){return e.re.exec(e.input)},e}();t.RegExpMatcherWrapper=Z;var J=function(){function e(){}return e.apply=function(e,t){return e.apply(null,t)},e}();t.FunctionWrapper=J,t.looseIdentical=S,t.getMapKey=R,t.normalizeBlank=x,t.normalizeBool=O,t.isJsObject=D,t.print=A;var Y=function(){function e(){}return e.parse=function(e){return H.JSON.parse(e)},e.stringify=function(e){return H.JSON.stringify(e,null,2)},e}();t.Json=Y;var ee=function(){function e(){}return e.create=function(e,r,n,i,o,a,s){return void 0===r&&(r=1),void 0===n&&(n=1),void 0===i&&(i=0),void 0===o&&(o=0),void 0===a&&(a=0),void 0===s&&(s=0),new t.Date(e,r-1,n,i,o,a,s)},e.fromISOString=function(e){return new t.Date(e)},e.fromMillis=function(e){return new t.Date(e)},e.toMillis=function(e){return e.getTime()},e.now=function(){return new t.Date},e.toJson=function(e){return e.toJSON()},e}();t.DateWrapper=ee,t.setValueOnPath=T;var te=null;return t.getSymbolIterator=I,t.evalExpression=k,t.isPrimitive=N,t.hasConstructor=V,t.bitWiseOr=M,t.bitWiseAnd=j,t.escape=B,L.define=F,r.exports}),System.register("angular2/src/core/di/metadata",["angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=function(){function e(e){this.token=e}return e.prototype.toString=function(){return"@Inject("+s.stringify(this.token)+")"},e=o([s.CONST(),a("design:paramtypes",[Object])],e)}();t.InjectMetadata=c;var l=function(){function e(){}return e.prototype.toString=function(){return"@Optional()"},e=o([s.CONST(),a("design:paramtypes",[])],e)}();t.OptionalMetadata=l;var u=function(){function e(){}return Object.defineProperty(e.prototype,"token",{get:function(){return null},enumerable:!0,configurable:!0}),e=o([s.CONST(),a("design:paramtypes",[])],e)}();t.DependencyMetadata=u;var p=function(){function e(){}return e=o([s.CONST(),a("design:paramtypes",[])],e)}();t.InjectableMetadata=p;var d=function(){function e(){}return e.prototype.toString=function(){return"@Self()"},e=o([s.CONST(),a("design:paramtypes",[])],e)}();t.SelfMetadata=d;var f=function(){function e(){}return e.prototype.toString=function(){return"@SkipSelf()"},e=o([s.CONST(),a("design:paramtypes",[])],e)}();t.SkipSelfMetadata=f;var h=function(){function e(){}return e.prototype.toString=function(){return"@Host()"},e=o([s.CONST(),a("design:paramtypes",[])],e)}();return t.HostMetadata=h,n.define=i,r.exports}),System.register("angular2/src/core/util/decorators",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e){return p.isFunction(e)&&e.hasOwnProperty("annotation")&&(e=e.annotation),e}function i(e,t){if(e===Object||e===String||e===Function||e===Number||e===Array)throw new Error("Can not use native "+p.stringify(e)+" as constructor");if(p.isFunction(e))return e;if(e instanceof Array){var r=e,i=e[e.length-1];if(!p.isFunction(i))throw new Error("Last position of Class method array must be Function in key "+t+" was '"+p.stringify(i)+"'");var o=r.length-1;if(o!=i.length)throw new Error("Number of annotations ("+o+") does not match number of arguments ("+i.length+") in the function: "+p.stringify(i));for(var a=[],s=0,c=r.length-1;c>s;s++){var l=[];a.push(l);var u=r[s];if(u instanceof Array)for(var d=0;d<u.length;d++)l.push(n(u[d]));else p.isFunction(u)?l.push(n(u)):l.push(u)}return f.defineMetadata("parameters",a,i),i}throw new Error("Only Function or Array is supported in Class definition for key '"+t+"' is '"+p.stringify(e)+"'")}function o(e){var t=i(e.hasOwnProperty("constructor")?e.constructor:void 0,"constructor"),r=t.prototype;if(e.hasOwnProperty("extends")){if(!p.isFunction(e["extends"]))throw new Error("Class definition 'extends' property must be a constructor function was: "+p.stringify(e["extends"]));t.prototype=r=Object.create(e["extends"].prototype)}for(var n in e)"extends"!=n&&"prototype"!=n&&e.hasOwnProperty(n)&&(r[n]=i(e[n],n));return this&&this.annotations instanceof Array&&f.defineMetadata("annotations",this.annotations,t),t.name||(t.overriddenName="class"+d++),t}function a(e,t){function r(r){var n=new e(r);if(this instanceof e)return n;var i=p.isFunction(this)&&this.annotations instanceof Array?this.annotations:[];i.push(n);var a=function(e){var t=f.getOwnMetadata("annotations",e);return t=t||[],t.push(n),f.defineMetadata("annotations",t,e),e};return a.annotations=i,a.Class=o,t&&t(a),a}return void 0===t&&(t=null),r.prototype=Object.create(e.prototype),r}function s(e){function t(){function t(e,t,r){var n=f.getMetadata("parameters",e);for(n=n||[];n.length<=r;)n.push(null);n[r]=n[r]||[];var o=n[r];return o.push(i),f.defineMetadata("parameters",n,e),e}for(var r=[],n=0;n<arguments.length;n++)r[n-0]=arguments[n];var i=Object.create(e.prototype);return e.apply(i,r),this instanceof e?i:(t.annotation=i,t)}return t.prototype=Object.create(e.prototype),t}function c(e){function t(){for(var t=[],r=0;r<arguments.length;r++)t[r-0]=arguments[r];var n=Object.create(e.prototype);return e.apply(n,t),this instanceof e?n:function(e,t){var r=f.getOwnMetadata("propMetadata",e.constructor);r=r||{},r[t]=r[t]||[],r[t].unshift(n),f.defineMetadata("propMetadata",r,e.constructor)}}return t.prototype=Object.create(e.prototype),t}var l=System.global,u=l.define;l.define=void 0;var p=e("angular2/src/facade/lang"),d=0;t.Class=o;var f=p.global.Reflect;return function(){if(!f||!f.getMetadata)throw"reflect-metadata shim is required when using class decorators"}(),t.makeDecorator=a,t.makeParamDecorator=s,t.makePropDecorator=c,l.define=u,r.exports}),System.register("angular2/src/core/di/forward_ref",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e){return e.__forward_ref__=n,e.toString=function(){return s.stringify(this())},e}function i(e){return s.isFunction(e)&&e.hasOwnProperty("__forward_ref__")&&e.__forward_ref__===n?e():e}var o=System.global,a=o.define;o.define=void 0;var s=e("angular2/src/facade/lang");return t.forwardRef=n,t.resolveForwardRef=i,o.define=a,r.exports}),System.register("angular2/src/facade/collection",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e){return c.isJsObject(e)?c.isArray(e)||!(e instanceof t.Map)&&c.getSymbolIterator()in e:!1}function i(e,t,r){for(var n=e[c.getSymbolIterator()](),i=t[c.getSymbolIterator()]();;){var o=n.next(),a=i.next();if(o.done&&a.done)return!0;if(o.done||a.done)return!1;if(!r(o.value,a.value))return!1}}function o(e,t){if(c.isArray(e))for(var r=0;r<e.length;r++)t(e[r]);else for(var n,i=e[c.getSymbolIterator()]();!(n=i.next()).done;)t(n.value)}var a=System.global,s=a.define;a.define=void 0;var c=e("angular2/src/facade/lang");t.Map=c.global.Map,t.Set=c.global.Set;var l=function(){try{if(1===new t.Map([[1,2]]).size)return function(e){return new t.Map(e)}}catch(e){}return function(e){for(var r=new t.Map,n=0;n<e.length;n++){var i=e[n];r.set(i[0],i[1])}return r}}(),u=function(){try{if(new t.Map(new t.Map))return function(e){return new t.Map(e)}}catch(e){}return function(e){var r=new t.Map;return e.forEach(function(e,t){r.set(t,e)}),r}}(),p=function(){return(new t.Map).keys().next?function(e){for(var t,r=e.keys();!(t=r.next()).done;)e.set(t.value,null)}:function(e){e.forEach(function(t,r){e.set(r,null)})}}(),d=function(){try{if((new t.Map).values().next)return function(e,t){return t?Array.from(e.values()):Array.from(e.keys())}}catch(e){}return function(e,t){var r=g.createFixedSize(e.size),n=0;return e.forEach(function(e,i){r[n]=t?e:i,n++}),r}}(),f=function(){function e(){}return e.clone=function(e){return u(e)},e.createFromStringMap=function(e){var r=new t.Map;for(var n in e)r.set(n,e[n]);return r},e.toStringMap=function(e){var t={};return e.forEach(function(e,r){return t[r]=e}),t},e.createFromPairs=function(e){return l(e)},e.clearValues=function(e){p(e)},e.iterable=function(e){return e},e.keys=function(e){return d(e,!1)},e.values=function(e){return d(e,!0)},e}();t.MapWrapper=f;var h=function(){function e(){}return e.create=function(){return{}},e.contains=function(e,t){return e.hasOwnProperty(t)},e.get=function(e,t){return e.hasOwnProperty(t)?e[t]:void 0},e.set=function(e,t,r){e[t]=r},e.keys=function(e){return Object.keys(e)},e.values=function(e){return Object.keys(e).reduce(function(t,r){return t.push(e[r]),t},[])},e.isEmpty=function(e){for(var t in e)return!1;return!0},e["delete"]=function(e,t){delete e[t]},e.forEach=function(e,t){for(var r in e)e.hasOwnProperty(r)&&t(e[r],r)},e.merge=function(e,t){var r={};for(var n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);return r},e.equals=function(e,t){var r=Object.keys(e),n=Object.keys(t);if(r.length!=n.length)return!1;for(var i,o=0;o<r.length;o++)if(i=r[o],e[i]!==t[i])return!1;return!0},e}();t.StringMapWrapper=h;var g=function(){function e(){}return e.createFixedSize=function(e){return new Array(e)},e.createGrowableSize=function(e){return new Array(e)},e.clone=function(e){return e.slice(0)},e.createImmutable=function(t){var r=e.clone(t);return Object.seal(r),r},e.forEachWithIndex=function(e,t){for(var r=0;r<e.length;r++)t(e[r],r)},e.first=function(e){return e?e[0]:null},e.last=function(e){return e&&0!=e.length?e[e.length-1]:null},e.indexOf=function(e,t,r){return void 0===r&&(r=0),e.indexOf(t,r)},e.contains=function(e,t){return-1!==e.indexOf(t)},e.reversed=function(t){var r=e.clone(t);return r.reverse()},e.concat=function(e,t){return e.concat(t)},e.insert=function(e,t,r){e.splice(t,0,r)},e.removeAt=function(e,t){var r=e[t];return e.splice(t,1),r},e.removeAll=function(e,t){for(var r=0;r<t.length;++r){var n=e.indexOf(t[r]);e.splice(n,1)}},e.remove=function(e,t){var r=e.indexOf(t);return r>-1?(e.splice(r,1),!0):!1},e.clear=function(e){e.length=0},e.isEmpty=function(e){return 0==e.length},e.fill=function(e,t,r,n){void 0===r&&(r=0),void 0===n&&(n=null),e.fill(t,r,null===n?e.length:n)},e.equals=function(e,t){if(e.length!=t.length)return!1;for(var r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0},e.slice=function(e,t,r){return void 0===t&&(t=0),void 0===r&&(r=null),e.slice(t,null===r?void 0:r)},e.splice=function(e,t,r){return e.splice(t,r)},e.sort=function(e,t){c.isPresent(t)?e.sort(t):e.sort()},e.toString=function(e){return e.toString()},e.toJSON=function(e){return JSON.stringify(e)},e.maximum=function(e,t){if(0==e.length)return null;for(var r=null,n=-(1/0),i=0;i<e.length;i++){var o=e[i];if(!c.isBlank(o)){var a=t(o);a>n&&(r=o,n=a)}}return r},e.isImmutable=function(e){return Object.isSealed(e)},e}();t.ListWrapper=g,t.isListLikeIterable=n,t.areIterablesEqual=i,t.iterateListLike=o;var m=function(){var e=new t.Set([1,2,3]);return 3===e.size?function(e){return new t.Set(e)}:function(e){var r=new t.Set(e);if(r.size!==e.length)for(var n=0;n<e.length;n++)r.add(e[n]);return r}}(),v=function(){function e(){}return e.createFromList=function(e){return m(e)},e.has=function(e,t){return e.has(t)},e["delete"]=function(e,t){e["delete"](t)},e}();return t.SetWrapper=v,a.define=s,r.exports}),System.register("angular2/src/facade/base_wrapped_exception",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=function(e){function t(t){e.call(this,t)}return o(t,e),Object.defineProperty(t.prototype,"wrapperMessage",{get:function(){return""},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"wrapperStack",{get:function(){return null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"originalException",{get:function(){return null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"originalStack",{get:function(){return null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"message",{get:function(){return""},enumerable:!0,configurable:!0}),t}(Error);return t.BaseWrappedException=a,n.define=i,r.exports}),System.register("angular2/src/facade/exception_handler",["angular2/src/facade/lang","angular2/src/facade/base_wrapped_exception","angular2/src/facade/collection"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/facade/base_wrapped_exception"),s=e("angular2/src/facade/collection"),c=function(){function e(){this.res=[]}return e.prototype.log=function(e){this.res.push(e)},e.prototype.logError=function(e){this.res.push(e)},e.prototype.logGroup=function(e){this.res.push(e)},e.prototype.logGroupEnd=function(){},e}(),l=function(){function e(e,t){void 0===t&&(t=!0),this._logger=e,this._rethrowException=t}return e.exceptionToString=function(t,r,n){void 0===r&&(r=null),void 0===n&&(n=null);var i=new c,o=new e(i,!1);return o.call(t,r,n),i.res.join("\n")},e.prototype.call=function(e,t,r){void 0===t&&(t=null),void 0===r&&(r=null);var n=this._findOriginalException(e),i=this._findOriginalStack(e),a=this._findContext(e);if(this._logger.logGroup("EXCEPTION: "+this._extractMessage(e)),o.isPresent(t)&&o.isBlank(i)&&(this._logger.logError("STACKTRACE:"),this._logger.logError(this._longStackTrace(t))),o.isPresent(r)&&this._logger.logError("REASON: "+r),o.isPresent(n)&&this._logger.logError("ORIGINAL EXCEPTION: "+this._extractMessage(n)),o.isPresent(i)&&(this._logger.logError("ORIGINAL STACKTRACE:"),this._logger.logError(this._longStackTrace(i))),o.isPresent(a)&&(this._logger.logError("ERROR CONTEXT:"),this._logger.logError(a)),this._logger.logGroupEnd(),this._rethrowException)throw e},e.prototype._extractMessage=function(e){return e instanceof a.BaseWrappedException?e.wrapperMessage:e.toString()},e.prototype._longStackTrace=function(e){return s.isListLikeIterable(e)?e.join("\n\n-----async gap-----\n"):e.toString()},e.prototype._findContext=function(e){try{return e instanceof a.BaseWrappedException?o.isPresent(e.context)?e.context:this._findContext(e.originalException):null}catch(t){return null}},e.prototype._findOriginalException=function(e){if(!(e instanceof a.BaseWrappedException))return null;for(var t=e.originalException;t instanceof a.BaseWrappedException&&o.isPresent(t.originalException);)t=t.originalException;return t},e.prototype._findOriginalStack=function(e){if(!(e instanceof a.BaseWrappedException))return null;for(var t=e,r=e.originalStack;t instanceof a.BaseWrappedException&&o.isPresent(t.originalException);)t=t.originalException,t instanceof a.BaseWrappedException&&o.isPresent(t.originalException)&&(r=t.originalStack);return r},e}();return t.ExceptionHandler=l,n.define=i,r.exports}),System.register("angular2/src/core/reflection/reflector",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection"],!0,function(e,t,r){function n(e,t){c.StringMapWrapper.forEach(t,function(t,r){return e.set(r,t)})}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/facade/lang"),s=e("angular2/src/facade/exceptions"),c=e("angular2/src/facade/collection"),l=function(){function e(e,t,r,n,i){this.annotations=e,this.parameters=t,this.factory=r,this.interfaces=n,this.propMetadata=i}return e}();t.ReflectionInfo=l;var u=function(){function e(e){this._injectableInfo=new c.Map,this._getters=new c.Map,this._setters=new c.Map,this._methods=new c.Map,this._usedKeys=null,this.reflectionCapabilities=e}return e.prototype.isReflectionEnabled=function(){return this.reflectionCapabilities.isReflectionEnabled()},e.prototype.trackUsage=function(){this._usedKeys=new c.Set},e.prototype.listUnusedKeys=function(){var e=this;if(null==this._usedKeys)throw new s.BaseException("Usage tracking is disabled");var t=c.MapWrapper.keys(this._injectableInfo);return t.filter(function(t){return!c.SetWrapper.has(e._usedKeys,t)})},e.prototype.registerFunction=function(e,t){this._injectableInfo.set(e,t)},e.prototype.registerType=function(e,t){this._injectableInfo.set(e,t)},e.prototype.registerGetters=function(e){n(this._getters,e)},e.prototype.registerSetters=function(e){n(this._setters,e)},e.prototype.registerMethods=function(e){n(this._methods,e)},e.prototype.factory=function(e){if(this._containsReflectionInfo(e)){var t=this._getReflectionInfo(e).factory;return a.isPresent(t)?t:null}return this.reflectionCapabilities.factory(e)},e.prototype.parameters=function(e){if(this._injectableInfo.has(e)){var t=this._getReflectionInfo(e).parameters;return a.isPresent(t)?t:[]}return this.reflectionCapabilities.parameters(e)},e.prototype.annotations=function(e){if(this._injectableInfo.has(e)){var t=this._getReflectionInfo(e).annotations;return a.isPresent(t)?t:[]}return this.reflectionCapabilities.annotations(e)},e.prototype.propMetadata=function(e){if(this._injectableInfo.has(e)){var t=this._getReflectionInfo(e).propMetadata;return a.isPresent(t)?t:{}}return this.reflectionCapabilities.propMetadata(e)},e.prototype.interfaces=function(e){if(this._injectableInfo.has(e)){var t=this._getReflectionInfo(e).interfaces;return a.isPresent(t)?t:[]}return this.reflectionCapabilities.interfaces(e)},e.prototype.getter=function(e){return this._getters.has(e)?this._getters.get(e):this.reflectionCapabilities.getter(e)},e.prototype.setter=function(e){return this._setters.has(e)?this._setters.get(e):this.reflectionCapabilities.setter(e)},e.prototype.method=function(e){return this._methods.has(e)?this._methods.get(e):this.reflectionCapabilities.method(e)},e.prototype._getReflectionInfo=function(e){return a.isPresent(this._usedKeys)&&this._usedKeys.add(e),this._injectableInfo.get(e)},e.prototype._containsReflectionInfo=function(e){return this._injectableInfo.has(e)},e.prototype.importUri=function(e){return this.reflectionCapabilities.importUri(e)},e}();return t.Reflector=u,i.define=o,r.exports}),System.register("angular2/src/core/reflection/reflection_capabilities",["angular2/src/facade/lang","angular2/src/facade/exceptions"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/facade/exceptions"),s=function(){function e(e){this._reflect=o.isPresent(e)?e:o.global.Reflect}return e.prototype.isReflectionEnabled=function(){return!0},e.prototype.factory=function(e){switch(e.length){case 0:return function(){return new e};case 1:return function(t){return new e(t)};case 2:return function(t,r){return new e(t,r)};case 3:return function(t,r,n){return new e(t,r,n)};case 4:return function(t,r,n,i){return new e(t,r,n,i)};case 5:return function(t,r,n,i,o){return new e(t,r,n,i,o)};case 6:return function(t,r,n,i,o,a){return new e(t,r,n,i,o,a)};case 7:return function(t,r,n,i,o,a,s){return new e(t,r,n,i,o,a,s)};case 8:return function(t,r,n,i,o,a,s,c){return new e(t,r,n,i,o,a,s,c)};case 9:return function(t,r,n,i,o,a,s,c,l){return new e(t,r,n,i,o,a,s,c,l)};case 10:return function(t,r,n,i,o,a,s,c,l,u){return new e(t,r,n,i,o,a,s,c,l,u)};case 11:return function(t,r,n,i,o,a,s,c,l,u,p){return new e(t,r,n,i,o,a,s,c,l,u,p)};case 12:return function(t,r,n,i,o,a,s,c,l,u,p,d){return new e(t,r,n,i,o,a,s,c,l,u,p,d)};case 13:return function(t,r,n,i,o,a,s,c,l,u,p,d,f){return new e(t,r,n,i,o,a,s,c,l,u,p,d,f)};case 14:return function(t,r,n,i,o,a,s,c,l,u,p,d,f,h){return new e(t,r,n,i,o,a,s,c,l,u,p,d,f,h)};case 15:return function(t,r,n,i,o,a,s,c,l,u,p,d,f,h,g){return new e(t,r,n,i,o,a,s,c,l,u,p,d,f,h,g)};case 16:return function(t,r,n,i,o,a,s,c,l,u,p,d,f,h,g,m){return new e(t,r,n,i,o,a,s,c,l,u,p,d,f,h,g,m)};case 17:return function(t,r,n,i,o,a,s,c,l,u,p,d,f,h,g,m,v){return new e(t,r,n,i,o,a,s,c,l,u,p,d,f,h,g,m,v)};case 18:return function(t,r,n,i,o,a,s,c,l,u,p,d,f,h,g,m,v,y){return new e(t,r,n,i,o,a,s,c,l,u,p,d,f,h,g,m,v,y)};case 19:return function(t,r,n,i,o,a,s,c,l,u,p,d,f,h,g,m,v,y,_){return new e(t,r,n,i,o,a,s,c,l,u,p,d,f,h,g,m,v,y,_)};case 20:return function(t,r,n,i,o,a,s,c,l,u,p,d,f,h,g,m,v,y,_,b){return new e(t,r,n,i,o,a,s,c,l,u,p,d,f,h,g,m,v,y,_,b)}}throw new Error("Cannot create a factory for '"+o.stringify(e)+"' because its constructor has more than 20 arguments")},e.prototype._zipTypesAndAnnotations=function(e,t){var r;r="undefined"==typeof e?new Array(t.length):new Array(e.length);for(var n=0;n<r.length;n++)"undefined"==typeof e?r[n]=[]:e[n]!=Object?r[n]=[e[n]]:r[n]=[],o.isPresent(t)&&o.isPresent(t[n])&&(r[n]=r[n].concat(t[n]));return r},e.prototype.parameters=function(e){if(o.isPresent(e.parameters))return e.parameters;if(o.isPresent(this._reflect)&&o.isPresent(this._reflect.getMetadata)){var t=this._reflect.getMetadata("parameters",e),r=this._reflect.getMetadata("design:paramtypes",e);if(o.isPresent(r)||o.isPresent(t))return this._zipTypesAndAnnotations(r,t)}var n=new Array(e.length);return n.fill(void 0),n},e.prototype.annotations=function(e){if(o.isPresent(e.annotations)){var t=e.annotations;return o.isFunction(t)&&t.annotations&&(t=t.annotations),t}if(o.isPresent(this._reflect)&&o.isPresent(this._reflect.getMetadata)){var t=this._reflect.getMetadata("annotations",e);if(o.isPresent(t))return t}return[]},e.prototype.propMetadata=function(e){if(o.isPresent(e.propMetadata)){var t=e.propMetadata;return o.isFunction(t)&&t.propMetadata&&(t=t.propMetadata),t}if(o.isPresent(this._reflect)&&o.isPresent(this._reflect.getMetadata)){var t=this._reflect.getMetadata("propMetadata",e);if(o.isPresent(t))return t}return{}},e.prototype.interfaces=function(e){throw new a.BaseException("JavaScript does not support interfaces")},e.prototype.getter=function(e){return new Function("o","return o."+e+";")},e.prototype.setter=function(e){return new Function("o","v","return o."+e+" = v;")},e.prototype.method=function(e){var t="if (!o."+e+") throw new Error('\""+e+"\" is undefined');\n        return o."+e+".apply(o, args);";return new Function("o","args",t)},e.prototype.importUri=function(e){return"./"},e}();return t.ReflectionCapabilities=s,n.define=i,r.exports}),System.register("angular2/src/core/di/key",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/core/di/forward_ref"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/facade/exceptions"),s=e("angular2/src/core/di/forward_ref"),c=function(){function e(e,t){if(this.token=e,this.id=t,o.isBlank(e))throw new a.BaseException("Token must be defined!")}return Object.defineProperty(e.prototype,"displayName",{get:function(){return o.stringify(this.token)},enumerable:!0,configurable:!0}),e.get=function(e){return u.get(s.resolveForwardRef(e))},Object.defineProperty(e,"numberOfKeys",{get:function(){return u.numberOfKeys},enumerable:!0,configurable:!0}),e}();t.Key=c;var l=function(){function e(){this._allKeys=new Map}return e.prototype.get=function(e){if(e instanceof c)return e;if(this._allKeys.has(e))return this._allKeys.get(e);var t=new c(e,c.numberOfKeys);return this._allKeys.set(e,t),t},Object.defineProperty(e.prototype,"numberOfKeys",{get:function(){return this._allKeys.size},enumerable:!0,configurable:!0}),e}();t.KeyRegistry=l;var u=new l;return n.define=i,r.exports}),System.register("angular2/src/core/di/exceptions",["angular2/src/facade/collection","angular2/src/facade/lang","angular2/src/facade/exceptions"],!0,function(e,t,r){function n(e){for(var t=[],r=0;r<e.length;++r){if(c.ListWrapper.contains(t,e[r]))return t.push(e[r]),t;t.push(e[r])}return t}function i(e){if(e.length>1){var t=n(c.ListWrapper.reversed(e)),r=t.map(function(e){return l.stringify(e.token)});return" ("+r.join(" -> ")+")"}return""}var o=System.global,a=o.define;o.define=void 0;var s=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},c=e("angular2/src/facade/collection"),l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/exceptions"),p=function(e){function t(t,r,n){e.call(this,"DI Exception"),this.keys=[r],this.injectors=[t],this.constructResolvingMessage=n,this.message=this.constructResolvingMessage(this.keys)}return s(t,e),t.prototype.addKey=function(e,t){this.injectors.push(e),this.keys.push(t),this.message=this.constructResolvingMessage(this.keys)},Object.defineProperty(t.prototype,"context",{get:function(){return this.injectors[this.injectors.length-1].debugContext()},enumerable:!0,configurable:!0}),t}(u.BaseException);t.AbstractProviderError=p;var d=function(e){function t(t,r){e.call(this,t,r,function(e){var t=l.stringify(c.ListWrapper.first(e).token);return"No provider for "+t+"!"+i(e)})}return s(t,e),t}(p);t.NoProviderError=d;var f=function(e){function t(t,r){e.call(this,t,r,function(e){return"Cannot instantiate cyclic dependency!"+i(e)})}return s(t,e),t}(p);t.CyclicDependencyError=f;var h=function(e){function t(t,r,n,i){e.call(this,"DI Exception",r,n,null),this.keys=[i],this.injectors=[t]}return s(t,e),t.prototype.addKey=function(e,t){this.injectors.push(e),this.keys.push(t)},Object.defineProperty(t.prototype,"wrapperMessage",{get:function(){var e=l.stringify(c.ListWrapper.first(this.keys).token);return"Error during instantiation of "+e+"!"+i(this.keys)+"."},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"causeKey",{get:function(){return this.keys[0]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return this.injectors[this.injectors.length-1].debugContext()},enumerable:!0,configurable:!0}),t}(u.WrappedException);t.InstantiationError=h;var g=function(e){function t(t){e.call(this,"Invalid provider - only instances of Provider and Type are allowed, got: "+t.toString())}return s(t,e),t}(u.BaseException);t.InvalidProviderError=g;var m=function(e){function t(r,n){e.call(this,t._genMessage(r,n))}return s(t,e),t._genMessage=function(e,t){for(var r=[],n=0,i=t.length;i>n;n++){var o=t[n];l.isBlank(o)||0==o.length?r.push("?"):r.push(o.map(l.stringify).join(" "))}return"Cannot resolve all parameters for '"+l.stringify(e)+"'("+r.join(", ")+"). Make sure that all the parameters are decorated with Inject or have valid type annotations and that '"+l.stringify(e)+"' is decorated with Injectable."},t}(u.BaseException);t.NoAnnotationError=m;var v=function(e){function t(t){
e.call(this,"Index "+t+" is out-of-bounds.")}return s(t,e),t}(u.BaseException);t.OutOfBoundsError=v;var y=function(e){function t(t,r){e.call(this,"Cannot mix multi providers and regular providers, got: "+t.toString()+" "+r.toString())}return s(t,e),t}(u.BaseException);return t.MixingMultiProvidersWithRegularProvidersError=y,o.define=a,r.exports}),System.register("angular2/src/core/di/opaque_token",["angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=function(){function e(e){this._desc=e}return e.prototype.toString=function(){return"Token "+this._desc},e=o([s.CONST(),a("design:paramtypes",[String])],e)}();return t.OpaqueToken=c,n.define=i,r.exports}),System.register("angular2/src/animate/css_animation_options",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=function(){function e(){this.classesToAdd=[],this.classesToRemove=[],this.animationClasses=[]}return e}();return t.CssAnimationOptions=o,n.define=i,r.exports}),System.register("angular2/src/facade/math",["angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang");return t.Math=o.global.Math,t.NaN=typeof t.NaN,n.define=i,r.exports}),System.register("angular2/src/platform/dom/util",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e){return s.StringWrapper.replaceAllMapped(e,c,function(e){return"-"+e[1].toLowerCase()})}function i(e){return s.StringWrapper.replaceAllMapped(e,l,function(e){return e[1].toUpperCase()})}var o=System.global,a=o.define;o.define=void 0;var s=e("angular2/src/facade/lang"),c=/([A-Z])/g,l=/-([a-z])/g;return t.camelCaseToDashCase=n,t.dashCaseToCamelCase=i,o.define=a,r.exports}),System.register("angular2/src/animate/browser_details",["angular2/src/core/di","angular2/src/facade/math","angular2/src/platform/dom/dom_adapter"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/core/di"),c=e("angular2/src/facade/math"),l=e("angular2/src/platform/dom/dom_adapter"),u=function(){function e(){this.elapsedTimeIncludesDelay=!1,this.doesElapsedTimeIncludesDelay()}return e.prototype.doesElapsedTimeIncludesDelay=function(){var e=this,t=l.DOM.createElement("div");l.DOM.setAttribute(t,"style","position: absolute; top: -9999px; left: -9999px; width: 1px;\n      height: 1px; transition: all 1ms linear 1ms;"),this.raf(function(r){l.DOM.on(t,"transitionend",function(r){var n=c.Math.round(1e3*r.elapsedTime);e.elapsedTimeIncludesDelay=2==n,l.DOM.remove(t)}),l.DOM.setStyle(t,"width","2px")},2)},e.prototype.raf=function(e,t){void 0===t&&(t=1);var r=new p(e,t);return function(){return r.cancel()}},e=o([s.Injectable(),a("design:paramtypes",[])],e)}();t.BrowserDetails=u;var p=function(){function e(e,t){this.callback=e,this.frames=t,this._raf()}return e.prototype._raf=function(){var e=this;this.currentFrameId=l.DOM.requestAnimationFrame(function(t){return e._nextFrame(t)})},e.prototype._nextFrame=function(e){this.frames--,this.frames>0?this._raf():this.callback(e)},e.prototype.cancel=function(){l.DOM.cancelAnimationFrame(this.currentFrameId),this.currentFrameId=null},e}();return n.define=i,r.exports}),System.register("angular2/src/platform/dom/dom_tokens",["angular2/src/core/di","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/di"),a=e("angular2/src/facade/lang");return t.DOCUMENT=a.CONST_EXPR(new o.OpaqueToken("DocumentToken")),n.define=i,r.exports}),System.register("angular2/src/facade/promise",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=function(){function e(){var e=this;this.promise=new Promise(function(t,r){e.resolve=t,e.reject=r})}return e}();t.PromiseCompleter=o;var a=function(){function e(){}return e.resolve=function(e){return Promise.resolve(e)},e.reject=function(e,t){return Promise.reject(e)},e.catchError=function(e,t){return e["catch"](t)},e.all=function(e){return 0==e.length?Promise.resolve([]):Promise.all(e)},e.then=function(e,t,r){return e.then(t,r)},e.wrap=function(e){return new Promise(function(t,r){try{t(e())}catch(n){r(n)}})},e.scheduleMicrotask=function(t){e.then(e.resolve(null),t,function(e){})},e.isPromise=function(e){return e instanceof Promise},e.completer=function(){return new o},e}();return t.PromiseWrapper=a,n.define=i,r.exports}),System.register("angular2/src/core/zone/ng_zone_impl",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=function(){function e(e,t){this.error=e,this.stackTrace=t}return e}();t.NgZoneError=o;var a=function(){function e(e){var t=this,r=e.trace,n=e.onEnter,i=e.onLeave,a=e.setMicrotask,s=e.setMacrotask,c=e.onError;if(this.onEnter=n,this.onLeave=i,this.setMicrotask=a,this.setMacrotask=s,this.onError=c,!Zone)throw new Error("Angular2 needs to be run with Zone.js polyfill.");this.outer=this.inner=Zone.current,Zone.wtfZoneSpec&&(this.inner=this.inner.fork(Zone.wtfZoneSpec)),r&&Zone.longStackTraceZoneSpec&&(this.inner=this.inner.fork(Zone.longStackTraceZoneSpec)),this.inner=this.inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:function(e,r,n,i,o,a){try{return t.onEnter(),e.invokeTask(n,i,o,a)}finally{t.onLeave()}},onInvoke:function(e,r,n,i,o,a,s){try{return t.onEnter(),e.invoke(n,i,o,a,s)}finally{t.onLeave()}},onHasTask:function(e,r,n,i){e.hasTask(n,i),r==n&&("microTask"==i.change?t.setMicrotask(i.microTask):"macroTask"==i.change&&t.setMacrotask(i.macroTask))},onHandleError:function(e,r,n,i){return e.handleError(n,i),t.onError(new o(i,i.stack)),!1}})}return e.isInAngularZone=function(){return Zone.current.get("isAngularZone")===!0},e.prototype.runInner=function(e){return this.inner.runGuarded(e)},e.prototype.runOuter=function(e){return this.outer.run(e)},e}();return t.NgZoneImpl=a,n.define=i,r.exports}),System.register("angular2/src/core/metadata/di",["angular2/src/facade/lang","angular2/src/core/di","angular2/src/core/di/metadata"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/facade/lang"),l=e("angular2/src/core/di"),u=e("angular2/src/core/di/metadata"),p=function(e){function t(t){e.call(this),this.attributeName=t}return o(t,e),Object.defineProperty(t.prototype,"token",{get:function(){return this},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return"@Attribute("+c.stringify(this.attributeName)+")"},t=a([c.CONST(),s("design:paramtypes",[String])],t)}(u.DependencyMetadata);t.AttributeMetadata=p;var d=function(e){function t(t,r){var n=void 0===r?{}:r,i=n.descendants,o=void 0===i?!1:i,a=n.first,s=void 0===a?!1:a;e.call(this),this._selector=t,this.descendants=o,this.first=s}return o(t,e),Object.defineProperty(t.prototype,"isViewQuery",{get:function(){return!1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"selector",{get:function(){return l.resolveForwardRef(this._selector)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isVarBindingQuery",{get:function(){return c.isString(this.selector)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"varBindings",{get:function(){return this.selector.split(",")},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return"@Query("+c.stringify(this.selector)+")"},t=a([c.CONST(),s("design:paramtypes",[Object,Object])],t)}(u.DependencyMetadata);t.QueryMetadata=d;var f=function(e){function t(t,r){var n=(void 0===r?{}:r).descendants,i=void 0===n?!1:n;e.call(this,t,{descendants:i})}return o(t,e),t=a([c.CONST(),s("design:paramtypes",[Object,Object])],t)}(d);t.ContentChildrenMetadata=f;var h=function(e){function t(t){e.call(this,t,{descendants:!0,first:!0})}return o(t,e),t=a([c.CONST(),s("design:paramtypes",[Object])],t)}(d);t.ContentChildMetadata=h;var g=function(e){function t(t,r){var n=void 0===r?{}:r,i=n.descendants,o=void 0===i?!1:i,a=n.first,s=void 0===a?!1:a;e.call(this,t,{descendants:o,first:s})}return o(t,e),Object.defineProperty(t.prototype,"isViewQuery",{get:function(){return!0},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return"@ViewQuery("+c.stringify(this.selector)+")"},t=a([c.CONST(),s("design:paramtypes",[Object,Object])],t)}(d);t.ViewQueryMetadata=g;var m=function(e){function t(t){e.call(this,t,{descendants:!0})}return o(t,e),t=a([c.CONST(),s("design:paramtypes",[Object])],t)}(g);t.ViewChildrenMetadata=m;var v=function(e){function t(t){e.call(this,t,{descendants:!0,first:!0})}return o(t,e),t=a([c.CONST(),s("design:paramtypes",[Object])],t)}(g);return t.ViewChildMetadata=v,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/differs/iterable_differs",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/di"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/src/facade/exceptions"),l=e("angular2/src/facade/collection"),u=e("angular2/src/core/di"),p=function(){function e(e){this.factories=e}return e.create=function(t,r){if(s.isPresent(r)){var n=l.ListWrapper.clone(r.factories);return t=t.concat(n),new e(t)}return new e(t)},e.extend=function(t){return new u.Provider(e,{useFactory:function(r){if(s.isBlank(r))throw new c.BaseException("Cannot extend IterableDiffers without a parent injector");return e.create(t,r)},deps:[[e,new u.SkipSelfMetadata,new u.OptionalMetadata]]})},e.prototype.find=function(e){var t=this.factories.find(function(t){return t.supports(e)});if(s.isPresent(t))return t;throw new c.BaseException("Cannot find a differ supporting object '"+e+"'")},e=o([u.Injectable(),s.CONST(),a("design:paramtypes",[Array])],e)}();return t.IterableDiffers=p,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/differs/default_iterable_differ",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/src/facade/exceptions"),l=e("angular2/src/facade/collection"),u=e("angular2/src/facade/lang"),p=function(){function e(){}return e.prototype.supports=function(e){return l.isListLikeIterable(e)},e.prototype.create=function(e,t){return new f(t)},e=o([s.CONST(),a("design:paramtypes",[])],e)}();t.DefaultIterableDifferFactory=p;var d=function(e,t){return t},f=function(){function e(e){this._trackByFn=e,this._length=null,this._collection=null,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=u.isPresent(this._trackByFn)?this._trackByFn:d}return Object.defineProperty(e.prototype,"collection",{get:function(){return this._collection},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"length",{get:function(){return this._length},enumerable:!0,configurable:!0}),e.prototype.forEachItem=function(e){var t;for(t=this._itHead;null!==t;t=t._next)e(t)},e.prototype.forEachPreviousItem=function(e){var t;for(t=this._previousItHead;null!==t;t=t._nextPrevious)e(t)},e.prototype.forEachAddedItem=function(e){var t;for(t=this._additionsHead;null!==t;t=t._nextAdded)e(t)},e.prototype.forEachMovedItem=function(e){var t;for(t=this._movesHead;null!==t;t=t._nextMoved)e(t)},e.prototype.forEachRemovedItem=function(e){var t;for(t=this._removalsHead;null!==t;t=t._nextRemoved)e(t)},e.prototype.forEachIdentityChange=function(e){var t;for(t=this._identityChangesHead;null!==t;t=t._nextIdentityChange)e(t)},e.prototype.diff=function(e){if(u.isBlank(e)&&(e=[]),!l.isListLikeIterable(e))throw new c.BaseException("Error trying to diff '"+e+"'");return this.check(e)?this:null},e.prototype.onDestroy=function(){},e.prototype.check=function(e){var t=this;this._reset();var r,n,i,o=this._itHead,a=!1;if(u.isArray(e)){if(e!==this._collection||!l.ListWrapper.isImmutable(e)){var s=e;for(this._length=e.length,r=0;r<this._length;r++)n=s[r],i=this._trackByFn(r,n),null!==o&&u.looseIdentical(o.trackById,i)?(a&&(o=this._verifyReinsertion(o,n,i,r)),u.looseIdentical(o.item,n)||this._addIdentityChange(o,n)):(o=this._mismatch(o,n,i,r),a=!0),o=o._next;this._truncate(o)}}else r=0,l.iterateListLike(e,function(e){i=t._trackByFn(r,e),null!==o&&u.looseIdentical(o.trackById,i)?(a&&(o=t._verifyReinsertion(o,e,i,r)),u.looseIdentical(o.item,e)||t._addIdentityChange(o,e)):(o=t._mismatch(o,e,i,r),a=!0),o=o._next,r++}),this._length=r,this._truncate(o);return this._collection=e,this.isDirty},Object.defineProperty(e.prototype,"isDirty",{get:function(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead},enumerable:!0,configurable:!0}),e.prototype._reset=function(){if(this.isDirty){var e,t;for(e=this._previousItHead=this._itHead;null!==e;e=e._next)e._nextPrevious=e._next;for(e=this._additionsHead;null!==e;e=e._nextAdded)e.previousIndex=e.currentIndex;for(this._additionsHead=this._additionsTail=null,e=this._movesHead;null!==e;e=t)e.previousIndex=e.currentIndex,t=e._nextMoved;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}},e.prototype._mismatch=function(e,t,r,n){var i;return null===e?i=this._itTail:(i=e._prev,this._remove(e)),e=null===this._linkedRecords?null:this._linkedRecords.get(r,n),null!==e?(u.looseIdentical(e.item,t)||this._addIdentityChange(e,t),this._moveAfter(e,i,n)):(e=null===this._unlinkedRecords?null:this._unlinkedRecords.get(r),null!==e?(u.looseIdentical(e.item,t)||this._addIdentityChange(e,t),this._reinsertAfter(e,i,n)):e=this._addAfter(new h(t,r),i,n)),e},e.prototype._verifyReinsertion=function(e,t,r,n){var i=null===this._unlinkedRecords?null:this._unlinkedRecords.get(r);return null!==i?e=this._reinsertAfter(i,e._prev,n):e.currentIndex!=n&&(e.currentIndex=n,this._addToMoves(e,n)),e},e.prototype._truncate=function(e){for(;null!==e;){var t=e._next;this._addToRemovals(this._unlink(e)),e=t}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)},e.prototype._reinsertAfter=function(e,t,r){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(e);var n=e._prevRemoved,i=e._nextRemoved;return null===n?this._removalsHead=i:n._nextRemoved=i,null===i?this._removalsTail=n:i._prevRemoved=n,this._insertAfter(e,t,r),this._addToMoves(e,r),e},e.prototype._moveAfter=function(e,t,r){return this._unlink(e),this._insertAfter(e,t,r),this._addToMoves(e,r),e},e.prototype._addAfter=function(e,t,r){return this._insertAfter(e,t,r),null===this._additionsTail?this._additionsTail=this._additionsHead=e:this._additionsTail=this._additionsTail._nextAdded=e,e},e.prototype._insertAfter=function(e,t,r){var n=null===t?this._itHead:t._next;return e._next=n,e._prev=t,null===n?this._itTail=e:n._prev=e,null===t?this._itHead=e:t._next=e,null===this._linkedRecords&&(this._linkedRecords=new m),this._linkedRecords.put(e),e.currentIndex=r,e},e.prototype._remove=function(e){return this._addToRemovals(this._unlink(e))},e.prototype._unlink=function(e){null!==this._linkedRecords&&this._linkedRecords.remove(e);var t=e._prev,r=e._next;return null===t?this._itHead=r:t._next=r,null===r?this._itTail=t:r._prev=t,e},e.prototype._addToMoves=function(e,t){return e.previousIndex===t?e:(null===this._movesTail?this._movesTail=this._movesHead=e:this._movesTail=this._movesTail._nextMoved=e,e)},e.prototype._addToRemovals=function(e){return null===this._unlinkedRecords&&(this._unlinkedRecords=new m),this._unlinkedRecords.put(e),e.currentIndex=null,e._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=e,e._prevRemoved=null):(e._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=e),e},e.prototype._addIdentityChange=function(e,t){return e.item=t,null===this._identityChangesTail?this._identityChangesTail=this._identityChangesHead=e:this._identityChangesTail=this._identityChangesTail._nextIdentityChange=e,e},e.prototype.toString=function(){var e=[];this.forEachItem(function(t){return e.push(t)});var t=[];this.forEachPreviousItem(function(e){return t.push(e)});var r=[];this.forEachAddedItem(function(e){return r.push(e)});var n=[];this.forEachMovedItem(function(e){return n.push(e)});var i=[];this.forEachRemovedItem(function(e){return i.push(e)});var o=[];return this.forEachIdentityChange(function(e){return o.push(e)}),"collection: "+e.join(", ")+"\nprevious: "+t.join(", ")+"\nadditions: "+r.join(", ")+"\nmoves: "+n.join(", ")+"\nremovals: "+i.join(", ")+"\nidentityChanges: "+o.join(", ")+"\n"},e}();t.DefaultIterableDiffer=f;var h=function(){function e(e,t){this.item=e,this.trackById=t,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}return e.prototype.toString=function(){return this.previousIndex===this.currentIndex?u.stringify(this.item):u.stringify(this.item)+"["+u.stringify(this.previousIndex)+"->"+u.stringify(this.currentIndex)+"]"},e}();t.CollectionChangeRecord=h;var g=function(){function e(){this._head=null,this._tail=null}return e.prototype.add=function(e){null===this._head?(this._head=this._tail=e,e._nextDup=null,e._prevDup=null):(this._tail._nextDup=e,e._prevDup=this._tail,e._nextDup=null,this._tail=e)},e.prototype.get=function(e,t){var r;for(r=this._head;null!==r;r=r._nextDup)if((null===t||t<r.currentIndex)&&u.looseIdentical(r.trackById,e))return r;return null},e.prototype.remove=function(e){var t=e._prevDup,r=e._nextDup;return null===t?this._head=r:t._nextDup=r,null===r?this._tail=t:r._prevDup=t,null===this._head},e}(),m=function(){function e(){this.map=new Map}return e.prototype.put=function(e){var t=u.getMapKey(e.trackById),r=this.map.get(t);u.isPresent(r)||(r=new g,this.map.set(t,r)),r.add(e)},e.prototype.get=function(e,t){void 0===t&&(t=null);var r=u.getMapKey(e),n=this.map.get(r);return u.isBlank(n)?null:n.get(e,t)},e.prototype.remove=function(e){var t=u.getMapKey(e.trackById),r=this.map.get(t);return r.remove(e)&&this.map["delete"](t),e},Object.defineProperty(e.prototype,"isEmpty",{get:function(){return 0===this.map.size},enumerable:!0,configurable:!0}),e.prototype.clear=function(){this.map.clear()},e.prototype.toString=function(){return"_DuplicateMap("+u.stringify(this.map)+")"},e}();return n.define=i,r.exports}),System.register("angular2/src/core/change_detection/differs/keyvalue_differs",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/di"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/src/facade/exceptions"),l=e("angular2/src/facade/collection"),u=e("angular2/src/core/di"),p=function(){function e(e){this.factories=e}return e.create=function(t,r){if(s.isPresent(r)){var n=l.ListWrapper.clone(r.factories);return t=t.concat(n),new e(t)}return new e(t)},e.extend=function(t){return new u.Provider(e,{useFactory:function(r){if(s.isBlank(r))throw new c.BaseException("Cannot extend KeyValueDiffers without a parent injector");return e.create(t,r)},deps:[[e,new u.SkipSelfMetadata,new u.OptionalMetadata]]})},e.prototype.find=function(e){var t=this.factories.find(function(t){return t.supports(e)});if(s.isPresent(t))return t;throw new c.BaseException("Cannot find a differ supporting object '"+e+"'")},e=o([u.Injectable(),s.CONST(),a("design:paramtypes",[Array])],e)}();return t.KeyValueDiffers=p,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/differs/default_keyvalue_differ",["angular2/src/facade/collection","angular2/src/facade/lang","angular2/src/facade/exceptions"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/collection"),c=e("angular2/src/facade/lang"),l=e("angular2/src/facade/exceptions"),u=function(){function e(){}return e.prototype.supports=function(e){return e instanceof Map||c.isJsObject(e)},e.prototype.create=function(e){return new p},e=o([c.CONST(),a("design:paramtypes",[])],e)}();t.DefaultKeyValueDifferFactory=u;var p=function(){function e(){this._records=new Map,this._mapHead=null,this._previousMapHead=null,this._changesHead=null,this._changesTail=null,this._additionsHead=null,this._additionsTail=null,this._removalsHead=null,this._removalsTail=null}return Object.defineProperty(e.prototype,"isDirty",{get:function(){return null!==this._additionsHead||null!==this._changesHead||null!==this._removalsHead},enumerable:!0,configurable:!0}),e.prototype.forEachItem=function(e){var t;for(t=this._mapHead;null!==t;t=t._next)e(t)},e.prototype.forEachPreviousItem=function(e){var t;for(t=this._previousMapHead;null!==t;t=t._nextPrevious)e(t)},e.prototype.forEachChangedItem=function(e){var t;for(t=this._changesHead;null!==t;t=t._nextChanged)e(t)},e.prototype.forEachAddedItem=function(e){var t;for(t=this._additionsHead;null!==t;t=t._nextAdded)e(t)},e.prototype.forEachRemovedItem=function(e){var t;for(t=this._removalsHead;null!==t;t=t._nextRemoved)e(t)},e.prototype.diff=function(e){if(c.isBlank(e)&&(e=s.MapWrapper.createFromPairs([])),!(e instanceof Map||c.isJsObject(e)))throw new l.BaseException("Error trying to diff '"+e+"'");return this.check(e)?this:null},e.prototype.onDestroy=function(){},e.prototype.check=function(e){var t=this;this._reset();var r=this._records,n=this._mapHead,i=null,o=null,a=!1;return this._forEach(e,function(e,s){var l;null!==n&&s===n.key?(l=n,c.looseIdentical(e,n.currentValue)||(n.previousValue=n.currentValue,n.currentValue=e,t._addToChanges(n))):(a=!0,null!==n&&(n._next=null,t._removeFromSeq(i,n),t._addToRemovals(n)),r.has(s)?l=r.get(s):(l=new d(s),r.set(s,l),l.currentValue=e,t._addToAdditions(l))),a&&(t._isInRemovals(l)&&t._removeFromRemovals(l),null==o?t._mapHead=l:o._next=l),i=n,o=l,n=null===n?null:n._next}),this._truncate(i,n),this.isDirty},e.prototype._reset=function(){if(this.isDirty){var e;for(e=this._previousMapHead=this._mapHead;null!==e;e=e._next)e._nextPrevious=e._next;for(e=this._changesHead;null!==e;e=e._nextChanged)e.previousValue=e.currentValue;for(e=this._additionsHead;null!=e;e=e._nextAdded)e.previousValue=e.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=this._removalsTail=null}},e.prototype._truncate=function(e,t){for(;null!==t;){null===e?this._mapHead=null:e._next=null;var r=t._next;this._addToRemovals(t),e=t,t=r}for(var n=this._removalsHead;null!==n;n=n._nextRemoved)n.previousValue=n.currentValue,n.currentValue=null,this._records["delete"](n.key)},e.prototype._isInRemovals=function(e){return e===this._removalsHead||null!==e._nextRemoved||null!==e._prevRemoved},e.prototype._addToRemovals=function(e){null===this._removalsHead?this._removalsHead=this._removalsTail=e:(this._removalsTail._nextRemoved=e,e._prevRemoved=this._removalsTail,this._removalsTail=e)},e.prototype._removeFromSeq=function(e,t){var r=t._next;null===e?this._mapHead=r:e._next=r},e.prototype._removeFromRemovals=function(e){var t=e._prevRemoved,r=e._nextRemoved;null===t?this._removalsHead=r:t._nextRemoved=r,null===r?this._removalsTail=t:r._prevRemoved=t,e._prevRemoved=e._nextRemoved=null},e.prototype._addToAdditions=function(e){null===this._additionsHead?this._additionsHead=this._additionsTail=e:(this._additionsTail._nextAdded=e,this._additionsTail=e)},e.prototype._addToChanges=function(e){null===this._changesHead?this._changesHead=this._changesTail=e:(this._changesTail._nextChanged=e,this._changesTail=e)},e.prototype.toString=function(){var e,t=[],r=[],n=[],i=[],o=[];for(e=this._mapHead;null!==e;e=e._next)t.push(c.stringify(e));for(e=this._previousMapHead;null!==e;e=e._nextPrevious)r.push(c.stringify(e));for(e=this._changesHead;null!==e;e=e._nextChanged)n.push(c.stringify(e));for(e=this._additionsHead;null!==e;e=e._nextAdded)i.push(c.stringify(e));for(e=this._removalsHead;null!==e;e=e._nextRemoved)o.push(c.stringify(e));return"map: "+t.join(", ")+"\nprevious: "+r.join(", ")+"\nadditions: "+i.join(", ")+"\nchanges: "+n.join(", ")+"\nremovals: "+o.join(", ")+"\n"},e.prototype._forEach=function(e,t){e instanceof Map?e.forEach(t):s.StringMapWrapper.forEach(e,t)},e}();t.DefaultKeyValueDiffer=p;var d=function(){function e(e){this.key=e,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._nextAdded=null,this._nextRemoved=null,this._prevRemoved=null,this._nextChanged=null}return e.prototype.toString=function(){return c.looseIdentical(this.previousValue,this.currentValue)?c.stringify(this.key):c.stringify(this.key)+"["+c.stringify(this.previousValue)+"->"+c.stringify(this.currentValue)+"]"},e}();return t.KeyValueChangeRecord=d,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/parser/ast",["angular2/src/facade/collection"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/facade/collection"),s=function(){function e(){}return e.prototype.visit=function(e){return null},e.prototype.toString=function(){return"AST"},e}();t.AST=s;var c=function(e){function t(t,r,n){e.call(this),this.prefix=t,this.uninterpretedExpression=r,this.location=n}return o(t,e),t.prototype.visit=function(e){return e.visitQuote(this)},t.prototype.toString=function(){return"Quote"},t}(s);t.Quote=c;var l=function(e){function t(){e.apply(this,arguments)}return o(t,e),t.prototype.visit=function(e){},t}(s);t.EmptyExpr=l;var u=function(e){function t(){e.apply(this,arguments)}return o(t,e),t.prototype.visit=function(e){return e.visitImplicitReceiver(this)},t}(s);t.ImplicitReceiver=u;var p=function(e){function t(t){e.call(this),this.expressions=t}return o(t,e),t.prototype.visit=function(e){return e.visitChain(this)},t}(s);t.Chain=p;var d=function(e){function t(t,r,n){e.call(this),this.condition=t,this.trueExp=r,this.falseExp=n}return o(t,e),t.prototype.visit=function(e){return e.visitConditional(this)},t}(s);t.Conditional=d;var f=function(e){function t(t,r,n){e.call(this),this.receiver=t,this.name=r,this.getter=n}return o(t,e),t.prototype.visit=function(e){return e.visitPropertyRead(this)},t}(s);t.PropertyRead=f;var h=function(e){function t(t,r,n,i){e.call(this),this.receiver=t,this.name=r,this.setter=n,this.value=i}return o(t,e),t.prototype.visit=function(e){return e.visitPropertyWrite(this)},t}(s);t.PropertyWrite=h;var g=function(e){function t(t,r,n){e.call(this),this.receiver=t,this.name=r,this.getter=n}return o(t,e),t.prototype.visit=function(e){return e.visitSafePropertyRead(this)},t}(s);t.SafePropertyRead=g;var m=function(e){function t(t,r){e.call(this),this.obj=t,this.key=r}return o(t,e),t.prototype.visit=function(e){return e.visitKeyedRead(this)},t}(s);t.KeyedRead=m;var v=function(e){function t(t,r,n){e.call(this),this.obj=t,this.key=r,this.value=n}return o(t,e),t.prototype.visit=function(e){return e.visitKeyedWrite(this)},t}(s);t.KeyedWrite=v;var y=function(e){function t(t,r,n){e.call(this),this.exp=t,this.name=r,this.args=n}return o(t,e),t.prototype.visit=function(e){return e.visitPipe(this)},t}(s);t.BindingPipe=y;var _=function(e){function t(t){e.call(this),this.value=t}return o(t,e),t.prototype.visit=function(e){return e.visitLiteralPrimitive(this)},t}(s);t.LiteralPrimitive=_;var b=function(e){function t(t){e.call(this),this.expressions=t}return o(t,e),t.prototype.visit=function(e){return e.visitLiteralArray(this)},t}(s);t.LiteralArray=b;var C=function(e){function t(t,r){e.call(this),this.keys=t,this.values=r}return o(t,e),t.prototype.visit=function(e){return e.visitLiteralMap(this)},t}(s);t.LiteralMap=C;var w=function(e){function t(t,r){e.call(this),this.strings=t,
this.expressions=r}return o(t,e),t.prototype.visit=function(e){return e.visitInterpolation(this)},t}(s);t.Interpolation=w;var P=function(e){function t(t,r,n){e.call(this),this.operation=t,this.left=r,this.right=n}return o(t,e),t.prototype.visit=function(e){return e.visitBinary(this)},t}(s);t.Binary=P;var E=function(e){function t(t){e.call(this),this.expression=t}return o(t,e),t.prototype.visit=function(e){return e.visitPrefixNot(this)},t}(s);t.PrefixNot=E;var S=function(e){function t(t,r,n,i){e.call(this),this.receiver=t,this.name=r,this.fn=n,this.args=i}return o(t,e),t.prototype.visit=function(e){return e.visitMethodCall(this)},t}(s);t.MethodCall=S;var R=function(e){function t(t,r,n,i){e.call(this),this.receiver=t,this.name=r,this.fn=n,this.args=i}return o(t,e),t.prototype.visit=function(e){return e.visitSafeMethodCall(this)},t}(s);t.SafeMethodCall=R;var x=function(e){function t(t,r){e.call(this),this.target=t,this.args=r}return o(t,e),t.prototype.visit=function(e){return e.visitFunctionCall(this)},t}(s);t.FunctionCall=x;var O=function(e){function t(t,r,n){e.call(this),this.ast=t,this.source=r,this.location=n}return o(t,e),t.prototype.visit=function(e){return this.ast.visit(e)},t.prototype.toString=function(){return this.source+" in "+this.location},t}(s);t.ASTWithSource=O;var D=function(){function e(e,t,r,n){this.key=e,this.keyIsVar=t,this.name=r,this.expression=n}return e}();t.TemplateBinding=D;var A=function(){function e(){}return e.prototype.visitBinary=function(e){return e.left.visit(this),e.right.visit(this),null},e.prototype.visitChain=function(e){return this.visitAll(e.expressions)},e.prototype.visitConditional=function(e){return e.condition.visit(this),e.trueExp.visit(this),e.falseExp.visit(this),null},e.prototype.visitPipe=function(e){return e.exp.visit(this),this.visitAll(e.args),null},e.prototype.visitFunctionCall=function(e){return e.target.visit(this),this.visitAll(e.args),null},e.prototype.visitImplicitReceiver=function(e){return null},e.prototype.visitInterpolation=function(e){return this.visitAll(e.expressions)},e.prototype.visitKeyedRead=function(e){return e.obj.visit(this),e.key.visit(this),null},e.prototype.visitKeyedWrite=function(e){return e.obj.visit(this),e.key.visit(this),e.value.visit(this),null},e.prototype.visitLiteralArray=function(e){return this.visitAll(e.expressions)},e.prototype.visitLiteralMap=function(e){return this.visitAll(e.values)},e.prototype.visitLiteralPrimitive=function(e){return null},e.prototype.visitMethodCall=function(e){return e.receiver.visit(this),this.visitAll(e.args)},e.prototype.visitPrefixNot=function(e){return e.expression.visit(this),null},e.prototype.visitPropertyRead=function(e){return e.receiver.visit(this),null},e.prototype.visitPropertyWrite=function(e){return e.receiver.visit(this),e.value.visit(this),null},e.prototype.visitSafePropertyRead=function(e){return e.receiver.visit(this),null},e.prototype.visitSafeMethodCall=function(e){return e.receiver.visit(this),this.visitAll(e.args)},e.prototype.visitAll=function(e){var t=this;return e.forEach(function(e){return e.visit(t)}),null},e.prototype.visitQuote=function(e){return null},e}();t.RecursiveAstVisitor=A;var T=function(){function e(){}return e.prototype.visitImplicitReceiver=function(e){return e},e.prototype.visitInterpolation=function(e){return new w(e.strings,this.visitAll(e.expressions))},e.prototype.visitLiteralPrimitive=function(e){return new _(e.value)},e.prototype.visitPropertyRead=function(e){return new f(e.receiver.visit(this),e.name,e.getter)},e.prototype.visitPropertyWrite=function(e){return new h(e.receiver.visit(this),e.name,e.setter,e.value)},e.prototype.visitSafePropertyRead=function(e){return new g(e.receiver.visit(this),e.name,e.getter)},e.prototype.visitMethodCall=function(e){return new S(e.receiver.visit(this),e.name,e.fn,this.visitAll(e.args))},e.prototype.visitSafeMethodCall=function(e){return new R(e.receiver.visit(this),e.name,e.fn,this.visitAll(e.args))},e.prototype.visitFunctionCall=function(e){return new x(e.target.visit(this),this.visitAll(e.args))},e.prototype.visitLiteralArray=function(e){return new b(this.visitAll(e.expressions))},e.prototype.visitLiteralMap=function(e){return new C(e.keys,this.visitAll(e.values))},e.prototype.visitBinary=function(e){return new P(e.operation,e.left.visit(this),e.right.visit(this))},e.prototype.visitPrefixNot=function(e){return new E(e.expression.visit(this))},e.prototype.visitConditional=function(e){return new d(e.condition.visit(this),e.trueExp.visit(this),e.falseExp.visit(this))},e.prototype.visitPipe=function(e){return new y(e.exp.visit(this),e.name,this.visitAll(e.args))},e.prototype.visitKeyedRead=function(e){return new m(e.obj.visit(this),e.key.visit(this))},e.prototype.visitKeyedWrite=function(e){return new v(e.obj.visit(this),e.key.visit(this),e.value.visit(this))},e.prototype.visitAll=function(e){for(var t=a.ListWrapper.createFixedSize(e.length),r=0;r<e.length;++r)t[r]=e[r].visit(this);return t},e.prototype.visitChain=function(e){return new p(this.visitAll(e.expressions))},e.prototype.visitQuote=function(e){return new c(e.prefix,e.uninterpretedExpression,e.location)},e}();return t.AstTransformer=T,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/parser/lexer",["angular2/src/core/di/decorators","angular2/src/facade/collection","angular2/src/facade/lang","angular2/src/facade/exceptions"],!0,function(e,t,r){function n(e,t){return new O(e,R.Character,t,E.StringWrapper.fromCharCode(t))}function i(e,t){return new O(e,R.Identifier,0,t)}function o(e,t){return new O(e,R.Keyword,0,t)}function a(e,t){return new O(e,R.Operator,0,t)}function s(e,t){return new O(e,R.String,0,t)}function c(e,t){return new O(e,R.Number,t,"")}function l(e){return e>=t.$TAB&&e<=t.$SPACE||e==G}function u(e){return e>=M&&q>=e||e>=T&&k>=e||e==V||e==t.$$}function p(e){if(0==e.length)return!1;var r=new z(e);if(!u(r.peek))return!1;for(r.advance();r.peek!==t.$EOF;){if(!d(r.peek))return!1;r.advance()}return!0}function d(e){return e>=M&&q>=e||e>=T&&k>=e||e>=D&&A>=e||e==V||e==t.$$}function f(e){return e>=D&&A>=e}function h(e){return e==j||e==I}function g(e){return e==t.$MINUS||e==t.$PLUS}function m(e){switch(e){case L:return t.$LF;case B:return t.$FF;case F:return t.$CR;case W:return t.$TAB;case H:return t.$VTAB;default:return e}}var v=System.global,y=v.define;v.define=void 0;var _=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},b=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},C=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},w=e("angular2/src/core/di/decorators"),P=e("angular2/src/facade/collection"),E=e("angular2/src/facade/lang"),S=e("angular2/src/facade/exceptions");!function(e){e[e.Character=0]="Character",e[e.Identifier=1]="Identifier",e[e.Keyword=2]="Keyword",e[e.String=3]="String",e[e.Operator=4]="Operator",e[e.Number=5]="Number"}(t.TokenType||(t.TokenType={}));var R=t.TokenType,x=function(){function e(){}return e.prototype.tokenize=function(e){for(var t=new z(e),r=[],n=t.scanToken();null!=n;)r.push(n),n=t.scanToken();return r},e=b([w.Injectable(),C("design:paramtypes",[])],e)}();t.Lexer=x;var O=function(){function e(e,t,r,n){this.index=e,this.type=t,this.numValue=r,this.strValue=n}return e.prototype.isCharacter=function(e){return this.type==R.Character&&this.numValue==e},e.prototype.isNumber=function(){return this.type==R.Number},e.prototype.isString=function(){return this.type==R.String},e.prototype.isOperator=function(e){return this.type==R.Operator&&this.strValue==e},e.prototype.isIdentifier=function(){return this.type==R.Identifier},e.prototype.isKeyword=function(){return this.type==R.Keyword},e.prototype.isKeywordVar=function(){return this.type==R.Keyword&&"var"==this.strValue},e.prototype.isKeywordNull=function(){return this.type==R.Keyword&&"null"==this.strValue},e.prototype.isKeywordUndefined=function(){return this.type==R.Keyword&&"undefined"==this.strValue},e.prototype.isKeywordTrue=function(){return this.type==R.Keyword&&"true"==this.strValue},e.prototype.isKeywordFalse=function(){return this.type==R.Keyword&&"false"==this.strValue},e.prototype.toNumber=function(){return this.type==R.Number?this.numValue:-1},e.prototype.toString=function(){switch(this.type){case R.Character:case R.Identifier:case R.Keyword:case R.Operator:case R.String:return this.strValue;case R.Number:return this.numValue.toString();default:return null}},e}();t.Token=O,t.EOF=new O(-1,R.Character,0,""),t.$EOF=0,t.$TAB=9,t.$LF=10,t.$VTAB=11,t.$FF=12,t.$CR=13,t.$SPACE=32,t.$BANG=33,t.$DQ=34,t.$HASH=35,t.$$=36,t.$PERCENT=37,t.$AMPERSAND=38,t.$SQ=39,t.$LPAREN=40,t.$RPAREN=41,t.$STAR=42,t.$PLUS=43,t.$COMMA=44,t.$MINUS=45,t.$PERIOD=46,t.$SLASH=47,t.$COLON=58,t.$SEMICOLON=59,t.$LT=60,t.$EQ=61,t.$GT=62,t.$QUESTION=63;var D=48,A=57,T=65,I=69,k=90;t.$LBRACKET=91,t.$BACKSLASH=92,t.$RBRACKET=93;var N=94,V=95,M=97,j=101,B=102,L=110,F=114,W=116,U=117,H=118,q=122;t.$LBRACE=123,t.$BAR=124,t.$RBRACE=125;var G=160,K=function(e){function t(t){e.call(this),this.message=t}return _(t,e),t.prototype.toString=function(){return this.message},t}(S.BaseException);t.ScannerError=K;var z=function(){function e(e){this.input=e,this.peek=0,this.index=-1,this.length=e.length,this.advance()}return e.prototype.advance=function(){this.peek=++this.index>=this.length?t.$EOF:E.StringWrapper.charCodeAt(this.input,this.index)},e.prototype.scanToken=function(){for(var e=this.input,r=this.length,i=this.peek,o=this.index;i<=t.$SPACE;){if(++o>=r){i=t.$EOF;break}i=E.StringWrapper.charCodeAt(e,o)}if(this.peek=i,this.index=o,o>=r)return null;if(u(i))return this.scanIdentifier();if(f(i))return this.scanNumber(o);var a=o;switch(i){case t.$PERIOD:return this.advance(),f(this.peek)?this.scanNumber(a):n(a,t.$PERIOD);case t.$LPAREN:case t.$RPAREN:case t.$LBRACE:case t.$RBRACE:case t.$LBRACKET:case t.$RBRACKET:case t.$COMMA:case t.$COLON:case t.$SEMICOLON:return this.scanCharacter(a,i);case t.$SQ:case t.$DQ:return this.scanString();case t.$HASH:case t.$PLUS:case t.$MINUS:case t.$STAR:case t.$SLASH:case t.$PERCENT:case N:return this.scanOperator(a,E.StringWrapper.fromCharCode(i));case t.$QUESTION:return this.scanComplexOperator(a,"?",t.$PERIOD,".");case t.$LT:case t.$GT:return this.scanComplexOperator(a,E.StringWrapper.fromCharCode(i),t.$EQ,"=");case t.$BANG:case t.$EQ:return this.scanComplexOperator(a,E.StringWrapper.fromCharCode(i),t.$EQ,"=",t.$EQ,"=");case t.$AMPERSAND:return this.scanComplexOperator(a,"&",t.$AMPERSAND,"&");case t.$BAR:return this.scanComplexOperator(a,"|",t.$BAR,"|");case G:for(;l(this.peek);)this.advance();return this.scanToken()}return this.error("Unexpected character ["+E.StringWrapper.fromCharCode(i)+"]",0),null},e.prototype.scanCharacter=function(e,t){return this.advance(),n(e,t)},e.prototype.scanOperator=function(e,t){return this.advance(),a(e,t)},e.prototype.scanComplexOperator=function(e,t,r,n,i,o){this.advance();var s=t;return this.peek==r&&(this.advance(),s+=n),E.isPresent(i)&&this.peek==i&&(this.advance(),s+=o),a(e,s)},e.prototype.scanIdentifier=function(){var e=this.index;for(this.advance();d(this.peek);)this.advance();var t=this.input.substring(e,this.index);return P.SetWrapper.has(Q,t)?o(e,t):i(e,t)},e.prototype.scanNumber=function(e){var r=this.index===e;for(this.advance();;){if(f(this.peek));else if(this.peek==t.$PERIOD)r=!1;else{if(!h(this.peek))break;this.advance(),g(this.peek)&&this.advance(),f(this.peek)||this.error("Invalid exponent",-1),r=!1}this.advance()}var n=this.input.substring(e,this.index),i=r?E.NumberWrapper.parseIntAutoRadix(n):E.NumberWrapper.parseFloat(n);return c(e,i)},e.prototype.scanString=function(){var e=this.index,r=this.peek;this.advance();for(var n,i=this.index,o=this.input;this.peek!=r;)if(this.peek==t.$BACKSLASH){null==n&&(n=new E.StringJoiner),n.add(o.substring(i,this.index)),this.advance();var a;if(this.peek==U){var c=o.substring(this.index+1,this.index+5);try{a=E.NumberWrapper.parseInt(c,16)}catch(l){this.error("Invalid unicode escape [\\u"+c+"]",0)}for(var u=0;5>u;u++)this.advance()}else a=m(this.peek),this.advance();n.add(E.StringWrapper.fromCharCode(a)),i=this.index}else this.peek==t.$EOF?this.error("Unterminated quote",0):this.advance();var p=o.substring(i,this.index);this.advance();var d=p;return null!=n&&(n.add(p),d=n.toString()),s(e,d)},e.prototype.error=function(e,t){var r=this.index+t;throw new K("Lexer Error: "+e+" at column "+r+" in expression ["+this.input+"]")},e}();t.isIdentifier=p;var Q=(P.SetWrapper.createFromList(["+","-","*","/","%","^","=","==","!=","===","!==","<",">","<=",">=","&&","||","&","|","!","?","#","?."]),P.SetWrapper.createFromList(["var","null","undefined","true","false","if","else"]));return v.define=y,r.exports}),System.register("angular2/src/core/change_detection/parser/parser",["angular2/src/core/di/decorators","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/change_detection/parser/lexer","angular2/src/core/reflection/reflection","angular2/src/core/change_detection/parser/ast"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/core/di/decorators"),l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/exceptions"),p=e("angular2/src/facade/collection"),d=e("angular2/src/core/change_detection/parser/lexer"),f=e("angular2/src/core/reflection/reflection"),h=e("angular2/src/core/change_detection/parser/ast"),g=new h.ImplicitReceiver,m=/\{\{([\s\S]*?)\}\}/g,v=function(e){function t(t,r,n,i){e.call(this,"Parser Error: "+t+" "+n+" ["+r+"] in "+i)}return o(t,e),t}(u.BaseException),y=function(){function e(e,t){void 0===t&&(t=null),this._lexer=e,this._reflector=l.isPresent(t)?t:f.reflector}return e.prototype.parseAction=function(e,t){this._checkNoInterpolation(e,t);var r=this._lexer.tokenize(e),n=new _(e,t,r,this._reflector,!0).parseChain();return new h.ASTWithSource(n,e,t)},e.prototype.parseBinding=function(e,t){var r=this._parseBindingAst(e,t);return new h.ASTWithSource(r,e,t)},e.prototype.parseSimpleBinding=function(e,t){var r=this._parseBindingAst(e,t);if(!b.check(r))throw new v("Host binding expression can only contain field access and constants",e,t);return new h.ASTWithSource(r,e,t)},e.prototype._parseBindingAst=function(e,t){var r=this._parseQuote(e,t);if(l.isPresent(r))return r;this._checkNoInterpolation(e,t);var n=this._lexer.tokenize(e);return new _(e,t,n,this._reflector,!1).parseChain()},e.prototype._parseQuote=function(e,t){if(l.isBlank(e))return null;var r=e.indexOf(":");if(-1==r)return null;var n=e.substring(0,r).trim();if(!d.isIdentifier(n))return null;var i=e.substring(r+1);return new h.Quote(n,i,t)},e.prototype.parseTemplateBindings=function(e,t){var r=this._lexer.tokenize(e);return new _(e,t,r,this._reflector,!1).parseTemplateBindings()},e.prototype.parseInterpolation=function(e,t){var r=l.StringWrapper.split(e,m);if(r.length<=1)return null;for(var n=[],i=[],o=0;o<r.length;o++){var a=r[o];if(o%2===0)n.push(a);else{if(!(a.trim().length>0))throw new v("Blank expressions are not allowed in interpolated strings",e,"at column "+this._findInterpolationErrorColumn(r,o)+" in",t);var s=this._lexer.tokenize(a),c=new _(e,t,s,this._reflector,!1).parseChain();i.push(c)}}return new h.ASTWithSource(new h.Interpolation(n,i),e,t)},e.prototype.wrapLiteralPrimitive=function(e,t){return new h.ASTWithSource(new h.LiteralPrimitive(e),e,t)},e.prototype._checkNoInterpolation=function(e,t){var r=l.StringWrapper.split(e,m);if(r.length>1)throw new v("Got interpolation ({{}}) where expression was expected",e,"at column "+this._findInterpolationErrorColumn(r,1)+" in",t)},e.prototype._findInterpolationErrorColumn=function(e,t){for(var r="",n=0;t>n;n++)r+=n%2===0?e[n]:"{{"+e[n]+"}}";return r.length},e=a([c.Injectable(),s("design:paramtypes",[d.Lexer,f.Reflector])],e)}();t.Parser=y;var _=function(){function e(e,t,r,n,i){this.input=e,this.location=t,this.tokens=r,this.reflector=n,this.parseAction=i,this.index=0}return e.prototype.peek=function(e){var t=this.index+e;return t<this.tokens.length?this.tokens[t]:d.EOF},Object.defineProperty(e.prototype,"next",{get:function(){return this.peek(0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inputIndex",{get:function(){return this.index<this.tokens.length?this.next.index:this.input.length},enumerable:!0,configurable:!0}),e.prototype.advance=function(){this.index++},e.prototype.optionalCharacter=function(e){return this.next.isCharacter(e)?(this.advance(),!0):!1},e.prototype.optionalKeywordVar=function(){return this.peekKeywordVar()?(this.advance(),!0):!1},e.prototype.peekKeywordVar=function(){return this.next.isKeywordVar()||this.next.isOperator("#")},e.prototype.expectCharacter=function(e){this.optionalCharacter(e)||this.error("Missing expected "+l.StringWrapper.fromCharCode(e))},e.prototype.optionalOperator=function(e){return this.next.isOperator(e)?(this.advance(),!0):!1},e.prototype.expectOperator=function(e){this.optionalOperator(e)||this.error("Missing expected operator "+e)},e.prototype.expectIdentifierOrKeyword=function(){var e=this.next;return e.isIdentifier()||e.isKeyword()||this.error("Unexpected token "+e+", expected identifier or keyword"),this.advance(),e.toString()},e.prototype.expectIdentifierOrKeywordOrString=function(){var e=this.next;return e.isIdentifier()||e.isKeyword()||e.isString()||this.error("Unexpected token "+e+", expected identifier, keyword, or string"),this.advance(),e.toString()},e.prototype.parseChain=function(){for(var e=[];this.index<this.tokens.length;){var t=this.parsePipe();if(e.push(t),this.optionalCharacter(d.$SEMICOLON))for(this.parseAction||this.error("Binding expression cannot contain chained expression");this.optionalCharacter(d.$SEMICOLON););else this.index<this.tokens.length&&this.error("Unexpected token '"+this.next+"'")}return 0==e.length?new h.EmptyExpr:1==e.length?e[0]:new h.Chain(e)},e.prototype.parsePipe=function(){var e=this.parseExpression();if(this.optionalOperator("|")){this.parseAction&&this.error("Cannot have a pipe in an action expression");do{for(var t=this.expectIdentifierOrKeyword(),r=[];this.optionalCharacter(d.$COLON);)r.push(this.parseExpression());e=new h.BindingPipe(e,t,r)}while(this.optionalOperator("|"))}return e},e.prototype.parseExpression=function(){return this.parseConditional()},e.prototype.parseConditional=function(){var e=this.inputIndex,t=this.parseLogicalOr();if(this.optionalOperator("?")){var r=this.parsePipe();if(!this.optionalCharacter(d.$COLON)){var n=this.inputIndex,i=this.input.substring(e,n);this.error("Conditional expression "+i+" requires all 3 expressions")}var o=this.parsePipe();return new h.Conditional(t,r,o)}return t},e.prototype.parseLogicalOr=function(){for(var e=this.parseLogicalAnd();this.optionalOperator("||");)e=new h.Binary("||",e,this.parseLogicalAnd());return e},e.prototype.parseLogicalAnd=function(){for(var e=this.parseEquality();this.optionalOperator("&&");)e=new h.Binary("&&",e,this.parseEquality());return e},e.prototype.parseEquality=function(){for(var e=this.parseRelational();;)if(this.optionalOperator("=="))e=new h.Binary("==",e,this.parseRelational());else if(this.optionalOperator("==="))e=new h.Binary("===",e,this.parseRelational());else if(this.optionalOperator("!="))e=new h.Binary("!=",e,this.parseRelational());else{if(!this.optionalOperator("!=="))return e;e=new h.Binary("!==",e,this.parseRelational())}},e.prototype.parseRelational=function(){for(var e=this.parseAdditive();;)if(this.optionalOperator("<"))e=new h.Binary("<",e,this.parseAdditive());else if(this.optionalOperator(">"))e=new h.Binary(">",e,this.parseAdditive());else if(this.optionalOperator("<="))e=new h.Binary("<=",e,this.parseAdditive());else{if(!this.optionalOperator(">="))return e;e=new h.Binary(">=",e,this.parseAdditive())}},e.prototype.parseAdditive=function(){for(var e=this.parseMultiplicative();;)if(this.optionalOperator("+"))e=new h.Binary("+",e,this.parseMultiplicative());else{if(!this.optionalOperator("-"))return e;e=new h.Binary("-",e,this.parseMultiplicative())}},e.prototype.parseMultiplicative=function(){for(var e=this.parsePrefix();;)if(this.optionalOperator("*"))e=new h.Binary("*",e,this.parsePrefix());else if(this.optionalOperator("%"))e=new h.Binary("%",e,this.parsePrefix());else{if(!this.optionalOperator("/"))return e;e=new h.Binary("/",e,this.parsePrefix())}},e.prototype.parsePrefix=function(){return this.optionalOperator("+")?this.parsePrefix():this.optionalOperator("-")?new h.Binary("-",new h.LiteralPrimitive(0),this.parsePrefix()):this.optionalOperator("!")?new h.PrefixNot(this.parsePrefix()):this.parseCallChain()},e.prototype.parseCallChain=function(){for(var e=this.parsePrimary();;)if(this.optionalCharacter(d.$PERIOD))e=this.parseAccessMemberOrMethodCall(e,!1);else if(this.optionalOperator("?."))e=this.parseAccessMemberOrMethodCall(e,!0);else if(this.optionalCharacter(d.$LBRACKET)){var t=this.parsePipe();if(this.expectCharacter(d.$RBRACKET),this.optionalOperator("=")){var r=this.parseConditional();e=new h.KeyedWrite(e,t,r)}else e=new h.KeyedRead(e,t)}else{if(!this.optionalCharacter(d.$LPAREN))return e;var n=this.parseCallArguments();this.expectCharacter(d.$RPAREN),e=new h.FunctionCall(e,n)}},e.prototype.parsePrimary=function(){if(this.optionalCharacter(d.$LPAREN)){var e=this.parsePipe();return this.expectCharacter(d.$RPAREN),e}if(this.next.isKeywordNull()||this.next.isKeywordUndefined())return this.advance(),new h.LiteralPrimitive(null);if(this.next.isKeywordTrue())return this.advance(),new h.LiteralPrimitive(!0);if(this.next.isKeywordFalse())return this.advance(),new h.LiteralPrimitive(!1);if(this.optionalCharacter(d.$LBRACKET)){var t=this.parseExpressionList(d.$RBRACKET);return this.expectCharacter(d.$RBRACKET),new h.LiteralArray(t)}if(this.next.isCharacter(d.$LBRACE))return this.parseLiteralMap();if(this.next.isIdentifier())return this.parseAccessMemberOrMethodCall(g,!1);if(this.next.isNumber()){var r=this.next.toNumber();return this.advance(),new h.LiteralPrimitive(r)}if(this.next.isString()){var n=this.next.toString();return this.advance(),new h.LiteralPrimitive(n)}throw this.index>=this.tokens.length?this.error("Unexpected end of expression: "+this.input):this.error("Unexpected token "+this.next),new u.BaseException("Fell through all cases in parsePrimary")},e.prototype.parseExpressionList=function(e){var t=[];if(!this.next.isCharacter(e))do t.push(this.parsePipe());while(this.optionalCharacter(d.$COMMA));return t},e.prototype.parseLiteralMap=function(){var e=[],t=[];if(this.expectCharacter(d.$LBRACE),!this.optionalCharacter(d.$RBRACE)){do{var r=this.expectIdentifierOrKeywordOrString();e.push(r),this.expectCharacter(d.$COLON),t.push(this.parsePipe())}while(this.optionalCharacter(d.$COMMA));this.expectCharacter(d.$RBRACE)}return new h.LiteralMap(e,t)},e.prototype.parseAccessMemberOrMethodCall=function(e,t){void 0===t&&(t=!1);var r=this.expectIdentifierOrKeyword();if(this.optionalCharacter(d.$LPAREN)){var n=this.parseCallArguments();this.expectCharacter(d.$RPAREN);var i=this.reflector.method(r);return t?new h.SafeMethodCall(e,r,i,n):new h.MethodCall(e,r,i,n)}if(!t){if(this.optionalOperator("=")){this.parseAction||this.error("Bindings cannot contain assignments");var o=this.parseConditional();return new h.PropertyWrite(e,r,this.reflector.setter(r),o)}return new h.PropertyRead(e,r,this.reflector.getter(r))}return this.optionalOperator("=")?(this.error("The '?.' operator cannot be used in the assignment"),null):new h.SafePropertyRead(e,r,this.reflector.getter(r))},e.prototype.parseCallArguments=function(){if(this.next.isCharacter(d.$RPAREN))return[];var e=[];do e.push(this.parsePipe());while(this.optionalCharacter(d.$COMMA));return e},e.prototype.parseBlockContent=function(){this.parseAction||this.error("Binding expression cannot contain chained expression");for(var e=[];this.index<this.tokens.length&&!this.next.isCharacter(d.$RBRACE);){var t=this.parseExpression();if(e.push(t),this.optionalCharacter(d.$SEMICOLON))for(;this.optionalCharacter(d.$SEMICOLON););}return 0==e.length?new h.EmptyExpr:1==e.length?e[0]:new h.Chain(e)},e.prototype.expectTemplateBindingKey=function(){var e="",t=!1;do e+=this.expectIdentifierOrKeywordOrString(),t=this.optionalOperator("-"),t&&(e+="-");while(t);return e.toString()},e.prototype.parseTemplateBindings=function(){for(var e=[],t=null;this.index<this.tokens.length;){var r=this.optionalKeywordVar(),n=this.expectTemplateBindingKey();r||(null==t?t=n:n=t+n[0].toUpperCase()+n.substring(1)),this.optionalCharacter(d.$COLON);var i=null,o=null;if(r)i=this.optionalOperator("=")?this.expectTemplateBindingKey():"$implicit";else if(this.next!==d.EOF&&!this.peekKeywordVar()){var a=this.inputIndex,s=this.parsePipe(),c=this.input.substring(a,this.inputIndex);o=new h.ASTWithSource(s,c,this.location)}e.push(new h.TemplateBinding(n,r,i,o)),this.optionalCharacter(d.$SEMICOLON)||this.optionalCharacter(d.$COMMA)}return e},e.prototype.error=function(e,t){void 0===t&&(t=null),l.isBlank(t)&&(t=this.index);var r=t<this.tokens.length?"at column "+(this.tokens[t].index+1)+" in":"at the end of the expression";throw new v(e,this.input,r,this.location)},e}();t._ParseAST=_;var b=function(){function e(){this.simple=!0}return e.check=function(t){var r=new e;return t.visit(r),r.simple},e.prototype.visitImplicitReceiver=function(e){},e.prototype.visitInterpolation=function(e){this.simple=!1},e.prototype.visitLiteralPrimitive=function(e){},e.prototype.visitPropertyRead=function(e){},e.prototype.visitPropertyWrite=function(e){this.simple=!1},e.prototype.visitSafePropertyRead=function(e){this.simple=!1},e.prototype.visitMethodCall=function(e){this.simple=!1},e.prototype.visitSafeMethodCall=function(e){this.simple=!1},e.prototype.visitFunctionCall=function(e){this.simple=!1},e.prototype.visitLiteralArray=function(e){this.visitAll(e.expressions)},e.prototype.visitLiteralMap=function(e){this.visitAll(e.values)},e.prototype.visitBinary=function(e){this.simple=!1},e.prototype.visitPrefixNot=function(e){this.simple=!1},e.prototype.visitConditional=function(e){this.simple=!1},e.prototype.visitPipe=function(e){this.simple=!1},e.prototype.visitKeyedRead=function(e){this.simple=!1},e.prototype.visitKeyedWrite=function(e){this.simple=!1},e.prototype.visitAll=function(e){for(var t=p.ListWrapper.createFixedSize(e.length),r=0;r<e.length;++r)t[r]=e[r].visit(this);return t},e.prototype.visitChain=function(e){this.simple=!1},e.prototype.visitQuote=function(e){this.simple=!1},e}();return n.define=i,r.exports}),System.register("angular2/src/core/change_detection/parser/locals",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/facade/exceptions"),s=e("angular2/src/facade/collection"),c=function(){function e(e,t){this.parent=e,this.current=t}return e.prototype.contains=function(e){return this.current.has(e)?!0:o.isPresent(this.parent)?this.parent.contains(e):!1},e.prototype.get=function(e){if(this.current.has(e))return this.current.get(e);if(o.isPresent(this.parent))return this.parent.get(e);throw new a.BaseException("Cannot find '"+e+"'")},e.prototype.set=function(e,t){if(!this.current.has(e))throw new a.BaseException("Setting of new keys post-construction is not supported. Key: "+e+".");this.current.set(e,t)},e.prototype.clearLocalValues=function(){s.MapWrapper.clearValues(this.current)},e}();return t.Locals=c,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/exceptions",["angular2/src/facade/exceptions"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/facade/exceptions"),s=function(e){function t(t,r,n,i){e.call(this,"Expression '"+t+"' has changed after it was checked. "+("Previous value: '"+r+"'. Current value: '"+n+"'"))}return o(t,e),t}(a.BaseException);t.ExpressionChangedAfterItHasBeenCheckedException=s;var c=function(e){function t(t,r,n,i){e.call(this,r+" in ["+t+"]",r,n,i),this.location=t}return o(t,e),t}(a.WrappedException);t.ChangeDetectionError=c;var l=function(e){function t(t){e.call(this,"Attempt to use a dehydrated detector: "+t)}return o(t,e),t}(a.BaseException);t.DehydratedException=l;var u=function(e){function t(t,r,n,i){e.call(this,'Error during evaluation of "'+t+'"',r,n,i)}return o(t,e),t}(a.WrappedException);t.EventEvaluationError=u;var p=function(){function e(e,t,r,n,i){this.element=e,this.componentElement=t,this.context=r,this.locals=n,this.injector=i}return e}();return t.EventEvaluationErrorContext=p,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/interfaces",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=function(){function e(e,t,r,n,i,o){this.element=e,this.componentElement=t,this.directive=r,this.context=n,this.locals=i,this.injector=o}return e}();t.DebugContext=o;var a=function(){function e(e,t,r){this.genDebugInfo=e,this.logBindingUpdate=t,this.useJit=r}return e}();t.ChangeDetectorGenConfig=a;var s=function(){function e(e,t,r,n,i,o,a){this.id=e,this.strategy=t,this.variableNames=r,this.bindingRecords=n,this.eventRecords=i,this.directiveRecords=o,this.genConfig=a}return e}();return t.ChangeDetectorDefinition=s,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/constants",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e){return a.isBlank(e)||e===c.Default}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/facade/lang");!function(e){e[e.NeverChecked=0]="NeverChecked",e[e.CheckedBefore=1]="CheckedBefore",e[e.Errored=2]="Errored"}(t.ChangeDetectorState||(t.ChangeDetectorState={}));var s=t.ChangeDetectorState;!function(e){e[e.CheckOnce=0]="CheckOnce",e[e.Checked=1]="Checked",e[e.CheckAlways=2]="CheckAlways",e[e.Detached=3]="Detached",e[e.OnPush=4]="OnPush",e[e.Default=5]="Default"}(t.ChangeDetectionStrategy||(t.ChangeDetectionStrategy={}));var c=t.ChangeDetectionStrategy;return t.CHANGE_DETECTION_STRATEGY_VALUES=[c.CheckOnce,c.Checked,c.CheckAlways,c.Detached,c.OnPush,c.Default],t.CHANGE_DETECTOR_STATE_VALUES=[s.NeverChecked,s.CheckedBefore,s.Errored],t.isDefaultChangeDetectionStrategy=n,i.define=o,r.exports}),System.register("angular2/src/core/change_detection/pipe_lifecycle_reflector",[],!0,function(e,t,r){function n(e){return e.constructor.prototype.ngOnDestroy}var i=System.global,o=i.define;return i.define=void 0,t.implementsOnDestroy=n,i.define=o,r.exports}),System.register("angular2/src/core/change_detection/binding_record",["angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a="directiveLifecycle",s="native",c="directive",l="elementProperty",u="elementAttribute",p="elementClass",d="elementStyle",f="textNode",h="event",g="hostEvent",m=function(){
function e(e,t,r,n,i){this.mode=e,this.elementIndex=t,this.name=r,this.unit=n,this.debug=i}return e.prototype.isDirective=function(){return this.mode===c},e.prototype.isElementProperty=function(){return this.mode===l},e.prototype.isElementAttribute=function(){return this.mode===u},e.prototype.isElementClass=function(){return this.mode===p},e.prototype.isElementStyle=function(){return this.mode===d},e.prototype.isTextNode=function(){return this.mode===f},e}();t.BindingTarget=m;var v=function(){function e(e,t,r,n,i,o,a){this.mode=e,this.target=t,this.implicitReceiver=r,this.ast=n,this.setter=i,this.lifecycleEvent=o,this.directiveRecord=a}return e.prototype.isDirectiveLifecycle=function(){return this.mode===a},e.prototype.callOnChanges=function(){return o.isPresent(this.directiveRecord)&&this.directiveRecord.callOnChanges},e.prototype.isDefaultChangeDetection=function(){return o.isBlank(this.directiveRecord)||this.directiveRecord.isDefaultChangeDetection()},e.createDirectiveDoCheck=function(t){return new e(a,null,0,null,null,"DoCheck",t)},e.createDirectiveOnInit=function(t){return new e(a,null,0,null,null,"OnInit",t)},e.createDirectiveOnChanges=function(t){return new e(a,null,0,null,null,"OnChanges",t)},e.createForDirective=function(t,r,n,i){var o=i.directiveIndex.elementIndex,a=new m(c,o,r,null,t.toString());return new e(c,a,0,t,n,null,i)},e.createForElementProperty=function(t,r,n){var i=new m(l,r,n,null,t.toString());return new e(s,i,0,t,null,null,null)},e.createForElementAttribute=function(t,r,n){var i=new m(u,r,n,null,t.toString());return new e(s,i,0,t,null,null,null)},e.createForElementClass=function(t,r,n){var i=new m(p,r,n,null,t.toString());return new e(s,i,0,t,null,null,null)},e.createForElementStyle=function(t,r,n,i){var o=new m(d,r,n,i,t.toString());return new e(s,o,0,t,null,null,null)},e.createForHostProperty=function(t,r,n){var i=new m(l,t.elementIndex,n,null,r.toString());return new e(s,i,t,r,null,null,null)},e.createForHostAttribute=function(t,r,n){var i=new m(u,t.elementIndex,n,null,r.toString());return new e(s,i,t,r,null,null,null)},e.createForHostClass=function(t,r,n){var i=new m(p,t.elementIndex,n,null,r.toString());return new e(s,i,t,r,null,null,null)},e.createForHostStyle=function(t,r,n,i){var o=new m(d,t.elementIndex,n,i,r.toString());return new e(s,o,t,r,null,null,null)},e.createForTextNode=function(t,r){var n=new m(f,r,null,null,t.toString());return new e(s,n,0,t,null,null,null)},e.createForEvent=function(t,r,n){var i=new m(h,n,r,null,t.toString());return new e(h,i,0,t,null,null,null)},e.createForHostEvent=function(t,r,n){var i=n.directiveIndex,o=new m(g,i.elementIndex,r,null,t.toString());return new e(g,o,i,t,null,null,n)},e}();return t.BindingRecord=v,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/directive_record",["angular2/src/facade/lang","angular2/src/core/change_detection/constants"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/core/change_detection/constants"),s=function(){function e(e,t){this.elementIndex=e,this.directiveIndex=t}return Object.defineProperty(e.prototype,"name",{get:function(){return this.elementIndex+"_"+this.directiveIndex},enumerable:!0,configurable:!0}),e}();t.DirectiveIndex=s;var c=function(){function e(e){var t=void 0===e?{}:e,r=t.directiveIndex,n=t.callAfterContentInit,i=t.callAfterContentChecked,a=t.callAfterViewInit,s=t.callAfterViewChecked,c=t.callOnChanges,l=t.callDoCheck,u=t.callOnInit,p=t.callOnDestroy,d=t.changeDetection,f=t.outputs;this.directiveIndex=r,this.callAfterContentInit=o.normalizeBool(n),this.callAfterContentChecked=o.normalizeBool(i),this.callOnChanges=o.normalizeBool(c),this.callAfterViewInit=o.normalizeBool(a),this.callAfterViewChecked=o.normalizeBool(s),this.callDoCheck=o.normalizeBool(l),this.callOnInit=o.normalizeBool(u),this.callOnDestroy=o.normalizeBool(p),this.changeDetection=d,this.outputs=f}return e.prototype.isDefaultChangeDetection=function(){return a.isDefaultChangeDetectionStrategy(this.changeDetection)},e}();return t.DirectiveRecord=c,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/change_detector_ref",["angular2/src/core/change_detection/constants"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/core/change_detection/constants"),s=function(){function e(){}return e}();t.ChangeDetectorRef=s;var c=function(e){function t(t){e.call(this),this._cd=t}return o(t,e),t.prototype.markForCheck=function(){this._cd.markPathToRootAsCheckOnce()},t.prototype.detach=function(){this._cd.mode=a.ChangeDetectionStrategy.Detached},t.prototype.detectChanges=function(){this._cd.detectChanges()},t.prototype.checkNoChanges=function(){this._cd.checkNoChanges()},t.prototype.reattach=function(){this._cd.mode=a.ChangeDetectionStrategy.CheckAlways,this.markForCheck()},t}(s);return t.ChangeDetectorRef_=c,n.define=i,r.exports}),System.register("angular2/src/core/profile/wtf_impl",["angular2/src/facade/lang"],!0,function(e,t,r){function n(){var e=d.global.wtf;return e&&(u=e.trace)?(p=u.events,!0):!1}function i(e,t){return void 0===t&&(t=null),p.createScope(e,t)}function o(e,t){return u.leaveScope(e,t),t}function a(e,t){return u.beginTimeRange(e,t)}function s(e){u.endTimeRange(e)}var c=System.global,l=c.define;c.define=void 0;var u,p,d=e("angular2/src/facade/lang");return t.detectWTF=n,t.createScope=i,t.leave=o,t.startTimeRange=a,t.endTimeRange=s,c.define=l,r.exports}),System.register("angular2/src/core/change_detection/proto_record",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0,function(e){e[e.Self=0]="Self",e[e.Const=1]="Const",e[e.PrimitiveOp=2]="PrimitiveOp",e[e.PropertyRead=3]="PropertyRead",e[e.PropertyWrite=4]="PropertyWrite",e[e.Local=5]="Local",e[e.InvokeMethod=6]="InvokeMethod",e[e.InvokeClosure=7]="InvokeClosure",e[e.KeyedRead=8]="KeyedRead",e[e.KeyedWrite=9]="KeyedWrite",e[e.Pipe=10]="Pipe",e[e.Interpolate=11]="Interpolate",e[e.SafeProperty=12]="SafeProperty",e[e.CollectionLiteral=13]="CollectionLiteral",e[e.SafeMethodInvoke=14]="SafeMethodInvoke",e[e.DirectiveLifecycle=15]="DirectiveLifecycle",e[e.Chain=16]="Chain",e[e.SkipRecordsIf=17]="SkipRecordsIf",e[e.SkipRecordsIfNot=18]="SkipRecordsIfNot",e[e.SkipRecords=19]="SkipRecords"}(t.RecordType||(t.RecordType={}));var o=t.RecordType,a=function(){function e(e,t,r,n,i,o,a,s,c,l,u,p,d,f){this.mode=e,this.name=t,this.funcOrValue=r,this.args=n,this.fixedArgs=i,this.contextIndex=o,this.directiveIndex=a,this.selfIndex=s,this.bindingRecord=c,this.lastInBinding=l,this.lastInDirective=u,this.argumentToPureFunction=p,this.referencedBySelf=d,this.propertyBindingIndex=f}return e.prototype.isPureFunction=function(){return this.mode===o.Interpolate||this.mode===o.CollectionLiteral},e.prototype.isUsedByOtherRecord=function(){return!this.lastInBinding||this.referencedBySelf},e.prototype.shouldBeChecked=function(){return this.argumentToPureFunction||this.lastInBinding||this.isPureFunction()||this.isPipeRecord()},e.prototype.isPipeRecord=function(){return this.mode===o.Pipe},e.prototype.isConditionalSkipRecord=function(){return this.mode===o.SkipRecordsIfNot||this.mode===o.SkipRecordsIf},e.prototype.isUnconditionalSkipRecord=function(){return this.mode===o.SkipRecords},e.prototype.isSkipRecord=function(){return this.isConditionalSkipRecord()||this.isUnconditionalSkipRecord()},e.prototype.isLifeCycleRecord=function(){return this.mode===o.DirectiveLifecycle},e}();return t.ProtoRecord=a,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/event_binding",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=function(){function e(e,t,r,n){this.eventName=e,this.elIndex=t,this.dirIndex=r,this.records=n}return e}();return t.EventBinding=o,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/coalesce",["angular2/src/facade/lang","angular2/src/facade/collection","angular2/src/core/change_detection/proto_record"],!0,function(e,t,r){function n(e){for(var t=[],r=[],n=new h.Map,a=0,c=h.ListWrapper.createFixedSize(e.length),l=0;l<e.length;l++){var u=c[l];f.isPresent(u)&&(a--,u.fixedArgs[0]=t.length);var p=e[l],d=s(p,t,n);if(d.isSkipRecord())t.push(d),a++,c[d.fixedArgs[0]]=d;else{var g=o(d,t,r,a>0);n.set(p.selfIndex,g.selfIndex)}}return i(t)}function i(e){for(var t=[],r=h.ListWrapper.createFixedSize(e.length),n=new h.Map,i=0;i<e.length;i++){var o=r[i];f.isPresent(o)&&(o.fixedArgs[0]=t.length);var a=e[i];if(a.isSkipRecord()){if(a.isConditionalSkipRecord()&&a.fixedArgs[0]===i+2&&i<e.length-1&&e[i+1].mode===g.RecordType.SkipRecords&&(a.mode=a.mode===g.RecordType.SkipRecordsIf?g.RecordType.SkipRecordsIfNot:g.RecordType.SkipRecordsIf,a.fixedArgs[0]=e[i+1].fixedArgs[0],i++),a.fixedArgs[0]>i+1){var c=s(a,t,n);t.push(c),r[c.fixedArgs[0]]=c}}else{var c=s(a,t,n);t.push(c),n.set(a.selfIndex,c.selfIndex)}}return t}function o(e,t,r,n){var i=a(e,t,r);return f.isPresent(i)?(e.lastInBinding?(t.push(l(e,i.selfIndex,t.length+1)),i.referencedBySelf=!0):e.argumentToPureFunction&&(i.argumentToPureFunction=!0),i):(n&&r.push(e.selfIndex),t.push(e),e)}function a(e,t,r){return t.find(function(t){return-1==r.indexOf(t.selfIndex)&&t.mode!==g.RecordType.DirectiveLifecycle&&u(t,e)&&t.mode===e.mode&&f.looseIdentical(t.funcOrValue,e.funcOrValue)&&t.contextIndex===e.contextIndex&&f.looseIdentical(t.name,e.name)&&h.ListWrapper.equals(t.args,e.args)})}function s(e,t,r){var n=e.args.map(function(e){return c(r,e)}),i=c(r,e.contextIndex),o=t.length+1;return new g.ProtoRecord(e.mode,e.name,e.funcOrValue,n,e.fixedArgs,i,e.directiveIndex,o,e.bindingRecord,e.lastInBinding,e.lastInDirective,e.argumentToPureFunction,e.referencedBySelf,e.propertyBindingIndex)}function c(e,t){var r=e.get(t);return f.isPresent(r)?r:t}function l(e,t,r){return new g.ProtoRecord(g.RecordType.Self,"self",null,[],e.fixedArgs,t,e.directiveIndex,r,e.bindingRecord,e.lastInBinding,e.lastInDirective,!1,!1,e.propertyBindingIndex)}function u(e,t){var r=f.isBlank(e.directiveIndex)?null:e.directiveIndex.directiveIndex,n=f.isBlank(e.directiveIndex)?null:e.directiveIndex.elementIndex,i=f.isBlank(t.directiveIndex)?null:t.directiveIndex.directiveIndex,o=f.isBlank(t.directiveIndex)?null:t.directiveIndex.elementIndex;return r===i&&n===o}var p=System.global,d=p.define;p.define=void 0;var f=e("angular2/src/facade/lang"),h=e("angular2/src/facade/collection"),g=e("angular2/src/core/change_detection/proto_record");return t.coalesce=n,p.define=d,r.exports}),System.register("angular2/src/core/change_detection/codegen_name_util",["angular2/src/facade/lang","angular2/src/facade/collection"],!0,function(e,t,r){function n(e){return a.StringWrapper.replaceAll(e,v,"")}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/facade/lang"),s=e("angular2/src/facade/collection"),c="state",l="propertyBindingIndex",u="directiveIndices",p="dispatcher",d="locals",f="mode",h="pipes",g="protos";t.CONTEXT_ACCESSOR="context",t.CONTEXT_INDEX=0;var m="this.",v=/\W/g;t.sanitizeName=n;var y=function(){function e(e,r,i,o){this._records=e,this._eventBindings=r,this._directiveRecords=i,this._utilName=o,this._sanitizedEventNames=new s.Map,this._sanitizedNames=s.ListWrapper.createFixedSize(this._records.length+1),this._sanitizedNames[t.CONTEXT_INDEX]=t.CONTEXT_ACCESSOR;for(var a=0,c=this._records.length;c>a;++a)this._sanitizedNames[a+1]=n(""+this._records[a].name+a);for(var l=0;l<r.length;++l){for(var u=r[l],p=[t.CONTEXT_ACCESSOR],a=0,c=u.records.length;c>a;++a)p.push(n(""+u.records[a].name+a+"_"+l));this._sanitizedEventNames.set(u,p)}}return e.prototype._addFieldPrefix=function(e){return""+m+e},e.prototype.getDispatcherName=function(){return this._addFieldPrefix(p)},e.prototype.getPipesAccessorName=function(){return this._addFieldPrefix(h)},e.prototype.getProtosName=function(){return this._addFieldPrefix(g)},e.prototype.getDirectivesAccessorName=function(){return this._addFieldPrefix(u)},e.prototype.getLocalsAccessorName=function(){return this._addFieldPrefix(d)},e.prototype.getStateName=function(){return this._addFieldPrefix(c)},e.prototype.getModeName=function(){return this._addFieldPrefix(f)},e.prototype.getPropertyBindingIndex=function(){return this._addFieldPrefix(l)},e.prototype.getLocalName=function(e){return"l_"+this._sanitizedNames[e]},e.prototype.getEventLocalName=function(e,t){return"l_"+this._sanitizedEventNames.get(e)[t]},e.prototype.getChangeName=function(e){return"c_"+this._sanitizedNames[e]},e.prototype.genInitLocals=function(){for(var e=[],r=[],n=0,i=this.getFieldCount();i>n;++n)if(n==t.CONTEXT_INDEX)e.push(this.getLocalName(n)+" = "+this.getFieldName(n));else{var o=this._records[n-1];if(o.argumentToPureFunction){var a=this.getChangeName(n);e.push(this.getLocalName(n)+","+a),r.push(a)}else e.push(""+this.getLocalName(n))}var c=s.ListWrapper.isEmpty(r)?"":r.join("=")+" = false;";return"var "+e.join(",")+";"+c},e.prototype.genInitEventLocals=function(){var e=this,r=[this.getLocalName(t.CONTEXT_INDEX)+" = "+this.getFieldName(t.CONTEXT_INDEX)];return this._sanitizedEventNames.forEach(function(n,i){for(var o=0;o<n.length;++o)o!==t.CONTEXT_INDEX&&r.push(""+e.getEventLocalName(i,o))}),r.length>1?"var "+r.join(",")+";":""},e.prototype.getPreventDefaultAccesor=function(){return"preventDefault"},e.prototype.getFieldCount=function(){return this._sanitizedNames.length},e.prototype.getFieldName=function(e){return this._addFieldPrefix(this._sanitizedNames[e])},e.prototype.getAllFieldNames=function(){for(var e=[],t=0,r=this.getFieldCount();r>t;++t)(0===t||this._records[t-1].shouldBeChecked())&&e.push(this.getFieldName(t));for(var n=0,i=this._records.length;i>n;++n){var o=this._records[n];o.isPipeRecord()&&e.push(this.getPipeName(o.selfIndex))}for(var a=0,s=this._directiveRecords.length;s>a;++a){var c=this._directiveRecords[a];e.push(this.getDirectiveName(c.directiveIndex)),c.isDefaultChangeDetection()||e.push(this.getDetectorName(c.directiveIndex))}return e},e.prototype.genDehydrateFields=function(){var e=this.getAllFieldNames();return s.ListWrapper.removeAt(e,t.CONTEXT_INDEX),s.ListWrapper.isEmpty(e)?"":(e.push(this._utilName+".uninitialized;"),e.join(" = "))},e.prototype.genPipeOnDestroy=function(){var e=this;return this._records.filter(function(e){return e.isPipeRecord()}).map(function(t){return e._utilName+".callPipeOnDestroy("+e.getPipeName(t.selfIndex)+");"}).join("\n")},e.prototype.getPipeName=function(e){return this._addFieldPrefix(this._sanitizedNames[e]+"_pipe")},e.prototype.getDirectiveName=function(e){return this._addFieldPrefix("directive_"+e.name)},e.prototype.getDetectorName=function(e){return this._addFieldPrefix("detector_"+e.name)},e}();return t.CodegenNameUtil=y,i.define=o,r.exports}),System.register("angular2/src/core/change_detection/codegen_facade",[],!0,function(e,t,r){function n(e){return JSON.stringify(e)}function i(e){return"'"+e+"'"}function o(e){return e.join(" + ")}var a=System.global,s=a.define;return a.define=void 0,t.codify=n,t.rawString=i,t.combineGeneratedStrings=o,a.define=s,r.exports}),System.register("angular2/src/core/metadata/view",["angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang");!function(e){e[e.Emulated=0]="Emulated",e[e.Native=1]="Native",e[e.None=2]="None"}(t.ViewEncapsulation||(t.ViewEncapsulation={}));var c=t.ViewEncapsulation;t.VIEW_ENCAPSULATION_VALUES=[c.Emulated,c.Native,c.None];var l=function(){function e(e){var t=void 0===e?{}:e,r=t.templateUrl,n=t.template,i=t.directives,o=t.pipes,a=t.encapsulation,s=t.styles,c=t.styleUrls;this.templateUrl=r,this.template=n,this.styleUrls=c,this.styles=s,this.directives=i,this.pipes=o,this.encapsulation=a}return e=o([s.CONST(),a("design:paramtypes",[Object])],e)}();return t.ViewMetadata=l,n.define=i,r.exports}),System.register("angular2/src/core/util",["angular2/src/core/util/decorators"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/util/decorators");return t.Class=o.Class,n.define=i,r.exports}),System.register("angular2/src/core/prod_mode",["angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang");return t.enableProdMode=o.enableProdMode,n.define=i,r.exports}),System.register("angular2/src/facade/facade",["angular2/src/facade/lang","angular2/src/facade/async","angular2/src/facade/exceptions","angular2/src/facade/exception_handler"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang");t.Type=o.Type;var a=e("angular2/src/facade/async");t.EventEmitter=a.EventEmitter;var s=e("angular2/src/facade/exceptions");t.WrappedException=s.WrappedException;var c=e("angular2/src/facade/exception_handler");return t.ExceptionHandler=c.ExceptionHandler,n.define=i,r.exports}),System.register("angular2/src/core/application_tokens",["angular2/src/core/di","angular2/src/facade/lang"],!0,function(e,t,r){function n(){return""+i()+i()+i()}function i(){return c.StringWrapper.fromCharCode(97+c.Math.floor(25*c.Math.random()))}var o=System.global,a=o.define;o.define=void 0;var s=e("angular2/src/core/di"),c=e("angular2/src/facade/lang");return t.APP_COMPONENT_REF_PROMISE=c.CONST_EXPR(new s.OpaqueToken("Promise<ComponentRef>")),t.APP_COMPONENT=c.CONST_EXPR(new s.OpaqueToken("AppComponent")),t.APP_ID=c.CONST_EXPR(new s.OpaqueToken("AppId")),t.APP_ID_RANDOM_PROVIDER=c.CONST_EXPR(new s.Provider(t.APP_ID,{useFactory:n,deps:[]})),t.PLATFORM_INITIALIZER=c.CONST_EXPR(new s.OpaqueToken("Platform Initializer")),t.APP_INITIALIZER=c.CONST_EXPR(new s.OpaqueToken("Application Initializer")),t.PACKAGE_ROOT_URL=c.CONST_EXPR(new s.OpaqueToken("Application Packages Root URL")),o.define=a,r.exports}),System.register("angular2/src/core/testability/testability",["angular2/src/core/di","angular2/src/facade/collection","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/core/zone/ng_zone","angular2/src/facade/async"],!0,function(e,t,r){function n(e){v=e}var i=System.global,o=i.define;i.define=void 0;var a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/core/di"),l=e("angular2/src/facade/collection"),u=e("angular2/src/facade/lang"),p=e("angular2/src/facade/exceptions"),d=e("angular2/src/core/zone/ng_zone"),f=e("angular2/src/facade/async"),h=function(){function e(e){this._ngZone=e,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this._watchAngularEvents()}return e.prototype._watchAngularEvents=function(){var e=this;f.ObservableWrapper.subscribe(this._ngZone.onUnstable,function(t){e._didWork=!0,e._isZoneStable=!1}),this._ngZone.runOutsideAngular(function(){f.ObservableWrapper.subscribe(e._ngZone.onStable,function(t){d.NgZone.assertNotInAngularZone(),u.scheduleMicroTask(function(){e._isZoneStable=!0,e._runCallbacksIfReady()})})})},e.prototype.increasePendingRequestCount=function(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount},e.prototype.decreasePendingRequestCount=function(){if(this._pendingCount-=1,this._pendingCount<0)throw new p.BaseException("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount},e.prototype.isStable=function(){return this._isZoneStable&&0==this._pendingCount&&!this._ngZone.hasPendingMacrotasks},e.prototype._runCallbacksIfReady=function(){var e=this;this.isStable()?u.scheduleMicroTask(function(){for(;0!==e._callbacks.length;)e._callbacks.pop()(e._didWork);e._didWork=!1}):this._didWork=!0},e.prototype.whenStable=function(e){this._callbacks.push(e),this._runCallbacksIfReady()},e.prototype.getPendingRequestCount=function(){return this._pendingCount},e.prototype.findBindings=function(e,t,r){return[]},e.prototype.findProviders=function(e,t,r){return[]},e=a([c.Injectable(),s("design:paramtypes",[d.NgZone])],e)}();t.Testability=h;var g=function(){function e(){this._applications=new l.Map,v.addToWindow(this)}return e.prototype.registerApplication=function(e,t){this._applications.set(e,t)},e.prototype.getTestability=function(e){return this._applications.get(e)},e.prototype.getAllTestabilities=function(){return l.MapWrapper.values(this._applications)},e.prototype.getAllRootElements=function(){return l.MapWrapper.keys(this._applications)},e.prototype.findTestabilityInTree=function(e,t){return void 0===t&&(t=!0),v.findTestabilityInTree(this,e,t)},e=a([c.Injectable(),s("design:paramtypes",[])],e)}();t.TestabilityRegistry=g;var m=function(){function e(){}return e.prototype.addToWindow=function(e){},e.prototype.findTestabilityInTree=function(e,t,r){return null},e=a([u.CONST(),s("design:paramtypes",[])],e)}();t.setTestabilityGetter=n;var v=u.CONST_EXPR(new m);return i.define=o,r.exports}),System.register("angular2/src/core/linker/view_type",[],!0,function(e,t,r){var n=System.global,i=n.define;return n.define=void 0,function(e){e[e.HOST=0]="HOST",e[e.COMPONENT=1]="COMPONENT",e[e.EMBEDDED=2]="EMBEDDED"}(t.ViewType||(t.ViewType={})),t.ViewType,n.define=i,r.exports}),System.register("angular2/src/core/linker/element_ref",["angular2/src/facade/exceptions"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/exceptions"),a=function(){function e(){}return Object.defineProperty(e.prototype,"nativeElement",{get:function(){return o.unimplemented()},enumerable:!0,configurable:!0}),e}();t.ElementRef=a;var s=function(){function e(e){this._appElement=e}return Object.defineProperty(e.prototype,"internalElement",{get:function(){return this._appElement},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nativeElement",{get:function(){return this._appElement.nativeElement},enumerable:!0,configurable:!0}),e}();return t.ElementRef_=s,n.define=i,r.exports}),System.register("angular2/src/core/linker/view_container_ref",["angular2/src/facade/collection","angular2/src/facade/exceptions","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/facade/collection"),s=e("angular2/src/facade/exceptions"),c=e("angular2/src/facade/lang"),l=function(){function e(){}return Object.defineProperty(e.prototype,"element",{get:function(){return s.unimplemented()},enumerable:!0,configurable:!0}),e.prototype.clear=function(){for(var e=this.length-1;e>=0;e--)this.remove(e)},Object.defineProperty(e.prototype,"length",{get:function(){return s.unimplemented()},enumerable:!0,configurable:!0}),e}();t.ViewContainerRef=l;var u=function(e){function t(t){e.call(this),this._element=t}return o(t,e),t.prototype.get=function(e){return this._element.nestedViews[e].ref},Object.defineProperty(t.prototype,"length",{get:function(){var e=this._element.nestedViews;return c.isPresent(e)?e.length:0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"element",{get:function(){return this._element.ref},enumerable:!0,configurable:!0}),t.prototype.createEmbeddedView=function(e,t){void 0===t&&(t=-1),-1==t&&(t=this.length);var r=this._element.parentView.viewManager;return r.createEmbeddedViewInContainer(this._element.ref,t,e)},t.prototype.createHostView=function(e,t,r,n){void 0===t&&(t=-1),void 0===r&&(r=null),void 0===n&&(n=null),-1==t&&(t=this.length);var i=this._element.parentView.viewManager;return i.createHostViewInContainer(this._element.ref,t,e,r,n)},t.prototype.insert=function(e,t){void 0===t&&(t=-1),-1==t&&(t=this.length);var r=this._element.parentView.viewManager;return r.attachViewInContainer(this._element.ref,t,e)},t.prototype.indexOf=function(e){return a.ListWrapper.indexOf(this._element.nestedViews,e.internalView)},t.prototype.remove=function(e){void 0===e&&(e=-1),-1==e&&(e=this.length-1);var t=this._element.parentView.viewManager;return t.destroyViewInContainer(this._element.ref,e)},t.prototype.detach=function(e){void 0===e&&(e=-1),-1==e&&(e=this.length-1);var t=this._element.parentView.viewManager;return t.detachViewInContainer(this._element.ref,e)},t}(l);return t.ViewContainerRef_=u,n.define=i,r.exports}),System.register("angular2/src/core/render/api",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=function(){function e(e,t,r){this.id=e,this.encapsulation=t,this.styles=r}return e}();t.RenderComponentType=o;var a=function(){function e(e,t,r,n){this.injector=e,this.component=t,this.providerTokens=r,this.locals=n}return e}();t.RenderDebugInfo=a;var s=function(){function e(){}return e}();t.Renderer=s;var c=function(){function e(){}return e}();return t.RootRenderer=c,n.define=i,r.exports}),System.register("angular2/src/core/linker/template_ref",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=function(){function e(){}return Object.defineProperty(e.prototype,"elementRef",{get:function(){return null},enumerable:!0,configurable:!0}),e}();t.TemplateRef=a;var s=function(e){function t(t){e.call(this),this._elementRef=t}return o(t,e),Object.defineProperty(t.prototype,"elementRef",{get:function(){return this._elementRef},enumerable:!0,configurable:!0}),t}(a);return t.TemplateRef_=s,n.define=i,r.exports}),System.register("angular2/src/core/linker/query_list",["angular2/src/facade/collection","angular2/src/facade/lang","angular2/src/facade/async"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/collection"),a=e("angular2/src/facade/lang"),s=e("angular2/src/facade/async"),c=function(){function e(){this._results=[],this._emitter=new s.EventEmitter}return Object.defineProperty(e.prototype,"changes",{get:function(){return this._emitter},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"length",{get:function(){return this._results.length},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"first",{get:function(){return o.ListWrapper.first(this._results)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"last",{get:function(){return o.ListWrapper.last(this._results)},enumerable:!0,configurable:!0}),e.prototype.map=function(e){return this._results.map(e)},e.prototype.filter=function(e){return this._results.filter(e)},e.prototype.reduce=function(e,t){return this._results.reduce(e,t)},e.prototype.forEach=function(e){this._results.forEach(e)},e.prototype.toArray=function(){return o.ListWrapper.clone(this._results)},e.prototype[a.getSymbolIterator()]=function(){return this._results[a.getSymbolIterator()]()},e.prototype.toString=function(){return this._results.toString()},e.prototype.reset=function(e){this._results=e},e.prototype.notifyOnChanges=function(){this._emitter.emit(this)},e}();return t.QueryList=c,n.define=i,r.exports}),System.register("angular2/src/core/pipes/pipe_provider",["angular2/src/core/di/provider","angular2/src/core/di"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/core/di/provider"),s=e("angular2/src/core/di"),c=function(e){function t(t,r,n,i,o){e.call(this,n,i,o),this.name=t,this.pure=r}return o(t,e),t.createFromType=function(e,r){var n=new s.Provider(e,{useClass:e}),i=a.resolveProvider(n);return new t(r.name,r.pure,i.key,i.resolvedFactories,i.multiProvider)},t}(a.ResolvedProvider_);return t.PipeProvider=c,n.define=i,r.exports}),System.register("angular2/src/core/linker/view_ref",["angular2/src/facade/exceptions"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/facade/exceptions"),s=function(){function e(){}return Object.defineProperty(e.prototype,"changeDetectorRef",{get:function(){return a.unimplemented()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"destroyed",{get:function(){return a.unimplemented()},enumerable:!0,configurable:!0}),e}();t.ViewRef=s;var c=function(e){function t(){e.apply(this,arguments)}return o(t,e),Object.defineProperty(t.prototype,"rootNodes",{get:function(){return a.unimplemented()},enumerable:!0,configurable:!0}),t}(s);t.HostViewRef=c;var l=function(e){function t(){e.apply(this,arguments)}return o(t,e),Object.defineProperty(t.prototype,"rootNodes",{get:function(){return a.unimplemented()},enumerable:!0,configurable:!0}),t}(s);t.EmbeddedViewRef=l;var u=function(){function e(e){this._view=e,this._view=e}return Object.defineProperty(e.prototype,"internalView",{get:function(){return this._view},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"changeDetectorRef",{get:function(){return this._view.changeDetector.ref},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rootNodes",{get:function(){return this._view.flatRootNodes},enumerable:!0,configurable:!0}),e.prototype.setLocal=function(e,t){this._view.setLocal(e,t)},e.prototype.hasLocal=function(e){return this._view.hasLocal(e)},Object.defineProperty(e.prototype,"destroyed",{get:function(){return this._view.destroyed},enumerable:!0,configurable:!0}),e}();t.ViewRef_=u;var p=function(){function e(){}return e}();t.HostViewFactoryRef=p;var d=function(){function e(e){this._hostViewFactory=e}return Object.defineProperty(e.prototype,"internalHostViewFactory",{get:function(){return this._hostViewFactory},enumerable:!0,configurable:!0}),e}();return t.HostViewFactoryRef_=d,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/pipes",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=function(){function e(e,t){this.pipe=e,this.pure=t}return e}();return t.SelectedPipe=o,n.define=i,r.exports}),System.register("angular2/src/core/render/util",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e){return s.StringWrapper.replaceAllMapped(e,c,function(e){return"-"+e[1].toLowerCase()})}function i(e){return s.StringWrapper.replaceAllMapped(e,l,function(e){return e[1].toUpperCase()})}var o=System.global,a=o.define;o.define=void 0;var s=e("angular2/src/facade/lang"),c=/([A-Z])/g,l=/-([a-z])/g;return t.camelCaseToDashCase=n,t.dashCaseToCamelCase=i,o.define=a,r.exports}),System.register("angular2/src/core/linker/view_manager",["angular2/src/core/di","angular2/src/facade/lang","angular2/src/facade/collection","angular2/src/facade/exceptions","angular2/src/core/linker/view","angular2/src/core/render/api","angular2/src/core/profile/profile","angular2/src/core/application_tokens","angular2/src/core/linker/view_type"],!0,function(e,t,r){
var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},l=e("angular2/src/core/di"),u=e("angular2/src/facade/lang"),p=e("angular2/src/facade/collection"),d=e("angular2/src/facade/exceptions"),f=e("angular2/src/core/linker/view"),h=e("angular2/src/core/render/api"),g=e("angular2/src/core/profile/profile"),m=e("angular2/src/core/application_tokens"),v=e("angular2/src/core/linker/view_type"),y=function(){function e(){}return e}();t.AppViewManager=y;var _=function(e){function t(t,r){e.call(this),this._renderer=t,this._appId=r,this._nextCompTypeId=0,this._createRootHostViewScope=g.wtfCreateScope("AppViewManager#createRootHostView()"),this._destroyRootHostViewScope=g.wtfCreateScope("AppViewManager#destroyRootHostView()"),this._createEmbeddedViewInContainerScope=g.wtfCreateScope("AppViewManager#createEmbeddedViewInContainer()"),this._createHostViewInContainerScope=g.wtfCreateScope("AppViewManager#createHostViewInContainer()"),this._destroyViewInContainerScope=g.wtfCreateScope("AppViewMananger#destroyViewInContainer()"),this._attachViewInContainerScope=g.wtfCreateScope("AppViewMananger#attachViewInContainer()"),this._detachViewInContainerScope=g.wtfCreateScope("AppViewMananger#detachViewInContainer()")}return o(t,e),t.prototype.getViewContainer=function(e){return e.internalElement.getViewContainerRef()},t.prototype.getHostElement=function(e){var t=e.internalView;if(t.proto.type!==v.ViewType.HOST)throw new d.BaseException("This operation is only allowed on host views");return t.appElements[0].ref},t.prototype.getNamedElementInComponentView=function(e,t){var r=e.internalElement,n=r.componentView;if(u.isBlank(n))throw new d.BaseException("There is no component directive at element "+e);for(var i=0;i<n.appElements.length;i++){var o=n.appElements[i];if(p.StringMapWrapper.contains(o.proto.directiveVariableBindings,t))return o.ref}throw new d.BaseException("Could not find variable "+t)},t.prototype.getComponent=function(e){return e.internalElement.getComponent()},t.prototype.createRootHostView=function(e,t,r,n){void 0===n&&(n=null);var i=this._createRootHostViewScope(),o=e.internalHostViewFactory,a=u.isPresent(t)?t:o.selector,s=o.viewFactory(this._renderer,this,null,n,a,null,r);return g.wtfLeave(i,s.ref)},t.prototype.destroyRootHostView=function(e){var t=this._destroyRootHostViewScope(),r=e.internalView;r.renderer.detachView(f.flattenNestedViewRenderNodes(r.rootNodesOrAppElements)),r.destroy(),g.wtfLeave(t)},t.prototype.createEmbeddedViewInContainer=function(e,t,r){var n=this._createEmbeddedViewInContainerScope(),i=r.elementRef.internalElement,o=i.embeddedViewFactory(i.parentView.renderer,this,i,i.parentView.projectableNodes,null,null,null);return this._attachViewToContainer(o,e.internalElement,t),g.wtfLeave(n,o.ref)},t.prototype.createHostViewInContainer=function(e,t,r,n,i){var o=this._createHostViewInContainerScope(),a=e,s=a.internalElement,c=r.internalHostViewFactory,l=c.viewFactory(s.parentView.renderer,s.parentView.viewManager,s,i,null,n,null);return this._attachViewToContainer(l,a.internalElement,t),g.wtfLeave(o,l.ref)},t.prototype.destroyViewInContainer=function(e,t){var r=this._destroyViewInContainerScope(),n=this._detachViewInContainer(e.internalElement,t);n.destroy(),g.wtfLeave(r)},t.prototype.attachViewInContainer=function(e,t,r){var n=r,i=this._attachViewInContainerScope();return this._attachViewToContainer(n.internalView,e.internalElement,t),g.wtfLeave(i,n)},t.prototype.detachViewInContainer=function(e,t){var r=this._detachViewInContainerScope(),n=this._detachViewInContainer(e.internalElement,t);return g.wtfLeave(r,n.ref)},t.prototype.onViewCreated=function(e){},t.prototype.onViewDestroyed=function(e){},t.prototype.createRenderComponentType=function(e,t){return new h.RenderComponentType(this._appId+"-"+this._nextCompTypeId++,e,t)},t.prototype._attachViewToContainer=function(e,t,r){if(e.proto.type===v.ViewType.COMPONENT)throw new d.BaseException("Component views can't be moved!");var n=t.nestedViews;null==n&&(n=[],t.nestedViews=n),p.ListWrapper.insert(n,r,e);var i;if(r>0){var o=n[r-1];i=o.rootNodesOrAppElements.length>0?o.rootNodesOrAppElements[o.rootNodesOrAppElements.length-1]:null}else i=t.nativeElement;if(u.isPresent(i)){var a=f.findLastRenderNode(i);e.renderer.attachViewAfter(a,f.flattenNestedViewRenderNodes(e.rootNodesOrAppElements))}t.parentView.changeDetector.addContentChild(e.changeDetector),t.traverseAndSetQueriesAsDirty()},t.prototype._detachViewInContainer=function(e,t){var r=p.ListWrapper.removeAt(e.nestedViews,t);if(r.proto.type===v.ViewType.COMPONENT)throw new d.BaseException("Component views can't be moved!");return e.traverseAndSetQueriesAsDirty(),r.renderer.detachView(f.flattenNestedViewRenderNodes(r.rootNodesOrAppElements)),r.changeDetector.remove(),r},t=a([l.Injectable(),c(1,l.Inject(m.APP_ID)),s("design:paramtypes",[h.RootRenderer,String])],t)}(y);return t.AppViewManager_=_,n.define=i,r.exports}),System.register("angular2/src/core/console",["angular2/src/core/di","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/core/di"),c=e("angular2/src/facade/lang"),l=function(){function e(){}return e.prototype.log=function(e){c.print(e)},e=o([s.Injectable(),a("design:paramtypes",[])],e)}();return t.Console=l,n.define=i,r.exports}),System.register("angular2/src/core/zone",["angular2/src/core/zone/ng_zone"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/zone/ng_zone");return t.NgZone=o.NgZone,t.NgZoneError=o.NgZoneError,n.define=i,r.exports}),System.register("angular2/src/core/render",["angular2/src/core/render/api"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/render/api");return t.RootRenderer=o.RootRenderer,t.Renderer=o.Renderer,t.RenderComponentType=o.RenderComponentType,n.define=i,r.exports}),System.register("angular2/src/core/linker/directive_resolver",["angular2/src/core/di","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/metadata","angular2/src/core/reflection/reflection"],!0,function(e,t,r){function n(e){return e instanceof d.DirectiveMetadata}var i=System.global,o=i.define;i.define=void 0;var a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/core/di"),l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/exceptions"),p=e("angular2/src/facade/collection"),d=e("angular2/src/core/metadata"),f=e("angular2/src/core/reflection/reflection"),h=function(){function e(){}return e.prototype.resolve=function(e){var t=f.reflector.annotations(c.resolveForwardRef(e));if(l.isPresent(t)){var r=t.find(n);if(l.isPresent(r)){var i=f.reflector.propMetadata(e);return this._mergeWithPropertyMetadata(r,i,e)}}throw new u.BaseException("No Directive annotation found on "+l.stringify(e))},e.prototype._mergeWithPropertyMetadata=function(e,t,r){var n=[],i=[],o={},a={};return p.StringMapWrapper.forEach(t,function(e,t){e.forEach(function(e){if(e instanceof d.InputMetadata&&(l.isPresent(e.bindingPropertyName)?n.push(t+": "+e.bindingPropertyName):n.push(t)),e instanceof d.OutputMetadata&&(l.isPresent(e.bindingPropertyName)?i.push(t+": "+e.bindingPropertyName):i.push(t)),e instanceof d.HostBindingMetadata&&(l.isPresent(e.hostPropertyName)?o["["+e.hostPropertyName+"]"]=t:o["["+t+"]"]=t),e instanceof d.HostListenerMetadata){var r=l.isPresent(e.args)?e.args.join(", "):"";o["("+e.eventName+")"]=t+"("+r+")"}e instanceof d.ContentChildrenMetadata&&(a[t]=e),e instanceof d.ViewChildrenMetadata&&(a[t]=e),e instanceof d.ContentChildMetadata&&(a[t]=e),e instanceof d.ViewChildMetadata&&(a[t]=e)})}),this._merge(e,n,i,o,a,r)},e.prototype._merge=function(e,t,r,n,i,o){var a,s=l.isPresent(e.inputs)?p.ListWrapper.concat(e.inputs,t):t;l.isPresent(e.outputs)?(e.outputs.forEach(function(e){if(p.ListWrapper.contains(r,e))throw new u.BaseException("Output event '"+e+"' defined multiple times in '"+l.stringify(o)+"'")}),a=p.ListWrapper.concat(e.outputs,r)):a=r;var c=l.isPresent(e.host)?p.StringMapWrapper.merge(e.host,n):n,f=l.isPresent(e.queries)?p.StringMapWrapper.merge(e.queries,i):i;return e instanceof d.ComponentMetadata?new d.ComponentMetadata({selector:e.selector,inputs:s,outputs:a,host:c,exportAs:e.exportAs,moduleId:e.moduleId,queries:f,changeDetection:e.changeDetection,providers:e.providers,viewProviders:e.viewProviders}):new d.DirectiveMetadata({selector:e.selector,inputs:s,outputs:a,host:c,exportAs:e.exportAs,queries:f,providers:e.providers})},e=a([c.Injectable(),s("design:paramtypes",[])],e)}();return t.DirectiveResolver=h,t.CODEGEN_DIRECTIVE_RESOLVER=new h,i.define=o,r.exports}),System.register("angular2/src/core/linker/view_resolver",["angular2/src/core/di","angular2/src/core/metadata/view","angular2/src/core/metadata/directives","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/reflection/reflection"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/core/di"),c=e("angular2/src/core/metadata/view"),l=e("angular2/src/core/metadata/directives"),u=e("angular2/src/facade/lang"),p=e("angular2/src/facade/exceptions"),d=e("angular2/src/facade/collection"),f=e("angular2/src/core/reflection/reflection"),h=function(){function e(){this._cache=new d.Map}return e.prototype.resolve=function(e){var t=this._cache.get(e);return u.isBlank(t)&&(t=this._resolve(e),this._cache.set(e,t)),t},e.prototype._resolve=function(e){var t,r;if(f.reflector.annotations(e).forEach(function(e){e instanceof c.ViewMetadata&&(r=e),e instanceof l.ComponentMetadata&&(t=e)}),!u.isPresent(t)){if(u.isBlank(r))throw new p.BaseException("Could not compile '"+u.stringify(e)+"' because it is not a component.");return r}if(u.isBlank(t.template)&&u.isBlank(t.templateUrl)&&u.isBlank(r))throw new p.BaseException("Component '"+u.stringify(e)+"' must have either 'template' or 'templateUrl' set.");if(u.isPresent(t.template)&&u.isPresent(r))this._throwMixingViewAndComponent("template",e);else if(u.isPresent(t.templateUrl)&&u.isPresent(r))this._throwMixingViewAndComponent("templateUrl",e);else if(u.isPresent(t.directives)&&u.isPresent(r))this._throwMixingViewAndComponent("directives",e);else if(u.isPresent(t.pipes)&&u.isPresent(r))this._throwMixingViewAndComponent("pipes",e);else if(u.isPresent(t.encapsulation)&&u.isPresent(r))this._throwMixingViewAndComponent("encapsulation",e);else if(u.isPresent(t.styles)&&u.isPresent(r))this._throwMixingViewAndComponent("styles",e);else{if(!u.isPresent(t.styleUrls)||!u.isPresent(r))return u.isPresent(r)?r:new c.ViewMetadata({templateUrl:t.templateUrl,template:t.template,directives:t.directives,pipes:t.pipes,encapsulation:t.encapsulation,styles:t.styles,styleUrls:t.styleUrls});this._throwMixingViewAndComponent("styleUrls",e)}return null},e.prototype._throwMixingViewAndComponent=function(e,t){throw new p.BaseException("Component '"+u.stringify(t)+"' cannot have both '"+e+"' and '@View' set at the same time\"")},e=o([s.Injectable(),a("design:paramtypes",[])],e)}();return t.ViewResolver=h,n.define=i,r.exports}),System.register("angular2/src/core/debug/debug_node",["angular2/src/facade/lang","angular2/src/facade/collection"],!0,function(e,t,r){function n(e){return e.map(function(e){return e.nativeElement})}function i(e,t,r){e.childNodes.forEach(function(e){e instanceof v&&(t(e)&&r.push(e),i(e,t,r))})}function o(e,t,r){e instanceof v&&e.childNodes.forEach(function(e){t(e)&&r.push(e),e instanceof v&&o(e,t,r)})}function a(e){return y.get(e)}function s(){return h.MapWrapper.values(y)}function c(e){y.set(e.nativeNode,e)}function l(e){y["delete"](e.nativeNode)}var u=System.global,p=u.define;u.define=void 0;var d=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},f=e("angular2/src/facade/lang"),h=e("angular2/src/facade/collection"),g=function(){function e(e,t){this.name=e,this.callback=t}return e}();t.EventListener=g;var m=function(){function e(e,t){this.nativeNode=e,f.isPresent(t)&&t instanceof v?t.addChild(this):this.parent=null,this.listeners=[],this.providerTokens=[]}return e.prototype.setDebugInfo=function(e){this.injector=e.injector,this.providerTokens=e.providerTokens,this.locals=e.locals,this.componentInstance=e.component},e.prototype.inject=function(e){return this.injector.get(e)},e.prototype.getLocal=function(e){return this.locals.get(e)},e}();t.DebugNode=m;var v=function(e){function t(t,r){e.call(this,t,r),this.properties=new Map,this.attributes=new Map,this.childNodes=[],this.nativeElement=t}return d(t,e),t.prototype.addChild=function(e){f.isPresent(e)&&(this.childNodes.push(e),e.parent=this)},t.prototype.removeChild=function(e){var t=this.childNodes.indexOf(e);-1!==t&&(e.parent=null,this.childNodes.splice(t,1))},t.prototype.insertChildrenAfter=function(e,t){var r=this.childNodes.indexOf(e);if(-1!==r){var n=this.childNodes.slice(0,r+1),i=this.childNodes.slice(r+1);this.childNodes=h.ListWrapper.concat(h.ListWrapper.concat(n,t),i);for(var o=0;o<t.length;++o){var a=t[o];f.isPresent(a.parent)&&a.parent.removeChild(a),a.parent=this}}},t.prototype.query=function(e){var t=this.queryAll(e);return t.length>0?t[0]:null},t.prototype.queryAll=function(e){var t=[];return i(this,e,t),t},t.prototype.queryAllNodes=function(e){var t=[];return o(this,e,t),t},Object.defineProperty(t.prototype,"children",{get:function(){var e=[];return this.childNodes.forEach(function(r){r instanceof t&&e.push(r)}),e},enumerable:!0,configurable:!0}),t.prototype.triggerEventHandler=function(e,t){this.listeners.forEach(function(r){r.name==e&&r.callback(t)})},t}(m);t.DebugElement=v,t.asNativeElements=n;var y=new Map;return t.getDebugNode=a,t.getAllDebugNodes=s,t.indexDebugNode=c,t.removeDebugNodeFromIndex=l,u.define=p,r.exports}),System.register("angular2/src/core/platform_directives_and_pipes",["angular2/src/core/di","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/di"),a=e("angular2/src/facade/lang");return t.PLATFORM_DIRECTIVES=a.CONST_EXPR(new o.OpaqueToken("Platform Directives")),t.PLATFORM_PIPES=a.CONST_EXPR(new o.OpaqueToken("Platform Pipes")),n.define=i,r.exports}),System.register("angular2/src/core/platform_common_providers",["angular2/src/facade/lang","angular2/src/core/di","angular2/src/core/console","angular2/src/core/reflection/reflection","angular2/src/core/testability/testability"],!0,function(e,t,r){function n(){return l.reflector}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/facade/lang"),s=e("angular2/src/core/di"),c=e("angular2/src/core/console"),l=e("angular2/src/core/reflection/reflection"),u=e("angular2/src/core/testability/testability");return t.PLATFORM_COMMON_PROVIDERS=a.CONST_EXPR([new s.Provider(l.Reflector,{useFactory:n,deps:[]}),u.TestabilityRegistry,c.Console]),i.define=o,r.exports}),System.register("angular2/src/core/linker/pipe_resolver",["angular2/src/core/di","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/core/metadata","angular2/src/core/reflection/reflection"],!0,function(e,t,r){function n(e){return e instanceof p.PipeMetadata}var i=System.global,o=i.define;i.define=void 0;var a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/core/di"),l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/exceptions"),p=e("angular2/src/core/metadata"),d=e("angular2/src/core/reflection/reflection"),f=function(){function e(){}return e.prototype.resolve=function(e){var t=d.reflector.annotations(c.resolveForwardRef(e));if(l.isPresent(t)){var r=t.find(n);if(l.isPresent(r))return r}throw new u.BaseException("No Pipe decorator found on "+l.stringify(e))},e=a([c.Injectable(),s("design:paramtypes",[])],e)}();return t.PipeResolver=f,t.CODEGEN_PIPE_RESOLVER=new f,i.define=o,r.exports}),System.register("angular2/src/platform/dom/debug/by",["angular2/src/facade/lang","angular2/src/platform/dom/dom_adapter"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/platform/dom/dom_adapter"),s=function(){function e(){}return e.all=function(){return function(e){return!0}},e.css=function(e){return function(t){return o.isPresent(t.nativeElement)?a.DOM.elementMatches(t.nativeElement,e):!1}},e.directive=function(e){return function(t){return-1!==t.providerTokens.indexOf(e)}},e}();return t.By=s,n.define=i,r.exports}),System.register("angular2/src/core/debug/debug_renderer",["angular2/src/facade/lang","angular2/src/core/debug/debug_node"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/core/debug/debug_node"),s=function(){function e(e){this._delegate=e}return e.prototype.renderComponent=function(e){return new c(this,this._delegate.renderComponent(e))},e}();t.DebugDomRootRenderer=s;var c=function(){function e(e,t){this._rootRenderer=e,this._delegate=t}return e.prototype.renderComponent=function(e){return this._rootRenderer.renderComponent(e)},e.prototype.selectRootElement=function(e){var t=this._delegate.selectRootElement(e),r=new a.DebugElement(t,null);return a.indexDebugNode(r),t},e.prototype.createElement=function(e,t){var r=this._delegate.createElement(e,t),n=new a.DebugElement(r,a.getDebugNode(e));return n.name=t,a.indexDebugNode(n),r},e.prototype.createViewRoot=function(e){return this._delegate.createViewRoot(e)},e.prototype.createTemplateAnchor=function(e){var t=this._delegate.createTemplateAnchor(e),r=new a.DebugNode(t,a.getDebugNode(e));return a.indexDebugNode(r),t},e.prototype.createText=function(e,t){var r=this._delegate.createText(e,t),n=new a.DebugNode(r,a.getDebugNode(e));return a.indexDebugNode(n),r},e.prototype.projectNodes=function(e,t){var r=a.getDebugNode(e);return o.isPresent(r)&&r instanceof a.DebugElement&&t.forEach(function(e){r.addChild(a.getDebugNode(e))}),this._delegate.projectNodes(e,t)},e.prototype.attachViewAfter=function(e,t){var r=a.getDebugNode(e);if(o.isPresent(r)){var n=r.parent;if(t.length>0&&o.isPresent(n)){var i=[];t.forEach(function(e){return i.push(a.getDebugNode(e))}),n.insertChildrenAfter(r,i)}}return this._delegate.attachViewAfter(e,t)},e.prototype.detachView=function(e){return e.forEach(function(e){var t=a.getDebugNode(e);o.isPresent(t)&&o.isPresent(t.parent)&&t.parent.removeChild(t)}),this._delegate.detachView(e)},e.prototype.destroyView=function(e,t){return t.forEach(function(e){a.removeDebugNodeFromIndex(a.getDebugNode(e))}),this._delegate.destroyView(e,t)},e.prototype.listen=function(e,t,r){var n=a.getDebugNode(e);return o.isPresent(n)&&n.listeners.push(new a.EventListener(t,r)),this._delegate.listen(e,t,r)},e.prototype.listenGlobal=function(e,t,r){return this._delegate.listenGlobal(e,t,r)},e.prototype.setElementProperty=function(e,t,r){var n=a.getDebugNode(e);return o.isPresent(n)&&n instanceof a.DebugElement&&n.properties.set(t,r),this._delegate.setElementProperty(e,t,r)},e.prototype.setElementAttribute=function(e,t,r){var n=a.getDebugNode(e);return o.isPresent(n)&&n instanceof a.DebugElement&&n.attributes.set(t,r),this._delegate.setElementAttribute(e,t,r)},e.prototype.setBindingDebugInfo=function(e,t,r){return this._delegate.setBindingDebugInfo(e,t,r)},e.prototype.setElementDebugInfo=function(e,t){var r=a.getDebugNode(e);return r.setDebugInfo(t),this._delegate.setElementDebugInfo(e,t)},e.prototype.setElementClass=function(e,t,r){return this._delegate.setElementClass(e,t,r)},e.prototype.setElementStyle=function(e,t,r){return this._delegate.setElementStyle(e,t,r)},e.prototype.invokeElementMethod=function(e,t,r){return this._delegate.invokeElementMethod(e,t,r)},e.prototype.setText=function(e,t){return this._delegate.setText(e,t)},e}();return t.DebugDomRenderer=c,n.define=i,r.exports}),System.register("angular2/src/platform/dom/dom_adapter",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e){a.isBlank(t.DOM)&&(t.DOM=e)}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/facade/lang");t.DOM=null,t.setRootDomAdapter=n;var s=function(){function e(){}return Object.defineProperty(e.prototype,"attrToPropMap",{get:function(){return this._attrToPropMap},set:function(e){this._attrToPropMap=e},enumerable:!0,configurable:!0}),e}();return t.DomAdapter=s,i.define=o,r.exports}),System.register("angular2/src/core/di/decorators",["angular2/src/core/di/metadata","angular2/src/core/util/decorators"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/di/metadata"),a=e("angular2/src/core/util/decorators");return t.Inject=a.makeParamDecorator(o.InjectMetadata),t.Optional=a.makeParamDecorator(o.OptionalMetadata),t.Injectable=a.makeDecorator(o.InjectableMetadata),t.Self=a.makeParamDecorator(o.SelfMetadata),t.Host=a.makeParamDecorator(o.HostMetadata),t.SkipSelf=a.makeParamDecorator(o.SkipSelfMetadata),n.define=i,r.exports}),System.register("angular2/src/facade/exceptions",["angular2/src/facade/base_wrapped_exception","angular2/src/facade/exception_handler","angular2/src/facade/exception_handler"],!0,function(e,t,r){function n(e){return new TypeError(e)}function i(){throw new p("unimplemented")}var o=System.global,a=o.define;o.define=void 0;var s=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},c=e("angular2/src/facade/base_wrapped_exception"),l=e("angular2/src/facade/exception_handler"),u=e("angular2/src/facade/exception_handler");t.ExceptionHandler=u.ExceptionHandler;var p=function(e){function t(t){void 0===t&&(t="--"),e.call(this,t),this.message=t,this.stack=new Error(t).stack}return s(t,e),t.prototype.toString=function(){return this.message},t}(Error);t.BaseException=p;var d=function(e){function t(t,r,n,i){e.call(this,t),this._wrapperMessage=t,this._originalException=r,this._originalStack=n,this._context=i,this._wrapperStack=new Error(t).stack}return s(t,e),Object.defineProperty(t.prototype,"wrapperMessage",{get:function(){return this._wrapperMessage},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"wrapperStack",{get:function(){return this._wrapperStack},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"originalException",{get:function(){return this._originalException},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"originalStack",{get:function(){return this._originalStack},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"context",{get:function(){return this._context},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"message",{get:function(){return l.ExceptionHandler.exceptionToString(this)},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return this.message},t}(c.BaseWrappedException);return t.WrappedException=d,t.makeTypeError=n,t.unimplemented=i,o.define=a,r.exports}),System.register("angular2/src/core/reflection/reflection",["angular2/src/core/reflection/reflector","angular2/src/core/reflection/reflector","angular2/src/core/reflection/reflection_capabilities"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/reflection/reflector"),a=e("angular2/src/core/reflection/reflector");t.Reflector=a.Reflector,t.ReflectionInfo=a.ReflectionInfo;var s=e("angular2/src/core/reflection/reflection_capabilities");return t.reflector=new o.Reflector(new s.ReflectionCapabilities),n.define=i,r.exports}),System.register("angular2/src/animate/animation",["angular2/src/facade/lang","angular2/src/facade/math","angular2/src/platform/dom/util","angular2/src/facade/collection","angular2/src/platform/dom/dom_adapter"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/facade/math"),s=e("angular2/src/platform/dom/util"),c=e("angular2/src/facade/collection"),l=e("angular2/src/platform/dom/dom_adapter"),u=function(){function e(e,t,r){var n=this;this.element=e,this.data=t,this.browserDetails=r,this.callbacks=[],this.eventClearFunctions=[],this.completed=!1,this._stringPrefix="",this.startTime=o.DateWrapper.toMillis(o.DateWrapper.now()),this._stringPrefix=l.DOM.getAnimationPrefix(),this.setup(),this.wait(function(e){return n.start()})}return Object.defineProperty(e.prototype,"totalTime",{get:function(){var e=null!=this.computedDelay?this.computedDelay:0,t=null!=this.computedDuration?this.computedDuration:0;return e+t},enumerable:!0,configurable:!0}),e.prototype.wait=function(e){this.browserDetails.raf(e,2)},e.prototype.setup=function(){null!=this.data.fromStyles&&this.applyStyles(this.data.fromStyles),null!=this.data.duration&&this.applyStyles({transitionDuration:this.data.duration.toString()+"ms"}),null!=this.data.delay&&this.applyStyles({transitionDelay:this.data.delay.toString()+"ms"})},e.prototype.start=function(){this.addClasses(this.data.classesToAdd),this.addClasses(this.data.animationClasses),this.removeClasses(this.data.classesToRemove),null!=this.data.toStyles&&this.applyStyles(this.data.toStyles);var e=l.DOM.getComputedStyle(this.element);this.computedDelay=a.Math.max(this.parseDurationString(e.getPropertyValue(this._stringPrefix+"transition-delay")),this.parseDurationString(this.element.style.getPropertyValue(this._stringPrefix+"transition-delay"))),this.computedDuration=a.Math.max(this.parseDurationString(e.getPropertyValue(this._stringPrefix+"transition-duration")),this.parseDurationString(this.element.style.getPropertyValue(this._stringPrefix+"transition-duration"))),this.addEvents()},e.prototype.applyStyles=function(e){var t=this;c.StringMapWrapper.forEach(e,function(e,r){var n=s.camelCaseToDashCase(r);o.isPresent(l.DOM.getStyle(t.element,n))?l.DOM.setStyle(t.element,n,e.toString()):l.DOM.setStyle(t.element,t._stringPrefix+n,e.toString())})},e.prototype.addClasses=function(e){for(var t=0,r=e.length;r>t;t++)l.DOM.addClass(this.element,e[t])},e.prototype.removeClasses=function(e){for(var t=0,r=e.length;r>t;t++)l.DOM.removeClass(this.element,e[t])},e.prototype.addEvents=function(){var e=this;this.totalTime>0?this.eventClearFunctions.push(l.DOM.onAndCancel(this.element,l.DOM.getTransitionEnd(),function(t){return e.handleAnimationEvent(t)})):this.handleAnimationCompleted()},e.prototype.handleAnimationEvent=function(e){var t=a.Math.round(1e3*e.elapsedTime);this.browserDetails.elapsedTimeIncludesDelay||(t+=this.computedDelay),e.stopPropagation(),t>=this.totalTime&&this.handleAnimationCompleted()},e.prototype.handleAnimationCompleted=function(){this.removeClasses(this.data.animationClasses),this.callbacks.forEach(function(e){return e()}),this.callbacks=[],this.eventClearFunctions.forEach(function(e){return e()}),this.eventClearFunctions=[],this.completed=!0},e.prototype.onComplete=function(e){return this.completed?e():this.callbacks.push(e),this},e.prototype.parseDurationString=function(e){var t=0;if(null==e||e.length<2)return t;if("ms"==e.substring(e.length-2)){var r=o.NumberWrapper.parseInt(this.stripLetters(e),10);r>t&&(t=r)}else if("s"==e.substring(e.length-1)){var n=1e3*o.NumberWrapper.parseFloat(this.stripLetters(e)),r=a.Math.floor(n);r>t&&(t=r)}return t},e.prototype.stripLetters=function(e){return o.StringWrapper.replaceAll(e,o.RegExpWrapper.create("[^0-9]+$",""),"")},e}();return t.Animation=u,n.define=i,r.exports}),System.register("angular2/src/platform/dom/shared_styles_host",["angular2/src/platform/dom/dom_adapter","angular2/src/core/di","angular2/src/facade/collection","angular2/src/platform/dom/dom_tokens"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},l=e("angular2/src/platform/dom/dom_adapter"),u=e("angular2/src/core/di"),p=e("angular2/src/facade/collection"),d=e("angular2/src/platform/dom/dom_tokens"),f=function(){function e(){this._styles=[],this._stylesSet=new Set}return e.prototype.addStyles=function(e){var t=this,r=[];e.forEach(function(e){p.SetWrapper.has(t._stylesSet,e)||(t._stylesSet.add(e),t._styles.push(e),r.push(e))}),this.onStylesAdded(r)},e.prototype.onStylesAdded=function(e){},e.prototype.getAllStyles=function(){return this._styles},e=a([u.Injectable(),s("design:paramtypes",[])],e)}();t.SharedStylesHost=f;var h=function(e){function t(t){e.call(this),this._hostNodes=new Set,this._hostNodes.add(t.head)}return o(t,e),t.prototype._addStylesToHost=function(e,t){for(var r=0;r<e.length;r++){var n=e[r];l.DOM.appendChild(t,l.DOM.createStyleElement(n))}},t.prototype.addHost=function(e){this._addStylesToHost(this._styles,e),this._hostNodes.add(e)},t.prototype.removeHost=function(e){p.SetWrapper["delete"](this._hostNodes,e);
},t.prototype.onStylesAdded=function(e){var t=this;this._hostNodes.forEach(function(r){t._addStylesToHost(e,r)})},t=a([u.Injectable(),c(0,u.Inject(d.DOCUMENT)),s("design:paramtypes",[Object])],t)}(f);return t.DomSharedStylesHost=h,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/change_detection_util",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/change_detection/constants","angular2/src/core/change_detection/pipe_lifecycle_reflector","angular2/src/core/change_detection/binding_record","angular2/src/core/change_detection/directive_record"],!0,function(e,t,r){function n(e,t){return new m(e,t)}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/facade/lang"),s=e("angular2/src/facade/exceptions"),c=e("angular2/src/facade/collection"),l=e("angular2/src/core/change_detection/constants"),u=e("angular2/src/core/change_detection/pipe_lifecycle_reflector"),p=e("angular2/src/core/change_detection/binding_record"),d=e("angular2/src/core/change_detection/directive_record"),f=function(){function e(e){this.wrapped=e}return e.wrap=function(e){var t=h[g++%5];return t.wrapped=e,t},e}();t.WrappedValue=f;var h=[new f(null),new f(null),new f(null),new f(null),new f(null)],g=0,m=function(){function e(e,t){this.previousValue=e,this.currentValue=t}return e.prototype.isFirstChange=function(){return this.previousValue===v.uninitialized},e}();t.SimpleChange=m;var v=function(){function e(){}return e.arrayFn0=function(){return[]},e.arrayFn1=function(e){return[e]},e.arrayFn2=function(e,t){return[e,t]},e.arrayFn3=function(e,t,r){return[e,t,r]},e.arrayFn4=function(e,t,r,n){return[e,t,r,n]},e.arrayFn5=function(e,t,r,n,i){return[e,t,r,n,i]},e.arrayFn6=function(e,t,r,n,i,o){return[e,t,r,n,i,o]},e.arrayFn7=function(e,t,r,n,i,o,a){return[e,t,r,n,i,o,a]},e.arrayFn8=function(e,t,r,n,i,o,a,s){return[e,t,r,n,i,o,a,s]},e.arrayFn9=function(e,t,r,n,i,o,a,s,c){return[e,t,r,n,i,o,a,s,c]},e.operation_negate=function(e){return!e},e.operation_add=function(e,t){return e+t},e.operation_subtract=function(e,t){return e-t},e.operation_multiply=function(e,t){return e*t},e.operation_divide=function(e,t){return e/t},e.operation_remainder=function(e,t){return e%t},e.operation_equals=function(e,t){return e==t},e.operation_not_equals=function(e,t){return e!=t},e.operation_identical=function(e,t){return e===t},e.operation_not_identical=function(e,t){return e!==t},e.operation_less_then=function(e,t){return t>e},e.operation_greater_then=function(e,t){return e>t},e.operation_less_or_equals_then=function(e,t){return t>=e},e.operation_greater_or_equals_then=function(e,t){return e>=t},e.cond=function(e,t,r){return e?t:r},e.mapFn=function(e){function t(t){for(var r=c.StringMapWrapper.create(),n=0;n<e.length;++n)c.StringMapWrapper.set(r,e[n],t[n]);return r}switch(e.length){case 0:return function(){return[]};case 1:return function(e){return t([e])};case 2:return function(e,r){return t([e,r])};case 3:return function(e,r,n){return t([e,r,n])};case 4:return function(e,r,n,i){return t([e,r,n,i])};case 5:return function(e,r,n,i,o){return t([e,r,n,i,o])};case 6:return function(e,r,n,i,o,a){return t([e,r,n,i,o,a])};case 7:return function(e,r,n,i,o,a,s){return t([e,r,n,i,o,a,s])};case 8:return function(e,r,n,i,o,a,s,c){return t([e,r,n,i,o,a,s,c])};case 9:return function(e,r,n,i,o,a,s,c,l){return t([e,r,n,i,o,a,s,c,l])};default:throw new s.BaseException("Does not support literal maps with more than 9 elements")}},e.keyedAccess=function(e,t){return e[t[0]]},e.unwrapValue=function(e){return e instanceof f?e.wrapped:e},e.changeDetectionMode=function(e){return l.isDefaultChangeDetectionStrategy(e)?l.ChangeDetectionStrategy.CheckAlways:l.ChangeDetectionStrategy.CheckOnce},e.simpleChange=function(e,t){return n(e,t)},e.isValueBlank=function(e){return a.isBlank(e)},e.s=function(e){return a.isPresent(e)?""+e:""},e.protoByIndex=function(e,t){return 1>t?null:e[t-1]},e.callPipeOnDestroy=function(e){u.implementsOnDestroy(e.pipe)&&e.pipe.ngOnDestroy()},e.bindingTarget=function(e,t,r,n,i){return new p.BindingTarget(e,t,r,n,i)},e.directiveIndex=function(e,t){return new d.DirectiveIndex(e,t)},e.looseNotIdentical=function(e,t){return!a.looseIdentical(e,t)},e.devModeEqual=function(t,r){return c.isListLikeIterable(t)&&c.isListLikeIterable(r)?c.areIterablesEqual(t,r,e.devModeEqual):c.isListLikeIterable(t)||a.isPrimitive(t)||c.isListLikeIterable(r)||a.isPrimitive(r)?a.looseIdentical(t,r):!0},e.uninitialized=a.CONST_EXPR(new Object),e}();return t.ChangeDetectionUtil=v,i.define=o,r.exports}),System.register("angular2/src/core/profile/profile",["angular2/src/core/profile/wtf_impl"],!0,function(e,t,r){function n(e,t){return null}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/core/profile/wtf_impl");return t.wtfEnabled=a.detectWTF(),t.wtfCreateScope=t.wtfEnabled?a.createScope:function(e,t){return n},t.wtfLeave=t.wtfEnabled?a.leave:function(e,t){return t},t.wtfStartTimeRange=t.wtfEnabled?a.startTimeRange:function(e,t){return null},t.wtfEndTimeRange=t.wtfEnabled?a.endTimeRange:function(e){return null},i.define=o,r.exports}),System.register("angular2/src/core/change_detection/codegen_logic_util",["angular2/src/facade/lang","angular2/src/core/change_detection/codegen_facade","angular2/src/core/change_detection/proto_record","angular2/src/facade/exceptions"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/core/change_detection/codegen_facade"),s=e("angular2/src/core/change_detection/proto_record"),c=e("angular2/src/facade/exceptions"),l=function(){function e(e,t,r){this._names=e,this._utilName=t,this._changeDetectorStateName=r}return e.prototype.genPropertyBindingEvalValue=function(e){var t=this;return this._genEvalValue(e,function(e){return t._names.getLocalName(e)},this._names.getLocalsAccessorName())},e.prototype.genEventBindingEvalValue=function(e,t){var r=this;return this._genEvalValue(t,function(t){return r._names.getEventLocalName(e,t)},"locals")},e.prototype._genEvalValue=function(e,t,r){var n,i=-1==e.contextIndex?this._names.getDirectiveName(e.directiveIndex):t(e.contextIndex),o=e.args.map(function(e){return t(e)}).join(", ");switch(e.mode){case s.RecordType.Self:n=i;break;case s.RecordType.Const:n=a.codify(e.funcOrValue);break;case s.RecordType.PropertyRead:n=i+"."+e.name;break;case s.RecordType.SafeProperty:var l=i+"."+e.name;n=this._utilName+".isValueBlank("+i+") ? null : "+l;break;case s.RecordType.PropertyWrite:n=i+"."+e.name+" = "+t(e.args[0]);break;case s.RecordType.Local:n=r+".get("+a.rawString(e.name)+")";break;case s.RecordType.InvokeMethod:n=i+"."+e.name+"("+o+")";break;case s.RecordType.SafeMethodInvoke:var u=i+"."+e.name+"("+o+")";n=this._utilName+".isValueBlank("+i+") ? null : "+u;break;case s.RecordType.InvokeClosure:n=i+"("+o+")";break;case s.RecordType.PrimitiveOp:n=this._utilName+"."+e.name+"("+o+")";break;case s.RecordType.CollectionLiteral:n=this._utilName+"."+e.name+"("+o+")";break;case s.RecordType.Interpolate:n=this._genInterpolation(e);break;case s.RecordType.KeyedRead:n=i+"["+t(e.args[0])+"]";break;case s.RecordType.KeyedWrite:n=i+"["+t(e.args[0])+"] = "+t(e.args[1]);break;case s.RecordType.Chain:n=""+t(e.args[e.args.length-1]);break;default:throw new c.BaseException("Unknown operation "+e.mode)}return t(e.selfIndex)+" = "+n+";"},e.prototype.genPropertyBindingTargets=function(e,t){var r=this,n=e.map(function(e){if(o.isBlank(e))return"null";var n=t?a.codify(e.debug):"null";return r._utilName+".bindingTarget("+a.codify(e.mode)+", "+e.elementIndex+", "+a.codify(e.name)+", "+a.codify(e.unit)+", "+n+")"});return"["+n.join(", ")+"]"},e.prototype.genDirectiveIndices=function(e){var t=this,r=e.map(function(e){return t._utilName+".directiveIndex("+e.directiveIndex.elementIndex+", "+e.directiveIndex.directiveIndex+")"});return"["+r.join(", ")+"]"},e.prototype._genInterpolation=function(e){for(var t=[],r=0;r<e.args.length;++r)t.push(a.codify(e.fixedArgs[r])),t.push(this._utilName+".s("+this._names.getLocalName(e.args[r])+")");return t.push(a.codify(e.fixedArgs[e.args.length])),a.combineGeneratedStrings(t)},e.prototype.genHydrateDirectives=function(e){for(var t=this,r=[],n=0,i=0;i<e.length;++i){var a=e[i],s=this._names.getDirectiveName(a.directiveIndex);r.push(s+" = "+this._genReadDirective(i)+";"),o.isPresent(a.outputs)&&a.outputs.forEach(function(e){var i=t._genEventHandler(a.directiveIndex.elementIndex,e[1]),c="this.outputSubscriptions["+n++ +"] = "+s+"."+e[0];o.IS_DART?r.push(c+".listen("+i+");"):r.push(c+".subscribe({next: "+i+"});")})}if(n>0){var c="this.outputSubscriptions";o.IS_DART?r.unshift(c+" = new List("+n+");"):r.unshift(c+" = new Array("+n+");")}return r.join("\n")},e.prototype.genDirectivesOnDestroy=function(e){for(var t=[],r=0;r<e.length;++r){var n=e[r];if(n.callOnDestroy){var i=this._names.getDirectiveName(n.directiveIndex);t.push(i+".ngOnDestroy();")}}return t.join("\n")},e.prototype._genEventHandler=function(e,t){return o.IS_DART?"(event) => this.handleEvent('"+t+"', "+e+", event)":"(function(event) { return this.handleEvent('"+t+"', "+e+", event); }).bind(this)"},e.prototype._genReadDirective=function(e){return"this.getDirectiveFor(directives, "+e+")"},e.prototype.genHydrateDetectors=function(e){for(var t=[],r=0;r<e.length;++r){var n=e[r];n.isDefaultChangeDetection()||t.push(this._names.getDetectorName(n.directiveIndex)+" = this.getDetectorFor(directives, "+r+");")}return t.join("\n")},e.prototype.genContentLifecycleCallbacks=function(e){for(var t=[],r=o.IS_DART?"==":"===",n=e.length-1;n>=0;--n){var i=e[n];i.callAfterContentInit&&t.push("if("+this._names.getStateName()+" "+r+" "+this._changeDetectorStateName+".NeverChecked) "+this._names.getDirectiveName(i.directiveIndex)+".ngAfterContentInit();"),i.callAfterContentChecked&&t.push(this._names.getDirectiveName(i.directiveIndex)+".ngAfterContentChecked();")}return t},e.prototype.genViewLifecycleCallbacks=function(e){for(var t=[],r=o.IS_DART?"==":"===",n=e.length-1;n>=0;--n){var i=e[n];i.callAfterViewInit&&t.push("if("+this._names.getStateName()+" "+r+" "+this._changeDetectorStateName+".NeverChecked) "+this._names.getDirectiveName(i.directiveIndex)+".ngAfterViewInit();"),i.callAfterViewChecked&&t.push(this._names.getDirectiveName(i.directiveIndex)+".ngAfterViewChecked();")}return t},e}();return t.CodegenLogicUtil=l,n.define=i,r.exports}),System.register("angular2/src/core/linker/element",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/di","angular2/src/core/di/provider","angular2/src/core/di/injector","angular2/src/core/di/provider","angular2/src/core/metadata/di","angular2/src/core/linker/view_type","angular2/src/core/linker/element_ref","angular2/src/core/linker/view_container_ref","angular2/src/core/linker/element_ref","angular2/src/core/render/api","angular2/src/core/linker/template_ref","angular2/src/core/metadata/directives","angular2/src/core/change_detection/change_detection","angular2/src/core/linker/query_list","angular2/src/core/reflection/reflection","angular2/src/core/pipes/pipe_provider","angular2/src/core/linker/view_container_ref"],!0,function(e,t,r){function n(e,t,r){for(var n=0;n<e.length;n++)r.set(e[n].key.id,t)}var i=System.global,o=i.define;i.define=void 0;var a,s=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},c=e("angular2/src/facade/lang"),l=e("angular2/src/facade/exceptions"),u=e("angular2/src/facade/collection"),p=e("angular2/src/core/di"),d=e("angular2/src/core/di/provider"),f=e("angular2/src/core/di/injector"),h=e("angular2/src/core/di/provider"),g=e("angular2/src/core/metadata/di"),m=e("angular2/src/core/linker/view_type"),v=e("angular2/src/core/linker/element_ref"),y=e("angular2/src/core/linker/view_container_ref"),_=e("angular2/src/core/linker/element_ref"),b=e("angular2/src/core/render/api"),C=e("angular2/src/core/linker/template_ref"),w=e("angular2/src/core/metadata/directives"),P=e("angular2/src/core/change_detection/change_detection"),E=e("angular2/src/core/linker/query_list"),S=e("angular2/src/core/reflection/reflection"),R=e("angular2/src/core/pipes/pipe_provider"),x=e("angular2/src/core/linker/view_container_ref"),O=function(){function e(){this.templateRefId=p.Key.get(C.TemplateRef).id,this.viewContainerId=p.Key.get(y.ViewContainerRef).id,this.changeDetectorRefId=p.Key.get(P.ChangeDetectorRef).id,this.elementRefId=p.Key.get(_.ElementRef).id,this.rendererId=p.Key.get(b.Renderer).id}return e.instance=function(){return c.isBlank(a)&&(a=new e),a},e}();t.StaticKeys=O;var D=function(e){function t(t,r,n,i,o,a,s){e.call(this,t,r,n,i,o),this.attributeName=a,this.queryDecorator=s,this._verify()}return s(t,e),t.prototype._verify=function(){var e=0;if(c.isPresent(this.queryDecorator)&&e++,c.isPresent(this.attributeName)&&e++,e>1)throw new l.BaseException("A directive injectable can contain only one of the following @Attribute or @Query.")},t.createFrom=function(e){return new t(e.key,e.optional,e.lowerBoundVisibility,e.upperBoundVisibility,e.properties,t._attributeName(e.properties),t._query(e.properties))},t._attributeName=function(e){var t=e.find(function(e){return e instanceof g.AttributeMetadata});return c.isPresent(t)?t.attributeName:null},t._query=function(e){return e.find(function(e){return e instanceof g.QueryMetadata})},t}(p.Dependency);t.DirectiveDependency=D;var A=function(e){function t(t,r,n,i,o,a,s){e.call(this,t,[new h.ResolvedFactory(r,n)],!1),this.isComponent=i,this.providers=o,this.viewProviders=a,this.queries=s}return s(t,e),Object.defineProperty(t.prototype,"displayName",{get:function(){return this.key.displayName},enumerable:!0,configurable:!0}),t.createFromType=function(e,r){var n=new p.Provider(e,{useClass:e});c.isBlank(r)&&(r=new w.DirectiveMetadata);var i=h.resolveProvider(n),o=i.resolvedFactories[0],a=o.dependencies.map(D.createFrom),s=r instanceof w.ComponentMetadata,l=c.isPresent(r.providers)?p.Injector.resolve(r.providers):null,d=r instanceof w.ComponentMetadata&&c.isPresent(r.viewProviders)?p.Injector.resolve(r.viewProviders):null,f=[];return c.isPresent(r.queries)&&u.StringMapWrapper.forEach(r.queries,function(e,t){var r=S.reflector.setter(t);f.push(new T(r,e))}),a.forEach(function(e){c.isPresent(e.queryDecorator)&&f.push(new T(null,e.queryDecorator))}),new t(i.key,o.factory,a,s,l,d,f)},t}(h.ResolvedProvider_);t.DirectiveProvider=A;var T=function(){function e(e,t){this.setter=e,this.metadata=t}return e}();t.QueryMetadataWithSetter=T;var I=function(){function e(e,t,r,n,i,o){this.firstProviderIsComponent=e,this.index=t,this.attributes=r,this.protoQueryRefs=i,this.directiveVariableBindings=o;var a=n.length;a>0?this.protoInjector=new f.ProtoInjector(n):(this.protoInjector=null,this.protoQueryRefs=[])}return e.create=function(t,r,i,o,a){for(var s=null,l=new Map,p=new Map,h=u.ListWrapper.createGrowableSize(o.length),g=[],m=0;m<o.length;m++){var v=t.getResolvedDirectiveMetadata(o[m]);h[m]=new f.ProviderWithVisibility(v,v.isComponent?f.Visibility.PublicAndPrivate:f.Visibility.Public),v.isComponent?s=v:c.isPresent(v.providers)&&(d.mergeResolvedProviders(v.providers,l),n(v.providers,f.Visibility.Public,p)),c.isPresent(v.viewProviders)&&(d.mergeResolvedProviders(v.viewProviders,l),n(v.viewProviders,f.Visibility.Private,p));for(var y=0;y<v.queries.length;y++){var _=v.queries[y];g.push(new U(m,_.setter,_.metadata))}}return c.isPresent(s)&&c.isPresent(s.providers)&&(d.mergeResolvedProviders(s.providers,l),n(s.providers,f.Visibility.Public,p)),l.forEach(function(e,t){h.push(new f.ProviderWithVisibility(e,p.get(e.key.id)))}),new e(c.isPresent(s),r,i,h,g,a)},e.prototype.getProviderAtIndex=function(e){return this.protoInjector.getProviderAtIndex(e)},e}();t.AppProtoElement=I;var k=function(){function e(e,t,r){this.element=e,this.componentElement=t,this.injector=r}return e}(),N=function(){function e(e,t){this.injector=e,this.hostInjectorBoundary=t}return e}();t.InjectorWithHostBoundary=N;var V=function(){function e(e,t,r,n,i){var o=this;this.proto=e,this.parentView=t,this.parent=r,this.nativeElement=n,this.embeddedViewFactory=i,this.nestedViews=null,this.componentView=null,this.ref=new v.ElementRef_(this);var a=c.isPresent(r)?r._injector:t.parentInjector;if(c.isPresent(this.proto.protoInjector)){var s;s=c.isPresent(r)&&c.isPresent(r.proto.protoInjector)?!1:t.hostInjectorBoundary,this._queryStrategy=this._buildQueryStrategy(),this._injector=new p.Injector(this.proto.protoInjector,a,s,this,function(){return o._debugContext()});var l=this._injector.internalStrategy;this._strategy=l instanceof f.InjectorInlineStrategy?new F(l,this):new W(l,this),this._strategy.init()}else this._queryStrategy=null,this._injector=a,this._strategy=null}return e.getViewParentInjector=function(e,t,r,n){var i,o;switch(e){case m.ViewType.COMPONENT:i=t._injector,o=!0;break;case m.ViewType.EMBEDDED:i=c.isPresent(t.proto.protoInjector)?t._injector.parent:t._injector,o=t._injector.hostBoundary;break;case m.ViewType.HOST:if(c.isPresent(t))if(i=c.isPresent(t.proto.protoInjector)?t._injector.parent:t._injector,c.isPresent(r)){var a=r.map(function(e){return new f.ProviderWithVisibility(e,f.Visibility.Public)});i=new p.Injector(new f.ProtoInjector(a),i,!0,null,null),o=!1}else o=t._injector.hostBoundary;else i=n,o=!0}return new N(i,o)},e.prototype.attachComponentView=function(e){this.componentView=e},e.prototype._debugContext=function(){var e=this.parentView.getDebugContext(this,null,null);return c.isPresent(e)?new k(e.element,e.componentElement,e.injector):null},e.prototype.hasVariableBinding=function(e){var t=this.proto.directiveVariableBindings;return c.isPresent(t)&&u.StringMapWrapper.contains(t,e)},e.prototype.getVariableBinding=function(e){var t=this.proto.directiveVariableBindings[e];return c.isPresent(t)?this.getDirectiveAtIndex(t):this.getElementRef()},e.prototype.get=function(e){return this._injector.get(e)},e.prototype.hasDirective=function(e){return c.isPresent(this._injector.getOptional(e))},e.prototype.getComponent=function(){return c.isPresent(this._strategy)?this._strategy.getComponent():null},e.prototype.getInjector=function(){return this._injector},e.prototype.getElementRef=function(){return this.ref},e.prototype.getViewContainerRef=function(){return new x.ViewContainerRef_(this)},e.prototype.getTemplateRef=function(){return c.isPresent(this.embeddedViewFactory)?new C.TemplateRef_(this.ref):null},e.prototype.getDependency=function(e,t,r){if(t instanceof A){var n=r;if(c.isPresent(n.attributeName))return this._buildAttribute(n);if(c.isPresent(n.queryDecorator))return this._queryStrategy.findQuery(n.queryDecorator).list;if(n.key.id===O.instance().changeDetectorRefId)return this.proto.firstProviderIsComponent?new q(this):this.parentView.changeDetector.ref;if(n.key.id===O.instance().elementRefId)return this.getElementRef();if(n.key.id===O.instance().viewContainerId)return this.getViewContainerRef();if(n.key.id===O.instance().templateRefId){var i=this.getTemplateRef();if(c.isBlank(i)&&!n.optional)throw new p.NoProviderError(null,n.key);return i}if(n.key.id===O.instance().rendererId)return this.parentView.renderer}else if(t instanceof R.PipeProvider&&r.key.id===O.instance().changeDetectorRefId)return this.proto.firstProviderIsComponent?new q(this):this.parentView.changeDetector;return f.UNDEFINED},e.prototype._buildAttribute=function(e){var t=this.proto.attributes;return c.isPresent(t)&&u.StringMapWrapper.contains(t,e.attributeName)?t[e.attributeName]:null},e.prototype.addDirectivesMatchingQuery=function(e,t){var r=this.getTemplateRef();e.selector===C.TemplateRef&&c.isPresent(r)&&t.push(r),null!=this._strategy&&this._strategy.addDirectivesMatchingQuery(e,t)},e.prototype._buildQueryStrategy=function(){return 0===this.proto.protoQueryRefs.length?j:this.proto.protoQueryRefs.length<=B.NUMBER_OF_SUPPORTED_QUERIES?new B(this):new L(this)},e.prototype.getDirectiveAtIndex=function(e){return this._injector.getAt(e)},e.prototype.ngAfterViewChecked=function(){c.isPresent(this._queryStrategy)&&this._queryStrategy.updateViewQueries()},e.prototype.ngAfterContentChecked=function(){c.isPresent(this._queryStrategy)&&this._queryStrategy.updateContentQueries()},e.prototype.traverseAndSetQueriesAsDirty=function(){for(var e=this;c.isPresent(e);)e._setQueriesAsDirty(),e=c.isBlank(e.parent)&&e.parentView.proto.type===m.ViewType.EMBEDDED?e.parentView.containerAppElement:e.parent},e.prototype._setQueriesAsDirty=function(){c.isPresent(this._queryStrategy)&&this._queryStrategy.setContentQueriesAsDirty(),this.parentView.proto.type===m.ViewType.COMPONENT&&this.parentView.containerAppElement._queryStrategy.setViewQueriesAsDirty()},e}();t.AppElement=V;var M=function(){function e(){}return e.prototype.setContentQueriesAsDirty=function(){},e.prototype.setViewQueriesAsDirty=function(){},e.prototype.updateContentQueries=function(){},e.prototype.updateViewQueries=function(){},e.prototype.findQuery=function(e){throw new l.BaseException("Cannot find query for directive "+e+".")},e}(),j=new M,B=function(){function e(e){var t=e.proto.protoQueryRefs;t.length>0&&(this.query0=new H(t[0],e)),t.length>1&&(this.query1=new H(t[1],e)),t.length>2&&(this.query2=new H(t[2],e))}return e.prototype.setContentQueriesAsDirty=function(){c.isPresent(this.query0)&&!this.query0.isViewQuery&&(this.query0.dirty=!0),c.isPresent(this.query1)&&!this.query1.isViewQuery&&(this.query1.dirty=!0),c.isPresent(this.query2)&&!this.query2.isViewQuery&&(this.query2.dirty=!0)},e.prototype.setViewQueriesAsDirty=function(){c.isPresent(this.query0)&&this.query0.isViewQuery&&(this.query0.dirty=!0),c.isPresent(this.query1)&&this.query1.isViewQuery&&(this.query1.dirty=!0),c.isPresent(this.query2)&&this.query2.isViewQuery&&(this.query2.dirty=!0)},e.prototype.updateContentQueries=function(){c.isPresent(this.query0)&&!this.query0.isViewQuery&&this.query0.update(),c.isPresent(this.query1)&&!this.query1.isViewQuery&&this.query1.update(),c.isPresent(this.query2)&&!this.query2.isViewQuery&&this.query2.update()},e.prototype.updateViewQueries=function(){c.isPresent(this.query0)&&this.query0.isViewQuery&&this.query0.update(),c.isPresent(this.query1)&&this.query1.isViewQuery&&this.query1.update(),c.isPresent(this.query2)&&this.query2.isViewQuery&&this.query2.update()},e.prototype.findQuery=function(e){if(c.isPresent(this.query0)&&this.query0.protoQueryRef.query===e)return this.query0;if(c.isPresent(this.query1)&&this.query1.protoQueryRef.query===e)return this.query1;if(c.isPresent(this.query2)&&this.query2.protoQueryRef.query===e)return this.query2;throw new l.BaseException("Cannot find query for directive "+e+".")},e.NUMBER_OF_SUPPORTED_QUERIES=3,e}(),L=function(){function e(e){this.queries=e.proto.protoQueryRefs.map(function(t){return new H(t,e)})}return e.prototype.setContentQueriesAsDirty=function(){for(var e=0;e<this.queries.length;++e){var t=this.queries[e];t.isViewQuery||(t.dirty=!0)}},e.prototype.setViewQueriesAsDirty=function(){for(var e=0;e<this.queries.length;++e){var t=this.queries[e];t.isViewQuery&&(t.dirty=!0)}},e.prototype.updateContentQueries=function(){for(var e=0;e<this.queries.length;++e){var t=this.queries[e];t.isViewQuery||t.update()}},e.prototype.updateViewQueries=function(){for(var e=0;e<this.queries.length;++e){var t=this.queries[e];t.isViewQuery&&t.update()}},e.prototype.findQuery=function(e){for(var t=0;t<this.queries.length;++t){var r=this.queries[t];if(r.protoQueryRef.query===e)return r}throw new l.BaseException("Cannot find query for directive "+e+".")},e}(),F=function(){function e(e,t){this.injectorStrategy=e,this._ei=t}return e.prototype.init=function(){var e=this.injectorStrategy,t=e.protoStrategy;e.resetConstructionCounter(),t.provider0 instanceof A&&c.isPresent(t.keyId0)&&e.obj0===f.UNDEFINED&&(e.obj0=e.instantiateProvider(t.provider0,t.visibility0)),t.provider1 instanceof A&&c.isPresent(t.keyId1)&&e.obj1===f.UNDEFINED&&(e.obj1=e.instantiateProvider(t.provider1,t.visibility1)),t.provider2 instanceof A&&c.isPresent(t.keyId2)&&e.obj2===f.UNDEFINED&&(e.obj2=e.instantiateProvider(t.provider2,t.visibility2)),t.provider3 instanceof A&&c.isPresent(t.keyId3)&&e.obj3===f.UNDEFINED&&(e.obj3=e.instantiateProvider(t.provider3,t.visibility3)),t.provider4 instanceof A&&c.isPresent(t.keyId4)&&e.obj4===f.UNDEFINED&&(e.obj4=e.instantiateProvider(t.provider4,t.visibility4)),t.provider5 instanceof A&&c.isPresent(t.keyId5)&&e.obj5===f.UNDEFINED&&(e.obj5=e.instantiateProvider(t.provider5,t.visibility5)),t.provider6 instanceof A&&c.isPresent(t.keyId6)&&e.obj6===f.UNDEFINED&&(e.obj6=e.instantiateProvider(t.provider6,t.visibility6)),t.provider7 instanceof A&&c.isPresent(t.keyId7)&&e.obj7===f.UNDEFINED&&(e.obj7=e.instantiateProvider(t.provider7,t.visibility7)),t.provider8 instanceof A&&c.isPresent(t.keyId8)&&e.obj8===f.UNDEFINED&&(e.obj8=e.instantiateProvider(t.provider8,t.visibility8)),t.provider9 instanceof A&&c.isPresent(t.keyId9)&&e.obj9===f.UNDEFINED&&(e.obj9=e.instantiateProvider(t.provider9,t.visibility9))},e.prototype.getComponent=function(){return this.injectorStrategy.obj0},e.prototype.isComponentKey=function(e){return this._ei.proto.firstProviderIsComponent&&c.isPresent(e)&&e.id===this.injectorStrategy.protoStrategy.keyId0},e.prototype.addDirectivesMatchingQuery=function(e,t){var r=this.injectorStrategy,n=r.protoStrategy;c.isPresent(n.provider0)&&n.provider0.key.token===e.selector&&(r.obj0===f.UNDEFINED&&(r.obj0=r.instantiateProvider(n.provider0,n.visibility0)),t.push(r.obj0)),c.isPresent(n.provider1)&&n.provider1.key.token===e.selector&&(r.obj1===f.UNDEFINED&&(r.obj1=r.instantiateProvider(n.provider1,n.visibility1)),t.push(r.obj1)),c.isPresent(n.provider2)&&n.provider2.key.token===e.selector&&(r.obj2===f.UNDEFINED&&(r.obj2=r.instantiateProvider(n.provider2,n.visibility2)),t.push(r.obj2)),c.isPresent(n.provider3)&&n.provider3.key.token===e.selector&&(r.obj3===f.UNDEFINED&&(r.obj3=r.instantiateProvider(n.provider3,n.visibility3)),t.push(r.obj3)),c.isPresent(n.provider4)&&n.provider4.key.token===e.selector&&(r.obj4===f.UNDEFINED&&(r.obj4=r.instantiateProvider(n.provider4,n.visibility4)),t.push(r.obj4)),c.isPresent(n.provider5)&&n.provider5.key.token===e.selector&&(r.obj5===f.UNDEFINED&&(r.obj5=r.instantiateProvider(n.provider5,n.visibility5)),t.push(r.obj5)),c.isPresent(n.provider6)&&n.provider6.key.token===e.selector&&(r.obj6===f.UNDEFINED&&(r.obj6=r.instantiateProvider(n.provider6,n.visibility6)),t.push(r.obj6)),c.isPresent(n.provider7)&&n.provider7.key.token===e.selector&&(r.obj7===f.UNDEFINED&&(r.obj7=r.instantiateProvider(n.provider7,n.visibility7)),t.push(r.obj7)),c.isPresent(n.provider8)&&n.provider8.key.token===e.selector&&(r.obj8===f.UNDEFINED&&(r.obj8=r.instantiateProvider(n.provider8,n.visibility8)),t.push(r.obj8)),c.isPresent(n.provider9)&&n.provider9.key.token===e.selector&&(r.obj9===f.UNDEFINED&&(r.obj9=r.instantiateProvider(n.provider9,n.visibility9)),t.push(r.obj9))},e}(),W=function(){function e(e,t){this.injectorStrategy=e,this._ei=t}return e.prototype.init=function(){var e=this.injectorStrategy,t=e.protoStrategy;e.resetConstructionCounter();for(var r=0;r<t.keyIds.length;r++)t.providers[r]instanceof A&&c.isPresent(t.keyIds[r])&&e.objs[r]===f.UNDEFINED&&(e.objs[r]=e.instantiateProvider(t.providers[r],t.visibilities[r]))},e.prototype.getComponent=function(){return this.injectorStrategy.objs[0]},e.prototype.isComponentKey=function(e){var t=this.injectorStrategy.protoStrategy;return this._ei.proto.firstProviderIsComponent&&c.isPresent(e)&&e.id===t.keyIds[0]},e.prototype.addDirectivesMatchingQuery=function(e,t){for(var r=this.injectorStrategy,n=r.protoStrategy,i=0;i<n.providers.length;i++)n.providers[i].key.token===e.selector&&(r.objs[i]===f.UNDEFINED&&(r.objs[i]=r.instantiateProvider(n.providers[i],n.visibilities[i])),t.push(r.objs[i]))},e}(),U=function(){function e(e,t,r){this.dirIndex=e,this.setter=t,this.query=r}return Object.defineProperty(e.prototype,"usesPropertySyntax",{get:function(){return c.isPresent(this.setter)},enumerable:!0,configurable:!0}),e}();t.ProtoQueryRef=U;var H=function(){function e(e,t){this.protoQueryRef=e,this.originator=t,this.list=new E.QueryList,this.dirty=!0}return Object.defineProperty(e.prototype,"isViewQuery",{get:function(){return this.protoQueryRef.query.isViewQuery},enumerable:!0,configurable:!0}),e.prototype.update=function(){if(this.dirty){if(this._update(),this.dirty=!1,this.protoQueryRef.usesPropertySyntax){var e=this.originator.getDirectiveAtIndex(this.protoQueryRef.dirIndex);this.protoQueryRef.query.first?this.protoQueryRef.setter(e,this.list.length>0?this.list.first:null):this.protoQueryRef.setter(e,this.list)}this.list.notifyOnChanges()}},e.prototype._update=function(){var e=[];if(this.protoQueryRef.query.isViewQuery){var t=this.originator.componentView;c.isPresent(t)&&this._visitView(t,e)}else this._visit(this.originator,e);this.list.reset(e)},e.prototype._visit=function(e,t){for(var r=e.parentView,n=e.proto.index,i=n;i<r.appElements.length;i++){var o=r.appElements[i];if(i>n&&(c.isBlank(o.parent)||o.parent.proto.index<n))break;(this.protoQueryRef.query.descendants||o.parent==this.originator||o==this.originator)&&(this._visitInjector(o,t),this._visitViewContainerViews(o.nestedViews,t))}},e.prototype._visitInjector=function(e,t){this.protoQueryRef.query.isVarBindingQuery?this._aggregateVariableBinding(e,t):this._aggregateDirective(e,t)},e.prototype._visitViewContainerViews=function(e,t){if(c.isPresent(e))for(var r=0;r<e.length;r++)this._visitView(e[r],t)},e.prototype._visitView=function(e,t){for(var r=0;r<e.appElements.length;r++){var n=e.appElements[r];this._visitInjector(n,t),this._visitViewContainerViews(n.nestedViews,t)}},e.prototype._aggregateVariableBinding=function(e,t){for(var r=this.protoQueryRef.query.varBindings,n=0;n<r.length;++n)e.hasVariableBinding(r[n])&&t.push(e.getVariableBinding(r[n]))},e.prototype._aggregateDirective=function(e,t){e.addDirectivesMatchingQuery(this.protoQueryRef.query,t)},e}();t.QueryRef=H;var q=function(e){function t(t){e.call(this),this._appElement=t}return s(t,e),t.prototype.markForCheck=function(){this._appElement.componentView.changeDetector.ref.markForCheck()},t.prototype.detach=function(){this._appElement.componentView.changeDetector.ref.detach()},t.prototype.detectChanges=function(){this._appElement.componentView.changeDetector.ref.detectChanges()},t.prototype.checkNoChanges=function(){this._appElement.componentView.changeDetector.ref.checkNoChanges()},t.prototype.reattach=function(){this._appElement.componentView.changeDetector.ref.reattach()},t}(P.ChangeDetectorRef);return i.define=o,r.exports}),System.register("angular2/src/core/pipes/pipes",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/change_detection/pipes"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/facade/exceptions"),s=e("angular2/src/facade/collection"),c=e("angular2/src/core/change_detection/pipes"),l=function(){function e(e){this.config=e,this.config=e}return e.fromProviders=function(t){var r={};return t.forEach(function(e){return r[e.name]=e}),new e(r)},e.prototype.get=function(e){var t=this.config[e];if(o.isBlank(t))throw new a.BaseException("Cannot find pipe '"+e+"'.");return t},e}();t.ProtoPipes=l;var u=function(){function e(e,t){this.proto=e,this.injector=t,this._config={}}return e.prototype.get=function(e){var t=s.StringMapWrapper.get(this._config,e);if(o.isPresent(t))return t;var r=this.proto.get(e),n=this.injector.instantiateResolved(r),i=new c.SelectedPipe(n,r.pure);return r.pure&&s.StringMapWrapper.set(this._config,e,i),i},e}();return t.Pipes=u,n.define=i,r.exports}),System.register("angular2/src/core/linker",["angular2/src/core/linker/directive_resolver","angular2/src/core/linker/view_resolver","angular2/src/core/linker/compiler","angular2/src/core/linker/view_manager","angular2/src/core/linker/query_list","angular2/src/core/linker/dynamic_component_loader","angular2/src/core/linker/element_ref","angular2/src/core/linker/template_ref","angular2/src/core/linker/view_ref","angular2/src/core/linker/view_container_ref","angular2/src/core/linker/dynamic_component_loader"],!0,function(e,t,r){
var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/linker/directive_resolver");t.DirectiveResolver=o.DirectiveResolver;var a=e("angular2/src/core/linker/view_resolver");t.ViewResolver=a.ViewResolver;var s=e("angular2/src/core/linker/compiler");t.Compiler=s.Compiler;var c=e("angular2/src/core/linker/view_manager");t.AppViewManager=c.AppViewManager;var l=e("angular2/src/core/linker/query_list");t.QueryList=l.QueryList;var u=e("angular2/src/core/linker/dynamic_component_loader");t.DynamicComponentLoader=u.DynamicComponentLoader;var p=e("angular2/src/core/linker/element_ref");t.ElementRef=p.ElementRef;var d=e("angular2/src/core/linker/template_ref");t.TemplateRef=d.TemplateRef;var f=e("angular2/src/core/linker/view_ref");t.EmbeddedViewRef=f.EmbeddedViewRef,t.HostViewRef=f.HostViewRef,t.ViewRef=f.ViewRef,t.HostViewFactoryRef=f.HostViewFactoryRef;var h=e("angular2/src/core/linker/view_container_ref");t.ViewContainerRef=h.ViewContainerRef;var g=e("angular2/src/core/linker/dynamic_component_loader");return t.ComponentRef=g.ComponentRef,n.define=i,r.exports}),System.register("angular2/src/core/linker/resolved_metadata_cache",["angular2/src/core/di","angular2/src/facade/lang","angular2/src/core/linker/element","angular2/src/core/linker/directive_resolver","angular2/src/core/pipes/pipe_provider","angular2/src/core/linker/pipe_resolver"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/core/di"),c=e("angular2/src/facade/lang"),l=e("angular2/src/core/linker/element"),u=e("angular2/src/core/linker/directive_resolver"),p=e("angular2/src/core/pipes/pipe_provider"),d=e("angular2/src/core/linker/pipe_resolver"),f=function(){function e(e,t){this._directiveResolver=e,this._pipeResolver=t,this._directiveCache=new Map,this._pipeCache=new Map}return e.prototype.getResolvedDirectiveMetadata=function(e){var t=this._directiveCache.get(e);return c.isBlank(t)&&(t=l.DirectiveProvider.createFromType(e,this._directiveResolver.resolve(e)),this._directiveCache.set(e,t)),t},e.prototype.getResolvedPipeMetadata=function(e){var t=this._pipeCache.get(e);return c.isBlank(t)&&(t=p.PipeProvider.createFromType(e,this._pipeResolver.resolve(e)),this._pipeCache.set(e,t)),t},e=o([s.Injectable(),a("design:paramtypes",[u.DirectiveResolver,d.PipeResolver])],e)}();return t.ResolvedMetadataCache=f,t.CODEGEN_RESOLVED_METADATA_CACHE=new f(u.CODEGEN_DIRECTIVE_RESOLVER,d.CODEGEN_PIPE_RESOLVER),n.define=i,r.exports}),System.register("angular2/src/platform/dom/debug/ng_probe",["angular2/src/facade/lang","angular2/src/core/di","angular2/src/platform/dom/dom_adapter","angular2/src/core/debug/debug_node","angular2/src/platform/dom/dom_renderer","angular2/core","angular2/src/core/debug/debug_renderer"],!0,function(e,t,r){function n(e){return p.getDebugNode(e)}function i(e){return c.assertionsEnabled()?o(e):e}function o(e){return u.DOM.setGlobalVar(m,n),u.DOM.setGlobalVar(v,g),new h.DebugDomRootRenderer(e)}var a=System.global,s=a.define;a.define=void 0;var c=e("angular2/src/facade/lang"),l=e("angular2/src/core/di"),u=e("angular2/src/platform/dom/dom_adapter"),p=e("angular2/src/core/debug/debug_node"),d=e("angular2/src/platform/dom/dom_renderer"),f=e("angular2/core"),h=e("angular2/src/core/debug/debug_renderer"),g=c.CONST_EXPR({ApplicationRef:f.ApplicationRef,NgZone:f.NgZone}),m="ng.probe",v="ng.coreTokens";return t.inspectNativeElement=n,t.ELEMENT_PROBE_PROVIDERS=c.CONST_EXPR([new l.Provider(f.RootRenderer,{useFactory:i,deps:[d.DomRootRenderer]})]),t.ELEMENT_PROBE_PROVIDERS_PROD_MODE=c.CONST_EXPR([new l.Provider(f.RootRenderer,{useFactory:o,deps:[d.DomRootRenderer]})]),a.define=s,r.exports}),System.register("angular2/src/core/di/provider",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/reflection/reflection","angular2/src/core/di/key","angular2/src/core/di/metadata","angular2/src/core/di/exceptions","angular2/src/core/di/forward_ref"],!0,function(e,t,r){function n(e){return new k(e)}function i(e,t){var r=t.useClass,n=t.useValue,i=t.useExisting,o=t.useFactory,a=t.deps,s=t.multi;return new D(e,{useClass:r,useValue:n,useExisting:i,useFactory:o,deps:a,multi:s})}function o(e){var t,r;if(_.isPresent(e.useClass)){var n=R.resolveForwardRef(e.useClass);t=w.reflector.factory(n),r=p(n)}else _.isPresent(e.useExisting)?(t=function(e){return e},r=[x.fromKey(P.Key.get(e.useExisting))]):_.isPresent(e.useFactory)?(t=e.useFactory,r=u(e.useFactory,e.dependencies)):(t=function(){return e.useValue},r=O);return new I(t,r)}function a(e){return new T(P.Key.get(e.token),[o(e)],e.multi)}function s(e){var t=l(e,[]),r=t.map(a);return C.MapWrapper.values(c(r,new Map))}function c(e,t){for(var r=0;r<e.length;r++){var n=e[r],i=t.get(n.key.id);if(_.isPresent(i)){if(n.multiProvider!==i.multiProvider)throw new S.MixingMultiProvidersWithRegularProvidersError(i,n);if(n.multiProvider)for(var o=0;o<n.resolvedFactories.length;o++)i.resolvedFactories.push(n.resolvedFactories[o]);else t.set(n.key.id,n)}else{var a;a=n.multiProvider?new T(n.key,C.ListWrapper.clone(n.resolvedFactories),n.multiProvider):n,t.set(n.key.id,a)}}return t}function l(e,t){return e.forEach(function(e){if(e instanceof _.Type)t.push(i(e,{useClass:e}));else if(e instanceof D)t.push(e);else{if(!(e instanceof Array))throw e instanceof k?new S.InvalidProviderError(e.token):new S.InvalidProviderError(e);l(e,t)}}),t}function u(e,t){if(_.isBlank(t))return p(e);var r=t.map(function(e){return[e]});return t.map(function(t){return d(e,t,r)})}function p(e){var t=w.reflector.parameters(e);if(_.isBlank(t))return[];if(t.some(_.isBlank))throw new S.NoAnnotationError(e,t);return t.map(function(r){return d(e,r,t)})}function d(e,t,r){var n=[],i=null,o=!1;if(!_.isArray(t))return t instanceof E.InjectMetadata?f(t.token,o,null,null,n):f(t,o,null,null,n);for(var a=null,s=null,c=0;c<t.length;++c){var l=t[c];l instanceof _.Type?i=l:l instanceof E.InjectMetadata?i=l.token:l instanceof E.OptionalMetadata?o=!0:l instanceof E.SelfMetadata?s=l:l instanceof E.HostMetadata?s=l:l instanceof E.SkipSelfMetadata?a=l:l instanceof E.DependencyMetadata&&(_.isPresent(l.token)&&(i=l.token),n.push(l))}if(i=R.resolveForwardRef(i),_.isPresent(i))return f(i,o,a,s,n);throw new S.NoAnnotationError(e,r)}function f(e,t,r,n,i){return new x(P.Key.get(e),t,r,n,i)}var h=System.global,g=h.define;h.define=void 0;var m=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},v=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},y=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},_=e("angular2/src/facade/lang"),b=e("angular2/src/facade/exceptions"),C=e("angular2/src/facade/collection"),w=e("angular2/src/core/reflection/reflection"),P=e("angular2/src/core/di/key"),E=e("angular2/src/core/di/metadata"),S=e("angular2/src/core/di/exceptions"),R=e("angular2/src/core/di/forward_ref"),x=function(){function e(e,t,r,n,i){this.key=e,this.optional=t,this.lowerBoundVisibility=r,this.upperBoundVisibility=n,this.properties=i}return e.fromKey=function(t){return new e(t,!1,null,null,[])},e}();t.Dependency=x;var O=_.CONST_EXPR([]),D=function(){function e(e,t){var r=t.useClass,n=t.useValue,i=t.useExisting,o=t.useFactory,a=t.deps,s=t.multi;this.token=e,this.useClass=r,this.useValue=n,this.useExisting=i,this.useFactory=o,this.dependencies=a,this._multi=s}return Object.defineProperty(e.prototype,"multi",{get:function(){return _.normalizeBool(this._multi)},enumerable:!0,configurable:!0}),e=v([_.CONST(),y("design:paramtypes",[Object,Object])],e)}();t.Provider=D;var A=function(e){function t(t,r){var n=r.toClass,i=r.toValue,o=r.toAlias,a=r.toFactory,s=r.deps,c=r.multi;e.call(this,t,{useClass:n,useValue:i,useExisting:o,useFactory:a,deps:s,multi:c})}return m(t,e),Object.defineProperty(t.prototype,"toClass",{get:function(){return this.useClass},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"toAlias",{get:function(){return this.useExisting},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"toFactory",{get:function(){return this.useFactory},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"toValue",{get:function(){return this.useValue},enumerable:!0,configurable:!0}),t=v([_.CONST(),y("design:paramtypes",[Object,Object])],t)}(D);t.Binding=A;var T=function(){function e(e,t,r){this.key=e,this.resolvedFactories=t,this.multiProvider=r}return Object.defineProperty(e.prototype,"resolvedFactory",{get:function(){return this.resolvedFactories[0]},enumerable:!0,configurable:!0}),e}();t.ResolvedProvider_=T;var I=function(){function e(e,t){this.factory=e,this.dependencies=t}return e}();t.ResolvedFactory=I,t.bind=n,t.provide=i;var k=function(){function e(e){this.token=e}return e.prototype.toClass=function(e){if(!_.isType(e))throw new b.BaseException('Trying to create a class provider but "'+_.stringify(e)+'" is not a class!');return new D(this.token,{useClass:e})},e.prototype.toValue=function(e){return new D(this.token,{useValue:e})},e.prototype.toAlias=function(e){if(_.isBlank(e))throw new b.BaseException("Can not alias "+_.stringify(this.token)+" to a blank value!");return new D(this.token,{useExisting:e})},e.prototype.toFactory=function(e,t){if(!_.isFunction(e))throw new b.BaseException('Trying to create a factory provider but "'+_.stringify(e)+'" is not a function!');return new D(this.token,{useFactory:e,deps:t})},e}();return t.ProviderBuilder=k,t.resolveFactory=o,t.resolveProvider=a,t.resolveProviders=s,t.mergeResolvedProviders=c,h.define=g,r.exports}),System.register("angular2/src/animate/css_animation_builder",["angular2/src/animate/css_animation_options","angular2/src/animate/animation"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/animate/css_animation_options"),a=e("angular2/src/animate/animation"),s=function(){function e(e){this.browserDetails=e,this.data=new o.CssAnimationOptions}return e.prototype.addAnimationClass=function(e){return this.data.animationClasses.push(e),this},e.prototype.addClass=function(e){return this.data.classesToAdd.push(e),this},e.prototype.removeClass=function(e){return this.data.classesToRemove.push(e),this},e.prototype.setDuration=function(e){return this.data.duration=e,this},e.prototype.setDelay=function(e){return this.data.delay=e,this},e.prototype.setStyles=function(e,t){return this.setFromStyles(e).setToStyles(t)},e.prototype.setFromStyles=function(e){return this.data.fromStyles=e,this},e.prototype.setToStyles=function(e){return this.data.toStyles=e,this},e.prototype.start=function(e){return new a.Animation(e,this.data,this.browserDetails)},e}();return t.CssAnimationBuilder=s,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/abstract_change_detector",["angular2/src/facade/lang","angular2/src/facade/collection","angular2/src/core/change_detection/change_detection_util","angular2/src/core/change_detection/change_detector_ref","angular2/src/core/change_detection/exceptions","angular2/src/core/change_detection/parser/locals","angular2/src/core/change_detection/constants","angular2/src/core/profile/profile","angular2/src/facade/async"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/facade/collection"),s=e("angular2/src/core/change_detection/change_detection_util"),c=e("angular2/src/core/change_detection/change_detector_ref"),l=e("angular2/src/core/change_detection/exceptions"),u=e("angular2/src/core/change_detection/parser/locals"),p=e("angular2/src/core/change_detection/constants"),d=e("angular2/src/core/profile/profile"),f=e("angular2/src/facade/async"),h=d.wtfCreateScope("ChangeDetector#check(ascii id, bool throwOnChange)"),g=function(){function e(e,t,r,n,i,o){this.element=e,this.componentElement=t,this.context=r,this.locals=n,this.injector=i,this.expression=o}return e}(),m=function(){function e(e,t,r,n,i){this.id=e,this.numberOfPropertyProtoRecords=t,this.bindingTargets=r,this.directiveIndices=n,this.strategy=i,this.contentChildren=[],this.viewChildren=[],this.state=p.ChangeDetectorState.NeverChecked,this.locals=null,this.mode=null,this.pipes=null,this.ref=new c.ChangeDetectorRef_(this)}return e.prototype.addContentChild=function(e){this.contentChildren.push(e),e.parent=this},e.prototype.removeContentChild=function(e){a.ListWrapper.remove(this.contentChildren,e)},e.prototype.addViewChild=function(e){this.viewChildren.push(e),e.parent=this},e.prototype.removeViewChild=function(e){a.ListWrapper.remove(this.viewChildren,e)},e.prototype.remove=function(){this.parent.removeContentChild(this)},e.prototype.handleEvent=function(e,t,r){this.hydrated()||this.throwDehydratedError(this.id+" -> "+e);try{var n=new Map;n.set("$event",r);var i=!this.handleEventInternal(e,t,new u.Locals(this.locals,n));return this.markPathToRootAsCheckOnce(),i}catch(a){var s=this.dispatcher.getDebugContext(null,t,null),c=o.isPresent(s)?new l.EventEvaluationErrorContext(s.element,s.componentElement,s.context,s.locals,s.injector):null;throw new l.EventEvaluationError(e,a,a.stack,c)}},e.prototype.handleEventInternal=function(e,t,r){return!1},e.prototype.detectChanges=function(){this.runDetectChanges(!1)},e.prototype.checkNoChanges=function(){o.assertionsEnabled()&&this.runDetectChanges(!0)},e.prototype.runDetectChanges=function(e){if(this.mode!==p.ChangeDetectionStrategy.Detached&&this.mode!==p.ChangeDetectionStrategy.Checked&&this.state!==p.ChangeDetectorState.Errored){var t=h(this.id,e);this.detectChangesInRecords(e),this._detectChangesContentChildren(e),e||this.afterContentLifecycleCallbacks(),this._detectChangesInViewChildren(e),e||this.afterViewLifecycleCallbacks(),this.mode===p.ChangeDetectionStrategy.CheckOnce&&(this.mode=p.ChangeDetectionStrategy.Checked),this.state=p.ChangeDetectorState.CheckedBefore,d.wtfLeave(t)}},e.prototype.detectChangesInRecords=function(e){this.hydrated()||this.throwDehydratedError(this.id);try{this.detectChangesInRecordsInternal(e)}catch(t){t instanceof l.ExpressionChangedAfterItHasBeenCheckedException||(this.state=p.ChangeDetectorState.Errored),this._throwError(t,t.stack)}},e.prototype.detectChangesInRecordsInternal=function(e){},e.prototype.hydrate=function(e,t,r,n){this.dispatcher=r,this.mode=s.ChangeDetectionUtil.changeDetectionMode(this.strategy),this.context=e,this.locals=t,this.pipes=n,this.hydrateDirectives(r),this.state=p.ChangeDetectorState.NeverChecked},e.prototype.hydrateDirectives=function(e){},e.prototype.dehydrate=function(){this.dehydrateDirectives(!0),this._unsubscribeFromOutputs(),this.dispatcher=null,this.context=null,this.locals=null,this.pipes=null},e.prototype.dehydrateDirectives=function(e){},e.prototype.hydrated=function(){return o.isPresent(this.context)},e.prototype.destroyRecursive=function(){this.dispatcher.notifyOnDestroy(),this.dehydrate();for(var e=this.contentChildren,t=0;t<e.length;t++)e[t].destroyRecursive();e=this.viewChildren;for(var t=0;t<e.length;t++)e[t].destroyRecursive()},e.prototype.afterContentLifecycleCallbacks=function(){this.dispatcher.notifyAfterContentChecked(),this.afterContentLifecycleCallbacksInternal()},e.prototype.afterContentLifecycleCallbacksInternal=function(){},e.prototype.afterViewLifecycleCallbacks=function(){this.dispatcher.notifyAfterViewChecked(),this.afterViewLifecycleCallbacksInternal()},e.prototype.afterViewLifecycleCallbacksInternal=function(){},e.prototype._detectChangesContentChildren=function(e){for(var t=this.contentChildren,r=0;r<t.length;++r)t[r].runDetectChanges(e)},e.prototype._detectChangesInViewChildren=function(e){for(var t=this.viewChildren,r=0;r<t.length;++r)t[r].runDetectChanges(e)},e.prototype.markAsCheckOnce=function(){this.mode=p.ChangeDetectionStrategy.CheckOnce},e.prototype.markPathToRootAsCheckOnce=function(){for(var e=this;o.isPresent(e)&&e.mode!==p.ChangeDetectionStrategy.Detached;)e.mode===p.ChangeDetectionStrategy.Checked&&(e.mode=p.ChangeDetectionStrategy.CheckOnce),e=e.parent},e.prototype._unsubscribeFromOutputs=function(){if(o.isPresent(this.outputSubscriptions))for(var e=0;e<this.outputSubscriptions.length;++e)f.ObservableWrapper.dispose(this.outputSubscriptions[e]),this.outputSubscriptions[e]=null},e.prototype.getDirectiveFor=function(e,t){return e.getDirectiveFor(this.directiveIndices[t])},e.prototype.getDetectorFor=function(e,t){return e.getDetectorFor(this.directiveIndices[t])},e.prototype.notifyDispatcher=function(e){this.dispatcher.notifyOnBinding(this._currentBinding(),e)},e.prototype.logBindingUpdate=function(e){this.dispatcher.logBindingUpdate(this._currentBinding(),e)},e.prototype.addChange=function(e,t,r){return o.isBlank(e)&&(e={}),e[this._currentBinding().name]=s.ChangeDetectionUtil.simpleChange(t,r),e},e.prototype._throwError=function(e,t){var r;try{var n=this.dispatcher.getDebugContext(null,this._currentBinding().elementIndex,null),i=o.isPresent(n)?new g(n.element,n.componentElement,n.context,n.locals,n.injector,this._currentBinding().debug):null;r=new l.ChangeDetectionError(this._currentBinding().debug,e,t,i)}catch(a){r=new l.ChangeDetectionError(null,e,t,null)}throw r},e.prototype.throwOnChangeError=function(e,t){throw new l.ExpressionChangedAfterItHasBeenCheckedException(this._currentBinding().debug,e,t,null)},e.prototype.throwDehydratedError=function(e){throw new l.DehydratedException(e)},e.prototype._currentBinding=function(){return this.bindingTargets[this.propertyBindingIndex]},e}();return t.AbstractChangeDetector=m,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/change_detection_jit_generator",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/change_detection/abstract_change_detector","angular2/src/core/change_detection/change_detection_util","angular2/src/core/change_detection/proto_record","angular2/src/core/change_detection/codegen_name_util","angular2/src/core/change_detection/codegen_logic_util","angular2/src/core/change_detection/codegen_facade","angular2/src/core/change_detection/constants","angular2/src/core/change_detection/proto_change_detector"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/facade/exceptions"),s=e("angular2/src/facade/collection"),c=e("angular2/src/core/change_detection/abstract_change_detector"),l=e("angular2/src/core/change_detection/change_detection_util"),u=e("angular2/src/core/change_detection/proto_record"),p=e("angular2/src/core/change_detection/codegen_name_util"),d=e("angular2/src/core/change_detection/codegen_logic_util"),f=e("angular2/src/core/change_detection/codegen_facade"),h=e("angular2/src/core/change_detection/constants"),g=e("angular2/src/core/change_detection/proto_change_detector"),m="isChanged",v="changes",y=function(){function e(e,t,r,n){this.changeDetectionUtilVarName=t,this.abstractChangeDetectorVarName=r,this.changeDetectorStateVarName=n;var i=g.createPropertyRecords(e),o=g.createEventRecords(e),a=e.bindingRecords.map(function(e){return e.target});this.id=e.id,this.changeDetectionStrategy=e.strategy,this.genConfig=e.genConfig,this.records=i,this.propertyBindingTargets=a,this.eventBindings=o,this.directiveRecords=e.directiveRecords,this._names=new p.CodegenNameUtil(this.records,this.eventBindings,this.directiveRecords,this.changeDetectionUtilVarName),this._logic=new d.CodegenLogicUtil(this._names,this.changeDetectionUtilVarName,this.changeDetectorStateVarName),this.typeName=p.sanitizeName("ChangeDetector_"+this.id)}return e.prototype.generate=function(){var e="\n      "+this.generateSource()+"\n      return function() {\n        return new "+this.typeName+"();\n      }\n    ";return new Function(this.abstractChangeDetectorVarName,this.changeDetectionUtilVarName,this.changeDetectorStateVarName,e)(c.AbstractChangeDetector,l.ChangeDetectionUtil,h.ChangeDetectorState)},e.prototype.generateSource=function(){return"\n      var "+this.typeName+" = function "+this.typeName+"() {\n        "+this.abstractChangeDetectorVarName+".call(\n            this, "+JSON.stringify(this.id)+", "+this.records.length+",\n            "+this.typeName+".gen_propertyBindingTargets, "+this.typeName+".gen_directiveIndices,\n            "+f.codify(this.changeDetectionStrategy)+");\n        this.dehydrateDirectives(false);\n      }\n\n      "+this.typeName+".prototype = Object.create("+this.abstractChangeDetectorVarName+".prototype);\n\n      "+this.typeName+".prototype.detectChangesInRecordsInternal = function(throwOnChange) {\n        "+this._names.genInitLocals()+"\n        var "+m+" = false;\n        var "+v+" = null;\n\n        "+this._genAllRecords(this.records)+"\n      }\n\n      "+this._maybeGenHandleEventInternal()+"\n\n      "+this._maybeGenAfterContentLifecycleCallbacks()+"\n\n      "+this._maybeGenAfterViewLifecycleCallbacks()+"\n\n      "+this._maybeGenHydrateDirectives()+"\n\n      "+this._maybeGenDehydrateDirectives()+"\n\n      "+this._genPropertyBindingTargets()+"\n\n      "+this._genDirectiveIndices()+"\n    "},e.prototype._genPropertyBindingTargets=function(){var e=this._logic.genPropertyBindingTargets(this.propertyBindingTargets,this.genConfig.genDebugInfo);return this.typeName+".gen_propertyBindingTargets = "+e+";"},e.prototype._genDirectiveIndices=function(){var e=this._logic.genDirectiveIndices(this.directiveRecords);return this.typeName+".gen_directiveIndices = "+e+";"},e.prototype._maybeGenHandleEventInternal=function(){var e=this;if(this.eventBindings.length>0){var t=this.eventBindings.map(function(t){return e._genEventBinding(t)}).join("\n");return"\n        "+this.typeName+".prototype.handleEventInternal = function(eventName, elIndex, locals) {\n          var "+this._names.getPreventDefaultAccesor()+" = false;\n          "+this._names.genInitEventLocals()+"\n          "+t+"\n          return "+this._names.getPreventDefaultAccesor()+";\n        }\n      "}return""},e.prototype._genEventBinding=function(e){var t=this,r=[];return this._endOfBlockIdxs=[],s.ListWrapper.forEachWithIndex(e.records,function(n,i){var o;o=n.isConditionalSkipRecord()?t._genConditionalSkip(n,t._names.getEventLocalName(e,i)):n.isUnconditionalSkipRecord()?t._genUnconditionalSkip(n):t._genEventBindingEval(e,n),o+=t._genEndOfSkipBlock(i),r.push(o)}),'\n    if (eventName === "'+e.eventName+'" && elIndex === '+e.elIndex+") {\n      "+r.join("\n")+"\n    }"},e.prototype._genEventBindingEval=function(e,t){if(t.lastInBinding){var r=this._logic.genEventBindingEvalValue(e,t),n=this._genMarkPathToRootAsCheckOnce(t),i=this._genUpdatePreventDefault(e,t);return n+"\n"+r+"\n"+i}return this._logic.genEventBindingEvalValue(e,t)},e.prototype._genMarkPathToRootAsCheckOnce=function(e){var t=e.bindingRecord;return t.isDefaultChangeDetection()?"":this._names.getDetectorName(t.directiveRecord.directiveIndex)+".markPathToRootAsCheckOnce();"},e.prototype._genUpdatePreventDefault=function(e,t){var r=this._names.getEventLocalName(e,t.selfIndex);return"if ("+r+" === false) { "+this._names.getPreventDefaultAccesor()+" = true};"},e.prototype._maybeGenDehydrateDirectives=function(){var e=this._names.genPipeOnDestroy(),t=this._logic.genDirectivesOnDestroy(this.directiveRecords),r=this._names.genDehydrateFields();return e||t||r?this.typeName+".prototype.dehydrateDirectives = function(destroyPipes) {\n        if (destroyPipes) {\n          "+e+"\n          "+t+"\n        }\n        "+r+"\n    }":""},e.prototype._maybeGenHydrateDirectives=function(){var e=this._logic.genHydrateDirectives(this.directiveRecords),t=this._logic.genHydrateDetectors(this.directiveRecords);return e||t?this.typeName+".prototype.hydrateDirectives = function(directives) {\n      "+e+"\n      "+t+"\n    }":""},e.prototype._maybeGenAfterContentLifecycleCallbacks=function(){var e=this._logic.genContentLifecycleCallbacks(this.directiveRecords);if(e.length>0){var t=e.join("\n");return"\n        "+this.typeName+".prototype.afterContentLifecycleCallbacksInternal = function() {\n          "+t+"\n        }\n      "}return""},e.prototype._maybeGenAfterViewLifecycleCallbacks=function(){var e=this._logic.genViewLifecycleCallbacks(this.directiveRecords);if(e.length>0){var t=e.join("\n");return"\n        "+this.typeName+".prototype.afterViewLifecycleCallbacksInternal = function() {\n          "+t+"\n        }\n      "}return""},e.prototype._genAllRecords=function(e){var t=[];this._endOfBlockIdxs=[];for(var r=0;r<e.length;r++){var n=void 0,i=e[r];n=i.isLifeCycleRecord()?this._genDirectiveLifecycle(i):i.isPipeRecord()?this._genPipeCheck(i):i.isConditionalSkipRecord()?this._genConditionalSkip(i,this._names.getLocalName(i.contextIndex)):i.isUnconditionalSkipRecord()?this._genUnconditionalSkip(i):this._genReferenceCheck(i),n="\n        "+this._maybeFirstInBinding(i)+"\n        "+n+"\n        "+this._maybeGenLastInDirective(i)+"\n        "+this._genEndOfSkipBlock(r)+"\n      ",t.push(n)}return t.join("\n")},e.prototype._genConditionalSkip=function(e,t){var r=e.mode===u.RecordType.SkipRecordsIf?"!":"";return this._endOfBlockIdxs.push(e.fixedArgs[0]-1),"if ("+r+t+") {"},e.prototype._genUnconditionalSkip=function(e){return this._endOfBlockIdxs.pop(),this._endOfBlockIdxs.push(e.fixedArgs[0]-1),"} else {"},e.prototype._genEndOfSkipBlock=function(e){if(!s.ListWrapper.isEmpty(this._endOfBlockIdxs)){var t=s.ListWrapper.last(this._endOfBlockIdxs);if(e===t)return this._endOfBlockIdxs.pop(),"}"}return""},e.prototype._genDirectiveLifecycle=function(e){if("DoCheck"===e.name)return this._genOnCheck(e);if("OnInit"===e.name)return this._genOnInit(e);if("OnChanges"===e.name)return this._genOnChange(e);throw new a.BaseException("Unknown lifecycle event '"+e.name+"'")},e.prototype._genPipeCheck=function(e){var t=this,r=this._names.getLocalName(e.contextIndex),n=e.args.map(function(e){return t._names.getLocalName(e)}).join(", "),i=this._names.getFieldName(e.selfIndex),o=this._names.getLocalName(e.selfIndex),a=this._names.getPipeName(e.selfIndex),s=e.name,c="\n      if ("+a+" === "+this.changeDetectionUtilVarName+".uninitialized) {\n        "+a+" = "+this._names.getPipesAccessorName()+".get('"+s+"');\n      }\n    ",l=o+" = "+a+".pipe.transform("+r+", ["+n+"]);",u=e.args.map(function(e){return t._names.getChangeName(e)});u.push(this._names.getChangeName(e.contextIndex));var p="!"+a+".pure || ("+u.join(" || ")+")",d="\n      "+this._genThrowOnChangeCheck(i,o)+"\n      if ("+this.changeDetectionUtilVarName+".looseNotIdentical("+i+", "+o+")) {\n        "+o+" = "+this.changeDetectionUtilVarName+".unwrapValue("+o+")\n        "+this._genChangeMarker(e)+"\n        "+this._genUpdateDirectiveOrElement(e)+"\n        "+this._genAddToChanges(e)+"\n        "+i+" = "+o+";\n      }\n    ",f=e.shouldBeChecked()?""+l+d:l;return e.isUsedByOtherRecord()?c+" if ("+p+") { "+f+" } else { "+o+" = "+i+"; }":c+" if ("+p+") { "+f+" }"},e.prototype._genReferenceCheck=function(e){var t=this,r=this._names.getFieldName(e.selfIndex),n=this._names.getLocalName(e.selfIndex),i="\n      "+this._logic.genPropertyBindingEvalValue(e)+"\n    ",o="\n      "+this._genThrowOnChangeCheck(r,n)+"\n      if ("+this.changeDetectionUtilVarName+".looseNotIdentical("+r+", "+n+")) {\n        "+this._genChangeMarker(e)+"\n        "+this._genUpdateDirectiveOrElement(e)+"\n        "+this._genAddToChanges(e)+"\n        "+r+" = "+n+";\n      }\n    ",a=e.shouldBeChecked()?""+i+o:i;if(e.isPureFunction()){var s=e.args.map(function(e){return t._names.getChangeName(e)}).join(" || ");return e.isUsedByOtherRecord()?"if ("+s+") { "+a+" } else { "+n+" = "+r+"; }":"if ("+s+") { "+a+" }"}return a},e.prototype._genChangeMarker=function(e){return e.argumentToPureFunction?this._names.getChangeName(e.selfIndex)+" = true":""},e.prototype._genUpdateDirectiveOrElement=function(e){if(!e.lastInBinding)return"";var t=this._names.getLocalName(e.selfIndex),r=this.genConfig.logBindingUpdate?"this.logBindingUpdate("+t+");":"",n=e.bindingRecord;if(n.target.isDirective()){var i=this._names.getDirectiveName(n.directiveRecord.directiveIndex)+"."+n.target.name;return"\n        "+i+" = "+t+";\n        "+r+"\n        "+m+" = true;\n      "}return"\n        this.notifyDispatcher("+t+");\n        "+r+"\n      "},e.prototype._genThrowOnChangeCheck=function(e,t){return o.assertionsEnabled()?"\n        if (throwOnChange && !"+this.changeDetectionUtilVarName+".devModeEqual("+e+", "+t+")) {\n          this.throwOnChangeError("+e+", "+t+");\n        }\n        ":""},e.prototype._genAddToChanges=function(e){var t=this._names.getLocalName(e.selfIndex),r=this._names.getFieldName(e.selfIndex);return e.bindingRecord.callOnChanges()?v+" = this.addChange("+v+", "+r+", "+t+");":""},e.prototype._maybeFirstInBinding=function(e){var t=l.ChangeDetectionUtil.protoByIndex(this.records,e.selfIndex-1),r=o.isBlank(t)||t.bindingRecord!==e.bindingRecord;return r&&!e.bindingRecord.isDirectiveLifecycle()?this._names.getPropertyBindingIndex()+" = "+e.propertyBindingIndex+";":""},e.prototype._maybeGenLastInDirective=function(e){return e.lastInDirective?"\n      "+v+" = null;\n      "+this._genNotifyOnPushDetectors(e)+"\n      "+m+" = false;\n    ":""},e.prototype._genOnCheck=function(e){var t=e.bindingRecord;return"if (!throwOnChange) "+this._names.getDirectiveName(t.directiveRecord.directiveIndex)+".ngDoCheck();"},e.prototype._genOnInit=function(e){var t=e.bindingRecord;return"if (!throwOnChange && "+this._names.getStateName()+" === "+this.changeDetectorStateVarName+".NeverChecked) "+this._names.getDirectiveName(t.directiveRecord.directiveIndex)+".ngOnInit();"},e.prototype._genOnChange=function(e){var t=e.bindingRecord;return"if (!throwOnChange && "+v+") "+this._names.getDirectiveName(t.directiveRecord.directiveIndex)+".ngOnChanges("+v+");"},e.prototype._genNotifyOnPushDetectors=function(e){var t=e.bindingRecord;if(!e.lastInDirective||t.isDefaultChangeDetection())return"";var r="\n      if("+m+") {\n        "+this._names.getDetectorName(t.directiveRecord.directiveIndex)+".markAsCheckOnce();\n      }\n    ";return r},e}();return t.ChangeDetectorJITGenerator=y,n.define=i,r.exports}),System.register("angular2/src/core/linker/view",["angular2/src/facade/collection","angular2/src/core/change_detection/change_detection","angular2/src/core/change_detection/interfaces","angular2/src/core/linker/element","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/core/render/api","angular2/src/core/linker/view_ref","angular2/src/core/pipes/pipes","angular2/src/core/render/util","angular2/src/core/change_detection/interfaces","angular2/src/core/pipes/pipes","angular2/src/core/linker/view_type"],!0,function(e,t,r){function n(e){for(var t={},r=e;m.isPresent(r);)t=d.StringMapWrapper.merge(t,d.MapWrapper.toStringMap(r.current)),r=r.parent;return t}function i(e){return o(e,[])}function o(e,t){for(var r=0;r<e.length;r++){var n=e[r];if(n instanceof g.AppElement){var i=n;if(t.push(i.nativeElement),m.isPresent(i.nestedViews))for(var a=0;a<i.nestedViews.length;a++)o(i.nestedViews[a].rootNodesOrAppElements,t)}else t.push(n)}return t}function a(e){var t;if(e instanceof g.AppElement){var r=e;if(t=r.nativeElement,m.isPresent(r.nestedViews))for(var n=r.nestedViews.length-1;n>=0;n--){
var i=r.nestedViews[n];i.rootNodesOrAppElements.length>0&&(t=a(i.rootNodesOrAppElements[i.rootNodesOrAppElements.length-1]))}}else t=e;return t}function s(e,t,r){var n=m.isPresent(r)?r.length:0;if(t>n)throw new v.BaseException("The component "+e+" has "+t+" <ng-content> elements,"+(" but only "+n+" slots were provided."))}var c=System.global,l=c.define;c.define=void 0;var u=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},p=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},d=e("angular2/src/facade/collection"),f=e("angular2/src/core/change_detection/change_detection"),h=e("angular2/src/core/change_detection/interfaces"),g=e("angular2/src/core/linker/element"),m=e("angular2/src/facade/lang"),v=e("angular2/src/facade/exceptions"),y=e("angular2/src/core/render/api"),_=e("angular2/src/core/linker/view_ref"),b=e("angular2/src/core/pipes/pipes"),C=e("angular2/src/core/render/util"),w=e("angular2/src/core/change_detection/interfaces");t.DebugContext=w.DebugContext;var P=e("angular2/src/core/pipes/pipes"),E=e("angular2/src/core/linker/view_type"),S="ng-reflect-",R=m.CONST_EXPR(new Object),x=function(){function e(e,t,r,n,i,o,a,s){this.proto=e,this.renderer=t,this.viewManager=r,this.projectableNodes=n,this.containerAppElement=i,this.changeDetector=s,this.context=null,this.destroyed=!1,this.ref=new _.ViewRef_(this);var c=g.AppElement.getViewParentInjector(this.proto.type,i,o,a);this.parentInjector=c.injector,this.hostInjectorBoundary=c.hostInjectorBoundary;var l,u;switch(e.type){case E.ViewType.COMPONENT:l=new P.Pipes(e.protoPipes,i.getInjector()),u=i.getComponent();break;case E.ViewType.EMBEDDED:l=i.parentView.pipes,u=i.parentView.context;break;case E.ViewType.HOST:l=null,u=R}this.pipes=l,this.context=u}return e.prototype.init=function(e,t,r,n){this.rootNodesOrAppElements=e,this.allNodes=t,this.disposables=r,this.appElements=n;var i=new d.Map;d.StringMapWrapper.forEach(this.proto.templateVariableBindings,function(e,t){i.set(e,null)});for(var o=0;o<n.length;o++){var a=n[o],s=[];if(m.isPresent(a.proto.protoInjector))for(var c=0;c<a.proto.protoInjector.numberOfProviders;c++)s.push(a.proto.protoInjector.getProviderAtIndex(c).key.token);d.StringMapWrapper.forEach(a.proto.directiveVariableBindings,function(e,t){m.isBlank(e)?i.set(t,a.nativeElement):i.set(t,a.getDirectiveAtIndex(e))}),this.renderer.setElementDebugInfo(a.nativeElement,new y.RenderDebugInfo(a.getInjector(),a.getComponent(),s,i))}var l=null;this.proto.type!==E.ViewType.COMPONENT&&(l=m.isPresent(this.containerAppElement)?this.containerAppElement.parentView.locals:null),this.proto.type===E.ViewType.COMPONENT&&(this.containerAppElement.attachComponentView(this),this.containerAppElement.parentView.changeDetector.addViewChild(this.changeDetector)),this.locals=new f.Locals(l,i),this.changeDetector.hydrate(this.context,this.locals,this,this.pipes),this.viewManager.onViewCreated(this)},e.prototype.destroy=function(){if(this.destroyed)throw new v.BaseException("This view has already been destroyed!");this.changeDetector.destroyRecursive()},e.prototype.notifyOnDestroy=function(){this.destroyed=!0;var e=this.proto.type===E.ViewType.COMPONENT?this.containerAppElement.nativeElement:null;this.renderer.destroyView(e,this.allNodes);for(var t=0;t<this.disposables.length;t++)this.disposables[t]();this.viewManager.onViewDestroyed(this)},Object.defineProperty(e.prototype,"changeDetectorRef",{get:function(){return this.changeDetector.ref},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"flatRootNodes",{get:function(){return i(this.rootNodesOrAppElements)},enumerable:!0,configurable:!0}),e.prototype.hasLocal=function(e){return d.StringMapWrapper.contains(this.proto.templateVariableBindings,e)},e.prototype.setLocal=function(e,t){if(this.hasLocal(e)){var r=this.proto.templateVariableBindings[e];this.locals.set(r,t)}},e.prototype.notifyOnBinding=function(e,t){if(e.isTextNode())this.renderer.setText(this.allNodes[e.elementIndex],t);else{var r=this.appElements[e.elementIndex].nativeElement;if(e.isElementProperty())this.renderer.setElementProperty(r,e.name,t);else if(e.isElementAttribute())this.renderer.setElementAttribute(r,e.name,m.isPresent(t)?""+t:null);else if(e.isElementClass())this.renderer.setElementClass(r,e.name,t);else{if(!e.isElementStyle())throw new v.BaseException("Unsupported directive record");var n=m.isPresent(e.unit)?e.unit:"";this.renderer.setElementStyle(r,e.name,m.isPresent(t)?""+t+n:null)}}},e.prototype.logBindingUpdate=function(e,t){if(e.isDirective()||e.isElementProperty()){var r=this.appElements[e.elementIndex].nativeElement;this.renderer.setBindingDebugInfo(r,""+S+C.camelCaseToDashCase(e.name),""+t)}},e.prototype.notifyAfterContentChecked=function(){for(var e=this.appElements.length,t=e-1;t>=0;t--)this.appElements[t].ngAfterContentChecked()},e.prototype.notifyAfterViewChecked=function(){for(var e=this.appElements.length,t=e-1;t>=0;t--)this.appElements[t].ngAfterViewChecked()},e.prototype.getDebugContext=function(e,t,r){try{m.isBlank(e)&&t<this.appElements.length&&(e=this.appElements[t]);var i=this.containerAppElement,o=m.isPresent(e)?e.nativeElement:null,a=m.isPresent(i)?i.nativeElement:null,s=m.isPresent(r)?e.getDirectiveAtIndex(r):null,c=m.isPresent(e)?e.getInjector():null;return new h.DebugContext(o,a,s,this.context,n(this.locals),c)}catch(l){return null}},e.prototype.getDirectiveFor=function(e){return this.appElements[e.elementIndex].getDirectiveAtIndex(e.directiveIndex)},e.prototype.getDetectorFor=function(e){var t=this.appElements[e.elementIndex].componentView;return m.isPresent(t)?t.changeDetector:null},e.prototype.triggerEventHandlers=function(e,t,r){return this.changeDetector.handleEvent(e,r,t)},e}();t.AppView=x;var O=function(){function e(e,t,r){this.type=e,this.protoPipes=t,this.templateVariableBindings=r}return e.create=function(t,r,n,i){var o=null;if(m.isPresent(n)&&n.length>0){for(var a=d.ListWrapper.createFixedSize(n.length),s=0;s<n.length;s++)a[s]=t.getResolvedPipeMetadata(n[s]);o=b.ProtoPipes.fromProviders(a)}return new e(r,o,i)},e}();t.AppProtoView=O;var D=function(){function e(e,t){this.selector=e,this.viewFactory=t}return e=u([m.CONST(),p("design:paramtypes",[String,Function])],e)}();return t.HostViewFactory=D,t.flattenNestedViewRenderNodes=i,t.findLastRenderNode=a,t.checkSlotCount=s,c.define=l,r.exports}),System.register("angular2/src/core/application_common_providers",["angular2/src/facade/lang","angular2/src/core/di","angular2/src/core/application_tokens","angular2/src/core/change_detection/change_detection","angular2/src/core/linker/resolved_metadata_cache","angular2/src/core/linker/view_manager","angular2/src/core/linker/view_manager","angular2/src/core/linker/view_resolver","angular2/src/core/linker/directive_resolver","angular2/src/core/linker/pipe_resolver","angular2/src/core/linker/compiler","angular2/src/core/linker/compiler","angular2/src/core/linker/dynamic_component_loader","angular2/src/core/linker/dynamic_component_loader"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/core/di"),s=e("angular2/src/core/application_tokens"),c=e("angular2/src/core/change_detection/change_detection"),l=e("angular2/src/core/linker/resolved_metadata_cache"),u=e("angular2/src/core/linker/view_manager"),p=e("angular2/src/core/linker/view_manager"),d=e("angular2/src/core/linker/view_resolver"),f=e("angular2/src/core/linker/directive_resolver"),h=e("angular2/src/core/linker/pipe_resolver"),g=e("angular2/src/core/linker/compiler"),m=e("angular2/src/core/linker/compiler"),v=e("angular2/src/core/linker/dynamic_component_loader"),y=e("angular2/src/core/linker/dynamic_component_loader");return t.APPLICATION_COMMON_PROVIDERS=o.CONST_EXPR([new a.Provider(g.Compiler,{useClass:m.Compiler_}),s.APP_ID_RANDOM_PROVIDER,l.ResolvedMetadataCache,new a.Provider(u.AppViewManager,{useClass:p.AppViewManager_}),d.ViewResolver,new a.Provider(c.IterableDiffers,{useValue:c.defaultIterableDiffers}),new a.Provider(c.KeyValueDiffers,{useValue:c.defaultKeyValueDiffers}),f.DirectiveResolver,h.PipeResolver,new a.Provider(v.DynamicComponentLoader,{useClass:y.DynamicComponentLoader_})]),n.define=i,r.exports}),System.register("angular2/src/core/di/injector",["angular2/src/facade/collection","angular2/src/core/di/provider","angular2/src/core/di/exceptions","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/core/di/key","angular2/src/core/di/metadata"],!0,function(e,t,r){function n(e,t){return e===t||t===g.PublicAndPrivate||e===g.PublicAndPrivate}function i(e,t){for(var r=[],n=0;n<e._proto.numberOfProviders;++n)r.push(t(e._proto.getProviderAtIndex(n)));return r}var o=System.global,a=o.define;o.define=void 0;var s=e("angular2/src/facade/collection"),c=e("angular2/src/core/di/provider"),l=e("angular2/src/core/di/exceptions"),u=e("angular2/src/facade/lang"),p=e("angular2/src/facade/exceptions"),d=e("angular2/src/core/di/key"),f=e("angular2/src/core/di/metadata"),h=10;t.UNDEFINED=u.CONST_EXPR(new Object),function(e){e[e.Public=0]="Public",e[e.Private=1]="Private",e[e.PublicAndPrivate=2]="PublicAndPrivate"}(t.Visibility||(t.Visibility={}));var g=t.Visibility,m=function(){function e(e,t){this.provider0=null,this.provider1=null,this.provider2=null,this.provider3=null,this.provider4=null,this.provider5=null,this.provider6=null,this.provider7=null,this.provider8=null,this.provider9=null,this.keyId0=null,this.keyId1=null,this.keyId2=null,this.keyId3=null,this.keyId4=null,this.keyId5=null,this.keyId6=null,this.keyId7=null,this.keyId8=null,this.keyId9=null,this.visibility0=null,this.visibility1=null,this.visibility2=null,this.visibility3=null,this.visibility4=null,this.visibility5=null,this.visibility6=null,this.visibility7=null,this.visibility8=null,this.visibility9=null;var r=t.length;r>0&&(this.provider0=t[0].provider,this.keyId0=t[0].getKeyId(),this.visibility0=t[0].visibility),r>1&&(this.provider1=t[1].provider,this.keyId1=t[1].getKeyId(),this.visibility1=t[1].visibility),r>2&&(this.provider2=t[2].provider,this.keyId2=t[2].getKeyId(),this.visibility2=t[2].visibility),r>3&&(this.provider3=t[3].provider,this.keyId3=t[3].getKeyId(),this.visibility3=t[3].visibility),r>4&&(this.provider4=t[4].provider,this.keyId4=t[4].getKeyId(),this.visibility4=t[4].visibility),r>5&&(this.provider5=t[5].provider,this.keyId5=t[5].getKeyId(),this.visibility5=t[5].visibility),r>6&&(this.provider6=t[6].provider,this.keyId6=t[6].getKeyId(),this.visibility6=t[6].visibility),r>7&&(this.provider7=t[7].provider,this.keyId7=t[7].getKeyId(),this.visibility7=t[7].visibility),r>8&&(this.provider8=t[8].provider,this.keyId8=t[8].getKeyId(),this.visibility8=t[8].visibility),r>9&&(this.provider9=t[9].provider,this.keyId9=t[9].getKeyId(),this.visibility9=t[9].visibility)}return e.prototype.getProviderAtIndex=function(e){if(0==e)return this.provider0;if(1==e)return this.provider1;if(2==e)return this.provider2;if(3==e)return this.provider3;if(4==e)return this.provider4;if(5==e)return this.provider5;if(6==e)return this.provider6;if(7==e)return this.provider7;if(8==e)return this.provider8;if(9==e)return this.provider9;throw new l.OutOfBoundsError(e)},e.prototype.createInjectorStrategy=function(e){return new _(e,this)},e}();t.ProtoInjectorInlineStrategy=m;var v=function(){function e(e,t){var r=t.length;this.providers=s.ListWrapper.createFixedSize(r),this.keyIds=s.ListWrapper.createFixedSize(r),this.visibilities=s.ListWrapper.createFixedSize(r);for(var n=0;r>n;n++)this.providers[n]=t[n].provider,this.keyIds[n]=t[n].getKeyId(),this.visibilities[n]=t[n].visibility}return e.prototype.getProviderAtIndex=function(e){if(0>e||e>=this.providers.length)throw new l.OutOfBoundsError(e);return this.providers[e]},e.prototype.createInjectorStrategy=function(e){return new b(this,e)},e}();t.ProtoInjectorDynamicStrategy=v;var y=function(){function e(e){this.numberOfProviders=e.length,this._strategy=e.length>h?new v(this,e):new m(this,e)}return e.fromResolvedProviders=function(t){var r=t.map(function(e){return new C(e,g.Public)});return new e(r)},e.prototype.getProviderAtIndex=function(e){return this._strategy.getProviderAtIndex(e)},e}();t.ProtoInjector=y;var _=function(){function e(e,r){this.injector=e,this.protoStrategy=r,this.obj0=t.UNDEFINED,this.obj1=t.UNDEFINED,this.obj2=t.UNDEFINED,this.obj3=t.UNDEFINED,this.obj4=t.UNDEFINED,this.obj5=t.UNDEFINED,this.obj6=t.UNDEFINED,this.obj7=t.UNDEFINED,this.obj8=t.UNDEFINED,this.obj9=t.UNDEFINED}return e.prototype.resetConstructionCounter=function(){this.injector._constructionCounter=0},e.prototype.instantiateProvider=function(e,t){return this.injector._new(e,t)},e.prototype.getObjByKeyId=function(e,r){var i=this.protoStrategy,o=this.injector;return i.keyId0===e&&n(i.visibility0,r)?(this.obj0===t.UNDEFINED&&(this.obj0=o._new(i.provider0,i.visibility0)),this.obj0):i.keyId1===e&&n(i.visibility1,r)?(this.obj1===t.UNDEFINED&&(this.obj1=o._new(i.provider1,i.visibility1)),this.obj1):i.keyId2===e&&n(i.visibility2,r)?(this.obj2===t.UNDEFINED&&(this.obj2=o._new(i.provider2,i.visibility2)),this.obj2):i.keyId3===e&&n(i.visibility3,r)?(this.obj3===t.UNDEFINED&&(this.obj3=o._new(i.provider3,i.visibility3)),this.obj3):i.keyId4===e&&n(i.visibility4,r)?(this.obj4===t.UNDEFINED&&(this.obj4=o._new(i.provider4,i.visibility4)),this.obj4):i.keyId5===e&&n(i.visibility5,r)?(this.obj5===t.UNDEFINED&&(this.obj5=o._new(i.provider5,i.visibility5)),this.obj5):i.keyId6===e&&n(i.visibility6,r)?(this.obj6===t.UNDEFINED&&(this.obj6=o._new(i.provider6,i.visibility6)),this.obj6):i.keyId7===e&&n(i.visibility7,r)?(this.obj7===t.UNDEFINED&&(this.obj7=o._new(i.provider7,i.visibility7)),this.obj7):i.keyId8===e&&n(i.visibility8,r)?(this.obj8===t.UNDEFINED&&(this.obj8=o._new(i.provider8,i.visibility8)),this.obj8):i.keyId9===e&&n(i.visibility9,r)?(this.obj9===t.UNDEFINED&&(this.obj9=o._new(i.provider9,i.visibility9)),this.obj9):t.UNDEFINED},e.prototype.getObjAtIndex=function(e){if(0==e)return this.obj0;if(1==e)return this.obj1;if(2==e)return this.obj2;if(3==e)return this.obj3;if(4==e)return this.obj4;if(5==e)return this.obj5;if(6==e)return this.obj6;if(7==e)return this.obj7;if(8==e)return this.obj8;if(9==e)return this.obj9;throw new l.OutOfBoundsError(e)},e.prototype.getMaxNumberOfObjects=function(){return h},e}();t.InjectorInlineStrategy=_;var b=function(){function e(e,r){this.protoStrategy=e,this.injector=r,this.objs=s.ListWrapper.createFixedSize(e.providers.length),s.ListWrapper.fill(this.objs,t.UNDEFINED)}return e.prototype.resetConstructionCounter=function(){this.injector._constructionCounter=0},e.prototype.instantiateProvider=function(e,t){return this.injector._new(e,t)},e.prototype.getObjByKeyId=function(e,r){for(var i=this.protoStrategy,o=0;o<i.keyIds.length;o++)if(i.keyIds[o]===e&&n(i.visibilities[o],r))return this.objs[o]===t.UNDEFINED&&(this.objs[o]=this.injector._new(i.providers[o],i.visibilities[o])),this.objs[o];return t.UNDEFINED},e.prototype.getObjAtIndex=function(e){if(0>e||e>=this.objs.length)throw new l.OutOfBoundsError(e);return this.objs[e]},e.prototype.getMaxNumberOfObjects=function(){return this.objs.length},e}();t.InjectorDynamicStrategy=b;var C=function(){function e(e,t){this.provider=e,this.visibility=t}return e.prototype.getKeyId=function(){return this.provider.key.id},e}();t.ProviderWithVisibility=C;var w=function(){function e(e,t,r,n,i){void 0===t&&(t=null),void 0===r&&(r=!1),void 0===n&&(n=null),void 0===i&&(i=null),this._isHostBoundary=r,this._depProvider=n,this._debugContext=i,this._constructionCounter=0,this._proto=e,this._parent=t,this._strategy=e._strategy.createInjectorStrategy(this)}return e.resolve=function(e){return c.resolveProviders(e)},e.resolveAndCreate=function(t){var r=e.resolve(t);return e.fromResolvedProviders(r)},e.fromResolvedProviders=function(t){return new e(y.fromResolvedProviders(t))},e.fromResolvedBindings=function(t){return e.fromResolvedProviders(t)},Object.defineProperty(e.prototype,"hostBoundary",{get:function(){return this._isHostBoundary},enumerable:!0,configurable:!0}),e.prototype.debugContext=function(){return this._debugContext()},e.prototype.get=function(e){return this._getByKey(d.Key.get(e),null,null,!1,g.PublicAndPrivate)},e.prototype.getOptional=function(e){return this._getByKey(d.Key.get(e),null,null,!0,g.PublicAndPrivate)},e.prototype.getAt=function(e){return this._strategy.getObjAtIndex(e)},Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"internalStrategy",{get:function(){return this._strategy},enumerable:!0,configurable:!0}),e.prototype.resolveAndCreateChild=function(t){var r=e.resolve(t);return this.createChildFromResolved(r)},e.prototype.createChildFromResolved=function(t){var r=t.map(function(e){return new C(e,g.Public)}),n=new y(r),i=new e(n);return i._parent=this,i},e.prototype.resolveAndInstantiate=function(t){return this.instantiateResolved(e.resolve([t])[0])},e.prototype.instantiateResolved=function(e){return this._instantiateProvider(e,g.PublicAndPrivate)},e.prototype._new=function(e,t){if(this._constructionCounter++>this._strategy.getMaxNumberOfObjects())throw new l.CyclicDependencyError(this,e.key);return this._instantiateProvider(e,t)},e.prototype._instantiateProvider=function(e,t){if(e.multiProvider){for(var r=s.ListWrapper.createFixedSize(e.resolvedFactories.length),n=0;n<e.resolvedFactories.length;++n)r[n]=this._instantiate(e,e.resolvedFactories[n],t);return r}return this._instantiate(e,e.resolvedFactories[0],t)},e.prototype._instantiate=function(e,t,r){var n,i,o,a,s,c,u,d,f,h,g,m,v,y,_,b,C,w,P,E,S=t.factory,R=t.dependencies,x=R.length;try{n=x>0?this._getByDependency(e,R[0],r):null,i=x>1?this._getByDependency(e,R[1],r):null,o=x>2?this._getByDependency(e,R[2],r):null,a=x>3?this._getByDependency(e,R[3],r):null,s=x>4?this._getByDependency(e,R[4],r):null,c=x>5?this._getByDependency(e,R[5],r):null,u=x>6?this._getByDependency(e,R[6],r):null,d=x>7?this._getByDependency(e,R[7],r):null,f=x>8?this._getByDependency(e,R[8],r):null,h=x>9?this._getByDependency(e,R[9],r):null,g=x>10?this._getByDependency(e,R[10],r):null,m=x>11?this._getByDependency(e,R[11],r):null,v=x>12?this._getByDependency(e,R[12],r):null,y=x>13?this._getByDependency(e,R[13],r):null,_=x>14?this._getByDependency(e,R[14],r):null,b=x>15?this._getByDependency(e,R[15],r):null,C=x>16?this._getByDependency(e,R[16],r):null,w=x>17?this._getByDependency(e,R[17],r):null,P=x>18?this._getByDependency(e,R[18],r):null,E=x>19?this._getByDependency(e,R[19],r):null}catch(O){throw(O instanceof l.AbstractProviderError||O instanceof l.InstantiationError)&&O.addKey(this,e.key),O}var D;try{switch(x){case 0:D=S();break;case 1:D=S(n);break;case 2:D=S(n,i);break;case 3:D=S(n,i,o);break;case 4:D=S(n,i,o,a);break;case 5:D=S(n,i,o,a,s);break;case 6:D=S(n,i,o,a,s,c);break;case 7:D=S(n,i,o,a,s,c,u);break;case 8:D=S(n,i,o,a,s,c,u,d);break;case 9:D=S(n,i,o,a,s,c,u,d,f);break;case 10:D=S(n,i,o,a,s,c,u,d,f,h);break;case 11:D=S(n,i,o,a,s,c,u,d,f,h,g);break;case 12:D=S(n,i,o,a,s,c,u,d,f,h,g,m);break;case 13:D=S(n,i,o,a,s,c,u,d,f,h,g,m,v);break;case 14:D=S(n,i,o,a,s,c,u,d,f,h,g,m,v,y);break;case 15:D=S(n,i,o,a,s,c,u,d,f,h,g,m,v,y,_);break;case 16:D=S(n,i,o,a,s,c,u,d,f,h,g,m,v,y,_,b);break;case 17:D=S(n,i,o,a,s,c,u,d,f,h,g,m,v,y,_,b,C);break;case 18:D=S(n,i,o,a,s,c,u,d,f,h,g,m,v,y,_,b,C,w);break;case 19:D=S(n,i,o,a,s,c,u,d,f,h,g,m,v,y,_,b,C,w,P);break;case 20:D=S(n,i,o,a,s,c,u,d,f,h,g,m,v,y,_,b,C,w,P,E);break;default:throw new p.BaseException("Cannot instantiate '"+e.key.displayName+"' because it has more than 20 dependencies")}}catch(O){throw new l.InstantiationError(this,O,O.stack,e.key)}return D},e.prototype._getByDependency=function(e,r,n){var i=u.isPresent(this._depProvider)?this._depProvider.getDependency(this,e,r):t.UNDEFINED;return i!==t.UNDEFINED?i:this._getByKey(r.key,r.lowerBoundVisibility,r.upperBoundVisibility,r.optional,n)},e.prototype._getByKey=function(e,t,r,n,i){return e===P?this:r instanceof f.SelfMetadata?this._getByKeySelf(e,n,i):r instanceof f.HostMetadata?this._getByKeyHost(e,n,i,t):this._getByKeyDefault(e,n,i,t)},e.prototype._throwOrNull=function(e,t){if(t)return null;throw new l.NoProviderError(this,e)},e.prototype._getByKeySelf=function(e,r,n){var i=this._strategy.getObjByKeyId(e.id,n);return i!==t.UNDEFINED?i:this._throwOrNull(e,r)},e.prototype._getByKeyHost=function(e,r,n,i){var o=this;if(i instanceof f.SkipSelfMetadata){if(o._isHostBoundary)return this._getPrivateDependency(e,r,o);o=o._parent}for(;null!=o;){var a=o._strategy.getObjByKeyId(e.id,n);if(a!==t.UNDEFINED)return a;if(u.isPresent(o._parent)&&o._isHostBoundary)return this._getPrivateDependency(e,r,o);o=o._parent}return this._throwOrNull(e,r)},e.prototype._getPrivateDependency=function(e,r,n){var i=n._parent._strategy.getObjByKeyId(e.id,g.Private);return i!==t.UNDEFINED?i:this._throwOrNull(e,r)},e.prototype._getByKeyDefault=function(e,r,n,i){var o=this;for(i instanceof f.SkipSelfMetadata&&(n=o._isHostBoundary?g.PublicAndPrivate:g.Public,o=o._parent);null!=o;){var a=o._strategy.getObjByKeyId(e.id,n);if(a!==t.UNDEFINED)return a;n=o._isHostBoundary?g.PublicAndPrivate:g.Public,o=o._parent}return this._throwOrNull(e,r)},Object.defineProperty(e.prototype,"displayName",{get:function(){return"Injector(providers: ["+i(this,function(e){return' "'+e.key.displayName+'" '}).join(", ")+"])"},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.displayName},e}();t.Injector=w;var P=d.Key.get(w);return o.define=a,r.exports}),System.register("angular2/src/animate/animation_builder",["angular2/src/core/di","angular2/src/animate/css_animation_builder","angular2/src/animate/browser_details"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/core/di"),c=e("angular2/src/animate/css_animation_builder"),l=e("angular2/src/animate/browser_details"),u=function(){function e(e){this.browserDetails=e}return e.prototype.css=function(){return new c.CssAnimationBuilder(this.browserDetails)},e=o([s.Injectable(),a("design:paramtypes",[l.BrowserDetails])],e)}();return t.AnimationBuilder=u,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/dynamic_change_detector",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/change_detection/abstract_change_detector","angular2/src/core/change_detection/change_detection_util","angular2/src/core/change_detection/constants","angular2/src/core/change_detection/proto_record","angular2/src/core/reflection/reflection","angular2/src/facade/async"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/facade/lang"),s=e("angular2/src/facade/exceptions"),c=e("angular2/src/facade/collection"),l=e("angular2/src/core/change_detection/abstract_change_detector"),u=e("angular2/src/core/change_detection/change_detection_util"),p=e("angular2/src/core/change_detection/constants"),d=e("angular2/src/core/change_detection/proto_record"),f=e("angular2/src/core/reflection/reflection"),h=e("angular2/src/facade/async"),g=function(e){function t(t,r,n,i,o,a,s,l,u){e.call(this,t,r,n,i,o),this._records=a,this._eventBindings=s,this._directiveRecords=l,this._genConfig=u;var p=a.length+1;this.values=c.ListWrapper.createFixedSize(p),this.localPipes=c.ListWrapper.createFixedSize(p),this.prevContexts=c.ListWrapper.createFixedSize(p),this.changes=c.ListWrapper.createFixedSize(p),this.dehydrateDirectives(!1)}return o(t,e),t.prototype.handleEventInternal=function(e,t,r){var n=this,i=!1;return this._matchingEventBindings(e,t).forEach(function(e){var t=n._processEventBinding(e,r);t===!1&&(i=!0)}),i},t.prototype._processEventBinding=function(e,t){var r=c.ListWrapper.createFixedSize(e.records.length);r[0]=this.values[0];for(var n=0;n<e.records.length;++n){var i=e.records[n];if(i.isSkipRecord())n+=this._computeSkipLength(n,i,r);else{i.lastInBinding&&this._markPathAsCheckOnce(i);var o=this._calculateCurrValue(i,r,t);if(i.lastInBinding)return o;this._writeSelf(i,o,r)}}throw new s.BaseException("Cannot be reached")},t.prototype._computeSkipLength=function(e,t,r){if(t.mode===d.RecordType.SkipRecords)return t.fixedArgs[0]-e-1;if(t.mode===d.RecordType.SkipRecordsIf){var n=this._readContext(t,r);return n?t.fixedArgs[0]-e-1:0}if(t.mode===d.RecordType.SkipRecordsIfNot){var n=this._readContext(t,r);return n?0:t.fixedArgs[0]-e-1}throw new s.BaseException("Cannot be reached")},t.prototype._markPathAsCheckOnce=function(e){if(!e.bindingRecord.isDefaultChangeDetection()){var t=e.bindingRecord.directiveRecord;this._getDetectorFor(t.directiveIndex).markPathToRootAsCheckOnce()}},t.prototype._matchingEventBindings=function(e,t){return this._eventBindings.filter(function(r){return r.eventName==e&&r.elIndex===t})},t.prototype.hydrateDirectives=function(e){var t=this;this.values[0]=this.context,this.dispatcher=e,this.outputSubscriptions=[];for(var r=0;r<this._directiveRecords.length;++r){var n=this._directiveRecords[r];a.isPresent(n.outputs)&&n.outputs.forEach(function(e){var r=t._createEventHandler(n.directiveIndex.elementIndex,e[1]),i=t._getDirectiveFor(n.directiveIndex),o=f.reflector.getter(e[0]);t.outputSubscriptions.push(h.ObservableWrapper.subscribe(o(i),r))})}},t.prototype._createEventHandler=function(e,t){var r=this;return function(n){return r.handleEvent(t,e,n)}},t.prototype.dehydrateDirectives=function(e){e&&(this._destroyPipes(),this._destroyDirectives()),this.values[0]=null,c.ListWrapper.fill(this.values,u.ChangeDetectionUtil.uninitialized,1),c.ListWrapper.fill(this.changes,!1),c.ListWrapper.fill(this.localPipes,null),c.ListWrapper.fill(this.prevContexts,u.ChangeDetectionUtil.uninitialized)},t.prototype._destroyPipes=function(){for(var e=0;e<this.localPipes.length;++e)a.isPresent(this.localPipes[e])&&u.ChangeDetectionUtil.callPipeOnDestroy(this.localPipes[e])},t.prototype._destroyDirectives=function(){for(var e=0;e<this._directiveRecords.length;++e){var t=this._directiveRecords[e];t.callOnDestroy&&this._getDirectiveFor(t.directiveIndex).ngOnDestroy()}},t.prototype.checkNoChanges=function(){this.runDetectChanges(!0)},t.prototype.detectChangesInRecordsInternal=function(e){for(var t=this._records,r=null,n=!1,i=0;i<t.length;++i){var o=t[i],s=o.bindingRecord,c=s.directiveRecord;if(this._firstInBinding(o)&&(this.propertyBindingIndex=o.propertyBindingIndex),o.isLifeCycleRecord())"DoCheck"!==o.name||e?"OnInit"!==o.name||e||this.state!=p.ChangeDetectorState.NeverChecked?"OnChanges"===o.name&&a.isPresent(r)&&!e&&this._getDirectiveFor(c.directiveIndex).ngOnChanges(r):this._getDirectiveFor(c.directiveIndex).ngOnInit():this._getDirectiveFor(c.directiveIndex).ngDoCheck();else if(o.isSkipRecord())i+=this._computeSkipLength(i,o,this.values);else{var l=this._check(o,e,this.values,this.locals);a.isPresent(l)&&(this._updateDirectiveOrElement(l,s),n=!0,r=this._addChange(s,l,r))}o.lastInDirective&&(r=null,n&&!s.isDefaultChangeDetection()&&this._getDetectorFor(c.directiveIndex).markAsCheckOnce(),n=!1)}},t.prototype._firstInBinding=function(e){var t=u.ChangeDetectionUtil.protoByIndex(this._records,e.selfIndex-1);return a.isBlank(t)||t.bindingRecord!==e.bindingRecord},t.prototype.afterContentLifecycleCallbacksInternal=function(){for(var e=this._directiveRecords,t=e.length-1;t>=0;--t){var r=e[t];r.callAfterContentInit&&this.state==p.ChangeDetectorState.NeverChecked&&this._getDirectiveFor(r.directiveIndex).ngAfterContentInit(),r.callAfterContentChecked&&this._getDirectiveFor(r.directiveIndex).ngAfterContentChecked()}},t.prototype.afterViewLifecycleCallbacksInternal=function(){for(var e=this._directiveRecords,t=e.length-1;t>=0;--t){var r=e[t];r.callAfterViewInit&&this.state==p.ChangeDetectorState.NeverChecked&&this._getDirectiveFor(r.directiveIndex).ngAfterViewInit(),r.callAfterViewChecked&&this._getDirectiveFor(r.directiveIndex).ngAfterViewChecked()}},t.prototype._updateDirectiveOrElement=function(t,r){if(a.isBlank(r.directiveRecord))e.prototype.notifyDispatcher.call(this,t.currentValue);else{var n=r.directiveRecord.directiveIndex;r.setter(this._getDirectiveFor(n),t.currentValue)}this._genConfig.logBindingUpdate&&e.prototype.logBindingUpdate.call(this,t.currentValue)},t.prototype._addChange=function(t,r,n){return t.callOnChanges()?e.prototype.addChange.call(this,n,r.previousValue,r.currentValue):n},t.prototype._getDirectiveFor=function(e){return this.dispatcher.getDirectiveFor(e)},t.prototype._getDetectorFor=function(e){return this.dispatcher.getDetectorFor(e)},t.prototype._check=function(e,t,r,n){return e.isPipeRecord()?this._pipeCheck(e,t,r):this._referenceCheck(e,t,r,n)},t.prototype._referenceCheck=function(e,t,r,n){if(this._pureFuncAndArgsDidNotChange(e))return this._setChanged(e,!1),null;var i=this._calculateCurrValue(e,r,n);if(e.shouldBeChecked()){var o=this._readSelf(e,r),a=t?!u.ChangeDetectionUtil.devModeEqual(o,i):u.ChangeDetectionUtil.looseNotIdentical(o,i);if(a){if(e.lastInBinding){var s=u.ChangeDetectionUtil.simpleChange(o,i);return t&&this.throwOnChangeError(o,i),this._writeSelf(e,i,r),this._setChanged(e,!0),s}return this._writeSelf(e,i,r),this._setChanged(e,!0),null}return this._setChanged(e,!1),null}return this._writeSelf(e,i,r),this._setChanged(e,!0),null},t.prototype._calculateCurrValue=function(e,t,r){switch(e.mode){case d.RecordType.Self:return this._readContext(e,t);case d.RecordType.Const:return e.funcOrValue;case d.RecordType.PropertyRead:var n=this._readContext(e,t);return e.funcOrValue(n);case d.RecordType.SafeProperty:var n=this._readContext(e,t);return a.isBlank(n)?null:e.funcOrValue(n);case d.RecordType.PropertyWrite:var n=this._readContext(e,t),i=this._readArgs(e,t)[0];return e.funcOrValue(n,i),i;case d.RecordType.KeyedWrite:var n=this._readContext(e,t),o=this._readArgs(e,t)[0],i=this._readArgs(e,t)[1];return n[o]=i,i;case d.RecordType.Local:return r.get(e.name);case d.RecordType.InvokeMethod:var n=this._readContext(e,t),c=this._readArgs(e,t);return e.funcOrValue(n,c);case d.RecordType.SafeMethodInvoke:var n=this._readContext(e,t);if(a.isBlank(n))return null;var c=this._readArgs(e,t);return e.funcOrValue(n,c);case d.RecordType.KeyedRead:var l=this._readArgs(e,t)[0];return this._readContext(e,t)[l];case d.RecordType.Chain:var c=this._readArgs(e,t);return c[c.length-1];case d.RecordType.InvokeClosure:return a.FunctionWrapper.apply(this._readContext(e,t),this._readArgs(e,t));case d.RecordType.Interpolate:case d.RecordType.PrimitiveOp:case d.RecordType.CollectionLiteral:return a.FunctionWrapper.apply(e.funcOrValue,this._readArgs(e,t));default:throw new s.BaseException("Unknown operation "+e.mode)}},t.prototype._pipeCheck=function(e,t,r){var n=this._readContext(e,r),i=this._pipeFor(e,n);if(!i.pure||this._argsOrContextChanged(e)){var o=this._readArgs(e,r),a=i.pipe.transform(n,o);if(e.shouldBeChecked()){var s=this._readSelf(e,r),c=t?!u.ChangeDetectionUtil.devModeEqual(s,a):u.ChangeDetectionUtil.looseNotIdentical(s,a);if(c){if(a=u.ChangeDetectionUtil.unwrapValue(a),e.lastInBinding){
var l=u.ChangeDetectionUtil.simpleChange(s,a);return t&&this.throwOnChangeError(s,a),this._writeSelf(e,a,r),this._setChanged(e,!0),l}return this._writeSelf(e,a,r),this._setChanged(e,!0),null}return this._setChanged(e,!1),null}return this._writeSelf(e,a,r),this._setChanged(e,!0),null}},t.prototype._pipeFor=function(e,t){var r=this._readPipe(e);if(a.isPresent(r))return r;var n=this.pipes.get(e.name);return this._writePipe(e,n),n},t.prototype._readContext=function(e,t){return-1==e.contextIndex?this._getDirectiveFor(e.directiveIndex):t[e.contextIndex]},t.prototype._readSelf=function(e,t){return t[e.selfIndex]},t.prototype._writeSelf=function(e,t,r){r[e.selfIndex]=t},t.prototype._readPipe=function(e){return this.localPipes[e.selfIndex]},t.prototype._writePipe=function(e,t){this.localPipes[e.selfIndex]=t},t.prototype._setChanged=function(e,t){e.argumentToPureFunction&&(this.changes[e.selfIndex]=t)},t.prototype._pureFuncAndArgsDidNotChange=function(e){return e.isPureFunction()&&!this._argsChanged(e)},t.prototype._argsChanged=function(e){for(var t=e.args,r=0;r<t.length;++r)if(this.changes[t[r]])return!0;return!1},t.prototype._argsOrContextChanged=function(e){return this._argsChanged(e)||this.changes[e.contextIndex]},t.prototype._readArgs=function(e,t){for(var r=c.ListWrapper.createFixedSize(e.args.length),n=e.args,i=0;i<n.length;++i)r[i]=t[n[i]];return r},t}(l.AbstractChangeDetector);return t.DynamicChangeDetector=g,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/jit_proto_change_detector",["angular2/src/core/change_detection/change_detection_jit_generator"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/change_detection/change_detection_jit_generator"),a=function(){function e(e){this.definition=e,this._factory=this._createFactory(e)}return e.isSupported=function(){return!0},e.prototype.instantiate=function(){return this._factory()},e.prototype._createFactory=function(e){return new o.ChangeDetectorJITGenerator(e,"util","AbstractChangeDetector","ChangeDetectorStatus").generate()},e}();return t.JitProtoChangeDetector=a,n.define=i,r.exports}),System.register("angular2/src/core/linker/compiler",["angular2/src/core/di","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/async","angular2/src/core/reflection/reflection","angular2/src/core/linker/view","angular2/src/core/linker/view_ref"],!0,function(e,t,r){function n(e){return e instanceof h.HostViewFactory}var i=System.global,o=i.define;i.define=void 0;var a=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},s=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},c=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},l=e("angular2/src/core/di"),u=e("angular2/src/facade/lang"),p=e("angular2/src/facade/exceptions"),d=e("angular2/src/facade/async"),f=e("angular2/src/core/reflection/reflection"),h=e("angular2/src/core/linker/view"),g=e("angular2/src/core/linker/view_ref"),m=function(){function e(){}return e}();t.Compiler=m;var v=function(e){function t(){e.apply(this,arguments)}return a(t,e),t.prototype.compileInHost=function(e){var t=f.reflector.annotations(e),r=t.find(n);if(u.isBlank(r))throw new p.BaseException("No precompiled component "+u.stringify(e)+" found");return d.PromiseWrapper.resolve(new g.HostViewFactoryRef_(r))},t.prototype.clearCache=function(){},t=s([l.Injectable(),c("design:paramtypes",[])],t)}(m);return t.Compiler_=v,i.define=o,r.exports}),System.register("angular2/src/core/di",["angular2/src/core/di/metadata","angular2/src/core/di/decorators","angular2/src/core/di/forward_ref","angular2/src/core/di/injector","angular2/src/core/di/provider","angular2/src/core/di/key","angular2/src/core/di/exceptions","angular2/src/core/di/opaque_token"],!0,function(e,t,r){function n(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/core/di/metadata");t.InjectMetadata=a.InjectMetadata,t.OptionalMetadata=a.OptionalMetadata,t.InjectableMetadata=a.InjectableMetadata,t.SelfMetadata=a.SelfMetadata,t.HostMetadata=a.HostMetadata,t.SkipSelfMetadata=a.SkipSelfMetadata,t.DependencyMetadata=a.DependencyMetadata,n(e("angular2/src/core/di/decorators"));var s=e("angular2/src/core/di/forward_ref");t.forwardRef=s.forwardRef,t.resolveForwardRef=s.resolveForwardRef;var c=e("angular2/src/core/di/injector");t.Injector=c.Injector;var l=e("angular2/src/core/di/provider");t.Binding=l.Binding,t.ProviderBuilder=l.ProviderBuilder,t.ResolvedFactory=l.ResolvedFactory,t.Dependency=l.Dependency,t.bind=l.bind,t.Provider=l.Provider,t.provide=l.provide;var u=e("angular2/src/core/di/key");t.Key=u.Key;var p=e("angular2/src/core/di/exceptions");t.NoProviderError=p.NoProviderError,t.AbstractProviderError=p.AbstractProviderError,t.CyclicDependencyError=p.CyclicDependencyError,t.InstantiationError=p.InstantiationError,t.InvalidProviderError=p.InvalidProviderError,t.NoAnnotationError=p.NoAnnotationError,t.OutOfBoundsError=p.OutOfBoundsError;var d=e("angular2/src/core/di/opaque_token");return t.OpaqueToken=d.OpaqueToken,i.define=o,r.exports}),System.register("angular2/src/core/change_detection/proto_change_detector",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/change_detection/parser/ast","angular2/src/core/change_detection/change_detection_util","angular2/src/core/change_detection/dynamic_change_detector","angular2/src/core/change_detection/directive_record","angular2/src/core/change_detection/event_binding","angular2/src/core/change_detection/coalesce","angular2/src/core/change_detection/proto_record"],!0,function(e,t,r){function n(e){var t=new E;return g.ListWrapper.forEachWithIndex(e.bindingRecords,function(r,n){return t.add(r,e.variableNames,n)}),C.coalesce(t.records)}function i(e){var t=g.ListWrapper.concat(["$event"],e.variableNames);return e.eventRecords.map(function(e){var r=S.create(e,t),n=e.implicitReceiver instanceof _.DirectiveIndex?e.implicitReceiver:null;return new b.EventBinding(e.target.name,e.target.elementIndex,n,r)})}function o(e){switch(e){case 0:return v.ChangeDetectionUtil.arrayFn0;case 1:return v.ChangeDetectionUtil.arrayFn1;case 2:return v.ChangeDetectionUtil.arrayFn2;case 3:return v.ChangeDetectionUtil.arrayFn3;case 4:return v.ChangeDetectionUtil.arrayFn4;case 5:return v.ChangeDetectionUtil.arrayFn5;case 6:return v.ChangeDetectionUtil.arrayFn6;case 7:return v.ChangeDetectionUtil.arrayFn7;case 8:return v.ChangeDetectionUtil.arrayFn8;case 9:return v.ChangeDetectionUtil.arrayFn9;default:throw new h.BaseException("Does not support literal maps with more than 9 elements")}}function a(e){var t=e.map(function(e){return f.isString(e)?'"'+e+'"':""+e}).join(", ");return"mapFn(["+t+"])"}function s(e){switch(e){case"+":return"operation_add";case"-":return"operation_subtract";case"*":return"operation_multiply";case"/":return"operation_divide";case"%":return"operation_remainder";case"==":return"operation_equals";case"!=":return"operation_not_equals";case"===":return"operation_identical";case"!==":return"operation_not_identical";case"<":return"operation_less_then";case">":return"operation_greater_then";case"<=":return"operation_less_or_equals_then";case">=":return"operation_greater_or_equals_then";default:throw new h.BaseException("Unsupported operation "+e)}}function c(e){switch(e){case"+":return v.ChangeDetectionUtil.operation_add;case"-":return v.ChangeDetectionUtil.operation_subtract;case"*":return v.ChangeDetectionUtil.operation_multiply;case"/":return v.ChangeDetectionUtil.operation_divide;case"%":return v.ChangeDetectionUtil.operation_remainder;case"==":return v.ChangeDetectionUtil.operation_equals;case"!=":return v.ChangeDetectionUtil.operation_not_equals;case"===":return v.ChangeDetectionUtil.operation_identical;case"!==":return v.ChangeDetectionUtil.operation_not_identical;case"<":return v.ChangeDetectionUtil.operation_less_then;case">":return v.ChangeDetectionUtil.operation_greater_then;case"<=":return v.ChangeDetectionUtil.operation_less_or_equals_then;case">=":return v.ChangeDetectionUtil.operation_greater_or_equals_then;default:throw new h.BaseException("Unsupported operation "+e)}}function l(e){return f.isPresent(e)?""+e:""}function u(e){var t=e.length,r=t>0?e[0]:null,n=t>1?e[1]:null,i=t>2?e[2]:null,o=t>3?e[3]:null,a=t>4?e[4]:null,s=t>5?e[5]:null,c=t>6?e[6]:null,u=t>7?e[7]:null,p=t>8?e[8]:null,d=t>9?e[9]:null;switch(t-1){case 1:return function(e){return r+l(e)+n};case 2:return function(e,t){return r+l(e)+n+l(t)+i};case 3:return function(e,t,a){return r+l(e)+n+l(t)+i+l(a)+o};case 4:return function(e,t,s,c){return r+l(e)+n+l(t)+i+l(s)+o+l(c)+a};case 5:return function(e,t,c,u,p){return r+l(e)+n+l(t)+i+l(c)+o+l(u)+a+l(p)+s};case 6:return function(e,t,u,p,d,f){return r+l(e)+n+l(t)+i+l(u)+o+l(p)+a+l(d)+s+l(f)+c};case 7:return function(e,t,p,d,f,h,g){return r+l(e)+n+l(t)+i+l(p)+o+l(d)+a+l(f)+s+l(h)+c+l(g)+u};case 8:return function(e,t,d,f,h,g,m,v){return r+l(e)+n+l(t)+i+l(d)+o+l(f)+a+l(h)+s+l(g)+c+l(m)+u+l(v)+p};case 9:return function(e,t,f,h,g,m,v,y,_){return r+l(e)+n+l(t)+i+l(f)+o+l(h)+a+l(g)+s+l(m)+c+l(v)+u+l(y)+p+l(_)+d};default:throw new h.BaseException("Does not support more than 9 expressions")}}var p=System.global,d=p.define;p.define=void 0;var f=e("angular2/src/facade/lang"),h=e("angular2/src/facade/exceptions"),g=e("angular2/src/facade/collection"),m=e("angular2/src/core/change_detection/parser/ast"),v=e("angular2/src/core/change_detection/change_detection_util"),y=e("angular2/src/core/change_detection/dynamic_change_detector"),_=e("angular2/src/core/change_detection/directive_record"),b=e("angular2/src/core/change_detection/event_binding"),C=e("angular2/src/core/change_detection/coalesce"),w=e("angular2/src/core/change_detection/proto_record"),P=function(){function e(e){this._definition=e,this._propertyBindingRecords=n(e),this._eventBindingRecords=i(e),this._propertyBindingTargets=this._definition.bindingRecords.map(function(e){return e.target}),this._directiveIndices=this._definition.directiveRecords.map(function(e){return e.directiveIndex})}return e.prototype.instantiate=function(){return new y.DynamicChangeDetector(this._definition.id,this._propertyBindingRecords.length,this._propertyBindingTargets,this._directiveIndices,this._definition.strategy,this._propertyBindingRecords,this._eventBindingRecords,this._definition.directiveRecords,this._definition.genConfig)},e}();t.DynamicProtoChangeDetector=P,t.createPropertyRecords=n,t.createEventRecords=i;var E=function(){function e(){this.records=[]}return e.prototype.add=function(e,t,r){var n=g.ListWrapper.last(this.records);f.isPresent(n)&&n.bindingRecord.directiveRecord==e.directiveRecord&&(n.lastInDirective=!1);var i=this.records.length;this._appendRecords(e,t,r);var o=g.ListWrapper.last(this.records);f.isPresent(o)&&o!==n&&(o.lastInBinding=!0,o.lastInDirective=!0,this._setArgumentToPureFunction(i))},e.prototype._setArgumentToPureFunction=function(e){for(var t=this,r=e;r<this.records.length;++r){var n=this.records[r];n.isPureFunction()&&n.args.forEach(function(e){return t.records[e-1].argumentToPureFunction=!0}),n.mode===w.RecordType.Pipe&&(n.args.forEach(function(e){return t.records[e-1].argumentToPureFunction=!0}),this.records[n.contextIndex-1].argumentToPureFunction=!0)}},e.prototype._appendRecords=function(e,t,r){e.isDirectiveLifecycle()?this.records.push(new w.ProtoRecord(w.RecordType.DirectiveLifecycle,e.lifecycleEvent,null,[],[],-1,null,this.records.length+1,e,!1,!1,!1,!1,null)):S.append(this.records,e,t,r)},e}();t.ProtoRecordBuilder=E;var S=function(){function e(e,t,r,n){this._records=e,this._bindingRecord=t,this._variableNames=r,this._bindingIndex=n}return e.append=function(t,r,n,i){var o=new e(t,r,n,i);r.ast.visit(o)},e.create=function(t,r){var n=[];return e.append(n,t,r,null),n[n.length-1].lastInBinding=!0,n},e.prototype.visitImplicitReceiver=function(e){return this._bindingRecord.implicitReceiver},e.prototype.visitInterpolation=function(e){var t=this._visitAll(e.expressions);return this._addRecord(w.RecordType.Interpolate,"interpolate",u(e.strings),t,e.strings,0)},e.prototype.visitLiteralPrimitive=function(e){return this._addRecord(w.RecordType.Const,"literal",e.value,[],null,0)},e.prototype.visitPropertyRead=function(e){var t=e.receiver.visit(this);return f.isPresent(this._variableNames)&&g.ListWrapper.contains(this._variableNames,e.name)&&e.receiver instanceof m.ImplicitReceiver?this._addRecord(w.RecordType.Local,e.name,e.name,[],null,t):this._addRecord(w.RecordType.PropertyRead,e.name,e.getter,[],null,t)},e.prototype.visitPropertyWrite=function(e){if(f.isPresent(this._variableNames)&&g.ListWrapper.contains(this._variableNames,e.name)&&e.receiver instanceof m.ImplicitReceiver)throw new h.BaseException("Cannot reassign a variable binding "+e.name);var t=e.receiver.visit(this),r=e.value.visit(this);return this._addRecord(w.RecordType.PropertyWrite,e.name,e.setter,[r],null,t)},e.prototype.visitKeyedWrite=function(e){var t=e.obj.visit(this),r=e.key.visit(this),n=e.value.visit(this);return this._addRecord(w.RecordType.KeyedWrite,null,null,[r,n],null,t)},e.prototype.visitSafePropertyRead=function(e){var t=e.receiver.visit(this);return this._addRecord(w.RecordType.SafeProperty,e.name,e.getter,[],null,t)},e.prototype.visitMethodCall=function(e){var t=e.receiver.visit(this),r=this._visitAll(e.args);if(f.isPresent(this._variableNames)&&g.ListWrapper.contains(this._variableNames,e.name)){var n=this._addRecord(w.RecordType.Local,e.name,e.name,[],null,t);return this._addRecord(w.RecordType.InvokeClosure,"closure",null,r,null,n)}return this._addRecord(w.RecordType.InvokeMethod,e.name,e.fn,r,null,t)},e.prototype.visitSafeMethodCall=function(e){var t=e.receiver.visit(this),r=this._visitAll(e.args);return this._addRecord(w.RecordType.SafeMethodInvoke,e.name,e.fn,r,null,t)},e.prototype.visitFunctionCall=function(e){var t=e.target.visit(this),r=this._visitAll(e.args);return this._addRecord(w.RecordType.InvokeClosure,"closure",null,r,null,t)},e.prototype.visitLiteralArray=function(e){var t="arrayFn"+e.expressions.length;return this._addRecord(w.RecordType.CollectionLiteral,t,o(e.expressions.length),this._visitAll(e.expressions),null,0)},e.prototype.visitLiteralMap=function(e){return this._addRecord(w.RecordType.CollectionLiteral,a(e.keys),v.ChangeDetectionUtil.mapFn(e.keys),this._visitAll(e.values),null,0)},e.prototype.visitBinary=function(e){var t=e.left.visit(this);switch(e.operation){case"&&":var r=[null];this._addRecord(w.RecordType.SkipRecordsIfNot,"SkipRecordsIfNot",null,[],r,t);var n=e.right.visit(this);return r[0]=n,this._addRecord(w.RecordType.PrimitiveOp,"cond",v.ChangeDetectionUtil.cond,[t,n,t],null,0);case"||":var r=[null];this._addRecord(w.RecordType.SkipRecordsIf,"SkipRecordsIf",null,[],r,t);var n=e.right.visit(this);return r[0]=n,this._addRecord(w.RecordType.PrimitiveOp,"cond",v.ChangeDetectionUtil.cond,[t,t,n],null,0);default:var n=e.right.visit(this);return this._addRecord(w.RecordType.PrimitiveOp,s(e.operation),c(e.operation),[t,n],null,0)}},e.prototype.visitPrefixNot=function(e){var t=e.expression.visit(this);return this._addRecord(w.RecordType.PrimitiveOp,"operation_negate",v.ChangeDetectionUtil.operation_negate,[t],null,0)},e.prototype.visitConditional=function(e){var t=e.condition.visit(this),r=[null],n=[null];this._addRecord(w.RecordType.SkipRecordsIfNot,"SkipRecordsIfNot",null,[],r,t);var i=e.trueExp.visit(this),o=this._addRecord(w.RecordType.SkipRecords,"SkipRecords",null,[],n,0),a=e.falseExp.visit(this);return r[0]=o,n[0]=a,this._addRecord(w.RecordType.PrimitiveOp,"cond",v.ChangeDetectionUtil.cond,[t,i,a],null,0)},e.prototype.visitPipe=function(e){var t=e.exp.visit(this),r=this._visitAll(e.args);return this._addRecord(w.RecordType.Pipe,e.name,e.name,r,null,t)},e.prototype.visitKeyedRead=function(e){var t=e.obj.visit(this),r=e.key.visit(this);return this._addRecord(w.RecordType.KeyedRead,"keyedAccess",v.ChangeDetectionUtil.keyedAccess,[r],null,t)},e.prototype.visitChain=function(e){var t=this,r=e.expressions.map(function(e){return e.visit(t)});return this._addRecord(w.RecordType.Chain,"chain",null,r,null,0)},e.prototype.visitQuote=function(e){throw new h.BaseException("Caught uninterpreted expression at "+e.location+": "+e.uninterpretedExpression+". "+("Expression prefix "+e.prefix+" did not match a template transformer to interpret the expression."))},e.prototype._visitAll=function(e){for(var t=g.ListWrapper.createFixedSize(e.length),r=0;r<e.length;++r)t[r]=e[r].visit(this);return t},e.prototype._addRecord=function(e,t,r,n,i,o){var a=this._records.length+1;return o instanceof _.DirectiveIndex?this._records.push(new w.ProtoRecord(e,t,r,n,i,-1,o,a,this._bindingRecord,!1,!1,!1,!1,this._bindingIndex)):this._records.push(new w.ProtoRecord(e,t,r,n,i,o,null,a,this._bindingRecord,!1,!1,!1,!1,this._bindingIndex)),a},e}();return p.define=d,r.exports}),System.register("angular2/src/core/linker/dynamic_component_loader",["angular2/src/core/di","angular2/src/core/linker/compiler","angular2/src/facade/lang","angular2/src/core/linker/view_manager"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/core/di"),l=e("angular2/src/core/linker/compiler"),u=e("angular2/src/facade/lang"),p=e("angular2/src/core/linker/view_manager"),d=function(){function e(){}return Object.defineProperty(e.prototype,"hostView",{get:function(){return this.location.internalElement.parentView.ref},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hostComponent",{get:function(){return this.instance},enumerable:!0,configurable:!0}),e}();t.ComponentRef=d;var f=function(e){function t(t,r,n,i,o){e.call(this),this._dispose=o,this.location=t,this.instance=r,this.componentType=n,this.injector=i}return o(t,e),Object.defineProperty(t.prototype,"hostComponentType",{get:function(){return this.componentType},enumerable:!0,configurable:!0}),t.prototype.dispose=function(){this._dispose()},t}(d);t.ComponentRef_=f;var h=function(){function e(){}return e}();t.DynamicComponentLoader=h;var g=function(e){function t(t,r){e.call(this),this._compiler=t,this._viewManager=r}return o(t,e),t.prototype.loadAsRoot=function(e,t,r,n,i){var o=this;return this._compiler.compileInHost(e).then(function(a){var s=o._viewManager.createRootHostView(a,t,r,i),c=o._viewManager.getHostElement(s),l=o._viewManager.getComponent(c),p=function(){u.isPresent(n)&&n(),o._viewManager.destroyRootHostView(s)};return new f(c,l,e,r,p)})},t.prototype.loadIntoLocation=function(e,t,r,n,i){return void 0===n&&(n=null),void 0===i&&(i=null),this.loadNextToLocation(e,this._viewManager.getNamedElementInComponentView(t,r),n,i)},t.prototype.loadNextToLocation=function(e,t,r,n){var i=this;return void 0===r&&(r=null),void 0===n&&(n=null),this._compiler.compileInHost(e).then(function(o){var a=i._viewManager.getViewContainer(t),s=a.createHostView(o,a.length,r,n),c=i._viewManager.getHostElement(s),l=i._viewManager.getComponent(c),u=function(){var e=a.indexOf(s);s.destroyed||-1===e||a.remove(e)};return new f(c,l,e,null,u)})},t=a([c.Injectable(),s("design:paramtypes",[l.Compiler,p.AppViewManager])],t)}(h);return t.DynamicComponentLoader_=g,n.define=i,r.exports}),System.register("angular2/src/core/change_detection/change_detection",["angular2/src/core/change_detection/differs/iterable_differs","angular2/src/core/change_detection/differs/default_iterable_differ","angular2/src/core/change_detection/differs/keyvalue_differs","angular2/src/core/change_detection/differs/default_keyvalue_differ","angular2/src/facade/lang","angular2/src/core/change_detection/differs/default_keyvalue_differ","angular2/src/core/change_detection/differs/default_iterable_differ","angular2/src/core/change_detection/parser/ast","angular2/src/core/change_detection/parser/lexer","angular2/src/core/change_detection/parser/parser","angular2/src/core/change_detection/parser/locals","angular2/src/core/change_detection/exceptions","angular2/src/core/change_detection/interfaces","angular2/src/core/change_detection/constants","angular2/src/core/change_detection/proto_change_detector","angular2/src/core/change_detection/jit_proto_change_detector","angular2/src/core/change_detection/binding_record","angular2/src/core/change_detection/directive_record","angular2/src/core/change_detection/dynamic_change_detector","angular2/src/core/change_detection/change_detector_ref","angular2/src/core/change_detection/differs/iterable_differs","angular2/src/core/change_detection/differs/keyvalue_differs","angular2/src/core/change_detection/change_detection_util"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/change_detection/differs/iterable_differs"),a=e("angular2/src/core/change_detection/differs/default_iterable_differ"),s=e("angular2/src/core/change_detection/differs/keyvalue_differs"),c=e("angular2/src/core/change_detection/differs/default_keyvalue_differ"),l=e("angular2/src/facade/lang"),u=e("angular2/src/core/change_detection/differs/default_keyvalue_differ");t.DefaultKeyValueDifferFactory=u.DefaultKeyValueDifferFactory,t.KeyValueChangeRecord=u.KeyValueChangeRecord;var p=e("angular2/src/core/change_detection/differs/default_iterable_differ");t.DefaultIterableDifferFactory=p.DefaultIterableDifferFactory,t.CollectionChangeRecord=p.CollectionChangeRecord;var d=e("angular2/src/core/change_detection/parser/ast");t.ASTWithSource=d.ASTWithSource,t.AST=d.AST,t.AstTransformer=d.AstTransformer,t.PropertyRead=d.PropertyRead,t.LiteralArray=d.LiteralArray,t.ImplicitReceiver=d.ImplicitReceiver;var f=e("angular2/src/core/change_detection/parser/lexer");t.Lexer=f.Lexer;var h=e("angular2/src/core/change_detection/parser/parser");t.Parser=h.Parser;var g=e("angular2/src/core/change_detection/parser/locals");t.Locals=g.Locals;var m=e("angular2/src/core/change_detection/exceptions");t.DehydratedException=m.DehydratedException,t.ExpressionChangedAfterItHasBeenCheckedException=m.ExpressionChangedAfterItHasBeenCheckedException,t.ChangeDetectionError=m.ChangeDetectionError;var v=e("angular2/src/core/change_detection/interfaces");t.ChangeDetectorDefinition=v.ChangeDetectorDefinition,t.DebugContext=v.DebugContext,t.ChangeDetectorGenConfig=v.ChangeDetectorGenConfig;var y=e("angular2/src/core/change_detection/constants");t.ChangeDetectionStrategy=y.ChangeDetectionStrategy,t.CHANGE_DETECTION_STRATEGY_VALUES=y.CHANGE_DETECTION_STRATEGY_VALUES;var _=e("angular2/src/core/change_detection/proto_change_detector");t.DynamicProtoChangeDetector=_.DynamicProtoChangeDetector;var b=e("angular2/src/core/change_detection/jit_proto_change_detector");t.JitProtoChangeDetector=b.JitProtoChangeDetector;var C=e("angular2/src/core/change_detection/binding_record");t.BindingRecord=C.BindingRecord,t.BindingTarget=C.BindingTarget;var w=e("angular2/src/core/change_detection/directive_record");t.DirectiveIndex=w.DirectiveIndex,t.DirectiveRecord=w.DirectiveRecord;var P=e("angular2/src/core/change_detection/dynamic_change_detector");t.DynamicChangeDetector=P.DynamicChangeDetector;var E=e("angular2/src/core/change_detection/change_detector_ref");t.ChangeDetectorRef=E.ChangeDetectorRef;var S=e("angular2/src/core/change_detection/differs/iterable_differs");t.IterableDiffers=S.IterableDiffers;var R=e("angular2/src/core/change_detection/differs/keyvalue_differs");t.KeyValueDiffers=R.KeyValueDiffers;var x=e("angular2/src/core/change_detection/change_detection_util");return t.WrappedValue=x.WrappedValue,t.SimpleChange=x.SimpleChange,t.keyValDiff=l.CONST_EXPR([l.CONST_EXPR(new c.DefaultKeyValueDifferFactory)]),t.iterableDiff=l.CONST_EXPR([l.CONST_EXPR(new a.DefaultIterableDifferFactory)]),t.defaultIterableDiffers=l.CONST_EXPR(new o.IterableDiffers(t.iterableDiff)),t.defaultKeyValueDiffers=l.CONST_EXPR(new s.KeyValueDiffers(t.keyValDiff)),n.define=i,r.exports}),System.register("angular2/src/core/application_ref",["angular2/src/core/zone/ng_zone","angular2/src/facade/lang","angular2/src/core/di","angular2/src/core/application_tokens","angular2/src/facade/async","angular2/src/facade/collection","angular2/src/core/testability/testability","angular2/src/core/linker/dynamic_component_loader","angular2/src/facade/exceptions","angular2/src/core/console","angular2/src/core/profile/profile","angular2/src/facade/lang"],!0,function(e,t,r){function n(e){return[g.provide(m.APP_COMPONENT,{useValue:e}),g.provide(m.APP_COMPONENT_REF_PROMISE,{useFactory:function(t,r,n){var i;return t.loadAsRoot(e,null,n,function(){r._unloadComponent(i)}).then(function(e){i=e;var t=n.getOptional(_.Testability);return h.isPresent(t)&&n.get(_.TestabilityRegistry).registerApplication(e.location.nativeElement,t),e})},deps:[b.DynamicComponentLoader,D,g.Injector]}),g.provide(e,{useFactory:function(e){return e.then(function(e){return e.instance})},deps:[m.APP_COMPONENT_REF_PROMISE]})]}function i(){return new f.NgZone({enableLongStackTrace:h.assertionsEnabled()})}function o(e){if(E.lockMode(),h.isPresent(S)){if(y.ListWrapper.equals(R,e))return S;throw new C.BaseException("platform cannot be initialized with different sets of providers.")}return s(e)}function a(){h.isPresent(S)&&(S.dispose(),S=null)}function s(e){R=e;var t=g.Injector.resolveAndCreate(e);return S=new O(t,function(){S=null,R=null}),c(t),S}function c(e){var t=e.getOptional(m.PLATFORM_INITIALIZER);h.isPresent(t)&&t.forEach(function(e){return e()})}function l(e){var t=e.getOptional(m.APP_INITIALIZER),r=[];return h.isPresent(t)&&t.forEach(function(e){var t=e();v.PromiseWrapper.isPromise(t)&&r.push(t)}),r.length>0?v.PromiseWrapper.all(r):null}var u=System.global,p=u.define;u.define=void 0;var d=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},f=e("angular2/src/core/zone/ng_zone"),h=e("angular2/src/facade/lang"),g=e("angular2/src/core/di"),m=e("angular2/src/core/application_tokens"),v=e("angular2/src/facade/async"),y=e("angular2/src/facade/collection"),_=e("angular2/src/core/testability/testability"),b=e("angular2/src/core/linker/dynamic_component_loader"),C=e("angular2/src/facade/exceptions"),w=e("angular2/src/core/console"),P=e("angular2/src/core/profile/profile"),E=e("angular2/src/facade/lang");t.createNgZone=i;var S,R;t.platform=o,t.disposePlatform=a;var x=function(){function e(){}return Object.defineProperty(e.prototype,"injector",{get:function(){throw C.unimplemented()},enumerable:!0,configurable:!0}),e}();t.PlatformRef=x;var O=function(e){function t(t,r){e.call(this),this._injector=t,this._dispose=r,this._applications=[],this._disposeListeners=[]}return d(t,e),t.prototype.registerDisposeListener=function(e){this._disposeListeners.push(e)},Object.defineProperty(t.prototype,"injector",{get:function(){return this._injector},enumerable:!0,configurable:!0}),t.prototype.application=function(e){var t=this._initApp(i(),e);if(v.PromiseWrapper.isPromise(t))throw new C.BaseException("Cannot use asyncronous app initializers with application. Use asyncApplication instead.");return t},t.prototype.asyncApplication=function(e,t){var r=this,n=i(),o=v.PromiseWrapper.completer();return null===e?o.resolve(this._initApp(n,t)):n.run(function(){v.PromiseWrapper.then(e(n),function(e){h.isPresent(t)&&(e=y.ListWrapper.concat(e,t));var i=r._initApp(n,e);o.resolve(i)})}),o.promise},t.prototype._initApp=function(e,t){var r,n,i=this;e.run(function(){t=y.ListWrapper.concat(t,[g.provide(f.NgZone,{useValue:e}),g.provide(D,{useFactory:function(){return n},deps:[]})]);var o;try{r=i.injector.resolveAndCreateChild(t),o=r.get(C.ExceptionHandler),v.ObservableWrapper.subscribe(e.onError,function(e){o.call(e.error,e.stackTrace)})}catch(a){h.isPresent(o)?o.call(a,a.stack):h.print(a.toString())}}),n=new A(this,e,r),this._applications.push(n);var o=l(r);return null!==o?v.PromiseWrapper.then(o,function(e){return n}):n},t.prototype.dispose=function(){y.ListWrapper.clone(this._applications).forEach(function(e){return e.dispose()}),this._disposeListeners.forEach(function(e){return e()}),this._dispose()},t.prototype._applicationDisposed=function(e){y.ListWrapper.remove(this._applications,e)},t}(x);t.PlatformRef_=O;var D=function(){function e(){}return Object.defineProperty(e.prototype,"injector",{get:function(){return C.unimplemented()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"zone",{get:function(){return C.unimplemented()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"componentTypes",{get:function(){return C.unimplemented()},enumerable:!0,configurable:!0}),e}();t.ApplicationRef=D;var A=function(e){function t(t,r,n){var i=this;e.call(this),this._platform=t,this._zone=r,this._injector=n,this._bootstrapListeners=[],this._disposeListeners=[],this._rootComponents=[],this._rootComponentTypes=[],this._changeDetectorRefs=[],this._runningTick=!1,this._enforceNoNewChanges=!1,h.isPresent(this._zone)&&v.ObservableWrapper.subscribe(this._zone.onMicrotaskEmpty,function(e){i._zone.run(function(){i.tick()})}),this._enforceNoNewChanges=h.assertionsEnabled()}return d(t,e),t.prototype.registerBootstrapListener=function(e){this._bootstrapListeners.push(e)},t.prototype.registerDisposeListener=function(e){this._disposeListeners.push(e)},t.prototype.registerChangeDetector=function(e){this._changeDetectorRefs.push(e)},t.prototype.unregisterChangeDetector=function(e){y.ListWrapper.remove(this._changeDetectorRefs,e)},t.prototype.bootstrap=function(e,t){var r=this,i=v.PromiseWrapper.completer();return this._zone.run(function(){var o=n(e);h.isPresent(t)&&o.push(t);var a=r._injector.get(C.ExceptionHandler);r._rootComponentTypes.push(e);try{var s=r._injector.resolveAndCreateChild(o),c=s.get(m.APP_COMPONENT_REF_PROMISE),l=function(e){r._loadComponent(e),i.resolve(e)},u=v.PromiseWrapper.then(c,l);v.PromiseWrapper.then(u,null,function(e,t){i.reject(e,t),a.call(e,t)})}catch(p){a.call(p,p.stack),i.reject(p,p.stack)}}),i.promise.then(function(e){var t=r._injector.get(w.Console);return h.assertionsEnabled()&&t.log("Angular 2 is running in the development mode. Call enableProdMode() to enable the production mode."),e})},t.prototype._loadComponent=function(e){var t=e.location.internalElement.parentView.changeDetector;this._changeDetectorRefs.push(t.ref),this.tick(),this._rootComponents.push(e),this._bootstrapListeners.forEach(function(t){return t(e)})},t.prototype._unloadComponent=function(e){y.ListWrapper.contains(this._rootComponents,e)&&(this.unregisterChangeDetector(e.location.internalElement.parentView.changeDetector.ref),y.ListWrapper.remove(this._rootComponents,e))},Object.defineProperty(t.prototype,"injector",{get:function(){return this._injector},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"zone",{get:function(){return this._zone},enumerable:!0,configurable:!0}),t.prototype.tick=function(){
if(this._runningTick)throw new C.BaseException("ApplicationRef.tick is called recursively");var e=t._tickScope();try{this._runningTick=!0,this._changeDetectorRefs.forEach(function(e){return e.detectChanges()}),this._enforceNoNewChanges&&this._changeDetectorRefs.forEach(function(e){return e.checkNoChanges()})}finally{this._runningTick=!1,P.wtfLeave(e)}},t.prototype.dispose=function(){y.ListWrapper.clone(this._rootComponents).forEach(function(e){return e.dispose()}),this._disposeListeners.forEach(function(e){return e()}),this._platform._applicationDisposed(this)},Object.defineProperty(t.prototype,"componentTypes",{get:function(){return this._rootComponentTypes},enumerable:!0,configurable:!0}),t._tickScope=P.wtfCreateScope("ApplicationRef#tick()"),t}(D);return t.ApplicationRef_=A,u.define=p,r.exports}),System.register("angular2/src/core/change_detection",["angular2/src/core/change_detection/change_detection"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/change_detection/change_detection");return t.ChangeDetectionStrategy=o.ChangeDetectionStrategy,t.ExpressionChangedAfterItHasBeenCheckedException=o.ExpressionChangedAfterItHasBeenCheckedException,t.ChangeDetectionError=o.ChangeDetectionError,t.ChangeDetectorRef=o.ChangeDetectorRef,t.WrappedValue=o.WrappedValue,t.SimpleChange=o.SimpleChange,t.IterableDiffers=o.IterableDiffers,t.KeyValueDiffers=o.KeyValueDiffers,t.CollectionChangeRecord=o.CollectionChangeRecord,t.KeyValueChangeRecord=o.KeyValueChangeRecord,n.define=i,r.exports}),System.register("angular2/core",["angular2/src/core/metadata","angular2/src/core/util","angular2/src/core/prod_mode","angular2/src/core/di","angular2/src/facade/facade","angular2/src/facade/lang","angular2/src/core/application_ref","angular2/src/core/application_tokens","angular2/src/core/zone","angular2/src/core/render","angular2/src/core/linker","angular2/src/core/debug/debug_node","angular2/src/core/testability/testability","angular2/src/core/change_detection","angular2/src/core/platform_directives_and_pipes","angular2/src/core/platform_common_providers","angular2/src/core/application_common_providers","angular2/src/core/reflection/reflection"],!0,function(e,t,r){function n(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}var i=System.global,o=i.define;i.define=void 0,n(e("angular2/src/core/metadata")),n(e("angular2/src/core/util")),n(e("angular2/src/core/prod_mode")),n(e("angular2/src/core/di")),n(e("angular2/src/facade/facade"));var a=e("angular2/src/facade/lang");t.enableProdMode=a.enableProdMode;var s=e("angular2/src/core/application_ref");t.platform=s.platform,t.createNgZone=s.createNgZone,t.PlatformRef=s.PlatformRef,t.ApplicationRef=s.ApplicationRef;var c=e("angular2/src/core/application_tokens");t.APP_ID=c.APP_ID,t.APP_COMPONENT=c.APP_COMPONENT,t.APP_INITIALIZER=c.APP_INITIALIZER,t.PACKAGE_ROOT_URL=c.PACKAGE_ROOT_URL,t.PLATFORM_INITIALIZER=c.PLATFORM_INITIALIZER,n(e("angular2/src/core/zone")),n(e("angular2/src/core/render")),n(e("angular2/src/core/linker"));var l=e("angular2/src/core/debug/debug_node");return t.DebugElement=l.DebugElement,t.DebugNode=l.DebugNode,t.asNativeElements=l.asNativeElements,n(e("angular2/src/core/testability/testability")),n(e("angular2/src/core/change_detection")),n(e("angular2/src/core/platform_directives_and_pipes")),n(e("angular2/src/core/platform_common_providers")),n(e("angular2/src/core/application_common_providers")),n(e("angular2/src/core/reflection/reflection")),i.define=o,r.exports}),System.register("angular2/src/facade/async",["angular2/src/facade/lang","angular2/src/facade/promise","rxjs/Subject","rxjs/observable/PromiseObservable","rxjs/operator/toPromise","rxjs/Observable","rxjs/Subject"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/facade/lang"),s=e("angular2/src/facade/promise");t.PromiseWrapper=s.PromiseWrapper,t.PromiseCompleter=s.PromiseCompleter;var c=e("rxjs/Subject"),l=e("rxjs/observable/PromiseObservable"),u=e("rxjs/operator/toPromise"),p=e("rxjs/Observable");t.Observable=p.Observable;var d=e("rxjs/Subject");t.Subject=d.Subject;var f=function(){function e(){}return e.setTimeout=function(e,t){return a.global.setTimeout(e,t)},e.clearTimeout=function(e){a.global.clearTimeout(e)},e.setInterval=function(e,t){return a.global.setInterval(e,t)},e.clearInterval=function(e){a.global.clearInterval(e)},e}();t.TimerWrapper=f;var h=function(){function e(){}return e.subscribe=function(e,t,r,n){return void 0===n&&(n=function(){}),r="function"==typeof r&&r||a.noop,n="function"==typeof n&&n||a.noop,e.subscribe({next:t,error:r,complete:n})},e.isObservable=function(e){return!!e.subscribe},e.hasSubscribers=function(e){return e.observers.length>0},e.dispose=function(e){e.unsubscribe()},e.callNext=function(e,t){e.next(t)},e.callEmit=function(e,t){e.emit(t)},e.callError=function(e,t){e.error(t)},e.callComplete=function(e){e.complete()},e.fromPromise=function(e){return l.PromiseObservable.create(e)},e.toPromise=function(e){return u.toPromise.call(e)},e}();t.ObservableWrapper=h;var g=function(e){function t(t){void 0===t&&(t=!0),e.call(this),this._isAsync=t}return o(t,e),t.prototype.emit=function(t){e.prototype.next.call(this,t)},t.prototype.next=function(t){e.prototype.next.call(this,t)},t.prototype.subscribe=function(t,r,n){var i,o=function(e){return null},a=function(){return null};return t&&"object"==typeof t?(i=this._isAsync?function(e){setTimeout(function(){return t.next(e)})}:function(e){t.next(e)},t.error&&(o=this._isAsync?function(e){setTimeout(function(){return t.error(e)})}:function(e){t.error(e)}),t.complete&&(a=this._isAsync?function(){setTimeout(function(){return t.complete()})}:function(){t.complete()})):(i=this._isAsync?function(e){setTimeout(function(){return t(e)})}:function(e){t(e)},r&&(o=this._isAsync?function(e){setTimeout(function(){return r(e)})}:function(e){r(e)}),n&&(a=this._isAsync?function(){setTimeout(function(){return n()})}:function(){n()})),e.prototype.subscribe.call(this,i,o,a)},t}(c.Subject);return t.EventEmitter=g,n.define=i,r.exports}),System.register("angular2/src/core/metadata/directives",["angular2/src/facade/lang","angular2/src/core/di/metadata","angular2/src/core/change_detection"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/facade/lang"),l=e("angular2/src/core/di/metadata"),u=e("angular2/src/core/change_detection"),p=function(e){function t(t){var r=void 0===t?{}:t,n=r.selector,i=r.inputs,o=r.outputs,a=r.properties,s=r.events,c=r.host,l=r.bindings,u=r.providers,p=r.exportAs,d=r.queries;e.call(this),this.selector=n,this._inputs=i,this._properties=a,this._outputs=o,this._events=s,this.host=c,this.exportAs=p,this.queries=d,this._providers=u,this._bindings=l}return o(t,e),Object.defineProperty(t.prototype,"inputs",{get:function(){return c.isPresent(this._properties)&&this._properties.length>0?this._properties:this._inputs},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"properties",{get:function(){return this.inputs},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"outputs",{get:function(){return c.isPresent(this._events)&&this._events.length>0?this._events:this._outputs},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"events",{get:function(){return this.outputs},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"providers",{get:function(){return c.isPresent(this._bindings)&&this._bindings.length>0?this._bindings:this._providers},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bindings",{get:function(){return this.providers},enumerable:!0,configurable:!0}),t=a([c.CONST(),s("design:paramtypes",[Object])],t)}(l.InjectableMetadata);t.DirectiveMetadata=p;var d=function(e){function t(t){var r=void 0===t?{}:t,n=r.selector,i=r.inputs,o=r.outputs,a=r.properties,s=r.events,c=r.host,l=r.exportAs,p=r.moduleId,d=r.bindings,f=r.providers,h=r.viewBindings,g=r.viewProviders,m=r.changeDetection,v=void 0===m?u.ChangeDetectionStrategy.Default:m,y=r.queries,_=r.templateUrl,b=r.template,C=r.styleUrls,w=r.styles,P=r.directives,E=r.pipes,S=r.encapsulation;e.call(this,{selector:n,inputs:i,outputs:o,properties:a,events:s,host:c,exportAs:l,bindings:d,providers:f,queries:y}),this.changeDetection=v,this._viewProviders=g,this._viewBindings=h,this.templateUrl=_,this.template=b,this.styleUrls=C,this.styles=w,this.directives=P,this.pipes=E,this.encapsulation=S,this.moduleId=p}return o(t,e),Object.defineProperty(t.prototype,"viewProviders",{get:function(){return c.isPresent(this._viewBindings)&&this._viewBindings.length>0?this._viewBindings:this._viewProviders},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"viewBindings",{get:function(){return this.viewProviders},enumerable:!0,configurable:!0}),t=a([c.CONST(),s("design:paramtypes",[Object])],t)}(p);t.ComponentMetadata=d;var f=function(e){function t(t){var r=t.name,n=t.pure;e.call(this),this.name=r,this._pure=n}return o(t,e),Object.defineProperty(t.prototype,"pure",{get:function(){return c.isPresent(this._pure)?this._pure:!0},enumerable:!0,configurable:!0}),t=a([c.CONST(),s("design:paramtypes",[Object])],t)}(l.InjectableMetadata);t.PipeMetadata=f;var h=function(){function e(e){this.bindingPropertyName=e}return e=a([c.CONST(),s("design:paramtypes",[String])],e)}();t.InputMetadata=h;var g=function(){function e(e){this.bindingPropertyName=e}return e=a([c.CONST(),s("design:paramtypes",[String])],e)}();t.OutputMetadata=g;var m=function(){function e(e){this.hostPropertyName=e}return e=a([c.CONST(),s("design:paramtypes",[String])],e)}();t.HostBindingMetadata=m;var v=function(){function e(e,t){this.eventName=e,this.args=t}return e=a([c.CONST(),s("design:paramtypes",[String,Array])],e)}();return t.HostListenerMetadata=v,n.define=i,r.exports}),System.register("angular2/src/platform/dom/events/dom_events",["angular2/src/platform/dom/dom_adapter","angular2/core","angular2/src/platform/dom/events/event_manager"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/platform/dom/dom_adapter"),l=e("angular2/core"),u=e("angular2/src/platform/dom/events/event_manager"),p=function(e){function t(){e.apply(this,arguments)}return o(t,e),t.prototype.supports=function(e){return!0},t.prototype.addEventListener=function(e,t,r){var n=this.manager.getZone(),i=function(e){return n.run(function(){return r(e)})};return this.manager.getZone().runOutsideAngular(function(){return c.DOM.onAndCancel(e,t,i)})},t.prototype.addGlobalEventListener=function(e,t,r){var n=c.DOM.getGlobalEventTarget(e),i=this.manager.getZone(),o=function(e){return i.run(function(){return r(e)})};return this.manager.getZone().runOutsideAngular(function(){return c.DOM.onAndCancel(n,t,o)})},t=a([l.Injectable(),s("design:paramtypes",[])],t)}(u.EventManagerPlugin);return t.DomEventsPlugin=p,n.define=i,r.exports}),System.register("angular2/src/core/zone/ng_zone",["angular2/src/facade/async","angular2/src/core/zone/ng_zone_impl","angular2/src/facade/exceptions","angular2/src/core/zone/ng_zone_impl"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/async"),a=e("angular2/src/core/zone/ng_zone_impl"),s=e("angular2/src/facade/exceptions"),c=e("angular2/src/core/zone/ng_zone_impl");t.NgZoneError=c.NgZoneError;var l=function(){function e(e){var t=this,r=e.enableLongStackTrace,n=void 0===r?!1:r;this._hasPendingMicrotasks=!1,this._hasPendingMacrotasks=!1,this._isStable=!0,this._nesting=0,this._onUnstable=new o.EventEmitter(!1),this._onMicrotaskEmpty=new o.EventEmitter(!1),this._onStable=new o.EventEmitter(!1),this._onErrorEvents=new o.EventEmitter(!1),this._zoneImpl=new a.NgZoneImpl({trace:n,onEnter:function(){t._nesting++,t._isStable&&(t._isStable=!1,t._onUnstable.emit(null))},onLeave:function(){t._nesting--,t._checkStable()},setMicrotask:function(e){t._hasPendingMicrotasks=e,t._checkStable()},setMacrotask:function(e){t._hasPendingMacrotasks=e},onError:function(e){return t._onErrorEvents.emit(e)}})}return e.isInAngularZone=function(){return a.NgZoneImpl.isInAngularZone()},e.assertInAngularZone=function(){if(!a.NgZoneImpl.isInAngularZone())throw new s.BaseException("Expected to be in Angular Zone, but it is not!")},e.assertNotInAngularZone=function(){if(a.NgZoneImpl.isInAngularZone())throw new s.BaseException("Expected to not be in Angular Zone, but it is!")},e.prototype._checkStable=function(){var e=this;if(0==this._nesting&&!this._hasPendingMicrotasks&&!this._isStable)try{this._nesting++,this._onMicrotaskEmpty.emit(null)}finally{if(this._nesting--,!this._hasPendingMicrotasks)try{this.runOutsideAngular(function(){return e._onStable.emit(null)})}finally{this._isStable=!0}}},Object.defineProperty(e.prototype,"onUnstable",{get:function(){return this._onUnstable},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onMicrotaskEmpty",{get:function(){return this._onMicrotaskEmpty},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onStable",{get:function(){return this._onStable},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onError",{get:function(){return this._onErrorEvents},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasPendingMicrotasks",{get:function(){return this._hasPendingMicrotasks},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasPendingMacrotasks",{get:function(){return this._hasPendingMacrotasks},enumerable:!0,configurable:!0}),e.prototype.run=function(e){return this._zoneImpl.runInner(e)},e.prototype.runOutsideAngular=function(e){return this._zoneImpl.runOuter(e)},e}();return t.NgZone=l,n.define=i,r.exports}),System.register("angular2/src/core/metadata",["angular2/src/core/metadata/di","angular2/src/core/metadata/directives","angular2/src/core/metadata/view","angular2/src/core/metadata/di","angular2/src/core/metadata/directives","angular2/src/core/metadata/view","angular2/src/core/util/decorators"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/metadata/di");t.QueryMetadata=o.QueryMetadata,t.ContentChildrenMetadata=o.ContentChildrenMetadata,t.ContentChildMetadata=o.ContentChildMetadata,t.ViewChildrenMetadata=o.ViewChildrenMetadata,t.ViewQueryMetadata=o.ViewQueryMetadata,t.ViewChildMetadata=o.ViewChildMetadata,t.AttributeMetadata=o.AttributeMetadata;var a=e("angular2/src/core/metadata/directives");t.ComponentMetadata=a.ComponentMetadata,t.DirectiveMetadata=a.DirectiveMetadata,t.PipeMetadata=a.PipeMetadata,t.InputMetadata=a.InputMetadata,t.OutputMetadata=a.OutputMetadata,t.HostBindingMetadata=a.HostBindingMetadata,t.HostListenerMetadata=a.HostListenerMetadata;var s=e("angular2/src/core/metadata/view");t.ViewMetadata=s.ViewMetadata,t.ViewEncapsulation=s.ViewEncapsulation;var c=e("angular2/src/core/metadata/di"),l=e("angular2/src/core/metadata/directives"),u=e("angular2/src/core/metadata/view"),p=e("angular2/src/core/util/decorators");t.Component=p.makeDecorator(l.ComponentMetadata,function(e){return e.View=d}),t.Directive=p.makeDecorator(l.DirectiveMetadata);var d=p.makeDecorator(u.ViewMetadata,function(e){return e.View=d});return t.Attribute=p.makeParamDecorator(c.AttributeMetadata),t.Query=p.makeParamDecorator(c.QueryMetadata),t.ContentChildren=p.makePropDecorator(c.ContentChildrenMetadata),t.ContentChild=p.makePropDecorator(c.ContentChildMetadata),t.ViewChildren=p.makePropDecorator(c.ViewChildrenMetadata),t.ViewChild=p.makePropDecorator(c.ViewChildMetadata),t.ViewQuery=p.makeParamDecorator(c.ViewQueryMetadata),t.Pipe=p.makeDecorator(l.PipeMetadata),t.Input=p.makePropDecorator(l.InputMetadata),t.Output=p.makePropDecorator(l.OutputMetadata),t.HostBinding=p.makePropDecorator(l.HostBindingMetadata),t.HostListener=p.makePropDecorator(l.HostListenerMetadata),n.define=i,r.exports}),System.register("angular2/src/platform/dom/events/event_manager",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/core/di","angular2/src/core/zone/ng_zone","angular2/src/facade/collection"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},c=e("angular2/src/facade/lang"),l=e("angular2/src/facade/exceptions"),u=e("angular2/src/core/di"),p=e("angular2/src/core/zone/ng_zone"),d=e("angular2/src/facade/collection");t.EVENT_MANAGER_PLUGINS=c.CONST_EXPR(new u.OpaqueToken("EventManagerPlugins"));var f=function(){function e(e,t){var r=this;this._zone=t,e.forEach(function(e){return e.manager=r}),this._plugins=d.ListWrapper.reversed(e)}return e.prototype.addEventListener=function(e,t,r){var n=this._findPluginFor(t);return n.addEventListener(e,t,r)},e.prototype.addGlobalEventListener=function(e,t,r){var n=this._findPluginFor(t);return n.addGlobalEventListener(e,t,r)},e.prototype.getZone=function(){return this._zone},e.prototype._findPluginFor=function(e){for(var t=this._plugins,r=0;r<t.length;r++){var n=t[r];if(n.supports(e))return n}throw new l.BaseException("No event manager plugin found for event "+e)},e=o([u.Injectable(),s(0,u.Inject(t.EVENT_MANAGER_PLUGINS)),a("design:paramtypes",[Array,p.NgZone])],e)}();t.EventManager=f;var h=function(){function e(){}return e.prototype.supports=function(e){return!1},e.prototype.addEventListener=function(e,t,r){throw"not implemented"},e.prototype.addGlobalEventListener=function(e,t,r){throw"not implemented"},e}();return t.EventManagerPlugin=h,n.define=i,r.exports}),System.register("angular2/src/platform/dom/dom_renderer",["angular2/src/core/di","angular2/src/animate/animation_builder","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/platform/dom/shared_styles_host","angular2/src/platform/dom/events/event_manager","angular2/src/platform/dom/dom_tokens","angular2/src/core/metadata","angular2/src/platform/dom/dom_adapter","angular2/src/platform/dom/util"],!0,function(e,t,r){function n(e,t){var r=E.DOM.parentElement(e);if(t.length>0&&y.isPresent(r)){var n=E.DOM.nextSibling(e);if(y.isPresent(n))for(var i=0;i<t.length;i++)E.DOM.insertBefore(n,t[i]);else for(var i=0;i<t.length;i++)E.DOM.appendChild(r,t[i])}}function i(e,t){for(var r=0;r<t.length;r++)E.DOM.appendChild(e,t[r])}function o(e){return function(t){var r=e(t);r===!1&&E.DOM.preventDefault(t)}}function a(e){return y.StringWrapper.replaceAll(t.CONTENT_ATTR,I,e)}function s(e){return y.StringWrapper.replaceAll(t.HOST_ATTR,I,e)}function c(e,t,r){for(var n=0;n<t.length;n++){var i=t[n];y.isArray(i)?c(e,i,r):(i=y.StringWrapper.replaceAll(i,I,e),r.push(i))}return r}function l(e){if("@"!=e[0])return[null,e];var t=y.RegExpWrapper.firstMatch(k,e);return[t[1],t[2]]}var u=System.global,p=u.define;u.define=void 0;var d=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},f=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},h=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},g=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},m=e("angular2/src/core/di"),v=e("angular2/src/animate/animation_builder"),y=e("angular2/src/facade/lang"),_=e("angular2/src/facade/exceptions"),b=e("angular2/src/platform/dom/shared_styles_host"),C=e("angular2/src/platform/dom/events/event_manager"),w=e("angular2/src/platform/dom/dom_tokens"),P=e("angular2/src/core/metadata"),E=e("angular2/src/platform/dom/dom_adapter"),S=e("angular2/src/platform/dom/util"),R=y.CONST_EXPR({xlink:"http://www.w3.org/1999/xlink",svg:"http://www.w3.org/2000/svg"}),x="template bindings={}",O=/^template bindings=(.*)$/g,D=function(){function e(e,t,r,n){this.document=e,this.eventManager=t,this.sharedStylesHost=r,this.animate=n,this._registeredComponents=new Map}return e.prototype.renderComponent=function(e){var t=this._registeredComponents.get(e.id);return y.isBlank(t)&&(t=new T(this,e),this._registeredComponents.set(e.id,t)),t},e}();t.DomRootRenderer=D;var A=function(e){function t(t,r,n,i){e.call(this,t,r,n,i)}return d(t,e),t=f([m.Injectable(),g(0,m.Inject(w.DOCUMENT)),h("design:paramtypes",[Object,C.EventManager,b.DomSharedStylesHost,v.AnimationBuilder])],t)}(D);t.DomRootRenderer_=A;var T=function(){function e(e,t){this._rootRenderer=e,this.componentProto=t,this._styles=c(t.id,t.styles,[]),t.encapsulation!==P.ViewEncapsulation.Native&&this._rootRenderer.sharedStylesHost.addStyles(this._styles),this.componentProto.encapsulation===P.ViewEncapsulation.Emulated?(this._contentAttr=a(t.id),this._hostAttr=s(t.id)):(this._contentAttr=null,this._hostAttr=null)}return e.prototype.renderComponent=function(e){return this._rootRenderer.renderComponent(e)},e.prototype.selectRootElement=function(e){var t=E.DOM.querySelector(this._rootRenderer.document,e);if(y.isBlank(t))throw new _.BaseException('The selector "'+e+'" did not match any elements');return E.DOM.clearNodes(t),t},e.prototype.createElement=function(e,t){var r=l(t),n=y.isPresent(r[0])?E.DOM.createElementNS(R[r[0]],r[1]):E.DOM.createElement(r[1]);return y.isPresent(this._contentAttr)&&E.DOM.setAttribute(n,this._contentAttr,""),y.isPresent(e)&&E.DOM.appendChild(e,n),n},e.prototype.createViewRoot=function(e){var t;if(this.componentProto.encapsulation===P.ViewEncapsulation.Native){t=E.DOM.createShadowRoot(e),this._rootRenderer.sharedStylesHost.addHost(t);for(var r=0;r<this._styles.length;r++)E.DOM.appendChild(t,E.DOM.createStyleElement(this._styles[r]))}else y.isPresent(this._hostAttr)&&E.DOM.setAttribute(e,this._hostAttr,""),t=e;return t},e.prototype.createTemplateAnchor=function(e){var t=E.DOM.createComment(x);return y.isPresent(e)&&E.DOM.appendChild(e,t),t},e.prototype.createText=function(e,t){var r=E.DOM.createTextNode(t);return y.isPresent(e)&&E.DOM.appendChild(e,r),r},e.prototype.projectNodes=function(e,t){y.isBlank(e)||i(e,t)},e.prototype.attachViewAfter=function(e,t){n(e,t);for(var r=0;r<t.length;r++)this.animateNodeEnter(t[r])},e.prototype.detachView=function(e){for(var t=0;t<e.length;t++){var r=e[t];E.DOM.remove(r),this.animateNodeLeave(r)}},e.prototype.destroyView=function(e,t){this.componentProto.encapsulation===P.ViewEncapsulation.Native&&y.isPresent(e)&&this._rootRenderer.sharedStylesHost.removeHost(E.DOM.getShadowRoot(e))},e.prototype.listen=function(e,t,r){return this._rootRenderer.eventManager.addEventListener(e,t,o(r))},e.prototype.listenGlobal=function(e,t,r){return this._rootRenderer.eventManager.addGlobalEventListener(e,t,o(r))},e.prototype.setElementProperty=function(e,t,r){E.DOM.setProperty(e,t,r)},e.prototype.setElementAttribute=function(e,t,r){var n,i=l(t);y.isPresent(i[0])&&(t=i[0]+":"+i[1],n=R[i[0]]),y.isPresent(r)?y.isPresent(n)?E.DOM.setAttributeNS(e,n,t,r):E.DOM.setAttribute(e,t,r):y.isPresent(n)?E.DOM.removeAttributeNS(e,n,i[1]):E.DOM.removeAttribute(e,t)},e.prototype.setBindingDebugInfo=function(e,t,r){var n=S.camelCaseToDashCase(t);if(E.DOM.isCommentNode(e)){var i=y.RegExpWrapper.firstMatch(O,y.StringWrapper.replaceAll(E.DOM.getText(e),/\n/g,"")),o=y.Json.parse(i[1]);o[n]=r,E.DOM.setText(e,y.StringWrapper.replace(x,"{}",y.Json.stringify(o)))}else this.setElementAttribute(e,t,r)},e.prototype.setElementDebugInfo=function(e,t){},e.prototype.setElementClass=function(e,t,r){r?E.DOM.addClass(e,t):E.DOM.removeClass(e,t)},e.prototype.setElementStyle=function(e,t,r){y.isPresent(r)?E.DOM.setStyle(e,t,y.stringify(r)):E.DOM.removeStyle(e,t)},e.prototype.invokeElementMethod=function(e,t,r){E.DOM.invoke(e,t,r)},e.prototype.setText=function(e,t){E.DOM.setText(e,t)},e.prototype.animateNodeEnter=function(e){E.DOM.isElementNode(e)&&E.DOM.hasClass(e,"ng-animate")&&(E.DOM.addClass(e,"ng-enter"),this._rootRenderer.animate.css().addAnimationClass("ng-enter-active").start(e).onComplete(function(){E.DOM.removeClass(e,"ng-enter")}))},e.prototype.animateNodeLeave=function(e){E.DOM.isElementNode(e)&&E.DOM.hasClass(e,"ng-animate")?(E.DOM.addClass(e,"ng-leave"),this._rootRenderer.animate.css().addAnimationClass("ng-leave-active").start(e).onComplete(function(){E.DOM.removeClass(e,"ng-leave"),E.DOM.remove(e)})):E.DOM.remove(e)},e}();t.DomRenderer=T;var I=/%COMP%/g;t.COMPONENT_VARIABLE="%COMP%",t.HOST_ATTR="_nghost-"+t.COMPONENT_VARIABLE,t.CONTENT_ATTR="_ngcontent-"+t.COMPONENT_VARIABLE;var k=/^@([^:]+):(.+)/g;return u.define=p,r.exports}),System.register("angular2/platform/common_dom",["angular2/src/platform/dom/dom_adapter","angular2/src/platform/dom/dom_renderer","angular2/src/platform/dom/dom_tokens","angular2/src/platform/dom/shared_styles_host","angular2/src/platform/dom/events/dom_events","angular2/src/platform/dom/events/event_manager","angular2/src/platform/dom/debug/by","angular2/src/platform/dom/debug/ng_probe"],!0,function(e,t,r){function n(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/platform/dom/dom_adapter");t.DOM=a.DOM,t.setRootDomAdapter=a.setRootDomAdapter,t.DomAdapter=a.DomAdapter;var s=e("angular2/src/platform/dom/dom_renderer");t.DomRenderer=s.DomRenderer;var c=e("angular2/src/platform/dom/dom_tokens");t.DOCUMENT=c.DOCUMENT;var l=e("angular2/src/platform/dom/shared_styles_host");t.SharedStylesHost=l.SharedStylesHost,t.DomSharedStylesHost=l.DomSharedStylesHost;var u=e("angular2/src/platform/dom/events/dom_events");t.DomEventsPlugin=u.DomEventsPlugin;var p=e("angular2/src/platform/dom/events/event_manager");return t.EVENT_MANAGER_PLUGINS=p.EVENT_MANAGER_PLUGINS,t.EventManager=p.EventManager,t.EventManagerPlugin=p.EventManagerPlugin,n(e("angular2/src/platform/dom/debug/by")),n(e("angular2/src/platform/dom/debug/ng_probe")),i.define=o,r.exports}),System.register("angular2/src/common/pipes/invalid_pipe_argument_exception",["angular2/src/facade/lang","angular2/src/facade/exceptions"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/facade/lang"),s=e("angular2/src/facade/exceptions"),c=function(e){function t(t,r){e.call(this,"Invalid argument '"+r+"' for pipe '"+a.stringify(t)+"'")}return o(t,e),t}(s.BaseException);return t.InvalidPipeArgumentException=c,n.define=i,r.exports}),System.register("angular2/src/facade/intl",[],!0,function(e,t,r){function n(e){return 2==e?"2-digit":"numeric"}function i(e){return 4>e?"short":"long"}function o(e){for(var t,r={},o=0;o<e.length;){for(t=o;t<e.length&&e[t]==e[o];)t++;var a=t-o;switch(e[o]){case"G":r.era=i(a);break;case"y":r.year=n(a);break;case"M":a>=3?r.month=i(a):r.month=n(a);break;case"d":r.day=n(a);break;case"E":r.weekday=i(a);break;case"j":r.hour=n(a);break;case"h":r.hour=n(a),r.hour12=!0;break;case"H":r.hour=n(a),r.hour12=!1;break;case"m":r.minute=n(a);break;case"s":r.second=n(a);break;case"z":r.timeZoneName="long";break;case"Z":r.timeZoneName="short"}o=t}return r}var a=System.global,s=a.define;a.define=void 0,function(e){e[e.Decimal=0]="Decimal",e[e.Percent=1]="Percent",e[e.Currency=2]="Currency"}(t.NumberFormatStyle||(t.NumberFormatStyle={}));var c=t.NumberFormatStyle,l=function(){function e(){}return e.format=function(e,t,r,n){var i=void 0===n?{}:n,o=i.minimumIntegerDigits,a=void 0===o?1:o,s=i.minimumFractionDigits,l=void 0===s?0:s,u=i.maximumFractionDigits,p=void 0===u?3:u,d=i.currency,f=i.currencyAsSymbol,h=void 0===f?!1:f,g={minimumIntegerDigits:a,minimumFractionDigits:l,maximumFractionDigits:p};return g.style=c[r].toLowerCase(),r==c.Currency&&(g.currency=d,g.currencyDisplay=h?"symbol":"code"),new Intl.NumberFormat(t,g).format(e)},e}();t.NumberFormatter=l;var u=new Map,p=function(){function e(){}return e.format=function(e,t,r){var n=t+r;if(u.has(n))return u.get(n).format(e);var i=new Intl.DateTimeFormat(t,o(r));return u.set(n,i),i.format(e)},e}();return t.DateFormatter=p,a.define=s,r.exports}),System.register("angular2/src/common/pipes/json_pipe",["angular2/src/facade/lang","angular2/core"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/core"),l=function(){function e(){}return e.prototype.transform=function(e,t){return void 0===t&&(t=null),s.Json.stringify(e)},e=o([s.CONST(),c.Pipe({name:"json",pure:!1}),c.Injectable(),a("design:paramtypes",[])],e)}();return t.JsonPipe=l,n.define=i,r.exports}),System.register("angular2/src/common/pipes/slice_pipe",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/core","angular2/src/common/pipes/invalid_pipe_argument_exception"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/src/facade/exceptions"),l=e("angular2/src/facade/collection"),u=e("angular2/core"),p=e("angular2/src/common/pipes/invalid_pipe_argument_exception"),d=function(){
function e(){}return e.prototype.transform=function(t,r){if(void 0===r&&(r=null),s.isBlank(r)||0==r.length)throw new c.BaseException("Slice pipe requires one argument");if(!this.supports(t))throw new p.InvalidPipeArgumentException(e,t);if(s.isBlank(t))return t;var n=r[0],i=r.length>1?r[1]:null;return s.isString(t)?s.StringWrapper.slice(t,n,i):l.ListWrapper.slice(t,n,i)},e.prototype.supports=function(e){return s.isString(e)||s.isArray(e)},e=o([u.Pipe({name:"slice",pure:!1}),u.Injectable(),a("design:paramtypes",[])],e)}();return t.SlicePipe=d,n.define=i,r.exports}),System.register("angular2/src/common/pipes/lowercase_pipe",["angular2/src/facade/lang","angular2/core","angular2/src/common/pipes/invalid_pipe_argument_exception"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/core"),l=e("angular2/src/common/pipes/invalid_pipe_argument_exception"),u=function(){function e(){}return e.prototype.transform=function(t,r){if(void 0===r&&(r=null),s.isBlank(t))return t;if(!s.isString(t))throw new l.InvalidPipeArgumentException(e,t);return t.toLowerCase()},e=o([s.CONST(),c.Pipe({name:"lowercase"}),c.Injectable(),a("design:paramtypes",[])],e)}();return t.LowerCasePipe=u,n.define=i,r.exports}),System.register("angular2/src/common/pipes/number_pipe",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/intl","angular2/core","angular2/src/facade/collection","angular2/src/common/pipes/invalid_pipe_argument_exception"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/facade/lang"),l=e("angular2/src/facade/exceptions"),u=e("angular2/src/facade/intl"),p=e("angular2/core"),d=e("angular2/src/facade/collection"),f=e("angular2/src/common/pipes/invalid_pipe_argument_exception"),h="en-US",g=c.RegExpWrapper.create("^(\\d+)?\\.((\\d+)(\\-(\\d+))?)?$"),m=function(){function e(){}return e._format=function(t,r,n,i,o){if(void 0===i&&(i=null),void 0===o&&(o=!1),c.isBlank(t))return null;if(!c.isNumber(t))throw new f.InvalidPipeArgumentException(e,t);var a=1,s=0,p=3;if(c.isPresent(n)){var d=c.RegExpWrapper.firstMatch(g,n);if(c.isBlank(d))throw new l.BaseException(n+" is not a valid digit info for number pipes");c.isPresent(d[1])&&(a=c.NumberWrapper.parseIntAutoRadix(d[1])),c.isPresent(d[3])&&(s=c.NumberWrapper.parseIntAutoRadix(d[3])),c.isPresent(d[5])&&(p=c.NumberWrapper.parseIntAutoRadix(d[5]))}return u.NumberFormatter.format(t,h,r,{minimumIntegerDigits:a,minimumFractionDigits:s,maximumFractionDigits:p,currency:i,currencyAsSymbol:o})},e=a([c.CONST(),p.Injectable(),s("design:paramtypes",[])],e)}();t.NumberPipe=m;var v=function(e){function t(){e.apply(this,arguments)}return o(t,e),t.prototype.transform=function(e,t){var r=d.ListWrapper.first(t);return m._format(e,u.NumberFormatStyle.Decimal,r)},t=a([c.CONST(),p.Pipe({name:"number"}),p.Injectable(),s("design:paramtypes",[])],t)}(m);t.DecimalPipe=v;var y=function(e){function t(){e.apply(this,arguments)}return o(t,e),t.prototype.transform=function(e,t){var r=d.ListWrapper.first(t);return m._format(e,u.NumberFormatStyle.Percent,r)},t=a([c.CONST(),p.Pipe({name:"percent"}),p.Injectable(),s("design:paramtypes",[])],t)}(m);t.PercentPipe=y;var _=function(e){function t(){e.apply(this,arguments)}return o(t,e),t.prototype.transform=function(e,t){var r=c.isPresent(t)&&t.length>0?t[0]:"USD",n=c.isPresent(t)&&t.length>1?t[1]:!1,i=c.isPresent(t)&&t.length>2?t[2]:null;return m._format(e,u.NumberFormatStyle.Currency,i,r,n)},t=a([c.CONST(),p.Pipe({name:"currency"}),p.Injectable(),s("design:paramtypes",[])],t)}(m);return t.CurrencyPipe=_,n.define=i,r.exports}),System.register("angular2/src/common/pipes/uppercase_pipe",["angular2/src/facade/lang","angular2/core","angular2/src/common/pipes/invalid_pipe_argument_exception"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/core"),l=e("angular2/src/common/pipes/invalid_pipe_argument_exception"),u=function(){function e(){}return e.prototype.transform=function(t,r){if(void 0===r&&(r=null),s.isBlank(t))return t;if(!s.isString(t))throw new l.InvalidPipeArgumentException(e,t);return t.toUpperCase()},e=o([s.CONST(),c.Pipe({name:"uppercase"}),c.Injectable(),a("design:paramtypes",[])],e)}();return t.UpperCasePipe=u,n.define=i,r.exports}),System.register("angular2/src/common/pipes/replace_pipe",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/core","angular2/src/common/pipes/invalid_pipe_argument_exception"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/src/facade/exceptions"),l=e("angular2/core"),u=e("angular2/src/common/pipes/invalid_pipe_argument_exception"),p=function(){function e(){}return e.prototype.transform=function(t,r){if(s.isBlank(r)||2!==r.length)throw new c.BaseException("ReplacePipe requires two arguments");if(s.isBlank(t))return t;if(!this._supportedInput(t))throw new u.InvalidPipeArgumentException(e,t);var n=t.toString(),i=r[0],o=r[1];if(!this._supportedPattern(i))throw new u.InvalidPipeArgumentException(e,i);if(!this._supportedReplacement(o))throw new u.InvalidPipeArgumentException(e,o);if(s.isFunction(o)){var a=s.isString(i)?s.RegExpWrapper.create(i):i;return s.StringWrapper.replaceAllMapped(n,a,o)}return i instanceof RegExp?s.StringWrapper.replaceAll(n,i,o):s.StringWrapper.replace(n,i,o)},e.prototype._supportedInput=function(e){return s.isString(e)||s.isNumber(e)},e.prototype._supportedPattern=function(e){return s.isString(e)||e instanceof RegExp},e.prototype._supportedReplacement=function(e){return s.isString(e)||s.isFunction(e)},e=o([l.Pipe({name:"replace"}),l.Injectable(),a("design:paramtypes",[])],e)}();return t.ReplacePipe=p,n.define=i,r.exports}),System.register("angular2/src/common/pipes/i18n_plural_pipe",["angular2/src/facade/lang","angular2/core","angular2/src/common/pipes/invalid_pipe_argument_exception"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/core"),l=e("angular2/src/common/pipes/invalid_pipe_argument_exception"),u=s.RegExpWrapper.create("#"),p=function(){function e(){}return e.prototype.transform=function(t,r){void 0===r&&(r=null);var n,i,o=r[0];if(!s.isStringMap(o))throw new l.InvalidPipeArgumentException(e,o);return n=0===t||1===t?"="+t:"other",i=s.isPresent(t)?t.toString():"",s.StringWrapper.replaceAll(o[n],u,i)},e=o([s.CONST(),c.Pipe({name:"i18nPlural",pure:!0}),c.Injectable(),a("design:paramtypes",[])],e)}();return t.I18nPluralPipe=p,n.define=i,r.exports}),System.register("angular2/src/common/pipes/i18n_select_pipe",["angular2/src/facade/lang","angular2/src/facade/collection","angular2/core","angular2/src/common/pipes/invalid_pipe_argument_exception"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/src/facade/collection"),l=e("angular2/core"),u=e("angular2/src/common/pipes/invalid_pipe_argument_exception"),p=function(){function e(){}return e.prototype.transform=function(t,r){void 0===r&&(r=null);var n=r[0];if(!s.isStringMap(n))throw new u.InvalidPipeArgumentException(e,n);return c.StringMapWrapper.contains(n,t)?n[t]:n.other},e=o([s.CONST(),l.Pipe({name:"i18nSelect",pure:!0}),l.Injectable(),a("design:paramtypes",[])],e)}();return t.I18nSelectPipe=p,n.define=i,r.exports}),System.register("angular2/src/common/pipes/common_pipes",["angular2/src/common/pipes/async_pipe","angular2/src/common/pipes/uppercase_pipe","angular2/src/common/pipes/lowercase_pipe","angular2/src/common/pipes/json_pipe","angular2/src/common/pipes/slice_pipe","angular2/src/common/pipes/date_pipe","angular2/src/common/pipes/number_pipe","angular2/src/common/pipes/replace_pipe","angular2/src/common/pipes/i18n_plural_pipe","angular2/src/common/pipes/i18n_select_pipe","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/common/pipes/async_pipe"),a=e("angular2/src/common/pipes/uppercase_pipe"),s=e("angular2/src/common/pipes/lowercase_pipe"),c=e("angular2/src/common/pipes/json_pipe"),l=e("angular2/src/common/pipes/slice_pipe"),u=e("angular2/src/common/pipes/date_pipe"),p=e("angular2/src/common/pipes/number_pipe"),d=e("angular2/src/common/pipes/replace_pipe"),f=e("angular2/src/common/pipes/i18n_plural_pipe"),h=e("angular2/src/common/pipes/i18n_select_pipe"),g=e("angular2/src/facade/lang");return t.COMMON_PIPES=g.CONST_EXPR([o.AsyncPipe,a.UpperCasePipe,s.LowerCasePipe,c.JsonPipe,l.SlicePipe,p.DecimalPipe,p.PercentPipe,p.CurrencyPipe,u.DatePipe,d.ReplacePipe,f.I18nPluralPipe,h.I18nSelectPipe]),n.define=i,r.exports}),System.register("angular2/src/common/directives/ng_class",["angular2/src/facade/lang","angular2/core","angular2/src/facade/collection"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/core"),l=e("angular2/src/facade/collection"),u=function(){function e(e,t,r,n){this._iterableDiffers=e,this._keyValueDiffers=t,this._ngEl=r,this._renderer=n,this._initialClasses=[]}return Object.defineProperty(e.prototype,"initialClasses",{set:function(e){this._applyInitialClasses(!0),this._initialClasses=s.isPresent(e)&&s.isString(e)?e.split(" "):[],this._applyInitialClasses(!1),this._applyClasses(this._rawClass,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rawClass",{set:function(e){this._cleanupClasses(this._rawClass),s.isString(e)&&(e=e.split(" ")),this._rawClass=e,this._iterableDiffer=null,this._keyValueDiffer=null,s.isPresent(e)&&(l.isListLikeIterable(e)?this._iterableDiffer=this._iterableDiffers.find(e).create(null):this._keyValueDiffer=this._keyValueDiffers.find(e).create(null))},enumerable:!0,configurable:!0}),e.prototype.ngDoCheck=function(){if(s.isPresent(this._iterableDiffer)){var e=this._iterableDiffer.diff(this._rawClass);s.isPresent(e)&&this._applyIterableChanges(e)}if(s.isPresent(this._keyValueDiffer)){var e=this._keyValueDiffer.diff(this._rawClass);s.isPresent(e)&&this._applyKeyValueChanges(e)}},e.prototype.ngOnDestroy=function(){this._cleanupClasses(this._rawClass)},e.prototype._cleanupClasses=function(e){this._applyClasses(e,!0),this._applyInitialClasses(!1)},e.prototype._applyKeyValueChanges=function(e){var t=this;e.forEachAddedItem(function(e){t._toggleClass(e.key,e.currentValue)}),e.forEachChangedItem(function(e){t._toggleClass(e.key,e.currentValue)}),e.forEachRemovedItem(function(e){e.previousValue&&t._toggleClass(e.key,!1)})},e.prototype._applyIterableChanges=function(e){var t=this;e.forEachAddedItem(function(e){t._toggleClass(e.item,!0)}),e.forEachRemovedItem(function(e){t._toggleClass(e.item,!1)})},e.prototype._applyInitialClasses=function(e){var t=this;this._initialClasses.forEach(function(r){return t._toggleClass(r,!e)})},e.prototype._applyClasses=function(e,t){var r=this;s.isPresent(e)&&(s.isArray(e)?e.forEach(function(e){return r._toggleClass(e,!t)}):e instanceof Set?e.forEach(function(e){return r._toggleClass(e,!t)}):l.StringMapWrapper.forEach(e,function(e,n){s.isPresent(e)&&r._toggleClass(n,!t)}))},e.prototype._toggleClass=function(e,t){if(e=e.trim(),e.length>0)if(e.indexOf(" ")>-1)for(var r=e.split(/\s+/g),n=0,i=r.length;i>n;n++)this._renderer.setElementClass(this._ngEl.nativeElement,r[n],t);else this._renderer.setElementClass(this._ngEl.nativeElement,e,t)},e=o([c.Directive({selector:"[ngClass]",inputs:["rawClass: ngClass","initialClasses: class"]}),a("design:paramtypes",[c.IterableDiffers,c.KeyValueDiffers,c.ElementRef,c.Renderer])],e)}();return t.NgClass=u,n.define=i,r.exports}),System.register("angular2/src/common/directives/ng_for",["angular2/core","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/core"),c=e("angular2/src/facade/lang"),l=function(){function e(e,t,r,n){this._viewContainer=e,this._templateRef=t,this._iterableDiffers=r,this._cdr=n}return Object.defineProperty(e.prototype,"ngForOf",{set:function(e){this._ngForOf=e,c.isBlank(this._differ)&&c.isPresent(e)&&(this._differ=this._iterableDiffers.find(e).create(this._cdr,this._ngForTrackBy))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngForTemplate",{set:function(e){c.isPresent(e)&&(this._templateRef=e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngForTrackBy",{set:function(e){this._ngForTrackBy=e},enumerable:!0,configurable:!0}),e.prototype.ngDoCheck=function(){if(c.isPresent(this._differ)){var e=this._differ.diff(this._ngForOf);c.isPresent(e)&&this._applyChanges(e)}},e.prototype._applyChanges=function(e){var t=this,r=[];e.forEachRemovedItem(function(e){return r.push(new u(e,null))}),e.forEachMovedItem(function(e){return r.push(new u(e,null))});var n=this._bulkRemove(r);e.forEachAddedItem(function(e){return n.push(new u(e,null))}),this._bulkInsert(n);for(var i=0;i<n.length;i++)this._perViewChange(n[i].view,n[i].record);for(var i=0,o=this._viewContainer.length;o>i;i++){var a=this._viewContainer.get(i);a.setLocal("last",i===o-1)}e.forEachIdentityChange(function(e){var r=t._viewContainer.get(e.currentIndex);r.setLocal("$implicit",e.item)})},e.prototype._perViewChange=function(e,t){e.setLocal("$implicit",t.item),e.setLocal("index",t.currentIndex),e.setLocal("even",t.currentIndex%2==0),e.setLocal("odd",t.currentIndex%2==1)},e.prototype._bulkRemove=function(e){e.sort(function(e,t){return e.record.previousIndex-t.record.previousIndex});for(var t=[],r=e.length-1;r>=0;r--){var n=e[r];c.isPresent(n.record.currentIndex)?(n.view=this._viewContainer.detach(n.record.previousIndex),t.push(n)):this._viewContainer.remove(n.record.previousIndex)}return t},e.prototype._bulkInsert=function(e){e.sort(function(e,t){return e.record.currentIndex-t.record.currentIndex});for(var t=0;t<e.length;t++){var r=e[t];c.isPresent(r.view)?this._viewContainer.insert(r.view,r.record.currentIndex):r.view=this._viewContainer.createEmbeddedView(this._templateRef,r.record.currentIndex)}return e},e=o([s.Directive({selector:"[ngFor][ngForOf]",inputs:["ngForTrackBy","ngForOf","ngForTemplate"]}),a("design:paramtypes",[s.ViewContainerRef,s.TemplateRef,s.IterableDiffers,s.ChangeDetectorRef])],e)}();t.NgFor=l;var u=function(){function e(e,t){this.record=e,this.view=t}return e}();return n.define=i,r.exports}),System.register("angular2/src/common/directives/ng_if",["angular2/core","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/core"),c=e("angular2/src/facade/lang"),l=function(){function e(e,t){this._viewContainer=e,this._templateRef=t,this._prevCondition=null}return Object.defineProperty(e.prototype,"ngIf",{set:function(e){!e||!c.isBlank(this._prevCondition)&&this._prevCondition?e||!c.isBlank(this._prevCondition)&&!this._prevCondition||(this._prevCondition=!1,this._viewContainer.clear()):(this._prevCondition=!0,this._viewContainer.createEmbeddedView(this._templateRef))},enumerable:!0,configurable:!0}),e=o([s.Directive({selector:"[ngIf]",inputs:["ngIf"]}),a("design:paramtypes",[s.ViewContainerRef,s.TemplateRef])],e)}();return t.NgIf=l,n.define=i,r.exports}),System.register("angular2/src/common/directives/ng_style",["angular2/core","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/core"),c=e("angular2/src/facade/lang"),l=function(){function e(e,t,r){this._differs=e,this._ngEl=t,this._renderer=r}return Object.defineProperty(e.prototype,"rawStyle",{set:function(e){this._rawStyle=e,c.isBlank(this._differ)&&c.isPresent(e)&&(this._differ=this._differs.find(this._rawStyle).create(null))},enumerable:!0,configurable:!0}),e.prototype.ngDoCheck=function(){if(c.isPresent(this._differ)){var e=this._differ.diff(this._rawStyle);c.isPresent(e)&&this._applyChanges(e)}},e.prototype._applyChanges=function(e){var t=this;e.forEachAddedItem(function(e){t._setStyle(e.key,e.currentValue)}),e.forEachChangedItem(function(e){t._setStyle(e.key,e.currentValue)}),e.forEachRemovedItem(function(e){t._setStyle(e.key,null)})},e.prototype._setStyle=function(e,t){this._renderer.setElementStyle(this._ngEl.nativeElement,e,t)},e=o([s.Directive({selector:"[ngStyle]",inputs:["rawStyle: ngStyle"]}),a("design:paramtypes",[s.KeyValueDiffers,s.ElementRef,s.Renderer])],e)}();return t.NgStyle=l,n.define=i,r.exports}),System.register("angular2/src/common/directives/ng_switch",["angular2/core","angular2/src/facade/lang","angular2/src/facade/collection"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},c=e("angular2/core"),l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/collection"),p=l.CONST_EXPR(new Object),d=function(){function e(e,t){this._viewContainerRef=e,this._templateRef=t}return e.prototype.create=function(){this._viewContainerRef.createEmbeddedView(this._templateRef)},e.prototype.destroy=function(){this._viewContainerRef.clear()},e}();t.SwitchView=d;var f=function(){function e(){this._useDefault=!1,this._valueViews=new u.Map,this._activeViews=[]}return Object.defineProperty(e.prototype,"ngSwitch",{set:function(e){this._emptyAllActiveViews(),this._useDefault=!1;var t=this._valueViews.get(e);l.isBlank(t)&&(this._useDefault=!0,t=l.normalizeBlank(this._valueViews.get(p))),this._activateViews(t),this._switchValue=e},enumerable:!0,configurable:!0}),e.prototype._onWhenValueChanged=function(e,t,r){this._deregisterView(e,r),this._registerView(t,r),e===this._switchValue?(r.destroy(),u.ListWrapper.remove(this._activeViews,r)):t===this._switchValue&&(this._useDefault&&(this._useDefault=!1,this._emptyAllActiveViews()),r.create(),this._activeViews.push(r)),0!==this._activeViews.length||this._useDefault||(this._useDefault=!0,this._activateViews(this._valueViews.get(p)))},e.prototype._emptyAllActiveViews=function(){for(var e=this._activeViews,t=0;t<e.length;t++)e[t].destroy();this._activeViews=[]},e.prototype._activateViews=function(e){if(l.isPresent(e)){for(var t=0;t<e.length;t++)e[t].create();this._activeViews=e}},e.prototype._registerView=function(e,t){var r=this._valueViews.get(e);l.isBlank(r)&&(r=[],this._valueViews.set(e,r)),r.push(t)},e.prototype._deregisterView=function(e,t){if(e!==p){var r=this._valueViews.get(e);1==r.length?this._valueViews["delete"](e):u.ListWrapper.remove(r,t)}},e=o([c.Directive({selector:"[ngSwitch]",inputs:["ngSwitch"]}),a("design:paramtypes",[])],e)}();t.NgSwitch=f;var h=function(){function e(e,t,r){this._value=p,this._switch=r,this._view=new d(e,t)}return Object.defineProperty(e.prototype,"ngSwitchWhen",{set:function(e){this._switch._onWhenValueChanged(this._value,e,this._view),this._value=e},enumerable:!0,configurable:!0}),e=o([c.Directive({selector:"[ngSwitchWhen]",inputs:["ngSwitchWhen"]}),s(2,c.Host()),a("design:paramtypes",[c.ViewContainerRef,c.TemplateRef,f])],e)}();t.NgSwitchWhen=h;var g=function(){function e(e,t,r){r._registerView(p,new d(e,t))}return e=o([c.Directive({selector:"[ngSwitchDefault]"}),s(2,c.Host()),a("design:paramtypes",[c.ViewContainerRef,c.TemplateRef,f])],e)}();return t.NgSwitchDefault=g,n.define=i,r.exports}),System.register("angular2/src/common/directives/ng_plural",["angular2/core","angular2/src/facade/lang","angular2/src/facade/collection","angular2/src/common/directives/ng_switch"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},c=e("angular2/core"),l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/collection"),p=e("angular2/src/common/directives/ng_switch"),d="other",f=function(){function e(){}return e}();t.NgLocalization=f;var h=function(){function e(e,t,r){this.value=e,this._view=new p.SwitchView(r,t)}return e=o([c.Directive({selector:"[ngPluralCase]"}),s(0,c.Attribute("ngPluralCase")),a("design:paramtypes",[String,c.TemplateRef,c.ViewContainerRef])],e)}();t.NgPluralCase=h;var g=function(){function e(e){this._localization=e,this._caseViews=new u.Map,this.cases=null}return Object.defineProperty(e.prototype,"ngPlural",{set:function(e){this._switchValue=e,this._updateView()},enumerable:!0,configurable:!0}),e.prototype.ngAfterContentInit=function(){var e=this;this.cases.forEach(function(t){e._caseViews.set(e._formatValue(t),t._view)}),this._updateView()},e.prototype._updateView=function(){this._clearViews();var e=this._caseViews.get(this._switchValue);l.isPresent(e)||(e=this._getCategoryView(this._switchValue)),this._activateView(e)},e.prototype._clearViews=function(){l.isPresent(this._activeView)&&this._activeView.destroy()},e.prototype._activateView=function(e){l.isPresent(e)&&(this._activeView=e,this._activeView.create())},e.prototype._getCategoryView=function(e){var t=this._localization.getPluralCategory(e),r=this._caseViews.get(t);return l.isPresent(r)?r:this._caseViews.get(d)},e.prototype._isValueView=function(e){return"="===e.value[0]},e.prototype._formatValue=function(e){return this._isValueView(e)?this._stripValue(e.value):e.value},e.prototype._stripValue=function(e){return l.NumberWrapper.parseInt(e.substring(1),10)},o([c.ContentChildren(h),a("design:type",c.QueryList)],e.prototype,"cases",void 0),o([c.Input(),a("design:type",Number),a("design:paramtypes",[Number])],e.prototype,"ngPlural",null),e=o([c.Directive({selector:"[ngPlural]"}),a("design:paramtypes",[f])],e)}();return t.NgPlural=g,n.define=i,r.exports}),System.register("angular2/src/common/directives/observable_list_diff",[],!0,function(e,t,r){var n=System.global,i=n.define;return n.define=void 0,n.define=i,r.exports}),System.register("angular2/src/common/directives/core_directives",["angular2/src/facade/lang","angular2/src/common/directives/ng_class","angular2/src/common/directives/ng_for","angular2/src/common/directives/ng_if","angular2/src/common/directives/ng_style","angular2/src/common/directives/ng_switch","angular2/src/common/directives/ng_plural"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/common/directives/ng_class"),s=e("angular2/src/common/directives/ng_for"),c=e("angular2/src/common/directives/ng_if"),l=e("angular2/src/common/directives/ng_style"),u=e("angular2/src/common/directives/ng_switch"),p=e("angular2/src/common/directives/ng_plural");return t.CORE_DIRECTIVES=o.CONST_EXPR([a.NgClass,s.NgFor,c.NgIf,l.NgStyle,u.NgSwitch,u.NgSwitchWhen,u.NgSwitchDefault,p.NgPlural,p.NgPluralCase]),n.define=i,r.exports}),System.register("angular2/src/common/forms/model",["angular2/src/facade/lang","angular2/src/facade/async","angular2/src/facade/promise","angular2/src/facade/collection"],!0,function(e,t,r){function n(e){return e instanceof f}function i(e,t){return l.isBlank(t)?null:(t instanceof Array||(t=t.split("/")),t instanceof Array&&d.ListWrapper.isEmpty(t)?null:t.reduce(function(e,t){if(e instanceof g)return l.isPresent(e.controls[t])?e.controls[t]:null;if(e instanceof m){var r=t;return l.isPresent(e.at(r))?e.at(r):null}return null},e))}function o(e){return p.PromiseWrapper.isPromise(e)?u.ObservableWrapper.fromPromise(e):e}var a=System.global,s=a.define;a.define=void 0;var c=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/async"),p=e("angular2/src/facade/promise"),d=e("angular2/src/facade/collection");t.VALID="VALID",t.INVALID="INVALID",t.PENDING="PENDING",t.isControl=n;var f=function(){function e(e,t){this.validator=e,this.asyncValidator=t,this._pristine=!0,this._touched=!1}return Object.defineProperty(e.prototype,"value",{get:function(){return this._value},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"status",{get:function(){return this._status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valid",{get:function(){return this._status===t.VALID},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"errors",{get:function(){return this._errors},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pristine",{get:function(){return this._pristine},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dirty",{get:function(){return!this.pristine},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"touched",{get:function(){return this._touched},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"untouched",{get:function(){return!this._touched},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valueChanges",{get:function(){return this._valueChanges},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"statusChanges",{get:function(){return this._statusChanges},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pending",{get:function(){return this._status==t.PENDING},enumerable:!0,configurable:!0}),e.prototype.markAsTouched=function(){this._touched=!0},e.prototype.markAsDirty=function(e){var t=(void 0===e?{}:e).onlySelf;t=l.normalizeBool(t),this._pristine=!1,l.isPresent(this._parent)&&!t&&this._parent.markAsDirty({onlySelf:t})},e.prototype.markAsPending=function(e){var r=(void 0===e?{}:e).onlySelf;r=l.normalizeBool(r),this._status=t.PENDING,l.isPresent(this._parent)&&!r&&this._parent.markAsPending({onlySelf:r})},e.prototype.setParent=function(e){this._parent=e},e.prototype.updateValueAndValidity=function(e){var r=void 0===e?{}:e,n=r.onlySelf,i=r.emitEvent;n=l.normalizeBool(n),i=l.isPresent(i)?i:!0,this._updateValue(),this._errors=this._runValidator(),this._status=this._calculateStatus(),(this._status==t.VALID||this._status==t.PENDING)&&this._runAsyncValidator(i),i&&(u.ObservableWrapper.callEmit(this._valueChanges,this._value),u.ObservableWrapper.callEmit(this._statusChanges,this._status)),l.isPresent(this._parent)&&!n&&this._parent.updateValueAndValidity({onlySelf:n,emitEvent:i})},e.prototype._runValidator=function(){return l.isPresent(this.validator)?this.validator(this):null;
},e.prototype._runAsyncValidator=function(e){var r=this;if(l.isPresent(this.asyncValidator)){this._status=t.PENDING,this._cancelExistingSubscription();var n=o(this.asyncValidator(this));this._asyncValidationSubscription=u.ObservableWrapper.subscribe(n,function(t){return r.setErrors(t,{emitEvent:e})})}},e.prototype._cancelExistingSubscription=function(){l.isPresent(this._asyncValidationSubscription)&&u.ObservableWrapper.dispose(this._asyncValidationSubscription)},e.prototype.setErrors=function(e,t){var r=(void 0===t?{}:t).emitEvent;r=l.isPresent(r)?r:!0,this._errors=e,this._status=this._calculateStatus(),r&&u.ObservableWrapper.callEmit(this._statusChanges,this._status),l.isPresent(this._parent)&&this._parent._updateControlsErrors()},e.prototype.find=function(e){return i(this,e)},e.prototype.getError=function(e,t){void 0===t&&(t=null);var r=l.isPresent(t)&&!d.ListWrapper.isEmpty(t)?this.find(t):this;return l.isPresent(r)&&l.isPresent(r._errors)?d.StringMapWrapper.get(r._errors,e):null},e.prototype.hasError=function(e,t){return void 0===t&&(t=null),l.isPresent(this.getError(e,t))},Object.defineProperty(e.prototype,"root",{get:function(){for(var e=this;l.isPresent(e._parent);)e=e._parent;return e},enumerable:!0,configurable:!0}),e.prototype._updateControlsErrors=function(){this._status=this._calculateStatus(),l.isPresent(this._parent)&&this._parent._updateControlsErrors()},e.prototype._initObservables=function(){this._valueChanges=new u.EventEmitter,this._statusChanges=new u.EventEmitter},e.prototype._calculateStatus=function(){return l.isPresent(this._errors)?t.INVALID:this._anyControlsHaveStatus(t.PENDING)?t.PENDING:this._anyControlsHaveStatus(t.INVALID)?t.INVALID:t.VALID},e}();t.AbstractControl=f;var h=function(e){function t(t,r,n){void 0===t&&(t=null),void 0===r&&(r=null),void 0===n&&(n=null),e.call(this,r,n),this._value=t,this.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),this._initObservables()}return c(t,e),t.prototype.updateValue=function(e,t){var r=void 0===t?{}:t,n=r.onlySelf,i=r.emitEvent,o=r.emitModelToViewChange;o=l.isPresent(o)?o:!0,this._value=e,l.isPresent(this._onChange)&&o&&this._onChange(this._value),this.updateValueAndValidity({onlySelf:n,emitEvent:i})},t.prototype._updateValue=function(){},t.prototype._anyControlsHaveStatus=function(e){return!1},t.prototype.registerOnChange=function(e){this._onChange=e},t}(f);t.Control=h;var g=function(e){function t(t,r,n,i){void 0===r&&(r=null),void 0===n&&(n=null),void 0===i&&(i=null),e.call(this,n,i),this.controls=t,this._optionals=l.isPresent(r)?r:{},this._initObservables(),this._setParentForControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}return c(t,e),t.prototype.addControl=function(e,t){this.controls[e]=t,t.setParent(this)},t.prototype.removeControl=function(e){d.StringMapWrapper["delete"](this.controls,e)},t.prototype.include=function(e){d.StringMapWrapper.set(this._optionals,e,!0),this.updateValueAndValidity()},t.prototype.exclude=function(e){d.StringMapWrapper.set(this._optionals,e,!1),this.updateValueAndValidity()},t.prototype.contains=function(e){var t=d.StringMapWrapper.contains(this.controls,e);return t&&this._included(e)},t.prototype._setParentForControls=function(){var e=this;d.StringMapWrapper.forEach(this.controls,function(t,r){t.setParent(e)})},t.prototype._updateValue=function(){this._value=this._reduceValue()},t.prototype._anyControlsHaveStatus=function(e){var t=this,r=!1;return d.StringMapWrapper.forEach(this.controls,function(n,i){r=r||t.contains(i)&&n.status==e}),r},t.prototype._reduceValue=function(){return this._reduceChildren({},function(e,t,r){return e[r]=t.value,e})},t.prototype._reduceChildren=function(e,t){var r=this,n=e;return d.StringMapWrapper.forEach(this.controls,function(e,i){r._included(i)&&(n=t(n,e,i))}),n},t.prototype._included=function(e){var t=d.StringMapWrapper.contains(this._optionals,e);return!t||d.StringMapWrapper.get(this._optionals,e)},t}(f);t.ControlGroup=g;var m=function(e){function t(t,r,n){void 0===r&&(r=null),void 0===n&&(n=null),e.call(this,r,n),this.controls=t,this._initObservables(),this._setParentForControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}return c(t,e),t.prototype.at=function(e){return this.controls[e]},t.prototype.push=function(e){this.controls.push(e),e.setParent(this),this.updateValueAndValidity()},t.prototype.insert=function(e,t){d.ListWrapper.insert(this.controls,e,t),t.setParent(this),this.updateValueAndValidity()},t.prototype.removeAt=function(e){d.ListWrapper.removeAt(this.controls,e),this.updateValueAndValidity()},Object.defineProperty(t.prototype,"length",{get:function(){return this.controls.length},enumerable:!0,configurable:!0}),t.prototype._updateValue=function(){this._value=this.controls.map(function(e){return e.value})},t.prototype._anyControlsHaveStatus=function(e){return this.controls.some(function(t){return t.status==e})},t.prototype._setParentForControls=function(){var e=this;this.controls.forEach(function(t){t.setParent(e)})},t}(f);return t.ControlArray=m,a.define=s,r.exports}),System.register("angular2/src/common/forms/directives/abstract_control_directive",["angular2/src/facade/lang","angular2/src/facade/exceptions"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/facade/exceptions"),s=function(){function e(){}return Object.defineProperty(e.prototype,"control",{get:function(){return a.unimplemented()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return o.isPresent(this.control)?this.control.value:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valid",{get:function(){return o.isPresent(this.control)?this.control.valid:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"errors",{get:function(){return o.isPresent(this.control)?this.control.errors:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pristine",{get:function(){return o.isPresent(this.control)?this.control.pristine:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dirty",{get:function(){return o.isPresent(this.control)?this.control.dirty:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"touched",{get:function(){return o.isPresent(this.control)?this.control.touched:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"untouched",{get:function(){return o.isPresent(this.control)?this.control.untouched:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return null},enumerable:!0,configurable:!0}),e}();return t.AbstractControlDirective=s,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/control_container",["angular2/src/common/forms/directives/abstract_control_directive"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/common/forms/directives/abstract_control_directive"),s=function(e){function t(){e.apply(this,arguments)}return o(t,e),Object.defineProperty(t.prototype,"formDirective",{get:function(){return null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return null},enumerable:!0,configurable:!0}),t}(a.AbstractControlDirective);return t.ControlContainer=s,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/ng_control",["angular2/src/common/forms/directives/abstract_control_directive","angular2/src/facade/exceptions"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/common/forms/directives/abstract_control_directive"),s=e("angular2/src/facade/exceptions"),c=function(e){function t(){e.apply(this,arguments),this.name=null,this.valueAccessor=null}return o(t,e),Object.defineProperty(t.prototype,"validator",{get:function(){return s.unimplemented()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return s.unimplemented()},enumerable:!0,configurable:!0}),t}(a.AbstractControlDirective);return t.NgControl=c,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/control_value_accessor",["angular2/core","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/core"),a=e("angular2/src/facade/lang");return t.NG_VALUE_ACCESSOR=a.CONST_EXPR(new o.OpaqueToken("NgValueAccessor")),n.define=i,r.exports}),System.register("angular2/src/common/forms/validators",["angular2/src/facade/lang","angular2/src/facade/promise","angular2/src/facade/async","angular2/src/facade/collection","angular2/core"],!0,function(e,t,r){function n(e){return u.PromiseWrapper.isPromise(e)?e:p.ObservableWrapper.toPromise(e)}function i(e,t){return t.map(function(t){return t(e)})}function o(e,t){return t.map(function(t){return t(e)})}function a(e){var t=e.reduce(function(e,t){return l.isPresent(t)?d.StringMapWrapper.merge(e,t):e},{});return d.StringMapWrapper.isEmpty(t)?null:t}var s=System.global,c=s.define;s.define=void 0;var l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/promise"),p=e("angular2/src/facade/async"),d=e("angular2/src/facade/collection"),f=e("angular2/core");t.NG_VALIDATORS=l.CONST_EXPR(new f.OpaqueToken("NgValidators")),t.NG_ASYNC_VALIDATORS=l.CONST_EXPR(new f.OpaqueToken("NgAsyncValidators"));var h=function(){function e(){}return e.required=function(e){return l.isBlank(e.value)||l.isString(e.value)&&""==e.value?{required:!0}:null},e.minLength=function(t){return function(r){if(l.isPresent(e.required(r)))return null;var n=r.value;return n.length<t?{minlength:{requiredLength:t,actualLength:n.length}}:null}},e.maxLength=function(t){return function(r){if(l.isPresent(e.required(r)))return null;var n=r.value;return n.length>t?{maxlength:{requiredLength:t,actualLength:n.length}}:null}},e.pattern=function(t){return function(r){if(l.isPresent(e.required(r)))return null;var n=new RegExp("^"+t+"$"),i=r.value;return n.test(i)?null:{pattern:{requiredPattern:"^"+t+"$",actualValue:i}}}},e.nullValidator=function(e){return null},e.compose=function(e){if(l.isBlank(e))return null;var t=e.filter(l.isPresent);return 0==t.length?null:function(e){return a(i(e,t))}},e.composeAsync=function(e){if(l.isBlank(e))return null;var t=e.filter(l.isPresent);return 0==t.length?null:function(e){var r=o(e,t).map(n);return u.PromiseWrapper.all(r).then(a)}},e}();return t.Validators=h,s.define=c,r.exports}),System.register("angular2/src/common/forms/directives/default_value_accessor",["angular2/core","angular2/src/common/forms/directives/control_value_accessor","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/core"),c=e("angular2/src/common/forms/directives/control_value_accessor"),l=e("angular2/src/facade/lang"),u=l.CONST_EXPR(new s.Provider(c.NG_VALUE_ACCESSOR,{useExisting:s.forwardRef(function(){return p}),multi:!0})),p=function(){function e(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return e.prototype.writeValue=function(e){var t=l.isBlank(e)?"":e;this._renderer.setElementProperty(this._elementRef.nativeElement,"value",t)},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e=o([s.Directive({selector:"input:not([type=checkbox])[ngControl],textarea[ngControl],input:not([type=checkbox])[ngFormControl],textarea[ngFormControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]",host:{"(input)":"onChange($event.target.value)","(blur)":"onTouched()"},bindings:[u]}),a("design:paramtypes",[s.Renderer,s.ElementRef])],e)}();return t.DefaultValueAccessor=p,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/number_value_accessor",["angular2/core","angular2/src/common/forms/directives/control_value_accessor","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/core"),c=e("angular2/src/common/forms/directives/control_value_accessor"),l=e("angular2/src/facade/lang"),u=l.CONST_EXPR(new s.Provider(c.NG_VALUE_ACCESSOR,{useExisting:s.forwardRef(function(){return p}),multi:!0})),p=function(){function e(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return e.prototype.writeValue=function(e){this._renderer.setElementProperty(this._elementRef.nativeElement,"value",e)},e.prototype.registerOnChange=function(e){this.onChange=function(t){e(l.NumberWrapper.parseFloat(t))}},e.prototype.registerOnTouched=function(e){this.onTouched=e},e=o([s.Directive({selector:"input[type=number][ngControl],input[type=number][ngFormControl],input[type=number][ngModel]",host:{"(change)":"onChange($event.target.value)","(input)":"onChange($event.target.value)","(blur)":"onTouched()"},bindings:[u]}),a("design:paramtypes",[s.Renderer,s.ElementRef])],e)}();return t.NumberValueAccessor=p,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/checkbox_value_accessor",["angular2/core","angular2/src/common/forms/directives/control_value_accessor","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/core"),c=e("angular2/src/common/forms/directives/control_value_accessor"),l=e("angular2/src/facade/lang"),u=l.CONST_EXPR(new s.Provider(c.NG_VALUE_ACCESSOR,{useExisting:s.forwardRef(function(){return p}),multi:!0})),p=function(){function e(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return e.prototype.writeValue=function(e){this._renderer.setElementProperty(this._elementRef.nativeElement,"checked",e)},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e=o([s.Directive({selector:"input[type=checkbox][ngControl],input[type=checkbox][ngFormControl],input[type=checkbox][ngModel]",host:{"(change)":"onChange($event.target.checked)","(blur)":"onTouched()"},providers:[u]}),a("design:paramtypes",[s.Renderer,s.ElementRef])],e)}();return t.CheckboxControlValueAccessor=p,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/select_control_value_accessor",["angular2/core","angular2/src/facade/async","angular2/src/common/forms/directives/control_value_accessor","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},c=e("angular2/core"),l=e("angular2/src/facade/async"),u=e("angular2/src/common/forms/directives/control_value_accessor"),p=e("angular2/src/facade/lang"),d=p.CONST_EXPR(new c.Provider(u.NG_VALUE_ACCESSOR,{useExisting:c.forwardRef(function(){return h}),multi:!0})),f=function(){function e(){}return e=o([c.Directive({selector:"option"}),a("design:paramtypes",[])],e)}();t.NgSelectOption=f;var h=function(){function e(e,t,r){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){},this._updateValueWhenListOfOptionsChanges(r)}return e.prototype.writeValue=function(e){this.value=e,this._renderer.setElementProperty(this._elementRef.nativeElement,"value",e)},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype._updateValueWhenListOfOptionsChanges=function(e){var t=this;l.ObservableWrapper.subscribe(e.changes,function(e){return t.writeValue(t.value)})},e=o([c.Directive({selector:"select[ngControl],select[ngFormControl],select[ngModel]",host:{"(input)":"onChange($event.target.value)","(blur)":"onTouched()"},bindings:[d]}),s(2,c.Query(f,{descendants:!0})),a("design:paramtypes",[c.Renderer,c.ElementRef,c.QueryList])],e)}();return t.SelectControlValueAccessor=h,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/radio_control_value_accessor",["angular2/core","angular2/src/common/forms/directives/control_value_accessor","angular2/src/common/forms/directives/ng_control","angular2/src/facade/lang","angular2/src/facade/collection"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/core"),c=e("angular2/src/common/forms/directives/control_value_accessor"),l=e("angular2/src/common/forms/directives/ng_control"),u=e("angular2/src/facade/lang"),p=e("angular2/src/facade/collection"),d=u.CONST_EXPR(new s.Provider(c.NG_VALUE_ACCESSOR,{useExisting:s.forwardRef(function(){return g}),multi:!0})),f=function(){function e(){this._accessors=[]}return e.prototype.add=function(e,t){this._accessors.push([e,t])},e.prototype.remove=function(e){for(var t=-1,r=0;r<this._accessors.length;++r)this._accessors[r][1]===e&&(t=r);p.ListWrapper.removeAt(this._accessors,t)},e.prototype.select=function(e){this._accessors.forEach(function(t){t[0].control.root===e._control.control.root&&t[1]!==e&&t[1].fireUncheck()})},e=o([s.Injectable(),a("design:paramtypes",[])],e)}();t.RadioControlRegistry=f;var h=function(){function e(e,t){this.checked=e,this.value=t}return e}();t.RadioButtonState=h;var g=function(){function e(e,t,r,n){this._renderer=e,this._elementRef=t,this._registry=r,this._injector=n,this.onChange=function(){},this.onTouched=function(){}}return e.prototype.ngOnInit=function(){this._control=this._injector.get(l.NgControl),this._registry.add(this._control,this)},e.prototype.ngOnDestroy=function(){this._registry.remove(this)},e.prototype.writeValue=function(e){this._state=e,u.isPresent(e)&&e.checked&&this._renderer.setElementProperty(this._elementRef.nativeElement,"checked",!0)},e.prototype.registerOnChange=function(e){var t=this;this._fn=e,this.onChange=function(){e(new h(!0,t._state.value)),t._registry.select(t)}},e.prototype.fireUncheck=function(){this._fn(new h(!1,this._state.value))},e.prototype.registerOnTouched=function(e){this.onTouched=e},o([s.Input(),a("design:type",String)],e.prototype,"name",void 0),e=o([s.Directive({selector:"input[type=radio][ngControl],input[type=radio][ngFormControl],input[type=radio][ngModel]",host:{"(change)":"onChange()","(blur)":"onTouched()"},providers:[d]}),a("design:paramtypes",[s.Renderer,s.ElementRef,f,s.Injector])],e)}();return t.RadioControlValueAccessor=g,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/normalize_validator",[],!0,function(e,t,r){function n(e){return void 0!==e.validate?function(t){return e.validate(t)}:e}function i(e){return void 0!==e.validate?function(t){return Promise.resolve(e.validate(t))}:e}var o=System.global,a=o.define;return o.define=void 0,t.normalizeValidator=n,t.normalizeAsyncValidator=i,o.define=a,r.exports}),System.register("angular2/src/common/forms/directives/ng_form_control",["angular2/src/facade/lang","angular2/src/facade/collection","angular2/src/facade/async","angular2/core","angular2/src/common/forms/directives/ng_control","angular2/src/common/forms/validators","angular2/src/common/forms/directives/control_value_accessor","angular2/src/common/forms/directives/shared"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/collection"),p=e("angular2/src/facade/async"),d=e("angular2/core"),f=e("angular2/src/common/forms/directives/ng_control"),h=e("angular2/src/common/forms/validators"),g=e("angular2/src/common/forms/directives/control_value_accessor"),m=e("angular2/src/common/forms/directives/shared"),v=l.CONST_EXPR(new d.Provider(f.NgControl,{useExisting:d.forwardRef(function(){return y})})),y=function(e){function t(t,r,n){e.call(this),this._validators=t,this._asyncValidators=r,this.update=new p.EventEmitter,this.valueAccessor=m.selectValueAccessor(this,n)}return o(t,e),t.prototype.ngOnChanges=function(e){this._isControlChanged(e)&&(m.setUpControl(this.form,this),this.form.updateValueAndValidity({emitEvent:!1})),m.isPropertyUpdated(e,this.viewModel)&&(this.form.updateValue(this.model),this.viewModel=this.model)},Object.defineProperty(t.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return m.composeValidators(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return m.composeAsyncValidators(this._asyncValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),t.prototype.viewToModelUpdate=function(e){this.viewModel=e,p.ObservableWrapper.callEmit(this.update,e)},t.prototype._isControlChanged=function(e){return u.StringMapWrapper.contains(e,"form")},t=a([d.Directive({selector:"[ngFormControl]",bindings:[v],inputs:["form: ngFormControl","model: ngModel"],outputs:["update: ngModelChange"],exportAs:"ngForm"}),c(0,d.Optional()),c(0,d.Self()),c(0,d.Inject(h.NG_VALIDATORS)),c(1,d.Optional()),c(1,d.Self()),c(1,d.Inject(h.NG_ASYNC_VALIDATORS)),c(2,d.Optional()),c(2,d.Self()),c(2,d.Inject(g.NG_VALUE_ACCESSOR)),s("design:paramtypes",[Array,Array,Array])],t)}(f.NgControl);return t.NgFormControl=y,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/ng_model",["angular2/src/facade/lang","angular2/src/facade/async","angular2/core","angular2/src/common/forms/directives/control_value_accessor","angular2/src/common/forms/directives/ng_control","angular2/src/common/forms/model","angular2/src/common/forms/validators","angular2/src/common/forms/directives/shared"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/async"),p=e("angular2/core"),d=e("angular2/src/common/forms/directives/control_value_accessor"),f=e("angular2/src/common/forms/directives/ng_control"),h=e("angular2/src/common/forms/model"),g=e("angular2/src/common/forms/validators"),m=e("angular2/src/common/forms/directives/shared"),v=l.CONST_EXPR(new p.Provider(f.NgControl,{useExisting:p.forwardRef(function(){return y})})),y=function(e){function t(t,r,n){e.call(this),this._validators=t,this._asyncValidators=r,this._control=new h.Control,this._added=!1,this.update=new u.EventEmitter,this.valueAccessor=m.selectValueAccessor(this,n)}return o(t,e),t.prototype.ngOnChanges=function(e){this._added||(m.setUpControl(this._control,this),this._control.updateValueAndValidity({emitEvent:!1}),this._added=!0),m.isPropertyUpdated(e,this.viewModel)&&(this._control.updateValue(this.model),this.viewModel=this.model)},Object.defineProperty(t.prototype,"control",{get:function(){return this._control},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return m.composeValidators(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return m.composeAsyncValidators(this._asyncValidators)},enumerable:!0,configurable:!0}),t.prototype.viewToModelUpdate=function(e){this.viewModel=e,u.ObservableWrapper.callEmit(this.update,e)},t=a([p.Directive({selector:"[ngModel]:not([ngControl]):not([ngFormControl])",bindings:[v],inputs:["model: ngModel"],outputs:["update: ngModelChange"],exportAs:"ngForm"}),c(0,p.Optional()),c(0,p.Self()),c(0,p.Inject(g.NG_VALIDATORS)),c(1,p.Optional()),c(1,p.Self()),c(1,p.Inject(g.NG_ASYNC_VALIDATORS)),c(2,p.Optional()),c(2,p.Self()),c(2,p.Inject(d.NG_VALUE_ACCESSOR)),s("design:paramtypes",[Array,Array,Array])],t)}(f.NgControl);return t.NgModel=y,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/ng_control_group",["angular2/core","angular2/src/facade/lang","angular2/src/common/forms/directives/control_container","angular2/src/common/forms/directives/shared","angular2/src/common/forms/validators"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},l=e("angular2/core"),u=e("angular2/src/facade/lang"),p=e("angular2/src/common/forms/directives/control_container"),d=e("angular2/src/common/forms/directives/shared"),f=e("angular2/src/common/forms/validators"),h=u.CONST_EXPR(new l.Provider(p.ControlContainer,{useExisting:l.forwardRef(function(){return g})})),g=function(e){function t(t,r,n){e.call(this),this._validators=r,this._asyncValidators=n,this._parent=t}return o(t,e),t.prototype.ngOnInit=function(){this.formDirective.addControlGroup(this)},t.prototype.ngOnDestroy=function(){this.formDirective.removeControlGroup(this)},Object.defineProperty(t.prototype,"control",{get:function(){return this.formDirective.getControlGroup(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return d.controlPath(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"formDirective",{get:function(){return this._parent.formDirective},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return d.composeValidators(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return d.composeAsyncValidators(this._asyncValidators)},enumerable:!0,configurable:!0}),t=a([l.Directive({selector:"[ngControlGroup]",providers:[h],inputs:["name: ngControlGroup"],exportAs:"ngForm"}),c(0,l.Host()),c(0,l.SkipSelf()),c(1,l.Optional()),c(1,l.Self()),c(1,l.Inject(f.NG_VALIDATORS)),c(2,l.Optional()),c(2,l.Self()),c(2,l.Inject(f.NG_ASYNC_VALIDATORS)),s("design:paramtypes",[p.ControlContainer,Array,Array])],t)}(p.ControlContainer);return t.NgControlGroup=g,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/ng_form_model",["angular2/src/facade/lang","angular2/src/facade/collection","angular2/src/facade/async","angular2/core","angular2/src/common/forms/directives/control_container","angular2/src/common/forms/directives/shared","angular2/src/common/forms/validators"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/collection"),p=e("angular2/src/facade/async"),d=e("angular2/core"),f=e("angular2/src/common/forms/directives/control_container"),h=e("angular2/src/common/forms/directives/shared"),g=e("angular2/src/common/forms/validators"),m=l.CONST_EXPR(new d.Provider(f.ControlContainer,{
useExisting:d.forwardRef(function(){return v})})),v=function(e){function t(t,r){e.call(this),this._validators=t,this._asyncValidators=r,this.form=null,this.directives=[],this.ngSubmit=new p.EventEmitter}return o(t,e),t.prototype.ngOnChanges=function(e){if(u.StringMapWrapper.contains(e,"form")){var t=h.composeValidators(this._validators);this.form.validator=g.Validators.compose([this.form.validator,t]);var r=h.composeAsyncValidators(this._asyncValidators);this.form.asyncValidator=g.Validators.composeAsync([this.form.asyncValidator,r]),this.form.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}this._updateDomValue()},Object.defineProperty(t.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),t.prototype.addControl=function(e){var t=this.form.find(e.path);h.setUpControl(t,e),t.updateValueAndValidity({emitEvent:!1}),this.directives.push(e)},t.prototype.getControl=function(e){return this.form.find(e.path)},t.prototype.removeControl=function(e){u.ListWrapper.remove(this.directives,e)},t.prototype.addControlGroup=function(e){var t=this.form.find(e.path);h.setUpControlGroup(t,e),t.updateValueAndValidity({emitEvent:!1})},t.prototype.removeControlGroup=function(e){},t.prototype.getControlGroup=function(e){return this.form.find(e.path)},t.prototype.updateModel=function(e,t){var r=this.form.find(e.path);r.updateValue(t)},t.prototype.onSubmit=function(){return p.ObservableWrapper.callEmit(this.ngSubmit,null),!1},t.prototype._updateDomValue=function(){var e=this;this.directives.forEach(function(t){var r=e.form.find(t.path);t.valueAccessor.writeValue(r.value)})},t=a([d.Directive({selector:"[ngFormModel]",bindings:[m],inputs:["form: ngFormModel"],host:{"(submit)":"onSubmit()"},outputs:["ngSubmit"],exportAs:"ngForm"}),c(0,d.Optional()),c(0,d.Self()),c(0,d.Inject(g.NG_VALIDATORS)),c(1,d.Optional()),c(1,d.Self()),c(1,d.Inject(g.NG_ASYNC_VALIDATORS)),s("design:paramtypes",[Array,Array])],t)}(f.ControlContainer);return t.NgFormModel=v,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/ng_form",["angular2/src/facade/async","angular2/src/facade/collection","angular2/src/facade/lang","angular2/core","angular2/src/common/forms/directives/control_container","angular2/src/common/forms/model","angular2/src/common/forms/directives/shared","angular2/src/common/forms/validators"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},l=e("angular2/src/facade/async"),u=e("angular2/src/facade/collection"),p=e("angular2/src/facade/lang"),d=e("angular2/core"),f=e("angular2/src/common/forms/directives/control_container"),h=e("angular2/src/common/forms/model"),g=e("angular2/src/common/forms/directives/shared"),m=e("angular2/src/common/forms/validators"),v=p.CONST_EXPR(new d.Provider(f.ControlContainer,{useExisting:d.forwardRef(function(){return y})})),y=function(e){function t(t,r){e.call(this),this.ngSubmit=new l.EventEmitter,this.form=new h.ControlGroup({},null,g.composeValidators(t),g.composeAsyncValidators(r))}return o(t,e),Object.defineProperty(t.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"controls",{get:function(){return this.form.controls},enumerable:!0,configurable:!0}),t.prototype.addControl=function(e){var t=this;l.PromiseWrapper.scheduleMicrotask(function(){var r=t._findContainer(e.path),n=new h.Control;g.setUpControl(n,e),r.addControl(e.name,n),n.updateValueAndValidity({emitEvent:!1})})},t.prototype.getControl=function(e){return this.form.find(e.path)},t.prototype.removeControl=function(e){var t=this;l.PromiseWrapper.scheduleMicrotask(function(){var r=t._findContainer(e.path);p.isPresent(r)&&(r.removeControl(e.name),r.updateValueAndValidity({emitEvent:!1}))})},t.prototype.addControlGroup=function(e){var t=this;l.PromiseWrapper.scheduleMicrotask(function(){var r=t._findContainer(e.path),n=new h.ControlGroup({});g.setUpControlGroup(n,e),r.addControl(e.name,n),n.updateValueAndValidity({emitEvent:!1})})},t.prototype.removeControlGroup=function(e){var t=this;l.PromiseWrapper.scheduleMicrotask(function(){var r=t._findContainer(e.path);p.isPresent(r)&&(r.removeControl(e.name),r.updateValueAndValidity({emitEvent:!1}))})},t.prototype.getControlGroup=function(e){return this.form.find(e.path)},t.prototype.updateModel=function(e,t){var r=this;l.PromiseWrapper.scheduleMicrotask(function(){var n=r.form.find(e.path);n.updateValue(t)})},t.prototype.onSubmit=function(){return l.ObservableWrapper.callEmit(this.ngSubmit,null),!1},t.prototype._findContainer=function(e){return e.pop(),u.ListWrapper.isEmpty(e)?this.form:this.form.find(e)},t=a([d.Directive({selector:"form:not([ngNoForm]):not([ngFormModel]),ngForm,[ngForm]",bindings:[v],host:{"(submit)":"onSubmit()"},outputs:["ngSubmit"],exportAs:"ngForm"}),c(0,d.Optional()),c(0,d.Self()),c(0,d.Inject(m.NG_VALIDATORS)),c(1,d.Optional()),c(1,d.Self()),c(1,d.Inject(m.NG_ASYNC_VALIDATORS)),s("design:paramtypes",[Array,Array])],t)}(f.ControlContainer);return t.NgForm=y,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/ng_control_status",["angular2/core","angular2/src/common/forms/directives/ng_control","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},c=e("angular2/core"),l=e("angular2/src/common/forms/directives/ng_control"),u=e("angular2/src/facade/lang"),p=function(){function e(e){this._cd=e}return Object.defineProperty(e.prototype,"ngClassUntouched",{get:function(){return u.isPresent(this._cd.control)?this._cd.control.untouched:!1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassTouched",{get:function(){return u.isPresent(this._cd.control)?this._cd.control.touched:!1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassPristine",{get:function(){return u.isPresent(this._cd.control)?this._cd.control.pristine:!1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassDirty",{get:function(){return u.isPresent(this._cd.control)?this._cd.control.dirty:!1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassValid",{get:function(){return u.isPresent(this._cd.control)?this._cd.control.valid:!1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassInvalid",{get:function(){return u.isPresent(this._cd.control)?!this._cd.control.valid:!1},enumerable:!0,configurable:!0}),e=o([c.Directive({selector:"[ngControl],[ngModel],[ngFormControl]",host:{"[class.ng-untouched]":"ngClassUntouched","[class.ng-touched]":"ngClassTouched","[class.ng-pristine]":"ngClassPristine","[class.ng-dirty]":"ngClassDirty","[class.ng-valid]":"ngClassValid","[class.ng-invalid]":"ngClassInvalid"}}),s(0,c.Self()),a("design:paramtypes",[l.NgControl])],e)}();return t.NgControlStatus=p,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/validators",["angular2/core","angular2/src/facade/lang","angular2/src/common/forms/validators","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},c=e("angular2/core"),l=e("angular2/src/facade/lang"),u=e("angular2/src/common/forms/validators"),p=e("angular2/src/facade/lang"),d=l.CONST_EXPR(new c.Provider(u.NG_VALIDATORS,{useValue:u.Validators.required,multi:!0})),f=function(){function e(){}return e=o([c.Directive({selector:"[required][ngControl],[required][ngFormControl],[required][ngModel]",providers:[d]}),a("design:paramtypes",[])],e)}();t.RequiredValidator=f;var h=l.CONST_EXPR(new c.Provider(u.NG_VALIDATORS,{useExisting:c.forwardRef(function(){return g}),multi:!0})),g=function(){function e(e){this._validator=u.Validators.minLength(p.NumberWrapper.parseInt(e,10))}return e.prototype.validate=function(e){return this._validator(e)},e=o([c.Directive({selector:"[minlength][ngControl],[minlength][ngFormControl],[minlength][ngModel]",providers:[h]}),s(0,c.Attribute("minlength")),a("design:paramtypes",[String])],e)}();t.MinLengthValidator=g;var m=l.CONST_EXPR(new c.Provider(u.NG_VALIDATORS,{useExisting:c.forwardRef(function(){return v}),multi:!0})),v=function(){function e(e){this._validator=u.Validators.maxLength(p.NumberWrapper.parseInt(e,10))}return e.prototype.validate=function(e){return this._validator(e)},e=o([c.Directive({selector:"[maxlength][ngControl],[maxlength][ngFormControl],[maxlength][ngModel]",providers:[m]}),s(0,c.Attribute("maxlength")),a("design:paramtypes",[String])],e)}();t.MaxLengthValidator=v;var y=l.CONST_EXPR(new c.Provider(u.NG_VALIDATORS,{useExisting:c.forwardRef(function(){return _}),multi:!0})),_=function(){function e(e){this._validator=u.Validators.pattern(e)}return e.prototype.validate=function(e){return this._validator(e)},e=o([c.Directive({selector:"[pattern][ngControl],[pattern][ngFormControl],[pattern][ngModel]",providers:[y]}),s(0,c.Attribute("pattern")),a("design:paramtypes",[String])],e)}();return t.PatternValidator=_,n.define=i,r.exports}),System.register("angular2/src/common/forms/form_builder",["angular2/core","angular2/src/facade/collection","angular2/src/facade/lang","angular2/src/common/forms/model"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/core"),c=e("angular2/src/facade/collection"),l=e("angular2/src/facade/lang"),u=e("angular2/src/common/forms/model"),p=function(){function e(){}return e.prototype.group=function(e,t){void 0===t&&(t=null);var r=this._reduceControls(e),n=l.isPresent(t)?c.StringMapWrapper.get(t,"optionals"):null,i=l.isPresent(t)?c.StringMapWrapper.get(t,"validator"):null,o=l.isPresent(t)?c.StringMapWrapper.get(t,"asyncValidator"):null;return new u.ControlGroup(r,n,i,o)},e.prototype.control=function(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),new u.Control(e,t,r)},e.prototype.array=function(e,t,r){var n=this;void 0===t&&(t=null),void 0===r&&(r=null);var i=e.map(function(e){return n._createControl(e)});return new u.ControlArray(i,t,r)},e.prototype._reduceControls=function(e){var t=this,r={};return c.StringMapWrapper.forEach(e,function(e,n){r[n]=t._createControl(e)}),r},e.prototype._createControl=function(e){if(e instanceof u.Control||e instanceof u.ControlGroup||e instanceof u.ControlArray)return e;if(l.isArray(e)){var t=e[0],r=e.length>1?e[1]:null,n=e.length>2?e[2]:null;return this.control(t,r,n)}return this.control(e)},e=o([s.Injectable(),a("design:paramtypes",[])],e)}();return t.FormBuilder=p,n.define=i,r.exports}),System.register("angular2/src/common/common_directives",["angular2/src/facade/lang","angular2/src/common/forms","angular2/src/common/directives"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/common/forms"),s=e("angular2/src/common/directives");return t.COMMON_DIRECTIVES=o.CONST_EXPR([s.CORE_DIRECTIVES,a.FORM_DIRECTIVES]),n.define=i,r.exports}),System.register("angular2/src/platform/dom/events/key_events",["angular2/src/platform/dom/dom_adapter","angular2/src/facade/lang","angular2/src/facade/collection","angular2/src/platform/dom/events/event_manager","angular2/src/core/di"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/platform/dom/dom_adapter"),l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/collection"),p=e("angular2/src/platform/dom/events/event_manager"),d=e("angular2/src/core/di"),f=["alt","control","meta","shift"],h={alt:function(e){return e.altKey},control:function(e){return e.ctrlKey},meta:function(e){return e.metaKey},shift:function(e){return e.shiftKey}},g=function(e){function t(){e.call(this)}return o(t,e),t.prototype.supports=function(e){return l.isPresent(t.parseEventName(e))},t.prototype.addEventListener=function(e,r,n){var i=t.parseEventName(r),o=t.eventCallback(e,u.StringMapWrapper.get(i,"fullKey"),n,this.manager.getZone());return this.manager.getZone().runOutsideAngular(function(){return c.DOM.onAndCancel(e,u.StringMapWrapper.get(i,"domEventName"),o)})},t.parseEventName=function(e){var r=e.toLowerCase().split("."),n=r.shift();if(0===r.length||!l.StringWrapper.equals(n,"keydown")&&!l.StringWrapper.equals(n,"keyup"))return null;var i=t._normalizeKey(r.pop()),o="";if(f.forEach(function(e){u.ListWrapper.contains(r,e)&&(u.ListWrapper.remove(r,e),o+=e+".")}),o+=i,0!=r.length||0===i.length)return null;var a=u.StringMapWrapper.create();return u.StringMapWrapper.set(a,"domEventName",n),u.StringMapWrapper.set(a,"fullKey",o),a},t.getEventFullKey=function(e){var t="",r=c.DOM.getEventKey(e);return r=r.toLowerCase(),l.StringWrapper.equals(r," ")?r="space":l.StringWrapper.equals(r,".")&&(r="dot"),f.forEach(function(n){if(n!=r){var i=u.StringMapWrapper.get(h,n);i(e)&&(t+=n+".")}}),t+=r},t.eventCallback=function(e,r,n,i){return function(e){l.StringWrapper.equals(t.getEventFullKey(e),r)&&i.run(function(){return n(e)})}},t._normalizeKey=function(e){switch(e){case"esc":return"escape";default:return e}},t=a([d.Injectable(),s("design:paramtypes",[])],t)}(p.EventManagerPlugin);return t.KeyEventsPlugin=g,n.define=i,r.exports}),System.register("angular2/src/platform/dom/events/hammer_common",["angular2/src/platform/dom/events/event_manager","angular2/src/facade/collection"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/platform/dom/events/event_manager"),s=e("angular2/src/facade/collection"),c={pan:!0,panstart:!0,panmove:!0,panend:!0,pancancel:!0,panleft:!0,panright:!0,panup:!0,pandown:!0,pinch:!0,pinchstart:!0,pinchmove:!0,pinchend:!0,pinchcancel:!0,pinchin:!0,pinchout:!0,press:!0,pressup:!0,rotate:!0,rotatestart:!0,rotatemove:!0,rotateend:!0,rotatecancel:!0,swipe:!0,swipeleft:!0,swiperight:!0,swipeup:!0,swipedown:!0,tap:!0},l=function(e){function t(){e.call(this)}return o(t,e),t.prototype.supports=function(e){return e=e.toLowerCase(),s.StringMapWrapper.contains(c,e)},t}(a.EventManagerPlugin);return t.HammerGesturesPluginCommon=l,n.define=i,r.exports}),System.register("angular2/src/compiler/xhr",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=function(){function e(){}return e.prototype.get=function(e){return null},e}();return t.XHR=o,n.define=i,r.exports}),System.register("angular2/src/platform/browser/testability",["angular2/src/facade/collection","angular2/src/facade/lang","angular2/src/platform/dom/dom_adapter","angular2/core"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/collection"),a=e("angular2/src/facade/lang"),s=e("angular2/src/platform/dom/dom_adapter"),c=e("angular2/core"),l=function(){function e(e){this._testability=e}return e.prototype.isStable=function(){return this._testability.isStable()},e.prototype.whenStable=function(e){this._testability.whenStable(e)},e.prototype.findBindings=function(e,t,r){return this.findProviders(e,t,r)},e.prototype.findProviders=function(e,t,r){return this._testability.findBindings(e,t,r)},e}(),u=function(){function e(){}return e.init=function(){c.setTestabilityGetter(new e)},e.prototype.addToWindow=function(e){a.global.getAngularTestability=function(t,r){void 0===r&&(r=!0);var n=e.findTestabilityInTree(t,r);if(null==n)throw new Error("Could not find testability for element.");return new l(n)},a.global.getAllAngularTestabilities=function(){var t=e.getAllTestabilities();return t.map(function(e){return new l(e)})},a.global.getAllAngularRootElements=function(){return e.getAllRootElements()};var t=function(e){var t=a.global.getAllAngularTestabilities(),r=t.length,n=!1,i=function(t){n=n||t,r--,0==r&&e(n)};t.forEach(function(e){e.whenStable(i)})};a.global.frameworkStabilizers||(a.global.frameworkStabilizers=o.ListWrapper.createGrowableSize(0)),a.global.frameworkStabilizers.push(t)},e.prototype.findTestabilityInTree=function(e,t,r){if(null==t)return null;var n=e.getTestability(t);return a.isPresent(n)?n:r?s.DOM.isShadowRoot(t)?this.findTestabilityInTree(e,s.DOM.getHost(t),!0):this.findTestabilityInTree(e,s.DOM.parentElement(t),!0):null},e}();return t.BrowserGetTestability=u,n.define=i,r.exports}),System.register("angular2/src/core/profile/wtf_init",[],!0,function(e,t,r){function n(){}var i=System.global,o=i.define;return i.define=void 0,t.wtfInit=n,i.define=o,r.exports}),System.register("angular2/src/platform/browser/title",["angular2/src/platform/dom/dom_adapter"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/platform/dom/dom_adapter"),a=function(){function e(){}return e.prototype.getTitle=function(){return o.DOM.getTitle()},e.prototype.setTitle=function(e){o.DOM.setTitle(e)},e}();return t.Title=a,n.define=i,r.exports}),System.register("angular2/src/facade/browser",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=window;return t.window=o,t.document=window.document,t.location=window.location,t.gc=window.gc?function(){return window.gc()}:function(){return null},t.performance=window.performance?window.performance:null,t.Event=window.Event,t.MouseEvent=window.MouseEvent,t.KeyboardEvent=window.KeyboardEvent,t.EventTarget=window.EventTarget,t.History=window.History,t.Location=window.Location,t.EventListener=window.EventListener,n.define=i,r.exports}),System.register("angular2/src/compiler/url_resolver",["angular2/src/core/di","angular2/src/facade/lang","angular2/src/core/application_tokens","angular2/src/core/di"],!0,function(e,t,r){function n(){return new _}function i(e){var t=a(e);return t&&t[b.Scheme]||""}function o(e,t,r,n,i,o,a){var s=[];return m.isPresent(e)&&s.push(e+":"),m.isPresent(r)&&(s.push("//"),m.isPresent(t)&&s.push(t+"@"),s.push(r),m.isPresent(n)&&s.push(":"+n)),m.isPresent(i)&&s.push(i),m.isPresent(o)&&s.push("?"+o),m.isPresent(a)&&s.push("#"+a),s.join("")}function a(e){return m.RegExpWrapper.firstMatch(C,e)}function s(e){if("/"==e)return"/";for(var t="/"==e[0]?"/":"",r="/"===e[e.length-1]?"/":"",n=e.split("/"),i=[],o=0,a=0;a<n.length;a++){var s=n[a];switch(s){case"":case".":break;case"..":i.length>0?i.pop():o++;break;default:i.push(s)}}if(""==t){for(;o-- >0;)i.unshift("..");0===i.length&&i.push(".")}return t+i.join("/")+r}function c(e){var t=e[b.Path];return t=m.isBlank(t)?"":s(t),e[b.Path]=t,o(e[b.Scheme],e[b.UserInfo],e[b.Domain],e[b.Port],t,e[b.QueryData],e[b.Fragment])}function l(e,t){var r=a(encodeURI(t)),n=a(e);if(m.isPresent(r[b.Scheme]))return c(r);r[b.Scheme]=n[b.Scheme];for(var i=b.Scheme;i<=b.Port;i++)m.isBlank(r[i])&&(r[i]=n[i]);if("/"==r[b.Path][0])return c(r);var o=n[b.Path];m.isBlank(o)&&(o="/");var s=o.lastIndexOf("/");return o=o.substring(0,s+1)+r[b.Path],r[b.Path]=o,c(r)}var u=System.global,p=u.define;u.define=void 0;var d=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},f=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},h=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},g=e("angular2/src/core/di"),m=e("angular2/src/facade/lang"),v=e("angular2/src/core/application_tokens"),y=e("angular2/src/core/di");t.createWithoutPackagePrefix=n,t.DEFAULT_PACKAGE_URL_PROVIDER=new y.Provider(v.PACKAGE_ROOT_URL,{useValue:"/"});var _=function(){function e(e){void 0===e&&(e=null),m.isPresent(e)&&(this._packagePrefix=m.StringWrapper.stripRight(e,"/")+"/")}return e.prototype.resolve=function(e,t){var r=t;return m.isPresent(e)&&e.length>0&&(r=l(e,r)),m.isPresent(this._packagePrefix)&&"package"==i(r)&&(r=r.replace("package:",this._packagePrefix)),r},e=d([g.Injectable(),h(0,g.Inject(v.PACKAGE_ROOT_URL)),f("design:paramtypes",[String])],e)}();t.UrlResolver=_,t.getUrlScheme=i;var b,C=m.RegExpWrapper.create("^(?:([^:/?#.]+):)?(?://(?:([^/?#]*)@)?([\\w\\d\\-\\u0100-\\uffff.%]*)(?::([0-9]+))?)?([^?#]+)?(?:\\?([^#]*))?(?:#(.*))?$");return function(e){e[e.Scheme=1]="Scheme",e[e.UserInfo=2]="UserInfo",e[e.Domain=3]="Domain",e[e.Port=4]="Port",e[e.Path=5]="Path",e[e.QueryData=6]="QueryData",e[e.Fragment=7]="Fragment"}(b||(b={})),u.define=p,r.exports}),System.register("angular2/src/compiler/selector",["angular2/src/facade/collection","angular2/src/facade/lang","angular2/src/facade/exceptions"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/collection"),a=e("angular2/src/facade/lang"),s=e("angular2/src/facade/exceptions"),c="",l=a.RegExpWrapper.create("(\\:not\\()|([-\\w]+)|(?:\\.([-\\w]+))|(?:\\[([-\\w*]+)(?:=([^\\]]*))?\\])|(\\))|(\\s*,\\s*)"),u=function(){function e(){this.element=null,this.classNames=[],this.attrs=[],this.notSelectors=[]}return e.parse=function(t){for(var r,n=[],i=function(e,t){t.notSelectors.length>0&&a.isBlank(t.element)&&o.ListWrapper.isEmpty(t.classNames)&&o.ListWrapper.isEmpty(t.attrs)&&(t.element="*"),e.push(t)},c=new e,u=a.RegExpWrapper.matcher(l,t),p=c,d=!1;a.isPresent(r=a.RegExpMatcherWrapper.next(u));){if(a.isPresent(r[1])){if(d)throw new s.BaseException("Nesting :not is not allowed in a selector");d=!0,p=new e,c.notSelectors.push(p)}if(a.isPresent(r[2])&&p.setElement(r[2]),a.isPresent(r[3])&&p.addClassName(r[3]),a.isPresent(r[4])&&p.addAttribute(r[4],r[5]),a.isPresent(r[6])&&(d=!1,p=c),a.isPresent(r[7])){if(d)throw new s.BaseException("Multiple selectors in :not are not supported");i(n,c),c=p=new e}}return i(n,c),n},e.prototype.isElementSelector=function(){return a.isPresent(this.element)&&o.ListWrapper.isEmpty(this.classNames)&&o.ListWrapper.isEmpty(this.attrs)&&0===this.notSelectors.length},e.prototype.setElement=function(e){void 0===e&&(e=null),this.element=e},e.prototype.getMatchingElementTemplate=function(){for(var e=a.isPresent(this.element)?this.element:"div",t=this.classNames.length>0?' class="'+this.classNames.join(" ")+'"':"",r="",n=0;n<this.attrs.length;n+=2){var i=this.attrs[n],o=""!==this.attrs[n+1]?'="'+this.attrs[n+1]+'"':"";r+=" "+i+o}return"<"+e+t+r+"></"+e+">"},e.prototype.addAttribute=function(e,t){void 0===t&&(t=c),this.attrs.push(e),t=a.isPresent(t)?t.toLowerCase():c,this.attrs.push(t)},e.prototype.addClassName=function(e){this.classNames.push(e.toLowerCase())},e.prototype.toString=function(){var e="";if(a.isPresent(this.element)&&(e+=this.element),a.isPresent(this.classNames))for(var t=0;t<this.classNames.length;t++)e+="."+this.classNames[t];if(a.isPresent(this.attrs))for(var t=0;t<this.attrs.length;){var r=this.attrs[t++],n=this.attrs[t++];e+="["+r,n.length>0&&(e+="="+n),e+="]"}return this.notSelectors.forEach(function(t){return e+=":not("+t+")"}),e},e}();t.CssSelector=u;var p=function(){function e(){this._elementMap=new o.Map,this._elementPartialMap=new o.Map,this._classMap=new o.Map,this._classPartialMap=new o.Map,this._attrValueMap=new o.Map,this._attrValuePartialMap=new o.Map,this._listContexts=[]}return e.createNotMatcher=function(t){var r=new e;return r.addSelectables(t,null),r},e.prototype.addSelectables=function(e,t){var r=null;e.length>1&&(r=new d(e),this._listContexts.push(r));for(var n=0;n<e.length;n++)this._addSelectable(e[n],t,r)},e.prototype._addSelectable=function(e,t,r){var n=this,i=e.element,s=e.classNames,c=e.attrs,l=new f(e,t,r);if(a.isPresent(i)){var u=0===c.length&&0===s.length;u?this._addTerminal(n._elementMap,i,l):n=this._addPartial(n._elementPartialMap,i)}if(a.isPresent(s))for(var p=0;p<s.length;p++){var u=0===c.length&&p===s.length-1,d=s[p];u?this._addTerminal(n._classMap,d,l):n=this._addPartial(n._classPartialMap,d)}if(a.isPresent(c))for(var p=0;p<c.length;){var u=p===c.length-2,h=c[p++],g=c[p++];if(u){var m=n._attrValueMap,v=m.get(h);a.isBlank(v)&&(v=new o.Map,m.set(h,v)),this._addTerminal(v,g,l)}else{var y=n._attrValuePartialMap,_=y.get(h);a.isBlank(_)&&(_=new o.Map,y.set(h,_)),n=this._addPartial(_,g)}}},e.prototype._addTerminal=function(e,t,r){var n=e.get(t);a.isBlank(n)&&(n=[],e.set(t,n)),n.push(r)},e.prototype._addPartial=function(t,r){var n=t.get(r);return a.isBlank(n)&&(n=new e,t.set(r,n)),n},e.prototype.match=function(e,t){for(var r=!1,n=e.element,i=e.classNames,o=e.attrs,s=0;s<this._listContexts.length;s++)this._listContexts[s].alreadyMatched=!1;if(r=this._matchTerminal(this._elementMap,n,e,t)||r,r=this._matchPartial(this._elementPartialMap,n,e,t)||r,a.isPresent(i))for(var l=0;l<i.length;l++){var u=i[l];r=this._matchTerminal(this._classMap,u,e,t)||r,r=this._matchPartial(this._classPartialMap,u,e,t)||r}if(a.isPresent(o))for(var l=0;l<o.length;){var p=o[l++],d=o[l++],f=this._attrValueMap.get(p);a.StringWrapper.equals(d,c)||(r=this._matchTerminal(f,c,e,t)||r),r=this._matchTerminal(f,d,e,t)||r;var h=this._attrValuePartialMap.get(p);a.StringWrapper.equals(d,c)||(r=this._matchPartial(h,c,e,t)||r),r=this._matchPartial(h,d,e,t)||r}return r},e.prototype._matchTerminal=function(e,t,r,n){if(a.isBlank(e)||a.isBlank(t))return!1;var i=e.get(t),o=e.get("*");if(a.isPresent(o)&&(i=i.concat(o)),a.isBlank(i))return!1;for(var s,c=!1,l=0;l<i.length;l++)s=i[l],c=s.finalize(r,n)||c;return c},e.prototype._matchPartial=function(e,t,r,n){if(a.isBlank(e)||a.isBlank(t))return!1;var i=e.get(t);return a.isBlank(i)?!1:i.match(r,n)},e}();t.SelectorMatcher=p;var d=function(){function e(e){this.selectors=e,this.alreadyMatched=!1}return e}();t.SelectorListContext=d;var f=function(){function e(e,t,r){this.selector=e,this.cbContext=t,this.listContext=r,this.notSelectors=e.notSelectors}return e.prototype.finalize=function(e,t){var r=!0;if(this.notSelectors.length>0&&(a.isBlank(this.listContext)||!this.listContext.alreadyMatched)){var n=p.createNotMatcher(this.notSelectors);r=!n.match(e,null)}return r&&a.isPresent(t)&&(a.isBlank(this.listContext)||!this.listContext.alreadyMatched)&&(a.isPresent(this.listContext)&&(this.listContext.alreadyMatched=!0),t(this.selector,this.cbContext)),r},e}();return t.SelectorContext=f,n.define=i,r.exports}),System.register("angular2/src/compiler/util",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e){return P.StringWrapper.replaceAllMapped(e,E,function(e){return"-"+e[1].toLowerCase()})}function i(e){return P.StringWrapper.replaceAllMapped(e,S,function(e){return e[1].toUpperCase()})}function o(e){return P.isBlank(e)?null:"'"+s(e,R)+"'"}function a(e){return P.isBlank(e)?null:'"'+s(e,x)+'"'}function s(e,t){return P.StringWrapper.replaceAllMapped(e,t,function(e){return"$"==e[0]?P.IS_DART?"\\$":"$":"\n"==e[0]?"\\n":"\r"==e[0]?"\\r":"\\"+e[0]})}function c(e){return P.IS_DART?"const "+e+" = ":"var "+e+" = exports['"+e+"'] = "}function l(e){return P.IS_DART?"const "+e:"new "+e}function u(e,t,r){return void 0===r&&(r=""),P.IS_DART?p(e,r)+" => "+t:p(e,r)+" { return "+t+"; }"}function p(e,t){return void 0===t&&(t=""),P.IS_DART?t+"("+e.join(",")+")":"function "+t+"("+e.join(",")+")"}function d(e){return P.IS_DART?"'${"+e+"}'":e}function f(e,t){var r=P.StringWrapper.split(e.trim(),/\s*:\s*/g);return r.length>1?r:t}function h(e){return e instanceof D?e.expression:P.isString(e)?o(e):P.isBlank(e)?"null":""+e}function g(e){return"["+e.map(h).join(",")+"]"}function m(e){for(var t="([",r=!0,n=P.IS_DART?".addAll":"concat",i=0;i<e.length;i++){var o=e[i];o instanceof D&&o.isArray?(t+="])."+n+"("+o.expression+")."+n+"([",r=!0):(r||(t+=","),r=!1,t+=h(o))}return t+="])"}function v(e){return"{"+e.map(y).join(",")+"}"}function y(e){return h(e[0])+":"+h(e[1])}function _(e,t){for(var r=0;r<e.length;r++)t.push(e[r])}function b(e,t){if(P.isPresent(e))for(var r=0;r<e.length;r++){var n=e[r];P.isArray(n)?b(n,t):t.push(n)}return t}var C=System.global,w=C.define;C.define=void 0;var P=e("angular2/src/facade/lang"),E=/([A-Z])/g,S=/-([a-z])/g,R=/'|\\|\n|\r|\$/g,x=/"|\\|\n|\r|\$/g;t.MODULE_SUFFIX=P.IS_DART?".dart":".js",t.CONST_VAR=P.IS_DART?"const":"var",t.camelCaseToDashCase=n,t.dashCaseToCamelCase=i,t.escapeSingleQuoteString=o,t.escapeDoubleQuoteString=a,t.codeGenExportVariable=c,t.codeGenConstConstructorCall=l,t.codeGenValueFn=u,t.codeGenFnHeader=p,t.codeGenToString=d,t.splitAtColon=f;var O=function(){function e(e){this.statement=e}return e}();t.Statement=O;var D=function(){function e(e,t){void 0===t&&(t=!1),this.expression=e,this.isArray=t}return e}();return t.Expression=D,t.escapeValue=h,t.codeGenArray=g,t.codeGenFlatArray=m,t.codeGenStringMap=v,t.addAll=_,t.flattenArray=b,C.define=w,r.exports}),System.register("angular2/src/core/linker/interfaces",[],!0,function(e,t,r){var n=System.global,i=n.define;
n.define=void 0,function(e){e[e.OnInit=0]="OnInit",e[e.OnDestroy=1]="OnDestroy",e[e.DoCheck=2]="DoCheck",e[e.OnChanges=3]="OnChanges",e[e.AfterContentInit=4]="AfterContentInit",e[e.AfterContentChecked=5]="AfterContentChecked",e[e.AfterViewInit=6]="AfterViewInit",e[e.AfterViewChecked=7]="AfterViewChecked"}(t.LifecycleHooks||(t.LifecycleHooks={}));var o=t.LifecycleHooks;return t.LIFECYCLE_HOOKS_VALUES=[o.OnInit,o.OnDestroy,o.DoCheck,o.OnChanges,o.AfterContentInit,o.AfterContentChecked,o.AfterViewInit,o.AfterViewChecked],n.define=i,r.exports}),System.register("angular2/src/compiler/template_ast",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e,t,r){void 0===r&&(r=null);var n=[];return t.forEach(function(t){var i=t.visit(e,r);a.isPresent(i)&&n.push(i)}),n}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/facade/lang"),s=function(){function e(e,t,r){this.value=e,this.ngContentIndex=t,this.sourceSpan=r}return e.prototype.visit=function(e,t){return e.visitText(this,t)},e}();t.TextAst=s;var c=function(){function e(e,t,r){this.value=e,this.ngContentIndex=t,this.sourceSpan=r}return e.prototype.visit=function(e,t){return e.visitBoundText(this,t)},e}();t.BoundTextAst=c;var l=function(){function e(e,t,r){this.name=e,this.value=t,this.sourceSpan=r}return e.prototype.visit=function(e,t){return e.visitAttr(this,t)},e}();t.AttrAst=l;var u=function(){function e(e,t,r,n,i){this.name=e,this.type=t,this.value=r,this.unit=n,this.sourceSpan=i}return e.prototype.visit=function(e,t){return e.visitElementProperty(this,t)},e}();t.BoundElementPropertyAst=u;var p=function(){function e(e,t,r,n){this.name=e,this.target=t,this.handler=r,this.sourceSpan=n}return e.prototype.visit=function(e,t){return e.visitEvent(this,t)},Object.defineProperty(e.prototype,"fullName",{get:function(){return a.isPresent(this.target)?this.target+":"+this.name:this.name},enumerable:!0,configurable:!0}),e}();t.BoundEventAst=p;var d=function(){function e(e,t,r){this.name=e,this.value=t,this.sourceSpan=r}return e.prototype.visit=function(e,t){return e.visitVariable(this,t)},e}();t.VariableAst=d;var f=function(){function e(e,t,r,n,i,o,a,s,c){this.name=e,this.attrs=t,this.inputs=r,this.outputs=n,this.exportAsVars=i,this.directives=o,this.children=a,this.ngContentIndex=s,this.sourceSpan=c}return e.prototype.visit=function(e,t){return e.visitElement(this,t)},e.prototype.isBound=function(){return this.inputs.length>0||this.outputs.length>0||this.exportAsVars.length>0||this.directives.length>0},e.prototype.getComponent=function(){return this.directives.length>0&&this.directives[0].directive.isComponent?this.directives[0].directive:null},e}();t.ElementAst=f;var h=function(){function e(e,t,r,n,i,o,a){this.attrs=e,this.outputs=t,this.vars=r,this.directives=n,this.children=i,this.ngContentIndex=o,this.sourceSpan=a}return e.prototype.visit=function(e,t){return e.visitEmbeddedTemplate(this,t)},e}();t.EmbeddedTemplateAst=h;var g=function(){function e(e,t,r,n){this.directiveName=e,this.templateName=t,this.value=r,this.sourceSpan=n}return e.prototype.visit=function(e,t){return e.visitDirectiveProperty(this,t)},e}();t.BoundDirectivePropertyAst=g;var m=function(){function e(e,t,r,n,i,o){this.directive=e,this.inputs=t,this.hostProperties=r,this.hostEvents=n,this.exportAsVars=i,this.sourceSpan=o}return e.prototype.visit=function(e,t){return e.visitDirective(this,t)},e}();t.DirectiveAst=m;var v=function(){function e(e,t,r){this.index=e,this.ngContentIndex=t,this.sourceSpan=r}return e.prototype.visit=function(e,t){return e.visitNgContent(this,t)},e}();return t.NgContentAst=v,function(e){e[e.Property=0]="Property",e[e.Attribute=1]="Attribute",e[e.Class=2]="Class",e[e.Style=3]="Style"}(t.PropertyBindingType||(t.PropertyBindingType={})),t.PropertyBindingType,t.templateVisitAll=n,i.define=o,r.exports}),System.register("angular2/src/compiler/source_module",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e){return"#MODULE["+e+"]"}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/facade/lang"),s=/#MODULE\[([^\]]*)\]/g;t.moduleRef=n;var c=function(){function e(e,t){this.moduleUrl=e,this.sourceWithModuleRefs=t}return e.getSourceWithoutImports=function(e){return a.StringWrapper.replaceAllMapped(e,s,function(e){return""})},e.prototype.getSourceWithImports=function(){var e=this,t={},r=[],n=a.StringWrapper.replaceAllMapped(this.sourceWithModuleRefs,s,function(n){var i=n[1],o=t[i];return a.isBlank(o)&&(i==e.moduleUrl?o="":(o="import"+r.length,r.push([i,o])),t[i]=o),o.length>0?o+".":""});return new p(n,r)},e}();t.SourceModule=c;var l=function(){function e(e,t){this.declarations=e,this.expression=t}return e}();t.SourceExpression=l;var u=function(){function e(e,t){this.declarations=e,this.expressions=t}return e}();t.SourceExpressions=u;var p=function(){function e(e,t){this.source=e,this.imports=t}return e}();return t.SourceWithImports=p,i.define=o,r.exports}),System.register("angular2/src/compiler/change_definition_factory",["angular2/src/facade/collection","angular2/src/facade/lang","angular2/src/core/reflection/reflection","angular2/src/core/change_detection/change_detection","angular2/src/compiler/template_ast","angular2/src/core/linker/interfaces"],!0,function(e,t,r){function n(e,t,r,n){var o=[],a=new h(null,o,t);return d.templateVisitAll(a,n),i(o,e,r)}function i(e,t,r){var n=o(e);return e.map(function(e){var i=t.name+"_"+e.viewIndex;return new p.ChangeDetectorDefinition(i,e.strategy,n[e.viewIndex],e.bindingRecords,e.eventRecords,e.directiveRecords,r)})}function o(e){var t=c.ListWrapper.createFixedSize(e.length);return e.forEach(function(e){var r=l.isPresent(e.parent)?t[e.parent.viewIndex]:[];t[e.viewIndex]=r.concat(e.variableNames)}),t}var a=System.global,s=a.define;a.define=void 0;var c=e("angular2/src/facade/collection"),l=e("angular2/src/facade/lang"),u=e("angular2/src/core/reflection/reflection"),p=e("angular2/src/core/change_detection/change_detection"),d=e("angular2/src/compiler/template_ast"),f=e("angular2/src/core/linker/interfaces");t.createChangeDetectorDefinitions=n;var h=function(){function e(e,t,r){this.parent=e,this.allVisitors=t,this.strategy=r,this.nodeCount=0,this.boundElementCount=0,this.variableNames=[],this.bindingRecords=[],this.eventRecords=[],this.directiveRecords=[],this.viewIndex=t.length,t.push(this)}return e.prototype.visitEmbeddedTemplate=function(t,r){this.nodeCount++,this.boundElementCount++,d.templateVisitAll(this,t.outputs);for(var n=0;n<t.directives.length;n++)t.directives[n].visit(this,n);var i=new e(this,this.allVisitors,p.ChangeDetectionStrategy.Default);return d.templateVisitAll(i,t.vars),d.templateVisitAll(i,t.children),null},e.prototype.visitElement=function(e,t){this.nodeCount++,e.isBound()&&this.boundElementCount++,d.templateVisitAll(this,e.inputs,null),d.templateVisitAll(this,e.outputs),d.templateVisitAll(this,e.exportAsVars);for(var r=0;r<e.directives.length;r++)e.directives[r].visit(this,r);return d.templateVisitAll(this,e.children),null},e.prototype.visitNgContent=function(e,t){return null},e.prototype.visitVariable=function(e,t){return this.variableNames.push(e.name),null},e.prototype.visitEvent=function(e,t){var r=l.isPresent(t)?p.BindingRecord.createForHostEvent(e.handler,e.fullName,t):p.BindingRecord.createForEvent(e.handler,e.fullName,this.boundElementCount-1);return this.eventRecords.push(r),null},e.prototype.visitElementProperty=function(e,t){var r,n=this.boundElementCount-1,i=l.isPresent(t)?t.directiveIndex:null;return e.type===d.PropertyBindingType.Property?r=l.isPresent(i)?p.BindingRecord.createForHostProperty(i,e.value,e.name):p.BindingRecord.createForElementProperty(e.value,n,e.name):e.type===d.PropertyBindingType.Attribute?r=l.isPresent(i)?p.BindingRecord.createForHostAttribute(i,e.value,e.name):p.BindingRecord.createForElementAttribute(e.value,n,e.name):e.type===d.PropertyBindingType.Class?r=l.isPresent(i)?p.BindingRecord.createForHostClass(i,e.value,e.name):p.BindingRecord.createForElementClass(e.value,n,e.name):e.type===d.PropertyBindingType.Style&&(r=l.isPresent(i)?p.BindingRecord.createForHostStyle(i,e.value,e.name,e.unit):p.BindingRecord.createForElementStyle(e.value,n,e.name,e.unit)),this.bindingRecords.push(r),null},e.prototype.visitAttr=function(e,t){return null},e.prototype.visitBoundText=function(e,t){var r=this.nodeCount++;return this.bindingRecords.push(p.BindingRecord.createForTextNode(e.value,r)),null},e.prototype.visitText=function(e,t){return this.nodeCount++,null},e.prototype.visitDirective=function(e,t){var r=new p.DirectiveIndex(this.boundElementCount-1,t),n=e.directive,i=[];c.StringMapWrapper.forEach(e.directive.outputs,function(e,t){return i.push([t,e])});var o=new p.DirectiveRecord({directiveIndex:r,callAfterContentInit:-1!==n.lifecycleHooks.indexOf(f.LifecycleHooks.AfterContentInit),callAfterContentChecked:-1!==n.lifecycleHooks.indexOf(f.LifecycleHooks.AfterContentChecked),callAfterViewInit:-1!==n.lifecycleHooks.indexOf(f.LifecycleHooks.AfterViewInit),callAfterViewChecked:-1!==n.lifecycleHooks.indexOf(f.LifecycleHooks.AfterViewChecked),callOnChanges:-1!==n.lifecycleHooks.indexOf(f.LifecycleHooks.OnChanges),callDoCheck:-1!==n.lifecycleHooks.indexOf(f.LifecycleHooks.DoCheck),callOnInit:-1!==n.lifecycleHooks.indexOf(f.LifecycleHooks.OnInit),callOnDestroy:-1!==n.lifecycleHooks.indexOf(f.LifecycleHooks.OnDestroy),changeDetection:n.changeDetection,outputs:i});this.directiveRecords.push(o),d.templateVisitAll(this,e.inputs,o);var a=this.bindingRecords;return o.callOnChanges&&a.push(p.BindingRecord.createDirectiveOnChanges(o)),o.callOnInit&&a.push(p.BindingRecord.createDirectiveOnInit(o)),o.callDoCheck&&a.push(p.BindingRecord.createDirectiveDoCheck(o)),d.templateVisitAll(this,e.hostProperties,o),d.templateVisitAll(this,e.hostEvents,o),d.templateVisitAll(this,e.exportAsVars),null},e.prototype.visitDirectiveProperty=function(e,t){var r=u.reflector.setter(e.directiveName);return this.bindingRecords.push(p.BindingRecord.createForDirective(e.value,e.directiveName,r,t)),null},e}();return a.define=s,r.exports}),System.register("angular2/src/transform/template_compiler/change_detector_codegen",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=function(){function e(e){}return e.prototype.generate=function(e,t,r){throw"Not implemented in JS"},e.prototype.toString=function(){throw"Not implemented in JS"},e}();return t.Codegen=o,n.define=i,r.exports}),System.register("angular2/src/compiler/shadow_css",["angular2/src/facade/collection","angular2/src/facade/lang"],!0,function(e,t,r){function n(e){return l.StringWrapper.replaceAllMapped(e,R,function(e){return""})}function i(e,t){var r=o(e),n=0;return l.StringWrapper.replaceAllMapped(r.escapedString,x,function(e){var i=e[2],o="",a=e[4],s="";l.isPresent(e[4])&&e[4].startsWith("{"+T)&&(o=r.blocks[n++],a=e[4].substring(T.length+1),s="{");var c=t(new I(i,o));return""+e[1]+c.selector+e[3]+s+c.content+a})}function o(e){for(var t=l.StringWrapper.split(e,O),r=[],n=[],i=0,o=[],a=0;a<t.length;a++){var s=t[a];s==A&&i--,i>0?o.push(s):(o.length>0&&(n.push(o.join("")),r.push(T),o=[]),r.push(s)),s==D&&i++}return o.length>0&&(n.push(o.join("")),r.push(T)),new k(r.join(""),n)}var a=System.global,s=a.define;a.define=void 0;var c=e("angular2/src/facade/collection"),l=e("angular2/src/facade/lang"),u=function(){function e(){this.strictStyling=!0}return e.prototype.shimCssText=function(e,t,r){return void 0===r&&(r=""),e=n(e),e=this._insertDirectives(e),this._scopeCssText(e,t,r)},e.prototype._insertDirectives=function(e){return e=this._insertPolyfillDirectivesInCssText(e),this._insertPolyfillRulesInCssText(e)},e.prototype._insertPolyfillDirectivesInCssText=function(e){return l.StringWrapper.replaceAllMapped(e,p,function(e){return e[1]+"{"})},e.prototype._insertPolyfillRulesInCssText=function(e){return l.StringWrapper.replaceAllMapped(e,d,function(e){var t=e[0];return t=l.StringWrapper.replace(t,e[1],""),t=l.StringWrapper.replace(t,e[2],""),e[3]+t})},e.prototype._scopeCssText=function(e,t,r){var n=this._extractUnscopedRulesFromCssText(e);return e=this._insertPolyfillHostInCssText(e),e=this._convertColonHost(e),e=this._convertColonHostContext(e),e=this._convertShadowDOMSelectors(e),l.isPresent(t)&&(e=this._scopeSelectors(e,t,r)),e=e+"\n"+n,e.trim()},e.prototype._extractUnscopedRulesFromCssText=function(e){for(var t,r="",n=l.RegExpWrapper.matcher(f,e);l.isPresent(t=l.RegExpMatcherWrapper.next(n));){var i=t[0];i=l.StringWrapper.replace(i,t[2],""),i=l.StringWrapper.replace(i,t[1],t[3]),r+=i+"\n\n"}return r},e.prototype._convertColonHost=function(e){return this._convertColonRule(e,v,this._colonHostPartReplacer)},e.prototype._convertColonHostContext=function(e){return this._convertColonRule(e,y,this._colonHostContextPartReplacer)},e.prototype._convertColonRule=function(e,t,r){return l.StringWrapper.replaceAllMapped(e,t,function(e){if(l.isPresent(e[2])){for(var t=e[2].split(","),n=[],i=0;i<t.length;i++){var o=t[i];if(l.isBlank(o))break;o=o.trim(),n.push(r(_,o,e[3]))}return n.join(",")}return _+e[3]})},e.prototype._colonHostContextPartReplacer=function(e,t,r){return l.StringWrapper.contains(t,h)?this._colonHostPartReplacer(e,t,r):e+t+r+", "+t+" "+e+r},e.prototype._colonHostPartReplacer=function(e,t,r){return e+l.StringWrapper.replace(t,h,"")+r},e.prototype._convertShadowDOMSelectors=function(e){for(var t=0;t<b.length;t++)e=l.StringWrapper.replaceAll(e,b[t]," ");return e},e.prototype._scopeSelectors=function(e,t,r){var n=this;return i(e,function(e){var i=e.selector,o=e.content;return"@"!=e.selector[0]||e.selector.startsWith("@page")?i=n._scopeSelector(e.selector,t,r,n.strictStyling):e.selector.startsWith("@media")&&(o=n._scopeSelectors(e.content,t,r)),new I(i,o)})},e.prototype._scopeSelector=function(e,t,r,n){for(var i=[],o=e.split(","),a=0;a<o.length;a++){var s=o[a].trim(),c=l.StringWrapper.split(s,C),u=c[0];this._selectorNeedsScoping(u,t)&&(c[0]=n&&!l.StringWrapper.contains(u,_)?this._applyStrictSelectorScope(u,t):this._applySelectorScope(u,t,r)),i.push(c.join(" "))}return i.join(", ")},e.prototype._selectorNeedsScoping=function(e,t){var r=this._makeScopeMatcher(t);return!l.isPresent(l.RegExpWrapper.firstMatch(r,e))},e.prototype._makeScopeMatcher=function(e){var t=/\[/g,r=/\]/g;return e=l.StringWrapper.replaceAll(e,t,"\\["),e=l.StringWrapper.replaceAll(e,r,"\\]"),l.RegExpWrapper.create("^("+e+")"+w,"m")},e.prototype._applySelectorScope=function(e,t,r){return this._applySimpleSelectorScope(e,t,r)},e.prototype._applySimpleSelectorScope=function(e,t,r){if(l.isPresent(l.RegExpWrapper.firstMatch(P,e))){var n=this.strictStyling?"["+r+"]":t;return e=l.StringWrapper.replace(e,_,n),l.StringWrapper.replaceAll(e,P,n+" ")}return t+" "+e},e.prototype._applyStrictSelectorScope=function(e,t){var r=/\[is=([^\]]*)\]/g;t=l.StringWrapper.replaceAllMapped(t,r,function(e){return e[1]});for(var n=[" ",">","+","~"],i=e,o="["+t+"]",a=0;a<n.length;a++){var s=n[a],u=i.split(s);i=u.map(function(e){var t=l.StringWrapper.replaceAll(e.trim(),P,"");if(t.length>0&&!c.ListWrapper.contains(n,t)&&!l.StringWrapper.contains(t,o)){var r=/([^:]*)(:*)(.*)/g,i=l.RegExpWrapper.firstMatch(r,t);l.isPresent(i)&&(e=i[1]+o+i[2]+i[3])}return e}).join(s)}return i},e.prototype._insertPolyfillHostInCssText=function(e){return e=l.StringWrapper.replaceAll(e,S,g),e=l.StringWrapper.replaceAll(e,E,h)},e}();t.ShadowCss=u;var p=/polyfill-next-selector[^}]*content:[\s]*?['"](.*?)['"][;\s]*}([^{]*?){/gim,d=/(polyfill-rule)[^}]*(content:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim,f=/(polyfill-unscoped-rule)[^}]*(content:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim,h="-shadowcsshost",g="-shadowcsscontext",m=")(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))?([^,{]*)",v=l.RegExpWrapper.create("("+h+m,"im"),y=l.RegExpWrapper.create("("+g+m,"im"),_=h+"-no-combinator",b=[/::shadow/g,/::content/g,/\/shadow-deep\//g,/\/shadow\//g],C=/(?:>>>)|(?:\/deep\/)/g,w="([>\\s~+[.,{:][\\s\\S]*)?$",P=l.RegExpWrapper.create(h,"im"),E=/:host/gim,S=/:host-context/gim,R=/\/\*[\s\S]*?\*\//g,x=/(\s*)([^;\{\}]+?)(\s*)((?:{%BLOCK%}?\s*;?)|(?:\s*;))/g,O=/([{}])/g,D="{",A="}",T="%BLOCK%",I=function(){function e(e,t){this.selector=e,this.content=t}return e}();t.CssRule=I,t.processRules=i;var k=function(){function e(e,t){this.escapedString=e,this.blocks=t}return e}();return a.define=s,r.exports}),System.register("angular2/src/compiler/style_url_resolver",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e){if(s.isBlank(e)||0===e.length||"/"==e[0])return!1;var t=s.RegExpWrapper.firstMatch(u,e);return s.isBlank(t)||"package"==t[1]||"asset"==t[1]}function i(e,t,r){var i=[],o=s.StringWrapper.replaceAllMapped(r,l,function(r){var o=s.isPresent(r[1])?r[1]:r[2];return n(o)?(i.push(e.resolve(t,o)),""):r[0]});return new c(o,i)}var o=System.global,a=o.define;o.define=void 0;var s=e("angular2/src/facade/lang"),c=function(){function e(e,t){this.style=e,this.styleUrls=t}return e}();t.StyleWithImports=c,t.isStyleUrlResolvable=n,t.extractStyleUrls=i;var l=/@import\s+(?:url\()?\s*(?:(?:['"]([^'"]*))|([^;\)\s]*))[^;]*;?/g,u=/^([a-zA-Z\-\+\.]+):/g;return o.define=a,r.exports}),System.register("angular2/src/compiler/proto_view_compiler",["angular2/src/facade/lang","angular2/src/facade/collection","angular2/src/compiler/template_ast","angular2/src/compiler/source_module","angular2/src/core/linker/view","angular2/src/core/linker/view_type","angular2/src/core/linker/element","angular2/src/compiler/util","angular2/src/core/di"],!0,function(e,t,r){function n(e,t,r){return _.templateVisitAll(e,t,r),r}function i(e){var t=[];y.StringMapWrapper.forEach(e,function(e,r){t.push([r,e])}),y.ListWrapper.sort(t,function(e,t){return v.StringWrapper.compare(e[0],t[0])});var r=[];return t.forEach(function(e){r.push([e[0],e[1]])}),r}function o(e,t,r){return e==x||e==O?t+" "+r:r}function a(e){for(var t={},r=0;r<e.length;r++){var n=e[r];t[n[0]]=n[1]}return t}function s(e){var t=e.map(function(e){return u(e.type)});return"["+t.join(",")+"]"}function c(e){var t=e.map(u);return"["+t.join(",")+"]"}function l(e){return v.IS_DART?""+t.VIEW_TYPE_MODULE_REF+e:""+e}function u(e){return""+b.moduleRef(e.moduleUrl)+e.name}function p(e,t){return t>0?w.ViewType.EMBEDDED:e.type.isHost?w.ViewType.HOST:w.ViewType.COMPONENT}var d=System.global,f=d.define;d.define=void 0;var h=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},g=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},m=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},v=e("angular2/src/facade/lang"),y=e("angular2/src/facade/collection"),_=e("angular2/src/compiler/template_ast"),b=e("angular2/src/compiler/source_module"),C=e("angular2/src/core/linker/view"),w=e("angular2/src/core/linker/view_type"),P=e("angular2/src/core/linker/element"),E=e("angular2/src/compiler/util"),S=e("angular2/src/core/di");t.PROTO_VIEW_JIT_IMPORTS=v.CONST_EXPR({AppProtoView:C.AppProtoView,AppProtoElement:P.AppProtoElement,ViewType:w.ViewType}),t.APP_VIEW_MODULE_REF=b.moduleRef("package:angular2/src/core/linker/view"+E.MODULE_SUFFIX),t.VIEW_TYPE_MODULE_REF=b.moduleRef("package:angular2/src/core/linker/view_type"+E.MODULE_SUFFIX),t.APP_EL_MODULE_REF=b.moduleRef("package:angular2/src/core/linker/element"+E.MODULE_SUFFIX),t.METADATA_MODULE_REF=b.moduleRef("package:angular2/src/core/metadata/view"+E.MODULE_SUFFIX);var R="$implicit",x="class",O="style",D=function(){function e(){}return e.prototype.compileProtoViewRuntime=function(e,t,r,n){var i=new V(e,t,n),o=[];return i.createCompileProtoView(r,[],[],o),new A([],o)},e.prototype.compileProtoViewCodeGen=function(e,t,r,n){var i=new N(e,t,n),o=[],a=[];return i.createCompileProtoView(r,[],a,o),new A(a.map(function(e){return e.statement}),o)},e=g([S.Injectable(),m("design:paramtypes",[])],e)}();t.ProtoViewCompiler=D;var A=function(){function e(e,t){this.declarations=e,this.protoViews=t}return e}();t.CompileProtoViews=A;var T=function(){function e(e,t,r){this.embeddedTemplateIndex=e,this.protoElements=t,this.protoView=r}return e}();t.CompileProtoView=T;var I=function(){function e(e,t,r,n,i,o,a){this.boundElementIndex=e,this.attrNameAndValues=t,this.variableNameAndValues=r,this.renderEvents=n,this.directives=i,this.embeddedTemplateIndex=o,this.appProtoEl=a}return e}();t.CompileProtoElement=I;var k=function(){function e(e){this.component=e}return e.prototype.createCompileProtoView=function(e,t,r,n){var i=n.length;n.push(null);var o=new M(this,r,n);_.templateVisitAll(o,e);var a=p(this.component,i),s=this.createAppProtoView(i,a,t,r),c=new T(i,o.protoElements,s);return n[i]=c,c},e}(),N=function(e){function r(t,r,n){e.call(this,r),this.resolvedMetadataCacheExpr=t,this.pipes=n,this._nextVarId=0}return h(r,e),r.prototype._nextProtoViewVar=function(e){return"appProtoView"+this._nextVarId++ +"_"+this.component.type.name+e},r.prototype.createAppProtoView=function(e,r,n,i){var o=this._nextProtoViewVar(e),a=l(r),s=0===e?c(this.pipes.map(function(e){return e.type})):null,u="var "+o+" = "+t.APP_VIEW_MODULE_REF+"AppProtoView.create("+this.resolvedMetadataCacheExpr.expression+", "+a+", "+s+", "+E.codeGenStringMap(n)+");";return i.push(new E.Statement(u)),new E.Expression(o)},r.prototype.createAppProtoElement=function(e,r,n,i,o){var a="appProtoEl"+this._nextVarId++ +"_"+this.component.type.name,c=t.APP_EL_MODULE_REF+"AppProtoElement.create(\n        "+this.resolvedMetadataCacheExpr.expression+",\n        "+e+",\n        "+E.codeGenStringMap(r)+",\n        "+s(i)+",\n        "+E.codeGenStringMap(n)+"\n      )",l="var "+a+" = "+c+";";return o.push(new E.Statement(l)),new E.Expression(a)},r}(k),V=function(e){function t(t,r,n){e.call(this,r),this.metadataCache=t,this.pipes=n}return h(t,e),t.prototype.createAppProtoView=function(e,t,r,n){var i=0===e?this.pipes.map(function(e){return e.type.runtime}):[],o=a(r);return C.AppProtoView.create(this.metadataCache,t,i,o)},t.prototype.createAppProtoElement=function(e,t,r,n,i){var o=a(t);return P.AppProtoElement.create(this.metadataCache,e,o,n.map(function(e){return e.type.runtime}),a(r))},t}(k),M=function(){function e(e,t,r){this.factory=e,this.allStatements=t,this.allProtoViews=r,this.protoElements=[],this.boundElementCount=0}return e.prototype._readAttrNameAndValues=function(e,t){var r=n(this,t,{});return e.forEach(function(e){y.StringMapWrapper.forEach(e.hostAttributes,function(e,t){var n=r[t];r[t]=v.isPresent(n)?o(t,n,e):e})}),i(r)},e.prototype.visitBoundText=function(e,t){return null},e.prototype.visitText=function(e,t){return null},e.prototype.visitNgContent=function(e,t){return null},e.prototype.visitElement=function(e,t){var r=this,i=null;e.isBound()&&(i=this.boundElementCount++);var o=e.getComponent(),a=[];v.isBlank(o)&&e.exportAsVars.forEach(function(e){a.push([e.name,null])});var s=[],c=n(this,e.outputs,new Map);y.ListWrapper.forEachWithIndex(e.directives,function(e,t){e.visit(r,new j(t,i,c,a,s))});var l=[];c.forEach(function(e,t){return l.push(e)});var u=this._readAttrNameAndValues(s,e.attrs);return this._addProtoElement(e.isBound(),i,u,a,l,s,null),_.templateVisitAll(this,e.children),null},e.prototype.visitEmbeddedTemplate=function(e,t){var r=this,n=this.boundElementCount++,i=[];y.ListWrapper.forEachWithIndex(e.directives,function(e,t){e.visit(r,new j(t,n,new Map,[],i))});var o=this._readAttrNameAndValues(i,e.attrs),a=e.vars.map(function(e){return[e.value.length>0?e.value:R,e.name]}),s=this.factory.createCompileProtoView(e.children,a,this.allStatements,this.allProtoViews);return this._addProtoElement(!0,n,o,[],[],i,s.embeddedTemplateIndex),null},e.prototype._addProtoElement=function(e,t,r,n,i,o,a){var s=null;e&&(s=this.factory.createAppProtoElement(t,r,n,o,this.allStatements));var c=new I(t,r,n,i,o,a,s);this.protoElements.push(c)},e.prototype.visitVariable=function(e,t){return null},e.prototype.visitAttr=function(e,t){return t[e.name]=e.value,null},e.prototype.visitDirective=function(e,t){return t.targetDirectives.push(e.directive),_.templateVisitAll(this,e.hostEvents,t.hostEventTargetAndNames),e.exportAsVars.forEach(function(e){t.targetVariableNameAndValues.push([e.name,t.index])}),null},e.prototype.visitEvent=function(e,t){return t.set(e.fullName,e),null},e.prototype.visitDirectiveProperty=function(e,t){return null},e.prototype.visitElementProperty=function(e,t){return null},e}(),j=function(){function e(e,t,r,n,i){this.index=e,this.boundElementIndex=t,this.hostEventTargetAndNames=r,this.targetVariableNameAndValues=n,this.targetDirectives=i}return e}();return d.define=f,r.exports}),System.register("angular2/src/compiler/html_ast",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e,t,r){void 0===r&&(r=null);var n=[];return t.forEach(function(t){var i=t.visit(e,r);a.isPresent(i)&&n.push(i)}),n}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/facade/lang"),s=function(){function e(e,t){this.value=e,this.sourceSpan=t}return e.prototype.visit=function(e,t){return e.visitText(this,t)},e}();t.HtmlTextAst=s;var c=function(){function e(e,t,r){this.name=e,this.value=t,this.sourceSpan=r}return e.prototype.visit=function(e,t){return e.visitAttr(this,t)},e}();t.HtmlAttrAst=c;var l=function(){function e(e,t,r,n){this.name=e,this.attrs=t,this.children=r,this.sourceSpan=n}return e.prototype.visit=function(e,t){return e.visitElement(this,t)},e}();t.HtmlElementAst=l;var u=function(){function e(e,t){this.value=e,this.sourceSpan=t}return e.prototype.visit=function(e,t){return e.visitComment(this,t)},e}();return t.HtmlCommentAst=u,t.htmlVisitAll=n,i.define=o,r.exports}),System.register("angular2/src/compiler/parse_util",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=function(){function e(e,t,r,n){this.file=e,this.offset=t,this.line=r,this.col=n}return e.prototype.toString=function(){return this.file.url+"@"+this.line+":"+this.col},e}();t.ParseLocation=o;var a=function(){function e(e,t){this.content=e,this.url=t}return e}();t.ParseSourceFile=a;var s=function(){function e(e,t){this.start=e,this.end=t}return e.prototype.toString=function(){return this.start.file.content.substring(this.start.offset,this.end.offset)},e}();t.ParseSourceSpan=s;var c=function(){function e(e,t){this.span=e,this.msg=t}return e.prototype.toString=function(){var e=this.span.start.file.content,t=this.span.start.offset;t>e.length-1&&(t=e.length-1);for(var r=t,n=0,i=0;100>n&&t>0&&(t--,n++,"\n"!=e[t]||3!=++i););for(n=0,i=0;100>n&&r<e.length-1&&(r++,n++,"\n"!=e[r]||3!=++i););var o=e.substring(t,this.span.start.offset)+"[ERROR ->]"+e.substring(this.span.start.offset,r+1);return this.msg+' ("'+o+'"): '+this.span.start},e}();return t.ParseError=c,n.define=i,r.exports}),System.register("angular2/src/compiler/html_tags",["angular2/src/facade/lang"],!0,function(e,t,r){function n(e){var t=d[e.toLowerCase()];return l.isPresent(t)?t:f}function i(e){if("@"!=e[0])return[null,e];var t=l.RegExpWrapper.firstMatch(h,e);return[t[1],t[2]]}function o(e){return i(e)[0]}function a(e,t){return l.isPresent(e)?"@"+e+":"+t:t}var s=System.global,c=s.define;s.define=void 0;var l=e("angular2/src/facade/lang");t.NAMED_ENTITIES=l.CONST_EXPR({Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",alefsym:"ℵ",Alpha:"Α",alpha:"α",amp:"&",and:"∧",ang:"∠",apos:"'",Aring:"Å",aring:"å",asymp:"≈",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",bdquo:"„",Beta:"Β",beta:"β",brvbar:"¦",bull:"•",cap:"∩",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",Chi:"Χ",chi:"χ",circ:"ˆ",clubs:"♣",cong:"≅",copy:"©",crarr:"↵",cup:"∪",curren:"¤",dagger:"†",Dagger:"‡",darr:"↓",dArr:"⇓",deg:"°",Delta:"Δ",delta:"δ",diams:"♦",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",empty:"∅",emsp:" ",ensp:" ",Epsilon:"Ε",epsilon:"ε",equiv:"≡",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",exist:"∃",fnof:"ƒ",forall:"∀",frac12:"½",frac14:"¼",frac34:"¾",frasl:"⁄",Gamma:"Γ",gamma:"γ",ge:"≥",gt:">",harr:"↔",hArr:"⇔",hearts:"♥",hellip:"…",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",image:"ℑ",infin:"∞","int":"∫",Iota:"Ι",iota:"ι",iquest:"¿",isin:"∈",Iuml:"Ï",iuml:"ï",Kappa:"Κ",kappa:"κ",Lambda:"Λ",lambda:"λ",lang:"⟨",laquo:"«",larr:"←",lArr:"⇐",lceil:"⌈",ldquo:"“",le:"≤",lfloor:"⌊",lowast:"∗",loz:"◊",lrm:"‎",lsaquo:"‹",lsquo:"‘",lt:"<",macr:"¯",mdash:"—",micro:"µ",middot:"·",minus:"−",Mu:"Μ",mu:"μ",nabla:"∇",nbsp:" ",ndash:"–",ne:"≠",ni:"∋",not:"¬",notin:"∉",nsub:"⊄",Ntilde:"Ñ",ntilde:"ñ",Nu:"Ν",nu:"ν",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",OElig:"Œ",oelig:"œ",Ograve:"Ò",ograve:"ò",oline:"‾",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",oplus:"⊕",or:"∨",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",otimes:"⊗",Ouml:"Ö",ouml:"ö",para:"¶",permil:"‰",perp:"⊥",Phi:"Φ",phi:"φ",Pi:"Π",pi:"π",piv:"ϖ",plusmn:"±",pound:"£",prime:"′",Prime:"″",prod:"∏",prop:"∝",Psi:"Ψ",psi:"ψ",quot:'"',radic:"√",rang:"⟩",raquo:"»",rarr:"→",rArr:"⇒",rceil:"⌉",rdquo:"”",real:"ℜ",reg:"®",rfloor:"⌋",Rho:"Ρ",rho:"ρ",rlm:"‏",rsaquo:"›",rsquo:"’",sbquo:"‚",Scaron:"Š",scaron:"š",sdot:"⋅",sect:"§",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sim:"∼",spades:"♠",sub:"⊂",sube:"⊆",sum:"∑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supe:"⊇",szlig:"ß",Tau:"Τ",tau:"τ",there4:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thinsp:" ",THORN:"Þ",thorn:"þ",tilde:"˜",times:"×",trade:"™",Uacute:"Ú",uacute:"ú",uarr:"↑",uArr:"⇑",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",Uuml:"Ü",uuml:"ü",weierp:"℘",Xi:"Ξ",xi:"ξ",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ",Yuml:"Ÿ",Zeta:"Ζ",zeta:"ζ",zwj:"‍",zwnj:"‌"}),function(e){e[e.RAW_TEXT=0]="RAW_TEXT",e[e.ESCAPABLE_RAW_TEXT=1]="ESCAPABLE_RAW_TEXT",e[e.PARSABLE_DATA=2]="PARSABLE_DATA"}(t.HtmlTagContentType||(t.HtmlTagContentType={}));var u=t.HtmlTagContentType,p=function(){function e(e){var t=this,r=void 0===e?{}:e,n=r.closedByChildren,i=r.requiredParents,o=r.implicitNamespacePrefix,a=r.contentType,s=r.closedByParent,c=r.isVoid,p=r.ignoreFirstLf;this.closedByChildren={},this.closedByParent=!1,l.isPresent(n)&&n.length>0&&n.forEach(function(e){return t.closedByChildren[e]=!0}),this.isVoid=l.normalizeBool(c),this.closedByParent=l.normalizeBool(s)||this.isVoid,l.isPresent(i)&&i.length>0&&(this.requiredParents={},this.parentToAdd=i[0],i.forEach(function(e){return t.requiredParents[e]=!0})),this.implicitNamespacePrefix=o,this.contentType=l.isPresent(a)?a:u.PARSABLE_DATA,this.ignoreFirstLf=l.normalizeBool(p)}return e.prototype.requireExtraParent=function(e){if(l.isBlank(this.requiredParents))return!1;if(l.isBlank(e))return!0;var t=e.toLowerCase();return 1!=this.requiredParents[t]&&"template"!=t},e.prototype.isClosedByChild=function(e){return this.isVoid||l.normalizeBool(this.closedByChildren[e.toLowerCase()])},e}();t.HtmlTagDefinition=p;var d={base:new p({isVoid:!0}),meta:new p({isVoid:!0}),area:new p({isVoid:!0}),embed:new p({isVoid:!0}),link:new p({isVoid:!0}),img:new p({isVoid:!0}),input:new p({isVoid:!0}),param:new p({isVoid:!0}),hr:new p({isVoid:!0}),br:new p({isVoid:!0}),source:new p({isVoid:!0}),track:new p({isVoid:!0}),wbr:new p({isVoid:!0}),p:new p({closedByChildren:["address","article","aside","blockquote","div","dl","fieldset","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","nav","ol","p","pre","section","table","ul"],closedByParent:!0}),thead:new p({closedByChildren:["tbody","tfoot"]}),tbody:new p({closedByChildren:["tbody","tfoot"],closedByParent:!0}),tfoot:new p({closedByChildren:["tbody"],closedByParent:!0}),tr:new p({closedByChildren:["tr"],requiredParents:["tbody","tfoot","thead"],closedByParent:!0}),td:new p({closedByChildren:["td","th"],closedByParent:!0}),th:new p({closedByChildren:["td","th"],
closedByParent:!0}),col:new p({requiredParents:["colgroup"],isVoid:!0}),svg:new p({implicitNamespacePrefix:"svg"}),math:new p({implicitNamespacePrefix:"math"}),li:new p({closedByChildren:["li"],closedByParent:!0}),dt:new p({closedByChildren:["dt","dd"]}),dd:new p({closedByChildren:["dt","dd"],closedByParent:!0}),rb:new p({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rt:new p({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rtc:new p({closedByChildren:["rb","rtc","rp"],closedByParent:!0}),rp:new p({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),optgroup:new p({closedByChildren:["optgroup"],closedByParent:!0}),option:new p({closedByChildren:["option","optgroup"],closedByParent:!0}),pre:new p({ignoreFirstLf:!0}),listing:new p({ignoreFirstLf:!0}),style:new p({contentType:u.RAW_TEXT}),script:new p({contentType:u.RAW_TEXT}),title:new p({contentType:u.ESCAPABLE_RAW_TEXT}),textarea:new p({contentType:u.ESCAPABLE_RAW_TEXT,ignoreFirstLf:!0})},f=new p;t.getHtmlTagDefinition=n;var h=/^@([^:]+):(.+)/g;return t.splitNsName=i,t.getNsPrefix=o,t.mergeNsAndName=a,s.define=c,r.exports}),System.register("angular2/src/compiler/schema/element_schema_registry",[],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=function(){function e(){}return e.prototype.hasProperty=function(e,t){return!0},e.prototype.getMappedPropName=function(e){return e},e}();return t.ElementSchemaRegistry=o,n.define=i,r.exports}),System.register("angular2/src/compiler/template_preparser",["angular2/src/facade/lang","angular2/src/compiler/html_tags"],!0,function(e,t,r){function n(e){var t=null,r=null,n=null,o=!1;e.attrs.forEach(function(e){var i=e.name.toLowerCase();i==l?t=e.value:i==f?r=e.value:i==d?n=e.value:e.name==v&&(o=!0)}),t=i(t);var a=e.name.toLowerCase(),s=y.OTHER;return c.splitNsName(a)[1]==u?s=y.NG_CONTENT:a==g?s=y.STYLE:a==m?s=y.SCRIPT:a==p&&n==h&&(s=y.STYLESHEET),new _(s,t,r,o)}function i(e){return s.isBlank(e)||0===e.length?"*":e}var o=System.global,a=o.define;o.define=void 0;var s=e("angular2/src/facade/lang"),c=e("angular2/src/compiler/html_tags"),l="select",u="ng-content",p="link",d="rel",f="href",h="stylesheet",g="style",m="script",v="ngNonBindable";t.preparseElement=n,function(e){e[e.NG_CONTENT=0]="NG_CONTENT",e[e.STYLE=1]="STYLE",e[e.STYLESHEET=2]="STYLESHEET",e[e.SCRIPT=3]="SCRIPT",e[e.OTHER=4]="OTHER"}(t.PreparsedElementType||(t.PreparsedElementType={}));var y=t.PreparsedElementType,_=function(){function e(e,t,r,n){this.type=e,this.selectAttr=t,this.hrefAttr=r,this.nonBindable=n}return e}();return t.PreparsedElement=_,o.define=a,r.exports}),System.register("angular2/src/compiler/template_normalizer",["angular2/src/compiler/directive_metadata","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/async","angular2/src/compiler/xhr","angular2/src/compiler/url_resolver","angular2/src/compiler/style_url_resolver","angular2/src/core/di","angular2/src/core/metadata/view","angular2/src/compiler/html_ast","angular2/src/compiler/html_parser","angular2/src/compiler/template_preparser"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/compiler/directive_metadata"),c=e("angular2/src/facade/lang"),l=e("angular2/src/facade/exceptions"),u=e("angular2/src/facade/async"),p=e("angular2/src/compiler/xhr"),d=e("angular2/src/compiler/url_resolver"),f=e("angular2/src/compiler/style_url_resolver"),h=e("angular2/src/core/di"),g=e("angular2/src/core/metadata/view"),m=e("angular2/src/compiler/html_ast"),v=e("angular2/src/compiler/html_parser"),y=e("angular2/src/compiler/template_preparser"),_=function(){function e(e,t,r){this._xhr=e,this._urlResolver=t,this._htmlParser=r}return e.prototype.normalizeTemplate=function(e,t){var r=this;if(c.isPresent(t.template))return u.PromiseWrapper.resolve(this.normalizeLoadedTemplate(e,t,t.template,e.moduleUrl));if(c.isPresent(t.templateUrl)){var n=this._urlResolver.resolve(e.moduleUrl,t.templateUrl);return this._xhr.get(n).then(function(i){return r.normalizeLoadedTemplate(e,t,i,n)})}throw new l.BaseException("No template specified for component "+e.name)},e.prototype.normalizeLoadedTemplate=function(e,t,r,n){var i=this,o=this._htmlParser.parse(r,e.name);if(o.errors.length>0){var a=o.errors.join("\n");throw new l.BaseException("Template parse errors:\n"+a)}var c=new b;m.htmlVisitAll(c,o.rootNodes);var u=t.styles.concat(c.styles),p=c.styleUrls.filter(f.isStyleUrlResolvable).map(function(e){return i._urlResolver.resolve(n,e)}).concat(t.styleUrls.filter(f.isStyleUrlResolvable).map(function(t){return i._urlResolver.resolve(e.moduleUrl,t)})),d=u.map(function(e){var t=f.extractStyleUrls(i._urlResolver,n,e);return t.styleUrls.forEach(function(e){return p.push(e)}),t.style}),h=t.encapsulation;return h===g.ViewEncapsulation.Emulated&&0===d.length&&0===p.length&&(h=g.ViewEncapsulation.None),new s.CompileTemplateMetadata({encapsulation:h,template:r,templateUrl:n,styles:d,styleUrls:p,ngContentSelectors:c.ngContentSelectors})},e=o([h.Injectable(),a("design:paramtypes",[p.XHR,d.UrlResolver,v.HtmlParser])],e)}();t.TemplateNormalizer=_;var b=function(){function e(){this.ngContentSelectors=[],this.styles=[],this.styleUrls=[],this.ngNonBindableStackCount=0}return e.prototype.visitElement=function(e,t){var r=y.preparseElement(e);switch(r.type){case y.PreparsedElementType.NG_CONTENT:0===this.ngNonBindableStackCount&&this.ngContentSelectors.push(r.selectAttr);break;case y.PreparsedElementType.STYLE:var n="";e.children.forEach(function(e){e instanceof m.HtmlTextAst&&(n+=e.value)}),this.styles.push(n);break;case y.PreparsedElementType.STYLESHEET:this.styleUrls.push(r.hrefAttr)}return r.nonBindable&&this.ngNonBindableStackCount++,m.htmlVisitAll(this,e.children),r.nonBindable&&this.ngNonBindableStackCount--,null},e.prototype.visitComment=function(e,t){return null},e.prototype.visitAttr=function(e,t){return null},e.prototype.visitText=function(e,t){return null},e}();return n.define=i,r.exports}),System.register("angular2/src/core/linker/directive_lifecycle_reflector",["angular2/src/facade/lang","angular2/src/core/linker/interfaces"],!0,function(e,t,r){function n(e,t){if(!(t instanceof a.Type))return!1;var r=t.prototype;switch(e){case s.LifecycleHooks.AfterContentInit:return!!r.ngAfterContentInit;case s.LifecycleHooks.AfterContentChecked:return!!r.ngAfterContentChecked;case s.LifecycleHooks.AfterViewInit:return!!r.ngAfterViewInit;case s.LifecycleHooks.AfterViewChecked:return!!r.ngAfterViewChecked;case s.LifecycleHooks.OnChanges:return!!r.ngOnChanges;case s.LifecycleHooks.DoCheck:return!!r.ngDoCheck;case s.LifecycleHooks.OnDestroy:return!!r.ngOnDestroy;case s.LifecycleHooks.OnInit:return!!r.ngOnInit;default:return!1}}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/facade/lang"),s=e("angular2/src/core/linker/interfaces");return t.hasLifecycleHook=n,i.define=o,r.exports}),System.register("angular2/src/compiler/schema/dom_element_schema_registry",["angular2/src/core/di","angular2/src/facade/lang","angular2/src/facade/collection","angular2/src/platform/dom/dom_adapter","angular2/src/compiler/html_tags","angular2/src/compiler/schema/element_schema_registry"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/core/di"),l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/collection"),p=e("angular2/src/platform/dom/dom_adapter"),d=e("angular2/src/compiler/html_tags"),f=e("angular2/src/compiler/schema/element_schema_registry"),h=l.CONST_EXPR({xlink:"http://www.w3.org/1999/xlink",svg:"http://www.w3.org/2000/svg"}),g=function(e){function t(){e.apply(this,arguments),this._protoElements=new Map}return o(t,e),t.prototype._getProtoElement=function(e){var t=this._protoElements.get(e);if(l.isBlank(t)){var r=d.splitNsName(e);t=l.isPresent(r[0])?p.DOM.createElementNS(h[r[0]],r[1]):p.DOM.createElement(r[1]),this._protoElements.set(e,t)}return t},t.prototype.hasProperty=function(e,t){if(-1!==e.indexOf("-"))return!0;var r=this._getProtoElement(e);return p.DOM.hasProperty(r,t)},t.prototype.getMappedPropName=function(e){var t=u.StringMapWrapper.get(p.DOM.attrToPropMap,e);return l.isPresent(t)?t:e},t=a([c.Injectable(),s("design:paramtypes",[])],t)}(f.ElementSchemaRegistry);return t.DomElementSchemaRegistry=g,n.define=i,r.exports}),System.register("angular2/src/core/angular_entrypoint",["angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=function(){function e(e){this.name=e}return e=o([s.CONST(),a("design:paramtypes",[String])],e)}();return t.AngularEntrypoint=c,n.define=i,r.exports}),System.register("angular2/src/common/pipes/async_pipe",["angular2/src/facade/lang","angular2/src/facade/async","angular2/core","angular2/src/common/pipes/invalid_pipe_argument_exception"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/src/facade/async"),l=e("angular2/core"),u=e("angular2/src/common/pipes/invalid_pipe_argument_exception"),p=function(){function e(){}return e.prototype.createSubscription=function(e,t){return c.ObservableWrapper.subscribe(e,t,function(e){throw e})},e.prototype.dispose=function(e){c.ObservableWrapper.dispose(e)},e.prototype.onDestroy=function(e){c.ObservableWrapper.dispose(e)},e}(),d=function(){function e(){}return e.prototype.createSubscription=function(e,t){return e.then(t)},e.prototype.dispose=function(e){},e.prototype.onDestroy=function(e){},e}(),f=new d,h=new p,g=function(){function e(e){this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null,this._strategy=null,this._ref=e}return e.prototype.ngOnDestroy=function(){s.isPresent(this._subscription)&&this._dispose()},e.prototype.transform=function(e,t){return s.isBlank(this._obj)?(s.isPresent(e)&&this._subscribe(e),this._latestReturnedValue=this._latestValue,this._latestValue):e!==this._obj?(this._dispose(),this.transform(e)):this._latestValue===this._latestReturnedValue?this._latestReturnedValue:(this._latestReturnedValue=this._latestValue,l.WrappedValue.wrap(this._latestValue))},e.prototype._subscribe=function(e){var t=this;this._obj=e,this._strategy=this._selectStrategy(e),this._subscription=this._strategy.createSubscription(e,function(r){return t._updateLatestValue(e,r)})},e.prototype._selectStrategy=function(t){if(s.isPromise(t))return f;if(c.ObservableWrapper.isObservable(t))return h;throw new u.InvalidPipeArgumentException(e,t)},e.prototype._dispose=function(){this._strategy.dispose(this._subscription),this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null},e.prototype._updateLatestValue=function(e,t){e===this._obj&&(this._latestValue=t,this._ref.markForCheck())},e=o([l.Pipe({name:"async",pure:!1}),l.Injectable(),a("design:paramtypes",[l.ChangeDetectorRef])],e)}();return t.AsyncPipe=g,n.define=i,r.exports}),System.register("angular2/src/common/pipes/date_pipe",["angular2/src/facade/lang","angular2/src/facade/intl","angular2/core","angular2/src/facade/collection","angular2/src/common/pipes/invalid_pipe_argument_exception"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/facade/lang"),c=e("angular2/src/facade/intl"),l=e("angular2/core"),u=e("angular2/src/facade/collection"),p=e("angular2/src/common/pipes/invalid_pipe_argument_exception"),d="en-US",f=function(){function e(){}return e.prototype.transform=function(t,r){if(s.isBlank(t))return null;if(!this.supports(t))throw new p.InvalidPipeArgumentException(e,t);var n=s.isPresent(r)&&r.length>0?r[0]:"mediumDate";return s.isNumber(t)&&(t=s.DateWrapper.fromMillis(t)),u.StringMapWrapper.contains(e._ALIASES,n)&&(n=u.StringMapWrapper.get(e._ALIASES,n)),c.DateFormatter.format(t,d,n)},e.prototype.supports=function(e){return s.isDate(e)||s.isNumber(e)},e._ALIASES={medium:"yMMMdjms","short":"yMdjm",fullDate:"yMMMMEEEEd",longDate:"yMMMMd",mediumDate:"yMMMd",shortDate:"yMd",mediumTime:"jms",shortTime:"jm"},e=o([s.CONST(),l.Pipe({name:"date",pure:!0}),l.Injectable(),a("design:paramtypes",[])],e)}();return t.DatePipe=f,n.define=i,r.exports}),System.register("angular2/src/common/directives",["angular2/src/common/directives/ng_class","angular2/src/common/directives/ng_for","angular2/src/common/directives/ng_if","angular2/src/common/directives/ng_style","angular2/src/common/directives/ng_switch","angular2/src/common/directives/ng_plural","angular2/src/common/directives/observable_list_diff","angular2/src/common/directives/core_directives"],!0,function(e,t,r){function n(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/common/directives/ng_class");t.NgClass=a.NgClass;var s=e("angular2/src/common/directives/ng_for");t.NgFor=s.NgFor;var c=e("angular2/src/common/directives/ng_if");t.NgIf=c.NgIf;var l=e("angular2/src/common/directives/ng_style");t.NgStyle=l.NgStyle;var u=e("angular2/src/common/directives/ng_switch");t.NgSwitch=u.NgSwitch,t.NgSwitchWhen=u.NgSwitchWhen,t.NgSwitchDefault=u.NgSwitchDefault;var p=e("angular2/src/common/directives/ng_plural");t.NgPlural=p.NgPlural,t.NgPluralCase=p.NgPluralCase,t.NgLocalization=p.NgLocalization,n(e("angular2/src/common/directives/observable_list_diff"));var d=e("angular2/src/common/directives/core_directives");return t.CORE_DIRECTIVES=d.CORE_DIRECTIVES,i.define=o,r.exports}),System.register("angular2/src/common/forms/directives/shared",["angular2/src/facade/collection","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/common/forms/validators","angular2/src/common/forms/directives/default_value_accessor","angular2/src/common/forms/directives/number_value_accessor","angular2/src/common/forms/directives/checkbox_value_accessor","angular2/src/common/forms/directives/select_control_value_accessor","angular2/src/common/forms/directives/radio_control_value_accessor","angular2/src/common/forms/directives/normalize_validator"],!0,function(e,t,r){function n(e,t){var r=f.ListWrapper.clone(t.path);return r.push(e),r}function i(e,t){h.isBlank(e)&&a(t,"Cannot find control"),h.isBlank(t.valueAccessor)&&a(t,"No value accessor for"),e.validator=m.Validators.compose([e.validator,t.validator]),e.asyncValidator=m.Validators.composeAsync([e.asyncValidator,t.asyncValidator]),t.valueAccessor.writeValue(e.value),t.valueAccessor.registerOnChange(function(r){t.viewToModelUpdate(r),e.updateValue(r,{emitModelToViewChange:!1}),e.markAsDirty()}),e.registerOnChange(function(e){return t.valueAccessor.writeValue(e)}),t.valueAccessor.registerOnTouched(function(){return e.markAsTouched()})}function o(e,t){h.isBlank(e)&&a(t,"Cannot find control"),e.validator=m.Validators.compose([e.validator,t.validator]),e.asyncValidator=m.Validators.composeAsync([e.asyncValidator,t.asyncValidator])}function a(e,t){var r=e.path.join(" -> ");throw new g.BaseException(t+" '"+r+"'")}function s(e){return h.isPresent(e)?m.Validators.compose(e.map(w.normalizeValidator)):null}function c(e){return h.isPresent(e)?m.Validators.composeAsync(e.map(w.normalizeAsyncValidator)):null}function l(e,t){if(!f.StringMapWrapper.contains(e,"model"))return!1;var r=e.model;return r.isFirstChange()?!0:!h.looseIdentical(t,r.currentValue)}function u(e,t){if(h.isBlank(t))return null;var r,n,i;return t.forEach(function(t){h.hasConstructor(t,v.DefaultValueAccessor)?r=t:h.hasConstructor(t,_.CheckboxControlValueAccessor)||h.hasConstructor(t,y.NumberValueAccessor)||h.hasConstructor(t,b.SelectControlValueAccessor)||h.hasConstructor(t,C.RadioControlValueAccessor)?(h.isPresent(n)&&a(e,"More than one built-in value accessor matches"),n=t):(h.isPresent(i)&&a(e,"More than one custom value accessor matches"),i=t)}),h.isPresent(i)?i:h.isPresent(n)?n:h.isPresent(r)?r:(a(e,"No valid value accessor for"),null)}var p=System.global,d=p.define;p.define=void 0;var f=e("angular2/src/facade/collection"),h=e("angular2/src/facade/lang"),g=e("angular2/src/facade/exceptions"),m=e("angular2/src/common/forms/validators"),v=e("angular2/src/common/forms/directives/default_value_accessor"),y=e("angular2/src/common/forms/directives/number_value_accessor"),_=e("angular2/src/common/forms/directives/checkbox_value_accessor"),b=e("angular2/src/common/forms/directives/select_control_value_accessor"),C=e("angular2/src/common/forms/directives/radio_control_value_accessor"),w=e("angular2/src/common/forms/directives/normalize_validator");return t.controlPath=n,t.setUpControl=i,t.setUpControlGroup=o,t.composeValidators=s,t.composeAsyncValidators=c,t.isPropertyUpdated=l,t.selectValueAccessor=u,p.define=d,r.exports}),System.register("angular2/src/common/forms/directives",["angular2/src/facade/lang","angular2/src/common/forms/directives/ng_control_name","angular2/src/common/forms/directives/ng_form_control","angular2/src/common/forms/directives/ng_model","angular2/src/common/forms/directives/ng_control_group","angular2/src/common/forms/directives/ng_form_model","angular2/src/common/forms/directives/ng_form","angular2/src/common/forms/directives/default_value_accessor","angular2/src/common/forms/directives/checkbox_value_accessor","angular2/src/common/forms/directives/number_value_accessor","angular2/src/common/forms/directives/radio_control_value_accessor","angular2/src/common/forms/directives/ng_control_status","angular2/src/common/forms/directives/select_control_value_accessor","angular2/src/common/forms/directives/validators","angular2/src/common/forms/directives/ng_control_name","angular2/src/common/forms/directives/ng_form_control","angular2/src/common/forms/directives/ng_model","angular2/src/common/forms/directives/ng_control_group","angular2/src/common/forms/directives/ng_form_model","angular2/src/common/forms/directives/ng_form","angular2/src/common/forms/directives/default_value_accessor","angular2/src/common/forms/directives/checkbox_value_accessor","angular2/src/common/forms/directives/radio_control_value_accessor","angular2/src/common/forms/directives/number_value_accessor","angular2/src/common/forms/directives/ng_control_status","angular2/src/common/forms/directives/select_control_value_accessor","angular2/src/common/forms/directives/validators","angular2/src/common/forms/directives/ng_control"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/facade/lang"),a=e("angular2/src/common/forms/directives/ng_control_name"),s=e("angular2/src/common/forms/directives/ng_form_control"),c=e("angular2/src/common/forms/directives/ng_model"),l=e("angular2/src/common/forms/directives/ng_control_group"),u=e("angular2/src/common/forms/directives/ng_form_model"),p=e("angular2/src/common/forms/directives/ng_form"),d=e("angular2/src/common/forms/directives/default_value_accessor"),f=e("angular2/src/common/forms/directives/checkbox_value_accessor"),h=e("angular2/src/common/forms/directives/number_value_accessor"),g=e("angular2/src/common/forms/directives/radio_control_value_accessor"),m=e("angular2/src/common/forms/directives/ng_control_status"),v=e("angular2/src/common/forms/directives/select_control_value_accessor"),y=e("angular2/src/common/forms/directives/validators"),_=e("angular2/src/common/forms/directives/ng_control_name");t.NgControlName=_.NgControlName;var b=e("angular2/src/common/forms/directives/ng_form_control");t.NgFormControl=b.NgFormControl;var C=e("angular2/src/common/forms/directives/ng_model");t.NgModel=C.NgModel;var w=e("angular2/src/common/forms/directives/ng_control_group");t.NgControlGroup=w.NgControlGroup;var P=e("angular2/src/common/forms/directives/ng_form_model");t.NgFormModel=P.NgFormModel;var E=e("angular2/src/common/forms/directives/ng_form");t.NgForm=E.NgForm;var S=e("angular2/src/common/forms/directives/default_value_accessor");t.DefaultValueAccessor=S.DefaultValueAccessor;var R=e("angular2/src/common/forms/directives/checkbox_value_accessor");t.CheckboxControlValueAccessor=R.CheckboxControlValueAccessor;var x=e("angular2/src/common/forms/directives/radio_control_value_accessor");t.RadioControlValueAccessor=x.RadioControlValueAccessor,t.RadioButtonState=x.RadioButtonState;var O=e("angular2/src/common/forms/directives/number_value_accessor");t.NumberValueAccessor=O.NumberValueAccessor;var D=e("angular2/src/common/forms/directives/ng_control_status");t.NgControlStatus=D.NgControlStatus;var A=e("angular2/src/common/forms/directives/select_control_value_accessor");t.SelectControlValueAccessor=A.SelectControlValueAccessor,t.NgSelectOption=A.NgSelectOption;var T=e("angular2/src/common/forms/directives/validators");t.RequiredValidator=T.RequiredValidator,t.MinLengthValidator=T.MinLengthValidator,t.MaxLengthValidator=T.MaxLengthValidator,t.PatternValidator=T.PatternValidator;var I=e("angular2/src/common/forms/directives/ng_control");return t.NgControl=I.NgControl,t.FORM_DIRECTIVES=o.CONST_EXPR([a.NgControlName,l.NgControlGroup,s.NgFormControl,c.NgModel,u.NgFormModel,p.NgForm,v.NgSelectOption,d.DefaultValueAccessor,h.NumberValueAccessor,f.CheckboxControlValueAccessor,v.SelectControlValueAccessor,g.RadioControlValueAccessor,m.NgControlStatus,y.RequiredValidator,y.MinLengthValidator,y.MaxLengthValidator,y.PatternValidator]),n.define=i,r.exports}),System.register("angular2/src/platform/dom/events/hammer_gestures",["angular2/src/platform/dom/events/hammer_common","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/core/di"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/platform/dom/events/hammer_common"),l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/exceptions"),p=e("angular2/src/core/di"),d=function(e){function t(){e.apply(this,arguments)}return o(t,e),t.prototype.supports=function(t){if(!e.prototype.supports.call(this,t))return!1;if(!l.isPresent(window.Hammer))throw new u.BaseException("Hammer.js is not loaded, can not bind "+t+" event");return!0},t.prototype.addEventListener=function(e,t,r){var n=this.manager.getZone();return t=t.toLowerCase(),n.runOutsideAngular(function(){var i=new Hammer(e);i.get("pinch").set({enable:!0}),i.get("rotate").set({enable:!0});var o=function(e){n.run(function(){r(e)})};return i.on(t,o),function(){i.off(t,o)}})},t=a([p.Injectable(),s("design:paramtypes",[])],t)}(c.HammerGesturesPluginCommon);return t.HammerGesturesPlugin=d,n.define=i,r.exports}),System.register("angular2/src/platform/browser/xhr_impl",["angular2/src/facade/promise","angular2/src/facade/lang","angular2/src/compiler/xhr"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/facade/promise"),s=e("angular2/src/facade/lang"),c=e("angular2/src/compiler/xhr"),l=function(e){function t(){e.apply(this,arguments)}return o(t,e),t.prototype.get=function(e){var t=a.PromiseWrapper.completer(),r=new XMLHttpRequest;return r.open("GET",e,!0),r.responseType="text",r.onload=function(){var n=s.isPresent(r.response)?r.response:r.responseText,i=1223===r.status?204:r.status;0===i&&(i=n?200:0),i>=200&&300>=i?t.resolve(n):t.reject("Failed to load "+e,null)},r.onerror=function(){t.reject("Failed to load "+e,null)},r.send(),t.promise},t}(c.XHR);return t.XHRImpl=l,n.define=i,r.exports}),System.register("angular2/src/platform/browser/tools/common_tools",["angular2/src/core/application_ref","angular2/src/facade/lang","angular2/src/facade/browser","angular2/src/platform/dom/dom_adapter"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/application_ref"),a=e("angular2/src/facade/lang"),s=e("angular2/src/facade/browser"),c=e("angular2/src/platform/dom/dom_adapter"),l=function(){function e(e){this.profiler=new u(e)}return e}();t.AngularTools=l;var u=function(){function e(e){this.appRef=e.injector.get(o.ApplicationRef)}return e.prototype.timeChangeDetection=function(e){var t=a.isPresent(e)&&e.record,r="Change Detection",n=a.isPresent(s.window.console.profile);t&&n&&s.window.console.profile(r);for(var i=c.DOM.performanceNow(),o=0;5>o||c.DOM.performanceNow()-i<500;)this.appRef.tick(),o++;var l=c.DOM.performanceNow();t&&n&&s.window.console.profileEnd(r);var u=(l-i)/o;s.window.console.log("ran "+o+" change detection cycles"),s.window.console.log(a.NumberWrapper.toFixed(u,2)+" ms per check")},e}();return t.AngularProfiler=u,n.define=i,r.exports}),System.register("angular2/src/compiler/directive_metadata",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/core/change_detection/change_detection","angular2/src/core/metadata/view","angular2/src/compiler/selector","angular2/src/compiler/util","angular2/src/core/linker/interfaces"],!0,function(e,t,r){function n(e,t){var r=m.CssSelector.parse(t)[0].getMatchingElementTemplate();return D.create({type:new R({runtime:Object,name:"Host"+e.name,moduleUrl:e.moduleUrl,isHost:!0}),template:new O({template:r,templateUrl:"",styles:[],styleUrls:[],ngContentSelectors:[]}),changeDetection:h.ChangeDetectionStrategy.Default,inputs:[],outputs:[],host:{},lifecycleHooks:[],isComponent:!0,dynamicLoadable:!1,selector:"*",providers:[],viewProviders:[],queries:[],viewQueries:[]})}function i(e,t){return p.isBlank(e)?null:e.map(function(e){return a(e,t)})}function o(e){return p.isBlank(e)?null:e.map(s)}function a(e,t){return p.isString(e)||p.isBlank(e)?e:t(e)}function s(e){return p.isString(e)||p.isBlank(e)?e:e.toJson()}var c=System.global,l=c.define;c.define=void 0;var u=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},p=e("angular2/src/facade/lang"),d=e("angular2/src/facade/exceptions"),f=e("angular2/src/facade/collection"),h=e("angular2/src/core/change_detection/change_detection"),g=e("angular2/src/core/metadata/view"),m=e("angular2/src/compiler/selector"),v=e("angular2/src/compiler/util"),y=e("angular2/src/core/linker/interfaces"),_=/^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))$/g,b=function(){function e(){}return e.fromJson=function(e){return T[e["class"]](e)},Object.defineProperty(e.prototype,"identifier",{get:function(){return d.unimplemented()},enumerable:!0,configurable:!0}),e}();t.CompileMetadataWithIdentifier=b;var C=function(e){function t(){e.apply(this,arguments)}return u(t,e),t.fromJson=function(e){return T[e["class"]](e)},Object.defineProperty(t.prototype,"type",{get:function(){return d.unimplemented()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"identifier",{get:function(){return d.unimplemented()},enumerable:!0,configurable:!0}),t}(b);t.CompileMetadataWithType=C;var w=function(){function e(e){var t=void 0===e?{}:e,r=t.runtime,n=t.name,i=t.moduleUrl,o=t.prefix,a=t.constConstructor;this.runtime=r,this.name=n,this.prefix=o,this.moduleUrl=i,this.constConstructor=a}return e.fromJson=function(t){return new e({name:t.name,prefix:t.prefix,moduleUrl:t.moduleUrl,constConstructor:t.constConstructor})},e.prototype.toJson=function(){return{"class":"Identifier",name:this.name,moduleUrl:this.moduleUrl,prefix:this.prefix,constConstructor:this.constConstructor}},Object.defineProperty(e.prototype,"identifier",{get:function(){return this},enumerable:!0,configurable:!0}),e}();t.CompileIdentifierMetadata=w;var P=function(){function e(e){var t=void 0===e?{}:e,r=t.isAttribute,n=t.isSelf,i=t.isHost,o=t.isSkipSelf,a=t.isOptional,s=t.query,c=t.viewQuery,l=t.token;this.isAttribute=p.normalizeBool(r),this.isSelf=p.normalizeBool(n),this.isHost=p.normalizeBool(i),this.isSkipSelf=p.normalizeBool(o),this.isOptional=p.normalizeBool(a),this.query=s,this.viewQuery=c,this.token=l}return e.fromJson=function(t){return new e({token:a(t.token,w.fromJson),query:a(t.query,x.fromJson),viewQuery:a(t.viewQuery,x.fromJson),isAttribute:t.isAttribute,isSelf:t.isSelf,isHost:t.isHost,isSkipSelf:t.isSkipSelf,isOptional:t.isOptional})},e.prototype.toJson=function(){return{token:s(this.token),query:s(this.query),viewQuery:s(this.viewQuery),isAttribute:this.isAttribute,isSelf:this.isSelf,isHost:this.isHost,isSkipSelf:this.isSkipSelf,isOptional:this.isOptional}},e}();t.CompileDiDependencyMetadata=P;var E=function(){function e(e){var t=e.token,r=e.useClass,n=e.useValue,i=e.useExisting,o=e.useFactory,a=e.deps,s=e.multi;this.token=t,this.useClass=r,this.useValue=n,this.useExisting=i,this.useFactory=o,this.deps=a,this.multi=s}return e.fromJson=function(t){return new e({token:a(t.token,w.fromJson),useClass:a(t.useClass,R.fromJson)})},e.prototype.toJson=function(){return{token:s(this.token),useClass:s(this.useClass)}},e}();t.CompileProviderMetadata=E;
var S=function(){function e(e){var t=e.runtime,r=e.name,n=e.moduleUrl,i=e.constConstructor,o=e.diDeps;this.runtime=t,this.name=r,this.moduleUrl=n,this.diDeps=o,this.constConstructor=i}return Object.defineProperty(e.prototype,"identifier",{get:function(){return this},enumerable:!0,configurable:!0}),e.prototype.toJson=function(){return null},e}();t.CompileFactoryMetadata=S;var R=function(){function e(e){var t=void 0===e?{}:e,r=t.runtime,n=t.name,i=t.moduleUrl,o=t.prefix,a=t.isHost,s=t.constConstructor,c=t.diDeps;this.runtime=r,this.name=n,this.moduleUrl=i,this.prefix=o,this.isHost=p.normalizeBool(a),this.constConstructor=s,this.diDeps=p.normalizeBlank(c)}return e.fromJson=function(t){return new e({name:t.name,moduleUrl:t.moduleUrl,prefix:t.prefix,isHost:t.isHost,constConstructor:t.constConstructor,diDeps:i(t.diDeps,P.fromJson)})},Object.defineProperty(e.prototype,"identifier",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"type",{get:function(){return this},enumerable:!0,configurable:!0}),e.prototype.toJson=function(){return{"class":"Type",name:this.name,moduleUrl:this.moduleUrl,prefix:this.prefix,isHost:this.isHost,constConstructor:this.constConstructor,diDeps:o(this.diDeps)}},e}();t.CompileTypeMetadata=R;var x=function(){function e(e){var t=void 0===e?{}:e,r=t.selectors,n=t.descendants,i=t.first,o=t.propertyName;this.selectors=r,this.descendants=n,this.first=p.normalizeBool(i),this.propertyName=o}return e.fromJson=function(t){return new e({selectors:i(t.selectors,w.fromJson),descendants:t.descendants,first:t.first,propertyName:t.propertyName})},e.prototype.toJson=function(){return{selectors:o(this.selectors),descendants:this.descendants,first:this.first,propertyName:this.propertyName}},e}();t.CompileQueryMetadata=x;var O=function(){function e(e){var t=void 0===e?{}:e,r=t.encapsulation,n=t.template,i=t.templateUrl,o=t.styles,a=t.styleUrls,s=t.ngContentSelectors;this.encapsulation=p.isPresent(r)?r:g.ViewEncapsulation.Emulated,this.template=n,this.templateUrl=i,this.styles=p.isPresent(o)?o:[],this.styleUrls=p.isPresent(a)?a:[],this.ngContentSelectors=p.isPresent(s)?s:[]}return e.fromJson=function(t){return new e({encapsulation:p.isPresent(t.encapsulation)?g.VIEW_ENCAPSULATION_VALUES[t.encapsulation]:t.encapsulation,template:t.template,templateUrl:t.templateUrl,styles:t.styles,styleUrls:t.styleUrls,ngContentSelectors:t.ngContentSelectors})},e.prototype.toJson=function(){return{encapsulation:p.isPresent(this.encapsulation)?p.serializeEnum(this.encapsulation):this.encapsulation,template:this.template,templateUrl:this.templateUrl,styles:this.styles,styleUrls:this.styleUrls,ngContentSelectors:this.ngContentSelectors}},e}();t.CompileTemplateMetadata=O;var D=function(){function e(e){var t=void 0===e?{}:e,r=t.type,n=t.isComponent,i=t.dynamicLoadable,o=t.selector,a=t.exportAs,s=t.changeDetection,c=t.inputs,l=t.outputs,u=t.hostListeners,d=t.hostProperties,f=t.hostAttributes,h=t.lifecycleHooks,g=t.providers,m=t.viewProviders,v=t.queries,y=t.viewQueries,_=t.template;this.type=r,this.isComponent=n,this.dynamicLoadable=i,this.selector=o,this.exportAs=a,this.changeDetection=s,this.inputs=c,this.outputs=l,this.hostListeners=u,this.hostProperties=d,this.hostAttributes=f,this.lifecycleHooks=h,this.providers=p.normalizeBlank(g),this.viewProviders=p.normalizeBlank(m),this.queries=v,this.viewQueries=y,this.template=_}return e.create=function(t){var r=void 0===t?{}:t,n=r.type,i=r.isComponent,o=r.dynamicLoadable,a=r.selector,s=r.exportAs,c=r.changeDetection,l=r.inputs,u=r.outputs,d=r.host,h=r.lifecycleHooks,g=r.providers,m=r.viewProviders,y=r.queries,b=r.viewQueries,C=r.template,w={},P={},E={};p.isPresent(d)&&f.StringMapWrapper.forEach(d,function(e,t){var r=p.RegExpWrapper.firstMatch(_,t);p.isBlank(r)?E[t]=e:p.isPresent(r[1])?P[r[1]]=e:p.isPresent(r[2])&&(w[r[2]]=e)});var S={};p.isPresent(l)&&l.forEach(function(e){var t=v.splitAtColon(e,[e,e]);S[t[0]]=t[1]});var R={};return p.isPresent(u)&&u.forEach(function(e){var t=v.splitAtColon(e,[e,e]);R[t[0]]=t[1]}),new e({type:n,isComponent:p.normalizeBool(i),dynamicLoadable:p.normalizeBool(o),selector:a,exportAs:s,changeDetection:c,inputs:S,outputs:R,hostListeners:w,hostProperties:P,hostAttributes:E,lifecycleHooks:p.isPresent(h)?h:[],providers:g,viewProviders:m,queries:y,viewQueries:b,template:C})},Object.defineProperty(e.prototype,"identifier",{get:function(){return this.type},enumerable:!0,configurable:!0}),e.fromJson=function(t){return new e({isComponent:t.isComponent,dynamicLoadable:t.dynamicLoadable,selector:t.selector,exportAs:t.exportAs,type:p.isPresent(t.type)?R.fromJson(t.type):t.type,changeDetection:p.isPresent(t.changeDetection)?h.CHANGE_DETECTION_STRATEGY_VALUES[t.changeDetection]:t.changeDetection,inputs:t.inputs,outputs:t.outputs,hostListeners:t.hostListeners,hostProperties:t.hostProperties,hostAttributes:t.hostAttributes,lifecycleHooks:t.lifecycleHooks.map(function(e){return y.LIFECYCLE_HOOKS_VALUES[e]}),template:p.isPresent(t.template)?O.fromJson(t.template):t.template,providers:i(t.providers,E.fromJson)})},e.prototype.toJson=function(){return{"class":"Directive",isComponent:this.isComponent,dynamicLoadable:this.dynamicLoadable,selector:this.selector,exportAs:this.exportAs,type:p.isPresent(this.type)?this.type.toJson():this.type,changeDetection:p.isPresent(this.changeDetection)?p.serializeEnum(this.changeDetection):this.changeDetection,inputs:this.inputs,outputs:this.outputs,hostListeners:this.hostListeners,hostProperties:this.hostProperties,hostAttributes:this.hostAttributes,lifecycleHooks:this.lifecycleHooks.map(function(e){return p.serializeEnum(e)}),template:p.isPresent(this.template)?this.template.toJson():this.template,providers:o(this.providers)}},e}();t.CompileDirectiveMetadata=D,t.createHostComponentMeta=n;var A=function(){function e(e){var t=void 0===e?{}:e,r=t.type,n=t.name,i=t.pure;this.type=r,this.name=n,this.pure=p.normalizeBool(i)}return Object.defineProperty(e.prototype,"identifier",{get:function(){return this.type},enumerable:!0,configurable:!0}),e.fromJson=function(t){return new e({type:p.isPresent(t.type)?R.fromJson(t.type):t.type,name:t.name,pure:t.pure})},e.prototype.toJson=function(){return{"class":"Pipe",type:p.isPresent(this.type)?this.type.toJson():null,name:this.name,pure:this.pure}},e}();t.CompilePipeMetadata=A;var T={Directive:D.fromJson,Pipe:A.fromJson,Type:R.fromJson,Identifier:w.fromJson};return c.define=l,r.exports}),System.register("angular2/src/compiler/change_detector_compiler",["angular2/src/compiler/source_module","angular2/src/core/change_detection/change_detection_jit_generator","angular2/src/core/change_detection/abstract_change_detector","angular2/src/core/change_detection/change_detection_util","angular2/src/core/change_detection/constants","angular2/src/compiler/change_definition_factory","angular2/src/facade/lang","angular2/src/core/change_detection/change_detection","angular2/src/transform/template_compiler/change_detector_codegen","angular2/src/compiler/util","angular2/src/core/di"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/compiler/source_module"),c=e("angular2/src/core/change_detection/change_detection_jit_generator"),l=e("angular2/src/core/change_detection/abstract_change_detector"),u=e("angular2/src/core/change_detection/change_detection_util"),p=e("angular2/src/core/change_detection/constants"),d=e("angular2/src/compiler/change_definition_factory"),f=e("angular2/src/facade/lang"),h=e("angular2/src/core/change_detection/change_detection"),g=e("angular2/src/transform/template_compiler/change_detector_codegen"),m=e("angular2/src/compiler/util"),v=e("angular2/src/core/di"),y="AbstractChangeDetector",_="ChangeDetectionUtil",b="ChangeDetectorState";t.CHANGE_DETECTION_JIT_IMPORTS=f.CONST_EXPR({AbstractChangeDetector:l.AbstractChangeDetector,ChangeDetectionUtil:u.ChangeDetectionUtil,ChangeDetectorState:p.ChangeDetectorState});var C=s.moduleRef("package:angular2/src/core/change_detection/abstract_change_detector"+m.MODULE_SUFFIX),w=s.moduleRef("package:angular2/src/core/change_detection/change_detection_util"+m.MODULE_SUFFIX),P=s.moduleRef("package:angular2/src/core/change_detection/pregen_proto_change_detector"+m.MODULE_SUFFIX),E=s.moduleRef("package:angular2/src/core/change_detection/constants"+m.MODULE_SUFFIX),S=function(){function e(e){this._genConfig=e}return e.prototype.compileComponentRuntime=function(e,t,r){var n=this,i=d.createChangeDetectorDefinitions(e,t,this._genConfig,r);return i.map(function(e){return n._createChangeDetectorFactory(e)})},e.prototype._createChangeDetectorFactory=function(e){var t=new h.DynamicProtoChangeDetector(e);return function(){return t.instantiate()}},e.prototype.compileComponentCodeGen=function(e,t,r){var n=d.createChangeDetectorDefinitions(e,t,this._genConfig,r),i=[],o=0,a=n.map(function(t){var r,n;if(f.IS_DART){r=new g.Codegen(P);var a="_"+t.id,l=0===o&&e.isHost?"dynamic":""+s.moduleRef(e.moduleUrl)+e.name;r.generate(l,a,t),i.push(a+".newChangeDetector"),n=r.toString()}else r=new c.ChangeDetectorJITGenerator(t,""+w+_,""+C+y,""+E+b),i.push("function() { return new "+r.typeName+"(); }"),n=r.generateSource();return o++,n});return new s.SourceExpressions(a,i)},e=o([v.Injectable(),a("design:paramtypes",[h.ChangeDetectorGenConfig])],e)}();return t.ChangeDetectionCompiler=S,n.define=i,r.exports}),System.register("angular2/src/compiler/style_compiler",["angular2/src/compiler/source_module","angular2/src/core/metadata/view","angular2/src/compiler/xhr","angular2/src/facade/lang","angular2/src/facade/async","angular2/src/compiler/shadow_css","angular2/src/compiler/url_resolver","angular2/src/compiler/style_url_resolver","angular2/src/compiler/util","angular2/src/core/di"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},s=e("angular2/src/compiler/source_module"),c=e("angular2/src/core/metadata/view"),l=e("angular2/src/compiler/xhr"),u=e("angular2/src/facade/lang"),p=e("angular2/src/facade/async"),d=e("angular2/src/compiler/shadow_css"),f=e("angular2/src/compiler/url_resolver"),h=e("angular2/src/compiler/style_url_resolver"),g=e("angular2/src/compiler/util"),m=e("angular2/src/core/di"),v="%COMP%",y="_nghost-"+v,_="_ngcontent-"+v,b=function(){function e(e,t){this._xhr=e,this._urlResolver=t,this._styleCache=new Map,this._shadowCss=new d.ShadowCss}return e.prototype.compileComponentRuntime=function(e){var t=e.styles,r=e.styleUrls;return this._loadStyles(t,r,e.encapsulation===c.ViewEncapsulation.Emulated)},e.prototype.compileComponentCodeGen=function(e){var t=e.encapsulation===c.ViewEncapsulation.Emulated;return this._styleCodeGen(e.styles,e.styleUrls,t)},e.prototype.compileStylesheetCodeGen=function(e,t){var r=h.extractStyleUrls(this._urlResolver,e,t);return[this._styleModule(e,!1,this._styleCodeGen([r.style],r.styleUrls,!1)),this._styleModule(e,!0,this._styleCodeGen([r.style],r.styleUrls,!0))]},e.prototype.clearCache=function(){this._styleCache.clear()},e.prototype._loadStyles=function(e,t,r){var n=this,i=t.map(function(e){var t=""+e+(r?".shim":""),i=n._styleCache.get(t);return u.isBlank(i)&&(i=n._xhr.get(e).then(function(t){var i=h.extractStyleUrls(n._urlResolver,e,t);return n._loadStyles([i.style],i.styleUrls,r)}),n._styleCache.set(t,i)),i});return p.PromiseWrapper.all(i).then(function(t){var i=e.map(function(e){return n._shimIfNeeded(e,r)});return t.forEach(function(e){return i.push(e)}),i})},e.prototype._styleCodeGen=function(e,t,r){for(var n=this,i=u.IS_DART?"const":"",o=e.map(function(e){return g.escapeSingleQuoteString(n._shimIfNeeded(e,r))}),a=0;a<t.length;a++){var c=this._createModuleUrl(t[a],r);o.push(s.moduleRef(c)+"STYLES")}var l=i+" ["+o.join(",")+"]";return new s.SourceExpression([],l)},e.prototype._styleModule=function(e,t,r){var n="\n      "+r.declarations.join("\n")+"\n      "+g.codeGenExportVariable("STYLES")+r.expression+";\n    ";return new s.SourceModule(this._createModuleUrl(e,t),n)},e.prototype._shimIfNeeded=function(e,t){return t?this._shadowCss.shimCssText(e,_,y):e},e.prototype._createModuleUrl=function(e,t){return t?e+".shim"+g.MODULE_SUFFIX:""+e+g.MODULE_SUFFIX},e=o([m.Injectable(),a("design:paramtypes",[l.XHR,f.UrlResolver])],e)}();return t.StyleCompiler=b,n.define=i,r.exports}),System.register("angular2/src/compiler/view_compiler",["angular2/src/facade/lang","angular2/src/facade/collection","angular2/src/compiler/template_ast","angular2/src/compiler/source_module","angular2/src/core/linker/view","angular2/src/core/linker/view_type","angular2/src/core/linker/element","angular2/src/core/metadata/view","angular2/src/compiler/util","angular2/src/core/di","angular2/src/compiler/proto_view_compiler"],!0,function(e,t,r){function n(e,t,r){return y.codeGenValueFn(["event"],e.expression+".triggerEventHandlers("+y.escapeValue(r)+", event, "+t+")")}function i(e,t){return"viewFactory_"+e.type.name+t}function o(e){return u.IS_DART?""+b.METADATA_MODULE_REF+e:""+e}var a=System.global,s=a.define;a.define=void 0;var c=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},l=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},u=e("angular2/src/facade/lang"),p=e("angular2/src/facade/collection"),d=e("angular2/src/compiler/template_ast"),f=e("angular2/src/compiler/source_module"),h=e("angular2/src/core/linker/view"),g=e("angular2/src/core/linker/view_type"),m=e("angular2/src/core/linker/element"),v=e("angular2/src/core/metadata/view"),y=e("angular2/src/compiler/util"),_=e("angular2/src/core/di"),b=e("angular2/src/compiler/proto_view_compiler");t.VIEW_JIT_IMPORTS=u.CONST_EXPR({AppView:h.AppView,AppElement:m.AppElement,flattenNestedViewRenderNodes:h.flattenNestedViewRenderNodes,checkSlotCount:h.checkSlotCount});var C=function(){function e(){}return e.prototype.compileComponentRuntime=function(e,t,r,n,i,o){var a=new P(e,r,n,i,o);return a.createViewFactory(t,0,[])},e.prototype.compileComponentCodeGen=function(e,t,r,n,i,o){var a=new w(e,r,n,i,o),s=[],c=a.createViewFactory(t,0,s);return new f.SourceExpression(s.map(function(e){return e.statement}),c.expression)},e=c([_.Injectable(),l("design:paramtypes",[])],e)}();t.ViewCompiler=C;var w=function(){function e(e,t,r,n,i){this.component=e,this.styles=t,this.protoViews=r,this.changeDetectorExpressions=n,this.componentViewFactory=i,this._nextVarId=0}return e.prototype._nextVar=function(e){return""+e+this._nextVarId++ +"_"+this.component.type.name},e.prototype._nextRenderVar=function(){return this._nextVar("render")},e.prototype._nextAppVar=function(){return this._nextVar("app")},e.prototype._nextDisposableVar=function(){return"disposable"+this._nextVarId++ +"_"+this.component.type.name},e.prototype.createText=function(e,t,r,n){var i=this._nextRenderVar(),o="var "+i+" = "+e.expression+".createText("+(u.isPresent(t)?t.expression:null)+", "+y.escapeSingleQuoteString(r)+");";return n.push(new y.Statement(o)),new y.Expression(i)},e.prototype.createElement=function(e,t,r,n,i){var o,a=this._nextRenderVar();o=u.isPresent(n)?n.expression+" == null ?\n        "+e.expression+".createElement("+(u.isPresent(t)?t.expression:null)+", "+y.escapeSingleQuoteString(r)+") :\n        "+e.expression+".selectRootElement("+n.expression+");":e.expression+".createElement("+(u.isPresent(t)?t.expression:null)+", "+y.escapeSingleQuoteString(r)+")";var s="var "+a+" = "+o+";";return i.push(new y.Statement(s)),new y.Expression(a)},e.prototype.createTemplateAnchor=function(e,t,r){var n=this._nextRenderVar(),i=e.expression+".createTemplateAnchor("+(u.isPresent(t)?t.expression:null)+");";return r.push(new y.Statement("var "+n+" = "+i)),new y.Expression(n)},e.prototype.createGlobalEventListener=function(e,t,r,i,o){var a=this._nextDisposableVar(),s=n(t,r,i.fullName);return o.push(new y.Statement("var "+a+" = "+e.expression+".listenGlobal("+y.escapeValue(i.target)+", "+y.escapeValue(i.name)+", "+s+");")),new y.Expression(a)},e.prototype.createElementEventListener=function(e,t,r,i,o,a){var s=this._nextDisposableVar(),c=n(t,r,o.fullName);return a.push(new y.Statement("var "+s+" = "+e.expression+".listen("+i.expression+", "+y.escapeValue(o.name)+", "+c+");")),new y.Expression(s)},e.prototype.setElementAttribute=function(e,t,r,n,i){i.push(new y.Statement(e.expression+".setElementAttribute("+t.expression+", "+y.escapeSingleQuoteString(r)+", "+y.escapeSingleQuoteString(n)+");"))},e.prototype.createAppElement=function(e,t,r,n,i,o){var a=this._nextAppVar(),s="new "+b.APP_EL_MODULE_REF+"AppElement("+e.expression+", "+t.expression+",\n      "+(u.isPresent(n)?n.expression:null)+", "+r.expression+", "+(u.isPresent(i)?i.expression:null)+")";return o.push(new y.Statement("var "+a+" = "+s+";")),new y.Expression(a)},e.prototype.createAndSetComponentView=function(e,t,r,n,i,o,a){var s;s=this.component.type.isHost?r.expression+".projectableNodes":"["+o.map(function(e){return y.codeGenFlatArray(e)}).join(",")+"]",a.push(new y.Statement(this.componentViewFactory(i)+"("+e.expression+", "+t.expression+", "+n.expression+", "+s+", null, null, null);"))},e.prototype.getProjectedNodes=function(e,t){return new y.Expression(e.expression+"["+t+"]",!0)},e.prototype.appendProjectedNodes=function(e,t,r,n){n.push(new y.Statement(e.expression+".projectNodes("+t.expression+", "+b.APP_VIEW_MODULE_REF+"flattenNestedViewRenderNodes("+r.expression+"));"))},e.prototype.createViewFactory=function(e,t,r){var n=this.protoViews[t],a=this.component.type.isHost,s=0===t&&!a,c=new S(new y.Expression("renderer"),new y.Expression("viewManager"),new y.Expression("projectableNodes"),a?new y.Expression("rootSelector"):null,new y.Expression("view"),n,r,this);d.templateVisitAll(c,e,new E(s?new y.Expression("parentRenderNode"):null,null,null));var l=n.protoView.expression,u=i(this.component,t),p=this.changeDetectorExpressions.expressions[t],f=["parentRenderer","viewManager","containerEl","projectableNodes","rootSelector","dynamicallyCreatedProviders","rootInjector"],h=[],g="parentRenderer";if(0===t){var m=this._nextVar("renderType");r.push(new y.Statement("var "+m+" = null;"));var v=this._nextVar("styles");r.push(new y.Statement(y.CONST_VAR+" "+v+" = "+this.styles.expression+";"));var _=this.component.template.encapsulation;h.push("if ("+m+" == null) {\n        "+m+" = viewManager.createRenderComponentType("+o(_)+", "+v+");\n      }"),g="parentRenderer.renderComponent("+m+")"}var C="\n"+y.codeGenFnHeader(f,u)+"{\n  "+h.join("\n")+"\n  var renderer = "+g+";\n  var view = new "+b.APP_VIEW_MODULE_REF+"AppView(\n    "+l+", renderer, viewManager,\n    projectableNodes,\n    containerEl,\n    dynamicallyCreatedProviders, rootInjector,\n    "+p+"()\n  );\n  "+b.APP_VIEW_MODULE_REF+"checkSlotCount("+y.escapeValue(this.component.type.name)+", "+this.component.template.ngContentSelectors.length+", projectableNodes);\n  "+(s?"var parentRenderNode = renderer.createViewRoot(view.containerAppElement.nativeElement);":"")+"\n  "+c.renderStmts.map(function(e){return e.statement}).join("\n")+"\n  "+c.appStmts.map(function(e){return e.statement}).join("\n")+"\n\n  view.init("+y.codeGenFlatArray(c.rootNodesOrAppElements)+", "+y.codeGenArray(c.renderNodes)+", "+y.codeGenArray(c.appDisposables)+",\n            "+y.codeGenArray(c.appElements)+");\n  return view;\n}";return r.push(new y.Statement(C)),new y.Expression(u)},e}(),P=function(){function e(e,t,r,n,i){this.component=e,this.styles=t,this.protoViews=r,this.changeDetectorFactories=n,this.componentViewFactory=i}return e.prototype.createText=function(e,t,r,n){return e.createText(t,r)},e.prototype.createElement=function(e,t,r,n,i){var o;return o=u.isPresent(n)?e.selectRootElement(n):e.createElement(t,r)},e.prototype.createTemplateAnchor=function(e,t,r){return e.createTemplateAnchor(t)},e.prototype.createGlobalEventListener=function(e,t,r,n,i){return e.listenGlobal(n.target,n.name,function(e){return t.triggerEventHandlers(n.fullName,e,r)})},e.prototype.createElementEventListener=function(e,t,r,n,i,o){return e.listen(n,i.name,function(e){return t.triggerEventHandlers(i.fullName,e,r)})},e.prototype.setElementAttribute=function(e,t,r,n,i){e.setElementAttribute(t,r,n)},e.prototype.createAppElement=function(e,t,r,n,i,o){return new m.AppElement(e,t,n,r,i)},e.prototype.createAndSetComponentView=function(e,t,r,n,i,o,a){var s;if(this.component.type.isHost)s=r.projectableNodes;else{s=p.ListWrapper.createFixedSize(o.length);for(var c=0;c<o.length;c++)s[c]=y.flattenArray(o[c],[])}this.componentViewFactory(i)(e,t,n,s)},e.prototype.getProjectedNodes=function(e,t){return e[t]},e.prototype.appendProjectedNodes=function(e,t,r,n){e.projectNodes(t,h.flattenNestedViewRenderNodes(r))},e.prototype.createViewFactory=function(e,t,r){var n=this,i=this.protoViews[t],o=i.protoView.type===g.ViewType.COMPONENT,a=null;return function(r,s,c,l,p,f,g){void 0===p&&(p=null),void 0===f&&(f=null),void 0===g&&(g=null),h.checkSlotCount(n.component.type.name,n.component.template.ngContentSelectors.length,l);var m;0===t?(u.isBlank(a)&&(a=s.createRenderComponentType(n.component.template.encapsulation,n.styles)),m=r.renderComponent(a)):m=r;var v=n.changeDetectorFactories[t](),_=new h.AppView(i.protoView,m,s,l,c,f,g,v),b=new S(m,s,l,p,_,i,[],n),C=o?m.createViewRoot(c.nativeElement):null;return d.templateVisitAll(b,e,new E(C,null,null)),_.init(y.flattenArray(b.rootNodesOrAppElements,[]),b.renderNodes,b.appDisposables,b.appElements),_}},e}(),E=function(){function e(e,t,r){if(this.renderNode=e,this.appEl=t,this.component=r,u.isPresent(r)){this.contentNodesByNgContentIndex=p.ListWrapper.createFixedSize(r.template.ngContentSelectors.length);for(var n=0;n<this.contentNodesByNgContentIndex.length;n++)this.contentNodesByNgContentIndex[n]=[]}else this.contentNodesByNgContentIndex=null}return e.prototype.addContentNode=function(e,t){this.contentNodesByNgContentIndex[e].push(t)},e}(),S=function(){function e(e,t,r,n,i,o,a,s){this.renderer=e,this.viewManager=t,this.projectableNodes=r,this.rootSelector=n,this.view=i,this.protoView=o,this.targetStatements=a,this.factory=s,this.renderStmts=[],this.renderNodes=[],this.appStmts=[],this.appElements=[],this.appDisposables=[],this.rootNodesOrAppElements=[],this.elementCount=0}return e.prototype._addRenderNode=function(e,t,r,n){this.renderNodes.push(e),u.isPresent(n.component)?u.isPresent(r)&&n.addContentNode(r,u.isPresent(t)?t:e):u.isBlank(n.renderNode)&&this.rootNodesOrAppElements.push(u.isPresent(t)?t:e)},e.prototype._getParentRenderNode=function(e,t){return u.isPresent(t.component)&&t.component.template.encapsulation!==v.ViewEncapsulation.Native?null:t.renderNode},e.prototype.visitBoundText=function(e,t){return this._visitText("",e.ngContentIndex,t)},e.prototype.visitText=function(e,t){return this._visitText(e.value,e.ngContentIndex,t)},e.prototype._visitText=function(e,t,r){var n=this.factory.createText(this.renderer,this._getParentRenderNode(t,r),e,this.renderStmts);return this._addRenderNode(n,null,t,r),null},e.prototype.visitNgContent=function(e,t){var r=this.factory.getProjectedNodes(this.projectableNodes,e.index);return u.isPresent(t.component)?u.isPresent(e.ngContentIndex)&&t.addContentNode(e.ngContentIndex,r):u.isPresent(t.renderNode)?this.factory.appendProjectedNodes(this.renderer,t.renderNode,r,this.renderStmts):this.rootNodesOrAppElements.push(r),null},e.prototype.visitElement=function(e,t){var r=this,n=this.factory.createElement(this.renderer,this._getParentRenderNode(e.ngContentIndex,t),e.name,this.rootSelector,this.renderStmts),i=e.getComponent(),o=this.elementCount++,a=this.protoView.protoElements[o];a.renderEvents.forEach(function(e){var t;t=u.isPresent(e.target)?r.factory.createGlobalEventListener(r.renderer,r.view,a.boundElementIndex,e,r.renderStmts):r.factory.createElementEventListener(r.renderer,r.view,a.boundElementIndex,n,e,r.renderStmts),r.appDisposables.push(t)});for(var s=0;s<a.attrNameAndValues.length;s++){var c=a.attrNameAndValues[s][0],l=a.attrNameAndValues[s][1];this.factory.setElementAttribute(this.renderer,n,c,l,this.renderStmts)}var p=null;u.isPresent(a.appProtoEl)&&(p=this.factory.createAppElement(a.appProtoEl,this.view,n,t.appEl,null,this.appStmts),this.appElements.push(p)),this._addRenderNode(n,p,e.ngContentIndex,t);var f=new E(n,u.isPresent(p)?p:t.appEl,i);return d.templateVisitAll(this,e.children,f),u.isPresent(p)&&u.isPresent(i)&&this.factory.createAndSetComponentView(this.renderer,this.viewManager,this.view,p,i,f.contentNodesByNgContentIndex,this.appStmts),null},e.prototype.visitEmbeddedTemplate=function(e,t){var r=this.factory.createTemplateAnchor(this.renderer,this._getParentRenderNode(e.ngContentIndex,t),this.renderStmts),n=this.elementCount++,i=this.protoView.protoElements[n],o=this.factory.createViewFactory(e.children,i.embeddedTemplateIndex,this.targetStatements),a=this.factory.createAppElement(i.appProtoEl,this.view,r,t.appEl,o,this.appStmts);return this._addRenderNode(r,a,e.ngContentIndex,t),this.appElements.push(a),null},e.prototype.visitVariable=function(e,t){return null},e.prototype.visitAttr=function(e,t){return null},e.prototype.visitDirective=function(e,t){return null},e.prototype.visitEvent=function(e,t){return null},e.prototype.visitDirectiveProperty=function(e,t){return null},e.prototype.visitElementProperty=function(e,t){return null},e}();return a.define=s,r.exports}),System.register("angular2/src/compiler/html_lexer",["angular2/src/facade/lang","angular2/src/facade/collection","angular2/src/compiler/parse_util","angular2/src/compiler/html_tags"],!0,function(e,t,r){function n(e,t){return new se(new P.ParseSourceFile(e,t)).tokenize()}function i(e){var t=e===D?"EOF":C.StringWrapper.fromCharCode(e);return'Unexpected character "'+t+'"'}function o(e){return'Unknown entity "'+e+'" - use the "&#<decimal>;" or  "&#x<hex>;" syntax'}function a(e){return!s(e)||e===D}function s(e){return e>=A&&k>=e||e===ie}function c(e){return s(e)||e===z||e===F||e===B||e===V||e===K}function l(e){return(ee>e||e>re)&&(X>e||e>Y)&&(W>e||e>H)}function u(e){return e==U||e==D||!h(e)}function p(e){return e==U||e==D||!f(e)}function d(e){return e===G||e===D}function f(e){return e>=ee&&re>=e||e>=X&&Y>=e}function h(e){return e>=ee&&te>=e||e>=X&&Z>=e||e>=W&&H>=e}function g(e,t){return m(e)==m(t)}function m(e){return e>=ee&&re>=e?e-ee+X:e}function v(e){for(var t,r=[],n=0;n<e.length;n++){var i=e[n];C.isPresent(t)&&t.type==S.TEXT&&i.type==S.TEXT?(t.parts[0]+=i.parts[0],t.sourceSpan.end=i.sourceSpan.end):(t=i,r.push(t))}return r}var y=System.global,_=y.define;y.define=void 0;var b=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},C=e("angular2/src/facade/lang"),w=e("angular2/src/facade/collection"),P=e("angular2/src/compiler/parse_util"),E=e("angular2/src/compiler/html_tags");!function(e){e[e.TAG_OPEN_START=0]="TAG_OPEN_START",e[e.TAG_OPEN_END=1]="TAG_OPEN_END",e[e.TAG_OPEN_END_VOID=2]="TAG_OPEN_END_VOID",e[e.TAG_CLOSE=3]="TAG_CLOSE",e[e.TEXT=4]="TEXT",e[e.ESCAPABLE_RAW_TEXT=5]="ESCAPABLE_RAW_TEXT",e[e.RAW_TEXT=6]="RAW_TEXT",e[e.COMMENT_START=7]="COMMENT_START",e[e.COMMENT_END=8]="COMMENT_END",e[e.CDATA_START=9]="CDATA_START",e[e.CDATA_END=10]="CDATA_END",e[e.ATTR_NAME=11]="ATTR_NAME",e[e.ATTR_VALUE=12]="ATTR_VALUE",e[e.DOC_TYPE=13]="DOC_TYPE",e[e.EOF=14]="EOF"}(t.HtmlTokenType||(t.HtmlTokenType={}));var S=t.HtmlTokenType,R=function(){function e(e,t,r){this.type=e,this.parts=t,this.sourceSpan=r}return e}();t.HtmlToken=R;var x=function(e){function t(t,r,n){e.call(this,n,t),this.tokenType=r}return b(t,e),t}(P.ParseError);t.HtmlTokenError=x;var O=function(){function e(e,t){this.tokens=e,this.errors=t}return e}();t.HtmlTokenizeResult=O,t.tokenizeHtml=n;var D=0,A=9,T=10,I=13,k=32,N=33,V=34,M=35,j=38,B=39,L=45,F=47,W=48,U=59,H=57,q=58,G=60,K=61,z=62,Q=91,$=93,X=65,Z=70,J=88,Y=90,ee=97,te=102,re=122,ne=120,ie=160,oe=/\r\n?/g,ae=function(){function e(e){this.error=e}return e}(),se=function(){function e(e){this.file=e,this.peek=-1,this.index=-1,this.line=0,this.column=-1,this.tokens=[],this.errors=[],this.input=e.content,this.length=e.content.length,this._advance()}return e.prototype._processCarriageReturns=function(e){return C.StringWrapper.replaceAll(e,oe,"\n")},e.prototype.tokenize=function(){for(;this.peek!==D;){var e=this._getLocation();try{this._attemptCharCode(G)?this._attemptCharCode(N)?this._attemptCharCode(Q)?this._consumeCdata(e):this._attemptCharCode(L)?this._consumeComment(e):this._consumeDocType(e):this._attemptCharCode(F)?this._consumeTagClose(e):this._consumeTagOpen(e):this._consumeText()}catch(t){if(!(t instanceof ae))throw t;this.errors.push(t.error)}}return this._beginToken(S.EOF),this._endToken([]),new O(v(this.tokens),this.errors)},e.prototype._getLocation=function(){return new P.ParseLocation(this.file,this.index,this.line,this.column)},e.prototype._getSpan=function(e,t){return C.isBlank(e)&&(e=this._getLocation()),C.isBlank(t)&&(t=this._getLocation()),new P.ParseSourceSpan(e,t)},e.prototype._beginToken=function(e,t){void 0===t&&(t=null),C.isBlank(t)&&(t=this._getLocation()),this.currentTokenStart=t,this.currentTokenType=e},e.prototype._endToken=function(e,t){void 0===t&&(t=null),C.isBlank(t)&&(t=this._getLocation());var r=new R(this.currentTokenType,e,new P.ParseSourceSpan(this.currentTokenStart,t));return this.tokens.push(r),this.currentTokenStart=null,this.currentTokenType=null,r},e.prototype._createError=function(e,t){var r=new x(e,this.currentTokenType,t);return this.currentTokenStart=null,this.currentTokenType=null,new ae(r)},e.prototype._advance=function(){if(this.index>=this.length)throw this._createError(i(D),this._getSpan());this.peek===T?(this.line++,this.column=0):this.peek!==T&&this.peek!==I&&this.column++,this.index++,this.peek=this.index>=this.length?D:C.StringWrapper.charCodeAt(this.input,this.index)},e.prototype._attemptCharCode=function(e){return this.peek===e?(this._advance(),!0):!1},e.prototype._attemptCharCodeCaseInsensitive=function(e){return g(this.peek,e)?(this._advance(),!0):!1},e.prototype._requireCharCode=function(e){var t=this._getLocation();if(!this._attemptCharCode(e))throw this._createError(i(this.peek),this._getSpan(t,t))},e.prototype._attemptStr=function(e){for(var t=0;t<e.length;t++)if(!this._attemptCharCode(C.StringWrapper.charCodeAt(e,t)))return!1;return!0},e.prototype._attemptStrCaseInsensitive=function(e){for(var t=0;t<e.length;t++)if(!this._attemptCharCodeCaseInsensitive(C.StringWrapper.charCodeAt(e,t)))return!1;return!0},e.prototype._requireStr=function(e){var t=this._getLocation();if(!this._attemptStr(e))throw this._createError(i(this.peek),this._getSpan(t))},e.prototype._attemptCharCodeUntilFn=function(e){for(;!e(this.peek);)this._advance()},e.prototype._requireCharCodeUntilFn=function(e,t){
var r=this._getLocation();if(this._attemptCharCodeUntilFn(e),this.index-r.offset<t)throw this._createError(i(this.peek),this._getSpan(r,r))},e.prototype._attemptUntilChar=function(e){for(;this.peek!==e;)this._advance()},e.prototype._readChar=function(e){if(e&&this.peek===j)return this._decodeEntity();var t=this.index;return this._advance(),this.input[t]},e.prototype._decodeEntity=function(){var e=this._getLocation();if(this._advance(),!this._attemptCharCode(M)){var t=this._savePosition();if(this._attemptCharCodeUntilFn(p),this.peek!=U)return this._restorePosition(t),"&";this._advance();var r=this.input.substring(e.offset+1,this.index-1),n=E.NAMED_ENTITIES[r];if(C.isBlank(n))throw this._createError(o(r),this._getSpan(e));return n}var a=this._attemptCharCode(ne)||this._attemptCharCode(J),s=this._getLocation().offset;if(this._attemptCharCodeUntilFn(u),this.peek!=U)throw this._createError(i(this.peek),this._getSpan());this._advance();var c=this.input.substring(s,this.index-1);try{var l=C.NumberWrapper.parseInt(c,a?16:10);return C.StringWrapper.fromCharCode(l)}catch(d){var f=this.input.substring(e.offset+1,this.index-1);throw this._createError(o(f),this._getSpan(e))}},e.prototype._consumeRawText=function(e,t,r){var n,i=this._getLocation();this._beginToken(e?S.ESCAPABLE_RAW_TEXT:S.RAW_TEXT,i);for(var o=[];n=this._getLocation(),!this._attemptCharCode(t)||!r();)for(this.index>n.offset&&o.push(this.input.substring(n.offset,this.index));this.peek!==t;)o.push(this._readChar(e));return this._endToken([this._processCarriageReturns(o.join(""))],n)},e.prototype._consumeComment=function(e){var t=this;this._beginToken(S.COMMENT_START,e),this._requireCharCode(L),this._endToken([]);var r=this._consumeRawText(!1,L,function(){return t._attemptStr("->")});this._beginToken(S.COMMENT_END,r.sourceSpan.end),this._endToken([])},e.prototype._consumeCdata=function(e){var t=this;this._beginToken(S.CDATA_START,e),this._requireStr("CDATA["),this._endToken([]);var r=this._consumeRawText(!1,$,function(){return t._attemptStr("]>")});this._beginToken(S.CDATA_END,r.sourceSpan.end),this._endToken([])},e.prototype._consumeDocType=function(e){this._beginToken(S.DOC_TYPE,e),this._attemptUntilChar(z),this._advance(),this._endToken([this.input.substring(e.offset+2,this.index-1)])},e.prototype._consumePrefixAndName=function(){for(var e=this.index,t=null;this.peek!==q&&!l(this.peek);)this._advance();var r;this.peek===q?(this._advance(),t=this.input.substring(e,this.index-1),r=this.index):r=e,this._requireCharCodeUntilFn(c,this.index===r?1:0);var n=this.input.substring(r,this.index);return[t,n]},e.prototype._consumeTagOpen=function(e){var t,r=this._savePosition();try{if(!f(this.peek))throw this._createError(i(this.peek),this._getSpan());var n=this.index;for(this._consumeTagOpenStart(e),t=this.input.substring(n,this.index).toLowerCase(),this._attemptCharCodeUntilFn(a);this.peek!==F&&this.peek!==z;)this._consumeAttributeName(),this._attemptCharCodeUntilFn(a),this._attemptCharCode(K)&&(this._attemptCharCodeUntilFn(a),this._consumeAttributeValue()),this._attemptCharCodeUntilFn(a);this._consumeTagOpenEnd()}catch(o){if(o instanceof ae)return this._restorePosition(r),this._beginToken(S.TEXT,e),void this._endToken(["<"]);throw o}var s=E.getHtmlTagDefinition(t).contentType;s===E.HtmlTagContentType.RAW_TEXT?this._consumeRawTextWithTagClose(t,!1):s===E.HtmlTagContentType.ESCAPABLE_RAW_TEXT&&this._consumeRawTextWithTagClose(t,!0)},e.prototype._consumeRawTextWithTagClose=function(e,t){var r=this,n=this._consumeRawText(t,G,function(){return r._attemptCharCode(F)?(r._attemptCharCodeUntilFn(a),r._attemptStrCaseInsensitive(e)?(r._attemptCharCodeUntilFn(a),r._attemptCharCode(z)?!0:!1):!1):!1});this._beginToken(S.TAG_CLOSE,n.sourceSpan.end),this._endToken([null,e])},e.prototype._consumeTagOpenStart=function(e){this._beginToken(S.TAG_OPEN_START,e);var t=this._consumePrefixAndName();this._endToken(t)},e.prototype._consumeAttributeName=function(){this._beginToken(S.ATTR_NAME);var e=this._consumePrefixAndName();this._endToken(e)},e.prototype._consumeAttributeValue=function(){this._beginToken(S.ATTR_VALUE);var e;if(this.peek===B||this.peek===V){var t=this.peek;this._advance();for(var r=[];this.peek!==t;)r.push(this._readChar(!0));e=r.join(""),this._advance()}else{var n=this.index;this._requireCharCodeUntilFn(c,1),e=this.input.substring(n,this.index)}this._endToken([this._processCarriageReturns(e)])},e.prototype._consumeTagOpenEnd=function(){var e=this._attemptCharCode(F)?S.TAG_OPEN_END_VOID:S.TAG_OPEN_END;this._beginToken(e),this._requireCharCode(z),this._endToken([])},e.prototype._consumeTagClose=function(e){this._beginToken(S.TAG_CLOSE,e),this._attemptCharCodeUntilFn(a);var t;t=this._consumePrefixAndName(),this._attemptCharCodeUntilFn(a),this._requireCharCode(z),this._endToken(t)},e.prototype._consumeText=function(){var e=this._getLocation();this._beginToken(S.TEXT,e);for(var t=[this._readChar(!0)];!d(this.peek);)t.push(this._readChar(!0));this._endToken([this._processCarriageReturns(t.join(""))])},e.prototype._savePosition=function(){return[this.peek,this.index,this.column,this.line,this.tokens.length]},e.prototype._restorePosition=function(e){this.peek=e[0],this.index=e[1],this.column=e[2],this.line=e[3];var t=e[4];t<this.tokens.length&&(this.tokens=w.ListWrapper.slice(this.tokens,0,t))},e}();return y.define=_,r.exports}),System.register("angular2/src/compiler/runtime_metadata",["angular2/src/core/di","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/compiler/directive_metadata","angular2/src/core/metadata/directives","angular2/src/core/linker/directive_resolver","angular2/src/core/linker/pipe_resolver","angular2/src/core/linker/view_resolver","angular2/src/core/linker/directive_lifecycle_reflector","angular2/src/core/linker/interfaces","angular2/src/core/reflection/reflection","angular2/src/core/di","angular2/src/core/platform_directives_and_pipes","angular2/src/compiler/util","angular2/src/compiler/url_resolver"],!0,function(e,t,r){function n(e,t){var r=[];return h.isPresent(t)&&o(t,r),h.isPresent(e.directives)&&o(e.directives,r),r}function i(e,t){var r=[];return h.isPresent(t)&&o(t,r),h.isPresent(e.pipes)&&o(e.pipes,r),r}function o(e,t){for(var r=0;r<e.length;r++){var n=f.resolveForwardRef(e[r]);h.isArray(n)?o(n,t):t.push(n)}}function a(e){return h.isPresent(e)&&e instanceof h.Type}function s(e,t){var r=t.moduleId;if(h.isPresent(r)){var n=x.getUrlScheme(r);return h.isPresent(n)&&n.length>0?r:"package:"+r+R.MODULE_SUFFIX}return P.reflector.importUri(e)}var c=System.global,l=c.define;c.define=void 0;var u=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},p=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},d=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},f=e("angular2/src/core/di"),h=e("angular2/src/facade/lang"),g=e("angular2/src/facade/exceptions"),m=e("angular2/src/compiler/directive_metadata"),v=e("angular2/src/core/metadata/directives"),y=e("angular2/src/core/linker/directive_resolver"),_=e("angular2/src/core/linker/pipe_resolver"),b=e("angular2/src/core/linker/view_resolver"),C=e("angular2/src/core/linker/directive_lifecycle_reflector"),w=e("angular2/src/core/linker/interfaces"),P=e("angular2/src/core/reflection/reflection"),E=e("angular2/src/core/di"),S=e("angular2/src/core/platform_directives_and_pipes"),R=e("angular2/src/compiler/util"),x=e("angular2/src/compiler/url_resolver"),O=function(){function e(e,t,r,n,i){this._directiveResolver=e,this._pipeResolver=t,this._viewResolver=r,this._platformDirectives=n,this._platformPipes=i,this._directiveCache=new Map,this._pipeCache=new Map}return e.prototype.getDirectiveMetadata=function(e){var t=this._directiveCache.get(e);if(h.isBlank(t)){var r=this._directiveResolver.resolve(e),n=null,i=null,o=null;if(r instanceof v.ComponentMetadata){var a=r;n=s(e,a);var c=this._viewResolver.resolve(e);i=new m.CompileTemplateMetadata({encapsulation:c.encapsulation,template:c.template,templateUrl:c.templateUrl,styles:c.styles,styleUrls:c.styleUrls}),o=a.changeDetection}t=m.CompileDirectiveMetadata.create({selector:r.selector,exportAs:r.exportAs,isComponent:h.isPresent(i),dynamicLoadable:!0,type:new m.CompileTypeMetadata({name:h.stringify(e),moduleUrl:n,runtime:e}),template:i,changeDetection:o,inputs:r.inputs,outputs:r.outputs,host:r.host,lifecycleHooks:w.LIFECYCLE_HOOKS_VALUES.filter(function(t){return C.hasLifecycleHook(t,e)})}),this._directiveCache.set(e,t)}return t},e.prototype.getPipeMetadata=function(e){var t=this._pipeCache.get(e);if(h.isBlank(t)){var r=this._pipeResolver.resolve(e),n=P.reflector.importUri(e);t=new m.CompilePipeMetadata({type:new m.CompileTypeMetadata({name:h.stringify(e),moduleUrl:n,runtime:e}),name:r.name,pure:r.pure}),this._pipeCache.set(e,t)}return t},e.prototype.getViewDirectivesMetadata=function(e){for(var t=this,r=this._viewResolver.resolve(e),i=n(r,this._platformDirectives),o=0;o<i.length;o++)if(!a(i[o]))throw new g.BaseException("Unexpected directive value '"+h.stringify(i[o])+"' on the View of component '"+h.stringify(e)+"'");return i.map(function(e){return t.getDirectiveMetadata(e)})},e.prototype.getViewPipesMetadata=function(e){for(var t=this,r=this._viewResolver.resolve(e),n=i(r,this._platformPipes),o=0;o<n.length;o++)if(!a(n[o]))throw new g.BaseException("Unexpected piped value '"+h.stringify(n[o])+"' on the View of component '"+h.stringify(e)+"'");return n.map(function(e){return t.getPipeMetadata(e)})},e=u([E.Injectable(),d(3,E.Optional()),d(3,E.Inject(S.PLATFORM_DIRECTIVES)),d(4,E.Optional()),d(4,E.Inject(S.PLATFORM_PIPES)),p("design:paramtypes",[y.DirectiveResolver,_.PipeResolver,b.ViewResolver,Array,Array])],e)}();return t.RuntimeMetadataResolver=O,c.define=l,r.exports}),System.register("angular2/src/common/pipes",["angular2/src/common/pipes/async_pipe","angular2/src/common/pipes/date_pipe","angular2/src/common/pipes/json_pipe","angular2/src/common/pipes/slice_pipe","angular2/src/common/pipes/lowercase_pipe","angular2/src/common/pipes/number_pipe","angular2/src/common/pipes/uppercase_pipe","angular2/src/common/pipes/replace_pipe","angular2/src/common/pipes/i18n_plural_pipe","angular2/src/common/pipes/i18n_select_pipe","angular2/src/common/pipes/common_pipes"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/common/pipes/async_pipe");t.AsyncPipe=o.AsyncPipe;var a=e("angular2/src/common/pipes/date_pipe");t.DatePipe=a.DatePipe;var s=e("angular2/src/common/pipes/json_pipe");t.JsonPipe=s.JsonPipe;var c=e("angular2/src/common/pipes/slice_pipe");t.SlicePipe=c.SlicePipe;var l=e("angular2/src/common/pipes/lowercase_pipe");t.LowerCasePipe=l.LowerCasePipe;var u=e("angular2/src/common/pipes/number_pipe");t.NumberPipe=u.NumberPipe,t.DecimalPipe=u.DecimalPipe,t.PercentPipe=u.PercentPipe,t.CurrencyPipe=u.CurrencyPipe;var p=e("angular2/src/common/pipes/uppercase_pipe");t.UpperCasePipe=p.UpperCasePipe;var d=e("angular2/src/common/pipes/replace_pipe");t.ReplacePipe=d.ReplacePipe;var f=e("angular2/src/common/pipes/i18n_plural_pipe");t.I18nPluralPipe=f.I18nPluralPipe;var h=e("angular2/src/common/pipes/i18n_select_pipe");t.I18nSelectPipe=h.I18nSelectPipe;var g=e("angular2/src/common/pipes/common_pipes");return t.COMMON_PIPES=g.COMMON_PIPES,n.define=i,r.exports}),System.register("angular2/src/common/forms/directives/ng_control_name",["angular2/src/facade/lang","angular2/src/facade/async","angular2/core","angular2/src/common/forms/directives/control_container","angular2/src/common/forms/directives/ng_control","angular2/src/common/forms/directives/control_value_accessor","angular2/src/common/forms/directives/shared","angular2/src/common/forms/validators"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/async"),p=e("angular2/core"),d=e("angular2/src/common/forms/directives/control_container"),f=e("angular2/src/common/forms/directives/ng_control"),h=e("angular2/src/common/forms/directives/control_value_accessor"),g=e("angular2/src/common/forms/directives/shared"),m=e("angular2/src/common/forms/validators"),v=l.CONST_EXPR(new p.Provider(f.NgControl,{useExisting:p.forwardRef(function(){return y})})),y=function(e){function t(t,r,n,i){e.call(this),this._parent=t,this._validators=r,this._asyncValidators=n,this.update=new u.EventEmitter,this._added=!1,this.valueAccessor=g.selectValueAccessor(this,i)}return o(t,e),t.prototype.ngOnChanges=function(e){this._added||(this.formDirective.addControl(this),this._added=!0),g.isPropertyUpdated(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))},t.prototype.ngOnDestroy=function(){this.formDirective.removeControl(this)},t.prototype.viewToModelUpdate=function(e){this.viewModel=e,u.ObservableWrapper.callEmit(this.update,e)},Object.defineProperty(t.prototype,"path",{get:function(){return g.controlPath(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"formDirective",{get:function(){return this._parent.formDirective},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return g.composeValidators(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return g.composeAsyncValidators(this._asyncValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"control",{get:function(){return this.formDirective.getControl(this)},enumerable:!0,configurable:!0}),t=a([p.Directive({selector:"[ngControl]",bindings:[v],inputs:["name: ngControl","model: ngModel"],outputs:["update: ngModelChange"],exportAs:"ngForm"}),c(0,p.Host()),c(0,p.SkipSelf()),c(1,p.Optional()),c(1,p.Self()),c(1,p.Inject(m.NG_VALIDATORS)),c(2,p.Optional()),c(2,p.Self()),c(2,p.Inject(m.NG_ASYNC_VALIDATORS)),c(3,p.Optional()),c(3,p.Self()),c(3,p.Inject(h.NG_VALUE_ACCESSOR)),s("design:paramtypes",[d.ControlContainer,Array,Array,Array])],t)}(f.NgControl);return t.NgControlName=y,n.define=i,r.exports}),System.register("angular2/src/platform/browser/generic_browser_adapter",["angular2/src/facade/collection","angular2/src/facade/lang","angular2/src/platform/dom/dom_adapter","angular2/src/platform/browser/xhr_impl"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=e("angular2/src/facade/collection"),s=e("angular2/src/facade/lang"),c=e("angular2/src/platform/dom/dom_adapter"),l=e("angular2/src/platform/browser/xhr_impl"),u=function(e){function t(){var t=this;e.call(this),this._animationPrefix=null,this._transitionEnd=null;try{var r=this.createElement("div",this.defaultDoc());if(s.isPresent(this.getStyle(r,"animationName")))this._animationPrefix="";else for(var n=["Webkit","Moz","O","ms"],i=0;i<n.length;i++)if(s.isPresent(this.getStyle(r,n[i]+"AnimationName"))){this._animationPrefix="-"+n[i].toLowerCase()+"-";break}var o={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};a.StringMapWrapper.forEach(o,function(e,n){s.isPresent(t.getStyle(r,n))&&(t._transitionEnd=e)})}catch(c){this._animationPrefix=null,this._transitionEnd=null}}return o(t,e),t.prototype.getXHR=function(){return l.XHRImpl},t.prototype.getDistributedNodes=function(e){return e.getDistributedNodes()},t.prototype.resolveAndSetHref=function(e,t,r){e.href=null==r?t:t+"/../"+r},t.prototype.supportsDOMEvents=function(){return!0},t.prototype.supportsNativeShadowDOM=function(){return s.isFunction(this.defaultDoc().body.createShadowRoot)},t.prototype.getAnimationPrefix=function(){return s.isPresent(this._animationPrefix)?this._animationPrefix:""},t.prototype.getTransitionEnd=function(){return s.isPresent(this._transitionEnd)?this._transitionEnd:""},t.prototype.supportsAnimation=function(){return s.isPresent(this._animationPrefix)&&s.isPresent(this._transitionEnd)},t}(c.DomAdapter);return t.GenericBrowserDomAdapter=u,n.define=i,r.exports}),System.register("angular2/src/platform/browser/tools/tools",["angular2/src/facade/lang","angular2/src/platform/browser/tools/common_tools"],!0,function(e,t,r){function n(e){l.ng=new c.AngularTools(e)}function i(){delete l.ng}var o=System.global,a=o.define;o.define=void 0;var s=e("angular2/src/facade/lang"),c=e("angular2/src/platform/browser/tools/common_tools"),l=s.global;return t.enableDebugTools=n,t.disableDebugTools=i,o.define=a,r.exports}),System.register("angular2/src/compiler/html_parser",["angular2/src/facade/lang","angular2/src/facade/collection","angular2/src/compiler/html_ast","angular2/src/core/di","angular2/src/compiler/html_lexer","angular2/src/compiler/parse_util","angular2/src/compiler/html_tags"],!0,function(e,t,r){function n(e,t,r){return l.isBlank(e)&&(e=g.getHtmlTagDefinition(t).implicitNamespacePrefix,l.isBlank(e)&&l.isPresent(r)&&(e=g.getNsPrefix(r.name))),g.mergeNsAndName(e,t)}var i=System.global,o=i.define;i.define=void 0;var a=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},s=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},c=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},l=e("angular2/src/facade/lang"),u=e("angular2/src/facade/collection"),p=e("angular2/src/compiler/html_ast"),d=e("angular2/src/core/di"),f=e("angular2/src/compiler/html_lexer"),h=e("angular2/src/compiler/parse_util"),g=e("angular2/src/compiler/html_tags"),m=function(e){function t(t,r,n){e.call(this,r,n),this.elementName=t}return a(t,e),t.create=function(e,r,n){return new t(e,r,n)},t}(h.ParseError);t.HtmlTreeError=m;var v=function(){function e(e,t){this.rootNodes=e,this.errors=t}return e}();t.HtmlParseTreeResult=v;var y=function(){function e(){}return e.prototype.parse=function(e,t){var r=f.tokenizeHtml(e,t),n=new _(r.tokens).build();return new v(n.rootNodes,r.errors.concat(n.errors))},e=s([d.Injectable(),c("design:paramtypes",[])],e)}();t.HtmlParser=y;var _=function(){function e(e){this.tokens=e,this.index=-1,this.rootNodes=[],this.errors=[],this.elementStack=[],this._advance()}return e.prototype.build=function(){for(;this.peek.type!==f.HtmlTokenType.EOF;)this.peek.type===f.HtmlTokenType.TAG_OPEN_START?this._consumeStartTag(this._advance()):this.peek.type===f.HtmlTokenType.TAG_CLOSE?this._consumeEndTag(this._advance()):this.peek.type===f.HtmlTokenType.CDATA_START?(this._closeVoidElement(),this._consumeCdata(this._advance())):this.peek.type===f.HtmlTokenType.COMMENT_START?(this._closeVoidElement(),this._consumeComment(this._advance())):this.peek.type===f.HtmlTokenType.TEXT||this.peek.type===f.HtmlTokenType.RAW_TEXT||this.peek.type===f.HtmlTokenType.ESCAPABLE_RAW_TEXT?(this._closeVoidElement(),this._consumeText(this._advance())):this._advance();return new v(this.rootNodes,this.errors)},e.prototype._advance=function(){var e=this.peek;return this.index<this.tokens.length-1&&this.index++,this.peek=this.tokens[this.index],e},e.prototype._advanceIf=function(e){return this.peek.type===e?this._advance():null},e.prototype._consumeCdata=function(e){this._consumeText(this._advance()),this._advanceIf(f.HtmlTokenType.CDATA_END)},e.prototype._consumeComment=function(e){var t=this._advanceIf(f.HtmlTokenType.RAW_TEXT);this._advanceIf(f.HtmlTokenType.COMMENT_END);var r=l.isPresent(t)?t.parts[0].trim():null;this._addToParent(new p.HtmlCommentAst(r,e.sourceSpan))},e.prototype._consumeText=function(e){var t=e.parts[0];if(t.length>0&&"\n"==t[0]){var r=this._getParentElement();l.isPresent(r)&&0==r.children.length&&g.getHtmlTagDefinition(r.name).ignoreFirstLf&&(t=t.substring(1))}t.length>0&&this._addToParent(new p.HtmlTextAst(t,e.sourceSpan))},e.prototype._closeVoidElement=function(){if(this.elementStack.length>0){var e=u.ListWrapper.last(this.elementStack);g.getHtmlTagDefinition(e.name).isVoid&&this.elementStack.pop()}},e.prototype._consumeStartTag=function(e){for(var t=e.parts[0],r=e.parts[1],i=[];this.peek.type===f.HtmlTokenType.ATTR_NAME;)i.push(this._consumeAttr(this._advance()));var o=n(t,r,this._getParentElement()),a=!1;this.peek.type===f.HtmlTokenType.TAG_OPEN_END_VOID?(this._advance(),a=!0,null!=g.getNsPrefix(o)||g.getHtmlTagDefinition(o).isVoid||this.errors.push(m.create(o,e.sourceSpan,'Only void and foreign elements can be self closed "'+e.parts[1]+'"'))):this.peek.type===f.HtmlTokenType.TAG_OPEN_END&&(this._advance(),a=!1);var s=this.peek.sourceSpan.start,c=new p.HtmlElementAst(o,i,[],new h.ParseSourceSpan(e.sourceSpan.start,s));this._pushElement(c),a&&this._popElement(o)},e.prototype._pushElement=function(e){if(this.elementStack.length>0){var t=u.ListWrapper.last(this.elementStack);g.getHtmlTagDefinition(t.name).isClosedByChild(e.name)&&this.elementStack.pop()}var r=g.getHtmlTagDefinition(e.name),t=this._getParentElement();if(r.requireExtraParent(l.isPresent(t)?t.name:null)){var n=new p.HtmlElementAst(r.parentToAdd,[],[e],e.sourceSpan);this._addToParent(n),this.elementStack.push(n),this.elementStack.push(e)}else this._addToParent(e),this.elementStack.push(e)},e.prototype._consumeEndTag=function(e){var t=n(e.parts[0],e.parts[1],this._getParentElement());g.getHtmlTagDefinition(t).isVoid?this.errors.push(m.create(t,e.sourceSpan,'Void elements do not have end tags "'+e.parts[1]+'"')):this._popElement(t)||this.errors.push(m.create(t,e.sourceSpan,'Unexpected closing tag "'+e.parts[1]+'"'))},e.prototype._popElement=function(e){for(var t=this.elementStack.length-1;t>=0;t--){var r=this.elementStack[t];if(r.name==e)return u.ListWrapper.splice(this.elementStack,t,this.elementStack.length-t),!0;if(!g.getHtmlTagDefinition(r.name).closedByParent)return!1}return!1},e.prototype._consumeAttr=function(e){var t=g.mergeNsAndName(e.parts[0],e.parts[1]),r=e.sourceSpan.end,n="";if(this.peek.type===f.HtmlTokenType.ATTR_VALUE){var i=this._advance();n=i.parts[0],r=i.sourceSpan.end}return new p.HtmlAttrAst(t,n,new h.ParseSourceSpan(e.sourceSpan.start,r))},e.prototype._getParentElement=function(){return this.elementStack.length>0?u.ListWrapper.last(this.elementStack):null},e.prototype._addToParent=function(e){var t=this._getParentElement();l.isPresent(t)?t.children.push(e):this.rootNodes.push(e)},e}();return i.define=o,r.exports}),System.register("angular2/src/common/forms",["angular2/src/common/forms/model","angular2/src/common/forms/directives/abstract_control_directive","angular2/src/common/forms/directives/control_container","angular2/src/common/forms/directives/ng_control_name","angular2/src/common/forms/directives/ng_form_control","angular2/src/common/forms/directives/ng_model","angular2/src/common/forms/directives/ng_control","angular2/src/common/forms/directives/ng_control_group","angular2/src/common/forms/directives/ng_form_model","angular2/src/common/forms/directives/ng_form","angular2/src/common/forms/directives/control_value_accessor","angular2/src/common/forms/directives/default_value_accessor","angular2/src/common/forms/directives/ng_control_status","angular2/src/common/forms/directives/checkbox_value_accessor","angular2/src/common/forms/directives/select_control_value_accessor","angular2/src/common/forms/directives","angular2/src/common/forms/validators","angular2/src/common/forms/directives/validators","angular2/src/common/forms/form_builder","angular2/src/common/forms/form_builder","angular2/src/common/forms/directives/radio_control_value_accessor","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/common/forms/model");t.AbstractControl=o.AbstractControl,t.Control=o.Control,t.ControlGroup=o.ControlGroup,t.ControlArray=o.ControlArray;var a=e("angular2/src/common/forms/directives/abstract_control_directive");t.AbstractControlDirective=a.AbstractControlDirective;var s=e("angular2/src/common/forms/directives/control_container");t.ControlContainer=s.ControlContainer;var c=e("angular2/src/common/forms/directives/ng_control_name");t.NgControlName=c.NgControlName;var l=e("angular2/src/common/forms/directives/ng_form_control");t.NgFormControl=l.NgFormControl;var u=e("angular2/src/common/forms/directives/ng_model");t.NgModel=u.NgModel;var p=e("angular2/src/common/forms/directives/ng_control");t.NgControl=p.NgControl;var d=e("angular2/src/common/forms/directives/ng_control_group");t.NgControlGroup=d.NgControlGroup;var f=e("angular2/src/common/forms/directives/ng_form_model");t.NgFormModel=f.NgFormModel;var h=e("angular2/src/common/forms/directives/ng_form");t.NgForm=h.NgForm;var g=e("angular2/src/common/forms/directives/control_value_accessor");t.NG_VALUE_ACCESSOR=g.NG_VALUE_ACCESSOR;var m=e("angular2/src/common/forms/directives/default_value_accessor");t.DefaultValueAccessor=m.DefaultValueAccessor;var v=e("angular2/src/common/forms/directives/ng_control_status");t.NgControlStatus=v.NgControlStatus;var y=e("angular2/src/common/forms/directives/checkbox_value_accessor");t.CheckboxControlValueAccessor=y.CheckboxControlValueAccessor;var _=e("angular2/src/common/forms/directives/select_control_value_accessor");t.NgSelectOption=_.NgSelectOption,t.SelectControlValueAccessor=_.SelectControlValueAccessor;var b=e("angular2/src/common/forms/directives");t.FORM_DIRECTIVES=b.FORM_DIRECTIVES,t.RadioButtonState=b.RadioButtonState;var C=e("angular2/src/common/forms/validators");t.NG_VALIDATORS=C.NG_VALIDATORS,t.NG_ASYNC_VALIDATORS=C.NG_ASYNC_VALIDATORS,t.Validators=C.Validators;var w=e("angular2/src/common/forms/directives/validators");t.RequiredValidator=w.RequiredValidator,t.MinLengthValidator=w.MinLengthValidator,t.MaxLengthValidator=w.MaxLengthValidator,t.PatternValidator=w.PatternValidator;var P=e("angular2/src/common/forms/form_builder");t.FormBuilder=P.FormBuilder;var E=e("angular2/src/common/forms/form_builder"),S=e("angular2/src/common/forms/directives/radio_control_value_accessor"),R=e("angular2/src/facade/lang");return t.FORM_PROVIDERS=R.CONST_EXPR([E.FormBuilder,S.RadioControlRegistry]),t.FORM_BINDINGS=t.FORM_PROVIDERS,n.define=i,r.exports}),System.register("angular2/src/platform/browser/browser_adapter",["angular2/src/facade/collection","angular2/src/facade/lang","angular2/src/platform/dom/dom_adapter","angular2/src/platform/browser/generic_browser_adapter"],!0,function(e,t,r){function n(){return l.isBlank(v)&&(v=document.querySelector("base"),l.isBlank(v))?null:v.getAttribute("href")}function i(e){return l.isBlank(y)&&(y=document.createElement("a")),y.setAttribute("href",e),"/"===y.pathname.charAt(0)?y.pathname:"/"+y.pathname}var o=System.global,a=o.define;o.define=void 0;var s=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},c=e("angular2/src/facade/collection"),l=e("angular2/src/facade/lang"),u=e("angular2/src/platform/dom/dom_adapter"),p=e("angular2/src/platform/browser/generic_browser_adapter"),d={"class":"className",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"},f=3,h={"\b":"Backspace","	":"Tab","":"Delete","":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},g={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","":"NumLock"},m=function(e){function t(){e.apply(this,arguments)}return s(t,e),t.prototype.parse=function(e){throw new Error("parse not implemented")},t.makeCurrent=function(){u.setRootDomAdapter(new t)},t.prototype.hasProperty=function(e,t){return t in e},t.prototype.setProperty=function(e,t,r){e[t]=r},t.prototype.getProperty=function(e,t){return e[t]},t.prototype.invoke=function(e,t,r){e[t].apply(e,r)},t.prototype.logError=function(e){window.console.error?window.console.error(e):window.console.log(e)},t.prototype.log=function(e){window.console.log(e)},t.prototype.logGroup=function(e){window.console.group?(window.console.group(e),this.logError(e)):window.console.log(e)},t.prototype.logGroupEnd=function(){window.console.groupEnd&&window.console.groupEnd()},Object.defineProperty(t.prototype,"attrToPropMap",{get:function(){return d},enumerable:!0,configurable:!0}),t.prototype.query=function(e){return document.querySelector(e)},t.prototype.querySelector=function(e,t){return e.querySelector(t)},t.prototype.querySelectorAll=function(e,t){return e.querySelectorAll(t)},t.prototype.on=function(e,t,r){e.addEventListener(t,r,!1)},t.prototype.onAndCancel=function(e,t,r){return e.addEventListener(t,r,!1),function(){e.removeEventListener(t,r,!1)}},t.prototype.dispatchEvent=function(e,t){e.dispatchEvent(t)},t.prototype.createMouseEvent=function(e){var t=document.createEvent("MouseEvent");return t.initEvent(e,!0,!0),t},t.prototype.createEvent=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t},t.prototype.preventDefault=function(e){e.preventDefault(),e.returnValue=!1},t.prototype.isPrevented=function(e){return e.defaultPrevented||l.isPresent(e.returnValue)&&!e.returnValue},t.prototype.getInnerHTML=function(e){return e.innerHTML},t.prototype.getOuterHTML=function(e){return e.outerHTML},t.prototype.nodeName=function(e){return e.nodeName},t.prototype.nodeValue=function(e){return e.nodeValue},t.prototype.type=function(e){return e.type},t.prototype.content=function(e){return this.hasProperty(e,"content")?e.content:e},t.prototype.firstChild=function(e){return e.firstChild},t.prototype.nextSibling=function(e){return e.nextSibling},t.prototype.parentElement=function(e){return e.parentNode},t.prototype.childNodes=function(e){return e.childNodes},t.prototype.childNodesAsList=function(e){for(var t=e.childNodes,r=c.ListWrapper.createFixedSize(t.length),n=0;n<t.length;n++)r[n]=t[n];return r},t.prototype.clearNodes=function(e){for(;e.firstChild;)e.removeChild(e.firstChild)},t.prototype.appendChild=function(e,t){e.appendChild(t)},t.prototype.removeChild=function(e,t){e.removeChild(t)},t.prototype.replaceChild=function(e,t,r){e.replaceChild(t,r)},t.prototype.remove=function(e){return e.parentNode&&e.parentNode.removeChild(e),e},t.prototype.insertBefore=function(e,t){e.parentNode.insertBefore(t,e)},t.prototype.insertAllBefore=function(e,t){t.forEach(function(t){return e.parentNode.insertBefore(t,e)})},t.prototype.insertAfter=function(e,t){e.parentNode.insertBefore(t,e.nextSibling)},t.prototype.setInnerHTML=function(e,t){e.innerHTML=t},t.prototype.getText=function(e){
return e.textContent},t.prototype.setText=function(e,t){e.textContent=t},t.prototype.getValue=function(e){return e.value},t.prototype.setValue=function(e,t){e.value=t},t.prototype.getChecked=function(e){return e.checked},t.prototype.setChecked=function(e,t){e.checked=t},t.prototype.createComment=function(e){return document.createComment(e)},t.prototype.createTemplate=function(e){var t=document.createElement("template");return t.innerHTML=e,t},t.prototype.createElement=function(e,t){return void 0===t&&(t=document),t.createElement(e)},t.prototype.createElementNS=function(e,t,r){return void 0===r&&(r=document),r.createElementNS(e,t)},t.prototype.createTextNode=function(e,t){return void 0===t&&(t=document),t.createTextNode(e)},t.prototype.createScriptTag=function(e,t,r){void 0===r&&(r=document);var n=r.createElement("SCRIPT");return n.setAttribute(e,t),n},t.prototype.createStyleElement=function(e,t){void 0===t&&(t=document);var r=t.createElement("style");return this.appendChild(r,this.createTextNode(e)),r},t.prototype.createShadowRoot=function(e){return e.createShadowRoot()},t.prototype.getShadowRoot=function(e){return e.shadowRoot},t.prototype.getHost=function(e){return e.host},t.prototype.clone=function(e){return e.cloneNode(!0)},t.prototype.getElementsByClassName=function(e,t){return e.getElementsByClassName(t)},t.prototype.getElementsByTagName=function(e,t){return e.getElementsByTagName(t)},t.prototype.classList=function(e){return Array.prototype.slice.call(e.classList,0)},t.prototype.addClass=function(e,t){e.classList.add(t)},t.prototype.removeClass=function(e,t){e.classList.remove(t)},t.prototype.hasClass=function(e,t){return e.classList.contains(t)},t.prototype.setStyle=function(e,t,r){e.style[t]=r},t.prototype.removeStyle=function(e,t){e.style[t]=null},t.prototype.getStyle=function(e,t){return e.style[t]},t.prototype.hasStyle=function(e,t,r){void 0===r&&(r=null);var n=this.getStyle(e,t)||"";return r?n==r:n.length>0},t.prototype.tagName=function(e){return e.tagName},t.prototype.attributeMap=function(e){for(var t=new Map,r=e.attributes,n=0;n<r.length;n++){var i=r[n];t.set(i.name,i.value)}return t},t.prototype.hasAttribute=function(e,t){return e.hasAttribute(t)},t.prototype.hasAttributeNS=function(e,t,r){return e.hasAttributeNS(t,r)},t.prototype.getAttribute=function(e,t){return e.getAttribute(t)},t.prototype.getAttributeNS=function(e,t,r){return e.getAttributeNS(t,r)},t.prototype.setAttribute=function(e,t,r){e.setAttribute(t,r)},t.prototype.setAttributeNS=function(e,t,r,n){e.setAttributeNS(t,r,n)},t.prototype.removeAttribute=function(e,t){e.removeAttribute(t)},t.prototype.removeAttributeNS=function(e,t,r){e.removeAttributeNS(t,r)},t.prototype.templateAwareRoot=function(e){return this.isTemplateElement(e)?this.content(e):e},t.prototype.createHtmlDocument=function(){return document.implementation.createHTMLDocument("fakeTitle")},t.prototype.defaultDoc=function(){return document},t.prototype.getBoundingClientRect=function(e){try{return e.getBoundingClientRect()}catch(t){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}},t.prototype.getTitle=function(){return document.title},t.prototype.setTitle=function(e){document.title=e||""},t.prototype.elementMatches=function(e,t){var r=!1;return e instanceof HTMLElement&&(e.matches?r=e.matches(t):e.msMatchesSelector?r=e.msMatchesSelector(t):e.webkitMatchesSelector&&(r=e.webkitMatchesSelector(t))),r},t.prototype.isTemplateElement=function(e){return e instanceof HTMLElement&&"TEMPLATE"==e.nodeName},t.prototype.isTextNode=function(e){return e.nodeType===Node.TEXT_NODE},t.prototype.isCommentNode=function(e){return e.nodeType===Node.COMMENT_NODE},t.prototype.isElementNode=function(e){return e.nodeType===Node.ELEMENT_NODE},t.prototype.hasShadowRoot=function(e){return e instanceof HTMLElement&&l.isPresent(e.shadowRoot)},t.prototype.isShadowRoot=function(e){return e instanceof DocumentFragment},t.prototype.importIntoDoc=function(e){var t=e;return this.isTemplateElement(e)&&(t=this.content(e)),document.importNode(t,!0)},t.prototype.adoptNode=function(e){return document.adoptNode(e)},t.prototype.getHref=function(e){return e.href},t.prototype.getEventKey=function(e){var t=e.key;if(l.isBlank(t)){if(t=e.keyIdentifier,l.isBlank(t))return"Unidentified";t.startsWith("U+")&&(t=String.fromCharCode(parseInt(t.substring(2),16)),e.location===f&&g.hasOwnProperty(t)&&(t=g[t]))}return h.hasOwnProperty(t)&&(t=h[t]),t},t.prototype.getGlobalEventTarget=function(e){return"window"==e?window:"document"==e?document:"body"==e?document.body:void 0},t.prototype.getHistory=function(){return window.history},t.prototype.getLocation=function(){return window.location},t.prototype.getBaseHref=function(){var e=n();return l.isBlank(e)?null:i(e)},t.prototype.resetBaseElement=function(){v=null},t.prototype.getUserAgent=function(){return window.navigator.userAgent},t.prototype.setData=function(e,t,r){this.setAttribute(e,"data-"+t,r)},t.prototype.getData=function(e,t){return this.getAttribute(e,"data-"+t)},t.prototype.getComputedStyle=function(e){return getComputedStyle(e)},t.prototype.setGlobalVar=function(e,t){l.setValueOnPath(l.global,e,t)},t.prototype.requestAnimationFrame=function(e){return window.requestAnimationFrame(e)},t.prototype.cancelAnimationFrame=function(e){window.cancelAnimationFrame(e)},t.prototype.performanceNow=function(){return l.isPresent(window.performance)&&l.isPresent(window.performance.now)?window.performance.now():l.DateWrapper.toMillis(l.DateWrapper.now())},t}(p.GenericBrowserDomAdapter);t.BrowserDomAdapter=m;var v=null,y=null;return o.define=a,r.exports}),System.register("angular2/src/compiler/template_parser",["angular2/src/facade/collection","angular2/src/facade/lang","angular2/core","angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/core/change_detection/change_detection","angular2/src/compiler/html_parser","angular2/src/compiler/html_tags","angular2/src/compiler/parse_util","angular2/src/core/change_detection/parser/ast","angular2/src/compiler/template_ast","angular2/src/compiler/selector","angular2/src/compiler/schema/element_schema_registry","angular2/src/compiler/template_preparser","angular2/src/compiler/style_url_resolver","angular2/src/compiler/html_ast","angular2/src/compiler/util"],!0,function(e,t,r){function n(e){return d.StringWrapper.split(e.trim(),/\s+/g)}function i(e,t){var r=new w.CssSelector,i=y.splitNsName(e)[1];r.setElement(i);for(var o=0;o<t.length;o++){var a=t[o][0],s=y.splitNsName(a)[1],c=t[o][1];if(r.addAttribute(s,c),a.toLowerCase()==I){var l=n(c);l.forEach(function(e){return r.addClassName(e)})}}return r}var o=System.global,a=o.define;o.define=void 0;var s=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},c=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},l=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},u=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},p=e("angular2/src/facade/collection"),d=e("angular2/src/facade/lang"),f=e("angular2/core"),h=e("angular2/src/facade/lang"),g=e("angular2/src/facade/exceptions"),m=e("angular2/src/core/change_detection/change_detection"),v=e("angular2/src/compiler/html_parser"),y=e("angular2/src/compiler/html_tags"),_=e("angular2/src/compiler/parse_util"),b=e("angular2/src/core/change_detection/parser/ast"),C=e("angular2/src/compiler/template_ast"),w=e("angular2/src/compiler/selector"),P=e("angular2/src/compiler/schema/element_schema_registry"),E=e("angular2/src/compiler/template_preparser"),S=e("angular2/src/compiler/style_url_resolver"),R=e("angular2/src/compiler/html_ast"),x=e("angular2/src/compiler/util"),O=/^(?:(?:(?:(bind-)|(var-|#)|(on-)|(bindon-))(.+))|\[\(([^\)]+)\)\]|\[([^\]]+)\]|\(([^\)]+)\))$/g,D="template",A="template",T="*",I="class",k=".",N="attr",V="class",M="style",j=w.CssSelector.parse("*")[0];t.TEMPLATE_TRANSFORMS=h.CONST_EXPR(new f.OpaqueToken("TemplateTransforms"));var B=function(e){function t(t,r){e.call(this,r,t)}return s(t,e),t}(_.ParseError);t.TemplateParseError=B;var L=function(){function e(e,t,r,n){this._exprParser=e,this._schemaRegistry=t,this._htmlParser=r,this.transforms=n}return e.prototype.parse=function(e,t,r,n){var i=new F(t,r,this._exprParser,this._schemaRegistry),o=this._htmlParser.parse(e,n),a=R.htmlVisitAll(i,o.rootNodes,q),s=o.errors.concat(i.errors);if(s.length>0){var c=s.join("\n");throw new g.BaseException("Template parse errors:\n"+c)}return d.isPresent(this.transforms)&&this.transforms.forEach(function(e){a=C.templateVisitAll(e,a)}),a},e=c([f.Injectable(),u(3,f.Optional()),u(3,f.Inject(t.TEMPLATE_TRANSFORMS)),l("design:paramtypes",[m.Parser,P.ElementSchemaRegistry,v.HtmlParser,Array])],e)}();t.TemplateParser=L;var F=function(){function e(e,t,r,n){var i=this;this._exprParser=r,this._schemaRegistry=n,this.errors=[],this.directivesIndex=new Map,this.ngContentCount=0,this.selectorMatcher=new w.SelectorMatcher,p.ListWrapper.forEachWithIndex(e,function(e,t){var r=w.CssSelector.parse(e.selector);i.selectorMatcher.addSelectables(r,e),i.directivesIndex.set(e,t)}),this.pipesByName=new Map,t.forEach(function(e){return i.pipesByName.set(e.name,e)})}return e.prototype._reportError=function(e,t){this.errors.push(new B(e,t))},e.prototype._parseInterpolation=function(e,t){var r=t.start.toString();try{var n=this._exprParser.parseInterpolation(e,r);return this._checkPipes(n,t),n}catch(i){return this._reportError(""+i,t),this._exprParser.wrapLiteralPrimitive("ERROR",r)}},e.prototype._parseAction=function(e,t){var r=t.start.toString();try{var n=this._exprParser.parseAction(e,r);return this._checkPipes(n,t),n}catch(i){return this._reportError(""+i,t),this._exprParser.wrapLiteralPrimitive("ERROR",r)}},e.prototype._parseBinding=function(e,t){var r=t.start.toString();try{var n=this._exprParser.parseBinding(e,r);return this._checkPipes(n,t),n}catch(i){return this._reportError(""+i,t),this._exprParser.wrapLiteralPrimitive("ERROR",r)}},e.prototype._parseTemplateBindings=function(e,t){var r=this,n=t.start.toString();try{var i=this._exprParser.parseTemplateBindings(e,n);return i.forEach(function(e){d.isPresent(e.expression)&&r._checkPipes(e.expression,t)}),i}catch(o){return this._reportError(""+o,t),[]}},e.prototype._checkPipes=function(e,t){var r=this;if(d.isPresent(e)){var n=new K;e.visit(n),n.pipes.forEach(function(e){r.pipesByName.has(e)||r._reportError("The pipe '"+e+"' could not be found",t)})}},e.prototype.visitText=function(e,t){var r=t.findNgContentIndex(j),n=this._parseInterpolation(e.value,e.sourceSpan);return d.isPresent(n)?new C.BoundTextAst(n,r,e.sourceSpan):new C.TextAst(e.value,r,e.sourceSpan)},e.prototype.visitAttr=function(e,t){return new C.AttrAst(e.name,e.value,e.sourceSpan)},e.prototype.visitComment=function(e,t){return null},e.prototype.visitElement=function(e,t){var r=this,n=e.name,o=E.preparseElement(e);if(o.type===E.PreparsedElementType.SCRIPT||o.type===E.PreparsedElementType.STYLE)return null;if(o.type===E.PreparsedElementType.STYLESHEET&&S.isStyleUrlResolvable(o.hrefAttr))return null;var a=[],s=[],c=[],l=[],u=[],p=[],f=[],h=!1,g=[];e.attrs.forEach(function(e){var t=r._parseAttr(e,a,s,l,c),n=r._parseInlineTemplateBinding(e,f,u,p);t||n||(g.push(r.visitAttr(e,null)),a.push([e.name,e.value])),n&&(h=!0)});var m,v=y.splitNsName(n.toLowerCase())[1],_=v==D,b=i(n,a),w=this._createDirectiveAsts(e.name,this._parseDirectives(this.selectorMatcher,b),s,_?[]:c,e.sourceSpan),P=this._createElementPropertyAsts(e.name,s,w),x=R.htmlVisitAll(o.nonBindable?G:this,e.children,H.create(w)),O=h?null:t.findNgContentIndex(b);if(o.type===E.PreparsedElementType.NG_CONTENT)d.isPresent(e.children)&&e.children.length>0&&this._reportError("<ng-content> element cannot have content. <ng-content> must be immediately followed by </ng-content>",e.sourceSpan),m=new C.NgContentAst(this.ngContentCount++,O,e.sourceSpan);else if(_)this._assertAllEventsPublishedByDirectives(w,l),this._assertNoComponentsNorElementBindingsOnTemplate(w,P,e.sourceSpan),m=new C.EmbeddedTemplateAst(g,l,c,w,x,O,e.sourceSpan);else{this._assertOnlyOneComponent(w,e.sourceSpan);var A=c.filter(function(e){return 0===e.value.length});m=new C.ElementAst(n,g,P,l,A,w,x,O,e.sourceSpan)}if(h){var T=i(D,f),I=this._createDirectiveAsts(e.name,this._parseDirectives(this.selectorMatcher,T),u,[],e.sourceSpan),k=this._createElementPropertyAsts(e.name,u,I);this._assertNoComponentsNorElementBindingsOnTemplate(I,k,e.sourceSpan),m=new C.EmbeddedTemplateAst([],[],p,I,[m],t.findNgContentIndex(T),e.sourceSpan)}return m},e.prototype._parseInlineTemplateBinding=function(e,t,r,n){var i=null;if(e.name==A)i=e.value;else if(e.name.startsWith(T)){var o=e.name.substring(T.length);i=0==e.value.length?o:o+" "+e.value}if(d.isPresent(i)){for(var a=this._parseTemplateBindings(i,e.sourceSpan),s=0;s<a.length;s++){var c=a[s];c.keyIsVar?(n.push(new C.VariableAst(c.key,c.name,e.sourceSpan)),t.push([c.key,c.name])):d.isPresent(c.expression)?this._parsePropertyAst(c.key,c.expression,e.sourceSpan,t,r):(t.push([c.key,""]),this._parseLiteralAttr(c.key,null,e.sourceSpan,r))}return!0}return!1},e.prototype._parseAttr=function(e,t,r,n,i){var o=this._normalizeAttributeName(e.name),a=e.value,s=d.RegExpWrapper.firstMatch(O,o),c=!1;if(d.isPresent(s))if(c=!0,d.isPresent(s[1]))this._parseProperty(s[5],a,e.sourceSpan,t,r);else if(d.isPresent(s[2])){var l=s[5];this._parseVariable(l,a,e.sourceSpan,i)}else d.isPresent(s[3])?this._parseEvent(s[5],a,e.sourceSpan,t,n):d.isPresent(s[4])?(this._parseProperty(s[5],a,e.sourceSpan,t,r),this._parseAssignmentEvent(s[5],a,e.sourceSpan,t,n)):d.isPresent(s[6])?(this._parseProperty(s[6],a,e.sourceSpan,t,r),this._parseAssignmentEvent(s[6],a,e.sourceSpan,t,n)):d.isPresent(s[7])?this._parseProperty(s[7],a,e.sourceSpan,t,r):d.isPresent(s[8])&&this._parseEvent(s[8],a,e.sourceSpan,t,n);else c=this._parsePropertyInterpolation(o,a,e.sourceSpan,t,r);return c||this._parseLiteralAttr(o,a,e.sourceSpan,r),c},e.prototype._normalizeAttributeName=function(e){return e.toLowerCase().startsWith("data-")?e.substring(5):e},e.prototype._parseVariable=function(e,t,r,n){e.indexOf("-")>-1&&this._reportError('"-" is not allowed in variable names',r),n.push(new C.VariableAst(e,t,r))},e.prototype._parseProperty=function(e,t,r,n,i){this._parsePropertyAst(e,this._parseBinding(t,r),r,n,i)},e.prototype._parsePropertyInterpolation=function(e,t,r,n,i){var o=this._parseInterpolation(t,r);return d.isPresent(o)?(this._parsePropertyAst(e,o,r,n,i),!0):!1},e.prototype._parsePropertyAst=function(e,t,r,n,i){n.push([e,t.source]),i.push(new U(e,t,!1,r))},e.prototype._parseAssignmentEvent=function(e,t,r,n,i){this._parseEvent(e+"Change",t+"=$event",r,n,i)},e.prototype._parseEvent=function(e,t,r,n,i){var o=x.splitAtColon(e,[null,e]),a=o[0],s=o[1],c=this._parseAction(t,r);n.push([e,c.source]),i.push(new C.BoundEventAst(s,a,c,r))},e.prototype._parseLiteralAttr=function(e,t,r,n){n.push(new U(e,this._exprParser.wrapLiteralPrimitive(t,""),!0,r))},e.prototype._parseDirectives=function(e,t){var r=this,n=[];return e.match(t,function(e,t){n.push(t)}),p.ListWrapper.sort(n,function(e,t){var n=e.isComponent,i=t.isComponent;return n&&!i?-1:!n&&i?1:r.directivesIndex.get(e)-r.directivesIndex.get(t)}),n},e.prototype._createDirectiveAsts=function(e,t,r,n,i){var o=this,a=new Set,s=t.map(function(t){var s=[],c=[],l=[];o._createDirectiveHostPropertyAsts(e,t.hostProperties,i,s),o._createDirectiveHostEventAsts(t.hostListeners,i,c),o._createDirectivePropertyAsts(t.inputs,r,l);var u=[];return n.forEach(function(e){(0===e.value.length&&t.isComponent||t.exportAs==e.value)&&(u.push(e),a.add(e.name))}),new C.DirectiveAst(t,l,s,c,u,i)});return n.forEach(function(e){e.value.length>0&&!p.SetWrapper.has(a,e.name)&&o._reportError('There is no directive with "exportAs" set to "'+e.value+'"',e.sourceSpan)}),s},e.prototype._createDirectiveHostPropertyAsts=function(e,t,r,n){var i=this;d.isPresent(t)&&p.StringMapWrapper.forEach(t,function(t,o){var a=i._parseBinding(t,r);n.push(i._createElementPropertyAst(e,o,a,r))})},e.prototype._createDirectiveHostEventAsts=function(e,t,r){var n=this;d.isPresent(e)&&p.StringMapWrapper.forEach(e,function(e,i){n._parseEvent(i,e,t,[],r)})},e.prototype._createDirectivePropertyAsts=function(e,t,r){if(d.isPresent(e)){var n=new Map;t.forEach(function(e){var t=n.get(e.name);(d.isBlank(t)||t.isLiteral)&&n.set(e.name,e)}),p.StringMapWrapper.forEach(e,function(e,t){var i=n.get(e);d.isPresent(i)&&r.push(new C.BoundDirectivePropertyAst(t,i.name,i.expression,i.sourceSpan))})}},e.prototype._createElementPropertyAsts=function(e,t,r){var n=this,i=[],o=new Map;return r.forEach(function(e){e.inputs.forEach(function(e){o.set(e.templateName,e)})}),t.forEach(function(t){!t.isLiteral&&d.isBlank(o.get(t.name))&&i.push(n._createElementPropertyAst(e,t.name,t.expression,t.sourceSpan))}),i},e.prototype._createElementPropertyAst=function(e,t,r,n){var i,o,a=null,s=t.split(k);if(1===s.length)o=this._schemaRegistry.getMappedPropName(s[0]),i=C.PropertyBindingType.Property,this._schemaRegistry.hasProperty(e,o)||this._reportError("Can't bind to '"+o+"' since it isn't a known native property",n);else if(s[0]==N){o=s[1];var c=o.indexOf(":");if(c>-1){var l=o.substring(0,c),u=o.substring(c+1);o=y.mergeNsAndName(l,u)}i=C.PropertyBindingType.Attribute}else s[0]==V?(o=s[1],i=C.PropertyBindingType.Class):s[0]==M?(a=s.length>2?s[2]:null,o=s[1],i=C.PropertyBindingType.Style):(this._reportError("Invalid property name '"+t+"'",n),i=null);return new C.BoundElementPropertyAst(o,i,r,a,n)},e.prototype._findComponentDirectiveNames=function(e){var t=[];return e.forEach(function(e){var r=e.directive.type.name;e.directive.isComponent&&t.push(r)}),t},e.prototype._assertOnlyOneComponent=function(e,t){var r=this._findComponentDirectiveNames(e);r.length>1&&this._reportError("More than one component: "+r.join(","),t)},e.prototype._assertNoComponentsNorElementBindingsOnTemplate=function(e,t,r){var n=this,i=this._findComponentDirectiveNames(e);i.length>0&&this._reportError("Components on an embedded template: "+i.join(","),r),t.forEach(function(e){n._reportError("Property binding "+e.name+" not used by any directive on an embedded template",r)})},e.prototype._assertAllEventsPublishedByDirectives=function(e,t){var r=this,n=new Set;e.forEach(function(e){p.StringMapWrapper.forEach(e.directive.outputs,function(e,t){n.add(e)})}),t.forEach(function(e){(d.isPresent(e.target)||!p.SetWrapper.has(n,e.name))&&r._reportError("Event binding "+e.fullName+" not emitted by any directive on an embedded template",e.sourceSpan)})},e}(),W=function(){function e(){}return e.prototype.visitElement=function(e,t){var r=E.preparseElement(e);if(r.type===E.PreparsedElementType.SCRIPT||r.type===E.PreparsedElementType.STYLE||r.type===E.PreparsedElementType.STYLESHEET)return null;var n=e.attrs.map(function(e){return[e.name,e.value]}),o=i(e.name,n),a=t.findNgContentIndex(o),s=R.htmlVisitAll(this,e.children,q);return new C.ElementAst(e.name,R.htmlVisitAll(this,e.attrs),[],[],[],[],s,a,e.sourceSpan)},e.prototype.visitComment=function(e,t){return null},e.prototype.visitAttr=function(e,t){return new C.AttrAst(e.name,e.value,e.sourceSpan)},e.prototype.visitText=function(e,t){var r=t.findNgContentIndex(j);return new C.TextAst(e.value,r,e.sourceSpan)},e}(),U=function(){function e(e,t,r,n){this.name=e,this.expression=t,this.isLiteral=r,this.sourceSpan=n}return e}();t.splitClasses=n;var H=function(){function e(e,t){this.ngContentIndexMatcher=e,this.wildcardNgContentIndex=t}return e.create=function(t){if(0===t.length||!t[0].directive.isComponent)return q;for(var r=new w.SelectorMatcher,n=t[0].directive.template.ngContentSelectors,i=null,o=0;o<n.length;o++){var a=n[o];d.StringWrapper.equals(a,"*")?i=o:r.addSelectables(w.CssSelector.parse(n[o]),o)}return new e(r,i)},e.prototype.findNgContentIndex=function(e){var t=[];return this.ngContentIndexMatcher.match(e,function(e,r){t.push(r)}),p.ListWrapper.sort(t),d.isPresent(this.wildcardNgContentIndex)&&t.push(this.wildcardNgContentIndex),t.length>0?t[0]:null},e}(),q=new H(new w.SelectorMatcher,null),G=new W,K=function(e){function t(){e.apply(this,arguments),this.pipes=new Set}return s(t,e),t.prototype.visitPipe=function(e){return this.pipes.add(e.name),e.exp.visit(this),this.visitAll(e.args),null},t}(b.RecursiveAstVisitor);return t.PipeCollector=K,o.define=a,r.exports}),System.register("angular2/common",["angular2/src/common/pipes","angular2/src/common/directives","angular2/src/common/forms","angular2/src/common/common_directives"],!0,function(e,t,r){function n(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}var i=System.global,o=i.define;return i.define=void 0,n(e("angular2/src/common/pipes")),n(e("angular2/src/common/directives")),n(e("angular2/src/common/forms")),n(e("angular2/src/common/common_directives")),i.define=o,r.exports}),System.register("angular2/src/compiler/template_compiler",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection","angular2/src/facade/async","angular2/src/compiler/directive_metadata","angular2/src/compiler/template_ast","angular2/src/core/di","angular2/src/compiler/source_module","angular2/src/compiler/change_detector_compiler","angular2/src/compiler/style_compiler","angular2/src/compiler/view_compiler","angular2/src/compiler/proto_view_compiler","angular2/src/compiler/template_parser","angular2/src/compiler/template_normalizer","angular2/src/compiler/runtime_metadata","angular2/src/core/linker/view","angular2/src/core/change_detection/change_detection","angular2/src/core/linker/resolved_metadata_cache","angular2/src/compiler/util"],!0,function(e,t,r){function n(e){if(!e.isComponent)throw new g.BaseException("Could not compile '"+e.type.name+"' because it is not a component.")}function i(e){var t=e.substring(0,e.length-I.MODULE_SUFFIX.length);return t+".template"+I.MODULE_SUFFIX}function o(e){return"hostViewFactory_"+e.name}function a(e){return C.moduleRef(i(e.type.moduleUrl))+"viewFactory_"+e.type.name+"0"}function s(e){var t={};return e.forEach(function(e){m.StringMapWrapper.forEach(e,function(e,r){t[r]=e})}),t}function c(e){var t=[];return e.forEach(function(e){var r=t.filter(function(t){return t.type.name==e.type.name&&t.type.moduleUrl==e.type.moduleUrl&&t.type.runtime==e.type.runtime}).length>0;r||t.push(e)}),t}function l(e,t){var r=new j;return _.templateVisitAll(r,e),t.filter(function(e){return m.SetWrapper.has(r.collector.pipes,e.name)})}var u=System.global,p=u.define;u.define=void 0;var d=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},f=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},h=e("angular2/src/facade/lang"),g=e("angular2/src/facade/exceptions"),m=e("angular2/src/facade/collection"),v=e("angular2/src/facade/async"),y=e("angular2/src/compiler/directive_metadata"),_=e("angular2/src/compiler/template_ast"),b=e("angular2/src/core/di"),C=e("angular2/src/compiler/source_module"),w=e("angular2/src/compiler/change_detector_compiler"),P=e("angular2/src/compiler/style_compiler"),E=e("angular2/src/compiler/view_compiler"),S=e("angular2/src/compiler/proto_view_compiler"),R=e("angular2/src/compiler/template_parser"),x=e("angular2/src/compiler/template_normalizer"),O=e("angular2/src/compiler/runtime_metadata"),D=e("angular2/src/core/linker/view"),A=e("angular2/src/core/change_detection/change_detection"),T=e("angular2/src/core/linker/resolved_metadata_cache"),I=e("angular2/src/compiler/util");t.METADATA_CACHE_MODULE_REF=C.moduleRef("package:angular2/src/core/linker/resolved_metadata_cache"+I.MODULE_SUFFIX);var k=function(){function e(e,t,r,n,i,o,a,s,c){this._runtimeMetadataResolver=e,this._templateNormalizer=t,this._templateParser=r,this._styleCompiler=n,this._cdCompiler=i,this._protoViewCompiler=o,this._viewCompiler=a,this._resolvedMetadataCache=s,this._genConfig=c,this._hostCacheKeys=new Map,this._compiledTemplateCache=new Map,this._compiledTemplateDone=new Map}return e.prototype.normalizeDirectiveMetadata=function(e){return e.isComponent?this._templateNormalizer.normalizeTemplate(e.type,e.template).then(function(t){return new y.CompileDirectiveMetadata({type:e.type,isComponent:e.isComponent,dynamicLoadable:e.dynamicLoadable,selector:e.selector,exportAs:e.exportAs,changeDetection:e.changeDetection,inputs:e.inputs,outputs:e.outputs,hostListeners:e.hostListeners,hostProperties:e.hostProperties,hostAttributes:e.hostAttributes,lifecycleHooks:e.lifecycleHooks,providers:e.providers,template:t})}):v.PromiseWrapper.resolve(e)},e.prototype.compileHostComponentRuntime=function(e){var t=this._runtimeMetadataResolver.getDirectiveMetadata(e),r=this._hostCacheKeys.get(e);if(h.isBlank(r)){r=new Object,this._hostCacheKeys.set(e,r),n(t);var i=y.createHostComponentMeta(t.type,t.selector);this._compileComponentRuntime(r,i,[t],[],[])}return this._compiledTemplateDone.get(r).then(function(e){return new D.HostViewFactory(t.selector,e.viewFactory)})},e.prototype.clearCache=function(){this._styleCompiler.clearCache(),this._compiledTemplateCache.clear(),this._compiledTemplateDone.clear(),this._hostCacheKeys.clear()},e.prototype.compileTemplatesCodeGen=function(e){var t=this;if(0===e.length)throw new g.BaseException("No components given");var r=[];e.forEach(function(e){var i=e.component;if(n(i),t._compileComponentCodeGen(i,e.directives,e.pipes,r),i.dynamicLoadable){var a=y.createHostComponentMeta(i.type,i.selector),s=t._compileComponentCodeGen(a,[i],[],r),c=h.IS_DART?"const":"new",l=c+" "+S.APP_VIEW_MODULE_REF+"HostViewFactory('"+i.selector+"',"+s+")",u=o(i.type);r.push(""+I.codeGenExportVariable(u)+l+";")}});var a=e[0].component.type.moduleUrl;return new C.SourceModule(""+i(a),r.join("\n"))},e.prototype.compileStylesheetCodeGen=function(e,t){return this._styleCompiler.compileStylesheetCodeGen(e,t)},e.prototype._compileComponentRuntime=function(e,t,r,n,i){var o=this,a=c(r),s=c(n),u=this._compiledTemplateCache.get(e),p=this._compiledTemplateDone.get(e);return h.isBlank(u)&&(u=new V,this._compiledTemplateCache.set(e,u),p=v.PromiseWrapper.all([this._styleCompiler.compileComponentRuntime(t.template)].concat(a.map(function(e){return o.normalizeDirectiveMetadata(e)}))).then(function(e){var r=e.slice(1),n=e[0],a=o._templateParser.parse(t.template.template,r,s,t.type.name),c=[],p=M.findUsedDirectives(a);return p.components.forEach(function(e){return o._compileNestedComponentRuntime(e,i,c)}),v.PromiseWrapper.all(c).then(function(e){var r=l(a,s);return u.init(o._createViewFactoryRuntime(t,a,p.directives,n,r)),u})}),this._compiledTemplateDone.set(e,p)),u},e.prototype._compileNestedComponentRuntime=function(e,t,r){var n=m.ListWrapper.clone(t),i=e.type.runtime,o=this._runtimeMetadataResolver.getViewDirectivesMetadata(e.type.runtime),a=this._runtimeMetadataResolver.getViewPipesMetadata(e.type.runtime),s=m.ListWrapper.contains(n,i);n.push(i),this._compileComponentRuntime(i,e,o,a,n),s||r.push(this._compiledTemplateDone.get(i))},e.prototype._createViewFactoryRuntime=function(e,t,r,n,i){var o=this;if(h.IS_DART||!this._genConfig.useJit){var a=this._cdCompiler.compileComponentRuntime(e.type,e.changeDetection,t),c=this._protoViewCompiler.compileProtoViewRuntime(this._resolvedMetadataCache,e,t,i);return this._viewCompiler.compileComponentRuntime(e,t,n,c.protoViews,a,function(e){return o._getNestedComponentViewFactory(e)})}var l=[],u=this._createViewFactoryCodeGen("resolvedMetadataCache",e,new C.SourceExpression([],"styles"),t,i,l),p={exports:{},styles:n,resolvedMetadataCache:this._resolvedMetadataCache};r.forEach(function(t){p[t.type.name]=t.type.runtime,t.isComponent&&t.type.runtime!==e.type.runtime&&(p["viewFactory_"+t.type.name+"0"]=o._getNestedComponentViewFactory(t))}),i.forEach(function(e){return p[e.type.name]=e.type.runtime});var d=C.SourceModule.getSourceWithoutImports(l.join("\n"));return h.evalExpression("viewFactory_"+e.type.name,u,d,s([p,w.CHANGE_DETECTION_JIT_IMPORTS,S.PROTO_VIEW_JIT_IMPORTS,E.VIEW_JIT_IMPORTS]))},e.prototype._getNestedComponentViewFactory=function(e){return this._compiledTemplateCache.get(e.type.runtime).viewFactory},e.prototype._compileComponentCodeGen=function(e,r,n,i){var o=c(r),a=c(n),s=this._styleCompiler.compileComponentCodeGen(e.template),u=this._templateParser.parse(e.template.template,o,a,e.type.name),p=l(u,a);return this._createViewFactoryCodeGen(t.METADATA_CACHE_MODULE_REF+"CODEGEN_RESOLVED_METADATA_CACHE",e,s,u,p,i)},e.prototype._createViewFactoryCodeGen=function(e,t,r,n,i,o){var s=this._cdCompiler.compileComponentCodeGen(t.type,t.changeDetection,n),c=this._protoViewCompiler.compileProtoViewCodeGen(new I.Expression(e),t,n,i),l=this._viewCompiler.compileComponentCodeGen(t,n,r,c.protoViews,s,a);return I.addAll(s.declarations,o),I.addAll(c.declarations,o),I.addAll(l.declarations,o),l.expression},e=d([b.Injectable(),f("design:paramtypes",[O.RuntimeMetadataResolver,x.TemplateNormalizer,R.TemplateParser,P.StyleCompiler,w.ChangeDetectionCompiler,S.ProtoViewCompiler,E.ViewCompiler,T.ResolvedMetadataCache,A.ChangeDetectorGenConfig])],e)}();t.TemplateCompiler=k;var N=function(){function e(e,t,r){this.component=e,this.directives=t,this.pipes=r}return e}();t.NormalizedComponentWithViewDirectives=N;var V=function(){function e(){this.viewFactory=null}return e.prototype.init=function(e){this.viewFactory=e},e}(),M=function(){function e(){this.directives=[],this.components=[]}return e.findUsedDirectives=function(t){var r=new e;return _.templateVisitAll(r,t),r},e.prototype.visitBoundText=function(e,t){return null},e.prototype.visitText=function(e,t){return null},e.prototype.visitNgContent=function(e,t){return null},e.prototype.visitElement=function(e,t){return _.templateVisitAll(this,e.directives),_.templateVisitAll(this,e.children),null},e.prototype.visitEmbeddedTemplate=function(e,t){return _.templateVisitAll(this,e.directives),_.templateVisitAll(this,e.children),null},e.prototype.visitVariable=function(e,t){return null},e.prototype.visitAttr=function(e,t){return null},e.prototype.visitDirective=function(e,t){return e.directive.isComponent&&this.components.push(e.directive),this.directives.push(e.directive),null},e.prototype.visitEvent=function(e,t){return null},e.prototype.visitDirectiveProperty=function(e,t){return null},e.prototype.visitElementProperty=function(e,t){return null},e}(),j=function(){function e(){this.collector=new R.PipeCollector}return e.prototype.visitBoundText=function(e,t){return e.value.visit(this.collector),null},e.prototype.visitText=function(e,t){return null},e.prototype.visitNgContent=function(e,t){return null},e.prototype.visitElement=function(e,t){return _.templateVisitAll(this,e.inputs),_.templateVisitAll(this,e.outputs),_.templateVisitAll(this,e.directives),_.templateVisitAll(this,e.children),null},e.prototype.visitEmbeddedTemplate=function(e,t){return _.templateVisitAll(this,e.outputs),_.templateVisitAll(this,e.directives),_.templateVisitAll(this,e.children),null},e.prototype.visitVariable=function(e,t){return null},e.prototype.visitAttr=function(e,t){return null},e.prototype.visitDirective=function(e,t){return _.templateVisitAll(this,e.inputs),_.templateVisitAll(this,e.hostEvents),_.templateVisitAll(this,e.hostProperties),null},e.prototype.visitEvent=function(e,t){return e.handler.visit(this.collector),null},e.prototype.visitDirectiveProperty=function(e,t){
return e.value.visit(this.collector),null},e.prototype.visitElementProperty=function(e,t){return e.value.visit(this.collector),null},e}();return u.define=p,r.exports}),System.register("angular2/src/compiler/runtime_compiler",["angular2/src/core/linker/compiler","angular2/src/core/linker/view_ref","angular2/src/compiler/template_compiler","angular2/src/core/di"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},a=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=3>o?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(3>o?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},s=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/core/linker/compiler"),l=e("angular2/src/core/linker/view_ref"),u=e("angular2/src/compiler/template_compiler"),p=e("angular2/src/core/di"),d=function(e){function t(){e.apply(this,arguments)}return o(t,e),t}(c.Compiler);t.RuntimeCompiler=d;var f=function(e){function t(t){e.call(this),this._templateCompiler=t}return o(t,e),t.prototype.compileInHost=function(e){return this._templateCompiler.compileHostComponentRuntime(e).then(function(e){return new l.HostViewFactoryRef_(e)})},t.prototype.clearCache=function(){e.prototype.clearCache.call(this),this._templateCompiler.clearCache()},t=a([p.Injectable(),s("design:paramtypes",[u.TemplateCompiler])],t)}(c.Compiler_);return t.RuntimeCompiler_=f,n.define=i,r.exports}),System.register("angular2/src/compiler/compiler",["angular2/src/compiler/runtime_compiler","angular2/src/compiler/template_compiler","angular2/src/compiler/directive_metadata","angular2/src/compiler/source_module","angular2/src/core/platform_directives_and_pipes","angular2/src/compiler/template_ast","angular2/src/compiler/template_parser","angular2/src/facade/lang","angular2/src/core/di","angular2/src/compiler/template_parser","angular2/src/compiler/html_parser","angular2/src/compiler/template_normalizer","angular2/src/compiler/runtime_metadata","angular2/src/compiler/change_detector_compiler","angular2/src/compiler/style_compiler","angular2/src/compiler/view_compiler","angular2/src/compiler/proto_view_compiler","angular2/src/compiler/template_compiler","angular2/src/core/change_detection/change_detection","angular2/src/core/linker/compiler","angular2/src/compiler/runtime_compiler","angular2/src/compiler/schema/element_schema_registry","angular2/src/compiler/schema/dom_element_schema_registry","angular2/src/compiler/url_resolver","angular2/src/core/change_detection/change_detection"],!0,function(e,t,r){function n(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}function i(){return new E.ChangeDetectorGenConfig(f.assertionsEnabled(),!1,!0)}var o=System.global,a=o.define;o.define=void 0;var s=e("angular2/src/compiler/runtime_compiler"),c=e("angular2/src/compiler/template_compiler");t.TemplateCompiler=c.TemplateCompiler;var l=e("angular2/src/compiler/directive_metadata");t.CompileDirectiveMetadata=l.CompileDirectiveMetadata,t.CompileTypeMetadata=l.CompileTypeMetadata,t.CompileTemplateMetadata=l.CompileTemplateMetadata;var u=e("angular2/src/compiler/source_module");t.SourceModule=u.SourceModule,t.SourceWithImports=u.SourceWithImports;var p=e("angular2/src/core/platform_directives_and_pipes");t.PLATFORM_DIRECTIVES=p.PLATFORM_DIRECTIVES,t.PLATFORM_PIPES=p.PLATFORM_PIPES,n(e("angular2/src/compiler/template_ast"));var d=e("angular2/src/compiler/template_parser");t.TEMPLATE_TRANSFORMS=d.TEMPLATE_TRANSFORMS;var f=e("angular2/src/facade/lang"),h=e("angular2/src/core/di"),g=e("angular2/src/compiler/template_parser"),m=e("angular2/src/compiler/html_parser"),v=e("angular2/src/compiler/template_normalizer"),y=e("angular2/src/compiler/runtime_metadata"),_=e("angular2/src/compiler/change_detector_compiler"),b=e("angular2/src/compiler/style_compiler"),C=e("angular2/src/compiler/view_compiler"),w=e("angular2/src/compiler/proto_view_compiler"),P=e("angular2/src/compiler/template_compiler"),E=e("angular2/src/core/change_detection/change_detection"),S=e("angular2/src/core/linker/compiler"),R=e("angular2/src/compiler/runtime_compiler"),x=e("angular2/src/compiler/schema/element_schema_registry"),O=e("angular2/src/compiler/schema/dom_element_schema_registry"),D=e("angular2/src/compiler/url_resolver"),A=e("angular2/src/core/change_detection/change_detection");return t.COMPILER_PROVIDERS=f.CONST_EXPR([A.Lexer,A.Parser,m.HtmlParser,g.TemplateParser,v.TemplateNormalizer,y.RuntimeMetadataResolver,D.DEFAULT_PACKAGE_URL_PROVIDER,b.StyleCompiler,w.ProtoViewCompiler,C.ViewCompiler,_.ChangeDetectionCompiler,new h.Provider(E.ChangeDetectorGenConfig,{useFactory:i,deps:[]}),P.TemplateCompiler,new h.Provider(R.RuntimeCompiler,{useClass:s.RuntimeCompiler_}),new h.Provider(S.Compiler,{useExisting:R.RuntimeCompiler}),O.DomElementSchemaRegistry,new h.Provider(x.ElementSchemaRegistry,{useExisting:O.DomElementSchemaRegistry}),D.UrlResolver]),o.define=a,r.exports}),System.register("angular2/compiler",["angular2/src/compiler/url_resolver","angular2/src/compiler/xhr","angular2/src/compiler/compiler"],!0,function(e,t,r){function n(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}var i=System.global,o=i.define;return i.define=void 0,n(e("angular2/src/compiler/url_resolver")),n(e("angular2/src/compiler/xhr")),n(e("angular2/src/compiler/compiler")),i.define=o,r.exports}),System.register("angular2/src/platform/browser_common",["angular2/src/facade/lang","angular2/src/core/di","angular2/core","angular2/common","angular2/src/core/testability/testability","angular2/src/platform/dom/dom_adapter","angular2/src/platform/dom/events/dom_events","angular2/src/platform/dom/events/key_events","angular2/src/platform/dom/events/hammer_gestures","angular2/src/platform/dom/dom_tokens","angular2/src/platform/dom/dom_renderer","angular2/src/platform/dom/shared_styles_host","angular2/src/platform/dom/shared_styles_host","angular2/src/animate/browser_details","angular2/src/animate/animation_builder","angular2/src/platform/browser/browser_adapter","angular2/src/platform/browser/testability","angular2/src/core/profile/wtf_init","angular2/src/platform/dom/events/event_manager","angular2/platform/common_dom","angular2/src/platform/dom/dom_tokens","angular2/src/platform/browser/title","angular2/platform/common_dom","angular2/src/platform/browser/browser_adapter","angular2/src/platform/browser/tools/tools"],!0,function(e,t,r){function n(){return new u.ExceptionHandler(f.DOM,!c.IS_DART)}function i(){return f.DOM.defaultDoc()}function o(){P.BrowserDomAdapter.makeCurrent(),S.wtfInit(),E.BrowserGetTestability.init()}var a=System.global,s=a.define;a.define=void 0;var c=e("angular2/src/facade/lang"),l=e("angular2/src/core/di"),u=e("angular2/core"),p=e("angular2/common"),d=e("angular2/src/core/testability/testability"),f=e("angular2/src/platform/dom/dom_adapter"),h=e("angular2/src/platform/dom/events/dom_events"),g=e("angular2/src/platform/dom/events/key_events"),m=e("angular2/src/platform/dom/events/hammer_gestures"),v=e("angular2/src/platform/dom/dom_tokens"),y=e("angular2/src/platform/dom/dom_renderer"),_=e("angular2/src/platform/dom/shared_styles_host"),b=e("angular2/src/platform/dom/shared_styles_host"),C=e("angular2/src/animate/browser_details"),w=e("angular2/src/animate/animation_builder"),P=e("angular2/src/platform/browser/browser_adapter"),E=e("angular2/src/platform/browser/testability"),S=e("angular2/src/core/profile/wtf_init"),R=e("angular2/src/platform/dom/events/event_manager"),x=e("angular2/platform/common_dom"),O=e("angular2/src/platform/dom/dom_tokens");t.DOCUMENT=O.DOCUMENT;var D=e("angular2/src/platform/browser/title");t.Title=D.Title;var A=e("angular2/platform/common_dom");t.ELEMENT_PROBE_PROVIDERS=A.ELEMENT_PROBE_PROVIDERS,t.ELEMENT_PROBE_PROVIDERS_PROD_MODE=A.ELEMENT_PROBE_PROVIDERS_PROD_MODE,t.inspectNativeElement=A.inspectNativeElement,t.By=A.By;var T=e("angular2/src/platform/browser/browser_adapter");t.BrowserDomAdapter=T.BrowserDomAdapter;var I=e("angular2/src/platform/browser/tools/tools");return t.enableDebugTools=I.enableDebugTools,t.disableDebugTools=I.disableDebugTools,t.BROWSER_PROVIDERS=c.CONST_EXPR([u.PLATFORM_COMMON_PROVIDERS,new l.Provider(u.PLATFORM_INITIALIZER,{useValue:o,multi:!0})]),t.BROWSER_APP_COMMON_PROVIDERS=c.CONST_EXPR([u.APPLICATION_COMMON_PROVIDERS,p.FORM_PROVIDERS,new l.Provider(u.PLATFORM_PIPES,{useValue:p.COMMON_PIPES,multi:!0}),new l.Provider(u.PLATFORM_DIRECTIVES,{useValue:p.COMMON_DIRECTIVES,multi:!0}),new l.Provider(u.ExceptionHandler,{useFactory:n,deps:[]}),new l.Provider(v.DOCUMENT,{useFactory:i,deps:[]}),new l.Provider(R.EVENT_MANAGER_PLUGINS,{useClass:h.DomEventsPlugin,multi:!0}),new l.Provider(R.EVENT_MANAGER_PLUGINS,{useClass:g.KeyEventsPlugin,multi:!0}),new l.Provider(R.EVENT_MANAGER_PLUGINS,{useClass:m.HammerGesturesPlugin,multi:!0}),new l.Provider(y.DomRootRenderer,{useClass:y.DomRootRenderer_}),new l.Provider(u.RootRenderer,{useExisting:y.DomRootRenderer}),new l.Provider(b.SharedStylesHost,{useExisting:_.DomSharedStylesHost}),_.DomSharedStylesHost,d.Testability,C.BrowserDetails,w.AnimationBuilder,R.EventManager,x.ELEMENT_PROBE_PROVIDERS]),t.initDomAdapter=o,a.define=s,r.exports}),System.register("angular2/platform/browser",["angular2/src/core/angular_entrypoint","angular2/src/platform/browser_common","angular2/src/facade/lang","angular2/src/platform/browser_common","angular2/compiler","angular2/core","angular2/src/core/reflection/reflection_capabilities","angular2/src/platform/browser/xhr_impl","angular2/compiler","angular2/src/core/di"],!0,function(e,t,r){function n(e,r){p.reflector.reflectionCapabilities=new d.ReflectionCapabilities;var n=c.isPresent(r)?[t.BROWSER_APP_PROVIDERS,r]:t.BROWSER_APP_PROVIDERS;return p.platform(l.BROWSER_PROVIDERS).application(n).bootstrap(e)}var i=System.global,o=i.define;i.define=void 0;var a=e("angular2/src/core/angular_entrypoint");t.AngularEntrypoint=a.AngularEntrypoint;var s=e("angular2/src/platform/browser_common");t.BROWSER_PROVIDERS=s.BROWSER_PROVIDERS,t.ELEMENT_PROBE_PROVIDERS=s.ELEMENT_PROBE_PROVIDERS,t.ELEMENT_PROBE_PROVIDERS_PROD_MODE=s.ELEMENT_PROBE_PROVIDERS_PROD_MODE,t.inspectNativeElement=s.inspectNativeElement,t.BrowserDomAdapter=s.BrowserDomAdapter,t.By=s.By,t.Title=s.Title,t.DOCUMENT=s.DOCUMENT,t.enableDebugTools=s.enableDebugTools,t.disableDebugTools=s.disableDebugTools;var c=e("angular2/src/facade/lang"),l=e("angular2/src/platform/browser_common"),u=e("angular2/compiler"),p=e("angular2/core"),d=e("angular2/src/core/reflection/reflection_capabilities"),f=e("angular2/src/platform/browser/xhr_impl"),h=e("angular2/compiler"),g=e("angular2/src/core/di");return t.BROWSER_APP_PROVIDERS=c.CONST_EXPR([l.BROWSER_APP_COMMON_PROVIDERS,u.COMPILER_PROVIDERS,new g.Provider(h.XHR,{useClass:f.XHRImpl})]),t.bootstrap=n,i.define=o,r.exports}),System.register("angular2/instrumentation",["angular2/src/core/profile/profile"],!0,function(e,t,r){var n=System.global,i=n.define;n.define=void 0;var o=e("angular2/src/core/profile/profile");return t.wtfCreateScope=o.wtfCreateScope,t.wtfLeave=o.wtfLeave,t.wtfStartTimeRange=o.wtfStartTimeRange,t.wtfEndTimeRange=o.wtfEndTimeRange,n.define=i,r.exports});
// #docplaster
// #docregion vc
import {AfterViewInit, ViewChild} from 'angular2/core';
// #docregion lv
import {Component}                from 'angular2/core';
import {CountdownTimerComponent}  from './countdown-timer.component';

// #enddocregion lv
// #enddocregion vc

//// Local variable, #timer, version
// #docregion lv
@Component({
  selector:'countdown-parent-lv',
  template: `
  <h3>Countdown to Liftoff (via local variable)</h3>
  <button (click)="timer.start()">Start</button>
  <button (click)="timer.stop()">Stop</button>
  <div class="seconds">{{timer.seconds}}</div>
  <countdown-timer #timer></countdown-timer>
  `,
  directives: [CountdownTimerComponent],
  styleUrls: ['demo.css']
})
export class CountdownLocalVarParentComponent { }
// #enddocregion lv

//// View Child version
// #docregion vc
@Component({
  selector:'countdown-parent-vc',
  template: `
  <h3>Countdown to Liftoff (via ViewChild)</h3>
  <button (click)="start()">Start</button>
  <button (click)="stop()">Stop</button>
  <div class="seconds">{{ seconds() }}</div>
  <countdown-timer></countdown-timer>
  `,
  directives: [CountdownTimerComponent],
  styleUrls: ['demo.css']
})
export class CountdownViewChildParentComponent implements AfterViewInit {

  @ViewChild(CountdownTimerComponent)
  private _timerComponent:CountdownTimerComponent;

  seconds() { return 0; }

  ngAfterViewInit() {
    // Redefine `seconds()` to get from the `CountdownTimerComponent.seconds` ...
    // but wait a tick first to avoid one-time devMode
    // unidirectional-data-flow-violation error
    setTimeout(() => this.seconds = () => this._timerComponent.seconds, 0)
  }

  start(){ this._timerComponent.start(); }
  stop() { this._timerComponent.stop(); }
}
// #enddocregion vc