Built with blockbuilder.org
Last active
June 14, 2017 21:47
-
-
Save cramhead/5284c1a8c5ad7eb1f3f2efa7428f2e86 to your computer and use it in GitHub Desktop.
tree example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
license: mit |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"chunks": [{ | |
"id": 0, | |
"rendered": true, | |
"initial": true, | |
"entry": false, | |
"extraAsync": false, | |
"size": 603822, | |
"names": ["main"], | |
"files": ["js/main.js", "js/main.js.map"], | |
"hash": "96570d6b517ea42b5361", | |
"parents": [2], | |
"modules": [{ | |
"id": "./node_modules/chain-function/index.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/chain-function/index.js", | |
"name": "./~/chain-function/index.js", | |
"index": 719, | |
"index2": 709, | |
"size": 476, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js", | |
"issuerId": "./node_modules/react-transition-group/TransitionGroup.js", | |
"issuerName": "./~/react-transition-group/TransitionGroup.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/react-transition-group/TransitionGroup.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js", | |
"module": "./~/react-transition-group/TransitionGroup.js", | |
"moduleName": "./~/react-transition-group/TransitionGroup.js", | |
"type": "cjs require", | |
"userRequest": "chain-function", | |
"loc": "7:21-46" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 8, | |
"source": "\r\nmodule.exports = function chain(){\r\n var len = arguments.length\r\n var args = [];\r\n\r\n for (var i = 0; i < len; i++)\r\n args[i] = arguments[i]\r\n\r\n args = args.filter(function(fn){ return fn != null })\r\n\r\n if (args.length === 0) return undefined\r\n if (args.length === 1) return args[0]\r\n\r\n return args.reduce(function(current, next){\r\n return function chainedFunction() {\r\n current.apply(this, arguments);\r\n next.apply(this, arguments);\r\n };\r\n })\r\n}\r\n" | |
}, { | |
"id": "./node_modules/dom-helpers/class/addClass.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/class/addClass.js", | |
"name": "./~/dom-helpers/class/addClass.js", | |
"index": 723, | |
"index2": 714, | |
"size": 536, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"issuerId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"issuerName": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"module": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"moduleName": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"type": "cjs require", | |
"userRequest": "dom-helpers/class/addClass", | |
"loc": "7:16-53" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 9, | |
"source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addClass;\n\nvar _hasClass = require('./hasClass');\n\nvar _hasClass2 = _interopRequireDefault(_hasClass);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass2.default)(element)) element.className = element.className + ' ' + className;\n}\nmodule.exports = exports['default'];" | |
}, { | |
"id": "./node_modules/dom-helpers/class/hasClass.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/class/hasClass.js", | |
"name": "./~/dom-helpers/class/hasClass.js", | |
"index": 724, | |
"index2": 713, | |
"size": 354, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/class/addClass.js", | |
"issuerId": "./node_modules/dom-helpers/class/addClass.js", | |
"issuerName": "./~/dom-helpers/class/addClass.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/dom-helpers/class/addClass.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/class/addClass.js", | |
"module": "./~/dom-helpers/class/addClass.js", | |
"moduleName": "./~/dom-helpers/class/addClass.js", | |
"type": "cjs require", | |
"userRequest": "./hasClass", | |
"loc": "8:16-37" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 10, | |
"source": "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hasClass;\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + element.className + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\nmodule.exports = exports[\"default\"];" | |
}, { | |
"id": "./node_modules/dom-helpers/class/removeClass.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/class/removeClass.js", | |
"name": "./~/dom-helpers/class/removeClass.js", | |
"index": 725, | |
"index2": 715, | |
"size": 297, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"issuerId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"issuerName": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"module": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"moduleName": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"type": "cjs require", | |
"userRequest": "dom-helpers/class/removeClass", | |
"loc": "11:19-59" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 9, | |
"source": "'use strict';\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\\\s)' + className + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n};" | |
}, { | |
"id": "./node_modules/dom-helpers/transition/properties.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/transition/properties.js", | |
"name": "./~/dom-helpers/transition/properties.js", | |
"index": 728, | |
"index2": 718, | |
"size": 3614, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"issuerId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"issuerName": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"module": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"moduleName": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"type": "cjs require", | |
"userRequest": "dom-helpers/transition/properties", | |
"loc": "19:18-62" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 9, | |
"source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = undefined;\n\nvar _inDOM = require('../util/inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar transform = 'transform';\nvar prefix = void 0,\n transitionEnd = void 0,\n animationEnd = void 0;\nvar transitionProperty = void 0,\n transitionDuration = void 0,\n transitionTiming = void 0,\n transitionDelay = void 0;\nvar animationName = void 0,\n animationDuration = void 0,\n animationTiming = void 0,\n animationDelay = void 0;\n\nif (_inDOM2.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n\n\n exports.transform = transform = prefix + '-' + transform;\n exports.transitionProperty = transitionProperty = prefix + '-transition-property';\n exports.transitionDuration = transitionDuration = prefix + '-transition-duration';\n exports.transitionDelay = transitionDelay = prefix + '-transition-delay';\n exports.transitionTiming = transitionTiming = prefix + '-transition-timing-function';\n\n exports.animationName = animationName = prefix + '-animation-name';\n exports.animationDuration = animationDuration = prefix + '-animation-duration';\n exports.animationTiming = animationTiming = prefix + '-animation-delay';\n exports.animationDelay = animationDelay = prefix + '-animation-timing-function';\n}\n\nexports.transform = transform;\nexports.transitionProperty = transitionProperty;\nexports.transitionTiming = transitionTiming;\nexports.transitionDelay = transitionDelay;\nexports.transitionDuration = transitionDuration;\nexports.transitionEnd = transitionEnd;\nexports.animationName = animationName;\nexports.animationDuration = animationDuration;\nexports.animationTiming = animationTiming;\nexports.animationDelay = animationDelay;\nexports.animationEnd = animationEnd;\nexports.default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\n\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n\n var vendorMap = {\n O: function O(e) {\n return 'o' + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return 'webkit' + e;\n },\n ms: function ms(e) {\n return 'MS' + e;\n }\n };\n\n var vendors = Object.keys(vendorMap);\n\n var transitionEnd = void 0,\n animationEnd = void 0;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + 'TransitionProperty' in style) {\n prefix = '-' + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n\n style = null;\n\n return { animationEnd: animationEnd, transitionEnd: transitionEnd, prefix: prefix };\n}" | |
}, { | |
"id": "./node_modules/dom-helpers/util/inDOM.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/util/inDOM.js", | |
"name": "./~/dom-helpers/util/inDOM.js", | |
"index": 727, | |
"index2": 716, | |
"size": 221, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/util/requestAnimationFrame.js", | |
"issuerId": "./node_modules/dom-helpers/util/requestAnimationFrame.js", | |
"issuerName": "./~/dom-helpers/util/requestAnimationFrame.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/dom-helpers/util/requestAnimationFrame.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/util/requestAnimationFrame.js", | |
"module": "./~/dom-helpers/util/requestAnimationFrame.js", | |
"moduleName": "./~/dom-helpers/util/requestAnimationFrame.js", | |
"type": "cjs require", | |
"userRequest": "./inDOM", | |
"loc": "7:13-31" | |
}, { | |
"moduleId": "./node_modules/dom-helpers/transition/properties.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/transition/properties.js", | |
"module": "./~/dom-helpers/transition/properties.js", | |
"moduleName": "./~/dom-helpers/transition/properties.js", | |
"type": "cjs require", | |
"userRequest": "../util/inDOM", | |
"loc": "8:13-37" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 10, | |
"source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nmodule.exports = exports['default'];" | |
}, { | |
"id": "./node_modules/dom-helpers/util/requestAnimationFrame.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/dom-helpers/util/requestAnimationFrame.js", | |
"name": "./~/dom-helpers/util/requestAnimationFrame.js", | |
"index": 726, | |
"index2": 717, | |
"size": 1264, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"issuerId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"issuerName": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"module": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"moduleName": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"type": "cjs require", | |
"userRequest": "dom-helpers/util/requestAnimationFrame", | |
"loc": "15:29-78" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 9, | |
"source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inDOM = require('./inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar vendors = ['', 'webkit', 'moz', 'o', 'ms'];\nvar cancel = 'clearTimeout';\nvar raf = fallback;\nvar compatRaf = void 0;\n\nvar getKey = function getKey(vendor, k) {\n return vendor + (!vendor ? k : k[0].toUpperCase() + k.substr(1)) + 'AnimationFrame';\n};\n\nif (_inDOM2.default) {\n vendors.some(function (vendor) {\n var rafKey = getKey(vendor, 'request');\n\n if (rafKey in window) {\n cancel = getKey(vendor, 'cancel');\n return raf = function raf(cb) {\n return window[rafKey](cb);\n };\n }\n });\n}\n\n/* https://github.com/component/raf */\nvar prev = new Date().getTime();\nfunction fallback(fn) {\n var curr = new Date().getTime(),\n ms = Math.max(0, 16 - (curr - prev)),\n req = setTimeout(fn, ms);\n\n prev = curr;\n return req;\n}\n\ncompatRaf = function compatRaf(cb) {\n return raf(cb);\n};\ncompatRaf.cancel = function (id) {\n window[cancel] && typeof window[cancel] === 'function' && window[cancel](id);\n};\nexports.default = compatRaf;\nmodule.exports = exports['default'];" | |
}, { | |
"id": "./node_modules/prop-types/factoryWithThrowingShims.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/prop-types/factoryWithThrowingShims.js", | |
"name": "./~/prop-types/factoryWithThrowingShims.js", | |
"index": 711, | |
"index2": 700, | |
"size": 1594, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/prop-types/index.js", | |
"issuerId": "./node_modules/prop-types/index.js", | |
"issuerName": "./~/prop-types/index.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/prop-types/index.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/prop-types/index.js", | |
"module": "./~/prop-types/index.js", | |
"moduleName": "./~/prop-types/index.js", | |
"type": "cjs require", | |
"userRequest": "./factoryWithThrowingShims", | |
"loc": "29:19-56" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 6, | |
"source": "/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n" | |
}, { | |
"id": "./node_modules/prop-types/index.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/prop-types/index.js", | |
"name": "./~/prop-types/index.js", | |
"index": 710, | |
"index2": 701, | |
"size": 1078, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/FocusObserver.tsx", | |
"issuerId": "./src/apollo-builder/ui/FocusObserver.tsx", | |
"issuerName": "./src/apollo-builder/ui/FocusObserver.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/ui/FocusObserver.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/FocusObserver.tsx", | |
"module": "./src/apollo-builder/ui/FocusObserver.tsx", | |
"moduleName": "./src/apollo-builder/ui/FocusObserver.tsx", | |
"type": "harmony import", | |
"userRequest": "prop-types", | |
"loc": "13:0-40" | |
}, { | |
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroup.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js", | |
"module": "./~/react-transition-group/CSSTransitionGroup.js", | |
"moduleName": "./~/react-transition-group/CSSTransitionGroup.js", | |
"type": "cjs require", | |
"userRequest": "prop-types", | |
"loc": "11:17-38" | |
}, { | |
"moduleId": "./node_modules/react-transition-group/TransitionGroup.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js", | |
"module": "./~/react-transition-group/TransitionGroup.js", | |
"moduleName": "./~/react-transition-group/TransitionGroup.js", | |
"type": "cjs require", | |
"userRequest": "prop-types", | |
"loc": "15:17-38" | |
}, { | |
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"module": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"moduleName": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"type": "cjs require", | |
"userRequest": "prop-types", | |
"loc": "25:17-38" | |
}, { | |
"moduleId": "./node_modules/react-transition-group/utils/PropTypes.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/utils/PropTypes.js", | |
"module": "./~/react-transition-group/utils/PropTypes.js", | |
"moduleName": "./~/react-transition-group/utils/PropTypes.js", | |
"type": "cjs require", | |
"userRequest": "prop-types", | |
"loc": "11:17-38" | |
}, { | |
"moduleId": "./src/apollo-builder/design/EditableText/control/component.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/component.tsx", | |
"module": "./src/apollo-builder/design/EditableText/control/component.tsx", | |
"moduleName": "./src/apollo-builder/design/EditableText/control/component.tsx", | |
"type": "harmony import", | |
"userRequest": "prop-types", | |
"loc": "13:0-40" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 5, | |
"source": "/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n" | |
}, { | |
"id": "./node_modules/react-scrollbar-patch/dist/scrollArea.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-scrollbar-patch/dist/scrollArea.js", | |
"name": "./~/react-scrollbar-patch/dist/scrollArea.js", | |
"index": 731, | |
"index2": 724, | |
"size": 389482, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx", | |
"issuerId": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"issuerName": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx", | |
"module": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"moduleName": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"type": "harmony import", | |
"userRequest": "react-scrollbar-patch", | |
"loc": "3:0-47" | |
}], | |
"usedExports": ["default"], | |
"providedExports": null, | |
"depth": 7, | |
"source": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ScrollArea\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"ScrollArea\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\t__webpack_require__(1);\n\t\n\tvar _ScrollArea = __webpack_require__(5);\n\t\n\tvar _ScrollArea2 = _interopRequireDefault(_ScrollArea);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\texports.default = _ScrollArea2.default;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(2);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(4)(content, {});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js!../../node_modules/less-loader/index.js!./scrollArea.less\", function() {\n\t\t\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js!../../node_modules/less-loader/index.js!./scrollArea.less\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(3)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".scrollarea-content {\\n margin: 0;\\n padding: 0;\\n overflow: hidden;\\n position: relative;\\n}\\n.scrollarea-content:focus {\\n outline: 0;\\n}\\n.scrollarea {\\n position: relative;\\n overflow: hidden;\\n}\\n.scrollarea .scrollbar-container {\\n position: absolute;\\n background: none;\\n opacity: .1;\\n z-index: 9999;\\n -webkit-transition: all .4s;\\n -moz-transition: all .4s;\\n -ms-transition: all .4s;\\n -o-transition: all .4s;\\n transition: all .4s;\\n}\\n.scrollarea .scrollbar-container.horizontal {\\n width: 100%;\\n height: 10px;\\n left: 0;\\n bottom: 0;\\n}\\n.scrollarea .scrollbar-container.horizontal .scrollbar {\\n width: 20px;\\n height: 8px;\\n background: black;\\n margin-top: 1px;\\n}\\n.scrollarea .scrollbar-container.vertical {\\n width: 10px;\\n height: 100%;\\n right: 0;\\n top: 0;\\n}\\n.scrollarea .scrollbar-container.vertical .scrollbar {\\n width: 8px;\\n height: 20px;\\n background: black;\\n margin-left: 1px;\\n}\\n.scrollarea .scrollbar-container:hover {\\n background: gray;\\n opacity: .6 !important;\\n}\\n.scrollarea .scrollbar-container.active {\\n background: gray;\\n opacity: .6 !important;\\n}\\n.scrollarea:hover .scrollbar-container {\\n opacity: .3;\\n}\\n\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t/*\r\n\t\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\t\tAuthor Tobias Koppers @sokra\r\n\t*/\r\n\t// css base code, injected by the css-loader\r\n\tmodule.exports = function() {\r\n\t\tvar list = [];\r\n\t\r\n\t\t// return the list of modules as css string\r\n\t\tlist.toString = function toString() {\r\n\t\t\tvar result = [];\r\n\t\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\t\tvar item = this[i];\r\n\t\t\t\tif(item[2]) {\r\n\t\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.push(item[1]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn result.join(\"\");\r\n\t\t};\r\n\t\r\n\t\t// import a list of modules into the list\r\n\t\tlist.i = function(modules, mediaQuery) {\r\n\t\t\tif(typeof modules === \"string\")\r\n\t\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\t\tvar alreadyImportedModules = {};\r\n\t\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\t\tvar id = this[i][0];\r\n\t\t\t\tif(typeof id === \"number\")\r\n\t\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t\t}\r\n\t\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\t\tvar item = modules[i];\r\n\t\t\t\t// skip already imported module\r\n\t\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t\t// when a module is imported multiple times with different media queries.\r\n\t\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlist.push(item);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn list;\r\n\t};\r\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/*\n\t\tMIT License http://www.opensource.org/licenses/mit-license.php\n\t\tAuthor Tobias Koppers @sokra\n\t*/\n\tvar stylesInDom = {},\n\t\tmemoize = function(fn) {\n\t\t\tvar memo;\n\t\t\treturn function () {\n\t\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\t\treturn memo;\n\t\t\t};\n\t\t},\n\t\tisOldIE = memoize(function() {\n\t\t\treturn /msie [6-9]\\b/.test(self.navigator.userAgent.toLowerCase());\n\t\t}),\n\t\tgetHeadElement = memoize(function () {\n\t\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t\t}),\n\t\tsingletonElement = null,\n\t\tsingletonCounter = 0,\n\t\tstyleElementsInsertedAtTop = [];\n\t\n\tmodule.exports = function(list, options) {\n\t\tif(false) {\n\t\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t\t}\n\t\n\t\toptions = options || {};\n\t\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t\t// tags it will allow on a page\n\t\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\n\t\n\t\t// By default, add <style> tags to the bottom of <head>.\n\t\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\n\t\n\t\tvar styles = listToStyles(list);\n\t\taddStylesToDom(styles, options);\n\t\n\t\treturn function update(newList) {\n\t\t\tvar mayRemove = [];\n\t\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\t\tvar item = styles[i];\n\t\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\t\tdomStyle.refs--;\n\t\t\t\tmayRemove.push(domStyle);\n\t\t\t}\n\t\t\tif(newList) {\n\t\t\t\tvar newStyles = listToStyles(newList);\n\t\t\t\taddStylesToDom(newStyles, options);\n\t\t\t}\n\t\t\tfor(var i = 0; i < mayRemove.length; i++) {\n\t\t\t\tvar domStyle = mayRemove[i];\n\t\t\t\tif(domStyle.refs === 0) {\n\t\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\n\t\t\t\t\t\tdomStyle.parts[j]();\n\t\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\t\n\tfunction addStylesToDom(styles, options) {\n\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\tif(domStyle) {\n\t\t\t\tdomStyle.refs++;\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t\t}\n\t\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar parts = [];\n\t\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t\t}\n\t\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfunction listToStyles(list) {\n\t\tvar styles = [];\n\t\tvar newStyles = {};\n\t\tfor(var i = 0; i < list.length; i++) {\n\t\t\tvar item = list[i];\n\t\t\tvar id = item[0];\n\t\t\tvar css = item[1];\n\t\t\tvar media = item[2];\n\t\t\tvar sourceMap = item[3];\n\t\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\t\t\tif(!newStyles[id])\n\t\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\n\t\t\telse\n\t\t\t\tnewStyles[id].parts.push(part);\n\t\t}\n\t\treturn styles;\n\t}\n\t\n\tfunction insertStyleElement(options, styleElement) {\n\t\tvar head = getHeadElement();\n\t\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\n\t\tif (options.insertAt === \"top\") {\n\t\t\tif(!lastStyleElementInsertedAtTop) {\n\t\t\t\thead.insertBefore(styleElement, head.firstChild);\n\t\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\n\t\t\t} else {\n\t\t\t\thead.appendChild(styleElement);\n\t\t\t}\n\t\t\tstyleElementsInsertedAtTop.push(styleElement);\n\t\t} else if (options.insertAt === \"bottom\") {\n\t\t\thead.appendChild(styleElement);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n\t\t}\n\t}\n\t\n\tfunction removeStyleElement(styleElement) {\n\t\tstyleElement.parentNode.removeChild(styleElement);\n\t\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\n\t\tif(idx >= 0) {\n\t\t\tstyleElementsInsertedAtTop.splice(idx, 1);\n\t\t}\n\t}\n\t\n\tfunction createStyleElement(options) {\n\t\tvar styleElement = document.createElement(\"style\");\n\t\tstyleElement.type = \"text/css\";\n\t\tinsertStyleElement(options, styleElement);\n\t\treturn styleElement;\n\t}\n\t\n\tfunction createLinkElement(options) {\n\t\tvar linkElement = document.createElement(\"link\");\n\t\tlinkElement.rel = \"stylesheet\";\n\t\tinsertStyleElement(options, linkElement);\n\t\treturn linkElement;\n\t}\n\t\n\tfunction addStyle(obj, options) {\n\t\tvar styleElement, update, remove;\n\t\n\t\tif (options.singleton) {\n\t\t\tvar styleIndex = singletonCounter++;\n\t\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\n\t\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\n\t\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\n\t\t} else if(obj.sourceMap &&\n\t\t\ttypeof URL === \"function\" &&\n\t\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\t\ttypeof Blob === \"function\" &&\n\t\t\ttypeof btoa === \"function\") {\n\t\t\tstyleElement = createLinkElement(options);\n\t\t\tupdate = updateLink.bind(null, styleElement);\n\t\t\tremove = function() {\n\t\t\t\tremoveStyleElement(styleElement);\n\t\t\t\tif(styleElement.href)\n\t\t\t\t\tURL.revokeObjectURL(styleElement.href);\n\t\t\t};\n\t\t} else {\n\t\t\tstyleElement = createStyleElement(options);\n\t\t\tupdate = applyToTag.bind(null, styleElement);\n\t\t\tremove = function() {\n\t\t\t\tremoveStyleElement(styleElement);\n\t\t\t};\n\t\t}\n\t\n\t\tupdate(obj);\n\t\n\t\treturn function updateStyle(newObj) {\n\t\t\tif(newObj) {\n\t\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\n\t\t\t\t\treturn;\n\t\t\t\tupdate(obj = newObj);\n\t\t\t} else {\n\t\t\t\tremove();\n\t\t\t}\n\t\t};\n\t}\n\t\n\tvar replaceText = (function () {\n\t\tvar textStore = [];\n\t\n\t\treturn function (index, replacement) {\n\t\t\ttextStore[index] = replacement;\n\t\t\treturn textStore.filter(Boolean).join('\\n');\n\t\t};\n\t})();\n\t\n\tfunction applyToSingletonTag(styleElement, index, remove, obj) {\n\t\tvar css = remove ? \"\" : obj.css;\n\t\n\t\tif (styleElement.styleSheet) {\n\t\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\n\t\t} else {\n\t\t\tvar cssNode = document.createTextNode(css);\n\t\t\tvar childNodes = styleElement.childNodes;\n\t\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\n\t\t\tif (childNodes.length) {\n\t\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\n\t\t\t} else {\n\t\t\t\tstyleElement.appendChild(cssNode);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfunction applyToTag(styleElement, obj) {\n\t\tvar css = obj.css;\n\t\tvar media = obj.media;\n\t\n\t\tif(media) {\n\t\t\tstyleElement.setAttribute(\"media\", media)\n\t\t}\n\t\n\t\tif(styleElement.styleSheet) {\n\t\t\tstyleElement.styleSheet.cssText = css;\n\t\t} else {\n\t\t\twhile(styleElement.firstChild) {\n\t\t\t\tstyleElement.removeChild(styleElement.firstChild);\n\t\t\t}\n\t\t\tstyleElement.appendChild(document.createTextNode(css));\n\t\t}\n\t}\n\t\n\tfunction updateLink(linkElement, obj) {\n\t\tvar css = obj.css;\n\t\tvar sourceMap = obj.sourceMap;\n\t\n\t\tif(sourceMap) {\n\t\t\t// http://stackoverflow.com/a/26603875\n\t\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t\t}\n\t\n\t\tvar blob = new Blob([css], { type: \"text/css\" });\n\t\n\t\tvar oldSrc = linkElement.href;\n\t\n\t\tlinkElement.href = URL.createObjectURL(blob);\n\t\n\t\tif(oldSrc)\n\t\t\tURL.revokeObjectURL(oldSrc);\n\t}\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(6);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _Scrollbar = __webpack_require__(7);\n\t\n\tvar _Scrollbar2 = _interopRequireDefault(_Scrollbar);\n\t\n\tvar _utils = __webpack_require__(32);\n\t\n\tvar _lineHeight2 = __webpack_require__(33);\n\t\n\tvar _lineHeight3 = _interopRequireDefault(_lineHeight2);\n\t\n\tvar _reactMotion = __webpack_require__(8);\n\t\n\tvar _propTypes = __webpack_require__(18);\n\t\n\tvar _propTypes2 = _interopRequireDefault(_propTypes);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar eventTypes = {\n\t wheel: 'wheel',\n\t api: 'api',\n\t touch: 'touch',\n\t touchEnd: 'touchEnd',\n\t mousemove: 'mousemove',\n\t keyPress: 'keypress'\n\t};\n\t\n\tvar ScrollArea = function (_React$Component) {\n\t _inherits(ScrollArea, _React$Component);\n\t\n\t function ScrollArea(props) {\n\t _classCallCheck(this, ScrollArea);\n\t\n\t var _this = _possibleConstructorReturn(this, (ScrollArea.__proto__ || Object.getPrototypeOf(ScrollArea)).call(this, props));\n\t\n\t _this.state = {\n\t topPosition: 0,\n\t leftPosition: 0,\n\t realHeight: 0,\n\t containerHeight: 0,\n\t realWidth: 0,\n\t containerWidth: 0\n\t };\n\t\n\t _this.scrollArea = {\n\t refresh: function refresh() {\n\t _this.setSizesToState();\n\t },\n\t scrollTop: function scrollTop() {\n\t _this.scrollTop();\n\t },\n\t scrollBottom: function scrollBottom() {\n\t _this.scrollBottom();\n\t },\n\t scrollYTo: function scrollYTo(position) {\n\t _this.scrollYTo(position);\n\t },\n\t scrollLeft: function scrollLeft() {\n\t _this.scrollLeft();\n\t },\n\t scrollRight: function scrollRight() {\n\t _this.scrollRight();\n\t },\n\t scrollXTo: function scrollXTo(position) {\n\t _this.scrollXTo(position);\n\t }\n\t };\n\t\n\t _this.evntsPreviousValues = {\n\t clientX: 0,\n\t clientY: 0,\n\t deltaX: 0,\n\t deltaY: 0\n\t };\n\t\n\t _this.bindedHandleWindowResize = _this.handleWindowResize.bind(_this);\n\t return _this;\n\t }\n\t\n\t _createClass(ScrollArea, [{\n\t key: 'getChildContext',\n\t value: function getChildContext() {\n\t return {\n\t scrollArea: this.scrollArea\n\t };\n\t }\n\t }, {\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t if (this.props.contentWindow) {\n\t this.props.contentWindow.addEventListener(\"resize\", this.bindedHandleWindowResize);\n\t }\n\t this.lineHeightPx = (0, _lineHeight3.default)((0, _utils.findDOMNode)(this.content));\n\t this.setSizesToState();\n\t }\n\t }, {\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t if (this.props.contentWindow) {\n\t this.props.contentWindow.removeEventListener(\"resize\", this.bindedHandleWindowResize);\n\t }\n\t }\n\t }, {\n\t key: 'componentDidUpdate',\n\t value: function componentDidUpdate() {\n\t this.setSizesToState();\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props,\n\t children = _props.children,\n\t className = _props.className,\n\t contentClassName = _props.contentClassName,\n\t ownerDocument = _props.ownerDocument;\n\t\n\t var withMotion = this.props.smoothScrolling && (this.state.eventType === eventTypes.wheel || this.state.eventType === eventTypes.api || this.state.eventType === eventTypes.touchEnd || this.state.eventType === eventTypes.keyPress);\n\t\n\t var scrollbarY = this.canScrollY() ? _react2.default.createElement(_Scrollbar2.default, {\n\t ownerDocument: ownerDocument,\n\t realSize: this.state.realHeight,\n\t containerSize: this.state.containerHeight,\n\t position: this.state.topPosition,\n\t onMove: this.handleScrollbarMove.bind(this),\n\t onPositionChange: this.handleScrollbarYPositionChange.bind(this),\n\t containerStyle: this.props.verticalContainerStyle,\n\t scrollbarStyle: this.props.verticalScrollbarStyle,\n\t smoothScrolling: withMotion,\n\t minScrollSize: this.props.minScrollSize,\n\t onFocus: this.focusContent.bind(this),\n\t type: 'vertical' }) : null;\n\t\n\t var scrollbarX = this.canScrollX() ? _react2.default.createElement(_Scrollbar2.default, {\n\t ownerDocument: ownerDocument,\n\t realSize: this.state.realWidth,\n\t containerSize: this.state.containerWidth,\n\t position: this.state.leftPosition,\n\t onMove: this.handleScrollbarMove.bind(this),\n\t onPositionChange: this.handleScrollbarXPositionChange.bind(this),\n\t containerStyle: this.props.horizontalContainerStyle,\n\t scrollbarStyle: this.props.horizontalScrollbarStyle,\n\t smoothScrolling: withMotion,\n\t minScrollSize: this.props.minScrollSize,\n\t onFocus: this.focusContent.bind(this),\n\t type: 'horizontal' }) : null;\n\t\n\t if (typeof children === 'function') {\n\t (0, _utils.warnAboutFunctionChild)();\n\t children = children();\n\t } else {\n\t (0, _utils.warnAboutElementChild)();\n\t }\n\t\n\t var classes = 'scrollarea ' + (className || '');\n\t var contentClasses = 'scrollarea-content ' + (contentClassName || '');\n\t\n\t var contentStyle = {\n\t marginTop: -this.state.topPosition,\n\t marginLeft: -this.state.leftPosition\n\t };\n\t var springifiedContentStyle = withMotion ? (0, _utils.modifyObjValues)(contentStyle, function (x) {\n\t return (0, _reactMotion.spring)(x);\n\t }) : contentStyle;\n\t\n\t return _react2.default.createElement(\n\t _reactMotion.Motion,\n\t { style: springifiedContentStyle },\n\t function (style) {\n\t return _react2.default.createElement(\n\t 'div',\n\t {\n\t ref: function ref(x) {\n\t return _this2.wrapper = x;\n\t },\n\t className: classes,\n\t style: _this2.props.style,\n\t onWheel: _this2.handleWheel.bind(_this2)\n\t },\n\t _react2.default.createElement(\n\t 'div',\n\t {\n\t ref: function ref(x) {\n\t return _this2.content = x;\n\t },\n\t style: _extends({}, _this2.props.contentStyle, style),\n\t className: contentClasses,\n\t onTouchStart: _this2.handleTouchStart.bind(_this2),\n\t onTouchMove: _this2.handleTouchMove.bind(_this2),\n\t onTouchEnd: _this2.handleTouchEnd.bind(_this2),\n\t onKeyDown: _this2.handleKeyDown.bind(_this2),\n\t tabIndex: _this2.props.focusableTabIndex\n\t },\n\t children\n\t ),\n\t scrollbarY,\n\t scrollbarX\n\t );\n\t }\n\t );\n\t }\n\t }, {\n\t key: 'setStateFromEvent',\n\t value: function setStateFromEvent(newState, eventType) {\n\t if (this.props.onScroll) {\n\t this.props.onScroll(newState);\n\t }\n\t this.setState(_extends({}, newState, { eventType: eventType }));\n\t }\n\t }, {\n\t key: 'handleTouchStart',\n\t value: function handleTouchStart(e) {\n\t var touches = e.touches;\n\t\n\t if (touches.length === 1) {\n\t var _touches$ = touches[0],\n\t clientX = _touches$.clientX,\n\t clientY = _touches$.clientY;\n\t\n\t this.eventPreviousValues = _extends({}, this.eventPreviousValues, {\n\t clientY: clientY,\n\t clientX: clientX,\n\t timestamp: Date.now()\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'handleTouchMove',\n\t value: function handleTouchMove(e) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\t\n\t var touches = e.touches;\n\t\n\t if (touches.length === 1) {\n\t var _touches$2 = touches[0],\n\t clientX = _touches$2.clientX,\n\t clientY = _touches$2.clientY;\n\t\n\t\n\t var deltaY = this.eventPreviousValues.clientY - clientY;\n\t var deltaX = this.eventPreviousValues.clientX - clientX;\n\t\n\t this.eventPreviousValues = _extends({}, this.eventPreviousValues, {\n\t deltaY: deltaY,\n\t deltaX: deltaX,\n\t clientY: clientY,\n\t clientX: clientX,\n\t timestamp: Date.now()\n\t });\n\t\n\t this.setStateFromEvent(this.composeNewState(-deltaX, -deltaY));\n\t }\n\t }\n\t }, {\n\t key: 'handleTouchEnd',\n\t value: function handleTouchEnd(e) {\n\t var _eventPreviousValues = this.eventPreviousValues,\n\t deltaX = _eventPreviousValues.deltaX,\n\t deltaY = _eventPreviousValues.deltaY,\n\t timestamp = _eventPreviousValues.timestamp;\n\t\n\t if (typeof deltaX === 'undefined') deltaX = 0;\n\t if (typeof deltaY === 'undefined') deltaY = 0;\n\t if (Date.now() - timestamp < 200) {\n\t this.setStateFromEvent(this.composeNewState(-deltaX * 10, -deltaY * 10), eventTypes.touchEnd);\n\t }\n\t\n\t this.eventPreviousValues = _extends({}, this.eventPreviousValues, {\n\t deltaY: 0,\n\t deltaX: 0\n\t });\n\t }\n\t }, {\n\t key: 'handleScrollbarMove',\n\t value: function handleScrollbarMove(deltaY, deltaX) {\n\t this.setStateFromEvent(this.composeNewState(deltaX, deltaY));\n\t }\n\t }, {\n\t key: 'handleScrollbarXPositionChange',\n\t value: function handleScrollbarXPositionChange(position) {\n\t this.scrollXTo(position);\n\t }\n\t }, {\n\t key: 'handleScrollbarYPositionChange',\n\t value: function handleScrollbarYPositionChange(position) {\n\t this.scrollYTo(position);\n\t }\n\t }, {\n\t key: 'handleWheel',\n\t value: function handleWheel(e) {\n\t var deltaY = e.deltaY;\n\t var deltaX = e.deltaX;\n\t\n\t if (this.props.swapWheelAxes) {\n\t var _ref = [deltaX, deltaY];\n\t deltaY = _ref[0];\n\t deltaX = _ref[1];\n\t }\n\t\n\t /*\n\t * WheelEvent.deltaMode can differ between browsers and must be normalized\n\t * e.deltaMode === 0: The delta values are specified in pixels\n\t * e.deltaMode === 1: The delta values are specified in lines\n\t * https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaMode\n\t */\n\t if (e.deltaMode === 1) {\n\t deltaY = deltaY * this.lineHeightPx;\n\t deltaX = deltaX * this.lineHeightPx;\n\t }\n\t\n\t deltaY = deltaY * this.props.speed;\n\t deltaX = deltaX * this.props.speed;\n\t\n\t var newState = this.composeNewState(-deltaX, -deltaY);\n\t\n\t if (newState.topPosition && this.state.topPosition !== newState.topPosition || newState.leftPosition && this.state.leftPosition !== newState.leftPosition || this.props.stopScrollPropagation) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\t }\n\t\n\t this.setStateFromEvent(newState, eventTypes.wheel);\n\t this.focusContent();\n\t }\n\t }, {\n\t key: 'handleKeyDown',\n\t value: function handleKeyDown(e) {\n\t // only handle if scroll area is in focus\n\t if (e.target.tagName.toLowerCase() !== 'input') {\n\t var deltaY = 0;\n\t var deltaX = 0;\n\t var _lineHeight = this.lineHeightPx ? this.lineHeightPx : 10;\n\t\n\t switch (e.keyCode) {\n\t case 33:\n\t // page up\n\t deltaY = this.state.containerHeight - _lineHeight;\n\t break;\n\t case 34:\n\t // page down\n\t deltaY = -this.state.containerHeight + _lineHeight;\n\t break;\n\t case 37:\n\t // left\n\t deltaX = _lineHeight;\n\t break;\n\t case 38:\n\t // up\n\t deltaY = _lineHeight;\n\t break;\n\t case 39:\n\t // right\n\t deltaX = -_lineHeight;\n\t break;\n\t case 40:\n\t // down\n\t deltaY = -_lineHeight;\n\t break;\n\t }\n\t\n\t // only compose new state if key code matches those above\n\t if (deltaY !== 0 || deltaX !== 0) {\n\t var newState = this.composeNewState(deltaX, deltaY);\n\t\n\t e.preventDefault();\n\t e.stopPropagation();\n\t\n\t this.setStateFromEvent(newState, eventTypes.keyPress);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'handleWindowResize',\n\t value: function handleWindowResize() {\n\t var newState = this.computeSizes();\n\t newState = this.getModifiedPositionsIfNeeded(newState);\n\t this.setStateFromEvent(newState);\n\t }\n\t }, {\n\t key: 'composeNewState',\n\t value: function composeNewState(deltaX, deltaY) {\n\t var newState = this.computeSizes();\n\t\n\t if (this.canScrollY(newState)) {\n\t newState.topPosition = this.computeTopPosition(deltaY, newState);\n\t } else {\n\t newState.topPosition = 0;\n\t }\n\t if (this.canScrollX(newState)) {\n\t newState.leftPosition = this.computeLeftPosition(deltaX, newState);\n\t }\n\t\n\t return newState;\n\t }\n\t }, {\n\t key: 'computeTopPosition',\n\t value: function computeTopPosition(deltaY, sizes) {\n\t var newTopPosition = this.state.topPosition - deltaY;\n\t return this.normalizeTopPosition(newTopPosition, sizes);\n\t }\n\t }, {\n\t key: 'computeLeftPosition',\n\t value: function computeLeftPosition(deltaX, sizes) {\n\t var newLeftPosition = this.state.leftPosition - deltaX;\n\t return this.normalizeLeftPosition(newLeftPosition, sizes);\n\t }\n\t }, {\n\t key: 'normalizeTopPosition',\n\t value: function normalizeTopPosition(newTopPosition, sizes) {\n\t if (newTopPosition > sizes.realHeight - sizes.containerHeight) {\n\t newTopPosition = sizes.realHeight - sizes.containerHeight;\n\t }\n\t if (newTopPosition < 0) {\n\t newTopPosition = 0;\n\t }\n\t return newTopPosition;\n\t }\n\t }, {\n\t key: 'normalizeLeftPosition',\n\t value: function normalizeLeftPosition(newLeftPosition, sizes) {\n\t if (newLeftPosition > sizes.realWidth - sizes.containerWidth) {\n\t newLeftPosition = sizes.realWidth - sizes.containerWidth;\n\t } else if (newLeftPosition < 0) {\n\t newLeftPosition = 0;\n\t }\n\t\n\t return newLeftPosition;\n\t }\n\t }, {\n\t key: 'computeSizes',\n\t value: function computeSizes() {\n\t var realHeight = this.content.offsetHeight;\n\t var containerHeight = this.wrapper.offsetHeight;\n\t var realWidth = this.content.offsetWidth;\n\t var containerWidth = this.wrapper.offsetWidth;\n\t\n\t return {\n\t realHeight: realHeight,\n\t containerHeight: containerHeight,\n\t realWidth: realWidth,\n\t containerWidth: containerWidth\n\t };\n\t }\n\t }, {\n\t key: 'setSizesToState',\n\t value: function setSizesToState() {\n\t var sizes = this.computeSizes();\n\t if (sizes.realHeight !== this.state.realHeight || sizes.realWidth !== this.state.realWidth) {\n\t this.setStateFromEvent(this.getModifiedPositionsIfNeeded(sizes));\n\t }\n\t }\n\t }, {\n\t key: 'scrollTop',\n\t value: function scrollTop() {\n\t this.scrollYTo(0);\n\t }\n\t }, {\n\t key: 'scrollBottom',\n\t value: function scrollBottom() {\n\t this.scrollYTo(this.state.realHeight - this.state.containerHeight);\n\t }\n\t }, {\n\t key: 'scrollLeft',\n\t value: function scrollLeft() {\n\t this.scrollXTo(0);\n\t }\n\t }, {\n\t key: 'scrollRight',\n\t value: function scrollRight() {\n\t this.scrollXTo(this.state.realWidth - this.state.containerWidth);\n\t }\n\t }, {\n\t key: 'scrollYTo',\n\t value: function scrollYTo(topPosition) {\n\t if (this.canScrollY()) {\n\t var position = this.normalizeTopPosition(topPosition, this.computeSizes());\n\t this.setStateFromEvent({ topPosition: position }, eventTypes.api);\n\t }\n\t }\n\t }, {\n\t key: 'scrollXTo',\n\t value: function scrollXTo(leftPosition) {\n\t if (this.canScrollX()) {\n\t var position = this.normalizeLeftPosition(leftPosition, this.computeSizes());\n\t this.setStateFromEvent({ leftPosition: position }, eventTypes.api);\n\t }\n\t }\n\t }, {\n\t key: 'canScrollY',\n\t value: function canScrollY() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state;\n\t\n\t var scrollableY = state.realHeight > state.containerHeight;\n\t return scrollableY && this.props.vertical;\n\t }\n\t }, {\n\t key: 'canScrollX',\n\t value: function canScrollX() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state;\n\t\n\t var scrollableX = state.realWidth > state.containerWidth;\n\t return scrollableX && this.props.horizontal;\n\t }\n\t }, {\n\t key: 'getModifiedPositionsIfNeeded',\n\t value: function getModifiedPositionsIfNeeded(newState) {\n\t var bottomPosition = newState.realHeight - newState.containerHeight;\n\t if (this.state.topPosition >= bottomPosition) {\n\t newState.topPosition = this.canScrollY(newState) ? (0, _utils.positiveOrZero)(bottomPosition) : 0;\n\t }\n\t\n\t var rightPosition = newState.realWidth - newState.containerWidth;\n\t if (this.state.leftPosition >= rightPosition) {\n\t newState.leftPosition = this.canScrollX(newState) ? (0, _utils.positiveOrZero)(rightPosition) : 0;\n\t }\n\t\n\t return newState;\n\t }\n\t }, {\n\t key: 'focusContent',\n\t value: function focusContent() {\n\t if (this.content) {\n\t (0, _utils.findDOMNode)(this.content).focus();\n\t }\n\t }\n\t }]);\n\t\n\t return ScrollArea;\n\t}(_react2.default.Component);\n\t\n\texports.default = ScrollArea;\n\t\n\t\n\tScrollArea.childContextTypes = {\n\t scrollArea: _propTypes2.default.object\n\t};\n\t\n\tScrollArea.propTypes = {\n\t className: _propTypes2.default.string,\n\t style: _propTypes2.default.object,\n\t speed: _propTypes2.default.number,\n\t contentClassName: _propTypes2.default.string,\n\t contentStyle: _propTypes2.default.object,\n\t vertical: _propTypes2.default.bool,\n\t verticalContainerStyle: _propTypes2.default.object,\n\t verticalScrollbarStyle: _propTypes2.default.object,\n\t horizontal: _propTypes2.default.bool,\n\t horizontalContainerStyle: _propTypes2.default.object,\n\t horizontalScrollbarStyle: _propTypes2.default.object,\n\t onScroll: _propTypes2.default.func,\n\t contentWindow: _propTypes2.default.any,\n\t ownerDocument: _propTypes2.default.any,\n\t smoothScrolling: _propTypes2.default.bool,\n\t minScrollSize: _propTypes2.default.number,\n\t swapWheelAxes: _propTypes2.default.bool,\n\t stopScrollPropagation: _propTypes2.default.bool,\n\t focusableTabIndex: _propTypes2.default.number\n\t};\n\t\n\tScrollArea.defaultProps = {\n\t speed: 1,\n\t vertical: true,\n\t horizontal: true,\n\t smoothScrolling: false,\n\t swapWheelAxes: false,\n\t contentWindow: (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === \"object\" ? window : undefined,\n\t ownerDocument: (typeof document === 'undefined' ? 'undefined' : _typeof(document)) === \"object\" ? document : undefined,\n\t focusableTabIndex: 1\n\t};\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(6);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMotion = __webpack_require__(8);\n\t\n\tvar _utils = __webpack_require__(32);\n\t\n\tvar _propTypes = __webpack_require__(18);\n\t\n\tvar _propTypes2 = _interopRequireDefault(_propTypes);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar ScrollBar = function (_React$Component) {\n\t _inherits(ScrollBar, _React$Component);\n\t\n\t function ScrollBar(props) {\n\t _classCallCheck(this, ScrollBar);\n\t\n\t var _this = _possibleConstructorReturn(this, (ScrollBar.__proto__ || Object.getPrototypeOf(ScrollBar)).call(this, props));\n\t\n\t var newState = _this.calculateState(props);\n\t _this.state = {\n\t position: newState.position,\n\t scrollSize: newState.scrollSize,\n\t isDragging: false,\n\t lastClientPosition: 0\n\t };\n\t\n\t if (props.type === 'vertical') {\n\t _this.bindedHandleMouseMove = _this.handleMouseMoveForVertical.bind(_this);\n\t } else {\n\t _this.bindedHandleMouseMove = _this.handleMouseMoveForHorizontal.bind(_this);\n\t }\n\t\n\t _this.bindedHandleMouseUp = _this.handleMouseUp.bind(_this);\n\t return _this;\n\t }\n\t\n\t _createClass(ScrollBar, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t if (this.props.ownerDocument) {\n\t this.props.ownerDocument.addEventListener(\"mousemove\", this.bindedHandleMouseMove);\n\t this.props.ownerDocument.addEventListener(\"mouseup\", this.bindedHandleMouseUp);\n\t }\n\t }\n\t }, {\n\t key: 'componentWillReceiveProps',\n\t value: function componentWillReceiveProps(nextProps) {\n\t this.setState(this.calculateState(nextProps));\n\t }\n\t }, {\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t if (this.props.ownerDocument) {\n\t this.props.ownerDocument.removeEventListener(\"mousemove\", this.bindedHandleMouseMove);\n\t this.props.ownerDocument.removeEventListener(\"mouseup\", this.bindedHandleMouseUp);\n\t }\n\t }\n\t }, {\n\t key: 'calculateFractionalPosition',\n\t value: function calculateFractionalPosition(realContentSize, containerSize, contentPosition) {\n\t var relativeSize = realContentSize - containerSize;\n\t\n\t return 1 - (relativeSize - contentPosition) / relativeSize;\n\t }\n\t }, {\n\t key: 'calculateState',\n\t value: function calculateState(props) {\n\t var fractionalPosition = this.calculateFractionalPosition(props.realSize, props.containerSize, props.position);\n\t var proportionalToPageScrollSize = props.containerSize * props.containerSize / props.realSize;\n\t var scrollSize = proportionalToPageScrollSize < props.minScrollSize ? props.minScrollSize : proportionalToPageScrollSize;\n\t\n\t var scrollPosition = (props.containerSize - scrollSize) * fractionalPosition;\n\t return {\n\t scrollSize: scrollSize,\n\t position: Math.round(scrollPosition)\n\t };\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props,\n\t smoothScrolling = _props.smoothScrolling,\n\t isDragging = _props.isDragging,\n\t type = _props.type,\n\t scrollbarStyle = _props.scrollbarStyle,\n\t containerStyle = _props.containerStyle;\n\t\n\t var isVoriziontal = type === 'horizontal';\n\t var isVertical = type === 'vertical';\n\t var scrollStyles = this.createScrollStyles();\n\t var springifiedScrollStyles = smoothScrolling ? (0, _utils.modifyObjValues)(scrollStyles, function (x) {\n\t return (0, _reactMotion.spring)(x);\n\t }) : scrollStyles;\n\t\n\t var scrollbarClasses = 'scrollbar-container ' + (isDragging ? 'active' : '') + ' ' + (isVoriziontal ? 'horizontal' : '') + ' ' + (isVertical ? 'vertical' : '');\n\t\n\t return _react2.default.createElement(\n\t _reactMotion.Motion,\n\t { style: springifiedScrollStyles },\n\t function (style) {\n\t return _react2.default.createElement(\n\t 'div',\n\t {\n\t className: scrollbarClasses,\n\t style: containerStyle,\n\t onMouseDown: _this2.handleScrollBarContainerClick.bind(_this2),\n\t ref: function ref(x) {\n\t return _this2.scrollbarContainer = x;\n\t }\n\t },\n\t _react2.default.createElement('div', {\n\t className: 'scrollbar',\n\t style: _extends({}, scrollbarStyle, style),\n\t onMouseDown: _this2.handleMouseDown.bind(_this2)\n\t })\n\t );\n\t }\n\t );\n\t }\n\t }, {\n\t key: 'handleScrollBarContainerClick',\n\t value: function handleScrollBarContainerClick(e) {\n\t e.preventDefault();\n\t var multiplier = this.computeMultiplier();\n\t var clientPosition = this.isVertical() ? e.clientY : e.clientX;\n\t\n\t var _scrollbarContainer$g = this.scrollbarContainer.getBoundingClientRect(),\n\t top = _scrollbarContainer$g.top,\n\t left = _scrollbarContainer$g.left;\n\t\n\t var clientScrollPosition = this.isVertical() ? top : left;\n\t\n\t var position = clientPosition - clientScrollPosition;\n\t var proportionalToPageScrollSize = this.props.containerSize * this.props.containerSize / this.props.realSize;\n\t\n\t this.setState({ isDragging: true, lastClientPosition: clientPosition });\n\t this.props.onPositionChange((position - proportionalToPageScrollSize / 2) / multiplier);\n\t }\n\t }, {\n\t key: 'handleMouseMoveForHorizontal',\n\t value: function handleMouseMoveForHorizontal(e) {\n\t var multiplier = this.computeMultiplier();\n\t\n\t if (this.state.isDragging) {\n\t e.preventDefault();\n\t var deltaX = this.state.lastClientPosition - e.clientX;\n\t this.setState({ lastClientPosition: e.clientX });\n\t this.props.onMove(0, deltaX / multiplier);\n\t }\n\t }\n\t }, {\n\t key: 'handleMouseMoveForVertical',\n\t value: function handleMouseMoveForVertical(e) {\n\t var multiplier = this.computeMultiplier();\n\t\n\t if (this.state.isDragging) {\n\t e.preventDefault();\n\t var deltaY = this.state.lastClientPosition - e.clientY;\n\t this.setState({ lastClientPosition: e.clientY });\n\t this.props.onMove(deltaY / multiplier, 0);\n\t }\n\t }\n\t }, {\n\t key: 'handleMouseDown',\n\t value: function handleMouseDown(e) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\t var lastClientPosition = this.isVertical() ? e.clientY : e.clientX;\n\t this.setState({ isDragging: true, lastClientPosition: lastClientPosition });\n\t\n\t this.props.onFocus();\n\t }\n\t }, {\n\t key: 'handleMouseUp',\n\t value: function handleMouseUp(e) {\n\t if (this.state.isDragging) {\n\t e.preventDefault();\n\t this.setState({ isDragging: false });\n\t }\n\t }\n\t }, {\n\t key: 'createScrollStyles',\n\t value: function createScrollStyles() {\n\t if (this.props.type === 'vertical') {\n\t return {\n\t height: this.state.scrollSize,\n\t marginTop: this.state.position\n\t };\n\t } else {\n\t return {\n\t width: this.state.scrollSize,\n\t marginLeft: this.state.position\n\t };\n\t }\n\t }\n\t }, {\n\t key: 'computeMultiplier',\n\t value: function computeMultiplier() {\n\t return this.props.containerSize / this.props.realSize;\n\t }\n\t }, {\n\t key: 'isVertical',\n\t value: function isVertical() {\n\t return this.props.type === 'vertical';\n\t }\n\t }]);\n\t\n\t return ScrollBar;\n\t}(_react2.default.Component);\n\t\n\tScrollBar.propTypes = {\n\t onMove: _propTypes2.default.func,\n\t onPositionChange: _propTypes2.default.func,\n\t onFocus: _propTypes2.default.func,\n\t realSize: _propTypes2.default.number,\n\t containerSize: _propTypes2.default.number,\n\t position: _propTypes2.default.number,\n\t containerStyle: _propTypes2.default.object,\n\t scrollbarStyle: _propTypes2.default.object,\n\t type: _propTypes2.default.oneOf(['vertical', 'horizontal']),\n\t ownerDocument: _propTypes2.default.any,\n\t smoothScrolling: _propTypes2.default.bool,\n\t minScrollSize: _propTypes2.default.number\n\t};\n\t\n\tScrollBar.defaultProps = {\n\t type: 'vertical',\n\t smoothScrolling: false\n\t};\n\texports.default = ScrollBar;\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tfunction _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; }\n\t\n\tvar _Motion = __webpack_require__(9);\n\t\n\texports.Motion = _interopRequire(_Motion);\n\t\n\tvar _StaggeredMotion = __webpack_require__(26);\n\t\n\texports.StaggeredMotion = _interopRequire(_StaggeredMotion);\n\t\n\tvar _TransitionMotion = __webpack_require__(27);\n\t\n\texports.TransitionMotion = _interopRequire(_TransitionMotion);\n\t\n\tvar _spring = __webpack_require__(29);\n\t\n\texports.spring = _interopRequire(_spring);\n\t\n\tvar _presets = __webpack_require__(30);\n\t\n\texports.presets = _interopRequire(_presets);\n\t\n\tvar _stripStyle = __webpack_require__(11);\n\t\n\texports.stripStyle = _interopRequire(_stripStyle);\n\t\n\t// deprecated, dummy warning function\n\t\n\tvar _reorderKeys = __webpack_require__(31);\n\t\n\texports.reorderKeys = _interopRequire(_reorderKeys);\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _mapToZero = __webpack_require__(10);\n\t\n\tvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\t\n\tvar _stripStyle = __webpack_require__(11);\n\t\n\tvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\t\n\tvar _stepper3 = __webpack_require__(12);\n\t\n\tvar _stepper4 = _interopRequireDefault(_stepper3);\n\t\n\tvar _performanceNow = __webpack_require__(13);\n\t\n\tvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\t\n\tvar _raf = __webpack_require__(15);\n\t\n\tvar _raf2 = _interopRequireDefault(_raf);\n\t\n\tvar _shouldStopAnimation = __webpack_require__(17);\n\t\n\tvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\t\n\tvar _react = __webpack_require__(6);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _propTypes = __webpack_require__(18);\n\t\n\tvar _propTypes2 = _interopRequireDefault(_propTypes);\n\t\n\tvar msPerFrame = 1000 / 60;\n\t\n\tvar Motion = (function (_React$Component) {\n\t _inherits(Motion, _React$Component);\n\t\n\t _createClass(Motion, null, [{\n\t key: 'propTypes',\n\t value: {\n\t // TOOD: warn against putting a config in here\n\t defaultStyle: _propTypes2['default'].objectOf(_propTypes2['default'].number),\n\t style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired,\n\t children: _propTypes2['default'].func.isRequired,\n\t onRest: _propTypes2['default'].func\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function Motion(props) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, Motion);\n\t\n\t _React$Component.call(this, props);\n\t this.wasAnimating = false;\n\t this.animationID = null;\n\t this.prevTime = 0;\n\t this.accumulatedTime = 0;\n\t this.unreadPropStyle = null;\n\t\n\t this.clearUnreadPropStyle = function (destStyle) {\n\t var dirty = false;\n\t var _state = _this.state;\n\t var currentStyle = _state.currentStyle;\n\t var currentVelocity = _state.currentVelocity;\n\t var lastIdealStyle = _state.lastIdealStyle;\n\t var lastIdealVelocity = _state.lastIdealVelocity;\n\t\n\t for (var key in destStyle) {\n\t if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n\t continue;\n\t }\n\t\n\t var styleValue = destStyle[key];\n\t if (typeof styleValue === 'number') {\n\t if (!dirty) {\n\t dirty = true;\n\t currentStyle = _extends({}, currentStyle);\n\t currentVelocity = _extends({}, currentVelocity);\n\t lastIdealStyle = _extends({}, lastIdealStyle);\n\t lastIdealVelocity = _extends({}, lastIdealVelocity);\n\t }\n\t\n\t currentStyle[key] = styleValue;\n\t currentVelocity[key] = 0;\n\t lastIdealStyle[key] = styleValue;\n\t lastIdealVelocity[key] = 0;\n\t }\n\t }\n\t\n\t if (dirty) {\n\t _this.setState({ currentStyle: currentStyle, currentVelocity: currentVelocity, lastIdealStyle: lastIdealStyle, lastIdealVelocity: lastIdealVelocity });\n\t }\n\t };\n\t\n\t this.startAnimationIfNecessary = function () {\n\t // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n\t // call cb? No, otherwise accidental parent rerender causes cb trigger\n\t _this.animationID = _raf2['default'](function (timestamp) {\n\t // check if we need to animate in the first place\n\t var propsStyle = _this.props.style;\n\t if (_shouldStopAnimation2['default'](_this.state.currentStyle, propsStyle, _this.state.currentVelocity)) {\n\t if (_this.wasAnimating && _this.props.onRest) {\n\t _this.props.onRest();\n\t }\n\t\n\t // no need to cancel animationID here; shouldn't have any in flight\n\t _this.animationID = null;\n\t _this.wasAnimating = false;\n\t _this.accumulatedTime = 0;\n\t return;\n\t }\n\t\n\t _this.wasAnimating = true;\n\t\n\t var currentTime = timestamp || _performanceNow2['default']();\n\t var timeDelta = currentTime - _this.prevTime;\n\t _this.prevTime = currentTime;\n\t _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n\t // more than 10 frames? prolly switched browser tab. Restart\n\t if (_this.accumulatedTime > msPerFrame * 10) {\n\t _this.accumulatedTime = 0;\n\t }\n\t\n\t if (_this.accumulatedTime === 0) {\n\t // no need to cancel animationID here; shouldn't have any in flight\n\t _this.animationID = null;\n\t _this.startAnimationIfNecessary();\n\t return;\n\t }\n\t\n\t var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n\t var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\t\n\t var newLastIdealStyle = {};\n\t var newLastIdealVelocity = {};\n\t var newCurrentStyle = {};\n\t var newCurrentVelocity = {};\n\t\n\t for (var key in propsStyle) {\n\t if (!Object.prototype.hasOwnProperty.call(propsStyle, key)) {\n\t continue;\n\t }\n\t\n\t var styleValue = propsStyle[key];\n\t if (typeof styleValue === 'number') {\n\t newCurrentStyle[key] = styleValue;\n\t newCurrentVelocity[key] = 0;\n\t newLastIdealStyle[key] = styleValue;\n\t newLastIdealVelocity[key] = 0;\n\t } else {\n\t var newLastIdealStyleValue = _this.state.lastIdealStyle[key];\n\t var newLastIdealVelocityValue = _this.state.lastIdealVelocity[key];\n\t for (var i = 0; i < framesToCatchUp; i++) {\n\t var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\t\n\t newLastIdealStyleValue = _stepper[0];\n\t newLastIdealVelocityValue = _stepper[1];\n\t }\n\t\n\t var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\t\n\t var nextIdealX = _stepper2[0];\n\t var nextIdealV = _stepper2[1];\n\t\n\t newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n\t newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n\t newLastIdealStyle[key] = newLastIdealStyleValue;\n\t newLastIdealVelocity[key] = newLastIdealVelocityValue;\n\t }\n\t }\n\t\n\t _this.animationID = null;\n\t // the amount we're looped over above\n\t _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\t\n\t _this.setState({\n\t currentStyle: newCurrentStyle,\n\t currentVelocity: newCurrentVelocity,\n\t lastIdealStyle: newLastIdealStyle,\n\t lastIdealVelocity: newLastIdealVelocity\n\t });\n\t\n\t _this.unreadPropStyle = null;\n\t\n\t _this.startAnimationIfNecessary();\n\t });\n\t };\n\t\n\t this.state = this.defaultState();\n\t }\n\t\n\t Motion.prototype.defaultState = function defaultState() {\n\t var _props = this.props;\n\t var defaultStyle = _props.defaultStyle;\n\t var style = _props.style;\n\t\n\t var currentStyle = defaultStyle || _stripStyle2['default'](style);\n\t var currentVelocity = _mapToZero2['default'](currentStyle);\n\t return {\n\t currentStyle: currentStyle,\n\t currentVelocity: currentVelocity,\n\t lastIdealStyle: currentStyle,\n\t lastIdealVelocity: currentVelocity\n\t };\n\t };\n\t\n\t // it's possible that currentStyle's value is stale: if props is immediately\n\t // changed from 0 to 400 to spring(0) again, the async currentStyle is still\n\t // at 0 (didn't have time to tick and interpolate even once). If we naively\n\t // compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n\t // In reality currentStyle should be 400\n\t\n\t Motion.prototype.componentDidMount = function componentDidMount() {\n\t this.prevTime = _performanceNow2['default']();\n\t this.startAnimationIfNecessary();\n\t };\n\t\n\t Motion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n\t if (this.unreadPropStyle != null) {\n\t // previous props haven't had the chance to be set yet; set them here\n\t this.clearUnreadPropStyle(this.unreadPropStyle);\n\t }\n\t\n\t this.unreadPropStyle = props.style;\n\t if (this.animationID == null) {\n\t this.prevTime = _performanceNow2['default']();\n\t this.startAnimationIfNecessary();\n\t }\n\t };\n\t\n\t Motion.prototype.componentWillUnmount = function componentWillUnmount() {\n\t if (this.animationID != null) {\n\t _raf2['default'].cancel(this.animationID);\n\t this.animationID = null;\n\t }\n\t };\n\t\n\t Motion.prototype.render = function render() {\n\t var renderedChildren = this.props.children(this.state.currentStyle);\n\t return renderedChildren && _react2['default'].Children.only(renderedChildren);\n\t };\n\t\n\t return Motion;\n\t})(_react2['default'].Component);\n\t\n\texports['default'] = Motion;\n\tmodule.exports = exports['default'];\n\t\n\t// after checking for unreadPropStyle != null, we manually go set the\n\t// non-interpolating values (those that are a number, without a spring\n\t// config)\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t\n\t\n\t// currently used to initiate the velocity style object to 0\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = mapToZero;\n\t\n\tfunction mapToZero(obj) {\n\t var ret = {};\n\t for (var key in obj) {\n\t if (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t ret[key] = 0;\n\t }\n\t }\n\t return ret;\n\t}\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t\n\t// turn {x: {val: 1, stiffness: 1, damping: 2}, y: 2} generated by\n\t// `{x: spring(1, {stiffness: 1, damping: 2}), y: 2}` into {x: 1, y: 2}\n\t\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = stripStyle;\n\t\n\tfunction stripStyle(style) {\n\t var ret = {};\n\t for (var key in style) {\n\t if (!Object.prototype.hasOwnProperty.call(style, key)) {\n\t continue;\n\t }\n\t ret[key] = typeof style[key] === 'number' ? style[key] : style[key].val;\n\t }\n\t return ret;\n\t}\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports) {\n\n\t\n\t\n\t// stepper is used a lot. Saves allocation to return the same array wrapper.\n\t// This is fine and danger-free against mutations because the callsite\n\t// immediately destructures it and gets the numbers inside without passing the\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\texports[\"default\"] = stepper;\n\t\n\tvar reusedTuple = [0, 0];\n\t\n\tfunction stepper(secondPerFrame, x, v, destX, k, b, precision) {\n\t // Spring stiffness, in kg / s^2\n\t\n\t // for animations, destX is really spring length (spring at rest). initial\n\t // position is considered as the stretched/compressed position of a spring\n\t var Fspring = -k * (x - destX);\n\t\n\t // Damping, in kg / s\n\t var Fdamper = -b * v;\n\t\n\t // usually we put mass here, but for animation purposes, specifying mass is a\n\t // bit redundant. you could simply adjust k and b accordingly\n\t // let a = (Fspring + Fdamper) / mass;\n\t var a = Fspring + Fdamper;\n\t\n\t var newV = v + a * secondPerFrame;\n\t var newX = x + newV * secondPerFrame;\n\t\n\t if (Math.abs(newV) < precision && Math.abs(newX - destX) < precision) {\n\t reusedTuple[0] = destX;\n\t reusedTuple[1] = 0;\n\t return reusedTuple;\n\t }\n\t\n\t reusedTuple[0] = newX;\n\t reusedTuple[1] = newV;\n\t return reusedTuple;\n\t}\n\t\n\tmodule.exports = exports[\"default\"];\n\t// array reference around.\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {// Generated by CoffeeScript 1.7.1\n\t(function() {\n\t var getNanoSeconds, hrtime, loadTime;\n\t\n\t if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n\t module.exports = function() {\n\t return performance.now();\n\t };\n\t } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n\t module.exports = function() {\n\t return (getNanoSeconds() - loadTime) / 1e6;\n\t };\n\t hrtime = process.hrtime;\n\t getNanoSeconds = function() {\n\t var hr;\n\t hr = hrtime();\n\t return hr[0] * 1e9 + hr[1];\n\t };\n\t loadTime = getNanoSeconds();\n\t } else if (Date.now) {\n\t module.exports = function() {\n\t return Date.now() - loadTime;\n\t };\n\t loadTime = Date.now();\n\t } else {\n\t module.exports = function() {\n\t return new Date().getTime() - loadTime;\n\t };\n\t loadTime = new Date().getTime();\n\t }\n\t\n\t}).call(this);\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t// shim for using process in browser\n\tvar process = module.exports = {};\n\t\n\t// cached from whatever global is present so that test runners that stub it\n\t// don't break things. But we need to wrap it in a try catch in case it is\n\t// wrapped in strict mode code which doesn't define any globals. It's inside a\n\t// function because try/catches deoptimize in certain engines.\n\t\n\tvar cachedSetTimeout;\n\tvar cachedClearTimeout;\n\t\n\tfunction defaultSetTimout() {\n\t throw new Error('setTimeout has not been defined');\n\t}\n\tfunction defaultClearTimeout () {\n\t throw new Error('clearTimeout has not been defined');\n\t}\n\t(function () {\n\t try {\n\t if (typeof setTimeout === 'function') {\n\t cachedSetTimeout = setTimeout;\n\t } else {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t } catch (e) {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t try {\n\t if (typeof clearTimeout === 'function') {\n\t cachedClearTimeout = clearTimeout;\n\t } else {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t } catch (e) {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t} ())\n\tfunction runTimeout(fun) {\n\t if (cachedSetTimeout === setTimeout) {\n\t //normal enviroments in sane situations\n\t return setTimeout(fun, 0);\n\t }\n\t // if setTimeout wasn't available but was latter defined\n\t if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n\t cachedSetTimeout = setTimeout;\n\t return setTimeout(fun, 0);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedSetTimeout(fun, 0);\n\t } catch(e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedSetTimeout.call(null, fun, 0);\n\t } catch(e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n\t return cachedSetTimeout.call(this, fun, 0);\n\t }\n\t }\n\t\n\t\n\t}\n\tfunction runClearTimeout(marker) {\n\t if (cachedClearTimeout === clearTimeout) {\n\t //normal enviroments in sane situations\n\t return clearTimeout(marker);\n\t }\n\t // if clearTimeout wasn't available but was latter defined\n\t if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n\t cachedClearTimeout = clearTimeout;\n\t return clearTimeout(marker);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedClearTimeout(marker);\n\t } catch (e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedClearTimeout.call(null, marker);\n\t } catch (e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n\t // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n\t return cachedClearTimeout.call(this, marker);\n\t }\n\t }\n\t\n\t\n\t\n\t}\n\tvar queue = [];\n\tvar draining = false;\n\tvar currentQueue;\n\tvar queueIndex = -1;\n\t\n\tfunction cleanUpNextTick() {\n\t if (!draining || !currentQueue) {\n\t return;\n\t }\n\t draining = false;\n\t if (currentQueue.length) {\n\t queue = currentQueue.concat(queue);\n\t } else {\n\t queueIndex = -1;\n\t }\n\t if (queue.length) {\n\t drainQueue();\n\t }\n\t}\n\t\n\tfunction drainQueue() {\n\t if (draining) {\n\t return;\n\t }\n\t var timeout = runTimeout(cleanUpNextTick);\n\t draining = true;\n\t\n\t var len = queue.length;\n\t while(len) {\n\t currentQueue = queue;\n\t queue = [];\n\t while (++queueIndex < len) {\n\t if (currentQueue) {\n\t currentQueue[queueIndex].run();\n\t }\n\t }\n\t queueIndex = -1;\n\t len = queue.length;\n\t }\n\t currentQueue = null;\n\t draining = false;\n\t runClearTimeout(timeout);\n\t}\n\t\n\tprocess.nextTick = function (fun) {\n\t var args = new Array(arguments.length - 1);\n\t if (arguments.length > 1) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\t }\n\t queue.push(new Item(fun, args));\n\t if (queue.length === 1 && !draining) {\n\t runTimeout(drainQueue);\n\t }\n\t};\n\t\n\t// v8 likes predictible objects\n\tfunction Item(fun, array) {\n\t this.fun = fun;\n\t this.array = array;\n\t}\n\tItem.prototype.run = function () {\n\t this.fun.apply(null, this.array);\n\t};\n\tprocess.title = 'browser';\n\tprocess.browser = true;\n\tprocess.env = {};\n\tprocess.argv = [];\n\tprocess.version = ''; // empty string to avoid regexp issues\n\tprocess.versions = {};\n\t\n\tfunction noop() {}\n\t\n\tprocess.on = noop;\n\tprocess.addListener = noop;\n\tprocess.once = noop;\n\tprocess.off = noop;\n\tprocess.removeListener = noop;\n\tprocess.removeAllListeners = noop;\n\tprocess.emit = noop;\n\t\n\tprocess.binding = function (name) {\n\t throw new Error('process.binding is not supported');\n\t};\n\t\n\tprocess.cwd = function () { return '/' };\n\tprocess.chdir = function (dir) {\n\t throw new Error('process.chdir is not supported');\n\t};\n\tprocess.umask = function() { return 0; };\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {var now = __webpack_require__(16)\n\t , root = typeof window === 'undefined' ? global : window\n\t , vendors = ['moz', 'webkit']\n\t , suffix = 'AnimationFrame'\n\t , raf = root['request' + suffix]\n\t , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\t\n\tfor(var i = 0; !raf && i < vendors.length; i++) {\n\t raf = root[vendors[i] + 'Request' + suffix]\n\t caf = root[vendors[i] + 'Cancel' + suffix]\n\t || root[vendors[i] + 'CancelRequest' + suffix]\n\t}\n\t\n\t// Some versions of FF have rAF but not cAF\n\tif(!raf || !caf) {\n\t var last = 0\n\t , id = 0\n\t , queue = []\n\t , frameDuration = 1000 / 60\n\t\n\t raf = function(callback) {\n\t if(queue.length === 0) {\n\t var _now = now()\n\t , next = Math.max(0, frameDuration - (_now - last))\n\t last = next + _now\n\t setTimeout(function() {\n\t var cp = queue.slice(0)\n\t // Clear queue here to prevent\n\t // callbacks from appending listeners\n\t // to the current frame's queue\n\t queue.length = 0\n\t for(var i = 0; i < cp.length; i++) {\n\t if(!cp[i].cancelled) {\n\t try{\n\t cp[i].callback(last)\n\t } catch(e) {\n\t setTimeout(function() { throw e }, 0)\n\t }\n\t }\n\t }\n\t }, Math.round(next))\n\t }\n\t queue.push({\n\t handle: ++id,\n\t callback: callback,\n\t cancelled: false\n\t })\n\t return id\n\t }\n\t\n\t caf = function(handle) {\n\t for(var i = 0; i < queue.length; i++) {\n\t if(queue[i].handle === handle) {\n\t queue[i].cancelled = true\n\t }\n\t }\n\t }\n\t}\n\t\n\tmodule.exports = function(fn) {\n\t // Wrap in a new function to prevent\n\t // `cancel` potentially being assigned\n\t // to the native rAF function\n\t return raf.call(root, fn)\n\t}\n\tmodule.exports.cancel = function() {\n\t caf.apply(root, arguments)\n\t}\n\tmodule.exports.polyfill = function() {\n\t root.requestAnimationFrame = raf\n\t root.cancelAnimationFrame = caf\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {// Generated by CoffeeScript 1.12.2\n\t(function() {\n\t var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\t\n\t if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n\t module.exports = function() {\n\t return performance.now();\n\t };\n\t } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n\t module.exports = function() {\n\t return (getNanoSeconds() - nodeLoadTime) / 1e6;\n\t };\n\t hrtime = process.hrtime;\n\t getNanoSeconds = function() {\n\t var hr;\n\t hr = hrtime();\n\t return hr[0] * 1e9 + hr[1];\n\t };\n\t moduleLoadTime = getNanoSeconds();\n\t upTime = process.uptime() * 1e9;\n\t nodeLoadTime = moduleLoadTime - upTime;\n\t } else if (Date.now) {\n\t module.exports = function() {\n\t return Date.now() - loadTime;\n\t };\n\t loadTime = Date.now();\n\t } else {\n\t module.exports = function() {\n\t return new Date().getTime() - loadTime;\n\t };\n\t loadTime = new Date().getTime();\n\t }\n\t\n\t}).call(this);\n\t\n\t//# sourceMappingURL=performance-now.js.map\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 17 */\n/***/ function(module, exports) {\n\n\t\n\t\n\t// usage assumption: currentStyle values have already been rendered but it says\n\t// nothing of whether currentStyle is stale (see unreadPropStyle)\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = shouldStopAnimation;\n\t\n\tfunction shouldStopAnimation(currentStyle, style, currentVelocity) {\n\t for (var key in style) {\n\t if (!Object.prototype.hasOwnProperty.call(style, key)) {\n\t continue;\n\t }\n\t\n\t if (currentVelocity[key] !== 0) {\n\t return false;\n\t }\n\t\n\t var styleValue = typeof style[key] === 'number' ? style[key] : style[key].val;\n\t // stepper will have already taken care of rounding precision errors, so\n\t // won't have such thing as 0.9999 !=== 1\n\t if (currentStyle[key] !== styleValue) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n\t Symbol.for &&\n\t Symbol.for('react.element')) ||\n\t 0xeac7;\n\t\n\t var isValidElement = function(object) {\n\t return typeof object === 'object' &&\n\t object !== null &&\n\t object.$$typeof === REACT_ELEMENT_TYPE;\n\t };\n\t\n\t // By explicitly using `prop-types` you are opting into new development behavior.\n\t // http://fb.me/prop-types-in-prod\n\t var throwOnDirectAccess = true;\n\t module.exports = __webpack_require__(19)(isValidElement, throwOnDirectAccess);\n\t} else {\n\t // By explicitly using `prop-types` you are opting into new production behavior.\n\t // http://fb.me/prop-types-in-prod\n\t module.exports = __webpack_require__(25)();\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyFunction = __webpack_require__(20);\n\tvar invariant = __webpack_require__(21);\n\tvar warning = __webpack_require__(22);\n\t\n\tvar ReactPropTypesSecret = __webpack_require__(23);\n\tvar checkPropTypes = __webpack_require__(24);\n\t\n\tmodule.exports = function(isValidElement, throwOnDirectAccess) {\n\t /* global Symbol */\n\t var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n\t var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\t\n\t /**\n\t * Returns the iterator method function contained on the iterable object.\n\t *\n\t * Be sure to invoke the function with the iterable as context:\n\t *\n\t * var iteratorFn = getIteratorFn(myIterable);\n\t * if (iteratorFn) {\n\t * var iterator = iteratorFn.call(myIterable);\n\t * ...\n\t * }\n\t *\n\t * @param {?object} maybeIterable\n\t * @return {?function}\n\t */\n\t function getIteratorFn(maybeIterable) {\n\t var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n\t if (typeof iteratorFn === 'function') {\n\t return iteratorFn;\n\t }\n\t }\n\t\n\t /**\n\t * Collection of methods that allow declaration and validation of props that are\n\t * supplied to React components. Example usage:\n\t *\n\t * var Props = require('ReactPropTypes');\n\t * var MyArticle = React.createClass({\n\t * propTypes: {\n\t * // An optional string prop named \"description\".\n\t * description: Props.string,\n\t *\n\t * // A required enum prop named \"category\".\n\t * category: Props.oneOf(['News','Photos']).isRequired,\n\t *\n\t * // A prop named \"dialog\" that requires an instance of Dialog.\n\t * dialog: Props.instanceOf(Dialog).isRequired\n\t * },\n\t * render: function() { ... }\n\t * });\n\t *\n\t * A more formal specification of how these methods are used:\n\t *\n\t * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n\t * decl := ReactPropTypes.{type}(.isRequired)?\n\t *\n\t * Each and every declaration produces a function with the same signature. This\n\t * allows the creation of custom validation functions. For example:\n\t *\n\t * var MyLink = React.createClass({\n\t * propTypes: {\n\t * // An optional string or URI prop named \"href\".\n\t * href: function(props, propName, componentName) {\n\t * var propValue = props[propName];\n\t * if (propValue != null && typeof propValue !== 'string' &&\n\t * !(propValue instanceof URI)) {\n\t * return new Error(\n\t * 'Expected a string or an URI for ' + propName + ' in ' +\n\t * componentName\n\t * );\n\t * }\n\t * }\n\t * },\n\t * render: function() {...}\n\t * });\n\t *\n\t * @internal\n\t */\n\t\n\t var ANONYMOUS = '<<anonymous>>';\n\t\n\t // Important!\n\t // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n\t var ReactPropTypes = {\n\t array: createPrimitiveTypeChecker('array'),\n\t bool: createPrimitiveTypeChecker('boolean'),\n\t func: createPrimitiveTypeChecker('function'),\n\t number: createPrimitiveTypeChecker('number'),\n\t object: createPrimitiveTypeChecker('object'),\n\t string: createPrimitiveTypeChecker('string'),\n\t symbol: createPrimitiveTypeChecker('symbol'),\n\t\n\t any: createAnyTypeChecker(),\n\t arrayOf: createArrayOfTypeChecker,\n\t element: createElementTypeChecker(),\n\t instanceOf: createInstanceTypeChecker,\n\t node: createNodeChecker(),\n\t objectOf: createObjectOfTypeChecker,\n\t oneOf: createEnumTypeChecker,\n\t oneOfType: createUnionTypeChecker,\n\t shape: createShapeTypeChecker\n\t };\n\t\n\t /**\n\t * inlined Object.is polyfill to avoid requiring consumers ship their own\n\t * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\t */\n\t /*eslint-disable no-self-compare*/\n\t function is(x, y) {\n\t // SameValue algorithm\n\t if (x === y) {\n\t // Steps 1-5, 7-10\n\t // Steps 6.b-6.e: +0 != -0\n\t return x !== 0 || 1 / x === 1 / y;\n\t } else {\n\t // Step 6.a: NaN == NaN\n\t return x !== x && y !== y;\n\t }\n\t }\n\t /*eslint-enable no-self-compare*/\n\t\n\t /**\n\t * We use an Error-like object for backward compatibility as people may call\n\t * PropTypes directly and inspect their output. However, we don't use real\n\t * Errors anymore. We don't inspect their stack anyway, and creating them\n\t * is prohibitively expensive if they are created too often, such as what\n\t * happens in oneOfType() for any type before the one that matched.\n\t */\n\t function PropTypeError(message) {\n\t this.message = message;\n\t this.stack = '';\n\t }\n\t // Make `instanceof Error` still work for returned errors.\n\t PropTypeError.prototype = Error.prototype;\n\t\n\t function createChainableTypeChecker(validate) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t var manualPropTypeCallCache = {};\n\t var manualPropTypeWarningCount = 0;\n\t }\n\t function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n\t componentName = componentName || ANONYMOUS;\n\t propFullName = propFullName || propName;\n\t\n\t if (secret !== ReactPropTypesSecret) {\n\t if (throwOnDirectAccess) {\n\t // New behavior only for users of `prop-types` package\n\t invariant(\n\t false,\n\t 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n\t 'Use `PropTypes.checkPropTypes()` to call them. ' +\n\t 'Read more at http://fb.me/use-check-prop-types'\n\t );\n\t } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n\t // Old behavior for people using React.PropTypes\n\t var cacheKey = componentName + ':' + propName;\n\t if (\n\t !manualPropTypeCallCache[cacheKey] &&\n\t // Avoid spamming the console because they are often not actionable except for lib authors\n\t manualPropTypeWarningCount < 3\n\t ) {\n\t warning(\n\t false,\n\t 'You are manually calling a React.PropTypes validation ' +\n\t 'function for the `%s` prop on `%s`. This is deprecated ' +\n\t 'and will throw in the standalone `prop-types` package. ' +\n\t 'You may be seeing this warning due to a third-party PropTypes ' +\n\t 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n\t propFullName,\n\t componentName\n\t );\n\t manualPropTypeCallCache[cacheKey] = true;\n\t manualPropTypeWarningCount++;\n\t }\n\t }\n\t }\n\t if (props[propName] == null) {\n\t if (isRequired) {\n\t if (props[propName] === null) {\n\t return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n\t }\n\t return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n\t }\n\t return null;\n\t } else {\n\t return validate(props, propName, componentName, location, propFullName);\n\t }\n\t }\n\t\n\t var chainedCheckType = checkType.bind(null, false);\n\t chainedCheckType.isRequired = checkType.bind(null, true);\n\t\n\t return chainedCheckType;\n\t }\n\t\n\t function createPrimitiveTypeChecker(expectedType) {\n\t function validate(props, propName, componentName, location, propFullName, secret) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== expectedType) {\n\t // `propValue` being instance of, say, date/regexp, pass the 'object'\n\t // check, but we can offer a more precise error message here rather than\n\t // 'of type `object`'.\n\t var preciseType = getPreciseType(propValue);\n\t\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createAnyTypeChecker() {\n\t return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n\t }\n\t\n\t function createArrayOfTypeChecker(typeChecker) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (typeof typeChecker !== 'function') {\n\t return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n\t }\n\t var propValue = props[propName];\n\t if (!Array.isArray(propValue)) {\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n\t }\n\t for (var i = 0; i < propValue.length; i++) {\n\t var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n\t if (error instanceof Error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createElementTypeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t if (!isValidElement(propValue)) {\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createInstanceTypeChecker(expectedClass) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (!(props[propName] instanceof expectedClass)) {\n\t var expectedClassName = expectedClass.name || ANONYMOUS;\n\t var actualClassName = getClassName(props[propName]);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createEnumTypeChecker(expectedValues) {\n\t if (!Array.isArray(expectedValues)) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n\t return emptyFunction.thatReturnsNull;\n\t }\n\t\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t for (var i = 0; i < expectedValues.length; i++) {\n\t if (is(propValue, expectedValues[i])) {\n\t return null;\n\t }\n\t }\n\t\n\t var valuesString = JSON.stringify(expectedValues);\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createObjectOfTypeChecker(typeChecker) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (typeof typeChecker !== 'function') {\n\t return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n\t }\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n\t }\n\t for (var key in propValue) {\n\t if (propValue.hasOwnProperty(key)) {\n\t var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error instanceof Error) {\n\t return error;\n\t }\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createUnionTypeChecker(arrayOfTypeCheckers) {\n\t if (!Array.isArray(arrayOfTypeCheckers)) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n\t return emptyFunction.thatReturnsNull;\n\t }\n\t\n\t function validate(props, propName, componentName, location, propFullName) {\n\t for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n\t var checker = arrayOfTypeCheckers[i];\n\t if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n\t return null;\n\t }\n\t }\n\t\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createNodeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (!isNode(props[propName])) {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function createShapeTypeChecker(shapeTypes) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n\t }\n\t for (var key in shapeTypes) {\n\t var checker = shapeTypes[key];\n\t if (!checker) {\n\t continue;\n\t }\n\t var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t }\n\t\n\t function isNode(propValue) {\n\t switch (typeof propValue) {\n\t case 'number':\n\t case 'string':\n\t case 'undefined':\n\t return true;\n\t case 'boolean':\n\t return !propValue;\n\t case 'object':\n\t if (Array.isArray(propValue)) {\n\t return propValue.every(isNode);\n\t }\n\t if (propValue === null || isValidElement(propValue)) {\n\t return true;\n\t }\n\t\n\t var iteratorFn = getIteratorFn(propValue);\n\t if (iteratorFn) {\n\t var iterator = iteratorFn.call(propValue);\n\t var step;\n\t if (iteratorFn !== propValue.entries) {\n\t while (!(step = iterator.next()).done) {\n\t if (!isNode(step.value)) {\n\t return false;\n\t }\n\t }\n\t } else {\n\t // Iterator will provide entry [k,v] tuples rather than values.\n\t while (!(step = iterator.next()).done) {\n\t var entry = step.value;\n\t if (entry) {\n\t if (!isNode(entry[1])) {\n\t return false;\n\t }\n\t }\n\t }\n\t }\n\t } else {\n\t return false;\n\t }\n\t\n\t return true;\n\t default:\n\t return false;\n\t }\n\t }\n\t\n\t function isSymbol(propType, propValue) {\n\t // Native Symbol.\n\t if (propType === 'symbol') {\n\t return true;\n\t }\n\t\n\t // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n\t if (propValue['@@toStringTag'] === 'Symbol') {\n\t return true;\n\t }\n\t\n\t // Fallback for non-spec compliant Symbols which are polyfilled.\n\t if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n\t return true;\n\t }\n\t\n\t return false;\n\t }\n\t\n\t // Equivalent of `typeof` but with special handling for array and regexp.\n\t function getPropType(propValue) {\n\t var propType = typeof propValue;\n\t if (Array.isArray(propValue)) {\n\t return 'array';\n\t }\n\t if (propValue instanceof RegExp) {\n\t // Old webkits (at least until Android 4.0) return 'function' rather than\n\t // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n\t // passes PropTypes.object.\n\t return 'object';\n\t }\n\t if (isSymbol(propType, propValue)) {\n\t return 'symbol';\n\t }\n\t return propType;\n\t }\n\t\n\t // This handles more types than `getPropType`. Only used for error messages.\n\t // See `createPrimitiveTypeChecker`.\n\t function getPreciseType(propValue) {\n\t var propType = getPropType(propValue);\n\t if (propType === 'object') {\n\t if (propValue instanceof Date) {\n\t return 'date';\n\t } else if (propValue instanceof RegExp) {\n\t return 'regexp';\n\t }\n\t }\n\t return propType;\n\t }\n\t\n\t // Returns class name of the object, if any.\n\t function getClassName(propValue) {\n\t if (!propValue.constructor || !propValue.constructor.name) {\n\t return ANONYMOUS;\n\t }\n\t return propValue.constructor.name;\n\t }\n\t\n\t ReactPropTypes.checkPropTypes = checkPropTypes;\n\t ReactPropTypes.PropTypes = ReactPropTypes;\n\t\n\t return ReactPropTypes;\n\t};\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 20 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\tfunction makeEmptyFunction(arg) {\n\t return function () {\n\t return arg;\n\t };\n\t}\n\t\n\t/**\n\t * This function accepts and discards inputs; it has no side effects. This is\n\t * primarily useful idiomatically for overridable function endpoints which\n\t * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n\t */\n\tvar emptyFunction = function emptyFunction() {};\n\t\n\temptyFunction.thatReturns = makeEmptyFunction;\n\temptyFunction.thatReturnsFalse = makeEmptyFunction(false);\n\temptyFunction.thatReturnsTrue = makeEmptyFunction(true);\n\temptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\temptyFunction.thatReturnsThis = function () {\n\t return this;\n\t};\n\temptyFunction.thatReturnsArgument = function (arg) {\n\t return arg;\n\t};\n\t\n\tmodule.exports = emptyFunction;\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Use invariant() to assert state which your program assumes to be true.\n\t *\n\t * Provide sprintf-style format (only %s is supported) and arguments\n\t * to provide information about what broke and what you were\n\t * expecting.\n\t *\n\t * The invariant message will be stripped in production, but the invariant\n\t * will remain to ensure logic does not differ in production.\n\t */\n\t\n\tvar validateFormat = function validateFormat(format) {};\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t validateFormat = function validateFormat(format) {\n\t if (format === undefined) {\n\t throw new Error('invariant requires an error message argument');\n\t }\n\t };\n\t}\n\t\n\tfunction invariant(condition, format, a, b, c, d, e, f) {\n\t validateFormat(format);\n\t\n\t if (!condition) {\n\t var error;\n\t if (format === undefined) {\n\t error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n\t } else {\n\t var args = [a, b, c, d, e, f];\n\t var argIndex = 0;\n\t error = new Error(format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t }));\n\t error.name = 'Invariant Violation';\n\t }\n\t\n\t error.framesToPop = 1; // we don't care about invariant's own frame\n\t throw error;\n\t }\n\t}\n\t\n\tmodule.exports = invariant;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2014-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyFunction = __webpack_require__(20);\n\t\n\t/**\n\t * Similar to invariant but only logs a warning if the condition is not met.\n\t * This can be used to log issues in development environments in critical\n\t * paths. Removing the logging code for production environments will keep the\n\t * same logic and follow the same code paths.\n\t */\n\t\n\tvar warning = emptyFunction;\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t (function () {\n\t var printWarning = function printWarning(format) {\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t var argIndex = 0;\n\t var message = 'Warning: ' + format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t });\n\t if (typeof console !== 'undefined') {\n\t console.error(message);\n\t }\n\t try {\n\t // --- Welcome to debugging React ---\n\t // This error was thrown as a convenience so that you can use this stack\n\t // to find the callsite that caused this warning to fire.\n\t throw new Error(message);\n\t } catch (x) {}\n\t };\n\t\n\t warning = function warning(condition, format) {\n\t if (format === undefined) {\n\t throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n\t }\n\t\n\t if (format.indexOf('Failed Composite propType: ') === 0) {\n\t return; // Ignore CompositeComponent proptype check.\n\t }\n\t\n\t if (!condition) {\n\t for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n\t args[_key2 - 2] = arguments[_key2];\n\t }\n\t\n\t printWarning.apply(undefined, [format].concat(args));\n\t }\n\t };\n\t })();\n\t}\n\t\n\tmodule.exports = warning;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 23 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\t\n\tmodule.exports = ReactPropTypesSecret;\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tif (process.env.NODE_ENV !== 'production') {\n\t var invariant = __webpack_require__(21);\n\t var warning = __webpack_require__(22);\n\t var ReactPropTypesSecret = __webpack_require__(23);\n\t var loggedTypeFailures = {};\n\t}\n\t\n\t/**\n\t * Assert that the values match with the type specs.\n\t * Error messages are memorized and will only be shown once.\n\t *\n\t * @param {object} typeSpecs Map of name to a ReactPropType\n\t * @param {object} values Runtime values that need to be type-checked\n\t * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n\t * @param {string} componentName Name of the component for error messages.\n\t * @param {?Function} getStack Returns the component stack.\n\t * @private\n\t */\n\tfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t for (var typeSpecName in typeSpecs) {\n\t if (typeSpecs.hasOwnProperty(typeSpecName)) {\n\t var error;\n\t // Prop type validation may throw. In case they do, we don't want to\n\t // fail the render phase where it didn't fail before. So we log it.\n\t // After these have been cleaned up, we'll let them throw.\n\t try {\n\t // This is intentionally an invariant that gets caught. It's the same\n\t // behavior as without this statement except with a better message.\n\t invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n\t error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n\t } catch (ex) {\n\t error = ex;\n\t }\n\t warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n\t if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n\t // Only monitor this failure once because there tends to be a lot of the\n\t // same error.\n\t loggedTypeFailures[error.message] = true;\n\t\n\t var stack = getStack ? getStack() : '';\n\t\n\t warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n\t }\n\t }\n\t }\n\t }\n\t}\n\t\n\tmodule.exports = checkPropTypes;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 25 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyFunction = __webpack_require__(20);\n\tvar invariant = __webpack_require__(21);\n\t\n\tmodule.exports = function() {\n\t // Important!\n\t // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\t function shim() {\n\t invariant(\n\t false,\n\t 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n\t 'Use PropTypes.checkPropTypes() to call them. ' +\n\t 'Read more at http://fb.me/use-check-prop-types'\n\t );\n\t };\n\t shim.isRequired = shim;\n\t function getShim() {\n\t return shim;\n\t };\n\t var ReactPropTypes = {\n\t array: shim,\n\t bool: shim,\n\t func: shim,\n\t number: shim,\n\t object: shim,\n\t string: shim,\n\t symbol: shim,\n\t\n\t any: shim,\n\t arrayOf: getShim,\n\t element: shim,\n\t instanceOf: getShim,\n\t node: shim,\n\t objectOf: getShim,\n\t oneOf: getShim,\n\t oneOfType: getShim,\n\t shape: getShim\n\t };\n\t\n\t ReactPropTypes.checkPropTypes = emptyFunction;\n\t ReactPropTypes.PropTypes = ReactPropTypes;\n\t\n\t return ReactPropTypes;\n\t};\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _mapToZero = __webpack_require__(10);\n\t\n\tvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\t\n\tvar _stripStyle = __webpack_require__(11);\n\t\n\tvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\t\n\tvar _stepper3 = __webpack_require__(12);\n\t\n\tvar _stepper4 = _interopRequireDefault(_stepper3);\n\t\n\tvar _performanceNow = __webpack_require__(13);\n\t\n\tvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\t\n\tvar _raf = __webpack_require__(15);\n\t\n\tvar _raf2 = _interopRequireDefault(_raf);\n\t\n\tvar _shouldStopAnimation = __webpack_require__(17);\n\t\n\tvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\t\n\tvar _react = __webpack_require__(6);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _propTypes = __webpack_require__(18);\n\t\n\tvar _propTypes2 = _interopRequireDefault(_propTypes);\n\t\n\tvar msPerFrame = 1000 / 60;\n\t\n\tfunction shouldStopAnimationAll(currentStyles, styles, currentVelocities) {\n\t for (var i = 0; i < currentStyles.length; i++) {\n\t if (!_shouldStopAnimation2['default'](currentStyles[i], styles[i], currentVelocities[i])) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t}\n\t\n\tvar StaggeredMotion = (function (_React$Component) {\n\t _inherits(StaggeredMotion, _React$Component);\n\t\n\t _createClass(StaggeredMotion, null, [{\n\t key: 'propTypes',\n\t value: {\n\t // TOOD: warn against putting a config in here\n\t defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].objectOf(_propTypes2['default'].number)),\n\t styles: _propTypes2['default'].func.isRequired,\n\t children: _propTypes2['default'].func.isRequired\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function StaggeredMotion(props) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, StaggeredMotion);\n\t\n\t _React$Component.call(this, props);\n\t this.animationID = null;\n\t this.prevTime = 0;\n\t this.accumulatedTime = 0;\n\t this.unreadPropStyles = null;\n\t\n\t this.clearUnreadPropStyle = function (unreadPropStyles) {\n\t var _state = _this.state;\n\t var currentStyles = _state.currentStyles;\n\t var currentVelocities = _state.currentVelocities;\n\t var lastIdealStyles = _state.lastIdealStyles;\n\t var lastIdealVelocities = _state.lastIdealVelocities;\n\t\n\t var someDirty = false;\n\t for (var i = 0; i < unreadPropStyles.length; i++) {\n\t var unreadPropStyle = unreadPropStyles[i];\n\t var dirty = false;\n\t\n\t for (var key in unreadPropStyle) {\n\t if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n\t continue;\n\t }\n\t\n\t var styleValue = unreadPropStyle[key];\n\t if (typeof styleValue === 'number') {\n\t if (!dirty) {\n\t dirty = true;\n\t someDirty = true;\n\t currentStyles[i] = _extends({}, currentStyles[i]);\n\t currentVelocities[i] = _extends({}, currentVelocities[i]);\n\t lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n\t lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n\t }\n\t currentStyles[i][key] = styleValue;\n\t currentVelocities[i][key] = 0;\n\t lastIdealStyles[i][key] = styleValue;\n\t lastIdealVelocities[i][key] = 0;\n\t }\n\t }\n\t }\n\t\n\t if (someDirty) {\n\t _this.setState({ currentStyles: currentStyles, currentVelocities: currentVelocities, lastIdealStyles: lastIdealStyles, lastIdealVelocities: lastIdealVelocities });\n\t }\n\t };\n\t\n\t this.startAnimationIfNecessary = function () {\n\t // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n\t // call cb? No, otherwise accidental parent rerender causes cb trigger\n\t _this.animationID = _raf2['default'](function (timestamp) {\n\t var destStyles = _this.props.styles(_this.state.lastIdealStyles);\n\t\n\t // check if we need to animate in the first place\n\t if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities)) {\n\t // no need to cancel animationID here; shouldn't have any in flight\n\t _this.animationID = null;\n\t _this.accumulatedTime = 0;\n\t return;\n\t }\n\t\n\t var currentTime = timestamp || _performanceNow2['default']();\n\t var timeDelta = currentTime - _this.prevTime;\n\t _this.prevTime = currentTime;\n\t _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n\t // more than 10 frames? prolly switched browser tab. Restart\n\t if (_this.accumulatedTime > msPerFrame * 10) {\n\t _this.accumulatedTime = 0;\n\t }\n\t\n\t if (_this.accumulatedTime === 0) {\n\t // no need to cancel animationID here; shouldn't have any in flight\n\t _this.animationID = null;\n\t _this.startAnimationIfNecessary();\n\t return;\n\t }\n\t\n\t var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n\t var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\t\n\t var newLastIdealStyles = [];\n\t var newLastIdealVelocities = [];\n\t var newCurrentStyles = [];\n\t var newCurrentVelocities = [];\n\t\n\t for (var i = 0; i < destStyles.length; i++) {\n\t var destStyle = destStyles[i];\n\t var newCurrentStyle = {};\n\t var newCurrentVelocity = {};\n\t var newLastIdealStyle = {};\n\t var newLastIdealVelocity = {};\n\t\n\t for (var key in destStyle) {\n\t if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n\t continue;\n\t }\n\t\n\t var styleValue = destStyle[key];\n\t if (typeof styleValue === 'number') {\n\t newCurrentStyle[key] = styleValue;\n\t newCurrentVelocity[key] = 0;\n\t newLastIdealStyle[key] = styleValue;\n\t newLastIdealVelocity[key] = 0;\n\t } else {\n\t var newLastIdealStyleValue = _this.state.lastIdealStyles[i][key];\n\t var newLastIdealVelocityValue = _this.state.lastIdealVelocities[i][key];\n\t for (var j = 0; j < framesToCatchUp; j++) {\n\t var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\t\n\t newLastIdealStyleValue = _stepper[0];\n\t newLastIdealVelocityValue = _stepper[1];\n\t }\n\t\n\t var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\t\n\t var nextIdealX = _stepper2[0];\n\t var nextIdealV = _stepper2[1];\n\t\n\t newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n\t newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n\t newLastIdealStyle[key] = newLastIdealStyleValue;\n\t newLastIdealVelocity[key] = newLastIdealVelocityValue;\n\t }\n\t }\n\t\n\t newCurrentStyles[i] = newCurrentStyle;\n\t newCurrentVelocities[i] = newCurrentVelocity;\n\t newLastIdealStyles[i] = newLastIdealStyle;\n\t newLastIdealVelocities[i] = newLastIdealVelocity;\n\t }\n\t\n\t _this.animationID = null;\n\t // the amount we're looped over above\n\t _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\t\n\t _this.setState({\n\t currentStyles: newCurrentStyles,\n\t currentVelocities: newCurrentVelocities,\n\t lastIdealStyles: newLastIdealStyles,\n\t lastIdealVelocities: newLastIdealVelocities\n\t });\n\t\n\t _this.unreadPropStyles = null;\n\t\n\t _this.startAnimationIfNecessary();\n\t });\n\t };\n\t\n\t this.state = this.defaultState();\n\t }\n\t\n\t StaggeredMotion.prototype.defaultState = function defaultState() {\n\t var _props = this.props;\n\t var defaultStyles = _props.defaultStyles;\n\t var styles = _props.styles;\n\t\n\t var currentStyles = defaultStyles || styles().map(_stripStyle2['default']);\n\t var currentVelocities = currentStyles.map(function (currentStyle) {\n\t return _mapToZero2['default'](currentStyle);\n\t });\n\t return {\n\t currentStyles: currentStyles,\n\t currentVelocities: currentVelocities,\n\t lastIdealStyles: currentStyles,\n\t lastIdealVelocities: currentVelocities\n\t };\n\t };\n\t\n\t StaggeredMotion.prototype.componentDidMount = function componentDidMount() {\n\t this.prevTime = _performanceNow2['default']();\n\t this.startAnimationIfNecessary();\n\t };\n\t\n\t StaggeredMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n\t if (this.unreadPropStyles != null) {\n\t // previous props haven't had the chance to be set yet; set them here\n\t this.clearUnreadPropStyle(this.unreadPropStyles);\n\t }\n\t\n\t this.unreadPropStyles = props.styles(this.state.lastIdealStyles);\n\t if (this.animationID == null) {\n\t this.prevTime = _performanceNow2['default']();\n\t this.startAnimationIfNecessary();\n\t }\n\t };\n\t\n\t StaggeredMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n\t if (this.animationID != null) {\n\t _raf2['default'].cancel(this.animationID);\n\t this.animationID = null;\n\t }\n\t };\n\t\n\t StaggeredMotion.prototype.render = function render() {\n\t var renderedChildren = this.props.children(this.state.currentStyles);\n\t return renderedChildren && _react2['default'].Children.only(renderedChildren);\n\t };\n\t\n\t return StaggeredMotion;\n\t})(_react2['default'].Component);\n\t\n\texports['default'] = StaggeredMotion;\n\tmodule.exports = exports['default'];\n\t\n\t// it's possible that currentStyle's value is stale: if props is immediately\n\t// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n\t// at 0 (didn't have time to tick and interpolate even once). If we naively\n\t// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n\t// In reality currentStyle should be 400\n\t\n\t// after checking for unreadPropStyles != null, we manually go set the\n\t// non-interpolating values (those that are a number, without a spring\n\t// config)\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _mapToZero = __webpack_require__(10);\n\t\n\tvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\t\n\tvar _stripStyle = __webpack_require__(11);\n\t\n\tvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\t\n\tvar _stepper3 = __webpack_require__(12);\n\t\n\tvar _stepper4 = _interopRequireDefault(_stepper3);\n\t\n\tvar _mergeDiff = __webpack_require__(28);\n\t\n\tvar _mergeDiff2 = _interopRequireDefault(_mergeDiff);\n\t\n\tvar _performanceNow = __webpack_require__(13);\n\t\n\tvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\t\n\tvar _raf = __webpack_require__(15);\n\t\n\tvar _raf2 = _interopRequireDefault(_raf);\n\t\n\tvar _shouldStopAnimation = __webpack_require__(17);\n\t\n\tvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\t\n\tvar _react = __webpack_require__(6);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _propTypes = __webpack_require__(18);\n\t\n\tvar _propTypes2 = _interopRequireDefault(_propTypes);\n\t\n\tvar msPerFrame = 1000 / 60;\n\t\n\t// the children function & (potential) styles function asks as param an\n\t// Array<TransitionPlainStyle>, where each TransitionPlainStyle is of the format\n\t// {key: string, data?: any, style: PlainStyle}. However, the way we keep\n\t// internal states doesn't contain such a data structure (check the state and\n\t// TransitionMotionState). So when children function and others ask for such\n\t// data we need to generate them on the fly by combining mergedPropsStyles and\n\t// currentStyles/lastIdealStyles\n\tfunction rehydrateStyles(mergedPropsStyles, unreadPropStyles, plainStyles) {\n\t // Copy the value to a `const` so that Flow understands that the const won't\n\t // change and will be non-nullable in the callback below.\n\t var cUnreadPropStyles = unreadPropStyles;\n\t if (cUnreadPropStyles == null) {\n\t return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n\t return {\n\t key: mergedPropsStyle.key,\n\t data: mergedPropsStyle.data,\n\t style: plainStyles[i]\n\t };\n\t });\n\t }\n\t return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n\t for (var j = 0; j < cUnreadPropStyles.length; j++) {\n\t if (cUnreadPropStyles[j].key === mergedPropsStyle.key) {\n\t return {\n\t key: cUnreadPropStyles[j].key,\n\t data: cUnreadPropStyles[j].data,\n\t style: plainStyles[i]\n\t };\n\t }\n\t }\n\t return { key: mergedPropsStyle.key, data: mergedPropsStyle.data, style: plainStyles[i] };\n\t });\n\t}\n\t\n\tfunction shouldStopAnimationAll(currentStyles, destStyles, currentVelocities, mergedPropsStyles) {\n\t if (mergedPropsStyles.length !== destStyles.length) {\n\t return false;\n\t }\n\t\n\t for (var i = 0; i < mergedPropsStyles.length; i++) {\n\t if (mergedPropsStyles[i].key !== destStyles[i].key) {\n\t return false;\n\t }\n\t }\n\t\n\t // we have the invariant that mergedPropsStyles and\n\t // currentStyles/currentVelocities/last* are synced in terms of cells, see\n\t // mergeAndSync comment for more info\n\t for (var i = 0; i < mergedPropsStyles.length; i++) {\n\t if (!_shouldStopAnimation2['default'](currentStyles[i], destStyles[i].style, currentVelocities[i])) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\t\n\t// core key merging logic\n\t\n\t// things to do: say previously merged style is {a, b}, dest style (prop) is {b,\n\t// c}, previous current (interpolating) style is {a, b}\n\t// **invariant**: current[i] corresponds to merged[i] in terms of key\n\t\n\t// steps:\n\t// turn merged style into {a?, b, c}\n\t// add c, value of c is destStyles.c\n\t// maybe remove a, aka call willLeave(a), then merged is either {b, c} or {a, b, c}\n\t// turn current (interpolating) style from {a, b} into {a?, b, c}\n\t// maybe remove a\n\t// certainly add c, value of c is willEnter(c)\n\t// loop over merged and construct new current\n\t// dest doesn't change, that's owner's\n\tfunction mergeAndSync(willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldLastIdealStyles, oldLastIdealVelocities) {\n\t var newMergedPropsStyles = _mergeDiff2['default'](oldMergedPropsStyles, destStyles, function (oldIndex, oldMergedPropsStyle) {\n\t var leavingStyle = willLeave(oldMergedPropsStyle);\n\t if (leavingStyle == null) {\n\t didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n\t return null;\n\t }\n\t if (_shouldStopAnimation2['default'](oldCurrentStyles[oldIndex], leavingStyle, oldCurrentVelocities[oldIndex])) {\n\t didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n\t return null;\n\t }\n\t return { key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data, style: leavingStyle };\n\t });\n\t\n\t var newCurrentStyles = [];\n\t var newCurrentVelocities = [];\n\t var newLastIdealStyles = [];\n\t var newLastIdealVelocities = [];\n\t for (var i = 0; i < newMergedPropsStyles.length; i++) {\n\t var newMergedPropsStyleCell = newMergedPropsStyles[i];\n\t var foundOldIndex = null;\n\t for (var j = 0; j < oldMergedPropsStyles.length; j++) {\n\t if (oldMergedPropsStyles[j].key === newMergedPropsStyleCell.key) {\n\t foundOldIndex = j;\n\t break;\n\t }\n\t }\n\t // TODO: key search code\n\t if (foundOldIndex == null) {\n\t var plainStyle = willEnter(newMergedPropsStyleCell);\n\t newCurrentStyles[i] = plainStyle;\n\t newLastIdealStyles[i] = plainStyle;\n\t\n\t var velocity = _mapToZero2['default'](newMergedPropsStyleCell.style);\n\t newCurrentVelocities[i] = velocity;\n\t newLastIdealVelocities[i] = velocity;\n\t } else {\n\t newCurrentStyles[i] = oldCurrentStyles[foundOldIndex];\n\t newLastIdealStyles[i] = oldLastIdealStyles[foundOldIndex];\n\t newCurrentVelocities[i] = oldCurrentVelocities[foundOldIndex];\n\t newLastIdealVelocities[i] = oldLastIdealVelocities[foundOldIndex];\n\t }\n\t }\n\t\n\t return [newMergedPropsStyles, newCurrentStyles, newCurrentVelocities, newLastIdealStyles, newLastIdealVelocities];\n\t}\n\t\n\tvar TransitionMotion = (function (_React$Component) {\n\t _inherits(TransitionMotion, _React$Component);\n\t\n\t _createClass(TransitionMotion, null, [{\n\t key: 'propTypes',\n\t value: {\n\t defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n\t key: _propTypes2['default'].string.isRequired,\n\t data: _propTypes2['default'].any,\n\t style: _propTypes2['default'].objectOf(_propTypes2['default'].number).isRequired\n\t })),\n\t styles: _propTypes2['default'].oneOfType([_propTypes2['default'].func, _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n\t key: _propTypes2['default'].string.isRequired,\n\t data: _propTypes2['default'].any,\n\t style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired\n\t }))]).isRequired,\n\t children: _propTypes2['default'].func.isRequired,\n\t willEnter: _propTypes2['default'].func,\n\t willLeave: _propTypes2['default'].func,\n\t didLeave: _propTypes2['default'].func\n\t },\n\t enumerable: true\n\t }, {\n\t key: 'defaultProps',\n\t value: {\n\t willEnter: function willEnter(styleThatEntered) {\n\t return _stripStyle2['default'](styleThatEntered.style);\n\t },\n\t // recall: returning null makes the current unmounting TransitionStyle\n\t // disappear immediately\n\t willLeave: function willLeave() {\n\t return null;\n\t },\n\t didLeave: function didLeave() {}\n\t },\n\t enumerable: true\n\t }]);\n\t\n\t function TransitionMotion(props) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, TransitionMotion);\n\t\n\t _React$Component.call(this, props);\n\t this.unmounting = false;\n\t this.animationID = null;\n\t this.prevTime = 0;\n\t this.accumulatedTime = 0;\n\t this.unreadPropStyles = null;\n\t\n\t this.clearUnreadPropStyle = function (unreadPropStyles) {\n\t var _mergeAndSync = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, unreadPropStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\t\n\t var mergedPropsStyles = _mergeAndSync[0];\n\t var currentStyles = _mergeAndSync[1];\n\t var currentVelocities = _mergeAndSync[2];\n\t var lastIdealStyles = _mergeAndSync[3];\n\t var lastIdealVelocities = _mergeAndSync[4];\n\t\n\t for (var i = 0; i < unreadPropStyles.length; i++) {\n\t var unreadPropStyle = unreadPropStyles[i].style;\n\t var dirty = false;\n\t\n\t for (var key in unreadPropStyle) {\n\t if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n\t continue;\n\t }\n\t\n\t var styleValue = unreadPropStyle[key];\n\t if (typeof styleValue === 'number') {\n\t if (!dirty) {\n\t dirty = true;\n\t currentStyles[i] = _extends({}, currentStyles[i]);\n\t currentVelocities[i] = _extends({}, currentVelocities[i]);\n\t lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n\t lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n\t mergedPropsStyles[i] = {\n\t key: mergedPropsStyles[i].key,\n\t data: mergedPropsStyles[i].data,\n\t style: _extends({}, mergedPropsStyles[i].style)\n\t };\n\t }\n\t currentStyles[i][key] = styleValue;\n\t currentVelocities[i][key] = 0;\n\t lastIdealStyles[i][key] = styleValue;\n\t lastIdealVelocities[i][key] = 0;\n\t mergedPropsStyles[i].style[key] = styleValue;\n\t }\n\t }\n\t }\n\t\n\t // unlike the other 2 components, we can't detect staleness and optionally\n\t // opt out of setState here. each style object's data might contain new\n\t // stuff we're not/cannot compare\n\t _this.setState({\n\t currentStyles: currentStyles,\n\t currentVelocities: currentVelocities,\n\t mergedPropsStyles: mergedPropsStyles,\n\t lastIdealStyles: lastIdealStyles,\n\t lastIdealVelocities: lastIdealVelocities\n\t });\n\t };\n\t\n\t this.startAnimationIfNecessary = function () {\n\t if (_this.unmounting) {\n\t return;\n\t }\n\t\n\t // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n\t // call cb? No, otherwise accidental parent rerender causes cb trigger\n\t _this.animationID = _raf2['default'](function (timestamp) {\n\t // https://github.com/chenglou/react-motion/pull/420\n\t // > if execution passes the conditional if (this.unmounting), then\n\t // executes async defaultRaf and after that component unmounts and after\n\t // that the callback of defaultRaf is called, then setState will be called\n\t // on unmounted component.\n\t if (_this.unmounting) {\n\t return;\n\t }\n\t\n\t var propStyles = _this.props.styles;\n\t var destStyles = typeof propStyles === 'function' ? propStyles(rehydrateStyles(_this.state.mergedPropsStyles, _this.unreadPropStyles, _this.state.lastIdealStyles)) : propStyles;\n\t\n\t // check if we need to animate in the first place\n\t if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities, _this.state.mergedPropsStyles)) {\n\t // no need to cancel animationID here; shouldn't have any in flight\n\t _this.animationID = null;\n\t _this.accumulatedTime = 0;\n\t return;\n\t }\n\t\n\t var currentTime = timestamp || _performanceNow2['default']();\n\t var timeDelta = currentTime - _this.prevTime;\n\t _this.prevTime = currentTime;\n\t _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n\t // more than 10 frames? prolly switched browser tab. Restart\n\t if (_this.accumulatedTime > msPerFrame * 10) {\n\t _this.accumulatedTime = 0;\n\t }\n\t\n\t if (_this.accumulatedTime === 0) {\n\t // no need to cancel animationID here; shouldn't have any in flight\n\t _this.animationID = null;\n\t _this.startAnimationIfNecessary();\n\t return;\n\t }\n\t\n\t var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n\t var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\t\n\t var _mergeAndSync2 = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, destStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\t\n\t var newMergedPropsStyles = _mergeAndSync2[0];\n\t var newCurrentStyles = _mergeAndSync2[1];\n\t var newCurrentVelocities = _mergeAndSync2[2];\n\t var newLastIdealStyles = _mergeAndSync2[3];\n\t var newLastIdealVelocities = _mergeAndSync2[4];\n\t\n\t for (var i = 0; i < newMergedPropsStyles.length; i++) {\n\t var newMergedPropsStyle = newMergedPropsStyles[i].style;\n\t var newCurrentStyle = {};\n\t var newCurrentVelocity = {};\n\t var newLastIdealStyle = {};\n\t var newLastIdealVelocity = {};\n\t\n\t for (var key in newMergedPropsStyle) {\n\t if (!Object.prototype.hasOwnProperty.call(newMergedPropsStyle, key)) {\n\t continue;\n\t }\n\t\n\t var styleValue = newMergedPropsStyle[key];\n\t if (typeof styleValue === 'number') {\n\t newCurrentStyle[key] = styleValue;\n\t newCurrentVelocity[key] = 0;\n\t newLastIdealStyle[key] = styleValue;\n\t newLastIdealVelocity[key] = 0;\n\t } else {\n\t var newLastIdealStyleValue = newLastIdealStyles[i][key];\n\t var newLastIdealVelocityValue = newLastIdealVelocities[i][key];\n\t for (var j = 0; j < framesToCatchUp; j++) {\n\t var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\t\n\t newLastIdealStyleValue = _stepper[0];\n\t newLastIdealVelocityValue = _stepper[1];\n\t }\n\t\n\t var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\t\n\t var nextIdealX = _stepper2[0];\n\t var nextIdealV = _stepper2[1];\n\t\n\t newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n\t newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n\t newLastIdealStyle[key] = newLastIdealStyleValue;\n\t newLastIdealVelocity[key] = newLastIdealVelocityValue;\n\t }\n\t }\n\t\n\t newLastIdealStyles[i] = newLastIdealStyle;\n\t newLastIdealVelocities[i] = newLastIdealVelocity;\n\t newCurrentStyles[i] = newCurrentStyle;\n\t newCurrentVelocities[i] = newCurrentVelocity;\n\t }\n\t\n\t _this.animationID = null;\n\t // the amount we're looped over above\n\t _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\t\n\t _this.setState({\n\t currentStyles: newCurrentStyles,\n\t currentVelocities: newCurrentVelocities,\n\t lastIdealStyles: newLastIdealStyles,\n\t lastIdealVelocities: newLastIdealVelocities,\n\t mergedPropsStyles: newMergedPropsStyles\n\t });\n\t\n\t _this.unreadPropStyles = null;\n\t\n\t _this.startAnimationIfNecessary();\n\t });\n\t };\n\t\n\t this.state = this.defaultState();\n\t }\n\t\n\t TransitionMotion.prototype.defaultState = function defaultState() {\n\t var _props = this.props;\n\t var defaultStyles = _props.defaultStyles;\n\t var styles = _props.styles;\n\t var willEnter = _props.willEnter;\n\t var willLeave = _props.willLeave;\n\t var didLeave = _props.didLeave;\n\t\n\t var destStyles = typeof styles === 'function' ? styles(defaultStyles) : styles;\n\t\n\t // this is special. for the first time around, we don't have a comparison\n\t // between last (no last) and current merged props. we'll compute last so:\n\t // say default is {a, b} and styles (dest style) is {b, c}, we'll\n\t // fabricate last as {a, b}\n\t var oldMergedPropsStyles = undefined;\n\t if (defaultStyles == null) {\n\t oldMergedPropsStyles = destStyles;\n\t } else {\n\t oldMergedPropsStyles = defaultStyles.map(function (defaultStyleCell) {\n\t // TODO: key search code\n\t for (var i = 0; i < destStyles.length; i++) {\n\t if (destStyles[i].key === defaultStyleCell.key) {\n\t return destStyles[i];\n\t }\n\t }\n\t return defaultStyleCell;\n\t });\n\t }\n\t var oldCurrentStyles = defaultStyles == null ? destStyles.map(function (s) {\n\t return _stripStyle2['default'](s.style);\n\t }) : defaultStyles.map(function (s) {\n\t return _stripStyle2['default'](s.style);\n\t });\n\t var oldCurrentVelocities = defaultStyles == null ? destStyles.map(function (s) {\n\t return _mapToZero2['default'](s.style);\n\t }) : defaultStyles.map(function (s) {\n\t return _mapToZero2['default'](s.style);\n\t });\n\t\n\t var _mergeAndSync3 = mergeAndSync(\n\t // Because this is an old-style createReactClass component, Flow doesn't\n\t // understand that the willEnter and willLeave props have default values\n\t // and will always be present.\n\t willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldCurrentStyles, // oldLastIdealStyles really\n\t oldCurrentVelocities);\n\t\n\t var mergedPropsStyles = _mergeAndSync3[0];\n\t var currentStyles = _mergeAndSync3[1];\n\t var currentVelocities = _mergeAndSync3[2];\n\t var lastIdealStyles = _mergeAndSync3[3];\n\t var lastIdealVelocities = _mergeAndSync3[4];\n\t // oldLastIdealVelocities really\n\t\n\t return {\n\t currentStyles: currentStyles,\n\t currentVelocities: currentVelocities,\n\t lastIdealStyles: lastIdealStyles,\n\t lastIdealVelocities: lastIdealVelocities,\n\t mergedPropsStyles: mergedPropsStyles\n\t };\n\t };\n\t\n\t // after checking for unreadPropStyles != null, we manually go set the\n\t // non-interpolating values (those that are a number, without a spring\n\t // config)\n\t\n\t TransitionMotion.prototype.componentDidMount = function componentDidMount() {\n\t this.prevTime = _performanceNow2['default']();\n\t this.startAnimationIfNecessary();\n\t };\n\t\n\t TransitionMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n\t if (this.unreadPropStyles) {\n\t // previous props haven't had the chance to be set yet; set them here\n\t this.clearUnreadPropStyle(this.unreadPropStyles);\n\t }\n\t\n\t var styles = props.styles;\n\t if (typeof styles === 'function') {\n\t this.unreadPropStyles = styles(rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.lastIdealStyles));\n\t } else {\n\t this.unreadPropStyles = styles;\n\t }\n\t\n\t if (this.animationID == null) {\n\t this.prevTime = _performanceNow2['default']();\n\t this.startAnimationIfNecessary();\n\t }\n\t };\n\t\n\t TransitionMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n\t this.unmounting = true;\n\t if (this.animationID != null) {\n\t _raf2['default'].cancel(this.animationID);\n\t this.animationID = null;\n\t }\n\t };\n\t\n\t TransitionMotion.prototype.render = function render() {\n\t var hydratedStyles = rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.currentStyles);\n\t var renderedChildren = this.props.children(hydratedStyles);\n\t return renderedChildren && _react2['default'].Children.only(renderedChildren);\n\t };\n\t\n\t return TransitionMotion;\n\t})(_react2['default'].Component);\n\t\n\texports['default'] = TransitionMotion;\n\tmodule.exports = exports['default'];\n\t\n\t// list of styles, each containing interpolating values. Part of what's passed\n\t// to children function. Notice that this is\n\t// Array<ActualInterpolatingStyleObject>, without the wrapper that is {key: ...,\n\t// data: ... style: ActualInterpolatingStyleObject}. Only mergedPropsStyles\n\t// contains the key & data info (so that we only have a single source of truth\n\t// for these, and to save space). Check the comment for `rehydrateStyles` to\n\t// see how we regenerate the entirety of what's passed to children function\n\t\n\t// the array that keeps track of currently rendered stuff! Including stuff\n\t// that you've unmounted but that's still animating. This is where it lives\n\t\n\t// it's possible that currentStyle's value is stale: if props is immediately\n\t// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n\t// at 0 (didn't have time to tick and interpolate even once). If we naively\n\t// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n\t// In reality currentStyle should be 400\n\n/***/ },\n/* 28 */\n/***/ function(module, exports) {\n\n\t\n\t\n\t// core keys merging algorithm. If previous render's keys are [a, b], and the\n\t// next render's [c, b, d], what's the final merged keys and ordering?\n\t\n\t// - c and a must both be before b\n\t// - b before d\n\t// - ordering between a and c ambiguous\n\t\n\t// this reduces to merging two partially ordered lists (e.g. lists where not\n\t// every item has a definite ordering, like comparing a and c above). For the\n\t// ambiguous ordering we deterministically choose to place the next render's\n\t// item after the previous'; so c after a\n\t\n\t// this is called a topological sorting. Except the existing algorithms don't\n\t// work well with js bc of the amount of allocation, and isn't optimized for our\n\t// current use-case bc the runtime is linear in terms of edges (see wiki for\n\t// meaning), which is huge when two lists have many common elements\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = mergeDiff;\n\t\n\tfunction mergeDiff(prev, next, onRemove) {\n\t // bookkeeping for easier access of a key's index below. This is 2 allocations +\n\t // potentially triggering chrome hash map mode for objs (so it might be faster\n\t\n\t var prevKeyIndex = {};\n\t for (var i = 0; i < prev.length; i++) {\n\t prevKeyIndex[prev[i].key] = i;\n\t }\n\t var nextKeyIndex = {};\n\t for (var i = 0; i < next.length; i++) {\n\t nextKeyIndex[next[i].key] = i;\n\t }\n\t\n\t // first, an overly elaborate way of merging prev and next, eliminating\n\t // duplicates (in terms of keys). If there's dupe, keep the item in next).\n\t // This way of writing it saves allocations\n\t var ret = [];\n\t for (var i = 0; i < next.length; i++) {\n\t ret[i] = next[i];\n\t }\n\t for (var i = 0; i < prev.length; i++) {\n\t if (!Object.prototype.hasOwnProperty.call(nextKeyIndex, prev[i].key)) {\n\t // this is called my TM's `mergeAndSync`, which calls willLeave. We don't\n\t // merge in keys that the user desires to kill\n\t var fill = onRemove(i, prev[i]);\n\t if (fill != null) {\n\t ret.push(fill);\n\t }\n\t }\n\t }\n\t\n\t // now all the items all present. Core sorting logic to have the right order\n\t return ret.sort(function (a, b) {\n\t var nextOrderA = nextKeyIndex[a.key];\n\t var nextOrderB = nextKeyIndex[b.key];\n\t var prevOrderA = prevKeyIndex[a.key];\n\t var prevOrderB = prevKeyIndex[b.key];\n\t\n\t if (nextOrderA != null && nextOrderB != null) {\n\t // both keys in next\n\t return nextKeyIndex[a.key] - nextKeyIndex[b.key];\n\t } else if (prevOrderA != null && prevOrderB != null) {\n\t // both keys in prev\n\t return prevKeyIndex[a.key] - prevKeyIndex[b.key];\n\t } else if (nextOrderA != null) {\n\t // key a in next, key b in prev\n\t\n\t // how to determine the order between a and b? We find a \"pivot\" (term\n\t // abuse), a key present in both prev and next, that is sandwiched between\n\t // a and b. In the context of our above example, if we're comparing a and\n\t // d, b's (the only) pivot\n\t for (var i = 0; i < next.length; i++) {\n\t var pivot = next[i].key;\n\t if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n\t continue;\n\t }\n\t\n\t if (nextOrderA < nextKeyIndex[pivot] && prevOrderB > prevKeyIndex[pivot]) {\n\t return -1;\n\t } else if (nextOrderA > nextKeyIndex[pivot] && prevOrderB < prevKeyIndex[pivot]) {\n\t return 1;\n\t }\n\t }\n\t // pluggable. default to: next bigger than prev\n\t return 1;\n\t }\n\t // prevOrderA, nextOrderB\n\t for (var i = 0; i < next.length; i++) {\n\t var pivot = next[i].key;\n\t if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n\t continue;\n\t }\n\t if (nextOrderB < nextKeyIndex[pivot] && prevOrderA > prevKeyIndex[pivot]) {\n\t return 1;\n\t } else if (nextOrderB > nextKeyIndex[pivot] && prevOrderA < prevKeyIndex[pivot]) {\n\t return -1;\n\t }\n\t }\n\t // pluggable. default to: next bigger than prev\n\t return -1;\n\t });\n\t}\n\t\n\tmodule.exports = exports['default'];\n\t// to loop through and find a key's index each time), but I no longer care\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\texports['default'] = spring;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _presets = __webpack_require__(30);\n\t\n\tvar _presets2 = _interopRequireDefault(_presets);\n\t\n\tvar defaultConfig = _extends({}, _presets2['default'].noWobble, {\n\t precision: 0.01\n\t});\n\t\n\tfunction spring(val, config) {\n\t return _extends({}, defaultConfig, config, { val: val });\n\t}\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 30 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\texports[\"default\"] = {\n\t noWobble: { stiffness: 170, damping: 26 }, // the default, if nothing provided\n\t gentle: { stiffness: 120, damping: 14 },\n\t wobbly: { stiffness: 180, damping: 12 },\n\t stiff: { stiffness: 210, damping: 20 }\n\t};\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = reorderKeys;\n\t\n\tvar hasWarned = false;\n\t\n\tfunction reorderKeys() {\n\t if (process.env.NODE_ENV === 'development') {\n\t if (!hasWarned) {\n\t hasWarned = true;\n\t console.error('`reorderKeys` has been removed, since it is no longer needed for TransitionMotion\\'s new styles array API.');\n\t }\n\t }\n\t}\n\t\n\tmodule.exports = exports['default'];\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))\n\n/***/ },\n/* 32 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.findDOMNode = findDOMNode;\n\texports.warnAboutFunctionChild = warnAboutFunctionChild;\n\texports.warnAboutElementChild = warnAboutElementChild;\n\texports.positiveOrZero = positiveOrZero;\n\texports.modifyObjValues = modifyObjValues;\n\texports.isReact13 = isReact13;\n\t\n\tvar _react = __webpack_require__(6);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar react13 = isReact13(_react2.default);\n\tvar didWarnAboutChild = false;\n\t\n\tfunction findDOMNode(component) {\n\t if (!react13) {\n\t return component;\n\t } else {\n\t return _react2.default.findDOMNode(component);\n\t }\n\t}\n\t\n\tfunction warnAboutFunctionChild() {\n\t if (didWarnAboutChild || react13) {\n\t return;\n\t }\n\t\n\t didWarnAboutChild = true;\n\t console.error('With React 0.14 and later versions, you no longer need to wrap <ScrollArea> child into a function.');\n\t}\n\t\n\tfunction warnAboutElementChild() {\n\t if (didWarnAboutChild || !react13) {\n\t return;\n\t }\n\t\n\t didWarnAboutChild = true;\n\t console.error('With React 0.13, you need to wrap <ScrollArea> child into a function.');\n\t}\n\t\n\tfunction positiveOrZero(number) {\n\t return number < 0 ? 0 : number;\n\t}\n\t\n\tfunction modifyObjValues(obj) {\n\t var modifier = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (x) {\n\t return x;\n\t };\n\t\n\t var modifiedObj = {};\n\t for (var key in obj) {\n\t if (obj.hasOwnProperty(key)) modifiedObj[key] = modifier(obj[key]);\n\t }\n\t\n\t return modifiedObj;\n\t}\n\t\n\tfunction isReact13(React) {\n\t var version = React.version;\n\t\n\t if (typeof version !== 'string') {\n\t return true;\n\t }\n\t\n\t var parts = version.split('.');\n\t var major = parseInt(parts[0], 10);\n\t var minor = parseInt(parts[1], 10);\n\t\n\t return major === 0 && minor === 13;\n\t}\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Load in dependencies\n\tvar computedStyle = __webpack_require__(34);\n\t\n\t/**\n\t * Calculate the `line-height` of a given node\n\t * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.\n\t * @returns {Number} `line-height` of the element in pixels\n\t */\n\tfunction lineHeight(node) {\n\t // Grab the line-height via style\n\t var lnHeightStr = computedStyle(node, 'line-height'),\n\t lnHeight = parseFloat(lnHeightStr, 10);\n\t\n\t // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em')\n\t if (lnHeightStr === lnHeight + '') {\n\t // Save the old lineHeight style and update the em unit to the element\n\t var _lnHeightStyle = node.style.lineHeight;\n\t node.style.lineHeight = lnHeightStr + 'em';\n\t\n\t // Calculate the em based height\n\t lnHeightStr = computedStyle(node, 'line-height');\n\t lnHeight = parseFloat(lnHeightStr, 10);\n\t\n\t // Revert the lineHeight style\n\t if (_lnHeightStyle) {\n\t node.style.lineHeight = _lnHeightStyle;\n\t } else {\n\t delete node.style.lineHeight;\n\t }\n\t }\n\t\n\t // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt)\n\t // DEV: `em` units are converted to `pt` in IE6\n\t // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length\n\t if (lnHeightStr.indexOf('pt') !== -1) {\n\t lnHeight *= 4;\n\t lnHeight /= 3;\n\t } else if (lnHeightStr.indexOf('mm') !== -1) {\n\t // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm)\n\t lnHeight *= 96;\n\t lnHeight /= 25.4;\n\t } else if (lnHeightStr.indexOf('cm') !== -1) {\n\t // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm)\n\t lnHeight *= 96;\n\t lnHeight /= 2.54;\n\t } else if (lnHeightStr.indexOf('in') !== -1) {\n\t // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in)\n\t lnHeight *= 96;\n\t } else if (lnHeightStr.indexOf('pc') !== -1) {\n\t // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc)\n\t lnHeight *= 16;\n\t }\n\t\n\t // Continue our computation\n\t lnHeight = Math.round(lnHeight);\n\t\n\t // If the line-height is \"normal\", calculate by font-size\n\t if (lnHeightStr === 'normal') {\n\t // Create a temporary node\n\t var nodeName = node.nodeName,\n\t _node = document.createElement(nodeName);\n\t _node.innerHTML = ' ';\n\t\n\t // Set the font-size of the element\n\t var fontSizeStr = computedStyle(node, 'font-size');\n\t _node.style.fontSize = fontSizeStr;\n\t\n\t // Append it to the body\n\t var body = document.body;\n\t body.appendChild(_node);\n\t\n\t // Assume the line height of the element is the height\n\t var height = _node.offsetHeight;\n\t lnHeight = height;\n\t\n\t // Remove our child from the DOM\n\t body.removeChild(_node);\n\t }\n\t\n\t // Return the calculated height\n\t return lnHeight;\n\t}\n\t\n\t// Export lineHeight\n\tmodule.exports = lineHeight;\n\n/***/ },\n/* 34 */\n/***/ function(module, exports) {\n\n\t// This code has been refactored for 140 bytes\n\t// You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js\n\tvar computedStyle = function (el, prop, getComputedStyle) {\n\t getComputedStyle = window.getComputedStyle;\n\t\n\t // In one fell swoop\n\t return (\n\t // If we have getComputedStyle\n\t getComputedStyle ?\n\t // Query it\n\t // TODO: From CSS-Query notes, we might need (node, null) for FF\n\t getComputedStyle(el) :\n\t\n\t // Otherwise, we are in IE and use currentStyle\n\t el.currentStyle\n\t )[\n\t // Switch to camelCase for CSSOM\n\t // DEV: Grabbed from jQuery\n\t // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194\n\t // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597\n\t prop.replace(/-(\\w)/gi, function (word, letter) {\n\t return letter.toUpperCase();\n\t })\n\t ];\n\t};\n\t\n\tmodule.exports = computedStyle;\n\n\n/***/ }\n/******/ ])\n});\n;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCA5ZDNlMmZhYWU3ODU4MzNhYWE0MiIsIndlYnBhY2s6Ly8vLi9zcmMvanMvU2Nyb2xsQXJlYVdpdGhDc3MuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2xlc3Mvc2Nyb2xsQXJlYS5sZXNzP2Y4MDQiLCJ3ZWJwYWNrOi8vLy4vc3JjL2xlc3Mvc2Nyb2xsQXJlYS5sZXNzIiwid2VicGFjazovLy8uL34vY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanMiLCJ3ZWJwYWNrOi8vLy4vfi9zdHlsZS1sb2FkZXIvYWRkU3R5bGVzLmpzIiwid2VicGFjazovLy8uL3NyYy9qcy9TY3JvbGxBcmVhLmpzeCIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwge1wicm9vdFwiOlwiUmVhY3RcIixcImNvbW1vbmpzMlwiOlwicmVhY3RcIixcImNvbW1vbmpzXCI6XCJyZWFjdFwiLFwiYW1kXCI6XCJyZWFjdFwifSIsIndlYnBhY2s6Ly8vLi9zcmMvanMvU2Nyb2xsYmFyLmpzeCIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LW1vdGlvbi9saWIvcmVhY3QtbW90aW9uLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtbW90aW9uL2xpYi9Nb3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1tb3Rpb24vbGliL21hcFRvWmVyby5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LW1vdGlvbi9saWIvc3RyaXBTdHlsZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LW1vdGlvbi9saWIvc3RlcHBlci5qcyIsIndlYnBhY2s6Ly8vLi9+L3BlcmZvcm1hbmNlLW5vdy9saWIvcGVyZm9ybWFuY2Utbm93LmpzIiwid2VicGFjazovLy8uL34vcHJvY2Vzcy9icm93c2VyLmpzIiwid2VicGFjazovLy8uL34vcmFmL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vcmFmL34vcGVyZm9ybWFuY2Utbm93L2xpYi9wZXJmb3JtYW5jZS1ub3cuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1tb3Rpb24vbGliL3Nob3VsZFN0b3BBbmltYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2VtcHR5RnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9pbnZhcmlhbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi93YXJuaW5nLmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9wcm9wLXR5cGVzL2NoZWNrUHJvcFR5cGVzLmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1tb3Rpb24vbGliL1N0YWdnZXJlZE1vdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LW1vdGlvbi9saWIvVHJhbnNpdGlvbk1vdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LW1vdGlvbi9saWIvbWVyZ2VEaWZmLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtbW90aW9uL2xpYi9zcHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1tb3Rpb24vbGliL3ByZXNldHMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1tb3Rpb24vbGliL3Jlb3JkZXJLZXlzLmpzIiwid2VicGFjazovLy8uL3NyYy9qcy91dGlscy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xpbmUtaGVpZ2h0L2xpYi9saW5lLWhlaWdodC5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvbXB1dGVkLXN0eWxlL2Rpc3QvY29tcHV0ZWRTdHlsZS5jb21tb25qcy5qcyJdLCJuYW1lcyI6WyJldmVudFR5cGVzIiwid2hlZWwiLCJhcGkiLCJ0b3VjaCIsInRvdWNoRW5kIiwibW91c2Vtb3ZlIiwia2V5UHJlc3MiLCJTY3JvbGxBcmVhIiwicHJvcHMiLCJzdGF0ZSIsInRvcFBvc2l0aW9uIiwibGVmdFBvc2l0aW9uIiwicmVhbEhlaWdodCIsImNvbnRhaW5lckhlaWdodCIsInJlYWxXaWR0aCIsImNvbnRhaW5lcldpZHRoIiwic2Nyb2xsQXJlYSIsInJlZnJlc2giLCJzZXRTaXplc1RvU3RhdGUiLCJzY3JvbGxUb3AiLCJzY3JvbGxCb3R0b20iLCJzY3JvbGxZVG8iLCJwb3NpdGlvbiIsInNjcm9sbExlZnQiLCJzY3JvbGxSaWdodCIsInNjcm9sbFhUbyIsImV2bnRzUHJldmlvdXNWYWx1ZXMiLCJjbGllbnRYIiwiY2xpZW50WSIsImRlbHRhWCIsImRlbHRhWSIsImJpbmRlZEhhbmRsZVdpbmRvd1Jlc2l6ZSIsImhhbmRsZVdpbmRvd1Jlc2l6ZSIsImJpbmQiLCJjb250ZW50V2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsImxpbmVIZWlnaHRQeCIsImNvbnRlbnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJjb250ZW50Q2xhc3NOYW1lIiwib3duZXJEb2N1bWVudCIsIndpdGhNb3Rpb24iLCJzbW9vdGhTY3JvbGxpbmciLCJldmVudFR5cGUiLCJzY3JvbGxiYXJZIiwiY2FuU2Nyb2xsWSIsImhhbmRsZVNjcm9sbGJhck1vdmUiLCJoYW5kbGVTY3JvbGxiYXJZUG9zaXRpb25DaGFuZ2UiLCJ2ZXJ0aWNhbENvbnRhaW5lclN0eWxlIiwidmVydGljYWxTY3JvbGxiYXJTdHlsZSIsIm1pblNjcm9sbFNpemUiLCJmb2N1c0NvbnRlbnQiLCJzY3JvbGxiYXJYIiwiY2FuU2Nyb2xsWCIsImhhbmRsZVNjcm9sbGJhclhQb3NpdGlvbkNoYW5nZSIsImhvcml6b250YWxDb250YWluZXJTdHlsZSIsImhvcml6b250YWxTY3JvbGxiYXJTdHlsZSIsImNsYXNzZXMiLCJjb250ZW50Q2xhc3NlcyIsImNvbnRlbnRTdHlsZSIsIm1hcmdpblRvcCIsIm1hcmdpbkxlZnQiLCJzcHJpbmdpZmllZENvbnRlbnRTdHlsZSIsIngiLCJ3cmFwcGVyIiwic3R5bGUiLCJoYW5kbGVXaGVlbCIsImhhbmRsZVRvdWNoU3RhcnQiLCJoYW5kbGVUb3VjaE1vdmUiLCJoYW5kbGVUb3VjaEVuZCIsImhhbmRsZUtleURvd24iLCJmb2N1c2FibGVUYWJJbmRleCIsIm5ld1N0YXRlIiwib25TY3JvbGwiLCJzZXRTdGF0ZSIsImUiLCJ0b3VjaGVzIiwibGVuZ3RoIiwiZXZlbnRQcmV2aW91c1ZhbHVlcyIsInRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInNldFN0YXRlRnJvbUV2ZW50IiwiY29tcG9zZU5ld1N0YXRlIiwic3dhcFdoZWVsQXhlcyIsImRlbHRhTW9kZSIsInNwZWVkIiwic3RvcFNjcm9sbFByb3BhZ2F0aW9uIiwidGFyZ2V0IiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwibGluZUhlaWdodCIsImtleUNvZGUiLCJjb21wdXRlU2l6ZXMiLCJnZXRNb2RpZmllZFBvc2l0aW9uc0lmTmVlZGVkIiwiY29tcHV0ZVRvcFBvc2l0aW9uIiwiY29tcHV0ZUxlZnRQb3NpdGlvbiIsInNpemVzIiwibmV3VG9wUG9zaXRpb24iLCJub3JtYWxpemVUb3BQb3NpdGlvbiIsIm5ld0xlZnRQb3NpdGlvbiIsIm5vcm1hbGl6ZUxlZnRQb3NpdGlvbiIsIm9mZnNldEhlaWdodCIsIm9mZnNldFdpZHRoIiwic2Nyb2xsYWJsZVkiLCJ2ZXJ0aWNhbCIsInNjcm9sbGFibGVYIiwiaG9yaXpvbnRhbCIsImJvdHRvbVBvc2l0aW9uIiwicmlnaHRQb3NpdGlvbiIsImZvY3VzIiwiQ29tcG9uZW50IiwiY2hpbGRDb250ZXh0VHlwZXMiLCJvYmplY3QiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJudW1iZXIiLCJib29sIiwiZnVuYyIsImFueSIsImRlZmF1bHRQcm9wcyIsIndpbmRvdyIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiU2Nyb2xsQmFyIiwiY2FsY3VsYXRlU3RhdGUiLCJzY3JvbGxTaXplIiwiaXNEcmFnZ2luZyIsImxhc3RDbGllbnRQb3NpdGlvbiIsInR5cGUiLCJiaW5kZWRIYW5kbGVNb3VzZU1vdmUiLCJoYW5kbGVNb3VzZU1vdmVGb3JWZXJ0aWNhbCIsImhhbmRsZU1vdXNlTW92ZUZvckhvcml6b250YWwiLCJiaW5kZWRIYW5kbGVNb3VzZVVwIiwiaGFuZGxlTW91c2VVcCIsIm5leHRQcm9wcyIsInJlYWxDb250ZW50U2l6ZSIsImNvbnRhaW5lclNpemUiLCJjb250ZW50UG9zaXRpb24iLCJyZWxhdGl2ZVNpemUiLCJmcmFjdGlvbmFsUG9zaXRpb24iLCJjYWxjdWxhdGVGcmFjdGlvbmFsUG9zaXRpb24iLCJyZWFsU2l6ZSIsInByb3BvcnRpb25hbFRvUGFnZVNjcm9sbFNpemUiLCJzY3JvbGxQb3NpdGlvbiIsIk1hdGgiLCJyb3VuZCIsInNjcm9sbGJhclN0eWxlIiwiY29udGFpbmVyU3R5bGUiLCJpc1Zvcml6aW9udGFsIiwiaXNWZXJ0aWNhbCIsInNjcm9sbFN0eWxlcyIsImNyZWF0ZVNjcm9sbFN0eWxlcyIsInNwcmluZ2lmaWVkU2Nyb2xsU3R5bGVzIiwic2Nyb2xsYmFyQ2xhc3NlcyIsImhhbmRsZVNjcm9sbEJhckNvbnRhaW5lckNsaWNrIiwic2Nyb2xsYmFyQ29udGFpbmVyIiwiaGFuZGxlTW91c2VEb3duIiwibXVsdGlwbGllciIsImNvbXB1dGVNdWx0aXBsaWVyIiwiY2xpZW50UG9zaXRpb24iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3AiLCJsZWZ0IiwiY2xpZW50U2Nyb2xsUG9zaXRpb24iLCJvblBvc2l0aW9uQ2hhbmdlIiwib25Nb3ZlIiwib25Gb2N1cyIsImhlaWdodCIsIndpZHRoIiwib25lT2YiLCJmaW5kRE9NTm9kZSIsIndhcm5BYm91dEZ1bmN0aW9uQ2hpbGQiLCJ3YXJuQWJvdXRFbGVtZW50Q2hpbGQiLCJwb3NpdGl2ZU9yWmVybyIsIm1vZGlmeU9ialZhbHVlcyIsImlzUmVhY3QxMyIsInJlYWN0MTMiLCJkaWRXYXJuQWJvdXRDaGlsZCIsImNvbXBvbmVudCIsImNvbnNvbGUiLCJlcnJvciIsIm9iaiIsIm1vZGlmaWVyIiwibW9kaWZpZWRPYmoiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsIlJlYWN0IiwidmVyc2lvbiIsInBhcnRzIiwic3BsaXQiLCJtYWpvciIsInBhcnNlSW50IiwibWlub3IiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxPO0FDVkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQWU7QUFDZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3RDQTs7QUFDQTs7Ozs7Ozs7Ozs7O0FDREE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBaUY7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQSxpQ0FBZ0MsVUFBVSxFQUFFO0FBQzVDLEU7Ozs7OztBQ3BCQTtBQUNBOzs7QUFHQTtBQUNBLGdEQUErQyxjQUFjLGVBQWUscUJBQXFCLHVCQUF1QixHQUFHLDZCQUE2QixlQUFlLEdBQUcsZUFBZSx1QkFBdUIscUJBQXFCLEdBQUcsb0NBQW9DLHVCQUF1QixxQkFBcUIsZ0JBQWdCLGtCQUFrQixnQ0FBZ0MsNkJBQTZCLDRCQUE0QiwyQkFBMkIsd0JBQXdCLEdBQUcsK0NBQStDLGdCQUFnQixpQkFBaUIsWUFBWSxjQUFjLEdBQUcsMERBQTBELGdCQUFnQixnQkFBZ0Isc0JBQXNCLG9CQUFvQixHQUFHLDZDQUE2QyxnQkFBZ0Is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RUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQzs7Ozs7Ozs7QUNsQkE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCOzs7Ozs7QUMxQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBQzs7Ozs7Ozs7QUMvQkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQSxFQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBcUI7QUFDckI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQSw2QkFBNEIsVUFBVTs7Ozs7OztBQ25MdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWMsNEJBQTRCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXNCLGVBQWU7QUFDckM7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiLHNDQUFxQyxVQUFVO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxtQkFBa0Isa0JBQWtCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUN2RUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUM7O0FBRUQ7Ozs7Ozs7Ozs7QUNqQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxxQzs7Ozs7O0FDOUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQztBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQzdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWEsUUFBUTtBQUNyQixlQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVTtBQUNWLDhCQUE2QjtBQUM3QixTQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBK0IsS0FBSztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNULDZCQUE0QjtBQUM1QixRQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFxQixzQkFBc0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBcUIsMkJBQTJCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFxQixnQ0FBZ0M7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QTtBQUNBO0FBQ0E7QUFDQSw4QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2Qjs7Ozs7O0FDcEZBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBOztBQUVBIiwiZmlsZSI6IjlkM2UyZmFhZTc4NTgzM2FhYTQyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wicmVhY3RcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiU2Nyb2xsQXJlYVwiXSA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJTY3JvbGxBcmVhXCJdID0gZmFjdG9yeShyb290W1wiUmVhY3RcIl0pO1xufSkodGhpcywgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV82X18pIHtcbnJldHVybiBcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGV4cG9ydHM6IHt9LFxuIFx0XHRcdGlkOiBtb2R1bGVJZCxcbiBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgOWQzZTJmYWFlNzg1ODMzYWFhNDIiLCJpbXBvcnQgJy4uL2xlc3Mvc2Nyb2xsQXJlYS5sZXNzJztcbmltcG9ydCBTY3JvbGxBcmVhIGZyb20gJy4vU2Nyb2xsQXJlYS5qc3gnO1xuXG5leHBvcnQgZGVmYXVsdCBTY3JvbGxBcmVhO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9qcy9TY3JvbGxBcmVhV2l0aENzcy5qcyIsIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvbGVzcy1sb2FkZXIvaW5kZXguanMhLi9zY3JvbGxBcmVhLmxlc3NcIik7XG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbi8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIHt9KTtcbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuXHQvLyBXaGVuIHRoZSBzdHlsZXMgY2hhbmdlLCB1cGRhdGUgdGhlIDxzdHlsZT4gdGFnc1xuXHRpZighY29udGVudC5sb2NhbHMpIHtcblx0XHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vbm9kZV9tb2R1bGVzL2xlc3MtbG9hZGVyL2luZGV4LmpzIS4vc2Nyb2xsQXJlYS5sZXNzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvbGVzcy1sb2FkZXIvaW5kZXguanMhLi9zY3JvbGxBcmVhLmxlc3NcIik7XG5cdFx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblx0XHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0XHR9KTtcblx0fVxuXHQvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2xlc3Mvc2Nyb2xsQXJlYS5sZXNzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5zY3JvbGxhcmVhLWNvbnRlbnQge1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5zY3JvbGxhcmVhLWNvbnRlbnQ6Zm9jdXMge1xcbiAgb3V0bGluZTogMDtcXG59XFxuLnNjcm9sbGFyZWEge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLnNjcm9sbGFyZWEgLnNjcm9sbGJhci1jb250YWluZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG4gIG9wYWNpdHk6IC4xO1xcbiAgei1pbmRleDogOTk5OTtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIC40cztcXG4gIC1tb3otdHJhbnNpdGlvbjogYWxsIC40cztcXG4gIC1tcy10cmFuc2l0aW9uOiBhbGwgLjRzO1xcbiAgLW8tdHJhbnNpdGlvbjogYWxsIC40cztcXG4gIHRyYW5zaXRpb246IGFsbCAuNHM7XFxufVxcbi5zY3JvbGxhcmVhIC5zY3JvbGxiYXItY29udGFpbmVyLmhvcml6b250YWwge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwcHg7XFxuICBsZWZ0OiAwO1xcbiAgYm90dG9tOiAwO1xcbn1cXG4uc2Nyb2xsYXJlYSAuc2Nyb2xsYmFyLWNvbnRhaW5lci5ob3Jpem9udGFsIC5zY3JvbGxiYXIge1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDhweDtcXG4gIGJhY2tncm91bmQ6IGJsYWNrO1xcbiAgbWFyZ2luLXRvcDogMXB4O1xcbn1cXG4uc2Nyb2xsYXJlYSAuc2Nyb2xsYmFyLWNvbnRhaW5lci52ZXJ0aWNhbCB7XFxuICB3aWR0aDogMTBweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHJpZ2h0OiAwO1xcbiAgdG9wOiAwO1xcbn1cXG4uc2Nyb2xsYXJlYSAuc2Nyb2xsYmFyLWNvbnRhaW5lci52ZXJ0aWNhbCAuc2Nyb2xsYmFyIHtcXG4gIHdpZHRoOiA4cHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBiYWNrZ3JvdW5kOiBibGFjaztcXG4gIG1hcmdpbi1sZWZ0OiAxcHg7XFxufVxcbi5zY3JvbGxhcmVhIC5zY3JvbGxiYXItY29udGFpbmVyOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6IGdyYXk7XFxuICBvcGFjaXR5OiAuNiAhaW1wb3J0YW50O1xcbn1cXG4uc2Nyb2xsYXJlYSAuc2Nyb2xsYmFyLWNvbnRhaW5lci5hY3RpdmUge1xcbiAgYmFja2dyb3VuZDogZ3JheTtcXG4gIG9wYWNpdHk6IC42ICFpbXBvcnRhbnQ7XFxufVxcbi5zY3JvbGxhcmVhOmhvdmVyIC5zY3JvbGxiYXItY29udGFpbmVyIHtcXG4gIG9wYWNpdHk6IC4zO1xcbn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY3NzLWxvYWRlciEuL34vbGVzcy1sb2FkZXIhLi9zcmMvbGVzcy9zY3JvbGxBcmVhLmxlc3Ncbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLypcclxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxyXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcclxuKi9cclxuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuXHR2YXIgbGlzdCA9IFtdO1xyXG5cclxuXHQvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXHJcblx0bGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xyXG5cdFx0dmFyIHJlc3VsdCA9IFtdO1xyXG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGl0ZW0gPSB0aGlzW2ldO1xyXG5cdFx0XHRpZihpdGVtWzJdKSB7XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goXCJAbWVkaWEgXCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBpdGVtWzFdICsgXCJ9XCIpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGl0ZW1bMV0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0LmpvaW4oXCJcIik7XHJcblx0fTtcclxuXHJcblx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcclxuXHRsaXN0LmkgPSBmdW5jdGlvbihtb2R1bGVzLCBtZWRpYVF1ZXJ5KSB7XHJcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIilcclxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xyXG5cdFx0dmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcclxuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpZCA9IHRoaXNbaV1bMF07XHJcblx0XHRcdGlmKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIilcclxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRmb3IoaSA9IDA7IGkgPCBtb2R1bGVzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tpXTtcclxuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxyXG5cdFx0XHQvLyB0aGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCAxMDAlIHBlcmZlY3QgZm9yIHdlaXJkIG1lZGlhIHF1ZXJ5IGNvbWJpbmF0aW9uc1xyXG5cdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxyXG5cdFx0XHQvLyAgSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxyXG5cdFx0XHRpZih0eXBlb2YgaXRlbVswXSAhPT0gXCJudW1iZXJcIiB8fCAhYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xyXG5cdFx0XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0ZW1bMl0pIHtcclxuXHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xyXG5cdFx0XHRcdH0gZWxzZSBpZihtZWRpYVF1ZXJ5KSB7XHJcblx0XHRcdFx0XHRpdGVtWzJdID0gXCIoXCIgKyBpdGVtWzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGxpc3QucHVzaChpdGVtKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH07XHJcblx0cmV0dXJuIGxpc3Q7XHJcbn07XHJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKlxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xudmFyIHN0eWxlc0luRG9tID0ge30sXG5cdG1lbW9pemUgPSBmdW5jdGlvbihmbikge1xuXHRcdHZhciBtZW1vO1xuXHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRpZiAodHlwZW9mIG1lbW8gPT09IFwidW5kZWZpbmVkXCIpIG1lbW8gPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdFx0cmV0dXJuIG1lbW87XG5cdFx0fTtcblx0fSxcblx0aXNPbGRJRSA9IG1lbW9pemUoZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIC9tc2llIFs2LTldXFxiLy50ZXN0KHNlbGYubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTtcblx0fSksXG5cdGdldEhlYWRFbGVtZW50ID0gbWVtb2l6ZShmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdO1xuXHR9KSxcblx0c2luZ2xldG9uRWxlbWVudCA9IG51bGwsXG5cdHNpbmdsZXRvbkNvdW50ZXIgPSAwLFxuXHRzdHlsZUVsZW1lbnRzSW5zZXJ0ZWRBdFRvcCA9IFtdO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGxpc3QsIG9wdGlvbnMpIHtcblx0aWYodHlwZW9mIERFQlVHICE9PSBcInVuZGVmaW5lZFwiICYmIERFQlVHKSB7XG5cdFx0aWYodHlwZW9mIGRvY3VtZW50ICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgc3R5bGUtbG9hZGVyIGNhbm5vdCBiZSB1c2VkIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRcIik7XG5cdH1cblxuXHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblx0Ly8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG5cdC8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2Vcblx0aWYgKHR5cGVvZiBvcHRpb25zLnNpbmdsZXRvbiA9PT0gXCJ1bmRlZmluZWRcIikgb3B0aW9ucy5zaW5nbGV0b24gPSBpc09sZElFKCk7XG5cblx0Ly8gQnkgZGVmYXVsdCwgYWRkIDxzdHlsZT4gdGFncyB0byB0aGUgYm90dG9tIG9mIDxoZWFkPi5cblx0aWYgKHR5cGVvZiBvcHRpb25zLmluc2VydEF0ID09PSBcInVuZGVmaW5lZFwiKSBvcHRpb25zLmluc2VydEF0ID0gXCJib3R0b21cIjtcblxuXHR2YXIgc3R5bGVzID0gbGlzdFRvU3R5bGVzKGxpc3QpO1xuXHRhZGRTdHlsZXNUb0RvbShzdHlsZXMsIG9wdGlvbnMpO1xuXG5cdHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuXHRcdHZhciBtYXlSZW1vdmUgPSBbXTtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgaXRlbSA9IHN0eWxlc1tpXTtcblx0XHRcdHZhciBkb21TdHlsZSA9IHN0eWxlc0luRG9tW2l0ZW0uaWRdO1xuXHRcdFx0ZG9tU3R5bGUucmVmcy0tO1xuXHRcdFx0bWF5UmVtb3ZlLnB1c2goZG9tU3R5bGUpO1xuXHRcdH1cblx0XHRpZihuZXdMaXN0KSB7XG5cdFx0XHR2YXIgbmV3U3R5bGVzID0gbGlzdFRvU3R5bGVzKG5ld0xpc3QpO1xuXHRcdFx0YWRkU3R5bGVzVG9Eb20obmV3U3R5bGVzLCBvcHRpb25zKTtcblx0XHR9XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IG1heVJlbW92ZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGRvbVN0eWxlID0gbWF5UmVtb3ZlW2ldO1xuXHRcdFx0aWYoZG9tU3R5bGUucmVmcyA9PT0gMCkge1xuXHRcdFx0XHRmb3IodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspXG5cdFx0XHRcdFx0ZG9tU3R5bGUucGFydHNbal0oKTtcblx0XHRcdFx0ZGVsZXRlIHN0eWxlc0luRG9tW2RvbVN0eWxlLmlkXTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlc1RvRG9tKHN0eWxlcywgb3B0aW9ucykge1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIGl0ZW0gPSBzdHlsZXNbaV07XG5cdFx0dmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF07XG5cdFx0aWYoZG9tU3R5bGUpIHtcblx0XHRcdGRvbVN0eWxlLnJlZnMrKztcblx0XHRcdGZvcih2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRkb21TdHlsZS5wYXJ0c1tqXShpdGVtLnBhcnRzW2pdKTtcblx0XHRcdH1cblx0XHRcdGZvcig7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGRvbVN0eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSwgb3B0aW9ucykpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YXIgcGFydHMgPSBbXTtcblx0XHRcdGZvcih2YXIgaiA9IDA7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdHBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSwgb3B0aW9ucykpO1xuXHRcdFx0fVxuXHRcdFx0c3R5bGVzSW5Eb21baXRlbS5pZF0gPSB7aWQ6IGl0ZW0uaWQsIHJlZnM6IDEsIHBhcnRzOiBwYXJ0c307XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGxpc3RUb1N0eWxlcyhsaXN0KSB7XG5cdHZhciBzdHlsZXMgPSBbXTtcblx0dmFyIG5ld1N0eWxlcyA9IHt9O1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBpdGVtID0gbGlzdFtpXTtcblx0XHR2YXIgaWQgPSBpdGVtWzBdO1xuXHRcdHZhciBjc3MgPSBpdGVtWzFdO1xuXHRcdHZhciBtZWRpYSA9IGl0ZW1bMl07XG5cdFx0dmFyIHNvdXJjZU1hcCA9IGl0ZW1bM107XG5cdFx0dmFyIHBhcnQgPSB7Y3NzOiBjc3MsIG1lZGlhOiBtZWRpYSwgc291cmNlTWFwOiBzb3VyY2VNYXB9O1xuXHRcdGlmKCFuZXdTdHlsZXNbaWRdKVxuXHRcdFx0c3R5bGVzLnB1c2gobmV3U3R5bGVzW2lkXSA9IHtpZDogaWQsIHBhcnRzOiBbcGFydF19KTtcblx0XHRlbHNlXG5cdFx0XHRuZXdTdHlsZXNbaWRdLnBhcnRzLnB1c2gocGFydCk7XG5cdH1cblx0cmV0dXJuIHN0eWxlcztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMsIHN0eWxlRWxlbWVudCkge1xuXHR2YXIgaGVhZCA9IGdldEhlYWRFbGVtZW50KCk7XG5cdHZhciBsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcCA9IHN0eWxlRWxlbWVudHNJbnNlcnRlZEF0VG9wW3N0eWxlRWxlbWVudHNJbnNlcnRlZEF0VG9wLmxlbmd0aCAtIDFdO1xuXHRpZiAob3B0aW9ucy5pbnNlcnRBdCA9PT0gXCJ0b3BcIikge1xuXHRcdGlmKCFsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcCkge1xuXHRcdFx0aGVhZC5pbnNlcnRCZWZvcmUoc3R5bGVFbGVtZW50LCBoZWFkLmZpcnN0Q2hpbGQpO1xuXHRcdH0gZWxzZSBpZihsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcC5uZXh0U2libGluZykge1xuXHRcdFx0aGVhZC5pbnNlcnRCZWZvcmUoc3R5bGVFbGVtZW50LCBsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcC5uZXh0U2libGluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTtcblx0XHR9XG5cdFx0c3R5bGVFbGVtZW50c0luc2VydGVkQXRUb3AucHVzaChzdHlsZUVsZW1lbnQpO1xuXHR9IGVsc2UgaWYgKG9wdGlvbnMuaW5zZXJ0QXQgPT09IFwiYm90dG9tXCIpIHtcblx0XHRoZWFkLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICdpbnNlcnRBdCcuIE11c3QgYmUgJ3RvcCcgb3IgJ2JvdHRvbScuXCIpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcblx0c3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcblx0dmFyIGlkeCA9IHN0eWxlRWxlbWVudHNJbnNlcnRlZEF0VG9wLmluZGV4T2Yoc3R5bGVFbGVtZW50KTtcblx0aWYoaWR4ID49IDApIHtcblx0XHRzdHlsZUVsZW1lbnRzSW5zZXJ0ZWRBdFRvcC5zcGxpY2UoaWR4LCAxKTtcblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuXHR2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuXHRzdHlsZUVsZW1lbnQudHlwZSA9IFwidGV4dC9jc3NcIjtcblx0aW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMsIHN0eWxlRWxlbWVudCk7XG5cdHJldHVybiBzdHlsZUVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpbmtFbGVtZW50KG9wdGlvbnMpIHtcblx0dmFyIGxpbmtFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG5cdGxpbmtFbGVtZW50LnJlbCA9IFwic3R5bGVzaGVldFwiO1xuXHRpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucywgbGlua0VsZW1lbnQpO1xuXHRyZXR1cm4gbGlua0VsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlKG9iaiwgb3B0aW9ucykge1xuXHR2YXIgc3R5bGVFbGVtZW50LCB1cGRhdGUsIHJlbW92ZTtcblxuXHRpZiAob3B0aW9ucy5zaW5nbGV0b24pIHtcblx0XHR2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcblx0XHRzdHlsZUVsZW1lbnQgPSBzaW5nbGV0b25FbGVtZW50IHx8IChzaW5nbGV0b25FbGVtZW50ID0gY3JlYXRlU3R5bGVFbGVtZW50KG9wdGlvbnMpKTtcblx0XHR1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50LCBzdHlsZUluZGV4LCBmYWxzZSk7XG5cdFx0cmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwgc3R5bGVJbmRleCwgdHJ1ZSk7XG5cdH0gZWxzZSBpZihvYmouc291cmNlTWFwICYmXG5cdFx0dHlwZW9mIFVSTCA9PT0gXCJmdW5jdGlvblwiICYmXG5cdFx0dHlwZW9mIFVSTC5jcmVhdGVPYmplY3RVUkwgPT09IFwiZnVuY3Rpb25cIiAmJlxuXHRcdHR5cGVvZiBVUkwucmV2b2tlT2JqZWN0VVJMID09PSBcImZ1bmN0aW9uXCIgJiZcblx0XHR0eXBlb2YgQmxvYiA9PT0gXCJmdW5jdGlvblwiICYmXG5cdFx0dHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdHN0eWxlRWxlbWVudCA9IGNyZWF0ZUxpbmtFbGVtZW50KG9wdGlvbnMpO1xuXHRcdHVwZGF0ZSA9IHVwZGF0ZUxpbmsuYmluZChudWxsLCBzdHlsZUVsZW1lbnQpO1xuXHRcdHJlbW92ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG5cdFx0XHRpZihzdHlsZUVsZW1lbnQuaHJlZilcblx0XHRcdFx0VVJMLnJldm9rZU9iamVjdFVSTChzdHlsZUVsZW1lbnQuaHJlZik7XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRzdHlsZUVsZW1lbnQgPSBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG5cdFx0dXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCk7XG5cdFx0cmVtb3ZlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcblx0XHR9O1xuXHR9XG5cblx0dXBkYXRlKG9iaik7XG5cblx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKG5ld09iaikge1xuXHRcdGlmKG5ld09iaikge1xuXHRcdFx0aWYobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwKVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR1cGRhdGUob2JqID0gbmV3T2JqKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVtb3ZlKCk7XG5cdFx0fVxuXHR9O1xufVxuXG52YXIgcmVwbGFjZVRleHQgPSAoZnVuY3Rpb24gKCkge1xuXHR2YXIgdGV4dFN0b3JlID0gW107XG5cblx0cmV0dXJuIGZ1bmN0aW9uIChpbmRleCwgcmVwbGFjZW1lbnQpIHtcblx0XHR0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG5cdFx0cmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJyk7XG5cdH07XG59KSgpO1xuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnKHN0eWxlRWxlbWVudCwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG5cdHZhciBjc3MgPSByZW1vdmUgPyBcIlwiIDogb2JqLmNzcztcblxuXHRpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcblx0XHRzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG5cdH0gZWxzZSB7XG5cdFx0dmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpO1xuXHRcdHZhciBjaGlsZE5vZGVzID0gc3R5bGVFbGVtZW50LmNoaWxkTm9kZXM7XG5cdFx0aWYgKGNoaWxkTm9kZXNbaW5kZXhdKSBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pO1xuXHRcdGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuXHRcdFx0c3R5bGVFbGVtZW50Lmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChjc3NOb2RlKTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyhzdHlsZUVsZW1lbnQsIG9iaikge1xuXHR2YXIgY3NzID0gb2JqLmNzcztcblx0dmFyIG1lZGlhID0gb2JqLm1lZGlhO1xuXG5cdGlmKG1lZGlhKSB7XG5cdFx0c3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm1lZGlhXCIsIG1lZGlhKVxuXHR9XG5cblx0aWYoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcblx0XHRzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuXHR9IGVsc2Uge1xuXHRcdHdoaWxlKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG5cdFx0XHRzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuXHRcdH1cblx0XHRzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlTGluayhsaW5rRWxlbWVudCwgb2JqKSB7XG5cdHZhciBjc3MgPSBvYmouY3NzO1xuXHR2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuXHRpZihzb3VyY2VNYXApIHtcblx0XHQvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yNjYwMzg3NVxuXHRcdGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIgKyBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpICsgXCIgKi9cIjtcblx0fVxuXG5cdHZhciBibG9iID0gbmV3IEJsb2IoW2Nzc10sIHsgdHlwZTogXCJ0ZXh0L2Nzc1wiIH0pO1xuXG5cdHZhciBvbGRTcmMgPSBsaW5rRWxlbWVudC5ocmVmO1xuXG5cdGxpbmtFbGVtZW50LmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG5cdGlmKG9sZFNyYylcblx0XHRVUkwucmV2b2tlT2JqZWN0VVJMKG9sZFNyYyk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vc3R5bGUtbG9hZGVyL2FkZFN0eWxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFNjcm9sbEJhciBmcm9tICcuL1Njcm9sbGJhcic7XG5pbXBvcnQge2ZpbmRET01Ob2RlLCB3YXJuQWJvdXRGdW5jdGlvbkNoaWxkLCB3YXJuQWJvdXRFbGVtZW50Q2hpbGQsIHBvc2l0aXZlT3JaZXJvLCBtb2RpZnlPYmpWYWx1ZXN9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IGxpbmVIZWlnaHQgZnJvbSAnbGluZS1oZWlnaHQnO1xuaW1wb3J0IHtNb3Rpb24sIHNwcmluZ30gZnJvbSAncmVhY3QtbW90aW9uJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5cbmNvbnN0IGV2ZW50VHlwZXMgPSB7XG4gICAgd2hlZWw6ICd3aGVlbCcsXG4gICAgYXBpOiAnYXBpJyxcbiAgICB0b3VjaDogJ3RvdWNoJyxcbiAgICB0b3VjaEVuZDogJ3RvdWNoRW5kJyxcbiAgICBtb3VzZW1vdmU6ICdtb3VzZW1vdmUnLFxuICAgIGtleVByZXNzOiAna2V5cHJlc3MnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY3JvbGxBcmVhIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICB0b3BQb3NpdGlvbjogMCxcbiAgICAgICAgICAgIGxlZnRQb3NpdGlvbjogMCxcbiAgICAgICAgICAgIHJlYWxIZWlnaHQ6IDAsXG4gICAgICAgICAgICBjb250YWluZXJIZWlnaHQ6IDAsXG4gICAgICAgICAgICByZWFsV2lkdGg6IDAsXG4gICAgICAgICAgICBjb250YWluZXJXaWR0aDogMFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2Nyb2xsQXJlYSA9IHtcbiAgICAgICAgICAgIHJlZnJlc2g6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNpemVzVG9TdGF0ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjcm9sbFRvcDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9wKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2Nyb2xsQm90dG9tOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxCb3R0b20oKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY3JvbGxZVG86IChwb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsWVRvKHBvc2l0aW9uKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY3JvbGxMZWZ0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxMZWZ0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2Nyb2xsUmlnaHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFJpZ2h0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2Nyb2xsWFRvOiAocG9zaXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFhUbyhwb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5ldm50c1ByZXZpb3VzVmFsdWVzID0ge1xuICAgICAgICAgICAgY2xpZW50WDogMCxcbiAgICAgICAgICAgIGNsaWVudFk6IDAsXG4gICAgICAgICAgICBkZWx0YVg6IDAsXG4gICAgICAgICAgICBkZWx0YVk6IDBcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmJpbmRlZEhhbmRsZVdpbmRvd1Jlc2l6ZSA9IHRoaXMuaGFuZGxlV2luZG93UmVzaXplLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgZ2V0Q2hpbGRDb250ZXh0KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2Nyb2xsQXJlYTogdGhpcy5zY3JvbGxBcmVhXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmNvbnRlbnRXaW5kb3cpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMuY29udGVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuYmluZGVkSGFuZGxlV2luZG93UmVzaXplKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxpbmVIZWlnaHRQeCA9IGxpbmVIZWlnaHQoZmluZERPTU5vZGUodGhpcy5jb250ZW50KSk7XG4gICAgICAgIHRoaXMuc2V0U2l6ZXNUb1N0YXRlKCk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmNvbnRlbnRXaW5kb3cpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMuY29udGVudFdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuYmluZGVkSGFuZGxlV2luZG93UmVzaXplKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zZXRTaXplc1RvU3RhdGUoKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGxldCB7Y2hpbGRyZW4sIGNsYXNzTmFtZSwgY29udGVudENsYXNzTmFtZSwgb3duZXJEb2N1bWVudH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBsZXQgd2l0aE1vdGlvbiA9IHRoaXMucHJvcHMuc21vb3RoU2Nyb2xsaW5nICYmXG4gICAgICAgICAgICAodGhpcy5zdGF0ZS5ldmVudFR5cGUgPT09IGV2ZW50VHlwZXMud2hlZWwgfHwgdGhpcy5zdGF0ZS5ldmVudFR5cGUgPT09IGV2ZW50VHlwZXMuYXBpIHx8IHRoaXMuc3RhdGUuZXZlbnRUeXBlID09PSBldmVudFR5cGVzLnRvdWNoRW5kIHx8XG4gICAgICAgICAgICB0aGlzLnN0YXRlLmV2ZW50VHlwZSA9PT0gZXZlbnRUeXBlcy5rZXlQcmVzcyk7XG5cbiAgICAgICAgbGV0IHNjcm9sbGJhclkgPSB0aGlzLmNhblNjcm9sbFkoKSA/IChcbiAgICAgICAgICAgIDxTY3JvbGxCYXJcbiAgICAgICAgICAgICAgICBvd25lckRvY3VtZW50PXtvd25lckRvY3VtZW50fVxuICAgICAgICAgICAgICAgIHJlYWxTaXplPXt0aGlzLnN0YXRlLnJlYWxIZWlnaHR9XG4gICAgICAgICAgICAgICAgY29udGFpbmVyU2l6ZT17dGhpcy5zdGF0ZS5jb250YWluZXJIZWlnaHR9XG4gICAgICAgICAgICAgICAgcG9zaXRpb249e3RoaXMuc3RhdGUudG9wUG9zaXRpb259XG4gICAgICAgICAgICAgICAgb25Nb3ZlPXt0aGlzLmhhbmRsZVNjcm9sbGJhck1vdmUuYmluZCh0aGlzKX1cbiAgICAgICAgICAgICAgICBvblBvc2l0aW9uQ2hhbmdlPXt0aGlzLmhhbmRsZVNjcm9sbGJhcllQb3NpdGlvbkNoYW5nZS5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclN0eWxlPXt0aGlzLnByb3BzLnZlcnRpY2FsQ29udGFpbmVyU3R5bGV9XG4gICAgICAgICAgICAgICAgc2Nyb2xsYmFyU3R5bGU9e3RoaXMucHJvcHMudmVydGljYWxTY3JvbGxiYXJTdHlsZX1cbiAgICAgICAgICAgICAgICBzbW9vdGhTY3JvbGxpbmc9e3dpdGhNb3Rpb259XG4gICAgICAgICAgICAgICAgbWluU2Nyb2xsU2l6ZT17dGhpcy5wcm9wcy5taW5TY3JvbGxTaXplfVxuICAgICAgICAgICAgICAgIG9uRm9jdXM9e3RoaXMuZm9jdXNDb250ZW50LmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgdHlwZT1cInZlcnRpY2FsXCIvPlxuICAgICAgICApIDogbnVsbDtcblxuICAgICAgICBsZXQgc2Nyb2xsYmFyWCA9IHRoaXMuY2FuU2Nyb2xsWCgpID8gKFxuICAgICAgICAgICAgPFNjcm9sbEJhclxuICAgICAgICAgICAgICAgIG93bmVyRG9jdW1lbnQ9e293bmVyRG9jdW1lbnR9XG4gICAgICAgICAgICAgICAgcmVhbFNpemU9e3RoaXMuc3RhdGUucmVhbFdpZHRofVxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclNpemU9e3RoaXMuc3RhdGUuY29udGFpbmVyV2lkdGh9XG4gICAgICAgICAgICAgICAgcG9zaXRpb249e3RoaXMuc3RhdGUubGVmdFBvc2l0aW9ufVxuICAgICAgICAgICAgICAgIG9uTW92ZT17dGhpcy5oYW5kbGVTY3JvbGxiYXJNb3ZlLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgb25Qb3NpdGlvbkNoYW5nZT17dGhpcy5oYW5kbGVTY3JvbGxiYXJYUG9zaXRpb25DaGFuZ2UuYmluZCh0aGlzKX1cbiAgICAgICAgICAgICAgICBjb250YWluZXJTdHlsZT17dGhpcy5wcm9wcy5ob3Jpem9udGFsQ29udGFpbmVyU3R5bGV9XG4gICAgICAgICAgICAgICAgc2Nyb2xsYmFyU3R5bGU9e3RoaXMucHJvcHMuaG9yaXpvbnRhbFNjcm9sbGJhclN0eWxlfVxuICAgICAgICAgICAgICAgIHNtb290aFNjcm9sbGluZz17d2l0aE1vdGlvbn1cbiAgICAgICAgICAgICAgICBtaW5TY3JvbGxTaXplPXt0aGlzLnByb3BzLm1pblNjcm9sbFNpemV9XG4gICAgICAgICAgICAgICAgb25Gb2N1cz17dGhpcy5mb2N1c0NvbnRlbnQuYmluZCh0aGlzKX1cbiAgICAgICAgICAgICAgICB0eXBlPVwiaG9yaXpvbnRhbFwiLz5cbiAgICAgICAgKSA6IG51bGw7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgd2FybkFib3V0RnVuY3Rpb25DaGlsZCgpO1xuICAgICAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2FybkFib3V0RWxlbWVudENoaWxkKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2xhc3NlcyA9ICdzY3JvbGxhcmVhICcgKyAoY2xhc3NOYW1lIHx8ICcnKTtcbiAgICAgICAgbGV0IGNvbnRlbnRDbGFzc2VzID0gJ3Njcm9sbGFyZWEtY29udGVudCAnICsgKGNvbnRlbnRDbGFzc05hbWUgfHwgJycpO1xuXG4gICAgICAgIGxldCBjb250ZW50U3R5bGUgPSB7XG4gICAgICAgICAgICBtYXJnaW5Ub3A6IC10aGlzLnN0YXRlLnRvcFBvc2l0aW9uLFxuICAgICAgICAgICAgbWFyZ2luTGVmdDogLXRoaXMuc3RhdGUubGVmdFBvc2l0aW9uXG4gICAgICAgIH07XG4gICAgICAgIGxldCBzcHJpbmdpZmllZENvbnRlbnRTdHlsZSA9IHdpdGhNb3Rpb24gPyBtb2RpZnlPYmpWYWx1ZXMoY29udGVudFN0eWxlLCB4ID0+IHNwcmluZyh4KSkgOiBjb250ZW50U3R5bGU7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNb3Rpb24gc3R5bGU9e3NwcmluZ2lmaWVkQ29udGVudFN0eWxlfT5cbiAgICAgICAgICAgICAgICB7IHN0eWxlID0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17eCA9PiB0aGlzLndyYXBwZXIgPSB4fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3RoaXMucHJvcHMuc3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbldoZWVsPXt0aGlzLmhhbmRsZVdoZWVsLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e3ggPT4gdGhpcy5jb250ZW50ID0geH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyAuLi50aGlzLnByb3BzLmNvbnRlbnRTdHlsZSwgLi4uc3R5bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NvbnRlbnRDbGFzc2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVG91Y2hTdGFydD17dGhpcy5oYW5kbGVUb3VjaFN0YXJ0LmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ub3VjaE1vdmU9e3RoaXMuaGFuZGxlVG91Y2hNb3ZlLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ub3VjaEVuZD17dGhpcy5oYW5kbGVUb3VjaEVuZC5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVLZXlEb3duLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9e3RoaXMucHJvcHMuZm9jdXNhYmxlVGFiSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7c2Nyb2xsYmFyWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzY3JvbGxiYXJYfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L01vdGlvbj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzZXRTdGF0ZUZyb21FdmVudChuZXdTdGF0ZSwgZXZlbnRUeXBlKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uU2Nyb2xsKG5ld1N0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlKHsuLi5uZXdTdGF0ZSwgZXZlbnRUeXBlfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlVG91Y2hTdGFydChlKSB7XG4gICAgICAgIGxldCB7dG91Y2hlc30gPSBlO1xuICAgICAgICBpZiAodG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGxldCB7Y2xpZW50WCwgY2xpZW50WX0gPSB0b3VjaGVzWzBdO1xuICAgICAgICAgICAgdGhpcy5ldmVudFByZXZpb3VzVmFsdWVzID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuZXZlbnRQcmV2aW91c1ZhbHVlcyxcbiAgICAgICAgICAgICAgICBjbGllbnRZLFxuICAgICAgICAgICAgICAgIGNsaWVudFgsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlVG91Y2hNb3ZlKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGxldCB7dG91Y2hlc30gPSBlO1xuICAgICAgICBpZiAodG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGxldCB7Y2xpZW50WCwgY2xpZW50WX0gPSB0b3VjaGVzWzBdO1xuXG4gICAgICAgICAgICBsZXQgZGVsdGFZID0gdGhpcy5ldmVudFByZXZpb3VzVmFsdWVzLmNsaWVudFkgLSBjbGllbnRZO1xuICAgICAgICAgICAgbGV0IGRlbHRhWCA9IHRoaXMuZXZlbnRQcmV2aW91c1ZhbHVlcy5jbGllbnRYIC0gY2xpZW50WDtcblxuICAgICAgICAgICAgdGhpcy5ldmVudFByZXZpb3VzVmFsdWVzID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuZXZlbnRQcmV2aW91c1ZhbHVlcyxcbiAgICAgICAgICAgICAgICBkZWx0YVksXG4gICAgICAgICAgICAgICAgZGVsdGFYLFxuICAgICAgICAgICAgICAgIGNsaWVudFksXG4gICAgICAgICAgICAgICAgY2xpZW50WCxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KClcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVGcm9tRXZlbnQodGhpcy5jb21wb3NlTmV3U3RhdGUoLWRlbHRhWCwgLWRlbHRhWSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlVG91Y2hFbmQoZSkge1xuICAgICAgICBsZXQge2RlbHRhWCwgZGVsdGFZLCB0aW1lc3RhbXB9ID0gdGhpcy5ldmVudFByZXZpb3VzVmFsdWVzO1xuICAgICAgICBpZiAodHlwZW9mIGRlbHRhWCA9PT0gJ3VuZGVmaW5lZCcpIGRlbHRhWCA9IDA7XG4gICAgICAgIGlmICh0eXBlb2YgZGVsdGFZID09PSAndW5kZWZpbmVkJykgZGVsdGFZID0gMDtcbiAgICAgICAgaWYgKERhdGUubm93KCkgLSB0aW1lc3RhbXAgPCAyMDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVGcm9tRXZlbnQodGhpcy5jb21wb3NlTmV3U3RhdGUoLWRlbHRhWCAqIDEwLCAtZGVsdGFZICogMTApLCBldmVudFR5cGVzLnRvdWNoRW5kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXZlbnRQcmV2aW91c1ZhbHVlcyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuZXZlbnRQcmV2aW91c1ZhbHVlcyxcbiAgICAgICAgICAgIGRlbHRhWTogMCxcbiAgICAgICAgICAgIGRlbHRhWDogMFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGhhbmRsZVNjcm9sbGJhck1vdmUoZGVsdGFZLCBkZWx0YVgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZUZyb21FdmVudCh0aGlzLmNvbXBvc2VOZXdTdGF0ZShkZWx0YVgsIGRlbHRhWSkpO1xuICAgIH1cblxuICAgIGhhbmRsZVNjcm9sbGJhclhQb3NpdGlvbkNoYW5nZShwb3NpdGlvbikge1xuICAgICAgICB0aGlzLnNjcm9sbFhUbyhwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgaGFuZGxlU2Nyb2xsYmFyWVBvc2l0aW9uQ2hhbmdlKHBvc2l0aW9uKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsWVRvKHBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBoYW5kbGVXaGVlbChlKSB7XG4gICAgICAgIGxldCBkZWx0YVkgPSBlLmRlbHRhWTtcbiAgICAgICAgbGV0IGRlbHRhWCA9IGUuZGVsdGFYO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnN3YXBXaGVlbEF4ZXMpIHtcbiAgICAgICAgICAgIFtkZWx0YVksIGRlbHRhWF0gPSBbZGVsdGFYLCBkZWx0YVldO1xuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgICogV2hlZWxFdmVudC5kZWx0YU1vZGUgY2FuIGRpZmZlciBiZXR3ZWVuIGJyb3dzZXJzIGFuZCBtdXN0IGJlIG5vcm1hbGl6ZWRcbiAgICAgICAgICogZS5kZWx0YU1vZGUgPT09IDA6IFRoZSBkZWx0YSB2YWx1ZXMgYXJlIHNwZWNpZmllZCBpbiBwaXhlbHNcbiAgICAgICAgICogZS5kZWx0YU1vZGUgPT09IDE6IFRoZSBkZWx0YSB2YWx1ZXMgYXJlIHNwZWNpZmllZCBpbiBsaW5lc1xuICAgICAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2hlZWxFdmVudC9kZWx0YU1vZGVcbiAgICAgICAgICovXG4gICAgICAgIGlmIChlLmRlbHRhTW9kZSA9PT0gMSkge1xuICAgICAgICAgICAgZGVsdGFZID0gZGVsdGFZICogdGhpcy5saW5lSGVpZ2h0UHg7XG4gICAgICAgICAgICBkZWx0YVggPSBkZWx0YVggKiB0aGlzLmxpbmVIZWlnaHRQeDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbHRhWSA9IGRlbHRhWSAqIHRoaXMucHJvcHMuc3BlZWQ7XG4gICAgICAgIGRlbHRhWCA9IGRlbHRhWCAqIHRoaXMucHJvcHMuc3BlZWQ7XG5cbiAgICAgICAgbGV0IG5ld1N0YXRlID0gdGhpcy5jb21wb3NlTmV3U3RhdGUoLWRlbHRhWCwgLWRlbHRhWSk7XG5cbiAgICAgICAgaWYgKChuZXdTdGF0ZS50b3BQb3NpdGlvbiAmJiB0aGlzLnN0YXRlLnRvcFBvc2l0aW9uICE9PSBuZXdTdGF0ZS50b3BQb3NpdGlvbikgfHxcbiAgICAgICAgICAgIChuZXdTdGF0ZS5sZWZ0UG9zaXRpb24gJiYgdGhpcy5zdGF0ZS5sZWZ0UG9zaXRpb24gIT09IG5ld1N0YXRlLmxlZnRQb3NpdGlvbikgfHxcbiAgICAgICAgICAgIHRoaXMucHJvcHMuc3RvcFNjcm9sbFByb3BhZ2F0aW9uKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZUZyb21FdmVudChuZXdTdGF0ZSwgZXZlbnRUeXBlcy53aGVlbCk7XG4gICAgICAgIHRoaXMuZm9jdXNDb250ZW50KCk7XG4gICAgfVxuXG4gICAgaGFuZGxlS2V5RG93bihlKSB7XG4gICAgICAgIC8vIG9ubHkgaGFuZGxlIGlmIHNjcm9sbCBhcmVhIGlzIGluIGZvY3VzXG4gICAgICAgIGlmIChlLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdpbnB1dCcpIHtcbiAgICAgICAgICAgIGxldCBkZWx0YVkgPSAwO1xuICAgICAgICAgICAgbGV0IGRlbHRhWCA9IDA7XG4gICAgICAgICAgICBsZXQgbGluZUhlaWdodCA9IHRoaXMubGluZUhlaWdodFB4ID8gdGhpcy5saW5lSGVpZ2h0UHggOiAxMDtcblxuICAgICAgICAgICAgc3dpdGNoIChlLmtleUNvZGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDMzOiAvLyBwYWdlIHVwXG4gICAgICAgICAgICAgICAgICAgIGRlbHRhWSA9IHRoaXMuc3RhdGUuY29udGFpbmVySGVpZ2h0IC0gbGluZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzNDogLy8gcGFnZSBkb3duXG4gICAgICAgICAgICAgICAgICAgIGRlbHRhWSA9IC10aGlzLnN0YXRlLmNvbnRhaW5lckhlaWdodCArIGxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzc6IC8vIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgZGVsdGFYID0gbGluZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzODogLy8gdXBcbiAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gbGluZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOTogLy8gcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgZGVsdGFYID0gLWxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDA6IC8vIGRvd25cbiAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gLWxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBvbmx5IGNvbXBvc2UgbmV3IHN0YXRlIGlmIGtleSBjb2RlIG1hdGNoZXMgdGhvc2UgYWJvdmVcbiAgICAgICAgICAgIGlmIChkZWx0YVkgIT09IDAgfHwgZGVsdGFYICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1N0YXRlID0gdGhpcy5jb21wb3NlTmV3U3RhdGUoZGVsdGFYLCBkZWx0YVkpO1xuXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlRnJvbUV2ZW50KG5ld1N0YXRlLCBldmVudFR5cGVzLmtleVByZXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVdpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgbGV0IG5ld1N0YXRlID0gdGhpcy5jb21wdXRlU2l6ZXMoKTtcbiAgICAgICAgbmV3U3RhdGUgPSB0aGlzLmdldE1vZGlmaWVkUG9zaXRpb25zSWZOZWVkZWQobmV3U3RhdGUpO1xuICAgICAgICB0aGlzLnNldFN0YXRlRnJvbUV2ZW50KG5ld1N0YXRlKTtcbiAgICB9XG5cbiAgICBjb21wb3NlTmV3U3RhdGUoZGVsdGFYLCBkZWx0YVkpIHtcbiAgICAgICAgbGV0IG5ld1N0YXRlID0gdGhpcy5jb21wdXRlU2l6ZXMoKTtcblxuICAgICAgICBpZiAodGhpcy5jYW5TY3JvbGxZKG5ld1N0YXRlKSkge1xuICAgICAgICAgICAgbmV3U3RhdGUudG9wUG9zaXRpb24gPSB0aGlzLmNvbXB1dGVUb3BQb3NpdGlvbihkZWx0YVksIG5ld1N0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdTdGF0ZS50b3BQb3NpdGlvbiA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY2FuU2Nyb2xsWChuZXdTdGF0ZSkpIHtcbiAgICAgICAgICAgIG5ld1N0YXRlLmxlZnRQb3NpdGlvbiA9IHRoaXMuY29tcHV0ZUxlZnRQb3NpdGlvbihkZWx0YVgsIG5ld1N0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICB9XG5cbiAgICBjb21wdXRlVG9wUG9zaXRpb24oZGVsdGFZLCBzaXplcykge1xuICAgICAgICBsZXQgbmV3VG9wUG9zaXRpb24gPSB0aGlzLnN0YXRlLnRvcFBvc2l0aW9uIC0gZGVsdGFZO1xuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVUb3BQb3NpdGlvbihuZXdUb3BQb3NpdGlvbiwgc2l6ZXMpO1xuICAgIH1cblxuICAgIGNvbXB1dGVMZWZ0UG9zaXRpb24oZGVsdGFYLCBzaXplcykge1xuICAgICAgICBsZXQgbmV3TGVmdFBvc2l0aW9uID0gdGhpcy5zdGF0ZS5sZWZ0UG9zaXRpb24gLSBkZWx0YVg7XG4gICAgICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZUxlZnRQb3NpdGlvbihuZXdMZWZ0UG9zaXRpb24sIHNpemVzKTtcbiAgICB9XG5cbiAgICBub3JtYWxpemVUb3BQb3NpdGlvbihuZXdUb3BQb3NpdGlvbiwgc2l6ZXMpIHtcbiAgICAgICAgaWYgKG5ld1RvcFBvc2l0aW9uID4gc2l6ZXMucmVhbEhlaWdodCAtIHNpemVzLmNvbnRhaW5lckhlaWdodCkge1xuICAgICAgICAgICAgbmV3VG9wUG9zaXRpb24gPSBzaXplcy5yZWFsSGVpZ2h0IC0gc2l6ZXMuY29udGFpbmVySGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdUb3BQb3NpdGlvbiA8IDApIHtcbiAgICAgICAgICAgIG5ld1RvcFBvc2l0aW9uID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3VG9wUG9zaXRpb247XG4gICAgfVxuXG4gICAgbm9ybWFsaXplTGVmdFBvc2l0aW9uKG5ld0xlZnRQb3NpdGlvbiwgc2l6ZXMpIHtcbiAgICAgICAgaWYgKG5ld0xlZnRQb3NpdGlvbiA+IHNpemVzLnJlYWxXaWR0aCAtIHNpemVzLmNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICBuZXdMZWZ0UG9zaXRpb24gPSBzaXplcy5yZWFsV2lkdGggLSBzaXplcy5jb250YWluZXJXaWR0aDtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdMZWZ0UG9zaXRpb24gPCAwKSB7XG4gICAgICAgICAgICBuZXdMZWZ0UG9zaXRpb24gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld0xlZnRQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBjb21wdXRlU2l6ZXMoKSB7XG4gICAgICAgIGxldCByZWFsSGVpZ2h0ID0gdGhpcy5jb250ZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgbGV0IGNvbnRhaW5lckhlaWdodCA9IHRoaXMud3JhcHBlci5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGxldCByZWFsV2lkdGggPSB0aGlzLmNvbnRlbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGxldCBjb250YWluZXJXaWR0aCA9IHRoaXMud3JhcHBlci5vZmZzZXRXaWR0aDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVhbEhlaWdodDogcmVhbEhlaWdodCxcbiAgICAgICAgICAgIGNvbnRhaW5lckhlaWdodDogY29udGFpbmVySGVpZ2h0LFxuICAgICAgICAgICAgcmVhbFdpZHRoOiByZWFsV2lkdGgsXG4gICAgICAgICAgICBjb250YWluZXJXaWR0aDogY29udGFpbmVyV2lkdGhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzZXRTaXplc1RvU3RhdGUoKSB7XG4gICAgICAgIGxldCBzaXplcyA9IHRoaXMuY29tcHV0ZVNpemVzKCk7XG4gICAgICAgIGlmIChzaXplcy5yZWFsSGVpZ2h0ICE9PSB0aGlzLnN0YXRlLnJlYWxIZWlnaHQgfHwgc2l6ZXMucmVhbFdpZHRoICE9PSB0aGlzLnN0YXRlLnJlYWxXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUZyb21FdmVudCh0aGlzLmdldE1vZGlmaWVkUG9zaXRpb25zSWZOZWVkZWQoc2l6ZXMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNjcm9sbFRvcCgpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxZVG8oMCk7XG4gICAgfVxuXG4gICAgc2Nyb2xsQm90dG9tKCkge1xuICAgICAgICB0aGlzLnNjcm9sbFlUbygodGhpcy5zdGF0ZS5yZWFsSGVpZ2h0IC0gdGhpcy5zdGF0ZS5jb250YWluZXJIZWlnaHQpKTtcbiAgICB9XG5cbiAgICBzY3JvbGxMZWZ0KCkge1xuICAgICAgICB0aGlzLnNjcm9sbFhUbygwKTtcbiAgICB9XG5cbiAgICBzY3JvbGxSaWdodCgpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxYVG8oKHRoaXMuc3RhdGUucmVhbFdpZHRoIC0gdGhpcy5zdGF0ZS5jb250YWluZXJXaWR0aCkpO1xuICAgIH1cblxuICAgIHNjcm9sbFlUbyh0b3BQb3NpdGlvbikge1xuICAgICAgICBpZiAodGhpcy5jYW5TY3JvbGxZKCkpIHtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMubm9ybWFsaXplVG9wUG9zaXRpb24odG9wUG9zaXRpb24sIHRoaXMuY29tcHV0ZVNpemVzKCkpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUZyb21FdmVudCh7dG9wUG9zaXRpb246IHBvc2l0aW9ufSwgZXZlbnRUeXBlcy5hcGkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2Nyb2xsWFRvKGxlZnRQb3NpdGlvbikge1xuICAgICAgICBpZiAodGhpcy5jYW5TY3JvbGxYKCkpIHtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMubm9ybWFsaXplTGVmdFBvc2l0aW9uKGxlZnRQb3NpdGlvbiwgdGhpcy5jb21wdXRlU2l6ZXMoKSk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlRnJvbUV2ZW50KHtsZWZ0UG9zaXRpb246IHBvc2l0aW9ufSwgZXZlbnRUeXBlcy5hcGkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FuU2Nyb2xsWShzdGF0ZSA9IHRoaXMuc3RhdGUpIHtcbiAgICAgICAgbGV0IHNjcm9sbGFibGVZID0gc3RhdGUucmVhbEhlaWdodCA+IHN0YXRlLmNvbnRhaW5lckhlaWdodDtcbiAgICAgICAgcmV0dXJuIHNjcm9sbGFibGVZICYmIHRoaXMucHJvcHMudmVydGljYWw7XG4gICAgfVxuXG4gICAgY2FuU2Nyb2xsWChzdGF0ZSA9IHRoaXMuc3RhdGUpIHtcbiAgICAgICAgbGV0IHNjcm9sbGFibGVYID0gc3RhdGUucmVhbFdpZHRoID4gc3RhdGUuY29udGFpbmVyV2lkdGg7XG4gICAgICAgIHJldHVybiBzY3JvbGxhYmxlWCAmJiB0aGlzLnByb3BzLmhvcml6b250YWw7XG4gICAgfVxuXG4gICAgZ2V0TW9kaWZpZWRQb3NpdGlvbnNJZk5lZWRlZChuZXdTdGF0ZSkge1xuICAgICAgICBsZXQgYm90dG9tUG9zaXRpb24gPSBuZXdTdGF0ZS5yZWFsSGVpZ2h0IC0gbmV3U3RhdGUuY29udGFpbmVySGVpZ2h0O1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS50b3BQb3NpdGlvbiA+PSBib3R0b21Qb3NpdGlvbikge1xuICAgICAgICAgICAgbmV3U3RhdGUudG9wUG9zaXRpb24gPSB0aGlzLmNhblNjcm9sbFkobmV3U3RhdGUpID8gcG9zaXRpdmVPclplcm8oYm90dG9tUG9zaXRpb24pIDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByaWdodFBvc2l0aW9uID0gbmV3U3RhdGUucmVhbFdpZHRoIC0gbmV3U3RhdGUuY29udGFpbmVyV2lkdGg7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmxlZnRQb3NpdGlvbiA+PSByaWdodFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBuZXdTdGF0ZS5sZWZ0UG9zaXRpb24gPSB0aGlzLmNhblNjcm9sbFgobmV3U3RhdGUpID8gcG9zaXRpdmVPclplcm8ocmlnaHRQb3NpdGlvbikgOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xuICAgIH1cblxuICAgIGZvY3VzQ29udGVudCgpIHtcbiAgICAgICAgaWYodGhpcy5jb250ZW50KSB7XG4gICAgICAgICAgICBmaW5kRE9NTm9kZSh0aGlzLmNvbnRlbnQpLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblNjcm9sbEFyZWEuY2hpbGRDb250ZXh0VHlwZXMgPSB7XG4gICAgc2Nyb2xsQXJlYTogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuU2Nyb2xsQXJlYS5wcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHNwZWVkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGNvbnRlbnRDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29udGVudFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHZlcnRpY2FsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICB2ZXJ0aWNhbENvbnRhaW5lclN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHZlcnRpY2FsU2Nyb2xsYmFyU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgaG9yaXpvbnRhbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgaG9yaXpvbnRhbENvbnRhaW5lclN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGhvcml6b250YWxTY3JvbGxiYXJTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBvblNjcm9sbDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY29udGVudFdpbmRvdzogUHJvcFR5cGVzLmFueSxcbiAgICBvd25lckRvY3VtZW50OiBQcm9wVHlwZXMuYW55LFxuICAgIHNtb290aFNjcm9sbGluZzogUHJvcFR5cGVzLmJvb2wsXG4gICAgbWluU2Nyb2xsU2l6ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzd2FwV2hlZWxBeGVzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzdG9wU2Nyb2xsUHJvcGFnYXRpb246IFByb3BUeXBlcy5ib29sLFxuICAgIGZvY3VzYWJsZVRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG5TY3JvbGxBcmVhLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBzcGVlZDogMSxcbiAgICB2ZXJ0aWNhbDogdHJ1ZSxcbiAgICBob3Jpem9udGFsOiB0cnVlLFxuICAgIHNtb290aFNjcm9sbGluZzogZmFsc2UsXG4gICAgc3dhcFdoZWVsQXhlczogZmFsc2UsXG4gICAgY29udGVudFdpbmRvdzogKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpID8gd2luZG93IDogdW5kZWZpbmVkLFxuICAgIG93bmVyRG9jdW1lbnQ6ICh0eXBlb2YgZG9jdW1lbnQgPT09IFwib2JqZWN0XCIpID8gZG9jdW1lbnQgOiB1bmRlZmluZWQsXG4gICAgZm9jdXNhYmxlVGFiSW5kZXg6IDFcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvanMvU2Nyb2xsQXJlYS5qc3giLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfNl9fO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIHtcInJvb3RcIjpcIlJlYWN0XCIsXCJjb21tb25qczJcIjpcInJlYWN0XCIsXCJjb21tb25qc1wiOlwicmVhY3RcIixcImFtZFwiOlwicmVhY3RcIn1cbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TW90aW9uLCBzcHJpbmd9IGZyb20gJ3JlYWN0LW1vdGlvbic7XG5pbXBvcnQge21vZGlmeU9ialZhbHVlc30gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5jbGFzcyBTY3JvbGxCYXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKXtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuICAgICAgICBsZXQgbmV3U3RhdGUgPSB0aGlzLmNhbGN1bGF0ZVN0YXRlKHByb3BzKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBuZXdTdGF0ZS5wb3NpdGlvbixcbiAgICAgICAgICAgIHNjcm9sbFNpemU6IG5ld1N0YXRlLnNjcm9sbFNpemUsXG4gICAgICAgICAgICBpc0RyYWdnaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGxhc3RDbGllbnRQb3NpdGlvbjogMFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmKHByb3BzLnR5cGUgPT09ICd2ZXJ0aWNhbCcpe1xuICAgICAgICAgICAgdGhpcy5iaW5kZWRIYW5kbGVNb3VzZU1vdmUgPSB0aGlzLmhhbmRsZU1vdXNlTW92ZUZvclZlcnRpY2FsLmJpbmQodGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJpbmRlZEhhbmRsZU1vdXNlTW92ZSA9IHRoaXMuaGFuZGxlTW91c2VNb3ZlRm9ySG9yaXpvbnRhbC5iaW5kKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iaW5kZWRIYW5kbGVNb3VzZVVwID0gdGhpcy5oYW5kbGVNb3VzZVVwLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKXtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub3duZXJEb2N1bWVudCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5iaW5kZWRIYW5kbGVNb3VzZU1vdmUpO1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMuYmluZGVkSGFuZGxlTW91c2VVcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcyl7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUodGhpcy5jYWxjdWxhdGVTdGF0ZShuZXh0UHJvcHMpKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpe1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5vd25lckRvY3VtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLmJpbmRlZEhhbmRsZU1vdXNlTW92ZSk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5iaW5kZWRIYW5kbGVNb3VzZVVwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNhbGN1bGF0ZUZyYWN0aW9uYWxQb3NpdGlvbihyZWFsQ29udGVudFNpemUsIGNvbnRhaW5lclNpemUsIGNvbnRlbnRQb3NpdGlvbil7XG4gICAgICAgIGxldCByZWxhdGl2ZVNpemUgPSByZWFsQ29udGVudFNpemUgLSBjb250YWluZXJTaXplO1xuXG4gICAgICAgIHJldHVybiAxIC0gKChyZWxhdGl2ZVNpemUgLSBjb250ZW50UG9zaXRpb24pIC8gcmVsYXRpdmVTaXplKTtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVTdGF0ZShwcm9wcyl7XG4gICAgICAgIGxldCBmcmFjdGlvbmFsUG9zaXRpb24gPSB0aGlzLmNhbGN1bGF0ZUZyYWN0aW9uYWxQb3NpdGlvbihwcm9wcy5yZWFsU2l6ZSwgcHJvcHMuY29udGFpbmVyU2l6ZSwgcHJvcHMucG9zaXRpb24pO1xuICAgICAgICBsZXQgcHJvcG9ydGlvbmFsVG9QYWdlU2Nyb2xsU2l6ZSA9IHByb3BzLmNvbnRhaW5lclNpemUgKiBwcm9wcy5jb250YWluZXJTaXplIC8gcHJvcHMucmVhbFNpemU7XG4gICAgICAgIGxldCBzY3JvbGxTaXplID0gcHJvcG9ydGlvbmFsVG9QYWdlU2Nyb2xsU2l6ZSA8IHByb3BzLm1pblNjcm9sbFNpemUgPyBwcm9wcy5taW5TY3JvbGxTaXplIDogcHJvcG9ydGlvbmFsVG9QYWdlU2Nyb2xsU2l6ZTtcblxuICAgICAgICBsZXQgc2Nyb2xsUG9zaXRpb24gPSAocHJvcHMuY29udGFpbmVyU2l6ZSAtIHNjcm9sbFNpemUpICogZnJhY3Rpb25hbFBvc2l0aW9uO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2Nyb2xsU2l6ZTogc2Nyb2xsU2l6ZSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBNYXRoLnJvdW5kKHNjcm9sbFBvc2l0aW9uKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJlbmRlcigpe1xuICAgICAgICBsZXQge3Ntb290aFNjcm9sbGluZywgaXNEcmFnZ2luZywgdHlwZSwgc2Nyb2xsYmFyU3R5bGUsIGNvbnRhaW5lclN0eWxlfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGxldCBpc1Zvcml6aW9udGFsID0gdHlwZSA9PT0gJ2hvcml6b250YWwnO1xuICAgICAgICBsZXQgaXNWZXJ0aWNhbCA9IHR5cGUgPT09ICd2ZXJ0aWNhbCc7XG4gICAgICAgIGxldCBzY3JvbGxTdHlsZXMgPSB0aGlzLmNyZWF0ZVNjcm9sbFN0eWxlcygpO1xuICAgICAgICBsZXQgc3ByaW5naWZpZWRTY3JvbGxTdHlsZXMgPSBzbW9vdGhTY3JvbGxpbmcgPyBtb2RpZnlPYmpWYWx1ZXMoc2Nyb2xsU3R5bGVzLCB4ID0+IHNwcmluZyh4KSkgOiBzY3JvbGxTdHlsZXM7XG5cbiAgICAgICAgbGV0IHNjcm9sbGJhckNsYXNzZXMgPSBgc2Nyb2xsYmFyLWNvbnRhaW5lciAke2lzRHJhZ2dpbmcgPyAnYWN0aXZlJyA6ICcnfSAke2lzVm9yaXppb250YWwgPyAnaG9yaXpvbnRhbCcgOiAnJ30gJHtpc1ZlcnRpY2FsID8gJ3ZlcnRpY2FsJyA6ICcnfWA7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNb3Rpb24gc3R5bGU9e3NwcmluZ2lmaWVkU2Nyb2xsU3R5bGVzfT5cbiAgICAgICAgICAgICAgICB7IHN0eWxlID0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c2Nyb2xsYmFyQ2xhc3Nlc31cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtjb250YWluZXJTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLmhhbmRsZVNjcm9sbEJhckNvbnRhaW5lckNsaWNrLmJpbmQodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY9eyB4ID0+IHRoaXMuc2Nyb2xsYmFyQ29udGFpbmVyID0geCB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzY3JvbGxiYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IC4uLnNjcm9sbGJhclN0eWxlLCAuLi5zdHlsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXt0aGlzLmhhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9Nb3Rpb24+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaGFuZGxlU2Nyb2xsQmFyQ29udGFpbmVyQ2xpY2soZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGxldCBtdWx0aXBsaWVyID0gdGhpcy5jb21wdXRlTXVsdGlwbGllcigpO1xuICAgICAgICBsZXQgY2xpZW50UG9zaXRpb24gPSB0aGlzLmlzVmVydGljYWwoKSA/IGUuY2xpZW50WSA6IGUuY2xpZW50WDtcbiAgICAgICAgbGV0IHsgdG9wLCBsZWZ0IH0gPSB0aGlzLnNjcm9sbGJhckNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbGV0IGNsaWVudFNjcm9sbFBvc2l0aW9uID0gdGhpcy5pc1ZlcnRpY2FsKCkgPyB0b3AgOiBsZWZ0O1xuXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IGNsaWVudFBvc2l0aW9uIC0gY2xpZW50U2Nyb2xsUG9zaXRpb247XG4gICAgICAgIGxldCBwcm9wb3J0aW9uYWxUb1BhZ2VTY3JvbGxTaXplID0gdGhpcy5wcm9wcy5jb250YWluZXJTaXplICogdGhpcy5wcm9wcy5jb250YWluZXJTaXplIC8gdGhpcy5wcm9wcy5yZWFsU2l6ZTtcblxuICAgICAgICB0aGlzLnNldFN0YXRlKHtpc0RyYWdnaW5nOiB0cnVlLCBsYXN0Q2xpZW50UG9zaXRpb246IGNsaWVudFBvc2l0aW9uIH0pO1xuICAgICAgICB0aGlzLnByb3BzLm9uUG9zaXRpb25DaGFuZ2UoKHBvc2l0aW9uIC0gcHJvcG9ydGlvbmFsVG9QYWdlU2Nyb2xsU2l6ZSAvIDIpIC8gbXVsdGlwbGllcik7XG4gICAgfVxuXG4gICAgaGFuZGxlTW91c2VNb3ZlRm9ySG9yaXpvbnRhbChlKXtcbiAgICAgICAgbGV0IG11bHRpcGxpZXIgPSB0aGlzLmNvbXB1dGVNdWx0aXBsaWVyKCk7XG5cbiAgICAgICAgaWYodGhpcy5zdGF0ZS5pc0RyYWdnaW5nKXtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGxldCBkZWx0YVggPSB0aGlzLnN0YXRlLmxhc3RDbGllbnRQb3NpdGlvbiAtIGUuY2xpZW50WDtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsYXN0Q2xpZW50UG9zaXRpb246IGUuY2xpZW50WCB9KTtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25Nb3ZlKDAsIGRlbHRhWCAvIG11bHRpcGxpZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlTW91c2VNb3ZlRm9yVmVydGljYWwoZSl7XG4gICAgICAgIGxldCBtdWx0aXBsaWVyID0gdGhpcy5jb21wdXRlTXVsdGlwbGllcigpO1xuXG4gICAgICAgIGlmKHRoaXMuc3RhdGUuaXNEcmFnZ2luZyl7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBsZXQgZGVsdGFZID0gdGhpcy5zdGF0ZS5sYXN0Q2xpZW50UG9zaXRpb24gLSBlLmNsaWVudFk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbGFzdENsaWVudFBvc2l0aW9uOiBlLmNsaWVudFkgfSk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uTW92ZShkZWx0YVkgLyBtdWx0aXBsaWVyLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZU1vdXNlRG93bihlKXtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBsZXQgbGFzdENsaWVudFBvc2l0aW9uID0gdGhpcy5pc1ZlcnRpY2FsKCkgPyBlLmNsaWVudFk6IGUuY2xpZW50WDtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aXNEcmFnZ2luZzogdHJ1ZSwgbGFzdENsaWVudFBvc2l0aW9uOiBsYXN0Q2xpZW50UG9zaXRpb24gfSk7XG5cbiAgICAgICAgdGhpcy5wcm9wcy5vbkZvY3VzKCk7XG4gICAgfVxuXG4gICAgaGFuZGxlTW91c2VVcChlKXtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuaXNEcmFnZ2luZykge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aXNEcmFnZ2luZzogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVTY3JvbGxTdHlsZXMoKXtcbiAgICAgICAgaWYodGhpcy5wcm9wcy50eXBlID09PSAndmVydGljYWwnKXtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLnN0YXRlLnNjcm9sbFNpemUsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wOiB0aGlzLnN0YXRlLnBvc2l0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5zdGF0ZS5zY3JvbGxTaXplLFxuICAgICAgICAgICAgICAgIG1hcmdpbkxlZnQ6IHRoaXMuc3RhdGUucG9zaXRpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wdXRlTXVsdGlwbGllcigpe1xuICAgICAgICByZXR1cm4gKHRoaXMucHJvcHMuY29udGFpbmVyU2l6ZSkgLyB0aGlzLnByb3BzLnJlYWxTaXplO1xuICAgIH1cblxuICAgIGlzVmVydGljYWwoKXtcbiAgICAgICByZXR1cm4gdGhpcy5wcm9wcy50eXBlID09PSAndmVydGljYWwnO1xuICAgIH1cbn1cblxuU2Nyb2xsQmFyLnByb3BUeXBlcyA9IHtcbiAgICBvbk1vdmU6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uUG9zaXRpb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICAgIHJlYWxTaXplOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGNvbnRhaW5lclNpemU6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgcG9zaXRpb246IFByb3BUeXBlcy5udW1iZXIsXG4gICAgY29udGFpbmVyU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc2Nyb2xsYmFyU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgdHlwZTogUHJvcFR5cGVzLm9uZU9mKFsndmVydGljYWwnLCAnaG9yaXpvbnRhbCddKSxcbiAgICBvd25lckRvY3VtZW50OiBQcm9wVHlwZXMuYW55LFxuICAgIHNtb290aFNjcm9sbGluZzogUHJvcFR5cGVzLmJvb2wsXG4gICAgbWluU2Nyb2xsU2l6ZTogUHJvcFR5cGVzLm51bWJlclxufTtcblxuU2Nyb2xsQmFyLmRlZmF1bHRQcm9wcyA9IHtcbiAgICB0eXBlIDogJ3ZlcnRpY2FsJyxcbiAgICBzbW9vdGhTY3JvbGxpbmc6IGZhbHNlXG59O1xuZXhwb3J0IGRlZmF1bHQgU2Nyb2xsQmFyO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2pzL1Njcm9sbGJhci5qc3giLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZShvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialsnZGVmYXVsdCddIDogb2JqOyB9XG5cbnZhciBfTW90aW9uID0gcmVxdWlyZSgnLi9Nb3Rpb24nKTtcblxuZXhwb3J0cy5Nb3Rpb24gPSBfaW50ZXJvcFJlcXVpcmUoX01vdGlvbik7XG5cbnZhciBfU3RhZ2dlcmVkTW90aW9uID0gcmVxdWlyZSgnLi9TdGFnZ2VyZWRNb3Rpb24nKTtcblxuZXhwb3J0cy5TdGFnZ2VyZWRNb3Rpb24gPSBfaW50ZXJvcFJlcXVpcmUoX1N0YWdnZXJlZE1vdGlvbik7XG5cbnZhciBfVHJhbnNpdGlvbk1vdGlvbiA9IHJlcXVpcmUoJy4vVHJhbnNpdGlvbk1vdGlvbicpO1xuXG5leHBvcnRzLlRyYW5zaXRpb25Nb3Rpb24gPSBfaW50ZXJvcFJlcXVpcmUoX1RyYW5zaXRpb25Nb3Rpb24pO1xuXG52YXIgX3NwcmluZyA9IHJlcXVpcmUoJy4vc3ByaW5nJyk7XG5cbmV4cG9ydHMuc3ByaW5nID0gX2ludGVyb3BSZXF1aXJlKF9zcHJpbmcpO1xuXG52YXIgX3ByZXNldHMgPSByZXF1aXJlKCcuL3ByZXNldHMnKTtcblxuZXhwb3J0cy5wcmVzZXRzID0gX2ludGVyb3BSZXF1aXJlKF9wcmVzZXRzKTtcblxudmFyIF9zdHJpcFN0eWxlID0gcmVxdWlyZSgnLi9zdHJpcFN0eWxlJyk7XG5cbmV4cG9ydHMuc3RyaXBTdHlsZSA9IF9pbnRlcm9wUmVxdWlyZShfc3RyaXBTdHlsZSk7XG5cbi8vIGRlcHJlY2F0ZWQsIGR1bW15IHdhcm5pbmcgZnVuY3Rpb25cblxudmFyIF9yZW9yZGVyS2V5cyA9IHJlcXVpcmUoJy4vcmVvcmRlcktleXMnKTtcblxuZXhwb3J0cy5yZW9yZGVyS2V5cyA9IF9pbnRlcm9wUmVxdWlyZShfcmVvcmRlcktleXMpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC1tb3Rpb24vbGliL3JlYWN0LW1vdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfbWFwVG9aZXJvID0gcmVxdWlyZSgnLi9tYXBUb1plcm8nKTtcblxudmFyIF9tYXBUb1plcm8yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWFwVG9aZXJvKTtcblxudmFyIF9zdHJpcFN0eWxlID0gcmVxdWlyZSgnLi9zdHJpcFN0eWxlJyk7XG5cbnZhciBfc3RyaXBTdHlsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdHJpcFN0eWxlKTtcblxudmFyIF9zdGVwcGVyMyA9IHJlcXVpcmUoJy4vc3RlcHBlcicpO1xuXG52YXIgX3N0ZXBwZXI0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RlcHBlcjMpO1xuXG52YXIgX3BlcmZvcm1hbmNlTm93ID0gcmVxdWlyZSgncGVyZm9ybWFuY2Utbm93Jyk7XG5cbnZhciBfcGVyZm9ybWFuY2VOb3cyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcGVyZm9ybWFuY2VOb3cpO1xuXG52YXIgX3JhZiA9IHJlcXVpcmUoJ3JhZicpO1xuXG52YXIgX3JhZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yYWYpO1xuXG52YXIgX3Nob3VsZFN0b3BBbmltYXRpb24gPSByZXF1aXJlKCcuL3Nob3VsZFN0b3BBbmltYXRpb24nKTtcblxudmFyIF9zaG91bGRTdG9wQW5pbWF0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Nob3VsZFN0b3BBbmltYXRpb24pO1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfcHJvcFR5cGVzID0gcmVxdWlyZSgncHJvcC10eXBlcycpO1xuXG52YXIgX3Byb3BUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wcm9wVHlwZXMpO1xuXG52YXIgbXNQZXJGcmFtZSA9IDEwMDAgLyA2MDtcblxudmFyIE1vdGlvbiA9IChmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoTW90aW9uLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBfY3JlYXRlQ2xhc3MoTW90aW9uLCBudWxsLCBbe1xuICAgIGtleTogJ3Byb3BUeXBlcycsXG4gICAgdmFsdWU6IHtcbiAgICAgIC8vIFRPT0Q6IHdhcm4gYWdhaW5zdCBwdXR0aW5nIGEgY29uZmlnIGluIGhlcmVcbiAgICAgIGRlZmF1bHRTdHlsZTogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5vYmplY3RPZihfcHJvcFR5cGVzMlsnZGVmYXVsdCddLm51bWJlciksXG4gICAgICBzdHlsZTogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5vYmplY3RPZihfcHJvcFR5cGVzMlsnZGVmYXVsdCddLm9uZU9mVHlwZShbX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5udW1iZXIsIF9wcm9wVHlwZXMyWydkZWZhdWx0J10ub2JqZWN0XSkpLmlzUmVxdWlyZWQsXG4gICAgICBjaGlsZHJlbjogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBvblJlc3Q6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10uZnVuY1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9XSk7XG5cbiAgZnVuY3Rpb24gTW90aW9uKHByb3BzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNb3Rpb24pO1xuXG4gICAgX1JlYWN0JENvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzKTtcbiAgICB0aGlzLndhc0FuaW1hdGluZyA9IGZhbHNlO1xuICAgIHRoaXMuYW5pbWF0aW9uSUQgPSBudWxsO1xuICAgIHRoaXMucHJldlRpbWUgPSAwO1xuICAgIHRoaXMuYWNjdW11bGF0ZWRUaW1lID0gMDtcbiAgICB0aGlzLnVucmVhZFByb3BTdHlsZSA9IG51bGw7XG5cbiAgICB0aGlzLmNsZWFyVW5yZWFkUHJvcFN0eWxlID0gZnVuY3Rpb24gKGRlc3RTdHlsZSkge1xuICAgICAgdmFyIGRpcnR5ID0gZmFsc2U7XG4gICAgICB2YXIgX3N0YXRlID0gX3RoaXMuc3RhdGU7XG4gICAgICB2YXIgY3VycmVudFN0eWxlID0gX3N0YXRlLmN1cnJlbnRTdHlsZTtcbiAgICAgIHZhciBjdXJyZW50VmVsb2NpdHkgPSBfc3RhdGUuY3VycmVudFZlbG9jaXR5O1xuICAgICAgdmFyIGxhc3RJZGVhbFN0eWxlID0gX3N0YXRlLmxhc3RJZGVhbFN0eWxlO1xuICAgICAgdmFyIGxhc3RJZGVhbFZlbG9jaXR5ID0gX3N0YXRlLmxhc3RJZGVhbFZlbG9jaXR5O1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gZGVzdFN0eWxlKSB7XG4gICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlc3RTdHlsZSwga2V5KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0eWxlVmFsdWUgPSBkZXN0U3R5bGVba2V5XTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdHlsZVZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGlmICghZGlydHkpIHtcbiAgICAgICAgICAgIGRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGN1cnJlbnRTdHlsZSA9IF9leHRlbmRzKHt9LCBjdXJyZW50U3R5bGUpO1xuICAgICAgICAgICAgY3VycmVudFZlbG9jaXR5ID0gX2V4dGVuZHMoe30sIGN1cnJlbnRWZWxvY2l0eSk7XG4gICAgICAgICAgICBsYXN0SWRlYWxTdHlsZSA9IF9leHRlbmRzKHt9LCBsYXN0SWRlYWxTdHlsZSk7XG4gICAgICAgICAgICBsYXN0SWRlYWxWZWxvY2l0eSA9IF9leHRlbmRzKHt9LCBsYXN0SWRlYWxWZWxvY2l0eSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudFN0eWxlW2tleV0gPSBzdHlsZVZhbHVlO1xuICAgICAgICAgIGN1cnJlbnRWZWxvY2l0eVtrZXldID0gMDtcbiAgICAgICAgICBsYXN0SWRlYWxTdHlsZVtrZXldID0gc3R5bGVWYWx1ZTtcbiAgICAgICAgICBsYXN0SWRlYWxWZWxvY2l0eVtrZXldID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBjdXJyZW50U3R5bGU6IGN1cnJlbnRTdHlsZSwgY3VycmVudFZlbG9jaXR5OiBjdXJyZW50VmVsb2NpdHksIGxhc3RJZGVhbFN0eWxlOiBsYXN0SWRlYWxTdHlsZSwgbGFzdElkZWFsVmVsb2NpdHk6IGxhc3RJZGVhbFZlbG9jaXR5IH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uSWZOZWNlc3NhcnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBUT0RPOiB3aGVuIGNvbmZpZyBpcyB7YTogMTB9IGFuZCBkZXN0IGlzIHthOiAxMH0gZG8gd2UgcmFmIG9uY2UgYW5kXG4gICAgICAvLyBjYWxsIGNiPyBObywgb3RoZXJ3aXNlIGFjY2lkZW50YWwgcGFyZW50IHJlcmVuZGVyIGNhdXNlcyBjYiB0cmlnZ2VyXG4gICAgICBfdGhpcy5hbmltYXRpb25JRCA9IF9yYWYyWydkZWZhdWx0J10oZnVuY3Rpb24gKHRpbWVzdGFtcCkge1xuICAgICAgICAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIGFuaW1hdGUgaW4gdGhlIGZpcnN0IHBsYWNlXG4gICAgICAgIHZhciBwcm9wc1N0eWxlID0gX3RoaXMucHJvcHMuc3R5bGU7XG4gICAgICAgIGlmIChfc2hvdWxkU3RvcEFuaW1hdGlvbjJbJ2RlZmF1bHQnXShfdGhpcy5zdGF0ZS5jdXJyZW50U3R5bGUsIHByb3BzU3R5bGUsIF90aGlzLnN0YXRlLmN1cnJlbnRWZWxvY2l0eSkpIHtcbiAgICAgICAgICBpZiAoX3RoaXMud2FzQW5pbWF0aW5nICYmIF90aGlzLnByb3BzLm9uUmVzdCkge1xuICAgICAgICAgICAgX3RoaXMucHJvcHMub25SZXN0KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gbm8gbmVlZCB0byBjYW5jZWwgYW5pbWF0aW9uSUQgaGVyZTsgc2hvdWxkbid0IGhhdmUgYW55IGluIGZsaWdodFxuICAgICAgICAgIF90aGlzLmFuaW1hdGlvbklEID0gbnVsbDtcbiAgICAgICAgICBfdGhpcy53YXNBbmltYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPSAwO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLndhc0FuaW1hdGluZyA9IHRydWU7XG5cbiAgICAgICAgdmFyIGN1cnJlbnRUaW1lID0gdGltZXN0YW1wIHx8IF9wZXJmb3JtYW5jZU5vdzJbJ2RlZmF1bHQnXSgpO1xuICAgICAgICB2YXIgdGltZURlbHRhID0gY3VycmVudFRpbWUgLSBfdGhpcy5wcmV2VGltZTtcbiAgICAgICAgX3RoaXMucHJldlRpbWUgPSBjdXJyZW50VGltZTtcbiAgICAgICAgX3RoaXMuYWNjdW11bGF0ZWRUaW1lID0gX3RoaXMuYWNjdW11bGF0ZWRUaW1lICsgdGltZURlbHRhO1xuICAgICAgICAvLyBtb3JlIHRoYW4gMTAgZnJhbWVzPyBwcm9sbHkgc3dpdGNoZWQgYnJvd3NlciB0YWIuIFJlc3RhcnRcbiAgICAgICAgaWYgKF90aGlzLmFjY3VtdWxhdGVkVGltZSA+IG1zUGVyRnJhbWUgKiAxMCkge1xuICAgICAgICAgIF90aGlzLmFjY3VtdWxhdGVkVGltZSA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3RoaXMuYWNjdW11bGF0ZWRUaW1lID09PSAwKSB7XG4gICAgICAgICAgLy8gbm8gbmVlZCB0byBjYW5jZWwgYW5pbWF0aW9uSUQgaGVyZTsgc2hvdWxkbid0IGhhdmUgYW55IGluIGZsaWdodFxuICAgICAgICAgIF90aGlzLmFuaW1hdGlvbklEID0gbnVsbDtcbiAgICAgICAgICBfdGhpcy5zdGFydEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGN1cnJlbnRGcmFtZUNvbXBsZXRpb24gPSAoX3RoaXMuYWNjdW11bGF0ZWRUaW1lIC0gTWF0aC5mbG9vcihfdGhpcy5hY2N1bXVsYXRlZFRpbWUgLyBtc1BlckZyYW1lKSAqIG1zUGVyRnJhbWUpIC8gbXNQZXJGcmFtZTtcbiAgICAgICAgdmFyIGZyYW1lc1RvQ2F0Y2hVcCA9IE1hdGguZmxvb3IoX3RoaXMuYWNjdW11bGF0ZWRUaW1lIC8gbXNQZXJGcmFtZSk7XG5cbiAgICAgICAgdmFyIG5ld0xhc3RJZGVhbFN0eWxlID0ge307XG4gICAgICAgIHZhciBuZXdMYXN0SWRlYWxWZWxvY2l0eSA9IHt9O1xuICAgICAgICB2YXIgbmV3Q3VycmVudFN0eWxlID0ge307XG4gICAgICAgIHZhciBuZXdDdXJyZW50VmVsb2NpdHkgPSB7fTtcblxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gcHJvcHNTdHlsZSkge1xuICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzU3R5bGUsIGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBzdHlsZVZhbHVlID0gcHJvcHNTdHlsZVtrZXldO1xuICAgICAgICAgIGlmICh0eXBlb2Ygc3R5bGVWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIG5ld0N1cnJlbnRTdHlsZVtrZXldID0gc3R5bGVWYWx1ZTtcbiAgICAgICAgICAgIG5ld0N1cnJlbnRWZWxvY2l0eVtrZXldID0gMDtcbiAgICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlW2tleV0gPSBzdHlsZVZhbHVlO1xuICAgICAgICAgICAgbmV3TGFzdElkZWFsVmVsb2NpdHlba2V5XSA9IDA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlID0gX3RoaXMuc3RhdGUubGFzdElkZWFsU3R5bGVba2V5XTtcbiAgICAgICAgICAgIHZhciBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlID0gX3RoaXMuc3RhdGUubGFzdElkZWFsVmVsb2NpdHlba2V5XTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWVzVG9DYXRjaFVwOyBpKyspIHtcbiAgICAgICAgICAgICAgdmFyIF9zdGVwcGVyID0gX3N0ZXBwZXI0WydkZWZhdWx0J10obXNQZXJGcmFtZSAvIDEwMDAsIG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUsIG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUsIHN0eWxlVmFsdWUudmFsLCBzdHlsZVZhbHVlLnN0aWZmbmVzcywgc3R5bGVWYWx1ZS5kYW1waW5nLCBzdHlsZVZhbHVlLnByZWNpc2lvbik7XG5cbiAgICAgICAgICAgICAgbmV3TGFzdElkZWFsU3R5bGVWYWx1ZSA9IF9zdGVwcGVyWzBdO1xuICAgICAgICAgICAgICBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlID0gX3N0ZXBwZXJbMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBfc3RlcHBlcjIgPSBfc3RlcHBlcjRbJ2RlZmF1bHQnXShtc1BlckZyYW1lIC8gMTAwMCwgbmV3TGFzdElkZWFsU3R5bGVWYWx1ZSwgbmV3TGFzdElkZWFsVmVsb2NpdHlWYWx1ZSwgc3R5bGVWYWx1ZS52YWwsIHN0eWxlVmFsdWUuc3RpZmZuZXNzLCBzdHlsZVZhbHVlLmRhbXBpbmcsIHN0eWxlVmFsdWUucHJlY2lzaW9uKTtcblxuICAgICAgICAgICAgdmFyIG5leHRJZGVhbFggPSBfc3RlcHBlcjJbMF07XG4gICAgICAgICAgICB2YXIgbmV4dElkZWFsViA9IF9zdGVwcGVyMlsxXTtcblxuICAgICAgICAgICAgbmV3Q3VycmVudFN0eWxlW2tleV0gPSBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlICsgKG5leHRJZGVhbFggLSBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlKSAqIGN1cnJlbnRGcmFtZUNvbXBsZXRpb247XG4gICAgICAgICAgICBuZXdDdXJyZW50VmVsb2NpdHlba2V5XSA9IG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUgKyAobmV4dElkZWFsViAtIG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUpICogY3VycmVudEZyYW1lQ29tcGxldGlvbjtcbiAgICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlW2tleV0gPSBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlO1xuICAgICAgICAgICAgbmV3TGFzdElkZWFsVmVsb2NpdHlba2V5XSA9IG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuYW5pbWF0aW9uSUQgPSBudWxsO1xuICAgICAgICAvLyB0aGUgYW1vdW50IHdlJ3JlIGxvb3BlZCBvdmVyIGFib3ZlXG4gICAgICAgIF90aGlzLmFjY3VtdWxhdGVkVGltZSAtPSBmcmFtZXNUb0NhdGNoVXAgKiBtc1BlckZyYW1lO1xuXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjdXJyZW50U3R5bGU6IG5ld0N1cnJlbnRTdHlsZSxcbiAgICAgICAgICBjdXJyZW50VmVsb2NpdHk6IG5ld0N1cnJlbnRWZWxvY2l0eSxcbiAgICAgICAgICBsYXN0SWRlYWxTdHlsZTogbmV3TGFzdElkZWFsU3R5bGUsXG4gICAgICAgICAgbGFzdElkZWFsVmVsb2NpdHk6IG5ld0xhc3RJZGVhbFZlbG9jaXR5XG4gICAgICAgIH0pO1xuXG4gICAgICAgIF90aGlzLnVucmVhZFByb3BTdHlsZSA9IG51bGw7XG5cbiAgICAgICAgX3RoaXMuc3RhcnRBbmltYXRpb25JZk5lY2Vzc2FyeSgpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRoaXMuc3RhdGUgPSB0aGlzLmRlZmF1bHRTdGF0ZSgpO1xuICB9XG5cbiAgTW90aW9uLnByb3RvdHlwZS5kZWZhdWx0U3RhdGUgPSBmdW5jdGlvbiBkZWZhdWx0U3RhdGUoKSB7XG4gICAgdmFyIF9wcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IF9wcm9wcy5kZWZhdWx0U3R5bGU7XG4gICAgdmFyIHN0eWxlID0gX3Byb3BzLnN0eWxlO1xuXG4gICAgdmFyIGN1cnJlbnRTdHlsZSA9IGRlZmF1bHRTdHlsZSB8fCBfc3RyaXBTdHlsZTJbJ2RlZmF1bHQnXShzdHlsZSk7XG4gICAgdmFyIGN1cnJlbnRWZWxvY2l0eSA9IF9tYXBUb1plcm8yWydkZWZhdWx0J10oY3VycmVudFN0eWxlKTtcbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudFN0eWxlOiBjdXJyZW50U3R5bGUsXG4gICAgICBjdXJyZW50VmVsb2NpdHk6IGN1cnJlbnRWZWxvY2l0eSxcbiAgICAgIGxhc3RJZGVhbFN0eWxlOiBjdXJyZW50U3R5bGUsXG4gICAgICBsYXN0SWRlYWxWZWxvY2l0eTogY3VycmVudFZlbG9jaXR5XG4gICAgfTtcbiAgfTtcblxuICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgY3VycmVudFN0eWxlJ3MgdmFsdWUgaXMgc3RhbGU6IGlmIHByb3BzIGlzIGltbWVkaWF0ZWx5XG4gIC8vIGNoYW5nZWQgZnJvbSAwIHRvIDQwMCB0byBzcHJpbmcoMCkgYWdhaW4sIHRoZSBhc3luYyBjdXJyZW50U3R5bGUgaXMgc3RpbGxcbiAgLy8gYXQgMCAoZGlkbid0IGhhdmUgdGltZSB0byB0aWNrIGFuZCBpbnRlcnBvbGF0ZSBldmVuIG9uY2UpLiBJZiB3ZSBuYWl2ZWx5XG4gIC8vIGNvbXBhcmUgY3VycmVudFN0eWxlIHdpdGggZGVzdFZhbCBpdCdsbCBiZSAwID09PSAwIChubyBhbmltYXRpb24sIHN0b3ApLlxuICAvLyBJbiByZWFsaXR5IGN1cnJlbnRTdHlsZSBzaG91bGQgYmUgNDAwXG5cbiAgTW90aW9uLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMucHJldlRpbWUgPSBfcGVyZm9ybWFuY2VOb3cyWydkZWZhdWx0J10oKTtcbiAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uSWZOZWNlc3NhcnkoKTtcbiAgfTtcblxuICBNb3Rpb24ucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKHByb3BzKSB7XG4gICAgaWYgKHRoaXMudW5yZWFkUHJvcFN0eWxlICE9IG51bGwpIHtcbiAgICAgIC8vIHByZXZpb3VzIHByb3BzIGhhdmVuJ3QgaGFkIHRoZSBjaGFuY2UgdG8gYmUgc2V0IHlldDsgc2V0IHRoZW0gaGVyZVxuICAgICAgdGhpcy5jbGVhclVucmVhZFByb3BTdHlsZSh0aGlzLnVucmVhZFByb3BTdHlsZSk7XG4gICAgfVxuXG4gICAgdGhpcy51bnJlYWRQcm9wU3R5bGUgPSBwcm9wcy5zdHlsZTtcbiAgICBpZiAodGhpcy5hbmltYXRpb25JRCA9PSBudWxsKSB7XG4gICAgICB0aGlzLnByZXZUaW1lID0gX3BlcmZvcm1hbmNlTm93MlsnZGVmYXVsdCddKCk7XG4gICAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uSWZOZWNlc3NhcnkoKTtcbiAgICB9XG4gIH07XG5cbiAgTW90aW9uLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIGlmICh0aGlzLmFuaW1hdGlvbklEICE9IG51bGwpIHtcbiAgICAgIF9yYWYyWydkZWZhdWx0J10uY2FuY2VsKHRoaXMuYW5pbWF0aW9uSUQpO1xuICAgICAgdGhpcy5hbmltYXRpb25JRCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIE1vdGlvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgIHZhciByZW5kZXJlZENoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbih0aGlzLnN0YXRlLmN1cnJlbnRTdHlsZSk7XG4gICAgcmV0dXJuIHJlbmRlcmVkQ2hpbGRyZW4gJiYgX3JlYWN0MlsnZGVmYXVsdCddLkNoaWxkcmVuLm9ubHkocmVuZGVyZWRDaGlsZHJlbik7XG4gIH07XG5cbiAgcmV0dXJuIE1vdGlvbjtcbn0pKF9yZWFjdDJbJ2RlZmF1bHQnXS5Db21wb25lbnQpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBNb3Rpb247XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLy8gYWZ0ZXIgY2hlY2tpbmcgZm9yIHVucmVhZFByb3BTdHlsZSAhPSBudWxsLCB3ZSBtYW51YWxseSBnbyBzZXQgdGhlXG4vLyBub24taW50ZXJwb2xhdGluZyB2YWx1ZXMgKHRob3NlIHRoYXQgYXJlIGEgbnVtYmVyLCB3aXRob3V0IGEgc3ByaW5nXG4vLyBjb25maWcpXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0LW1vdGlvbi9saWIvTW90aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlxuXG4vLyBjdXJyZW50bHkgdXNlZCB0byBpbml0aWF0ZSB0aGUgdmVsb2NpdHkgc3R5bGUgb2JqZWN0IHRvIDBcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IG1hcFRvWmVybztcblxuZnVuY3Rpb24gbWFwVG9aZXJvKG9iaikge1xuICB2YXIgcmV0ID0ge307XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgcmV0W2tleV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtbW90aW9uL2xpYi9tYXBUb1plcm8uanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlxuLy8gdHVybiB7eDoge3ZhbDogMSwgc3RpZmZuZXNzOiAxLCBkYW1waW5nOiAyfSwgeTogMn0gZ2VuZXJhdGVkIGJ5XG4vLyBge3g6IHNwcmluZygxLCB7c3RpZmZuZXNzOiAxLCBkYW1waW5nOiAyfSksIHk6IDJ9YCBpbnRvIHt4OiAxLCB5OiAyfVxuXG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzWydkZWZhdWx0J10gPSBzdHJpcFN0eWxlO1xuXG5mdW5jdGlvbiBzdHJpcFN0eWxlKHN0eWxlKSB7XG4gIHZhciByZXQgPSB7fTtcbiAgZm9yICh2YXIga2V5IGluIHN0eWxlKSB7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3R5bGUsIGtleSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICByZXRba2V5XSA9IHR5cGVvZiBzdHlsZVtrZXldID09PSAnbnVtYmVyJyA/IHN0eWxlW2tleV0gOiBzdHlsZVtrZXldLnZhbDtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtbW90aW9uL2xpYi9zdHJpcFN0eWxlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcblxuLy8gc3RlcHBlciBpcyB1c2VkIGEgbG90LiBTYXZlcyBhbGxvY2F0aW9uIHRvIHJldHVybiB0aGUgc2FtZSBhcnJheSB3cmFwcGVyLlxuLy8gVGhpcyBpcyBmaW5lIGFuZCBkYW5nZXItZnJlZSBhZ2FpbnN0IG11dGF0aW9ucyBiZWNhdXNlIHRoZSBjYWxsc2l0ZVxuLy8gaW1tZWRpYXRlbHkgZGVzdHJ1Y3R1cmVzIGl0IGFuZCBnZXRzIHRoZSBudW1iZXJzIGluc2lkZSB3aXRob3V0IHBhc3NpbmcgdGhlXG5cInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gc3RlcHBlcjtcblxudmFyIHJldXNlZFR1cGxlID0gWzAsIDBdO1xuXG5mdW5jdGlvbiBzdGVwcGVyKHNlY29uZFBlckZyYW1lLCB4LCB2LCBkZXN0WCwgaywgYiwgcHJlY2lzaW9uKSB7XG4gIC8vIFNwcmluZyBzdGlmZm5lc3MsIGluIGtnIC8gc14yXG5cbiAgLy8gZm9yIGFuaW1hdGlvbnMsIGRlc3RYIGlzIHJlYWxseSBzcHJpbmcgbGVuZ3RoIChzcHJpbmcgYXQgcmVzdCkuIGluaXRpYWxcbiAgLy8gcG9zaXRpb24gaXMgY29uc2lkZXJlZCBhcyB0aGUgc3RyZXRjaGVkL2NvbXByZXNzZWQgcG9zaXRpb24gb2YgYSBzcHJpbmdcbiAgdmFyIEZzcHJpbmcgPSAtayAqICh4IC0gZGVzdFgpO1xuXG4gIC8vIERhbXBpbmcsIGluIGtnIC8gc1xuICB2YXIgRmRhbXBlciA9IC1iICogdjtcblxuICAvLyB1c3VhbGx5IHdlIHB1dCBtYXNzIGhlcmUsIGJ1dCBmb3IgYW5pbWF0aW9uIHB1cnBvc2VzLCBzcGVjaWZ5aW5nIG1hc3MgaXMgYVxuICAvLyBiaXQgcmVkdW5kYW50LiB5b3UgY291bGQgc2ltcGx5IGFkanVzdCBrIGFuZCBiIGFjY29yZGluZ2x5XG4gIC8vIGxldCBhID0gKEZzcHJpbmcgKyBGZGFtcGVyKSAvIG1hc3M7XG4gIHZhciBhID0gRnNwcmluZyArIEZkYW1wZXI7XG5cbiAgdmFyIG5ld1YgPSB2ICsgYSAqIHNlY29uZFBlckZyYW1lO1xuICB2YXIgbmV3WCA9IHggKyBuZXdWICogc2Vjb25kUGVyRnJhbWU7XG5cbiAgaWYgKE1hdGguYWJzKG5ld1YpIDwgcHJlY2lzaW9uICYmIE1hdGguYWJzKG5ld1ggLSBkZXN0WCkgPCBwcmVjaXNpb24pIHtcbiAgICByZXVzZWRUdXBsZVswXSA9IGRlc3RYO1xuICAgIHJldXNlZFR1cGxlWzFdID0gMDtcbiAgICByZXR1cm4gcmV1c2VkVHVwbGU7XG4gIH1cblxuICByZXVzZWRUdXBsZVswXSA9IG5ld1g7XG4gIHJldXNlZFR1cGxlWzFdID0gbmV3VjtcbiAgcmV0dXJuIHJldXNlZFR1cGxlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdO1xuLy8gYXJyYXkgcmVmZXJlbmNlIGFyb3VuZC5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtbW90aW9uL2xpYi9zdGVwcGVyLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuNy4xXG4oZnVuY3Rpb24oKSB7XG4gIHZhciBnZXROYW5vU2Vjb25kcywgaHJ0aW1lLCBsb2FkVGltZTtcblxuICBpZiAoKHR5cGVvZiBwZXJmb3JtYW5jZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwZXJmb3JtYW5jZSAhPT0gbnVsbCkgJiYgcGVyZm9ybWFuY2Uubm93KSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICB9O1xuICB9IGVsc2UgaWYgKCh0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzICE9PSBudWxsKSAmJiBwcm9jZXNzLmhydGltZSkge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gKGdldE5hbm9TZWNvbmRzKCkgLSBsb2FkVGltZSkgLyAxZTY7XG4gICAgfTtcbiAgICBocnRpbWUgPSBwcm9jZXNzLmhydGltZTtcbiAgICBnZXROYW5vU2Vjb25kcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGhyO1xuICAgICAgaHIgPSBocnRpbWUoKTtcbiAgICAgIHJldHVybiBoclswXSAqIDFlOSArIGhyWzFdO1xuICAgIH07XG4gICAgbG9hZFRpbWUgPSBnZXROYW5vU2Vjb25kcygpO1xuICB9IGVsc2UgaWYgKERhdGUubm93KSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBEYXRlLm5vdygpIC0gbG9hZFRpbWU7XG4gICAgfTtcbiAgICBsb2FkVGltZSA9IERhdGUubm93KCk7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIGxvYWRUaW1lO1xuICAgIH07XG4gICAgbG9hZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgfVxuXG59KS5jYWxsKHRoaXMpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3BlcmZvcm1hbmNlLW5vdy9saWIvcGVyZm9ybWFuY2Utbm93LmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgIH1cbn0gKCkpXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Byb2Nlc3MvYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIG5vdyA9IHJlcXVpcmUoJ3BlcmZvcm1hbmNlLW5vdycpXG4gICwgcm9vdCA9IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogd2luZG93XG4gICwgdmVuZG9ycyA9IFsnbW96JywgJ3dlYmtpdCddXG4gICwgc3VmZml4ID0gJ0FuaW1hdGlvbkZyYW1lJ1xuICAsIHJhZiA9IHJvb3RbJ3JlcXVlc3QnICsgc3VmZml4XVxuICAsIGNhZiA9IHJvb3RbJ2NhbmNlbCcgKyBzdWZmaXhdIHx8IHJvb3RbJ2NhbmNlbFJlcXVlc3QnICsgc3VmZml4XVxuXG5mb3IodmFyIGkgPSAwOyAhcmFmICYmIGkgPCB2ZW5kb3JzLmxlbmd0aDsgaSsrKSB7XG4gIHJhZiA9IHJvb3RbdmVuZG9yc1tpXSArICdSZXF1ZXN0JyArIHN1ZmZpeF1cbiAgY2FmID0gcm9vdFt2ZW5kb3JzW2ldICsgJ0NhbmNlbCcgKyBzdWZmaXhdXG4gICAgICB8fCByb290W3ZlbmRvcnNbaV0gKyAnQ2FuY2VsUmVxdWVzdCcgKyBzdWZmaXhdXG59XG5cbi8vIFNvbWUgdmVyc2lvbnMgb2YgRkYgaGF2ZSByQUYgYnV0IG5vdCBjQUZcbmlmKCFyYWYgfHwgIWNhZikge1xuICB2YXIgbGFzdCA9IDBcbiAgICAsIGlkID0gMFxuICAgICwgcXVldWUgPSBbXVxuICAgICwgZnJhbWVEdXJhdGlvbiA9IDEwMDAgLyA2MFxuXG4gIHJhZiA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgaWYocXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB2YXIgX25vdyA9IG5vdygpXG4gICAgICAgICwgbmV4dCA9IE1hdGgubWF4KDAsIGZyYW1lRHVyYXRpb24gLSAoX25vdyAtIGxhc3QpKVxuICAgICAgbGFzdCA9IG5leHQgKyBfbm93XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgY3AgPSBxdWV1ZS5zbGljZSgwKVxuICAgICAgICAvLyBDbGVhciBxdWV1ZSBoZXJlIHRvIHByZXZlbnRcbiAgICAgICAgLy8gY2FsbGJhY2tzIGZyb20gYXBwZW5kaW5nIGxpc3RlbmVyc1xuICAgICAgICAvLyB0byB0aGUgY3VycmVudCBmcmFtZSdzIHF1ZXVlXG4gICAgICAgIHF1ZXVlLmxlbmd0aCA9IDBcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGNwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYoIWNwW2ldLmNhbmNlbGxlZCkge1xuICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICBjcFtpXS5jYWxsYmFjayhsYXN0KVxuICAgICAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRocm93IGUgfSwgMClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIE1hdGgucm91bmQobmV4dCkpXG4gICAgfVxuICAgIHF1ZXVlLnB1c2goe1xuICAgICAgaGFuZGxlOiArK2lkLFxuICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgY2FuY2VsbGVkOiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGlkXG4gIH1cblxuICBjYWYgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKHF1ZXVlW2ldLmhhbmRsZSA9PT0gaGFuZGxlKSB7XG4gICAgICAgIHF1ZXVlW2ldLmNhbmNlbGxlZCA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmbikge1xuICAvLyBXcmFwIGluIGEgbmV3IGZ1bmN0aW9uIHRvIHByZXZlbnRcbiAgLy8gYGNhbmNlbGAgcG90ZW50aWFsbHkgYmVpbmcgYXNzaWduZWRcbiAgLy8gdG8gdGhlIG5hdGl2ZSByQUYgZnVuY3Rpb25cbiAgcmV0dXJuIHJhZi5jYWxsKHJvb3QsIGZuKVxufVxubW9kdWxlLmV4cG9ydHMuY2FuY2VsID0gZnVuY3Rpb24oKSB7XG4gIGNhZi5hcHBseShyb290LCBhcmd1bWVudHMpXG59XG5tb2R1bGUuZXhwb3J0cy5wb2x5ZmlsbCA9IGZ1bmN0aW9uKCkge1xuICByb290LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IHJhZlxuICByb290LmNhbmNlbEFuaW1hdGlvbkZyYW1lID0gY2FmXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmFmL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuMlxuKGZ1bmN0aW9uKCkge1xuICB2YXIgZ2V0TmFub1NlY29uZHMsIGhydGltZSwgbG9hZFRpbWUsIG1vZHVsZUxvYWRUaW1lLCBub2RlTG9hZFRpbWUsIHVwVGltZTtcblxuICBpZiAoKHR5cGVvZiBwZXJmb3JtYW5jZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwZXJmb3JtYW5jZSAhPT0gbnVsbCkgJiYgcGVyZm9ybWFuY2Uubm93KSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICB9O1xuICB9IGVsc2UgaWYgKCh0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzICE9PSBudWxsKSAmJiBwcm9jZXNzLmhydGltZSkge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gKGdldE5hbm9TZWNvbmRzKCkgLSBub2RlTG9hZFRpbWUpIC8gMWU2O1xuICAgIH07XG4gICAgaHJ0aW1lID0gcHJvY2Vzcy5ocnRpbWU7XG4gICAgZ2V0TmFub1NlY29uZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBocjtcbiAgICAgIGhyID0gaHJ0aW1lKCk7XG4gICAgICByZXR1cm4gaHJbMF0gKiAxZTkgKyBoclsxXTtcbiAgICB9O1xuICAgIG1vZHVsZUxvYWRUaW1lID0gZ2V0TmFub1NlY29uZHMoKTtcbiAgICB1cFRpbWUgPSBwcm9jZXNzLnVwdGltZSgpICogMWU5O1xuICAgIG5vZGVMb2FkVGltZSA9IG1vZHVsZUxvYWRUaW1lIC0gdXBUaW1lO1xuICB9IGVsc2UgaWYgKERhdGUubm93KSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBEYXRlLm5vdygpIC0gbG9hZFRpbWU7XG4gICAgfTtcbiAgICBsb2FkVGltZSA9IERhdGUubm93KCk7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIGxvYWRUaW1lO1xuICAgIH07XG4gICAgbG9hZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgfVxuXG59KS5jYWxsKHRoaXMpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wZXJmb3JtYW5jZS1ub3cuanMubWFwXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmFmL34vcGVyZm9ybWFuY2Utbm93L2xpYi9wZXJmb3JtYW5jZS1ub3cuanNcbi8vIG1vZHVsZSBpZCA9IDE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlxuXG4vLyB1c2FnZSBhc3N1bXB0aW9uOiBjdXJyZW50U3R5bGUgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuIHJlbmRlcmVkIGJ1dCBpdCBzYXlzXG4vLyBub3RoaW5nIG9mIHdoZXRoZXIgY3VycmVudFN0eWxlIGlzIHN0YWxlIChzZWUgdW5yZWFkUHJvcFN0eWxlKVxuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0c1snZGVmYXVsdCddID0gc2hvdWxkU3RvcEFuaW1hdGlvbjtcblxuZnVuY3Rpb24gc2hvdWxkU3RvcEFuaW1hdGlvbihjdXJyZW50U3R5bGUsIHN0eWxlLCBjdXJyZW50VmVsb2NpdHkpIHtcbiAgZm9yICh2YXIga2V5IGluIHN0eWxlKSB7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3R5bGUsIGtleSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50VmVsb2NpdHlba2V5XSAhPT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBzdHlsZVZhbHVlID0gdHlwZW9mIHN0eWxlW2tleV0gPT09ICdudW1iZXInID8gc3R5bGVba2V5XSA6IHN0eWxlW2tleV0udmFsO1xuICAgIC8vIHN0ZXBwZXIgd2lsbCBoYXZlIGFscmVhZHkgdGFrZW4gY2FyZSBvZiByb3VuZGluZyBwcmVjaXNpb24gZXJyb3JzLCBzb1xuICAgIC8vIHdvbid0IGhhdmUgc3VjaCB0aGluZyBhcyAwLjk5OTkgIT09PSAxXG4gICAgaWYgKGN1cnJlbnRTdHlsZVtrZXldICE9PSBzdHlsZVZhbHVlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC1tb3Rpb24vbGliL3Nob3VsZFN0b3BBbmltYXRpb24uanNcbi8vIG1vZHVsZSBpZCA9IDE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIFN5bWJvbC5mb3IgJiZcbiAgICBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykpIHx8XG4gICAgMHhlYWM3O1xuXG4gIHZhciBpc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJlxuICAgICAgb2JqZWN0ICE9PSBudWxsICYmXG4gICAgICBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbiAgfTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcHJvcC10eXBlcy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xudmFyIGNoZWNrUHJvcFR5cGVzID0gcmVxdWlyZSgnLi9jaGVja1Byb3BUeXBlcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG4gIC8qIGdsb2JhbCBTeW1ib2wgKi9cbiAgdmFyIElURVJBVE9SX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLml0ZXJhdG9yO1xuICB2YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7IC8vIEJlZm9yZSBTeW1ib2wgc3BlYy5cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0LlxuICAgKlxuICAgKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDpcbiAgICpcbiAgICogICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTtcbiAgICogICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChteUl0ZXJhYmxlKTtcbiAgICogICAgICAgLi4uXG4gICAqICAgICB9XG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVyYWJsZVxuICAgKiBAcmV0dXJuIHs/ZnVuY3Rpb259XG4gICAqL1xuICBmdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0pO1xuICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yRm47XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyB0aGF0IGFsbG93IGRlY2xhcmF0aW9uIGFuZCB2YWxpZGF0aW9uIG9mIHByb3BzIHRoYXQgYXJlXG4gICAqIHN1cHBsaWVkIHRvIFJlYWN0IGNvbXBvbmVudHMuIEV4YW1wbGUgdXNhZ2U6XG4gICAqXG4gICAqICAgdmFyIFByb3BzID0gcmVxdWlyZSgnUmVhY3RQcm9wVHlwZXMnKTtcbiAgICogICB2YXIgTXlBcnRpY2xlID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICAgcHJvcFR5cGVzOiB7XG4gICAqICAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBwcm9wIG5hbWVkIFwiZGVzY3JpcHRpb25cIi5cbiAgICogICAgICAgZGVzY3JpcHRpb246IFByb3BzLnN0cmluZyxcbiAgICpcbiAgICogICAgICAgLy8gQSByZXF1aXJlZCBlbnVtIHByb3AgbmFtZWQgXCJjYXRlZ29yeVwiLlxuICAgKiAgICAgICBjYXRlZ29yeTogUHJvcHMub25lT2YoWydOZXdzJywnUGhvdG9zJ10pLmlzUmVxdWlyZWQsXG4gICAqXG4gICAqICAgICAgIC8vIEEgcHJvcCBuYW1lZCBcImRpYWxvZ1wiIHRoYXQgcmVxdWlyZXMgYW4gaW5zdGFuY2Ugb2YgRGlhbG9nLlxuICAgKiAgICAgICBkaWFsb2c6IFByb3BzLmluc3RhbmNlT2YoRGlhbG9nKS5pc1JlcXVpcmVkXG4gICAqICAgICB9LFxuICAgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsgLi4uIH1cbiAgICogICB9KTtcbiAgICpcbiAgICogQSBtb3JlIGZvcm1hbCBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGVzZSBtZXRob2RzIGFyZSB1c2VkOlxuICAgKlxuICAgKiAgIHR5cGUgOj0gYXJyYXl8Ym9vbHxmdW5jfG9iamVjdHxudW1iZXJ8c3RyaW5nfG9uZU9mKFsuLi5dKXxpbnN0YW5jZU9mKC4uLilcbiAgICogICBkZWNsIDo9IFJlYWN0UHJvcFR5cGVzLnt0eXBlfSguaXNSZXF1aXJlZCk/XG4gICAqXG4gICAqIEVhY2ggYW5kIGV2ZXJ5IGRlY2xhcmF0aW9uIHByb2R1Y2VzIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBzaWduYXR1cmUuIFRoaXNcbiAgICogYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBjdXN0b20gdmFsaWRhdGlvbiBmdW5jdGlvbnMuIEZvciBleGFtcGxlOlxuICAgKlxuICAgKiAgdmFyIE15TGluayA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgcHJvcFR5cGVzOiB7XG4gICAqICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIG9yIFVSSSBwcm9wIG5hbWVkIFwiaHJlZlwiLlxuICAgKiAgICAgIGhyZWY6IGZ1bmN0aW9uKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgKiAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICogICAgICAgIGlmIChwcm9wVmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgcHJvcFZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgKiAgICAgICAgICAgICEocHJvcFZhbHVlIGluc3RhbmNlb2YgVVJJKSkge1xuICAgKiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFxuICAgKiAgICAgICAgICAgICdFeHBlY3RlZCBhIHN0cmluZyBvciBhbiBVUkkgZm9yICcgKyBwcm9wTmFtZSArICcgaW4gJyArXG4gICAqICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICAgKiAgICAgICAgICApO1xuICAgKiAgICAgICAgfVxuICAgKiAgICAgIH1cbiAgICogICAgfSxcbiAgICogICAgcmVuZGVyOiBmdW5jdGlvbigpIHsuLi59XG4gICAqICB9KTtcbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuXG4gIHZhciBBTk9OWU1PVVMgPSAnPDxhbm9ueW1vdXM+Pic7XG5cbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2FycmF5JyksXG4gICAgYm9vbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Jvb2xlYW4nKSxcbiAgICBmdW5jOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignZnVuY3Rpb24nKSxcbiAgICBudW1iZXI6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdudW1iZXInKSxcbiAgICBvYmplY3Q6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdvYmplY3QnKSxcbiAgICBzdHJpbmc6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzdHJpbmcnKSxcbiAgICBzeW1ib2w6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzeW1ib2wnKSxcblxuICAgIGFueTogY3JlYXRlQW55VHlwZUNoZWNrZXIoKSxcbiAgICBhcnJheU9mOiBjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIsXG4gICAgZWxlbWVudDogY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCksXG4gICAgaW5zdGFuY2VPZjogY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlcixcbiAgICBub2RlOiBjcmVhdGVOb2RlQ2hlY2tlcigpLFxuICAgIG9iamVjdE9mOiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyLFxuICAgIG9uZU9mOiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIsXG4gICAgb25lT2ZUeXBlOiBjcmVhdGVVbmlvblR5cGVDaGVja2VyLFxuICAgIHNoYXBlOiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyXG4gIH07XG5cbiAgLyoqXG4gICAqIGlubGluZWQgT2JqZWN0LmlzIHBvbHlmaWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd25cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG4gICAqL1xuICAvKmVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFyZSovXG4gIGZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtXG4gICAgaWYgKHggPT09IHkpIHtcbiAgICAgIC8vIFN0ZXBzIDEtNSwgNy0xMFxuICAgICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTBcbiAgICAgIHJldHVybiB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU5cbiAgICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG4gICAgfVxuICB9XG4gIC8qZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUqL1xuXG4gIC8qKlxuICAgKiBXZSB1c2UgYW4gRXJyb3ItbGlrZSBvYmplY3QgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYXMgcGVvcGxlIG1heSBjYWxsXG4gICAqIFByb3BUeXBlcyBkaXJlY3RseSBhbmQgaW5zcGVjdCB0aGVpciBvdXRwdXQuIEhvd2V2ZXIsIHdlIGRvbid0IHVzZSByZWFsXG4gICAqIEVycm9ycyBhbnltb3JlLiBXZSBkb24ndCBpbnNwZWN0IHRoZWlyIHN0YWNrIGFueXdheSwgYW5kIGNyZWF0aW5nIHRoZW1cbiAgICogaXMgcHJvaGliaXRpdmVseSBleHBlbnNpdmUgaWYgdGhleSBhcmUgY3JlYXRlZCB0b28gb2Z0ZW4sIHN1Y2ggYXMgd2hhdFxuICAgKiBoYXBwZW5zIGluIG9uZU9mVHlwZSgpIGZvciBhbnkgdHlwZSBiZWZvcmUgdGhlIG9uZSB0aGF0IG1hdGNoZWQuXG4gICAqL1xuICBmdW5jdGlvbiBQcm9wVHlwZUVycm9yKG1lc3NhZ2UpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuc3RhY2sgPSAnJztcbiAgfVxuICAvLyBNYWtlIGBpbnN0YW5jZW9mIEVycm9yYCBzdGlsbCB3b3JrIGZvciByZXR1cm5lZCBlcnJvcnMuXG4gIFByb3BUeXBlRXJyb3IucHJvdG90eXBlID0gRXJyb3IucHJvdG90eXBlO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZUNhbGxDYWNoZSA9IHt9O1xuICAgICAgdmFyIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50ID0gMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICBjb21wb25lbnROYW1lID0gY29tcG9uZW50TmFtZSB8fCBBTk9OWU1PVVM7XG4gICAgICBwcm9wRnVsbE5hbWUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG5cbiAgICAgIGlmIChzZWNyZXQgIT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAgIGlmICh0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG4gICAgICAgICAgLy8gTmV3IGJlaGF2aW9yIG9ubHkgZm9yIHVzZXJzIG9mIGBwcm9wLXR5cGVzYCBwYWNrYWdlXG4gICAgICAgICAgaW52YXJpYW50KFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAnVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAvLyBPbGQgYmVoYXZpb3IgZm9yIHBlb3BsZSB1c2luZyBSZWFjdC5Qcm9wVHlwZXNcbiAgICAgICAgICB2YXIgY2FjaGVLZXkgPSBjb21wb25lbnROYW1lICsgJzonICsgcHJvcE5hbWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSAmJlxuICAgICAgICAgICAgLy8gQXZvaWQgc3BhbW1pbmcgdGhlIGNvbnNvbGUgYmVjYXVzZSB0aGV5IGFyZSBvZnRlbiBub3QgYWN0aW9uYWJsZSBleGNlcHQgZm9yIGxpYiBhdXRob3JzXG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA8IDNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAnWW91IGFyZSBtYW51YWxseSBjYWxsaW5nIGEgUmVhY3QuUHJvcFR5cGVzIHZhbGlkYXRpb24gJyArXG4gICAgICAgICAgICAgICdmdW5jdGlvbiBmb3IgdGhlIGAlc2AgcHJvcCBvbiBgJXNgLiBUaGlzIGlzIGRlcHJlY2F0ZWQgJyArXG4gICAgICAgICAgICAgICdhbmQgd2lsbCB0aHJvdyBpbiB0aGUgc3RhbmRhbG9uZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQtcGFydHkgUHJvcFR5cGVzICcgK1xuICAgICAgICAgICAgICAnbGlicmFyeS4gU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1kb250LWNhbGwtcHJvcHR5cGVzICcgKyAnZm9yIGRldGFpbHMuJyxcbiAgICAgICAgICAgICAgcHJvcEZ1bGxOYW1lLFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXldID0gdHJ1ZTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcbiAgICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkICcgKyAoJ2luIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4nKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuJykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBjaGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7XG4gICAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gY2hhaW5lZENoZWNrVHlwZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKGV4cGVjdGVkVHlwZSkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7XG4gICAgICAgIC8vIGBwcm9wVmFsdWVgIGJlaW5nIGluc3RhbmNlIG9mLCBzYXksIGRhdGUvcmVnZXhwLCBwYXNzIHRoZSAnb2JqZWN0J1xuICAgICAgICAvLyBjaGVjaywgYnV0IHdlIGNhbiBvZmZlciBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGhlcmUgcmF0aGVyIHRoYW5cbiAgICAgICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLlxuICAgICAgICB2YXIgcHJlY2lzZVR5cGUgPSBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdgLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQW55VHlwZUNoZWNrZXIoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyKGV4cGVjdGVkQ2xhc3MpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICghKHByb3BzW3Byb3BOYW1lXSBpbnN0YW5jZW9mIGV4cGVjdGVkQ2xhc3MpKSB7XG4gICAgICAgIHZhciBleHBlY3RlZENsYXNzTmFtZSA9IGV4cGVjdGVkQ2xhc3MubmFtZSB8fCBBTk9OWU1PVVM7XG4gICAgICAgIHZhciBhY3R1YWxDbGFzc05hbWUgPSBnZXRDbGFzc05hbWUocHJvcHNbcHJvcE5hbWVdKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgYWN0dWFsQ2xhc3NOYW1lICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdpbnN0YW5jZSBvZiBgJyArIGV4cGVjdGVkQ2xhc3NOYW1lICsgJ2AuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIoZXhwZWN0ZWRWYWx1ZXMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXhwZWN0ZWRWYWx1ZXMpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2YsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzKHByb3BWYWx1ZSwgZXhwZWN0ZWRWYWx1ZXNbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHZhbHVlc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkVmFsdWVzKTtcbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdmFsdWUgYCcgKyBwcm9wVmFsdWUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuJyk7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgaWYgKHByb3BWYWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgdmFyIGVycm9yID0gdHlwZUNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVVbmlvblR5cGVDaGVja2VyKGFycmF5T2ZUeXBlQ2hlY2tlcnMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlPZlR5cGVDaGVja2VycykpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcbiAgICAgICAgaWYgKGNoZWNrZXIocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBSZWFjdFByb3BUeXBlc1NlY3JldCkgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AuJykpO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlTm9kZUNoZWNrZXIoKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAoIWlzTm9kZShwcm9wc1twcm9wTmFtZV0pKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XG4gICAgICAgIGlmICghY2hlY2tlcikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlcnJvciA9IGNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzTm9kZShwcm9wVmFsdWUpIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiBwcm9wVmFsdWUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcmV0dXJuICFwcm9wVmFsdWU7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BWYWx1ZS5ldmVyeShpc05vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wVmFsdWUgPT09IG51bGwgfHwgaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKHByb3BWYWx1ZSk7XG4gICAgICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKHByb3BWYWx1ZSk7XG4gICAgICAgICAgdmFyIHN0ZXA7XG4gICAgICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IHByb3BWYWx1ZS5lbnRyaWVzKSB7XG4gICAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICAgIGlmICghaXNOb2RlKHN0ZXAudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxuICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xuICAgICAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTm9kZShlbnRyeVsxXSkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaXNTeW1ib2wocHJvcFR5cGUsIHByb3BWYWx1ZSkge1xuICAgIC8vIE5hdGl2ZSBTeW1ib2wuXG4gICAgaWYgKHByb3BUeXBlID09PSAnc3ltYm9sJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gMTkuNC4zLjUgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXSA9PT0gJ1N5bWJvbCdcbiAgICBpZiAocHJvcFZhbHVlWydAQHRvU3RyaW5nVGFnJ10gPT09ICdTeW1ib2wnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayBmb3Igbm9uLXNwZWMgY29tcGxpYW50IFN5bWJvbHMgd2hpY2ggYXJlIHBvbHlmaWxsZWQuXG4gICAgaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgcHJvcFZhbHVlIGluc3RhbmNlb2YgU3ltYm9sKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBFcXVpdmFsZW50IG9mIGB0eXBlb2ZgIGJ1dCB3aXRoIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGFycmF5IGFuZCByZWdleHAuXG4gIGZ1bmN0aW9uIGdldFByb3BUeXBlKHByb3BWYWx1ZSkge1xuICAgIHZhciBwcm9wVHlwZSA9IHR5cGVvZiBwcm9wVmFsdWU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgcmV0dXJuICdhcnJheSc7XG4gICAgfVxuICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIC8vIE9sZCB3ZWJraXRzIChhdCBsZWFzdCB1bnRpbCBBbmRyb2lkIDQuMCkgcmV0dXJuICdmdW5jdGlvbicgcmF0aGVyIHRoYW5cbiAgICAgIC8vICdvYmplY3QnIGZvciB0eXBlb2YgYSBSZWdFeHAuIFdlJ2xsIG5vcm1hbGl6ZSB0aGlzIGhlcmUgc28gdGhhdCAvYmxhL1xuICAgICAgLy8gcGFzc2VzIFByb3BUeXBlcy5vYmplY3QuXG4gICAgICByZXR1cm4gJ29iamVjdCc7XG4gICAgfVxuICAgIGlmIChpc1N5bWJvbChwcm9wVHlwZSwgcHJvcFZhbHVlKSkge1xuICAgICAgcmV0dXJuICdzeW1ib2wnO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcFR5cGU7XG4gIH1cblxuICAvLyBUaGlzIGhhbmRsZXMgbW9yZSB0eXBlcyB0aGFuIGBnZXRQcm9wVHlwZWAuIE9ubHkgdXNlZCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gIC8vIFNlZSBgY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXJgLlxuICBmdW5jdGlvbiBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpIHtcbiAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgIGlmIChwcm9wVHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgICB9IGVsc2UgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICByZXR1cm4gJ3JlZ2V4cCc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxuXG4gIC8vIFJldHVybnMgY2xhc3MgbmFtZSBvZiB0aGUgb2JqZWN0LCBpZiBhbnkuXG4gIGZ1bmN0aW9uIGdldENsYXNzTmFtZShwcm9wVmFsdWUpIHtcbiAgICBpZiAoIXByb3BWYWx1ZS5jb25zdHJ1Y3RvciB8fCAhcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpIHtcbiAgICAgIHJldHVybiBBTk9OWU1PVVM7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZTtcbiAgfVxuXG4gIFJlYWN0UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gY2hlY2tQcm9wVHlwZXM7XG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc1xuLy8gbW9kdWxlIGlkID0gMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG5mdW5jdGlvbiBtYWtlRW1wdHlGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gYXJnO1xuICB9O1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhbmQgZGlzY2FyZHMgaW5wdXRzOyBpdCBoYXMgbm8gc2lkZSBlZmZlY3RzLiBUaGlzIGlzXG4gKiBwcmltYXJpbHkgdXNlZnVsIGlkaW9tYXRpY2FsbHkgZm9yIG92ZXJyaWRhYmxlIGZ1bmN0aW9uIGVuZHBvaW50cyB3aGljaFxuICogYWx3YXlzIG5lZWQgdG8gYmUgY2FsbGFibGUsIHNpbmNlIEpTIGxhY2tzIGEgbnVsbC1jYWxsIGlkaW9tIGFsYSBDb2NvYS5cbiAqL1xudmFyIGVtcHR5RnVuY3Rpb24gPSBmdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge307XG5cbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnMgPSBtYWtlRW1wdHlGdW5jdGlvbjtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSA9IG1ha2VFbXB0eUZ1bmN0aW9uKGZhbHNlKTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlID0gbWFrZUVtcHR5RnVuY3Rpb24odHJ1ZSk7XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCA9IG1ha2VFbXB0eUZ1bmN0aW9uKG51bGwpO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RoaXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzO1xufTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgcmV0dXJuIGFyZztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZW1wdHlGdW5jdGlvbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vZmJqcy9saWIvZW1wdHlGdW5jdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuICpcbiAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG4gKiB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmVcbiAqIGV4cGVjdGluZy5cbiAqXG4gKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuICogd2lsbCByZW1haW4gdG8gZW5zdXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuICovXG5cbnZhciB2YWxpZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCkge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBpbnZhcmlhbnQoY29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFsaWRhdGVGb3JtYXQoZm9ybWF0KTtcblxuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIHZhciBlcnJvcjtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKCdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCAnICsgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhcmdzID0gW2EsIGIsIGMsIGQsIGUsIGZdO1xuICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgICAgfSkpO1xuICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5cbiAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2ZianMvbGliL2ludmFyaWFudC5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCcuL2VtcHR5RnVuY3Rpb24nKTtcblxuLyoqXG4gKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXG4gKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZVxuICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG4gKi9cblxudmFyIHdhcm5pbmcgPSBlbXB0eUZ1bmN0aW9uO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiBwcmludFdhcm5pbmcoZm9ybWF0KSB7XG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICB9KTtcbiAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2FybmluZyB0byBmaXJlLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICB9IGNhdGNoICh4KSB7fVxuICAgIH07XG5cbiAgICB3YXJuaW5nID0gZnVuY3Rpb24gd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCkge1xuICAgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgJyArICdtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtYXQuaW5kZXhPZignRmFpbGVkIENvbXBvc2l0ZSBwcm9wVHlwZTogJykgPT09IDApIHtcbiAgICAgICAgcmV0dXJuOyAvLyBJZ25vcmUgQ29tcG9zaXRlQ29tcG9uZW50IHByb3B0eXBlIGNoZWNrLlxuICAgICAgfVxuXG4gICAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMiA+IDIgPyBfbGVuMiAtIDIgOiAwKSwgX2tleTIgPSAyOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgICAgYXJnc1tfa2V5MiAtIDJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50V2FybmluZy5hcHBseSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNhdChhcmdzKSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSkoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3YXJuaW5nO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9mYmpzL2xpYi93YXJuaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuICB2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbiAgdmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbiAgdmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy5cbiAqIEVycm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwicHJvcFwiLCBcImNvbnRleHRcIiwgXCJjaGlsZCBjb250ZXh0XCJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gez9GdW5jdGlvbn0gZ2V0U3RhY2sgUmV0dXJucyB0aGUgY29tcG9uZW50IHN0YWNrLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBnZXRTdGFjaykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHtcbiAgICAgIGlmICh0eXBlU3BlY3MuaGFzT3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3I7XG4gICAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICBpbnZhcmlhbnQodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdID09PSAnZnVuY3Rpb24nLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICsgJ1JlYWN0LlByb3BUeXBlcy4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3BlY05hbWUpO1xuICAgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IgPSBleDtcbiAgICAgICAgfVxuICAgICAgICB3YXJuaW5nKCFlcnJvciB8fCBlcnJvciBpbnN0YW5jZW9mIEVycm9yLCAnJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcyBgJXNgIGlzIGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArICdzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3IpO1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblxuICAgICAgICAgIHZhciBzdGFjayA9IGdldFN0YWNrID8gZ2V0U3RhY2soKSA6ICcnO1xuXG4gICAgICAgICAgd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCAlcyB0eXBlOiAlcyVzJywgbG9jYXRpb24sIGVycm9yLm1lc3NhZ2UsIHN0YWNrICE9IG51bGwgPyBzdGFjayA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNoZWNrUHJvcFR5cGVzO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Byb3AtdHlwZXMvY2hlY2tQcm9wVHlwZXMuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIGZ1bmN0aW9uIHNoaW0oKSB7XG4gICAgaW52YXJpYW50KFxuICAgICAgZmFsc2UsXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbVxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gZW1wdHlGdW5jdGlvbjtcbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qc1xuLy8gbW9kdWxlIGlkID0gMjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX21hcFRvWmVybyA9IHJlcXVpcmUoJy4vbWFwVG9aZXJvJyk7XG5cbnZhciBfbWFwVG9aZXJvMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21hcFRvWmVybyk7XG5cbnZhciBfc3RyaXBTdHlsZSA9IHJlcXVpcmUoJy4vc3RyaXBTdHlsZScpO1xuXG52YXIgX3N0cmlwU3R5bGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RyaXBTdHlsZSk7XG5cbnZhciBfc3RlcHBlcjMgPSByZXF1aXJlKCcuL3N0ZXBwZXInKTtcblxudmFyIF9zdGVwcGVyNCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0ZXBwZXIzKTtcblxudmFyIF9wZXJmb3JtYW5jZU5vdyA9IHJlcXVpcmUoJ3BlcmZvcm1hbmNlLW5vdycpO1xuXG52YXIgX3BlcmZvcm1hbmNlTm93MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BlcmZvcm1hbmNlTm93KTtcblxudmFyIF9yYWYgPSByZXF1aXJlKCdyYWYnKTtcblxudmFyIF9yYWYyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmFmKTtcblxudmFyIF9zaG91bGRTdG9wQW5pbWF0aW9uID0gcmVxdWlyZSgnLi9zaG91bGRTdG9wQW5pbWF0aW9uJyk7XG5cbnZhciBfc2hvdWxkU3RvcEFuaW1hdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zaG91bGRTdG9wQW5pbWF0aW9uKTtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgX3Byb3BUeXBlcyA9IHJlcXVpcmUoJ3Byb3AtdHlwZXMnKTtcblxudmFyIF9wcm9wVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvcFR5cGVzKTtcblxudmFyIG1zUGVyRnJhbWUgPSAxMDAwIC8gNjA7XG5cbmZ1bmN0aW9uIHNob3VsZFN0b3BBbmltYXRpb25BbGwoY3VycmVudFN0eWxlcywgc3R5bGVzLCBjdXJyZW50VmVsb2NpdGllcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGN1cnJlbnRTdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIV9zaG91bGRTdG9wQW5pbWF0aW9uMlsnZGVmYXVsdCddKGN1cnJlbnRTdHlsZXNbaV0sIHN0eWxlc1tpXSwgY3VycmVudFZlbG9jaXRpZXNbaV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG52YXIgU3RhZ2dlcmVkTW90aW9uID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTdGFnZ2VyZWRNb3Rpb24sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIF9jcmVhdGVDbGFzcyhTdGFnZ2VyZWRNb3Rpb24sIG51bGwsIFt7XG4gICAga2V5OiAncHJvcFR5cGVzJyxcbiAgICB2YWx1ZToge1xuICAgICAgLy8gVE9PRDogd2FybiBhZ2FpbnN0IHB1dHRpbmcgYSBjb25maWcgaW4gaGVyZVxuICAgICAgZGVmYXVsdFN0eWxlczogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5hcnJheU9mKF9wcm9wVHlwZXMyWydkZWZhdWx0J10ub2JqZWN0T2YoX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5udW1iZXIpKSxcbiAgICAgIHN0eWxlczogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBjaGlsZHJlbjogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5mdW5jLmlzUmVxdWlyZWRcbiAgICB9LFxuICAgIGVudW1lcmFibGU6IHRydWVcbiAgfV0pO1xuXG4gIGZ1bmN0aW9uIFN0YWdnZXJlZE1vdGlvbihwcm9wcykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RhZ2dlcmVkTW90aW9uKTtcblxuICAgIF9SZWFjdCRDb21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcyk7XG4gICAgdGhpcy5hbmltYXRpb25JRCA9IG51bGw7XG4gICAgdGhpcy5wcmV2VGltZSA9IDA7XG4gICAgdGhpcy5hY2N1bXVsYXRlZFRpbWUgPSAwO1xuICAgIHRoaXMudW5yZWFkUHJvcFN0eWxlcyA9IG51bGw7XG5cbiAgICB0aGlzLmNsZWFyVW5yZWFkUHJvcFN0eWxlID0gZnVuY3Rpb24gKHVucmVhZFByb3BTdHlsZXMpIHtcbiAgICAgIHZhciBfc3RhdGUgPSBfdGhpcy5zdGF0ZTtcbiAgICAgIHZhciBjdXJyZW50U3R5bGVzID0gX3N0YXRlLmN1cnJlbnRTdHlsZXM7XG4gICAgICB2YXIgY3VycmVudFZlbG9jaXRpZXMgPSBfc3RhdGUuY3VycmVudFZlbG9jaXRpZXM7XG4gICAgICB2YXIgbGFzdElkZWFsU3R5bGVzID0gX3N0YXRlLmxhc3RJZGVhbFN0eWxlcztcbiAgICAgIHZhciBsYXN0SWRlYWxWZWxvY2l0aWVzID0gX3N0YXRlLmxhc3RJZGVhbFZlbG9jaXRpZXM7XG5cbiAgICAgIHZhciBzb21lRGlydHkgPSBmYWxzZTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5yZWFkUHJvcFN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdW5yZWFkUHJvcFN0eWxlID0gdW5yZWFkUHJvcFN0eWxlc1tpXTtcbiAgICAgICAgdmFyIGRpcnR5ID0gZmFsc2U7XG5cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHVucmVhZFByb3BTdHlsZSkge1xuICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVucmVhZFByb3BTdHlsZSwga2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHN0eWxlVmFsdWUgPSB1bnJlYWRQcm9wU3R5bGVba2V5XTtcbiAgICAgICAgICBpZiAodHlwZW9mIHN0eWxlVmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBpZiAoIWRpcnR5KSB7XG4gICAgICAgICAgICAgIGRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgc29tZURpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY3VycmVudFN0eWxlc1tpXSA9IF9leHRlbmRzKHt9LCBjdXJyZW50U3R5bGVzW2ldKTtcbiAgICAgICAgICAgICAgY3VycmVudFZlbG9jaXRpZXNbaV0gPSBfZXh0ZW5kcyh7fSwgY3VycmVudFZlbG9jaXRpZXNbaV0pO1xuICAgICAgICAgICAgICBsYXN0SWRlYWxTdHlsZXNbaV0gPSBfZXh0ZW5kcyh7fSwgbGFzdElkZWFsU3R5bGVzW2ldKTtcbiAgICAgICAgICAgICAgbGFzdElkZWFsVmVsb2NpdGllc1tpXSA9IF9leHRlbmRzKHt9LCBsYXN0SWRlYWxWZWxvY2l0aWVzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRTdHlsZXNbaV1ba2V5XSA9IHN0eWxlVmFsdWU7XG4gICAgICAgICAgICBjdXJyZW50VmVsb2NpdGllc1tpXVtrZXldID0gMDtcbiAgICAgICAgICAgIGxhc3RJZGVhbFN0eWxlc1tpXVtrZXldID0gc3R5bGVWYWx1ZTtcbiAgICAgICAgICAgIGxhc3RJZGVhbFZlbG9jaXRpZXNbaV1ba2V5XSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzb21lRGlydHkpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBjdXJyZW50U3R5bGVzOiBjdXJyZW50U3R5bGVzLCBjdXJyZW50VmVsb2NpdGllczogY3VycmVudFZlbG9jaXRpZXMsIGxhc3RJZGVhbFN0eWxlczogbGFzdElkZWFsU3R5bGVzLCBsYXN0SWRlYWxWZWxvY2l0aWVzOiBsYXN0SWRlYWxWZWxvY2l0aWVzIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uSWZOZWNlc3NhcnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBUT0RPOiB3aGVuIGNvbmZpZyBpcyB7YTogMTB9IGFuZCBkZXN0IGlzIHthOiAxMH0gZG8gd2UgcmFmIG9uY2UgYW5kXG4gICAgICAvLyBjYWxsIGNiPyBObywgb3RoZXJ3aXNlIGFjY2lkZW50YWwgcGFyZW50IHJlcmVuZGVyIGNhdXNlcyBjYiB0cmlnZ2VyXG4gICAgICBfdGhpcy5hbmltYXRpb25JRCA9IF9yYWYyWydkZWZhdWx0J10oZnVuY3Rpb24gKHRpbWVzdGFtcCkge1xuICAgICAgICB2YXIgZGVzdFN0eWxlcyA9IF90aGlzLnByb3BzLnN0eWxlcyhfdGhpcy5zdGF0ZS5sYXN0SWRlYWxTdHlsZXMpO1xuXG4gICAgICAgIC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gYW5pbWF0ZSBpbiB0aGUgZmlyc3QgcGxhY2VcbiAgICAgICAgaWYgKHNob3VsZFN0b3BBbmltYXRpb25BbGwoX3RoaXMuc3RhdGUuY3VycmVudFN0eWxlcywgZGVzdFN0eWxlcywgX3RoaXMuc3RhdGUuY3VycmVudFZlbG9jaXRpZXMpKSB7XG4gICAgICAgICAgLy8gbm8gbmVlZCB0byBjYW5jZWwgYW5pbWF0aW9uSUQgaGVyZTsgc2hvdWxkbid0IGhhdmUgYW55IGluIGZsaWdodFxuICAgICAgICAgIF90aGlzLmFuaW1hdGlvbklEID0gbnVsbDtcbiAgICAgICAgICBfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPSAwO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXJyZW50VGltZSA9IHRpbWVzdGFtcCB8fCBfcGVyZm9ybWFuY2VOb3cyWydkZWZhdWx0J10oKTtcbiAgICAgICAgdmFyIHRpbWVEZWx0YSA9IGN1cnJlbnRUaW1lIC0gX3RoaXMucHJldlRpbWU7XG4gICAgICAgIF90aGlzLnByZXZUaW1lID0gY3VycmVudFRpbWU7XG4gICAgICAgIF90aGlzLmFjY3VtdWxhdGVkVGltZSA9IF90aGlzLmFjY3VtdWxhdGVkVGltZSArIHRpbWVEZWx0YTtcbiAgICAgICAgLy8gbW9yZSB0aGFuIDEwIGZyYW1lcz8gcHJvbGx5IHN3aXRjaGVkIGJyb3dzZXIgdGFiLiBSZXN0YXJ0XG4gICAgICAgIGlmIChfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPiBtc1BlckZyYW1lICogMTApIHtcbiAgICAgICAgICBfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF90aGlzLmFjY3VtdWxhdGVkVGltZSA9PT0gMCkge1xuICAgICAgICAgIC8vIG5vIG5lZWQgdG8gY2FuY2VsIGFuaW1hdGlvbklEIGhlcmU7IHNob3VsZG4ndCBoYXZlIGFueSBpbiBmbGlnaHRcbiAgICAgICAgICBfdGhpcy5hbmltYXRpb25JRCA9IG51bGw7XG4gICAgICAgICAgX3RoaXMuc3RhcnRBbmltYXRpb25JZk5lY2Vzc2FyeSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXJyZW50RnJhbWVDb21wbGV0aW9uID0gKF90aGlzLmFjY3VtdWxhdGVkVGltZSAtIE1hdGguZmxvb3IoX3RoaXMuYWNjdW11bGF0ZWRUaW1lIC8gbXNQZXJGcmFtZSkgKiBtc1BlckZyYW1lKSAvIG1zUGVyRnJhbWU7XG4gICAgICAgIHZhciBmcmFtZXNUb0NhdGNoVXAgPSBNYXRoLmZsb29yKF90aGlzLmFjY3VtdWxhdGVkVGltZSAvIG1zUGVyRnJhbWUpO1xuXG4gICAgICAgIHZhciBuZXdMYXN0SWRlYWxTdHlsZXMgPSBbXTtcbiAgICAgICAgdmFyIG5ld0xhc3RJZGVhbFZlbG9jaXRpZXMgPSBbXTtcbiAgICAgICAgdmFyIG5ld0N1cnJlbnRTdHlsZXMgPSBbXTtcbiAgICAgICAgdmFyIG5ld0N1cnJlbnRWZWxvY2l0aWVzID0gW107XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXN0U3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGRlc3RTdHlsZSA9IGRlc3RTdHlsZXNbaV07XG4gICAgICAgICAgdmFyIG5ld0N1cnJlbnRTdHlsZSA9IHt9O1xuICAgICAgICAgIHZhciBuZXdDdXJyZW50VmVsb2NpdHkgPSB7fTtcbiAgICAgICAgICB2YXIgbmV3TGFzdElkZWFsU3R5bGUgPSB7fTtcbiAgICAgICAgICB2YXIgbmV3TGFzdElkZWFsVmVsb2NpdHkgPSB7fTtcblxuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkZXN0U3R5bGUpIHtcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRlc3RTdHlsZSwga2V5KSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHN0eWxlVmFsdWUgPSBkZXN0U3R5bGVba2V5XTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3R5bGVWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgbmV3Q3VycmVudFN0eWxlW2tleV0gPSBzdHlsZVZhbHVlO1xuICAgICAgICAgICAgICBuZXdDdXJyZW50VmVsb2NpdHlba2V5XSA9IDA7XG4gICAgICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlW2tleV0gPSBzdHlsZVZhbHVlO1xuICAgICAgICAgICAgICBuZXdMYXN0SWRlYWxWZWxvY2l0eVtrZXldID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHZhciBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlID0gX3RoaXMuc3RhdGUubGFzdElkZWFsU3R5bGVzW2ldW2tleV07XG4gICAgICAgICAgICAgIHZhciBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlID0gX3RoaXMuc3RhdGUubGFzdElkZWFsVmVsb2NpdGllc1tpXVtrZXldO1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGZyYW1lc1RvQ2F0Y2hVcDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9zdGVwcGVyID0gX3N0ZXBwZXI0WydkZWZhdWx0J10obXNQZXJGcmFtZSAvIDEwMDAsIG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUsIG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUsIHN0eWxlVmFsdWUudmFsLCBzdHlsZVZhbHVlLnN0aWZmbmVzcywgc3R5bGVWYWx1ZS5kYW1waW5nLCBzdHlsZVZhbHVlLnByZWNpc2lvbik7XG5cbiAgICAgICAgICAgICAgICBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlID0gX3N0ZXBwZXJbMF07XG4gICAgICAgICAgICAgICAgbmV3TGFzdElkZWFsVmVsb2NpdHlWYWx1ZSA9IF9zdGVwcGVyWzFdO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdmFyIF9zdGVwcGVyMiA9IF9zdGVwcGVyNFsnZGVmYXVsdCddKG1zUGVyRnJhbWUgLyAxMDAwLCBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlLCBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlLCBzdHlsZVZhbHVlLnZhbCwgc3R5bGVWYWx1ZS5zdGlmZm5lc3MsIHN0eWxlVmFsdWUuZGFtcGluZywgc3R5bGVWYWx1ZS5wcmVjaXNpb24pO1xuXG4gICAgICAgICAgICAgIHZhciBuZXh0SWRlYWxYID0gX3N0ZXBwZXIyWzBdO1xuICAgICAgICAgICAgICB2YXIgbmV4dElkZWFsViA9IF9zdGVwcGVyMlsxXTtcblxuICAgICAgICAgICAgICBuZXdDdXJyZW50U3R5bGVba2V5XSA9IG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUgKyAobmV4dElkZWFsWCAtIG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUpICogY3VycmVudEZyYW1lQ29tcGxldGlvbjtcbiAgICAgICAgICAgICAgbmV3Q3VycmVudFZlbG9jaXR5W2tleV0gPSBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlICsgKG5leHRJZGVhbFYgLSBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlKSAqIGN1cnJlbnRGcmFtZUNvbXBsZXRpb247XG4gICAgICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlW2tleV0gPSBuZXdMYXN0SWRlYWxTdHlsZVZhbHVlO1xuICAgICAgICAgICAgICBuZXdMYXN0SWRlYWxWZWxvY2l0eVtrZXldID0gbmV3TGFzdElkZWFsVmVsb2NpdHlWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXdDdXJyZW50U3R5bGVzW2ldID0gbmV3Q3VycmVudFN0eWxlO1xuICAgICAgICAgIG5ld0N1cnJlbnRWZWxvY2l0aWVzW2ldID0gbmV3Q3VycmVudFZlbG9jaXR5O1xuICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlc1tpXSA9IG5ld0xhc3RJZGVhbFN0eWxlO1xuICAgICAgICAgIG5ld0xhc3RJZGVhbFZlbG9jaXRpZXNbaV0gPSBuZXdMYXN0SWRlYWxWZWxvY2l0eTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLmFuaW1hdGlvbklEID0gbnVsbDtcbiAgICAgICAgLy8gdGhlIGFtb3VudCB3ZSdyZSBsb29wZWQgb3ZlciBhYm92ZVxuICAgICAgICBfdGhpcy5hY2N1bXVsYXRlZFRpbWUgLT0gZnJhbWVzVG9DYXRjaFVwICogbXNQZXJGcmFtZTtcblxuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgY3VycmVudFN0eWxlczogbmV3Q3VycmVudFN0eWxlcyxcbiAgICAgICAgICBjdXJyZW50VmVsb2NpdGllczogbmV3Q3VycmVudFZlbG9jaXRpZXMsXG4gICAgICAgICAgbGFzdElkZWFsU3R5bGVzOiBuZXdMYXN0SWRlYWxTdHlsZXMsXG4gICAgICAgICAgbGFzdElkZWFsVmVsb2NpdGllczogbmV3TGFzdElkZWFsVmVsb2NpdGllc1xuICAgICAgICB9KTtcblxuICAgICAgICBfdGhpcy51bnJlYWRQcm9wU3R5bGVzID0gbnVsbDtcblxuICAgICAgICBfdGhpcy5zdGFydEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFN0YXRlKCk7XG4gIH1cblxuICBTdGFnZ2VyZWRNb3Rpb24ucHJvdG90eXBlLmRlZmF1bHRTdGF0ZSA9IGZ1bmN0aW9uIGRlZmF1bHRTdGF0ZSgpIHtcbiAgICB2YXIgX3Byb3BzID0gdGhpcy5wcm9wcztcbiAgICB2YXIgZGVmYXVsdFN0eWxlcyA9IF9wcm9wcy5kZWZhdWx0U3R5bGVzO1xuICAgIHZhciBzdHlsZXMgPSBfcHJvcHMuc3R5bGVzO1xuXG4gICAgdmFyIGN1cnJlbnRTdHlsZXMgPSBkZWZhdWx0U3R5bGVzIHx8IHN0eWxlcygpLm1hcChfc3RyaXBTdHlsZTJbJ2RlZmF1bHQnXSk7XG4gICAgdmFyIGN1cnJlbnRWZWxvY2l0aWVzID0gY3VycmVudFN0eWxlcy5tYXAoZnVuY3Rpb24gKGN1cnJlbnRTdHlsZSkge1xuICAgICAgcmV0dXJuIF9tYXBUb1plcm8yWydkZWZhdWx0J10oY3VycmVudFN0eWxlKTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudFN0eWxlczogY3VycmVudFN0eWxlcyxcbiAgICAgIGN1cnJlbnRWZWxvY2l0aWVzOiBjdXJyZW50VmVsb2NpdGllcyxcbiAgICAgIGxhc3RJZGVhbFN0eWxlczogY3VycmVudFN0eWxlcyxcbiAgICAgIGxhc3RJZGVhbFZlbG9jaXRpZXM6IGN1cnJlbnRWZWxvY2l0aWVzXG4gICAgfTtcbiAgfTtcblxuICBTdGFnZ2VyZWRNb3Rpb24ucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5wcmV2VGltZSA9IF9wZXJmb3JtYW5jZU5vdzJbJ2RlZmF1bHQnXSgpO1xuICAgIHRoaXMuc3RhcnRBbmltYXRpb25JZk5lY2Vzc2FyeSgpO1xuICB9O1xuXG4gIFN0YWdnZXJlZE1vdGlvbi5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMocHJvcHMpIHtcbiAgICBpZiAodGhpcy51bnJlYWRQcm9wU3R5bGVzICE9IG51bGwpIHtcbiAgICAgIC8vIHByZXZpb3VzIHByb3BzIGhhdmVuJ3QgaGFkIHRoZSBjaGFuY2UgdG8gYmUgc2V0IHlldDsgc2V0IHRoZW0gaGVyZVxuICAgICAgdGhpcy5jbGVhclVucmVhZFByb3BTdHlsZSh0aGlzLnVucmVhZFByb3BTdHlsZXMpO1xuICAgIH1cblxuICAgIHRoaXMudW5yZWFkUHJvcFN0eWxlcyA9IHByb3BzLnN0eWxlcyh0aGlzLnN0YXRlLmxhc3RJZGVhbFN0eWxlcyk7XG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uSUQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5wcmV2VGltZSA9IF9wZXJmb3JtYW5jZU5vdzJbJ2RlZmF1bHQnXSgpO1xuICAgICAgdGhpcy5zdGFydEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7XG4gICAgfVxuICB9O1xuXG4gIFN0YWdnZXJlZE1vdGlvbi5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBpZiAodGhpcy5hbmltYXRpb25JRCAhPSBudWxsKSB7XG4gICAgICBfcmFmMlsnZGVmYXVsdCddLmNhbmNlbCh0aGlzLmFuaW1hdGlvbklEKTtcbiAgICAgIHRoaXMuYW5pbWF0aW9uSUQgPSBudWxsO1xuICAgIH1cbiAgfTtcblxuICBTdGFnZ2VyZWRNb3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICB2YXIgcmVuZGVyZWRDaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW4odGhpcy5zdGF0ZS5jdXJyZW50U3R5bGVzKTtcbiAgICByZXR1cm4gcmVuZGVyZWRDaGlsZHJlbiAmJiBfcmVhY3QyWydkZWZhdWx0J10uQ2hpbGRyZW4ub25seShyZW5kZXJlZENoaWxkcmVuKTtcbiAgfTtcblxuICByZXR1cm4gU3RhZ2dlcmVkTW90aW9uO1xufSkoX3JlYWN0MlsnZGVmYXVsdCddLkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFN0YWdnZXJlZE1vdGlvbjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vLyBpdCdzIHBvc3NpYmxlIHRoYXQgY3VycmVudFN0eWxlJ3MgdmFsdWUgaXMgc3RhbGU6IGlmIHByb3BzIGlzIGltbWVkaWF0ZWx5XG4vLyBjaGFuZ2VkIGZyb20gMCB0byA0MDAgdG8gc3ByaW5nKDApIGFnYWluLCB0aGUgYXN5bmMgY3VycmVudFN0eWxlIGlzIHN0aWxsXG4vLyBhdCAwIChkaWRuJ3QgaGF2ZSB0aW1lIHRvIHRpY2sgYW5kIGludGVycG9sYXRlIGV2ZW4gb25jZSkuIElmIHdlIG5haXZlbHlcbi8vIGNvbXBhcmUgY3VycmVudFN0eWxlIHdpdGggZGVzdFZhbCBpdCdsbCBiZSAwID09PSAwIChubyBhbmltYXRpb24sIHN0b3ApLlxuLy8gSW4gcmVhbGl0eSBjdXJyZW50U3R5bGUgc2hvdWxkIGJlIDQwMFxuXG4vLyBhZnRlciBjaGVja2luZyBmb3IgdW5yZWFkUHJvcFN0eWxlcyAhPSBudWxsLCB3ZSBtYW51YWxseSBnbyBzZXQgdGhlXG4vLyBub24taW50ZXJwb2xhdGluZyB2YWx1ZXMgKHRob3NlIHRoYXQgYXJlIGEgbnVtYmVyLCB3aXRob3V0IGEgc3ByaW5nXG4vLyBjb25maWcpXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0LW1vdGlvbi9saWIvU3RhZ2dlcmVkTW90aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfbWFwVG9aZXJvID0gcmVxdWlyZSgnLi9tYXBUb1plcm8nKTtcblxudmFyIF9tYXBUb1plcm8yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWFwVG9aZXJvKTtcblxudmFyIF9zdHJpcFN0eWxlID0gcmVxdWlyZSgnLi9zdHJpcFN0eWxlJyk7XG5cbnZhciBfc3RyaXBTdHlsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdHJpcFN0eWxlKTtcblxudmFyIF9zdGVwcGVyMyA9IHJlcXVpcmUoJy4vc3RlcHBlcicpO1xuXG52YXIgX3N0ZXBwZXI0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RlcHBlcjMpO1xuXG52YXIgX21lcmdlRGlmZiA9IHJlcXVpcmUoJy4vbWVyZ2VEaWZmJyk7XG5cbnZhciBfbWVyZ2VEaWZmMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21lcmdlRGlmZik7XG5cbnZhciBfcGVyZm9ybWFuY2VOb3cgPSByZXF1aXJlKCdwZXJmb3JtYW5jZS1ub3cnKTtcblxudmFyIF9wZXJmb3JtYW5jZU5vdzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wZXJmb3JtYW5jZU5vdyk7XG5cbnZhciBfcmFmID0gcmVxdWlyZSgncmFmJyk7XG5cbnZhciBfcmFmMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JhZik7XG5cbnZhciBfc2hvdWxkU3RvcEFuaW1hdGlvbiA9IHJlcXVpcmUoJy4vc2hvdWxkU3RvcEFuaW1hdGlvbicpO1xuXG52YXIgX3Nob3VsZFN0b3BBbmltYXRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2hvdWxkU3RvcEFuaW1hdGlvbik7XG5cbnZhciBfcmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG52YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0KTtcblxudmFyIF9wcm9wVHlwZXMgPSByZXF1aXJlKCdwcm9wLXR5cGVzJyk7XG5cbnZhciBfcHJvcFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Byb3BUeXBlcyk7XG5cbnZhciBtc1BlckZyYW1lID0gMTAwMCAvIDYwO1xuXG4vLyB0aGUgY2hpbGRyZW4gZnVuY3Rpb24gJiAocG90ZW50aWFsKSBzdHlsZXMgZnVuY3Rpb24gYXNrcyBhcyBwYXJhbSBhblxuLy8gQXJyYXk8VHJhbnNpdGlvblBsYWluU3R5bGU+LCB3aGVyZSBlYWNoIFRyYW5zaXRpb25QbGFpblN0eWxlIGlzIG9mIHRoZSBmb3JtYXRcbi8vIHtrZXk6IHN0cmluZywgZGF0YT86IGFueSwgc3R5bGU6IFBsYWluU3R5bGV9LiBIb3dldmVyLCB0aGUgd2F5IHdlIGtlZXBcbi8vIGludGVybmFsIHN0YXRlcyBkb2Vzbid0IGNvbnRhaW4gc3VjaCBhIGRhdGEgc3RydWN0dXJlIChjaGVjayB0aGUgc3RhdGUgYW5kXG4vLyBUcmFuc2l0aW9uTW90aW9uU3RhdGUpLiBTbyB3aGVuIGNoaWxkcmVuIGZ1bmN0aW9uIGFuZCBvdGhlcnMgYXNrIGZvciBzdWNoXG4vLyBkYXRhIHdlIG5lZWQgdG8gZ2VuZXJhdGUgdGhlbSBvbiB0aGUgZmx5IGJ5IGNvbWJpbmluZyBtZXJnZWRQcm9wc1N0eWxlcyBhbmRcbi8vIGN1cnJlbnRTdHlsZXMvbGFzdElkZWFsU3R5bGVzXG5mdW5jdGlvbiByZWh5ZHJhdGVTdHlsZXMobWVyZ2VkUHJvcHNTdHlsZXMsIHVucmVhZFByb3BTdHlsZXMsIHBsYWluU3R5bGVzKSB7XG4gIC8vIENvcHkgdGhlIHZhbHVlIHRvIGEgYGNvbnN0YCBzbyB0aGF0IEZsb3cgdW5kZXJzdGFuZHMgdGhhdCB0aGUgY29uc3Qgd29uJ3RcbiAgLy8gY2hhbmdlIGFuZCB3aWxsIGJlIG5vbi1udWxsYWJsZSBpbiB0aGUgY2FsbGJhY2sgYmVsb3cuXG4gIHZhciBjVW5yZWFkUHJvcFN0eWxlcyA9IHVucmVhZFByb3BTdHlsZXM7XG4gIGlmIChjVW5yZWFkUHJvcFN0eWxlcyA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG1lcmdlZFByb3BzU3R5bGVzLm1hcChmdW5jdGlvbiAobWVyZ2VkUHJvcHNTdHlsZSwgaSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBtZXJnZWRQcm9wc1N0eWxlLmtleSxcbiAgICAgICAgZGF0YTogbWVyZ2VkUHJvcHNTdHlsZS5kYXRhLFxuICAgICAgICBzdHlsZTogcGxhaW5TdHlsZXNbaV1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG1lcmdlZFByb3BzU3R5bGVzLm1hcChmdW5jdGlvbiAobWVyZ2VkUHJvcHNTdHlsZSwgaSkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgY1VucmVhZFByb3BTdHlsZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChjVW5yZWFkUHJvcFN0eWxlc1tqXS5rZXkgPT09IG1lcmdlZFByb3BzU3R5bGUua2V5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2V5OiBjVW5yZWFkUHJvcFN0eWxlc1tqXS5rZXksXG4gICAgICAgICAgZGF0YTogY1VucmVhZFByb3BTdHlsZXNbal0uZGF0YSxcbiAgICAgICAgICBzdHlsZTogcGxhaW5TdHlsZXNbaV1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsga2V5OiBtZXJnZWRQcm9wc1N0eWxlLmtleSwgZGF0YTogbWVyZ2VkUHJvcHNTdHlsZS5kYXRhLCBzdHlsZTogcGxhaW5TdHlsZXNbaV0gfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFN0b3BBbmltYXRpb25BbGwoY3VycmVudFN0eWxlcywgZGVzdFN0eWxlcywgY3VycmVudFZlbG9jaXRpZXMsIG1lcmdlZFByb3BzU3R5bGVzKSB7XG4gIGlmIChtZXJnZWRQcm9wc1N0eWxlcy5sZW5ndGggIT09IGRlc3RTdHlsZXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXJnZWRQcm9wc1N0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChtZXJnZWRQcm9wc1N0eWxlc1tpXS5rZXkgIT09IGRlc3RTdHlsZXNbaV0ua2V5KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gd2UgaGF2ZSB0aGUgaW52YXJpYW50IHRoYXQgbWVyZ2VkUHJvcHNTdHlsZXMgYW5kXG4gIC8vIGN1cnJlbnRTdHlsZXMvY3VycmVudFZlbG9jaXRpZXMvbGFzdCogYXJlIHN5bmNlZCBpbiB0ZXJtcyBvZiBjZWxscywgc2VlXG4gIC8vIG1lcmdlQW5kU3luYyBjb21tZW50IGZvciBtb3JlIGluZm9cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXJnZWRQcm9wc1N0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICghX3Nob3VsZFN0b3BBbmltYXRpb24yWydkZWZhdWx0J10oY3VycmVudFN0eWxlc1tpXSwgZGVzdFN0eWxlc1tpXS5zdHlsZSwgY3VycmVudFZlbG9jaXRpZXNbaV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8vIGNvcmUga2V5IG1lcmdpbmcgbG9naWNcblxuLy8gdGhpbmdzIHRvIGRvOiBzYXkgcHJldmlvdXNseSBtZXJnZWQgc3R5bGUgaXMge2EsIGJ9LCBkZXN0IHN0eWxlIChwcm9wKSBpcyB7Yixcbi8vIGN9LCBwcmV2aW91cyBjdXJyZW50IChpbnRlcnBvbGF0aW5nKSBzdHlsZSBpcyB7YSwgYn1cbi8vICoqaW52YXJpYW50Kio6IGN1cnJlbnRbaV0gY29ycmVzcG9uZHMgdG8gbWVyZ2VkW2ldIGluIHRlcm1zIG9mIGtleVxuXG4vLyBzdGVwczpcbi8vIHR1cm4gbWVyZ2VkIHN0eWxlIGludG8ge2E/LCBiLCBjfVxuLy8gICAgYWRkIGMsIHZhbHVlIG9mIGMgaXMgZGVzdFN0eWxlcy5jXG4vLyAgICBtYXliZSByZW1vdmUgYSwgYWthIGNhbGwgd2lsbExlYXZlKGEpLCB0aGVuIG1lcmdlZCBpcyBlaXRoZXIge2IsIGN9IG9yIHthLCBiLCBjfVxuLy8gdHVybiBjdXJyZW50IChpbnRlcnBvbGF0aW5nKSBzdHlsZSBmcm9tIHthLCBifSBpbnRvIHthPywgYiwgY31cbi8vICAgIG1heWJlIHJlbW92ZSBhXG4vLyAgICBjZXJ0YWlubHkgYWRkIGMsIHZhbHVlIG9mIGMgaXMgd2lsbEVudGVyKGMpXG4vLyBsb29wIG92ZXIgbWVyZ2VkIGFuZCBjb25zdHJ1Y3QgbmV3IGN1cnJlbnRcbi8vIGRlc3QgZG9lc24ndCBjaGFuZ2UsIHRoYXQncyBvd25lcidzXG5mdW5jdGlvbiBtZXJnZUFuZFN5bmMod2lsbEVudGVyLCB3aWxsTGVhdmUsIGRpZExlYXZlLCBvbGRNZXJnZWRQcm9wc1N0eWxlcywgZGVzdFN0eWxlcywgb2xkQ3VycmVudFN0eWxlcywgb2xkQ3VycmVudFZlbG9jaXRpZXMsIG9sZExhc3RJZGVhbFN0eWxlcywgb2xkTGFzdElkZWFsVmVsb2NpdGllcykge1xuICB2YXIgbmV3TWVyZ2VkUHJvcHNTdHlsZXMgPSBfbWVyZ2VEaWZmMlsnZGVmYXVsdCddKG9sZE1lcmdlZFByb3BzU3R5bGVzLCBkZXN0U3R5bGVzLCBmdW5jdGlvbiAob2xkSW5kZXgsIG9sZE1lcmdlZFByb3BzU3R5bGUpIHtcbiAgICB2YXIgbGVhdmluZ1N0eWxlID0gd2lsbExlYXZlKG9sZE1lcmdlZFByb3BzU3R5bGUpO1xuICAgIGlmIChsZWF2aW5nU3R5bGUgPT0gbnVsbCkge1xuICAgICAgZGlkTGVhdmUoeyBrZXk6IG9sZE1lcmdlZFByb3BzU3R5bGUua2V5LCBkYXRhOiBvbGRNZXJnZWRQcm9wc1N0eWxlLmRhdGEgfSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKF9zaG91bGRTdG9wQW5pbWF0aW9uMlsnZGVmYXVsdCddKG9sZEN1cnJlbnRTdHlsZXNbb2xkSW5kZXhdLCBsZWF2aW5nU3R5bGUsIG9sZEN1cnJlbnRWZWxvY2l0aWVzW29sZEluZGV4XSkpIHtcbiAgICAgIGRpZExlYXZlKHsga2V5OiBvbGRNZXJnZWRQcm9wc1N0eWxlLmtleSwgZGF0YTogb2xkTWVyZ2VkUHJvcHNTdHlsZS5kYXRhIH0pO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7IGtleTogb2xkTWVyZ2VkUHJvcHNTdHlsZS5rZXksIGRhdGE6IG9sZE1lcmdlZFByb3BzU3R5bGUuZGF0YSwgc3R5bGU6IGxlYXZpbmdTdHlsZSB9O1xuICB9KTtcblxuICB2YXIgbmV3Q3VycmVudFN0eWxlcyA9IFtdO1xuICB2YXIgbmV3Q3VycmVudFZlbG9jaXRpZXMgPSBbXTtcbiAgdmFyIG5ld0xhc3RJZGVhbFN0eWxlcyA9IFtdO1xuICB2YXIgbmV3TGFzdElkZWFsVmVsb2NpdGllcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld01lcmdlZFByb3BzU3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5ld01lcmdlZFByb3BzU3R5bGVDZWxsID0gbmV3TWVyZ2VkUHJvcHNTdHlsZXNbaV07XG4gICAgdmFyIGZvdW5kT2xkSW5kZXggPSBudWxsO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgb2xkTWVyZ2VkUHJvcHNTdHlsZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChvbGRNZXJnZWRQcm9wc1N0eWxlc1tqXS5rZXkgPT09IG5ld01lcmdlZFByb3BzU3R5bGVDZWxsLmtleSkge1xuICAgICAgICBmb3VuZE9sZEluZGV4ID0gajtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFRPRE86IGtleSBzZWFyY2ggY29kZVxuICAgIGlmIChmb3VuZE9sZEluZGV4ID09IG51bGwpIHtcbiAgICAgIHZhciBwbGFpblN0eWxlID0gd2lsbEVudGVyKG5ld01lcmdlZFByb3BzU3R5bGVDZWxsKTtcbiAgICAgIG5ld0N1cnJlbnRTdHlsZXNbaV0gPSBwbGFpblN0eWxlO1xuICAgICAgbmV3TGFzdElkZWFsU3R5bGVzW2ldID0gcGxhaW5TdHlsZTtcblxuICAgICAgdmFyIHZlbG9jaXR5ID0gX21hcFRvWmVybzJbJ2RlZmF1bHQnXShuZXdNZXJnZWRQcm9wc1N0eWxlQ2VsbC5zdHlsZSk7XG4gICAgICBuZXdDdXJyZW50VmVsb2NpdGllc1tpXSA9IHZlbG9jaXR5O1xuICAgICAgbmV3TGFzdElkZWFsVmVsb2NpdGllc1tpXSA9IHZlbG9jaXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdDdXJyZW50U3R5bGVzW2ldID0gb2xkQ3VycmVudFN0eWxlc1tmb3VuZE9sZEluZGV4XTtcbiAgICAgIG5ld0xhc3RJZGVhbFN0eWxlc1tpXSA9IG9sZExhc3RJZGVhbFN0eWxlc1tmb3VuZE9sZEluZGV4XTtcbiAgICAgIG5ld0N1cnJlbnRWZWxvY2l0aWVzW2ldID0gb2xkQ3VycmVudFZlbG9jaXRpZXNbZm91bmRPbGRJbmRleF07XG4gICAgICBuZXdMYXN0SWRlYWxWZWxvY2l0aWVzW2ldID0gb2xkTGFzdElkZWFsVmVsb2NpdGllc1tmb3VuZE9sZEluZGV4XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW25ld01lcmdlZFByb3BzU3R5bGVzLCBuZXdDdXJyZW50U3R5bGVzLCBuZXdDdXJyZW50VmVsb2NpdGllcywgbmV3TGFzdElkZWFsU3R5bGVzLCBuZXdMYXN0SWRlYWxWZWxvY2l0aWVzXTtcbn1cblxudmFyIFRyYW5zaXRpb25Nb3Rpb24gPSAoZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRyYW5zaXRpb25Nb3Rpb24sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIF9jcmVhdGVDbGFzcyhUcmFuc2l0aW9uTW90aW9uLCBudWxsLCBbe1xuICAgIGtleTogJ3Byb3BUeXBlcycsXG4gICAgdmFsdWU6IHtcbiAgICAgIGRlZmF1bHRTdHlsZXM6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10uYXJyYXlPZihfcHJvcFR5cGVzMlsnZGVmYXVsdCddLnNoYXBlKHtcbiAgICAgICAga2V5OiBfcHJvcFR5cGVzMlsnZGVmYXVsdCddLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICBkYXRhOiBfcHJvcFR5cGVzMlsnZGVmYXVsdCddLmFueSxcbiAgICAgICAgc3R5bGU6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10ub2JqZWN0T2YoX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5udW1iZXIpLmlzUmVxdWlyZWRcbiAgICAgIH0pKSxcbiAgICAgIHN0eWxlczogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5vbmVPZlR5cGUoW19wcm9wVHlwZXMyWydkZWZhdWx0J10uZnVuYywgX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5hcnJheU9mKF9wcm9wVHlwZXMyWydkZWZhdWx0J10uc2hhcGUoe1xuICAgICAgICBrZXk6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10uc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgIGRhdGE6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10uYW55LFxuICAgICAgICBzdHlsZTogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5vYmplY3RPZihfcHJvcFR5cGVzMlsnZGVmYXVsdCddLm9uZU9mVHlwZShbX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5udW1iZXIsIF9wcm9wVHlwZXMyWydkZWZhdWx0J10ub2JqZWN0XSkpLmlzUmVxdWlyZWRcbiAgICAgIH0pKV0pLmlzUmVxdWlyZWQsXG4gICAgICBjaGlsZHJlbjogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB3aWxsRW50ZXI6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10uZnVuYyxcbiAgICAgIHdpbGxMZWF2ZTogX3Byb3BUeXBlczJbJ2RlZmF1bHQnXS5mdW5jLFxuICAgICAgZGlkTGVhdmU6IF9wcm9wVHlwZXMyWydkZWZhdWx0J10uZnVuY1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9LCB7XG4gICAga2V5OiAnZGVmYXVsdFByb3BzJyxcbiAgICB2YWx1ZToge1xuICAgICAgd2lsbEVudGVyOiBmdW5jdGlvbiB3aWxsRW50ZXIoc3R5bGVUaGF0RW50ZXJlZCkge1xuICAgICAgICByZXR1cm4gX3N0cmlwU3R5bGUyWydkZWZhdWx0J10oc3R5bGVUaGF0RW50ZXJlZC5zdHlsZSk7XG4gICAgICB9LFxuICAgICAgLy8gcmVjYWxsOiByZXR1cm5pbmcgbnVsbCBtYWtlcyB0aGUgY3VycmVudCB1bm1vdW50aW5nIFRyYW5zaXRpb25TdHlsZVxuICAgICAgLy8gZGlzYXBwZWFyIGltbWVkaWF0ZWx5XG4gICAgICB3aWxsTGVhdmU6IGZ1bmN0aW9uIHdpbGxMZWF2ZSgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9LFxuICAgICAgZGlkTGVhdmU6IGZ1bmN0aW9uIGRpZExlYXZlKCkge31cbiAgICB9LFxuICAgIGVudW1lcmFibGU6IHRydWVcbiAgfV0pO1xuXG4gIGZ1bmN0aW9uIFRyYW5zaXRpb25Nb3Rpb24ocHJvcHMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRyYW5zaXRpb25Nb3Rpb24pO1xuXG4gICAgX1JlYWN0JENvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzKTtcbiAgICB0aGlzLnVubW91bnRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmFuaW1hdGlvbklEID0gbnVsbDtcbiAgICB0aGlzLnByZXZUaW1lID0gMDtcbiAgICB0aGlzLmFjY3VtdWxhdGVkVGltZSA9IDA7XG4gICAgdGhpcy51bnJlYWRQcm9wU3R5bGVzID0gbnVsbDtcblxuICAgIHRoaXMuY2xlYXJVbnJlYWRQcm9wU3R5bGUgPSBmdW5jdGlvbiAodW5yZWFkUHJvcFN0eWxlcykge1xuICAgICAgdmFyIF9tZXJnZUFuZFN5bmMgPSBtZXJnZUFuZFN5bmMoX3RoaXMucHJvcHMud2lsbEVudGVyLCBfdGhpcy5wcm9wcy53aWxsTGVhdmUsIF90aGlzLnByb3BzLmRpZExlYXZlLCBfdGhpcy5zdGF0ZS5tZXJnZWRQcm9wc1N0eWxlcywgdW5yZWFkUHJvcFN0eWxlcywgX3RoaXMuc3RhdGUuY3VycmVudFN0eWxlcywgX3RoaXMuc3RhdGUuY3VycmVudFZlbG9jaXRpZXMsIF90aGlzLnN0YXRlLmxhc3RJZGVhbFN0eWxlcywgX3RoaXMuc3RhdGUubGFzdElkZWFsVmVsb2NpdGllcyk7XG5cbiAgICAgIHZhciBtZXJnZWRQcm9wc1N0eWxlcyA9IF9tZXJnZUFuZFN5bmNbMF07XG4gICAgICB2YXIgY3VycmVudFN0eWxlcyA9IF9tZXJnZUFuZFN5bmNbMV07XG4gICAgICB2YXIgY3VycmVudFZlbG9jaXRpZXMgPSBfbWVyZ2VBbmRTeW5jWzJdO1xuICAgICAgdmFyIGxhc3RJZGVhbFN0eWxlcyA9IF9tZXJnZUFuZFN5bmNbM107XG4gICAgICB2YXIgbGFzdElkZWFsVmVsb2NpdGllcyA9IF9tZXJnZUFuZFN5bmNbNF07XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5yZWFkUHJvcFN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdW5yZWFkUHJvcFN0eWxlID0gdW5yZWFkUHJvcFN0eWxlc1tpXS5zdHlsZTtcbiAgICAgICAgdmFyIGRpcnR5ID0gZmFsc2U7XG5cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHVucmVhZFByb3BTdHlsZSkge1xuICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVucmVhZFByb3BTdHlsZSwga2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHN0eWxlVmFsdWUgPSB1bnJlYWRQcm9wU3R5bGVba2V5XTtcbiAgICAgICAgICBpZiAodHlwZW9mIHN0eWxlVmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBpZiAoIWRpcnR5KSB7XG4gICAgICAgICAgICAgIGRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY3VycmVudFN0eWxlc1tpXSA9IF9leHRlbmRzKHt9LCBjdXJyZW50U3R5bGVzW2ldKTtcbiAgICAgICAgICAgICAgY3VycmVudFZlbG9jaXRpZXNbaV0gPSBfZXh0ZW5kcyh7fSwgY3VycmVudFZlbG9jaXRpZXNbaV0pO1xuICAgICAgICAgICAgICBsYXN0SWRlYWxTdHlsZXNbaV0gPSBfZXh0ZW5kcyh7fSwgbGFzdElkZWFsU3R5bGVzW2ldKTtcbiAgICAgICAgICAgICAgbGFzdElkZWFsVmVsb2NpdGllc1tpXSA9IF9leHRlbmRzKHt9LCBsYXN0SWRlYWxWZWxvY2l0aWVzW2ldKTtcbiAgICAgICAgICAgICAgbWVyZ2VkUHJvcHNTdHlsZXNbaV0gPSB7XG4gICAgICAgICAgICAgICAga2V5OiBtZXJnZWRQcm9wc1N0eWxlc1tpXS5rZXksXG4gICAgICAgICAgICAgICAgZGF0YTogbWVyZ2VkUHJvcHNTdHlsZXNbaV0uZGF0YSxcbiAgICAgICAgICAgICAgICBzdHlsZTogX2V4dGVuZHMoe30sIG1lcmdlZFByb3BzU3R5bGVzW2ldLnN0eWxlKVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudFN0eWxlc1tpXVtrZXldID0gc3R5bGVWYWx1ZTtcbiAgICAgICAgICAgIGN1cnJlbnRWZWxvY2l0aWVzW2ldW2tleV0gPSAwO1xuICAgICAgICAgICAgbGFzdElkZWFsU3R5bGVzW2ldW2tleV0gPSBzdHlsZVZhbHVlO1xuICAgICAgICAgICAgbGFzdElkZWFsVmVsb2NpdGllc1tpXVtrZXldID0gMDtcbiAgICAgICAgICAgIG1lcmdlZFByb3BzU3R5bGVzW2ldLnN0eWxlW2tleV0gPSBzdHlsZVZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyB1bmxpa2UgdGhlIG90aGVyIDIgY29tcG9uZW50cywgd2UgY2FuJ3QgZGV0ZWN0IHN0YWxlbmVzcyBhbmQgb3B0aW9uYWxseVxuICAgICAgLy8gb3B0IG91dCBvZiBzZXRTdGF0ZSBoZXJlLiBlYWNoIHN0eWxlIG9iamVjdCdzIGRhdGEgbWlnaHQgY29udGFpbiBuZXdcbiAgICAgIC8vIHN0dWZmIHdlJ3JlIG5vdC9jYW5ub3QgY29tcGFyZVxuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBjdXJyZW50U3R5bGVzOiBjdXJyZW50U3R5bGVzLFxuICAgICAgICBjdXJyZW50VmVsb2NpdGllczogY3VycmVudFZlbG9jaXRpZXMsXG4gICAgICAgIG1lcmdlZFByb3BzU3R5bGVzOiBtZXJnZWRQcm9wc1N0eWxlcyxcbiAgICAgICAgbGFzdElkZWFsU3R5bGVzOiBsYXN0SWRlYWxTdHlsZXMsXG4gICAgICAgIGxhc3RJZGVhbFZlbG9jaXRpZXM6IGxhc3RJZGVhbFZlbG9jaXRpZXNcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uSWZOZWNlc3NhcnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMudW5tb3VudGluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFRPRE86IHdoZW4gY29uZmlnIGlzIHthOiAxMH0gYW5kIGRlc3QgaXMge2E6IDEwfSBkbyB3ZSByYWYgb25jZSBhbmRcbiAgICAgIC8vIGNhbGwgY2I/IE5vLCBvdGhlcndpc2UgYWNjaWRlbnRhbCBwYXJlbnQgcmVyZW5kZXIgY2F1c2VzIGNiIHRyaWdnZXJcbiAgICAgIF90aGlzLmFuaW1hdGlvbklEID0gX3JhZjJbJ2RlZmF1bHQnXShmdW5jdGlvbiAodGltZXN0YW1wKSB7XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jaGVuZ2xvdS9yZWFjdC1tb3Rpb24vcHVsbC80MjBcbiAgICAgICAgLy8gPiBpZiBleGVjdXRpb24gcGFzc2VzIHRoZSBjb25kaXRpb25hbCBpZiAodGhpcy51bm1vdW50aW5nKSwgdGhlblxuICAgICAgICAvLyBleGVjdXRlcyBhc3luYyBkZWZhdWx0UmFmIGFuZCBhZnRlciB0aGF0IGNvbXBvbmVudCB1bm1vdW50cyBhbmQgYWZ0ZXJcbiAgICAgICAgLy8gdGhhdCB0aGUgY2FsbGJhY2sgb2YgZGVmYXVsdFJhZiBpcyBjYWxsZWQsIHRoZW4gc2V0U3RhdGUgd2lsbCBiZSBjYWxsZWRcbiAgICAgICAgLy8gb24gdW5tb3VudGVkIGNvbXBvbmVudC5cbiAgICAgICAgaWYgKF90aGlzLnVubW91bnRpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcHJvcFN0eWxlcyA9IF90aGlzLnByb3BzLnN0eWxlcztcbiAgICAgICAgdmFyIGRlc3RTdHlsZXMgPSB0eXBlb2YgcHJvcFN0eWxlcyA9PT0gJ2Z1bmN0aW9uJyA/IHByb3BTdHlsZXMocmVoeWRyYXRlU3R5bGVzKF90aGlzLnN0YXRlLm1lcmdlZFByb3BzU3R5bGVzLCBfdGhpcy51bnJlYWRQcm9wU3R5bGVzLCBfdGhpcy5zdGF0ZS5sYXN0SWRlYWxTdHlsZXMpKSA6IHByb3BTdHlsZXM7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBhbmltYXRlIGluIHRoZSBmaXJzdCBwbGFjZVxuICAgICAgICBpZiAoc2hvdWxkU3RvcEFuaW1hdGlvbkFsbChfdGhpcy5zdGF0ZS5jdXJyZW50U3R5bGVzLCBkZXN0U3R5bGVzLCBfdGhpcy5zdGF0ZS5jdXJyZW50VmVsb2NpdGllcywgX3RoaXMuc3RhdGUubWVyZ2VkUHJvcHNTdHlsZXMpKSB7XG4gICAgICAgICAgLy8gbm8gbmVlZCB0byBjYW5jZWwgYW5pbWF0aW9uSUQgaGVyZTsgc2hvdWxkbid0IGhhdmUgYW55IGluIGZsaWdodFxuICAgICAgICAgIF90aGlzLmFuaW1hdGlvbklEID0gbnVsbDtcbiAgICAgICAgICBfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPSAwO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXJyZW50VGltZSA9IHRpbWVzdGFtcCB8fCBfcGVyZm9ybWFuY2VOb3cyWydkZWZhdWx0J10oKTtcbiAgICAgICAgdmFyIHRpbWVEZWx0YSA9IGN1cnJlbnRUaW1lIC0gX3RoaXMucHJldlRpbWU7XG4gICAgICAgIF90aGlzLnByZXZUaW1lID0gY3VycmVudFRpbWU7XG4gICAgICAgIF90aGlzLmFjY3VtdWxhdGVkVGltZSA9IF90aGlzLmFjY3VtdWxhdGVkVGltZSArIHRpbWVEZWx0YTtcbiAgICAgICAgLy8gbW9yZSB0aGFuIDEwIGZyYW1lcz8gcHJvbGx5IHN3aXRjaGVkIGJyb3dzZXIgdGFiLiBSZXN0YXJ0XG4gICAgICAgIGlmIChfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPiBtc1BlckZyYW1lICogMTApIHtcbiAgICAgICAgICBfdGhpcy5hY2N1bXVsYXRlZFRpbWUgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF90aGlzLmFjY3VtdWxhdGVkVGltZSA9PT0gMCkge1xuICAgICAgICAgIC8vIG5vIG5lZWQgdG8gY2FuY2VsIGFuaW1hdGlvbklEIGhlcmU7IHNob3VsZG4ndCBoYXZlIGFueSBpbiBmbGlnaHRcbiAgICAgICAgICBfdGhpcy5hbmltYXRpb25JRCA9IG51bGw7XG4gICAgICAgICAgX3RoaXMuc3RhcnRBbmltYXRpb25JZk5lY2Vzc2FyeSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXJyZW50RnJhbWVDb21wbGV0aW9uID0gKF90aGlzLmFjY3VtdWxhdGVkVGltZSAtIE1hdGguZmxvb3IoX3RoaXMuYWNjdW11bGF0ZWRUaW1lIC8gbXNQZXJGcmFtZSkgKiBtc1BlckZyYW1lKSAvIG1zUGVyRnJhbWU7XG4gICAgICAgIHZhciBmcmFtZXNUb0NhdGNoVXAgPSBNYXRoLmZsb29yKF90aGlzLmFjY3VtdWxhdGVkVGltZSAvIG1zUGVyRnJhbWUpO1xuXG4gICAgICAgIHZhciBfbWVyZ2VBbmRTeW5jMiA9IG1lcmdlQW5kU3luYyhfdGhpcy5wcm9wcy53aWxsRW50ZXIsIF90aGlzLnByb3BzLndpbGxMZWF2ZSwgX3RoaXMucHJvcHMuZGlkTGVhdmUsIF90aGlzLnN0YXRlLm1lcmdlZFByb3BzU3R5bGVzLCBkZXN0U3R5bGVzLCBfdGhpcy5zdGF0ZS5jdXJyZW50U3R5bGVzLCBfdGhpcy5zdGF0ZS5jdXJyZW50VmVsb2NpdGllcywgX3RoaXMuc3RhdGUubGFzdElkZWFsU3R5bGVzLCBfdGhpcy5zdGF0ZS5sYXN0SWRlYWxWZWxvY2l0aWVzKTtcblxuICAgICAgICB2YXIgbmV3TWVyZ2VkUHJvcHNTdHlsZXMgPSBfbWVyZ2VBbmRTeW5jMlswXTtcbiAgICAgICAgdmFyIG5ld0N1cnJlbnRTdHlsZXMgPSBfbWVyZ2VBbmRTeW5jMlsxXTtcbiAgICAgICAgdmFyIG5ld0N1cnJlbnRWZWxvY2l0aWVzID0gX21lcmdlQW5kU3luYzJbMl07XG4gICAgICAgIHZhciBuZXdMYXN0SWRlYWxTdHlsZXMgPSBfbWVyZ2VBbmRTeW5jMlszXTtcbiAgICAgICAgdmFyIG5ld0xhc3RJZGVhbFZlbG9jaXRpZXMgPSBfbWVyZ2VBbmRTeW5jMls0XTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld01lcmdlZFByb3BzU3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIG5ld01lcmdlZFByb3BzU3R5bGUgPSBuZXdNZXJnZWRQcm9wc1N0eWxlc1tpXS5zdHlsZTtcbiAgICAgICAgICB2YXIgbmV3Q3VycmVudFN0eWxlID0ge307XG4gICAgICAgICAgdmFyIG5ld0N1cnJlbnRWZWxvY2l0eSA9IHt9O1xuICAgICAgICAgIHZhciBuZXdMYXN0SWRlYWxTdHlsZSA9IHt9O1xuICAgICAgICAgIHZhciBuZXdMYXN0SWRlYWxWZWxvY2l0eSA9IHt9O1xuXG4gICAgICAgICAgZm9yICh2YXIga2V5IGluIG5ld01lcmdlZFByb3BzU3R5bGUpIHtcbiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5ld01lcmdlZFByb3BzU3R5bGUsIGtleSkpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBzdHlsZVZhbHVlID0gbmV3TWVyZ2VkUHJvcHNTdHlsZVtrZXldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHlsZVZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICBuZXdDdXJyZW50U3R5bGVba2V5XSA9IHN0eWxlVmFsdWU7XG4gICAgICAgICAgICAgIG5ld0N1cnJlbnRWZWxvY2l0eVtrZXldID0gMDtcbiAgICAgICAgICAgICAgbmV3TGFzdElkZWFsU3R5bGVba2V5XSA9IHN0eWxlVmFsdWU7XG4gICAgICAgICAgICAgIG5ld0xhc3RJZGVhbFZlbG9jaXR5W2tleV0gPSAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdmFyIG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUgPSBuZXdMYXN0SWRlYWxTdHlsZXNbaV1ba2V5XTtcbiAgICAgICAgICAgICAgdmFyIG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUgPSBuZXdMYXN0SWRlYWxWZWxvY2l0aWVzW2ldW2tleV07XG4gICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZnJhbWVzVG9DYXRjaFVwOyBqKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgX3N0ZXBwZXIgPSBfc3RlcHBlcjRbJ2RlZmF1bHQnXShtc1BlckZyYW1lIC8gMTAwMCwgbmV3TGFzdElkZWFsU3R5bGVWYWx1ZSwgbmV3TGFzdElkZWFsVmVsb2NpdHlWYWx1ZSwgc3R5bGVWYWx1ZS52YWwsIHN0eWxlVmFsdWUuc3RpZmZuZXNzLCBzdHlsZVZhbHVlLmRhbXBpbmcsIHN0eWxlVmFsdWUucHJlY2lzaW9uKTtcblxuICAgICAgICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUgPSBfc3RlcHBlclswXTtcbiAgICAgICAgICAgICAgICBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlID0gX3N0ZXBwZXJbMV07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB2YXIgX3N0ZXBwZXIyID0gX3N0ZXBwZXI0WydkZWZhdWx0J10obXNQZXJGcmFtZSAvIDEwMDAsIG5ld0xhc3RJZGVhbFN0eWxlVmFsdWUsIG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUsIHN0eWxlVmFsdWUudmFsLCBzdHlsZVZhbHVlLnN0aWZmbmVzcywgc3R5bGVWYWx1ZS5kYW1waW5nLCBzdHlsZVZhbHVlLnByZWNpc2lvbik7XG5cbiAgICAgICAgICAgICAgdmFyIG5leHRJZGVhbFggPSBfc3RlcHBlcjJbMF07XG4gICAgICAgICAgICAgIHZhciBuZXh0SWRlYWxWID0gX3N0ZXBwZXIyWzFdO1xuXG4gICAgICAgICAgICAgIG5ld0N1cnJlbnRTdHlsZVtrZXldID0gbmV3TGFzdElkZWFsU3R5bGVWYWx1ZSArIChuZXh0SWRlYWxYIC0gbmV3TGFzdElkZWFsU3R5bGVWYWx1ZSkgKiBjdXJyZW50RnJhbWVDb21wbGV0aW9uO1xuICAgICAgICAgICAgICBuZXdDdXJyZW50VmVsb2NpdHlba2V5XSA9IG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUgKyAobmV4dElkZWFsViAtIG5ld0xhc3RJZGVhbFZlbG9jaXR5VmFsdWUpICogY3VycmVudEZyYW1lQ29tcGxldGlvbjtcbiAgICAgICAgICAgICAgbmV3TGFzdElkZWFsU3R5bGVba2V5XSA9IG5ld0xhc3RJZGVhbFN0eWxlVmFsdWU7XG4gICAgICAgICAgICAgIG5ld0xhc3RJZGVhbFZlbG9jaXR5W2tleV0gPSBuZXdMYXN0SWRlYWxWZWxvY2l0eVZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5ld0xhc3RJZGVhbFN0eWxlc1tpXSA9IG5ld0xhc3RJZGVhbFN0eWxlO1xuICAgICAgICAgIG5ld0xhc3RJZGVhbFZlbG9jaXRpZXNbaV0gPSBuZXdMYXN0SWRlYWxWZWxvY2l0eTtcbiAgICAgICAgICBuZXdDdXJyZW50U3R5bGVzW2ldID0gbmV3Q3VycmVudFN0eWxlO1xuICAgICAgICAgIG5ld0N1cnJlbnRWZWxvY2l0aWVzW2ldID0gbmV3Q3VycmVudFZlbG9jaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuYW5pbWF0aW9uSUQgPSBudWxsO1xuICAgICAgICAvLyB0aGUgYW1vdW50IHdlJ3JlIGxvb3BlZCBvdmVyIGFib3ZlXG4gICAgICAgIF90aGlzLmFjY3VtdWxhdGVkVGltZSAtPSBmcmFtZXNUb0NhdGNoVXAgKiBtc1BlckZyYW1lO1xuXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjdXJyZW50U3R5bGVzOiBuZXdDdXJyZW50U3R5bGVzLFxuICAgICAgICAgIGN1cnJlbnRWZWxvY2l0aWVzOiBuZXdDdXJyZW50VmVsb2NpdGllcyxcbiAgICAgICAgICBsYXN0SWRlYWxTdHlsZXM6IG5ld0xhc3RJZGVhbFN0eWxlcyxcbiAgICAgICAgICBsYXN0SWRlYWxWZWxvY2l0aWVzOiBuZXdMYXN0SWRlYWxWZWxvY2l0aWVzLFxuICAgICAgICAgIG1lcmdlZFByb3BzU3R5bGVzOiBuZXdNZXJnZWRQcm9wc1N0eWxlc1xuICAgICAgICB9KTtcblxuICAgICAgICBfdGhpcy51bnJlYWRQcm9wU3R5bGVzID0gbnVsbDtcblxuICAgICAgICBfdGhpcy5zdGFydEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFN0YXRlKCk7XG4gIH1cblxuICBUcmFuc2l0aW9uTW90aW9uLnByb3RvdHlwZS5kZWZhdWx0U3RhdGUgPSBmdW5jdGlvbiBkZWZhdWx0U3RhdGUoKSB7XG4gICAgdmFyIF9wcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgdmFyIGRlZmF1bHRTdHlsZXMgPSBfcHJvcHMuZGVmYXVsdFN0eWxlcztcbiAgICB2YXIgc3R5bGVzID0gX3Byb3BzLnN0eWxlcztcbiAgICB2YXIgd2lsbEVudGVyID0gX3Byb3BzLndpbGxFbnRlcjtcbiAgICB2YXIgd2lsbExlYXZlID0gX3Byb3BzLndpbGxMZWF2ZTtcbiAgICB2YXIgZGlkTGVhdmUgPSBfcHJvcHMuZGlkTGVhdmU7XG5cbiAgICB2YXIgZGVzdFN0eWxlcyA9IHR5cGVvZiBzdHlsZXMgPT09ICdmdW5jdGlvbicgPyBzdHlsZXMoZGVmYXVsdFN0eWxlcykgOiBzdHlsZXM7XG5cbiAgICAvLyB0aGlzIGlzIHNwZWNpYWwuIGZvciB0aGUgZmlyc3QgdGltZSBhcm91bmQsIHdlIGRvbid0IGhhdmUgYSBjb21wYXJpc29uXG4gICAgLy8gYmV0d2VlbiBsYXN0IChubyBsYXN0KSBhbmQgY3VycmVudCBtZXJnZWQgcHJvcHMuIHdlJ2xsIGNvbXB1dGUgbGFzdCBzbzpcbiAgICAvLyBzYXkgZGVmYXVsdCBpcyB7YSwgYn0gYW5kIHN0eWxlcyAoZGVzdCBzdHlsZSkgaXMge2IsIGN9LCB3ZSdsbFxuICAgIC8vIGZhYnJpY2F0ZSBsYXN0IGFzIHthLCBifVxuICAgIHZhciBvbGRNZXJnZWRQcm9wc1N0eWxlcyA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZGVmYXVsdFN0eWxlcyA9PSBudWxsKSB7XG4gICAgICBvbGRNZXJnZWRQcm9wc1N0eWxlcyA9IGRlc3RTdHlsZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9sZE1lcmdlZFByb3BzU3R5bGVzID0gZGVmYXVsdFN0eWxlcy5tYXAoZnVuY3Rpb24gKGRlZmF1bHRTdHlsZUNlbGwpIHtcbiAgICAgICAgLy8gVE9ETzoga2V5IHNlYXJjaCBjb2RlXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVzdFN0eWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChkZXN0U3R5bGVzW2ldLmtleSA9PT0gZGVmYXVsdFN0eWxlQ2VsbC5rZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBkZXN0U3R5bGVzW2ldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmYXVsdFN0eWxlQ2VsbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB2YXIgb2xkQ3VycmVudFN0eWxlcyA9IGRlZmF1bHRTdHlsZXMgPT0gbnVsbCA/IGRlc3RTdHlsZXMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gX3N0cmlwU3R5bGUyWydkZWZhdWx0J10ocy5zdHlsZSk7XG4gICAgfSkgOiBkZWZhdWx0U3R5bGVzLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIF9zdHJpcFN0eWxlMlsnZGVmYXVsdCddKHMuc3R5bGUpO1xuICAgIH0pO1xuICAgIHZhciBvbGRDdXJyZW50VmVsb2NpdGllcyA9IGRlZmF1bHRTdHlsZXMgPT0gbnVsbCA/IGRlc3RTdHlsZXMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gX21hcFRvWmVybzJbJ2RlZmF1bHQnXShzLnN0eWxlKTtcbiAgICB9KSA6IGRlZmF1bHRTdHlsZXMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gX21hcFRvWmVybzJbJ2RlZmF1bHQnXShzLnN0eWxlKTtcbiAgICB9KTtcblxuICAgIHZhciBfbWVyZ2VBbmRTeW5jMyA9IG1lcmdlQW5kU3luYyhcbiAgICAvLyBCZWNhdXNlIHRoaXMgaXMgYW4gb2xkLXN0eWxlIGNyZWF0ZVJlYWN0Q2xhc3MgY29tcG9uZW50LCBGbG93IGRvZXNuJ3RcbiAgICAvLyB1bmRlcnN0YW5kIHRoYXQgdGhlIHdpbGxFbnRlciBhbmQgd2lsbExlYXZlIHByb3BzIGhhdmUgZGVmYXVsdCB2YWx1ZXNcbiAgICAvLyBhbmQgd2lsbCBhbHdheXMgYmUgcHJlc2VudC5cbiAgICB3aWxsRW50ZXIsIHdpbGxMZWF2ZSwgZGlkTGVhdmUsIG9sZE1lcmdlZFByb3BzU3R5bGVzLCBkZXN0U3R5bGVzLCBvbGRDdXJyZW50U3R5bGVzLCBvbGRDdXJyZW50VmVsb2NpdGllcywgb2xkQ3VycmVudFN0eWxlcywgLy8gb2xkTGFzdElkZWFsU3R5bGVzIHJlYWxseVxuICAgIG9sZEN1cnJlbnRWZWxvY2l0aWVzKTtcblxuICAgIHZhciBtZXJnZWRQcm9wc1N0eWxlcyA9IF9tZXJnZUFuZFN5bmMzWzBdO1xuICAgIHZhciBjdXJyZW50U3R5bGVzID0gX21lcmdlQW5kU3luYzNbMV07XG4gICAgdmFyIGN1cnJlbnRWZWxvY2l0aWVzID0gX21lcmdlQW5kU3luYzNbMl07XG4gICAgdmFyIGxhc3RJZGVhbFN0eWxlcyA9IF9tZXJnZUFuZFN5bmMzWzNdO1xuICAgIHZhciBsYXN0SWRlYWxWZWxvY2l0aWVzID0gX21lcmdlQW5kU3luYzNbNF07XG4gICAgLy8gb2xkTGFzdElkZWFsVmVsb2NpdGllcyByZWFsbHlcblxuICAgIHJldHVybiB7XG4gICAgICBjdXJyZW50U3R5bGVzOiBjdXJyZW50U3R5bGVzLFxuICAgICAgY3VycmVudFZlbG9jaXRpZXM6IGN1cnJlbnRWZWxvY2l0aWVzLFxuICAgICAgbGFzdElkZWFsU3R5bGVzOiBsYXN0SWRlYWxTdHlsZXMsXG4gICAgICBsYXN0SWRlYWxWZWxvY2l0aWVzOiBsYXN0SWRlYWxWZWxvY2l0aWVzLFxuICAgICAgbWVyZ2VkUHJvcHNTdHlsZXM6IG1lcmdlZFByb3BzU3R5bGVzXG4gICAgfTtcbiAgfTtcblxuICAvLyBhZnRlciBjaGVja2luZyBmb3IgdW5yZWFkUHJvcFN0eWxlcyAhPSBudWxsLCB3ZSBtYW51YWxseSBnbyBzZXQgdGhlXG4gIC8vIG5vbi1pbnRlcnBvbGF0aW5nIHZhbHVlcyAodGhvc2UgdGhhdCBhcmUgYSBudW1iZXIsIHdpdGhvdXQgYSBzcHJpbmdcbiAgLy8gY29uZmlnKVxuXG4gIFRyYW5zaXRpb25Nb3Rpb24ucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5wcmV2VGltZSA9IF9wZXJmb3JtYW5jZU5vdzJbJ2RlZmF1bHQnXSgpO1xuICAgIHRoaXMuc3RhcnRBbmltYXRpb25JZk5lY2Vzc2FyeSgpO1xuICB9O1xuXG4gIFRyYW5zaXRpb25Nb3Rpb24ucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKHByb3BzKSB7XG4gICAgaWYgKHRoaXMudW5yZWFkUHJvcFN0eWxlcykge1xuICAgICAgLy8gcHJldmlvdXMgcHJvcHMgaGF2ZW4ndCBoYWQgdGhlIGNoYW5jZSB0byBiZSBzZXQgeWV0OyBzZXQgdGhlbSBoZXJlXG4gICAgICB0aGlzLmNsZWFyVW5yZWFkUHJvcFN0eWxlKHRoaXMudW5yZWFkUHJvcFN0eWxlcyk7XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlcyA9IHByb3BzLnN0eWxlcztcbiAgICBpZiAodHlwZW9mIHN0eWxlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy51bnJlYWRQcm9wU3R5bGVzID0gc3R5bGVzKHJlaHlkcmF0ZVN0eWxlcyh0aGlzLnN0YXRlLm1lcmdlZFByb3BzU3R5bGVzLCB0aGlzLnVucmVhZFByb3BTdHlsZXMsIHRoaXMuc3RhdGUubGFzdElkZWFsU3R5bGVzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5yZWFkUHJvcFN0eWxlcyA9IHN0eWxlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hbmltYXRpb25JRCA9PSBudWxsKSB7XG4gICAgICB0aGlzLnByZXZUaW1lID0gX3BlcmZvcm1hbmNlTm93MlsnZGVmYXVsdCddKCk7XG4gICAgICB0aGlzLnN0YXJ0QW5pbWF0aW9uSWZOZWNlc3NhcnkoKTtcbiAgICB9XG4gIH07XG5cbiAgVHJhbnNpdGlvbk1vdGlvbi5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLnVubW91bnRpbmcgPSB0cnVlO1xuICAgIGlmICh0aGlzLmFuaW1hdGlvbklEICE9IG51bGwpIHtcbiAgICAgIF9yYWYyWydkZWZhdWx0J10uY2FuY2VsKHRoaXMuYW5pbWF0aW9uSUQpO1xuICAgICAgdGhpcy5hbmltYXRpb25JRCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIFRyYW5zaXRpb25Nb3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICB2YXIgaHlkcmF0ZWRTdHlsZXMgPSByZWh5ZHJhdGVTdHlsZXModGhpcy5zdGF0ZS5tZXJnZWRQcm9wc1N0eWxlcywgdGhpcy51bnJlYWRQcm9wU3R5bGVzLCB0aGlzLnN0YXRlLmN1cnJlbnRTdHlsZXMpO1xuICAgIHZhciByZW5kZXJlZENoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbihoeWRyYXRlZFN0eWxlcyk7XG4gICAgcmV0dXJuIHJlbmRlcmVkQ2hpbGRyZW4gJiYgX3JlYWN0MlsnZGVmYXVsdCddLkNoaWxkcmVuLm9ubHkocmVuZGVyZWRDaGlsZHJlbik7XG4gIH07XG5cbiAgcmV0dXJuIFRyYW5zaXRpb25Nb3Rpb247XG59KShfcmVhY3QyWydkZWZhdWx0J10uQ29tcG9uZW50KTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gVHJhbnNpdGlvbk1vdGlvbjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vLyBsaXN0IG9mIHN0eWxlcywgZWFjaCBjb250YWluaW5nIGludGVycG9sYXRpbmcgdmFsdWVzLiBQYXJ0IG9mIHdoYXQncyBwYXNzZWRcbi8vIHRvIGNoaWxkcmVuIGZ1bmN0aW9uLiBOb3RpY2UgdGhhdCB0aGlzIGlzXG4vLyBBcnJheTxBY3R1YWxJbnRlcnBvbGF0aW5nU3R5bGVPYmplY3Q+LCB3aXRob3V0IHRoZSB3cmFwcGVyIHRoYXQgaXMge2tleTogLi4uLFxuLy8gZGF0YTogLi4uIHN0eWxlOiBBY3R1YWxJbnRlcnBvbGF0aW5nU3R5bGVPYmplY3R9LiBPbmx5IG1lcmdlZFByb3BzU3R5bGVzXG4vLyBjb250YWlucyB0aGUga2V5ICYgZGF0YSBpbmZvIChzbyB0aGF0IHdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGhcbi8vIGZvciB0aGVzZSwgYW5kIHRvIHNhdmUgc3BhY2UpLiBDaGVjayB0aGUgY29tbWVudCBmb3IgYHJlaHlkcmF0ZVN0eWxlc2AgdG9cbi8vIHNlZSBob3cgd2UgcmVnZW5lcmF0ZSB0aGUgZW50aXJldHkgb2Ygd2hhdCdzIHBhc3NlZCB0byBjaGlsZHJlbiBmdW5jdGlvblxuXG4vLyB0aGUgYXJyYXkgdGhhdCBrZWVwcyB0cmFjayBvZiBjdXJyZW50bHkgcmVuZGVyZWQgc3R1ZmYhIEluY2x1ZGluZyBzdHVmZlxuLy8gdGhhdCB5b3UndmUgdW5tb3VudGVkIGJ1dCB0aGF0J3Mgc3RpbGwgYW5pbWF0aW5nLiBUaGlzIGlzIHdoZXJlIGl0IGxpdmVzXG5cbi8vIGl0J3MgcG9zc2libGUgdGhhdCBjdXJyZW50U3R5bGUncyB2YWx1ZSBpcyBzdGFsZTogaWYgcHJvcHMgaXMgaW1tZWRpYXRlbHlcbi8vIGNoYW5nZWQgZnJvbSAwIHRvIDQwMCB0byBzcHJpbmcoMCkgYWdhaW4sIHRoZSBhc3luYyBjdXJyZW50U3R5bGUgaXMgc3RpbGxcbi8vIGF0IDAgKGRpZG4ndCBoYXZlIHRpbWUgdG8gdGljayBhbmQgaW50ZXJwb2xhdGUgZXZlbiBvbmNlKS4gSWYgd2UgbmFpdmVseVxuLy8gY29tcGFyZSBjdXJyZW50U3R5bGUgd2l0aCBkZXN0VmFsIGl0J2xsIGJlIDAgPT09IDAgKG5vIGFuaW1hdGlvbiwgc3RvcCkuXG4vLyBJbiByZWFsaXR5IGN1cnJlbnRTdHlsZSBzaG91bGQgYmUgNDAwXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0LW1vdGlvbi9saWIvVHJhbnNpdGlvbk1vdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXG5cbi8vIGNvcmUga2V5cyBtZXJnaW5nIGFsZ29yaXRobS4gSWYgcHJldmlvdXMgcmVuZGVyJ3Mga2V5cyBhcmUgW2EsIGJdLCBhbmQgdGhlXG4vLyBuZXh0IHJlbmRlcidzIFtjLCBiLCBkXSwgd2hhdCdzIHRoZSBmaW5hbCBtZXJnZWQga2V5cyBhbmQgb3JkZXJpbmc/XG5cbi8vIC0gYyBhbmQgYSBtdXN0IGJvdGggYmUgYmVmb3JlIGJcbi8vIC0gYiBiZWZvcmUgZFxuLy8gLSBvcmRlcmluZyBiZXR3ZWVuIGEgYW5kIGMgYW1iaWd1b3VzXG5cbi8vIHRoaXMgcmVkdWNlcyB0byBtZXJnaW5nIHR3byBwYXJ0aWFsbHkgb3JkZXJlZCBsaXN0cyAoZS5nLiBsaXN0cyB3aGVyZSBub3Rcbi8vIGV2ZXJ5IGl0ZW0gaGFzIGEgZGVmaW5pdGUgb3JkZXJpbmcsIGxpa2UgY29tcGFyaW5nIGEgYW5kIGMgYWJvdmUpLiBGb3IgdGhlXG4vLyBhbWJpZ3VvdXMgb3JkZXJpbmcgd2UgZGV0ZXJtaW5pc3RpY2FsbHkgY2hvb3NlIHRvIHBsYWNlIHRoZSBuZXh0IHJlbmRlcidzXG4vLyBpdGVtIGFmdGVyIHRoZSBwcmV2aW91cyc7IHNvIGMgYWZ0ZXIgYVxuXG4vLyB0aGlzIGlzIGNhbGxlZCBhIHRvcG9sb2dpY2FsIHNvcnRpbmcuIEV4Y2VwdCB0aGUgZXhpc3RpbmcgYWxnb3JpdGhtcyBkb24ndFxuLy8gd29yayB3ZWxsIHdpdGgganMgYmMgb2YgdGhlIGFtb3VudCBvZiBhbGxvY2F0aW9uLCBhbmQgaXNuJ3Qgb3B0aW1pemVkIGZvciBvdXJcbi8vIGN1cnJlbnQgdXNlLWNhc2UgYmMgdGhlIHJ1bnRpbWUgaXMgbGluZWFyIGluIHRlcm1zIG9mIGVkZ2VzIChzZWUgd2lraSBmb3Jcbi8vIG1lYW5pbmcpLCB3aGljaCBpcyBodWdlIHdoZW4gdHdvIGxpc3RzIGhhdmUgbWFueSBjb21tb24gZWxlbWVudHNcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IG1lcmdlRGlmZjtcblxuZnVuY3Rpb24gbWVyZ2VEaWZmKHByZXYsIG5leHQsIG9uUmVtb3ZlKSB7XG4gIC8vIGJvb2trZWVwaW5nIGZvciBlYXNpZXIgYWNjZXNzIG9mIGEga2V5J3MgaW5kZXggYmVsb3cuIFRoaXMgaXMgMiBhbGxvY2F0aW9ucyArXG4gIC8vIHBvdGVudGlhbGx5IHRyaWdnZXJpbmcgY2hyb21lIGhhc2ggbWFwIG1vZGUgZm9yIG9ianMgKHNvIGl0IG1pZ2h0IGJlIGZhc3RlclxuXG4gIHZhciBwcmV2S2V5SW5kZXggPSB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmV2Lmxlbmd0aDsgaSsrKSB7XG4gICAgcHJldktleUluZGV4W3ByZXZbaV0ua2V5XSA9IGk7XG4gIH1cbiAgdmFyIG5leHRLZXlJbmRleCA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5leHQubGVuZ3RoOyBpKyspIHtcbiAgICBuZXh0S2V5SW5kZXhbbmV4dFtpXS5rZXldID0gaTtcbiAgfVxuXG4gIC8vIGZpcnN0LCBhbiBvdmVybHkgZWxhYm9yYXRlIHdheSBvZiBtZXJnaW5nIHByZXYgYW5kIG5leHQsIGVsaW1pbmF0aW5nXG4gIC8vIGR1cGxpY2F0ZXMgKGluIHRlcm1zIG9mIGtleXMpLiBJZiB0aGVyZSdzIGR1cGUsIGtlZXAgdGhlIGl0ZW0gaW4gbmV4dCkuXG4gIC8vIFRoaXMgd2F5IG9mIHdyaXRpbmcgaXQgc2F2ZXMgYWxsb2NhdGlvbnNcbiAgdmFyIHJldCA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5leHQubGVuZ3RoOyBpKyspIHtcbiAgICByZXRbaV0gPSBuZXh0W2ldO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJldi5sZW5ndGg7IGkrKykge1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5leHRLZXlJbmRleCwgcHJldltpXS5rZXkpKSB7XG4gICAgICAvLyB0aGlzIGlzIGNhbGxlZCBteSBUTSdzIGBtZXJnZUFuZFN5bmNgLCB3aGljaCBjYWxscyB3aWxsTGVhdmUuIFdlIGRvbid0XG4gICAgICAvLyBtZXJnZSBpbiBrZXlzIHRoYXQgdGhlIHVzZXIgZGVzaXJlcyB0byBraWxsXG4gICAgICB2YXIgZmlsbCA9IG9uUmVtb3ZlKGksIHByZXZbaV0pO1xuICAgICAgaWYgKGZpbGwgIT0gbnVsbCkge1xuICAgICAgICByZXQucHVzaChmaWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBub3cgYWxsIHRoZSBpdGVtcyBhbGwgcHJlc2VudC4gQ29yZSBzb3J0aW5nIGxvZ2ljIHRvIGhhdmUgdGhlIHJpZ2h0IG9yZGVyXG4gIHJldHVybiByZXQuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHZhciBuZXh0T3JkZXJBID0gbmV4dEtleUluZGV4W2Eua2V5XTtcbiAgICB2YXIgbmV4dE9yZGVyQiA9IG5leHRLZXlJbmRleFtiLmtleV07XG4gICAgdmFyIHByZXZPcmRlckEgPSBwcmV2S2V5SW5kZXhbYS5rZXldO1xuICAgIHZhciBwcmV2T3JkZXJCID0gcHJldktleUluZGV4W2Iua2V5XTtcblxuICAgIGlmIChuZXh0T3JkZXJBICE9IG51bGwgJiYgbmV4dE9yZGVyQiAhPSBudWxsKSB7XG4gICAgICAvLyBib3RoIGtleXMgaW4gbmV4dFxuICAgICAgcmV0dXJuIG5leHRLZXlJbmRleFthLmtleV0gLSBuZXh0S2V5SW5kZXhbYi5rZXldO1xuICAgIH0gZWxzZSBpZiAocHJldk9yZGVyQSAhPSBudWxsICYmIHByZXZPcmRlckIgIT0gbnVsbCkge1xuICAgICAgLy8gYm90aCBrZXlzIGluIHByZXZcbiAgICAgIHJldHVybiBwcmV2S2V5SW5kZXhbYS5rZXldIC0gcHJldktleUluZGV4W2Iua2V5XTtcbiAgICB9IGVsc2UgaWYgKG5leHRPcmRlckEgIT0gbnVsbCkge1xuICAgICAgLy8ga2V5IGEgaW4gbmV4dCwga2V5IGIgaW4gcHJldlxuXG4gICAgICAvLyBob3cgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlciBiZXR3ZWVuIGEgYW5kIGI/IFdlIGZpbmQgYSBcInBpdm90XCIgKHRlcm1cbiAgICAgIC8vIGFidXNlKSwgYSBrZXkgcHJlc2VudCBpbiBib3RoIHByZXYgYW5kIG5leHQsIHRoYXQgaXMgc2FuZHdpY2hlZCBiZXR3ZWVuXG4gICAgICAvLyBhIGFuZCBiLiBJbiB0aGUgY29udGV4dCBvZiBvdXIgYWJvdmUgZXhhbXBsZSwgaWYgd2UncmUgY29tcGFyaW5nIGEgYW5kXG4gICAgICAvLyBkLCBiJ3MgKHRoZSBvbmx5KSBwaXZvdFxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwaXZvdCA9IG5leHRbaV0ua2V5O1xuICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcmV2S2V5SW5kZXgsIHBpdm90KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHRPcmRlckEgPCBuZXh0S2V5SW5kZXhbcGl2b3RdICYmIHByZXZPcmRlckIgPiBwcmV2S2V5SW5kZXhbcGl2b3RdKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9IGVsc2UgaWYgKG5leHRPcmRlckEgPiBuZXh0S2V5SW5kZXhbcGl2b3RdICYmIHByZXZPcmRlckIgPCBwcmV2S2V5SW5kZXhbcGl2b3RdKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHBsdWdnYWJsZS4gZGVmYXVsdCB0bzogbmV4dCBiaWdnZXIgdGhhbiBwcmV2XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgLy8gcHJldk9yZGVyQSwgbmV4dE9yZGVyQlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBpdm90ID0gbmV4dFtpXS5rZXk7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcmV2S2V5SW5kZXgsIHBpdm90KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0T3JkZXJCIDwgbmV4dEtleUluZGV4W3Bpdm90XSAmJiBwcmV2T3JkZXJBID4gcHJldktleUluZGV4W3Bpdm90XSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSBpZiAobmV4dE9yZGVyQiA+IG5leHRLZXlJbmRleFtwaXZvdF0gJiYgcHJldk9yZGVyQSA8IHByZXZLZXlJbmRleFtwaXZvdF0pIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBwbHVnZ2FibGUuIGRlZmF1bHQgdG86IG5leHQgYmlnZ2VyIHRoYW4gcHJldlxuICAgIHJldHVybiAtMTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuLy8gdG8gbG9vcCB0aHJvdWdoIGFuZCBmaW5kIGEga2V5J3MgaW5kZXggZWFjaCB0aW1lKSwgYnV0IEkgbm8gbG9uZ2VyIGNhcmVcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtbW90aW9uL2xpYi9tZXJnZURpZmYuanNcbi8vIG1vZHVsZSBpZCA9IDI4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gc3ByaW5nO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfcHJlc2V0cyA9IHJlcXVpcmUoJy4vcHJlc2V0cycpO1xuXG52YXIgX3ByZXNldHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJlc2V0cyk7XG5cbnZhciBkZWZhdWx0Q29uZmlnID0gX2V4dGVuZHMoe30sIF9wcmVzZXRzMlsnZGVmYXVsdCddLm5vV29iYmxlLCB7XG4gIHByZWNpc2lvbjogMC4wMVxufSk7XG5cbmZ1bmN0aW9uIHNwcmluZyh2YWwsIGNvbmZpZykge1xuICByZXR1cm4gX2V4dGVuZHMoe30sIGRlZmF1bHRDb25maWcsIGNvbmZpZywgeyB2YWw6IHZhbCB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0LW1vdGlvbi9saWIvc3ByaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0ge1xuICBub1dvYmJsZTogeyBzdGlmZm5lc3M6IDE3MCwgZGFtcGluZzogMjYgfSwgLy8gdGhlIGRlZmF1bHQsIGlmIG5vdGhpbmcgcHJvdmlkZWRcbiAgZ2VudGxlOiB7IHN0aWZmbmVzczogMTIwLCBkYW1waW5nOiAxNCB9LFxuICB3b2JibHk6IHsgc3RpZmZuZXNzOiAxODAsIGRhbXBpbmc6IDEyIH0sXG4gIHN0aWZmOiB7IHN0aWZmbmVzczogMjEwLCBkYW1waW5nOiAyMCB9XG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtbW90aW9uL2xpYi9wcmVzZXRzLmpzXG4vLyBtb2R1bGUgaWQgPSAzMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzWydkZWZhdWx0J10gPSByZW9yZGVyS2V5cztcblxudmFyIGhhc1dhcm5lZCA9IGZhbHNlO1xuXG5mdW5jdGlvbiByZW9yZGVyS2V5cygpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgaWYgKCFoYXNXYXJuZWQpIHtcbiAgICAgIGhhc1dhcm5lZCA9IHRydWU7XG4gICAgICBjb25zb2xlLmVycm9yKCdgcmVvcmRlcktleXNgIGhhcyBiZWVuIHJlbW92ZWQsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQgZm9yIFRyYW5zaXRpb25Nb3Rpb25cXCdzIG5ldyBzdHlsZXMgYXJyYXkgQVBJLicpO1xuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QtbW90aW9uL2xpYi9yZW9yZGVyS2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuY29uc3QgcmVhY3QxMyA9IGlzUmVhY3QxMyhSZWFjdCk7XG52YXIgZGlkV2FybkFib3V0Q2hpbGQgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRET01Ob2RlKGNvbXBvbmVudCl7XG4gICAgaWYoIXJlYWN0MTMpe1xuICAgICAgICByZXR1cm4gY29tcG9uZW50O1xuICAgIH1lbHNle1xuICAgICAgICByZXR1cm4gUmVhY3QuZmluZERPTU5vZGUoY29tcG9uZW50KTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3YXJuQWJvdXRGdW5jdGlvbkNoaWxkKCkge1xuICAgIGlmIChkaWRXYXJuQWJvdXRDaGlsZCB8fCByZWFjdDEzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGlkV2FybkFib3V0Q2hpbGQgPSB0cnVlO1xuICAgIGNvbnNvbGUuZXJyb3IoJ1dpdGggUmVhY3QgMC4xNCBhbmQgbGF0ZXIgdmVyc2lvbnMsIHlvdSBubyBsb25nZXIgbmVlZCB0byB3cmFwIDxTY3JvbGxBcmVhPiBjaGlsZCBpbnRvIGEgZnVuY3Rpb24uJyk7XG4gIH1cblxuZXhwb3J0IGZ1bmN0aW9uIHdhcm5BYm91dEVsZW1lbnRDaGlsZCgpIHtcbiAgICBpZiAoZGlkV2FybkFib3V0Q2hpbGQgfHwgIXJlYWN0MTMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGlkV2FybkFib3V0Q2hpbGQgPSB0cnVlO1xuICAgIGNvbnNvbGUuZXJyb3IoICdXaXRoIFJlYWN0IDAuMTMsIHlvdSBuZWVkIHRvIHdyYXAgPFNjcm9sbEFyZWE+IGNoaWxkIGludG8gYSBmdW5jdGlvbi4nICk7XG4gIH1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aXZlT3JaZXJvKG51bWJlcil7XG4gICAgcmV0dXJuIG51bWJlciA8IDAgPyAwIDogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9kaWZ5T2JqVmFsdWVzIChvYmosIG1vZGlmaWVyID0geCA9PiB4KXtcbiAgICBsZXQgbW9kaWZpZWRPYmogPSB7fTtcbiAgICBmb3IobGV0IGtleSBpbiBvYmope1xuICAgICAgICBpZihvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgbW9kaWZpZWRPYmpba2V5XSA9IG1vZGlmaWVyKG9ialtrZXldKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIG1vZGlmaWVkT2JqO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWFjdDEzKFJlYWN0KSB7XG4gICAgY29uc3QgeyB2ZXJzaW9uIH0gPSBSZWFjdDtcbiAgICBpZiAodHlwZW9mIHZlcnNpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnRzID0gdmVyc2lvbi5zcGxpdCgnLicpO1xuICAgIGNvbnN0IG1ham9yID0gcGFyc2VJbnQocGFydHNbMF0sIDEwKTtcbiAgICBjb25zdCBtaW5vciA9IHBhcnNlSW50KHBhcnRzWzFdLCAxMCk7XG5cbiAgICByZXR1cm4gbWFqb3IgPT09IDAgJiYgbWlub3IgPT09IDEzO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2pzL3V0aWxzLmpzIiwiLy8gTG9hZCBpbiBkZXBlbmRlbmNpZXNcbnZhciBjb21wdXRlZFN0eWxlID0gcmVxdWlyZSgnY29tcHV0ZWQtc3R5bGUnKTtcblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGBsaW5lLWhlaWdodGAgb2YgYSBnaXZlbiBub2RlXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlIEVsZW1lbnQgdG8gY2FsY3VsYXRlIGxpbmUgaGVpZ2h0IG9mLiBNdXN0IGJlIGluIHRoZSBET00uXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBgbGluZS1oZWlnaHRgIG9mIHRoZSBlbGVtZW50IGluIHBpeGVsc1xuICovXG5mdW5jdGlvbiBsaW5lSGVpZ2h0KG5vZGUpIHtcbiAgLy8gR3JhYiB0aGUgbGluZS1oZWlnaHQgdmlhIHN0eWxlXG4gIHZhciBsbkhlaWdodFN0ciA9IGNvbXB1dGVkU3R5bGUobm9kZSwgJ2xpbmUtaGVpZ2h0JyksXG4gICAgICBsbkhlaWdodCA9IHBhcnNlRmxvYXQobG5IZWlnaHRTdHIsIDEwKTtcblxuICAvLyBJZiB0aGUgbGluZUhlaWdodCBkaWQgbm90IGNvbnRhaW4gYSB1bml0IChpLmUuIGl0IHdhcyBudW1lcmljKSwgY29udmVydCBpdCB0byBlbXMgKGUuZy4gJzIuMycgPT09ICcyLjNlbScpXG4gIGlmIChsbkhlaWdodFN0ciA9PT0gbG5IZWlnaHQgKyAnJykge1xuICAgIC8vIFNhdmUgdGhlIG9sZCBsaW5lSGVpZ2h0IHN0eWxlIGFuZCB1cGRhdGUgdGhlIGVtIHVuaXQgdG8gdGhlIGVsZW1lbnRcbiAgICB2YXIgX2xuSGVpZ2h0U3R5bGUgPSBub2RlLnN0eWxlLmxpbmVIZWlnaHQ7XG4gICAgbm9kZS5zdHlsZS5saW5lSGVpZ2h0ID0gbG5IZWlnaHRTdHIgKyAnZW0nO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBlbSBiYXNlZCBoZWlnaHRcbiAgICBsbkhlaWdodFN0ciA9IGNvbXB1dGVkU3R5bGUobm9kZSwgJ2xpbmUtaGVpZ2h0Jyk7XG4gICAgbG5IZWlnaHQgPSBwYXJzZUZsb2F0KGxuSGVpZ2h0U3RyLCAxMCk7XG5cbiAgICAvLyBSZXZlcnQgdGhlIGxpbmVIZWlnaHQgc3R5bGVcbiAgICBpZiAoX2xuSGVpZ2h0U3R5bGUpIHtcbiAgICAgIG5vZGUuc3R5bGUubGluZUhlaWdodCA9IF9sbkhlaWdodFN0eWxlO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgbm9kZS5zdHlsZS5saW5lSGVpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZSBsaW5lSGVpZ2h0IGlzIGluIGBwdGAsIGNvbnZlcnQgaXQgdG8gcGl4ZWxzICg0cHggZm9yIDNwdClcbiAgLy8gREVWOiBgZW1gIHVuaXRzIGFyZSBjb252ZXJ0ZWQgdG8gYHB0YCBpbiBJRTZcbiAgLy8gQ29udmVyc2lvbiByYXRpbyBmcm9tIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9sZW5ndGhcbiAgaWYgKGxuSGVpZ2h0U3RyLmluZGV4T2YoJ3B0JykgIT09IC0xKSB7XG4gICAgbG5IZWlnaHQgKj0gNDtcbiAgICBsbkhlaWdodCAvPSAzO1xuICB9IGVsc2UgaWYgKGxuSGVpZ2h0U3RyLmluZGV4T2YoJ21tJykgIT09IC0xKSB7XG4gIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYG1tYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDk2cHggZm9yIDI1LjRtbSlcbiAgICBsbkhlaWdodCAqPSA5NjtcbiAgICBsbkhlaWdodCAvPSAyNS40O1xuICB9IGVsc2UgaWYgKGxuSGVpZ2h0U3RyLmluZGV4T2YoJ2NtJykgIT09IC0xKSB7XG4gIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYGNtYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDk2cHggZm9yIDIuNTRjbSlcbiAgICBsbkhlaWdodCAqPSA5NjtcbiAgICBsbkhlaWdodCAvPSAyLjU0O1xuICB9IGVsc2UgaWYgKGxuSGVpZ2h0U3RyLmluZGV4T2YoJ2luJykgIT09IC0xKSB7XG4gIC8vIE90aGVyd2lzZSwgaWYgdGhlIGxpbmVIZWlnaHQgaXMgaW4gYGluYCwgY29udmVydCBpdCB0byBwaXhlbHMgKDk2cHggZm9yIDFpbilcbiAgICBsbkhlaWdodCAqPSA5NjtcbiAgfSBlbHNlIGlmIChsbkhlaWdodFN0ci5pbmRleE9mKCdwYycpICE9PSAtMSkge1xuICAvLyBPdGhlcndpc2UsIGlmIHRoZSBsaW5lSGVpZ2h0IGlzIGluIGBwY2AsIGNvbnZlcnQgaXQgdG8gcGl4ZWxzICgxMnB0IGZvciAxcGMpXG4gICAgbG5IZWlnaHQgKj0gMTY7XG4gIH1cblxuICAvLyBDb250aW51ZSBvdXIgY29tcHV0YXRpb25cbiAgbG5IZWlnaHQgPSBNYXRoLnJvdW5kKGxuSGVpZ2h0KTtcblxuICAvLyBJZiB0aGUgbGluZS1oZWlnaHQgaXMgXCJub3JtYWxcIiwgY2FsY3VsYXRlIGJ5IGZvbnQtc2l6ZVxuICBpZiAobG5IZWlnaHRTdHIgPT09ICdub3JtYWwnKSB7XG4gICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IG5vZGVcbiAgICB2YXIgbm9kZU5hbWUgPSBub2RlLm5vZGVOYW1lLFxuICAgICAgICBfbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobm9kZU5hbWUpO1xuICAgIF9ub2RlLmlubmVySFRNTCA9ICcmbmJzcDsnO1xuXG4gICAgLy8gU2V0IHRoZSBmb250LXNpemUgb2YgdGhlIGVsZW1lbnRcbiAgICB2YXIgZm9udFNpemVTdHIgPSBjb21wdXRlZFN0eWxlKG5vZGUsICdmb250LXNpemUnKTtcbiAgICBfbm9kZS5zdHlsZS5mb250U2l6ZSA9IGZvbnRTaXplU3RyO1xuXG4gICAgLy8gQXBwZW5kIGl0IHRvIHRoZSBib2R5XG4gICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgIGJvZHkuYXBwZW5kQ2hpbGQoX25vZGUpO1xuXG4gICAgLy8gQXNzdW1lIHRoZSBsaW5lIGhlaWdodCBvZiB0aGUgZWxlbWVudCBpcyB0aGUgaGVpZ2h0XG4gICAgdmFyIGhlaWdodCA9IF9ub2RlLm9mZnNldEhlaWdodDtcbiAgICBsbkhlaWdodCA9IGhlaWdodDtcblxuICAgIC8vIFJlbW92ZSBvdXIgY2hpbGQgZnJvbSB0aGUgRE9NXG4gICAgYm9keS5yZW1vdmVDaGlsZChfbm9kZSk7XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIGNhbGN1bGF0ZWQgaGVpZ2h0XG4gIHJldHVybiBsbkhlaWdodDtcbn1cblxuLy8gRXhwb3J0IGxpbmVIZWlnaHRcbm1vZHVsZS5leHBvcnRzID0gbGluZUhlaWdodDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vbGluZS1oZWlnaHQvbGliL2xpbmUtaGVpZ2h0LmpzXG4vLyBtb2R1bGUgaWQgPSAzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBUaGlzIGNvZGUgaGFzIGJlZW4gcmVmYWN0b3JlZCBmb3IgMTQwIGJ5dGVzXG4vLyBZb3UgY2FuIHNlZSB0aGUgb3JpZ2luYWwgaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL3R3b2xmc29uL2NvbXB1dGVkU3R5bGUvYmxvYi8wNGNkMWRhMmUzMGZhNDU4NDRmOTVmNWNiMWFjODk4ZTliOWVmMDUwL2xpYi9jb21wdXRlZFN0eWxlLmpzXG52YXIgY29tcHV0ZWRTdHlsZSA9IGZ1bmN0aW9uIChlbCwgcHJvcCwgZ2V0Q29tcHV0ZWRTdHlsZSkge1xuICBnZXRDb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGU7XG5cbiAgLy8gSW4gb25lIGZlbGwgc3dvb3BcbiAgcmV0dXJuIChcbiAgICAvLyBJZiB3ZSBoYXZlIGdldENvbXB1dGVkU3R5bGVcbiAgICBnZXRDb21wdXRlZFN0eWxlID9cbiAgICAgIC8vIFF1ZXJ5IGl0XG4gICAgICAvLyBUT0RPOiBGcm9tIENTUy1RdWVyeSBub3Rlcywgd2UgbWlnaHQgbmVlZCAobm9kZSwgbnVsbCkgZm9yIEZGXG4gICAgICBnZXRDb21wdXRlZFN0eWxlKGVsKSA6XG5cbiAgICAvLyBPdGhlcndpc2UsIHdlIGFyZSBpbiBJRSBhbmQgdXNlIGN1cnJlbnRTdHlsZVxuICAgICAgZWwuY3VycmVudFN0eWxlXG4gIClbXG4gICAgLy8gU3dpdGNoIHRvIGNhbWVsQ2FzZSBmb3IgQ1NTT01cbiAgICAvLyBERVY6IEdyYWJiZWQgZnJvbSBqUXVlcnlcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iLzEuOS1zdGFibGUvc3JjL2Nzcy5qcyNMMTkxLUwxOTRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iLzEuOS1zdGFibGUvc3JjL2NvcmUuanMjTDU5My1MNTk3XG4gICAgcHJvcC5yZXBsYWNlKC8tKFxcdykvZ2ksIGZ1bmN0aW9uICh3b3JkLCBsZXR0ZXIpIHtcbiAgICAgIHJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTtcbiAgICB9KVxuICBdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb21wdXRlZFN0eWxlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvbXB1dGVkLXN0eWxlL2Rpc3QvY29tcHV0ZWRTdHlsZS5jb21tb25qcy5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==" | |
}, { | |
"id": "./node_modules/react-transition-group/CSSTransitionGroup.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js", | |
"name": "./~/react-transition-group/CSSTransitionGroup.js", | |
"index": 717, | |
"index2": 721, | |
"size": 3992, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/index.js", | |
"issuerId": "./node_modules/react-transition-group/index.js", | |
"issuerName": "./~/react-transition-group/index.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/react-transition-group/index.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/index.js", | |
"module": "./~/react-transition-group/index.js", | |
"moduleName": "./~/react-transition-group/index.js", | |
"type": "cjs require", | |
"userRequest": "./CSSTransitionGroup", | |
"loc": "3:26-57" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 7, | |
"source": "'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _TransitionGroup = require('./TransitionGroup');\n\nvar _TransitionGroup2 = _interopRequireDefault(_TransitionGroup);\n\nvar _CSSTransitionGroupChild = require('./CSSTransitionGroupChild');\n\nvar _CSSTransitionGroupChild2 = _interopRequireDefault(_CSSTransitionGroupChild);\n\nvar _PropTypes = require('./utils/PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n transitionName: _PropTypes.nameShape.isRequired,\n\n transitionAppear: _propTypes2.default.bool,\n transitionEnter: _propTypes2.default.bool,\n transitionLeave: _propTypes2.default.bool,\n transitionAppearTimeout: (0, _PropTypes.transitionTimeout)('Appear'),\n transitionEnterTimeout: (0, _PropTypes.transitionTimeout)('Enter'),\n transitionLeaveTimeout: (0, _PropTypes.transitionTimeout)('Leave')\n};\n\nvar defaultProps = {\n transitionAppear: false,\n transitionEnter: true,\n transitionLeave: true\n};\n\nvar CSSTransitionGroup = function (_React$Component) {\n _inherits(CSSTransitionGroup, _React$Component);\n\n function CSSTransitionGroup() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, CSSTransitionGroup);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._wrapChild = function (child) {\n return _react2.default.createElement(_CSSTransitionGroupChild2.default, {\n name: _this.props.transitionName,\n appear: _this.props.transitionAppear,\n enter: _this.props.transitionEnter,\n leave: _this.props.transitionLeave,\n appearTimeout: _this.props.transitionAppearTimeout,\n enterTimeout: _this.props.transitionEnterTimeout,\n leaveTimeout: _this.props.transitionLeaveTimeout\n }, child);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n // We need to provide this childFactory so that\n // ReactCSSTransitionGroupChild can receive updates to name, enter, and\n // leave while it is leaving.\n\n\n CSSTransitionGroup.prototype.render = function render() {\n return _react2.default.createElement(_TransitionGroup2.default, _extends({}, this.props, { childFactory: this._wrapChild }));\n };\n\n return CSSTransitionGroup;\n}(_react2.default.Component);\n\nCSSTransitionGroup.displayName = 'CSSTransitionGroup';\n\n\nCSSTransitionGroup.propTypes = propTypes;\nCSSTransitionGroup.defaultProps = defaultProps;\n\nexports.default = CSSTransitionGroup;\nmodule.exports = exports['default'];" | |
}, { | |
"id": "./node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"name": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"index": 722, | |
"index2": 720, | |
"size": 7846, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js", | |
"issuerId": "./node_modules/react-transition-group/CSSTransitionGroup.js", | |
"issuerName": "./~/react-transition-group/CSSTransitionGroup.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroup.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js", | |
"module": "./~/react-transition-group/CSSTransitionGroup.js", | |
"moduleName": "./~/react-transition-group/CSSTransitionGroup.js", | |
"type": "cjs require", | |
"userRequest": "./CSSTransitionGroupChild", | |
"loc": "19:31-67" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 8, | |
"source": "'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _addClass = require('dom-helpers/class/addClass');\n\nvar _addClass2 = _interopRequireDefault(_addClass);\n\nvar _removeClass = require('dom-helpers/class/removeClass');\n\nvar _removeClass2 = _interopRequireDefault(_removeClass);\n\nvar _requestAnimationFrame = require('dom-helpers/util/requestAnimationFrame');\n\nvar _requestAnimationFrame2 = _interopRequireDefault(_requestAnimationFrame);\n\nvar _properties = require('dom-helpers/transition/properties');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactDom = require('react-dom');\n\nvar _PropTypes = require('./utils/PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar events = [];\nif (_properties.transitionEnd) events.push(_properties.transitionEnd);\nif (_properties.animationEnd) events.push(_properties.animationEnd);\n\nfunction addEndListener(node, listener) {\n if (events.length) {\n events.forEach(function (e) {\n return node.addEventListener(e, listener, false);\n });\n } else {\n setTimeout(listener, 0);\n }\n\n return function () {\n if (!events.length) return;\n events.forEach(function (e) {\n return node.removeEventListener(e, listener, false);\n });\n };\n}\n\nvar propTypes = {\n children: _propTypes2.default.node,\n name: _PropTypes.nameShape.isRequired,\n\n // Once we require timeouts to be specified, we can remove the\n // boolean flags (appear etc.) and just accept a number\n // or a bool for the timeout flags (appearTimeout etc.)\n appear: _propTypes2.default.bool,\n enter: _propTypes2.default.bool,\n leave: _propTypes2.default.bool,\n appearTimeout: _propTypes2.default.number,\n enterTimeout: _propTypes2.default.number,\n leaveTimeout: _propTypes2.default.number\n};\n\nvar CSSTransitionGroupChild = function (_React$Component) {\n _inherits(CSSTransitionGroupChild, _React$Component);\n\n function CSSTransitionGroupChild() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, CSSTransitionGroupChild);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.componentWillAppear = function (done) {\n if (_this.props.appear) {\n _this.transition('appear', done, _this.props.appearTimeout);\n } else {\n done();\n }\n }, _this.componentWillEnter = function (done) {\n if (_this.props.enter) {\n _this.transition('enter', done, _this.props.enterTimeout);\n } else {\n done();\n }\n }, _this.componentWillLeave = function (done) {\n if (_this.props.leave) {\n _this.transition('leave', done, _this.props.leaveTimeout);\n } else {\n done();\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n CSSTransitionGroupChild.prototype.componentWillMount = function componentWillMount() {\n this.classNameAndNodeQueue = [];\n this.transitionTimeouts = [];\n };\n\n CSSTransitionGroupChild.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unmounted = true;\n\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n this.transitionTimeouts.forEach(function (timeout) {\n clearTimeout(timeout);\n });\n\n this.classNameAndNodeQueue.length = 0;\n };\n\n CSSTransitionGroupChild.prototype.transition = function transition(animationType, finishCallback, timeout) {\n var node = (0, _reactDom.findDOMNode)(this);\n\n if (!node) {\n if (finishCallback) {\n finishCallback();\n }\n return;\n }\n\n var className = this.props.name[animationType] || this.props.name + '-' + animationType;\n var activeClassName = this.props.name[animationType + 'Active'] || className + '-active';\n var timer = null;\n var removeListeners = void 0;\n\n (0, _addClass2.default)(node, className);\n\n // Need to do this to actually trigger a transition.\n this.queueClassAndNode(activeClassName, node);\n\n // Clean-up the animation after the specified delay\n var finish = function finish(e) {\n if (e && e.target !== node) {\n return;\n }\n\n clearTimeout(timer);\n if (removeListeners) removeListeners();\n\n (0, _removeClass2.default)(node, className);\n (0, _removeClass2.default)(node, activeClassName);\n\n if (removeListeners) removeListeners();\n\n // Usually this optional callback is used for informing an owner of\n // a leave animation and telling it to remove the child.\n if (finishCallback) {\n finishCallback();\n }\n };\n\n if (timeout) {\n timer = setTimeout(finish, timeout);\n this.transitionTimeouts.push(timer);\n } else if (_properties.transitionEnd) {\n removeListeners = addEndListener(node, finish);\n }\n };\n\n CSSTransitionGroupChild.prototype.queueClassAndNode = function queueClassAndNode(className, node) {\n var _this2 = this;\n\n this.classNameAndNodeQueue.push({\n className: className,\n node: node\n });\n\n if (!this.rafHandle) {\n this.rafHandle = (0, _requestAnimationFrame2.default)(function () {\n return _this2.flushClassNameAndNodeQueue();\n });\n }\n };\n\n CSSTransitionGroupChild.prototype.flushClassNameAndNodeQueue = function flushClassNameAndNodeQueue() {\n if (!this.unmounted) {\n this.classNameAndNodeQueue.forEach(function (obj) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n /* eslint-disable no-unused-expressions */\n obj.node.scrollTop;\n /* eslint-enable no-unused-expressions */\n (0, _addClass2.default)(obj.node, obj.className);\n });\n }\n this.classNameAndNodeQueue.length = 0;\n this.rafHandle = null;\n };\n\n CSSTransitionGroupChild.prototype.render = function render() {\n var props = _extends({}, this.props);\n delete props.name;\n delete props.appear;\n delete props.enter;\n delete props.leave;\n delete props.appearTimeout;\n delete props.enterTimeout;\n delete props.leaveTimeout;\n delete props.children;\n return _react2.default.cloneElement(_react2.default.Children.only(this.props.children), props);\n };\n\n return CSSTransitionGroupChild;\n}(_react2.default.Component);\n\nCSSTransitionGroupChild.displayName = 'CSSTransitionGroupChild';\n\n\nCSSTransitionGroupChild.propTypes = propTypes;\n\nexports.default = CSSTransitionGroupChild;\nmodule.exports = exports['default'];" | |
}, { | |
"id": "./node_modules/react-transition-group/TransitionGroup.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js", | |
"name": "./~/react-transition-group/TransitionGroup.js", | |
"index": 718, | |
"index2": 712, | |
"size": 9681, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/index.js", | |
"issuerId": "./node_modules/react-transition-group/index.js", | |
"issuerName": "./~/react-transition-group/index.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/react-transition-group/index.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/index.js", | |
"module": "./~/react-transition-group/index.js", | |
"moduleName": "./~/react-transition-group/index.js", | |
"type": "cjs require", | |
"userRequest": "./TransitionGroup", | |
"loc": "7:23-51" | |
}, { | |
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroup.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js", | |
"module": "./~/react-transition-group/CSSTransitionGroup.js", | |
"moduleName": "./~/react-transition-group/CSSTransitionGroup.js", | |
"type": "cjs require", | |
"userRequest": "./TransitionGroup", | |
"loc": "15:23-51" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 7, | |
"source": "'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _chainFunction = require('chain-function');\n\nvar _chainFunction2 = _interopRequireDefault(_chainFunction);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _ChildMapping = require('./utils/ChildMapping');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n component: _propTypes2.default.any,\n childFactory: _propTypes2.default.func,\n children: _propTypes2.default.node\n};\n\nvar defaultProps = {\n component: 'span',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n\nvar TransitionGroup = function (_React$Component) {\n _inherits(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n _classCallCheck(this, TransitionGroup);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n _this.performAppear = function (key) {\n _this.currentlyTransitioningKeys[key] = true;\n\n var component = _this.childRefs[key];\n\n if (component.componentWillAppear) {\n component.componentWillAppear(_this._handleDoneAppearing.bind(_this, key));\n } else {\n _this._handleDoneAppearing(key);\n }\n };\n\n _this._handleDoneAppearing = function (key) {\n var component = _this.childRefs[key];\n if (component && component.componentDidAppear) {\n component.componentDidAppear();\n }\n\n delete _this.currentlyTransitioningKeys[key];\n\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n // This was removed before it had fully appeared. Remove it.\n _this.performLeave(key);\n }\n };\n\n _this.performEnter = function (key) {\n _this.currentlyTransitioningKeys[key] = true;\n\n var component = _this.childRefs[key];\n\n if (component.componentWillEnter) {\n component.componentWillEnter(_this._handleDoneEntering.bind(_this, key));\n } else {\n _this._handleDoneEntering(key);\n }\n };\n\n _this._handleDoneEntering = function (key) {\n var component = _this.childRefs[key];\n if (component && component.componentDidEnter) {\n component.componentDidEnter();\n }\n\n delete _this.currentlyTransitioningKeys[key];\n\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n // This was removed before it had fully entered. Remove it.\n _this.performLeave(key);\n }\n };\n\n _this.performLeave = function (key) {\n _this.currentlyTransitioningKeys[key] = true;\n\n var component = _this.childRefs[key];\n if (component.componentWillLeave) {\n component.componentWillLeave(_this._handleDoneLeaving.bind(_this, key));\n } else {\n // Note that this is somewhat dangerous b/c it calls setState()\n // again, effectively mutating the component before all the work\n // is done.\n _this._handleDoneLeaving(key);\n }\n };\n\n _this._handleDoneLeaving = function (key) {\n var component = _this.childRefs[key];\n\n if (component && component.componentDidLeave) {\n component.componentDidLeave();\n }\n\n delete _this.currentlyTransitioningKeys[key];\n\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n if (currentChildMapping && currentChildMapping.hasOwnProperty(key)) {\n // This entered again before it fully left. Add it again.\n _this.performEnter(key);\n } else {\n _this.setState(function (state) {\n var newChildren = _extends({}, state.children);\n delete newChildren[key];\n return { children: newChildren };\n });\n }\n };\n\n _this.childRefs = Object.create(null);\n\n _this.state = {\n children: (0, _ChildMapping.getChildMapping)(props.children)\n };\n return _this;\n }\n\n TransitionGroup.prototype.componentWillMount = function componentWillMount() {\n this.currentlyTransitioningKeys = {};\n this.keysToEnter = [];\n this.keysToLeave = [];\n };\n\n TransitionGroup.prototype.componentDidMount = function componentDidMount() {\n var initialChildMapping = this.state.children;\n for (var key in initialChildMapping) {\n if (initialChildMapping[key]) {\n this.performAppear(key);\n }\n }\n };\n\n TransitionGroup.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var nextChildMapping = (0, _ChildMapping.getChildMapping)(nextProps.children);\n var prevChildMapping = this.state.children;\n\n this.setState({\n children: (0, _ChildMapping.mergeChildMappings)(prevChildMapping, nextChildMapping)\n });\n\n for (var key in nextChildMapping) {\n var hasPrev = prevChildMapping && prevChildMapping.hasOwnProperty(key);\n if (nextChildMapping[key] && !hasPrev && !this.currentlyTransitioningKeys[key]) {\n this.keysToEnter.push(key);\n }\n }\n\n for (var _key in prevChildMapping) {\n var hasNext = nextChildMapping && nextChildMapping.hasOwnProperty(_key);\n if (prevChildMapping[_key] && !hasNext && !this.currentlyTransitioningKeys[_key]) {\n this.keysToLeave.push(_key);\n }\n }\n\n // If we want to someday check for reordering, we could do it here.\n };\n\n TransitionGroup.prototype.componentDidUpdate = function componentDidUpdate() {\n var keysToEnter = this.keysToEnter;\n this.keysToEnter = [];\n keysToEnter.forEach(this.performEnter);\n\n var keysToLeave = this.keysToLeave;\n this.keysToLeave = [];\n keysToLeave.forEach(this.performLeave);\n };\n\n TransitionGroup.prototype.render = function render() {\n var _this2 = this;\n\n // TODO: we could get rid of the need for the wrapper node\n // by cloning a single child\n var childrenToRender = [];\n\n var _loop = function _loop(key) {\n var child = _this2.state.children[key];\n if (child) {\n var isCallbackRef = typeof child.ref !== 'string';\n var factoryChild = _this2.props.childFactory(child);\n var ref = function ref(r) {\n _this2.childRefs[key] = r;\n };\n\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(isCallbackRef, 'string refs are not supported on children of TransitionGroup and will be ignored. ' + 'Please use a callback ref instead: https://facebook.github.io/react/docs/refs-and-the-dom.html#the-ref-callback-attribute') : void 0;\n\n // Always chaining the refs leads to problems when the childFactory\n // wraps the child. The child ref callback gets called twice with the\n // wrapper and the child. So we only need to chain the ref if the\n // factoryChild is not different from child.\n if (factoryChild === child && isCallbackRef) {\n ref = (0, _chainFunction2.default)(child.ref, ref);\n }\n\n // You may need to apply reactive updates to a child as it is leaving.\n // The normal React way to do it won't work since the child will have\n // already been removed. In case you need this behavior you can provide\n // a childFactory function to wrap every child, even the ones that are\n // leaving.\n childrenToRender.push(_react2.default.cloneElement(factoryChild, {\n key: key,\n ref: ref\n }));\n }\n };\n\n for (var key in this.state.children) {\n _loop(key);\n }\n\n // Do not forward TransitionGroup props to primitive DOM nodes\n var props = _extends({}, this.props);\n delete props.transitionLeave;\n delete props.transitionName;\n delete props.transitionAppear;\n delete props.transitionEnter;\n delete props.childFactory;\n delete props.transitionLeaveTimeout;\n delete props.transitionEnterTimeout;\n delete props.transitionAppearTimeout;\n delete props.component;\n\n return _react2.default.createElement(this.props.component, props, childrenToRender);\n };\n\n return TransitionGroup;\n}(_react2.default.Component);\n\nTransitionGroup.displayName = 'TransitionGroup';\n\n\nTransitionGroup.propTypes = propTypes;\nTransitionGroup.defaultProps = defaultProps;\n\nexports.default = TransitionGroup;\nmodule.exports = exports['default'];" | |
}, { | |
"id": "./node_modules/react-transition-group/index.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/index.js", | |
"name": "./~/react-transition-group/index.js", | |
"index": 716, | |
"index2": 722, | |
"size": 484, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx", | |
"issuerId": "./src/apollo-builder/layout/Preview/component.tsx", | |
"issuerName": "./src/apollo-builder/layout/Preview/component.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Preview/component.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx", | |
"module": "./src/apollo-builder/layout/Preview/component.tsx", | |
"moduleName": "./src/apollo-builder/layout/Preview/component.tsx", | |
"type": "harmony import", | |
"userRequest": "react-transition-group", | |
"loc": "15:0-60" | |
}, { | |
"moduleId": "./src/apollo-builder/ui/ControlPanelMenu.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ControlPanelMenu.tsx", | |
"module": "./src/apollo-builder/ui/ControlPanelMenu.tsx", | |
"moduleName": "./src/apollo-builder/ui/ControlPanelMenu.tsx", | |
"type": "harmony import", | |
"userRequest": "react-transition-group", | |
"loc": "15:0-60" | |
}], | |
"usedExports": ["CSSTransitionGroup"], | |
"providedExports": null, | |
"depth": 6, | |
"source": "'use strict';\n\nvar _CSSTransitionGroup = require('./CSSTransitionGroup');\n\nvar _CSSTransitionGroup2 = _interopRequireDefault(_CSSTransitionGroup);\n\nvar _TransitionGroup = require('./TransitionGroup');\n\nvar _TransitionGroup2 = _interopRequireDefault(_TransitionGroup);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n TransitionGroup: _TransitionGroup2.default,\n CSSTransitionGroup: _CSSTransitionGroup2.default\n};" | |
}, { | |
"id": "./node_modules/react-transition-group/utils/ChildMapping.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/utils/ChildMapping.js", | |
"name": "./~/react-transition-group/utils/ChildMapping.js", | |
"index": 721, | |
"index2": 711, | |
"size": 2698, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js", | |
"issuerId": "./node_modules/react-transition-group/TransitionGroup.js", | |
"issuerName": "./~/react-transition-group/TransitionGroup.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/react-transition-group/TransitionGroup.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js", | |
"module": "./~/react-transition-group/TransitionGroup.js", | |
"moduleName": "./~/react-transition-group/TransitionGroup.js", | |
"type": "cjs require", | |
"userRequest": "./utils/ChildMapping", | |
"loc": "23:20-51" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 8, | |
"source": "'use strict';\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\n\nvar _react = require('react');\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children) {\n if (!children) {\n return children;\n }\n var result = {};\n _react.Children.map(children, function (child) {\n return child;\n }).forEach(function (child) {\n result[child.key] = child;\n });\n return result;\n}\n\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n if (next.hasOwnProperty(key)) {\n return next[key];\n }\n\n return prev[key];\n }\n\n // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n var nextKeysPending = {};\n\n var pendingKeys = [];\n for (var prevKey in prev) {\n if (next.hasOwnProperty(prevKey)) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i = void 0;\n var childMapping = {};\n for (var nextKey in next) {\n if (nextKeysPending.hasOwnProperty(nextKey)) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n childMapping[nextKey] = getValueForKey(nextKey);\n }\n\n // Finally, add the keys which didn't appear before any key in `next`\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}" | |
}, { | |
"id": "./node_modules/react-transition-group/utils/PropTypes.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/utils/PropTypes.js", | |
"name": "./~/react-transition-group/utils/PropTypes.js", | |
"index": 729, | |
"index2": 719, | |
"size": 1768, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js", | |
"issuerId": "./node_modules/react-transition-group/CSSTransitionGroup.js", | |
"issuerName": "./~/react-transition-group/CSSTransitionGroup.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroup.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroup.js", | |
"module": "./~/react-transition-group/CSSTransitionGroup.js", | |
"moduleName": "./~/react-transition-group/CSSTransitionGroup.js", | |
"type": "cjs require", | |
"userRequest": "./utils/PropTypes", | |
"loc": "23:17-45" | |
}, { | |
"moduleId": "./node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/CSSTransitionGroupChild.js", | |
"module": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"moduleName": "./~/react-transition-group/CSSTransitionGroupChild.js", | |
"type": "cjs require", | |
"userRequest": "./utils/PropTypes", | |
"loc": "31:17-45" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 8, | |
"source": "'use strict';\n\nexports.__esModule = true;\nexports.nameShape = undefined;\nexports.transitionTimeout = transitionTimeout;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transitionTimeout(transitionType) {\n var timeoutPropName = 'transition' + transitionType + 'Timeout';\n var enabledPropName = 'transition' + transitionType;\n\n return function (props) {\n // If the transition is enabled\n if (props[enabledPropName]) {\n // If no timeout duration is provided\n if (props[timeoutPropName] == null) {\n return new Error(timeoutPropName + ' wasn\\'t supplied to CSSTransitionGroup: ' + 'this can cause unreliable animations and won\\'t be supported in ' + 'a future version of React. See ' + 'https://fb.me/react-animation-transition-group-timeout for more ' + 'information.');\n\n // If the duration isn't a number\n } else if (typeof props[timeoutPropName] !== 'number') {\n return new Error(timeoutPropName + ' must be a number (in milliseconds)');\n }\n }\n\n return null;\n };\n}\n\nvar nameShape = exports.nameShape = _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n enter: _propTypes2.default.string,\n leave: _propTypes2.default.string,\n active: _propTypes2.default.string\n}), _propTypes2.default.shape({\n enter: _propTypes2.default.string,\n enterActive: _propTypes2.default.string,\n leave: _propTypes2.default.string,\n leaveActive: _propTypes2.default.string,\n appear: _propTypes2.default.string,\n appearActive: _propTypes2.default.string\n})]);" | |
}, { | |
"id": "./node_modules/warning/browser.js", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/warning/browser.js", | |
"name": "./~/warning/browser.js", | |
"index": 720, | |
"index2": 710, | |
"size": 1807, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js", | |
"issuerId": "./node_modules/react-transition-group/TransitionGroup.js", | |
"issuerName": "./~/react-transition-group/TransitionGroup.js", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./node_modules/react-transition-group/TransitionGroup.js", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-transition-group/TransitionGroup.js", | |
"module": "./~/react-transition-group/TransitionGroup.js", | |
"moduleName": "./~/react-transition-group/TransitionGroup.js", | |
"type": "cjs require", | |
"userRequest": "warning", | |
"loc": "19:15-33" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 8, | |
"source": "/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n" | |
}, { | |
"id": "./src/apollo-builder/app.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"name": "./src/apollo-builder/app.tsx", | |
"index": 655, | |
"index2": 751, | |
"size": 5136, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx", | |
"issuerId": "./src/dev-app/app.tsx", | |
"issuerName": "./src/dev-app/app.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/dev-app/app.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx", | |
"module": "./src/dev-app/app.tsx", | |
"moduleName": "./src/dev-app/app.tsx", | |
"type": "harmony import", | |
"userRequest": "apollo-builder/app", | |
"loc": "2:0-37" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 3, | |
"source": "/* Role: Defines the App component, i.e. the main entry point of the application,\r\n which is wrapped with the internationalization provider after the user's browser location is queried */\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport styled from './utils/styled';\r\nimport appContainer from './app-container';\r\nimport Builder from './core/builder/model';\r\nimport Project from './core/project/model';\r\nimport Workspace from './layout/Workspace/connect';\r\nimport IconButton from './ui/buttons/IconButton';\r\nimport StatusMessage from './ui/StatusMessage/connect';\r\nimport Flex from './ui/Flex';\r\nimport CommandBar from './ui/header/CommandBar';\r\nimport FocusObserver from './ui/FocusObserver';\r\nimport Preview from './layout/Preview/connect';\r\nvar BackgroundFlex = (_a = [\"\\n background-color: \", \";\\n\"], _a.raw = [\"\\n background-color: \", \";\\n\"], styled(Flex)(_a, function (props) { return props.theme.workspaceBackground; }));\r\nvar CommandBarPositioning = (_b = [\"\\n z-index: 2;\\n margin: 0 auto;\\n\"], _b.raw = [\"\\n z-index: 2;\\n margin: 0 auto;\\n\"], styled.div(_b));\r\nvar WorkspacePositioning = (_c = [\"\\n flex: 1;\\n box-sizing: border-box;\\n height: 100%;\\n\"], _c.raw = [\"\\n flex: 1;\\n box-sizing: border-box;\\n height: 100%;\\n\"], styled.div(_c));\r\nvar App = (function (_super) {\r\n __extends(App, _super);\r\n function App(props) {\r\n var _this = _super.call(this, props) || this;\r\n _this.configuration = props.configuration;\r\n _this.host = props.configuration.host;\r\n _this.builderModel = new Builder(_this.host, _this.configuration);\r\n // use the built-in project for now\r\n _this.builderModel.setProject(new Project());\r\n return _this;\r\n }\r\n App.prototype.componentDidMount = function () {\r\n this.builderModel.workspace.scaleSpreadToFit();\r\n };\r\n // the Workspace should be 100% height & width\r\n App.prototype.render = function () {\r\n var _this = this;\r\n return (React.createElement(FocusObserver, { style: { display: 'flex' } },\r\n React.createElement(BackgroundFlex, { column: true, center: true },\r\n React.createElement(CommandBarPositioning, null,\r\n React.createElement(CommandBar, null,\r\n React.createElement(IconButton, { iconKey: \"undo\", isActive: false, onClick: this.builderModel.workspace.undo },\r\n React.createElement(FormattedMessage, { id: \"undo\", defaultMessage: \"Undo\" })),\r\n React.createElement(IconButton, { iconKey: \"redo\", isActive: false, onClick: this.builderModel.workspace.redo },\r\n React.createElement(FormattedMessage, { id: \"redo\", defaultMessage: \"Redo\" })),\r\n React.createElement(IconButton, { iconKey: \"review\", isActive: false, onClick: function () { return _this.builderModel.workspace.showPreview(); } },\r\n React.createElement(FormattedMessage, { id: \"preview\", defaultMessage: \"Preview\" })),\r\n React.createElement(IconButton, { iconKey: \"save\", isActive: false, onClick: function () { return _this.builderModel.workspace.saveProject(); } },\r\n React.createElement(FormattedMessage, { id: \"save\", defaultMessage: \"Save\" })))),\r\n React.createElement(StatusMessage, { model: this.builderModel.workspace }),\r\n React.createElement(Flex, { row: true, left: true, fill: true, style: { zIndex: 1 } },\r\n React.createElement(WorkspacePositioning, null,\r\n React.createElement(Workspace, { model: this.builderModel.workspace }))),\r\n React.createElement(Preview, { model: this.builderModel.workspace }))));\r\n };\r\n return App;\r\n}(React.Component));\r\nexport default appContainer(App);\r\nvar _a, _b, _c;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/common/action-stream.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/action-stream.tsx", | |
"name": "./src/apollo-builder/common/action-stream.tsx", | |
"index": 665, | |
"index2": 659, | |
"size": 1373, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"module": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"type": "harmony import", | |
"userRequest": "../../common/action-stream", | |
"loc": "23:0-58" | |
}], | |
"usedExports": ["actionStream"], | |
"providedExports": ["actionStream"], | |
"depth": 6, | |
"source": "import { Subject } from 'rxjs/Subject';\r\nimport { $$observable } from 'rxjs/symbol/observable';\r\nexport var actionStream = function (fn) {\r\n var subject = new Subject();\r\n var actionFn = (function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var value = typeof fn === 'function' ? fn.apply(void 0, args) : args[0];\r\n subject.next(value);\r\n return value;\r\n });\r\n actionFn.subscribe = subject.subscribe.bind(subject);\r\n actionFn[$$observable] = function () { return actionFn; };\r\n return actionFn;\r\n};\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/action-stream.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/action-stream.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/common/container.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/container.tsx", | |
"name": "./src/apollo-builder/common/container.tsx", | |
"index": 666, | |
"index2": 662, | |
"size": 2818, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"module": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"type": "harmony import", | |
"userRequest": "../../common/container", | |
"loc": "24:0-51" | |
}], | |
"usedExports": ["Container"], | |
"providedExports": ["Container"], | |
"depth": 6, | |
"source": "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Defines a readonly container */\r\nimport { action, observable } from 'mobx';\r\nimport memoize from '../utils/memoize';\r\nimport { add, zero } from './size';\r\nvar Container = (function () {\r\n function Container(_a) {\r\n var _b = _a === void 0 ? zero : _a, _c = _b.width, width = _c === void 0 ? 0 : _c, _d = _b.height, height = _d === void 0 ? 0 : _d;\r\n this._size = { width: width, height: height };\r\n var self = this;\r\n this.size = observable({\r\n get width() { return self._size.width; },\r\n get height() { return self._size.height; }\r\n });\r\n }\r\n Object.defineProperty(Container.prototype, \"readonly\", {\r\n get: function () { return { size: this.size }; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Container.prototype.resize = function (size) {\r\n this._size = size;\r\n };\r\n Container.prototype.resizeBy = function (_a) {\r\n var _b = _a === void 0 ? zero : _a, _c = _b.width, width = _c === void 0 ? 0 : _c, _d = _b.height, height = _d === void 0 ? 0 : _d;\r\n this._size = add(this._size, { width: width, height: height });\r\n };\r\n return Container;\r\n}());\r\nexport { Container };\r\n__decorate([\r\n observable\r\n], Container.prototype, \"_size\", void 0);\r\n__decorate([\r\n memoize\r\n], Container.prototype, \"readonly\", null);\r\n__decorate([\r\n action.bound\r\n], Container.prototype, \"resize\", null);\r\n__decorate([\r\n action.bound\r\n], Container.prototype, \"resizeBy\", null);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/container.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/container.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/common/size.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/size.tsx", | |
"name": "./src/apollo-builder/common/size.tsx", | |
"index": 668, | |
"index2": 661, | |
"size": 1068, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/MeasureContainer.tsx", | |
"issuerId": "./src/apollo-builder/ui/MeasureContainer.tsx", | |
"issuerName": "./src/apollo-builder/ui/MeasureContainer.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/ui/MeasureContainer.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/MeasureContainer.tsx", | |
"module": "./src/apollo-builder/ui/MeasureContainer.tsx", | |
"moduleName": "./src/apollo-builder/ui/MeasureContainer.tsx", | |
"type": "harmony import", | |
"userRequest": "../common/size", | |
"loc": "14:0-54" | |
}, { | |
"moduleId": "./src/apollo-builder/common/container.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/container.tsx", | |
"module": "./src/apollo-builder/common/container.tsx", | |
"moduleName": "./src/apollo-builder/common/container.tsx", | |
"type": "harmony import", | |
"userRequest": "./size", | |
"loc": "10:0-35" | |
}], | |
"usedExports": ["equals", "zero", "add"], | |
"providedExports": ["zero", "add", "equals", "default"], | |
"depth": 7, | |
"source": "export var zero = { width: 0, height: 0 };\r\nexport var add = function (left, right) {\r\n return ({ width: left.width + right.width, height: left.height + right.height });\r\n};\r\nexport var equals = function (left, right) {\r\n return (left.width === right.width) && (left.height === right.height);\r\n};\r\nexport default { zero: zero, add: add };\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/size.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/size.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/core/actionStack/ActionSink.ts", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionSink.ts", | |
"name": "./src/apollo-builder/core/actionStack/ActionSink.ts", | |
"index": 678, | |
"index2": 668, | |
"size": 1367, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"module": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"type": "harmony import", | |
"userRequest": "../../core/actionStack/ActionSink", | |
"loc": "29:0-69" | |
}, { | |
"moduleId": "./src/apollo-builder/core/actionStack/index.ts", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/index.ts", | |
"module": "./src/apollo-builder/core/actionStack/index.ts", | |
"moduleName": "./src/apollo-builder/core/actionStack/index.ts", | |
"type": "harmony import", | |
"userRequest": "./ActionSink", | |
"loc": "2:0-48" | |
}], | |
"usedExports": ["createActionSink"], | |
"providedExports": ["createActionSink"], | |
"depth": 6, | |
"source": "import { Subject } from 'rxjs/Subject';\r\nexport function createActionSink() {\r\n var action$ = new Subject();\r\n function pushFn(actionOrInvoke, revoke) {\r\n var undoableAction = typeof actionOrInvoke === 'object'\r\n ? actionOrInvoke\r\n : {\r\n invoke: function () {\r\n actionOrInvoke();\r\n },\r\n revoke: function () {\r\n revoke();\r\n }\r\n };\r\n undoableAction.invoke();\r\n action$.next(undoableAction);\r\n }\r\n return Object.assign(pushFn, { action$: action$ });\r\n}\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionSink.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionSink.ts\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/core/actionStack/ActionSource.ts", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionSource.ts", | |
"name": "./src/apollo-builder/core/actionStack/ActionSource.ts", | |
"index": 671, | |
"index2": 663, | |
"size": 3127, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"module": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"type": "harmony import", | |
"userRequest": "../../core/actionStack/ActionSource", | |
"loc": "28:0-72" | |
}, { | |
"moduleId": "./src/apollo-builder/design/Element/model.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/model.tsx", | |
"module": "./src/apollo-builder/design/Element/model.tsx", | |
"moduleName": "./src/apollo-builder/design/Element/model.tsx", | |
"type": "harmony import", | |
"userRequest": "../../core/actionStack/ActionSource", | |
"loc": "11:0-72" | |
}, { | |
"moduleId": "./src/apollo-builder/design/Spread/model.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/model.tsx", | |
"module": "./src/apollo-builder/design/Spread/model.tsx", | |
"moduleName": "./src/apollo-builder/design/Spread/model.tsx", | |
"type": "harmony import", | |
"userRequest": "../../core/actionStack/ActionSource", | |
"loc": "21:0-72" | |
}], | |
"usedExports": ["ActionSourcesBase"], | |
"providedExports": ["composeActionSources", "ActionSourced", "ActionSourcesBase"], | |
"depth": 6, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { toStream } from 'mobx-utils/lib/mobx-utils';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { empty } from 'rxjs/observable/empty';\r\nimport { from } from 'rxjs/observable/from';\r\nimport { defer } from 'rxjs/observable/defer';\r\nimport 'rxjs/add/operator/map';\r\nimport 'rxjs/add/operator/switchMap';\r\nimport 'rxjs/add/operator/startWith';\r\nexport function composeActionSources(sources) {\r\n if (!sources) {\r\n return empty();\r\n }\r\n if (sources instanceof Array) {\r\n return Observable.from(sources)\r\n .mergeMap(function (source) {\r\n return !source ? empty() :\r\n source.action$ ? source.action$ :\r\n source;\r\n });\r\n }\r\n if (sources.action$) {\r\n return sources.action$;\r\n }\r\n return sources;\r\n}\r\nexport function ActionSourced(Base) {\r\n return (function (_super) {\r\n __extends(class_1, _super);\r\n function class_1() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.apply(this, args) || this;\r\n _this.action$ = defer(function () {\r\n return from(toStream(function () { return _this.getActionSources(); }))\r\n .startWith(_this.getActionSources());\r\n })\r\n .switchMap(function (sources) { return composeActionSources(sources); });\r\n return _this;\r\n }\r\n return class_1;\r\n }(Base));\r\n}\r\nvar ActionSourcesProviderBase = (function () {\r\n function ActionSourcesProviderBase() {\r\n }\r\n ActionSourcesProviderBase.prototype.getActionSources = function () {\r\n return undefined;\r\n };\r\n return ActionSourcesProviderBase;\r\n}());\r\nexport var ActionSourcesBase = ActionSourced(ActionSourcesProviderBase);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionSource.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionSource.ts\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/core/actionStack/ActionStackController.ts", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionStackController.ts", | |
"name": "./src/apollo-builder/core/actionStack/ActionStackController.ts", | |
"index": 681, | |
"index2": 675, | |
"size": 3621, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"module": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"type": "harmony import", | |
"userRequest": "../../core/actionStack/ActionStackController", | |
"loc": "27:0-81" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { observable, computed, action } from 'mobx';\r\nvar ActionStack = (function () {\r\n function ActionStack() {\r\n this.undoActions = [];\r\n this.redoActions = [];\r\n }\r\n Object.defineProperty(ActionStack.prototype, \"hasUndo\", {\r\n get: function () { return this.undoActions.length > 0; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ActionStack.prototype, \"hasRedo\", {\r\n get: function () { return this.redoActions.length > 0; },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ActionStack.prototype.addAction = function (action) {\r\n if (this.redoActions.length) {\r\n this.redoActions.splice(0, this.redoActions.length);\r\n }\r\n if (action.reduce && this.undoActions.length) {\r\n var previousAction = this.undoActions[this.undoActions.length - 1];\r\n var reducedAction = action.reduce(previousAction);\r\n if (reducedAction) {\r\n this.undoActions.splice(this.undoActions.length - 1, 1, reducedAction);\r\n return;\r\n }\r\n }\r\n this.undoActions.push(action);\r\n };\r\n ActionStack.prototype.undo = function () {\r\n var lastAction = this.undoActions.pop();\r\n if (!lastAction) {\r\n return;\r\n }\r\n lastAction.revoke();\r\n this.redoActions.push(lastAction);\r\n };\r\n ActionStack.prototype.redo = function () {\r\n var lastAction = this.redoActions.pop();\r\n if (!lastAction) {\r\n return;\r\n }\r\n lastAction.invoke();\r\n this.undoActions.push(lastAction);\r\n };\r\n return ActionStack;\r\n}());\r\nexport default ActionStack;\r\n__decorate([\r\n observable.shallow\r\n], ActionStack.prototype, \"undoActions\", void 0);\r\n__decorate([\r\n observable.shallow\r\n], ActionStack.prototype, \"redoActions\", void 0);\r\n__decorate([\r\n computed\r\n], ActionStack.prototype, \"hasUndo\", null);\r\n__decorate([\r\n computed\r\n], ActionStack.prototype, \"hasRedo\", null);\r\n__decorate([\r\n action.bound\r\n], ActionStack.prototype, \"addAction\", null);\r\n__decorate([\r\n action.bound\r\n], ActionStack.prototype, \"undo\", null);\r\n__decorate([\r\n action.bound\r\n], ActionStack.prototype, \"redo\", null);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionStackController.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/ActionStackController.ts\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/core/actionStack/InstanceUndoableAction.ts", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/InstanceUndoableAction.ts", | |
"name": "./src/apollo-builder/core/actionStack/InstanceUndoableAction.ts", | |
"index": 677, | |
"index2": 667, | |
"size": 2421, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/index.ts", | |
"issuerId": "./src/apollo-builder/core/actionStack/index.ts", | |
"issuerName": "./src/apollo-builder/core/actionStack/index.ts", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/core/actionStack/index.ts", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/index.ts", | |
"module": "./src/apollo-builder/core/actionStack/index.ts", | |
"moduleName": "./src/apollo-builder/core/actionStack/index.ts", | |
"type": "harmony import", | |
"userRequest": "./InstanceUndoableAction", | |
"loc": "1:0-58" | |
}], | |
"usedExports": ["undoableAction"], | |
"providedExports": ["undoableAction"], | |
"depth": 9, | |
"source": "export function undoableAction(options) {\r\n var reduceSame = options.reduceSameAction;\r\n var reduceSameActionAndModel = options.reduceSameActionAndModel;\r\n var setupReduce = function (model, data) {\r\n return reduceSameActionAndModel ?\r\n function (previousAction) {\r\n if (descriptor.is(previousAction) && previousAction.model === model) {\r\n var reducedActionData = reduceSameActionAndModel.call(model, data, previousAction.data);\r\n return reducedActionData ? descriptor.create(model, reducedActionData) : undefined;\r\n }\r\n return undefined;\r\n } :\r\n reduceSame ?\r\n function (previousAction) {\r\n if (descriptor.is(previousAction)) {\r\n var reducedAction = reduceSame.call(model, data, previousAction);\r\n return reducedAction ? descriptor.create(reducedAction.model, reducedAction.data) : undefined;\r\n }\r\n return undefined;\r\n } :\r\n undefined;\r\n };\r\n var descriptor = {\r\n type: Symbol(),\r\n is: function (action) { return action.type === descriptor.type; },\r\n create: function (model, data) { return ({\r\n type: descriptor.type,\r\n model: model,\r\n data: data,\r\n invoke: function () { return options.invoke.call(model, data); },\r\n revoke: function () { return options.revoke.call(model, data); },\r\n reduce: setupReduce(model, data)\r\n }); }\r\n };\r\n return descriptor;\r\n}\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/InstanceUndoableAction.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/InstanceUndoableAction.ts\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/core/actionStack/index.ts", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/index.ts", | |
"name": "./src/apollo-builder/core/actionStack/index.ts", | |
"index": 676, | |
"index2": 669, | |
"size": 852, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/model.tsx", | |
"issuerId": "./src/apollo-builder/design/EditableText/model.tsx", | |
"issuerName": "./src/apollo-builder/design/EditableText/model.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/EditableText/model.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/model.tsx", | |
"module": "./src/apollo-builder/design/EditableText/model.tsx", | |
"moduleName": "./src/apollo-builder/design/EditableText/model.tsx", | |
"type": "harmony import", | |
"userRequest": "../../core/actionStack", | |
"loc": "20:0-74" | |
}], | |
"usedExports": ["createActionSink", "undoableAction"], | |
"providedExports": ["undoableAction", "createActionSink"], | |
"depth": 8, | |
"source": "export { undoableAction } from './InstanceUndoableAction';\r\nexport { createActionSink } from './ActionSink';\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/index.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/actionStack/index.ts\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/core/builder/model.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/builder/model.tsx", | |
"name": "./src/apollo-builder/core/builder/model.tsx", | |
"index": 663, | |
"index2": 677, | |
"size": 2345, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"issuerId": "./src/apollo-builder/app.tsx", | |
"issuerName": "./src/apollo-builder/app.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/app.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"module": "./src/apollo-builder/app.tsx", | |
"moduleName": "./src/apollo-builder/app.tsx", | |
"type": "harmony import", | |
"userRequest": "./core/builder/model", | |
"loc": "17:0-43" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 4, | |
"source": "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: the top-level builder model. Singleton instantiated on page load */\r\nimport { action, observable } from 'mobx';\r\nimport Workspace from '../../layout/Workspace/model';\r\nvar Builder = (function () {\r\n function Builder(host, configuration) {\r\n /**\r\n * On page load the builder doesn't have content to display immediately. We show a loading spinner (or whatever) until\r\n * everything's ready. This flag tracks that state.\r\n */\r\n this.initialized = false;\r\n this.host = host;\r\n this.configuration = configuration;\r\n }\r\n Builder.prototype.setProject = function (project) {\r\n this.initialized = true;\r\n this.workspace = new Workspace(project, this.configuration);\r\n };\r\n return Builder;\r\n}());\r\nexport default Builder;\r\n__decorate([\r\n observable\r\n], Builder.prototype, \"initialized\", void 0);\r\n__decorate([\r\n observable\r\n], Builder.prototype, \"workspace\", void 0);\r\n__decorate([\r\n action.bound\r\n], Builder.prototype, \"setProject\", null);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/builder/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/builder/model.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/core/project/model.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/project/model.tsx", | |
"name": "./src/apollo-builder/core/project/model.tsx", | |
"index": 682, | |
"index2": 678, | |
"size": 1016, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"issuerId": "./src/apollo-builder/app.tsx", | |
"issuerName": "./src/apollo-builder/app.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/app.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"module": "./src/apollo-builder/app.tsx", | |
"moduleName": "./src/apollo-builder/app.tsx", | |
"type": "harmony import", | |
"userRequest": "./core/project/model", | |
"loc": "18:0-43" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 4, | |
"source": "/**\r\n * A project contains one or more products, each of which can be customized (e.g. a product suite). Where\r\n * do customization belong in the data model?\r\n */\r\nvar Project = (function () {\r\n function Project() {\r\n }\r\n return Project;\r\n}());\r\nexport default Project;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/project/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/project/model.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/EditableText/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/component.tsx", | |
"name": "./src/apollo-builder/design/EditableText/component.tsx", | |
"index": 704, | |
"index2": 694, | |
"size": 1840, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/connect.tsx", | |
"issuerId": "./src/apollo-builder/design/EditableText/connect.tsx", | |
"issuerName": "./src/apollo-builder/design/EditableText/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/EditableText/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/connect.tsx", | |
"module": "./src/apollo-builder/design/EditableText/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/EditableText/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "4:0-39" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 9, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\n// this file even needed any more? Could put simple tertiary ? : in connect\r\nvar EditableText = (function (_super) {\r\n __extends(EditableText, _super);\r\n function EditableText() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n EditableText.prototype.render = function () {\r\n if (!this.props.editing) {\r\n return this.props.children;\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n return EditableText;\r\n}(React.Component));\r\nexport default EditableText;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/EditableText/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/connect.tsx", | |
"name": "./src/apollo-builder/design/EditableText/connect.tsx", | |
"index": 703, | |
"index2": 695, | |
"size": 1087, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx", | |
"issuerId": "./src/apollo-builder/design/connects.tsx", | |
"issuerName": "./src/apollo-builder/design/connects.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/connects.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx", | |
"module": "./src/apollo-builder/design/connects.tsx", | |
"moduleName": "./src/apollo-builder/design/connects.tsx", | |
"type": "harmony import", | |
"userRequest": "./EditableText/connect", | |
"loc": "7:0-65" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 8, | |
"source": "import * as React from 'react';\r\nimport connect from '../../utils/connect';\r\nimport Text from '../Text/connect';\r\nimport EditableText from './component';\r\nexport default connect(EditableText)(function (model) { return ({\r\n children: (React.createElement(Text, { model: model.textModel })),\r\n editing: model.isEditing\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/EditableText/control/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/component.tsx", | |
"name": "./src/apollo-builder/design/EditableText/control/component.tsx", | |
"index": 709, | |
"index2": 702, | |
"size": 7922, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/connect.tsx", | |
"issuerId": "./src/apollo-builder/design/EditableText/control/connect.tsx", | |
"issuerName": "./src/apollo-builder/design/EditableText/control/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/EditableText/control/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/connect.tsx", | |
"module": "./src/apollo-builder/design/EditableText/control/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/EditableText/control/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "4:0-39" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 9, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\nimport styled from '../../../utils/styled';\r\nimport * as PropTypes from 'prop-types';\r\nvar TextEditWrapper = (_a = [\"\\n input::-ms-clear {\\n display: none;\\n }\\n\"], _a.raw = [\"\\n input::-ms-clear {\\n display: none;\\n }\\n\"], styled.div(_a));\r\nvar TextEditInput = (_b = [\"\\n outline: none;\\n border: none;\\n padding: 0;\\n border: \", \";\\n box-sizing: border-box;\\n background-color: transparent;\\n position: absolute;\\n top: 0;\\n left: 0;\\n\"], _b.raw = [\"\\n outline: none;\\n border: none;\\n padding: 0;\\n border: \", \";\\n box-sizing: border-box;\\n background-color: transparent;\\n position: absolute;\\n top: 0;\\n left: 0;\\n\"], styled.input(_b, function (props) { return props.theme.controlElementSelectedBorder; }));\r\n/**\r\n * Provides some styles for the unselected control component in the control layer: mouseover effects, etc.\r\n */\r\nvar UnselectedControlComponent = (_c = [\"\\n cursor: pointer;\\n box-sizing: border-box;\\n &:hover {\\n border: \", \";\\n }\\n\"], _c.raw = [\"\\n cursor: pointer;\\n box-sizing: border-box;\\n &:hover {\\n border: \", \";\\n }\\n\"], styled.div(_c, function (props) { return props.theme.controlElementHoverBorder; }));\r\nvar InputShadow = (_d = [\"\\n visibility: hidden;\\n height: 0;\\n white-space: pre;\\n overflow: scroll;\\n\"], _d.raw = [\"\\n visibility: hidden;\\n height: 0;\\n white-space: pre;\\n overflow: scroll;\\n\"], styled.span(_d));\r\nvar emojiIconRanges = \"(?:[\\u2700-\\u27BF]|(?:\\uD83C[\\uDDE6-\\uDDFF]){2}|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[#-9]\\uFE0F?\\u20E3|\\n\\u3299|\\u3297|\\u303D|\\u3030|\\u24C2|\\uD83C[\\uDD70-\\uDD71]|\\uD83C[\\uDD7E-\\uDD7F]|\\uD83C\\uDD8E|\\uD83C[\\uDD91-\\uDD9A]|\\uD83C[\\uDDE6-\\uDDFF]|\\n[\\uD83C[\\uDE01-\\uDE02]|\\uD83C\\uDE1A|\\uD83C\\uDE2F|[\\uD83C[\\uDE32-\\uDE3A]|[\\uD83C[\\uDE50-\\uDE51]|\\u203C|\\u2049|[\\u25AA-\\u25AB]|\\u25B6|\\u25C0|\\n[\\u25FB-\\u25FE]|\\u00A9|\\u00AE|\\u2122|\\u2139|\\uD83C\\uDC04|[\\u2600-\\u26FF]|\\u2B05|\\u2B06|\\u2B07|\\u2B1B|\\u2B1C|\\u2B50|\\u2B55|\\u231A|\\u231B|\\n\\u2328|\\u23CF|[\\u23E9-\\u23F3]|[\\u23F8-\\u23FA]|\\uD83C\\uDCCF|\\u2934|\\u2935|[\\u2190-\\u21FF])\";\r\n/**\r\n * The control component for editable text field. Unlike the design layer which can be transformed (scale/rotate) as a\r\n * single unit, we apply transformations individually to each control component to ensure the controls / styles aren't\r\n * affected.\r\n */\r\nvar EditableTextControl = (function (_super) {\r\n __extends(EditableTextControl, _super);\r\n function EditableTextControl() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.adjustFontSize = function (inputSize) {\r\n var factor = _this.props.fontSize > 50 ? 10 : 15;\r\n if ((inputSize >= _this.props.size.width) && _this.props.fontSize > 24) {\r\n _this.props.changeFontSize(Math.max(_this.props.fontSize\r\n - Math.floor(_this.props.fontSize / factor), 24));\r\n }\r\n };\r\n return _this;\r\n }\r\n EditableTextControl.prototype.componentDidMount = function () {\r\n var _this = this;\r\n if (this.context.focusControl) {\r\n this.subscription = this.context.focusControl.subscribe(function () {\r\n if (_this.inputField) {\r\n _this.inputField.focus();\r\n }\r\n });\r\n }\r\n };\r\n EditableTextControl.prototype.componentDidUpdate = function () {\r\n var inputShadowWidth = this.inputShadowElement ? this.inputShadowElement.getBoundingClientRect().width : 0;\r\n if (inputShadowWidth > this.props.size.width) {\r\n this.adjustFontSize(inputShadowWidth);\r\n }\r\n };\r\n EditableTextControl.prototype.componentWillUnmount = function () {\r\n this.inputField = undefined;\r\n this.inputShadowElement = undefined;\r\n if (this.subscription !== undefined) {\r\n this.subscription.unsubscribe();\r\n }\r\n };\r\n EditableTextControl.prototype.selectText = function (element) {\r\n if (!this.props.text) {\r\n element.setSelectionRange(0, element.value.length);\r\n }\r\n };\r\n EditableTextControl.prototype.pruneText = function (text) {\r\n // stripping out any emoji characters\r\n return text.replace(new RegExp(emojiIconRanges, 'g'), '');\r\n };\r\n EditableTextControl.prototype.render = function () {\r\n var _this = this;\r\n var _a = this.props, editing = _a.editing, size = _a.size, alignment = _a.alignment, fontFamily = _a.fontFamily, fontSize = _a.fontSize, color = _a.color, onFocusChange = _a.onFocusChange, text = _a.text, placeholder = _a.placeholder, designToScreenRatio = _a.designToScreenRatio, onSelecting = _a.onSelecting, changeText = _a.changeText;\r\n if (editing) {\r\n return (React.createElement(TextEditWrapper, null,\r\n React.createElement(TextEditInput, { type: \"text\", innerRef: function (input) { _this.inputField = input; }, style: {\r\n width: size.width * designToScreenRatio,\r\n height: size.height * designToScreenRatio,\r\n textAlign: alignment,\r\n fontFamily: fontFamily,\r\n fontSize: fontSize * designToScreenRatio,\r\n color: color,\r\n lineHeight: (size.height * designToScreenRatio) + 'px'\r\n }, onChange: function (e) { return changeText(_this.pruneText(e.currentTarget.value)); }, onFocus: function () { return onFocusChange && onFocusChange(true); }, onBlur: function () { return onFocusChange && onFocusChange(false); }, onMouseDown: onSelecting, onMouseUp: function (e) { return _this.selectText(e.currentTarget); }, value: text === undefined ? placeholder : text, autoFocus: true }),\r\n React.createElement(InputShadow, { style: {\r\n fontFamily: fontFamily,\r\n fontSize: fontSize + 'px',\r\n textAlign: alignment\r\n }, innerRef: function (inputShadowElement) { _this.inputShadowElement = inputShadowElement; } }, this.props.text)));\r\n }\r\n return (React.createElement(UnselectedControlComponent, { style: {\r\n width: size.width * designToScreenRatio,\r\n height: size.height * designToScreenRatio\r\n }, onMouseDown: onSelecting }));\r\n };\r\n return EditableTextControl;\r\n}(React.Component));\r\nEditableTextControl.contextTypes = { focusControl: PropTypes.object };\r\nexport default EditableTextControl;\r\nvar _a, _b, _c, _d;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/EditableText/control/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/connect.tsx", | |
"name": "./src/apollo-builder/design/EditableText/control/connect.tsx", | |
"index": 708, | |
"index2": 703, | |
"size": 1664, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx", | |
"issuerId": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"issuerName": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx", | |
"module": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../../EditableText/control/connect", | |
"loc": "19:0-69" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 8, | |
"source": "import * as React from 'react';\r\nimport connect from '../../../utils/connect';\r\nimport Text from '../../Text/connect';\r\nimport EditableText from './component';\r\nexport default connect(EditableText)(function (model, props) { return ({\r\n alignment: model.textModel.alignment,\r\n changeText: model.changeText,\r\n children: React.createElement(Text, { model: model.textModel }),\r\n color: model.textModel.color,\r\n editing: model.isEditing,\r\n fontFamily: model.textModel.fontFamily,\r\n fontSize: model.textModel.fontSize,\r\n size: model.container.size,\r\n text: model.textModel.text,\r\n placeholder: model.textModel.placeholder,\r\n focusControl: props.focusControl,\r\n onFocusChange: props.onFocusChange,\r\n designToScreenRatio: props.designToScreenRatio,\r\n onSelecting: model.selectionController.requestSelection,\r\n changeFontSize: model.changeFontSize\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/EditableText/model.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/model.tsx", | |
"name": "./src/apollo-builder/design/EditableText/model.tsx", | |
"index": 675, | |
"index2": 670, | |
"size": 4856, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"issuerId": "./src/apollo-builder/design/models.tsx", | |
"issuerName": "./src/apollo-builder/design/models.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/models.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"module": "./src/apollo-builder/design/models.tsx", | |
"moduleName": "./src/apollo-builder/design/models.tsx", | |
"type": "harmony import", | |
"userRequest": "./EditableText/model", | |
"loc": "7:0-68" | |
}, { | |
"moduleId": "./src/apollo-builder/design/Spread/model.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/model.tsx", | |
"module": "./src/apollo-builder/design/Spread/model.tsx", | |
"moduleName": "./src/apollo-builder/design/Spread/model.tsx", | |
"type": "harmony import", | |
"userRequest": "../EditableText/model", | |
"loc": "20:0-49" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Defines the base element's model as a common extension point */\r\nimport { action, computed } from 'mobx';\r\nimport ElementModel from '../Element/model';\r\nimport { createActionSink, undoableAction } from '../../core/actionStack';\r\nvar EditableTextModel = (function (_super) {\r\n __extends(EditableTextModel, _super);\r\n function EditableTextModel(container, selectionController, textModel) {\r\n var _this = _super.call(this) || this;\r\n _this.container = container;\r\n _this.selectionController = selectionController;\r\n _this.textModel = textModel;\r\n _this.actionSink = createActionSink();\r\n return _this;\r\n }\r\n Object.defineProperty(EditableTextModel.prototype, \"isEditing\", {\r\n get: function () {\r\n return this.selectionController.selected;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n EditableTextModel.prototype.getActionSources = function () {\r\n return [this.actionSink, this.textModel];\r\n };\r\n EditableTextModel.prototype.changeText = function (newText) {\r\n this.actionSink(EditableTextModel.changeTextAction.create(this, { newText: newText, oldText: this.textModel.text }));\r\n };\r\n EditableTextModel.prototype.changeAlignment = function (newAlignment) {\r\n var _this = this;\r\n var oldAlignment = this.textModel.alignment;\r\n this.actionSink(function () { return _this.textModel.alignment = newAlignment; }, function () { return _this.textModel.alignment = oldAlignment; });\r\n };\r\n // We need to define what font size units we'll use\r\n EditableTextModel.prototype.changeFontSize = function (newFontSize) {\r\n var _this = this;\r\n var oldFontSize = this.textModel.fontSize;\r\n this.actionSink(function () { return _this.textModel.fontSize = newFontSize; }, function () { return _this.textModel.fontSize = oldFontSize; });\r\n };\r\n EditableTextModel.prototype.changeColor = function (newColor) {\r\n this.textModel.color = newColor;\r\n };\r\n return EditableTextModel;\r\n}(ElementModel));\r\nEditableTextModel.changeTextAction = undoableAction({\r\n invoke: function (_a) {\r\n var newText = _a.newText;\r\n this.textModel.text = newText;\r\n },\r\n revoke: function (_a) {\r\n var oldText = _a.oldText;\r\n this.textModel.text = oldText;\r\n },\r\n reduceSameActionAndModel: function (_a, _b) {\r\n var newText = _a.newText;\r\n var oldText = _b.oldText;\r\n return { newText: newText, oldText: oldText };\r\n }\r\n});\r\n__decorate([\r\n computed\r\n], EditableTextModel.prototype, \"isEditing\", null);\r\n__decorate([\r\n action.bound\r\n], EditableTextModel.prototype, \"changeText\", null);\r\n__decorate([\r\n action.bound\r\n], EditableTextModel.prototype, \"changeAlignment\", null);\r\n__decorate([\r\n action.bound\r\n], EditableTextModel.prototype, \"changeFontSize\", null);\r\n__decorate([\r\n action.bound\r\n], EditableTextModel.prototype, \"changeColor\", null);\r\nexport default EditableTextModel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/model.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Element/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/connect.tsx", | |
"name": "./src/apollo-builder/design/Element/connect.tsx", | |
"index": 695, | |
"index2": 697, | |
"size": 3171, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx", | |
"issuerId": "./src/apollo-builder/design/Spread/connect.tsx", | |
"issuerName": "./src/apollo-builder/design/Spread/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/Spread/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx", | |
"module": "./src/apollo-builder/design/Spread/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/Spread/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../Element/connect", | |
"loc": "4:0-41" | |
}, { | |
"moduleId": "./src/apollo-builder/design/connects.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx", | |
"module": "./src/apollo-builder/design/connects.tsx", | |
"moduleName": "./src/apollo-builder/design/connects.tsx", | |
"type": "harmony import", | |
"userRequest": "./Element/connect", | |
"loc": "2:0-55" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Defines the base element that all elements derive from */\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { EditableText, Image, Position, Text } from '../connects';\r\nimport { EditableTextModel, ImageModel, PositionModel, TextModel } from '../models';\r\nvar Element = Element_1 = (function (_super) {\r\n __extends(Element, _super);\r\n function Element() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Element.prototype.render = function () {\r\n var model = this.props.model;\r\n if (model instanceof PositionModel) {\r\n return React.createElement(Position, { model: model },\r\n React.createElement(Element_1, { model: model.element }));\r\n }\r\n if (model instanceof TextModel) {\r\n return React.createElement(Text, { model: model });\r\n }\r\n if (model instanceof ImageModel) {\r\n return React.createElement(Image, { model: model });\r\n }\r\n if (model instanceof EditableTextModel) {\r\n return React.createElement(EditableText, { model: model });\r\n }\r\n throw new Error('Unknown element');\r\n };\r\n return Element;\r\n}(React.Component));\r\nElement = Element_1 = __decorate([\r\n observer\r\n], Element);\r\nexport default Element;\r\nvar Element_1;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx", | |
"name": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"index": 707, | |
"index2": 705, | |
"size": 3338, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx", | |
"issuerId": "./src/apollo-builder/design/Spread/control/connect.tsx", | |
"issuerName": "./src/apollo-builder/design/Spread/control/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/Spread/control/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx", | |
"module": "./src/apollo-builder/design/Spread/control/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/Spread/control/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../../Element/control/connect", | |
"loc": "4:0-59" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport ControlEditableText from '../../EditableText/control/connect';\r\nimport { EditableTextModel, ImageModel, PositionModel } from '../../models';\r\nimport Position from '../../../ui/Position';\r\nvar ControlElement = ControlElement_1 = (function (_super) {\r\n __extends(ControlElement, _super);\r\n function ControlElement() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ControlElement.prototype.render = function () {\r\n var _a = this.props, model = _a.model, designToScreenRatio = _a.designToScreenRatio;\r\n if (model instanceof PositionModel) {\r\n return (React.createElement(Position, { left: model.position.left * designToScreenRatio, top: model.position.top * designToScreenRatio },\r\n React.createElement(ControlElement_1, { model: model.element, designToScreenRatio: designToScreenRatio })));\r\n }\r\n if (model instanceof ImageModel) {\r\n // return image editing component\r\n }\r\n if (model instanceof EditableTextModel) {\r\n return (React.createElement(ControlEditableText, { model: model, designToScreenRatio: designToScreenRatio }));\r\n }\r\n throw new Error('Unknown element');\r\n };\r\n return ControlElement;\r\n}(React.Component));\r\nControlElement = ControlElement_1 = __decorate([\r\n observer\r\n], ControlElement);\r\nexport default ControlElement;\r\nvar ControlElement_1;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Element/model.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/model.tsx", | |
"name": "./src/apollo-builder/design/Element/model.tsx", | |
"index": 670, | |
"index2": 664, | |
"size": 1662, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"issuerId": "./src/apollo-builder/design/models.tsx", | |
"issuerName": "./src/apollo-builder/design/models.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/models.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"module": "./src/apollo-builder/design/models.tsx", | |
"moduleName": "./src/apollo-builder/design/models.tsx", | |
"type": "harmony import", | |
"userRequest": "./Element/model", | |
"loc": "2:0-58" | |
}, { | |
"moduleId": "./src/apollo-builder/design/Image/model.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/model.tsx", | |
"module": "./src/apollo-builder/design/Image/model.tsx", | |
"moduleName": "./src/apollo-builder/design/Image/model.tsx", | |
"type": "harmony import", | |
"userRequest": "../Element/model", | |
"loc": "19:0-44" | |
}, { | |
"moduleId": "./src/apollo-builder/design/Position/model.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/model.tsx", | |
"module": "./src/apollo-builder/design/Position/model.tsx", | |
"moduleName": "./src/apollo-builder/design/Position/model.tsx", | |
"type": "harmony import", | |
"userRequest": "../Element/model", | |
"loc": "19:0-44" | |
}, { | |
"moduleId": "./src/apollo-builder/design/Text/model.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/model.tsx", | |
"module": "./src/apollo-builder/design/Text/model.tsx", | |
"moduleName": "./src/apollo-builder/design/Text/model.tsx", | |
"type": "harmony import", | |
"userRequest": "../Element/model", | |
"loc": "19:0-44" | |
}, { | |
"moduleId": "./src/apollo-builder/design/EditableText/model.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/model.tsx", | |
"module": "./src/apollo-builder/design/EditableText/model.tsx", | |
"moduleName": "./src/apollo-builder/design/EditableText/model.tsx", | |
"type": "harmony import", | |
"userRequest": "../Element/model", | |
"loc": "19:0-44" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { ActionSourcesBase } from '../../core/actionStack/ActionSource';\r\n/* Role: Defines the base element's model as a common extension point */\r\nvar ElementModel = (function (_super) {\r\n __extends(ElementModel, _super);\r\n function ElementModel() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return ElementModel;\r\n}(ActionSourcesBase));\r\nexport default ElementModel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/model.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Image/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/component.tsx", | |
"name": "./src/apollo-builder/design/Image/component.tsx", | |
"index": 698, | |
"index2": 688, | |
"size": 1055, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/connect.tsx", | |
"issuerId": "./src/apollo-builder/design/Image/connect.tsx", | |
"issuerName": "./src/apollo-builder/design/Image/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/Image/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/connect.tsx", | |
"module": "./src/apollo-builder/design/Image/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/Image/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "3:0-32" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 9, | |
"source": "/* Role: Defines the Image component */\r\nimport * as React from 'react';\r\nexport default function (props) {\r\n return React.createElement(\"div\", { style: {\r\n backgroundImage: \"url(\" + props.src + \")\",\r\n width: props.size.width,\r\n height: props.size.height\r\n } });\r\n};\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Image/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/connect.tsx", | |
"name": "./src/apollo-builder/design/Image/connect.tsx", | |
"index": 697, | |
"index2": 689, | |
"size": 998, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx", | |
"issuerId": "./src/apollo-builder/design/connects.tsx", | |
"issuerName": "./src/apollo-builder/design/connects.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/connects.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx", | |
"module": "./src/apollo-builder/design/connects.tsx", | |
"moduleName": "./src/apollo-builder/design/connects.tsx", | |
"type": "harmony import", | |
"userRequest": "./Image/connect", | |
"loc": "3:0-51" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 8, | |
"source": "/* Role: Connects the Image component with it's model */\r\nimport connect from '../../utils/connect';\r\nimport Image from './component';\r\nexport default connect(Image)(function (model) { return ({\r\n src: model.src,\r\n size: model.container.size\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Image/model.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/model.tsx", | |
"name": "./src/apollo-builder/design/Image/model.tsx", | |
"index": 672, | |
"index2": 665, | |
"size": 2351, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"issuerId": "./src/apollo-builder/design/models.tsx", | |
"issuerName": "./src/apollo-builder/design/models.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/models.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"module": "./src/apollo-builder/design/models.tsx", | |
"moduleName": "./src/apollo-builder/design/models.tsx", | |
"type": "harmony import", | |
"userRequest": "./Image/model", | |
"loc": "3:0-54" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Defines the Image component's model */\r\nimport { observable } from 'mobx';\r\nimport ElementModel from '../Element/model';\r\nvar ImageModel = (function (_super) {\r\n __extends(ImageModel, _super);\r\n function ImageModel(container, src) {\r\n var _this = _super.call(this) || this;\r\n _this.container = container;\r\n _this.src = src;\r\n return _this;\r\n }\r\n return ImageModel;\r\n}(ElementModel));\r\n__decorate([\r\n observable\r\n], ImageModel.prototype, \"src\", void 0);\r\nexport default ImageModel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Image/model.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Position/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/component.tsx", | |
"name": "./src/apollo-builder/design/Position/component.tsx", | |
"index": 700, | |
"index2": 690, | |
"size": 1039, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/connect.tsx", | |
"issuerId": "./src/apollo-builder/design/Position/connect.tsx", | |
"issuerName": "./src/apollo-builder/design/Position/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/Position/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/connect.tsx", | |
"module": "./src/apollo-builder/design/Position/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/Position/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "3:0-35" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 9, | |
"source": "/* Role: Defines the Position component */\r\nimport * as React from 'react';\r\nexport default function (props) { return (React.createElement(\"div\", { style: {\r\n position: 'absolute',\r\n left: props.position.left,\r\n top: props.position.top\r\n } }, props.children)); };\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Position/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/connect.tsx", | |
"name": "./src/apollo-builder/design/Position/connect.tsx", | |
"index": 699, | |
"index2": 691, | |
"size": 1106, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx", | |
"issuerId": "./src/apollo-builder/design/connects.tsx", | |
"issuerName": "./src/apollo-builder/design/connects.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/connects.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx", | |
"module": "./src/apollo-builder/design/connects.tsx", | |
"moduleName": "./src/apollo-builder/design/connects.tsx", | |
"type": "harmony import", | |
"userRequest": "./Position/connect", | |
"loc": "4:0-57" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 8, | |
"source": "/* Role: Connects the Position component with its model */\r\nimport connect from '../../utils/connect';\r\nimport Position from './component';\r\nexport default connect(Position)(function (model, _a) {\r\n var children = _a.children;\r\n return ({\r\n position: model.position,\r\n size: model.container.size,\r\n children: children\r\n });\r\n});\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Position/model.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/model.tsx", | |
"name": "./src/apollo-builder/design/Position/model.tsx", | |
"index": 673, | |
"index2": 666, | |
"size": 2689, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"issuerId": "./src/apollo-builder/design/models.tsx", | |
"issuerName": "./src/apollo-builder/design/models.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/models.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"module": "./src/apollo-builder/design/models.tsx", | |
"moduleName": "./src/apollo-builder/design/models.tsx", | |
"type": "harmony import", | |
"userRequest": "./Position/model", | |
"loc": "4:0-60" | |
}, { | |
"moduleId": "./src/apollo-builder/design/Spread/model.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/model.tsx", | |
"module": "./src/apollo-builder/design/Spread/model.tsx", | |
"moduleName": "./src/apollo-builder/design/Spread/model.tsx", | |
"type": "harmony import", | |
"userRequest": "../Position/model", | |
"loc": "19:0-41" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Defines the model for the Position components along with logic for modifying the position based upon events */\r\nimport { observable } from 'mobx';\r\nimport ElementModel from '../Element/model';\r\nvar PositionModel = (function (_super) {\r\n __extends(PositionModel, _super);\r\n function PositionModel(position, container, element) {\r\n var _this = _super.call(this) || this;\r\n _this.position = position;\r\n _this.container = container;\r\n _this.element = element;\r\n return _this;\r\n }\r\n PositionModel.prototype.getActionSources = function () {\r\n return this.element;\r\n };\r\n return PositionModel;\r\n}(ElementModel));\r\n__decorate([\r\n observable\r\n], PositionModel.prototype, \"position\", void 0);\r\n__decorate([\r\n observable\r\n], PositionModel.prototype, \"element\", void 0);\r\nexport default PositionModel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Position/model.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Spread/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/component.tsx", | |
"name": "./src/apollo-builder/design/Spread/component.tsx", | |
"index": 705, | |
"index2": 698, | |
"size": 2118, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx", | |
"issuerId": "./src/apollo-builder/design/Spread/connect.tsx", | |
"issuerName": "./src/apollo-builder/design/Spread/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/Spread/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx", | |
"module": "./src/apollo-builder/design/Spread/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/Spread/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "5:0-33" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "/**\r\n * Role: Provides a visual respresentation of the boundaries of a design spread\r\n */\r\nimport * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nvar SpreadStyles = (_a = [\"\\n position: absolute;\\n box-shadow: \", \";\\n background: \", \";\\n background-position: center center;\\n background-size: 105% 105%;\\n\"], _a.raw = [\"\\n position: absolute;\\n box-shadow: \", \";\\n background: \",\r\n \";\\n background-position: center center;\\n background-size: 105% 105%;\\n\"], styled.div(_a, function (props) { return props.theme.spreadShadow; }, function (props) { return props.bgUrl.length > 0\r\n ? 'url(' + props.bgUrl + ')' : props.bgColor; }));\r\nvar DesignSpread = function (props) {\r\n var designWidth = props.size.width;\r\n var designHeight = props.size.height;\r\n var screenLeft = props.origin.x;\r\n var screenTop = props.origin.y;\r\n return React.createElement(SpreadStyles, { bgColor: props.backgroundColor, bgUrl: (props.backgroundUrl !== undefined) ? props.backgroundUrl : '', style: {\r\n left: screenLeft,\r\n top: screenTop,\r\n width: designWidth,\r\n height: designHeight,\r\n transform: \"scale(\" + props.designToScreenRatio + \")\",\r\n transformOrigin: 'top left'\r\n } }, props.children);\r\n};\r\nexport default DesignSpread;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Spread/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx", | |
"name": "./src/apollo-builder/design/Spread/connect.tsx", | |
"index": 694, | |
"index2": 699, | |
"size": 1362, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/Preview/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/Preview/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Preview/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx", | |
"module": "./src/apollo-builder/layout/Preview/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/Preview/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../../design/Spread/connect", | |
"loc": "4:0-49" | |
}, { | |
"moduleId": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx", | |
"module": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../../design/Spread/connect", | |
"loc": "4:0-49" | |
}, { | |
"moduleId": "./src/apollo-builder/design/connects.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx", | |
"module": "./src/apollo-builder/design/connects.tsx", | |
"moduleName": "./src/apollo-builder/design/connects.tsx", | |
"type": "harmony import", | |
"userRequest": "./Spread/connect", | |
"loc": "5:0-53" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 5, | |
"source": "/* Role: Connects the Canvas component with the mobx model */\r\nimport * as React from 'react';\r\nimport connect from '../../utils/connect';\r\nimport Element from '../Element/connect';\r\nimport Spread from './component';\r\nexport default connect(Spread)(function (model, props) { return ({\r\n size: model.size,\r\n backgroundColor: props.backgroundColor,\r\n backgroundUrl: props.backgroundUrl,\r\n origin: props.origin,\r\n designToScreenRatio: props.designToScreenRatio,\r\n children: model.elements.map(function (elementModel, i) { return React.createElement(Element, { model: elementModel, key: i }); })\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Spread/control/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/component.tsx", | |
"name": "./src/apollo-builder/design/Spread/control/component.tsx", | |
"index": 713, | |
"index2": 706, | |
"size": 1563, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx", | |
"issuerId": "./src/apollo-builder/design/Spread/control/connect.tsx", | |
"issuerName": "./src/apollo-builder/design/Spread/control/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/Spread/control/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx", | |
"module": "./src/apollo-builder/design/Spread/control/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/Spread/control/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "5:0-33" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "/**\r\n * Role: Provides a visual respresentation of the boundaries of a design spread\r\n */\r\nimport * as React from 'react';\r\nimport styled from '../../../utils/styled';\r\nvar SpreadStyles = (_a = [\"\\n position: absolute;\\n\"], _a.raw = [\"\\n position: absolute;\\n\"], styled.div(_a));\r\nvar ControlSpread = function (props) {\r\n var designWidth = props.size.width * props.designToScreenRatio;\r\n var designHeight = props.size.height * props.designToScreenRatio;\r\n var screenLeft = props.origin.x;\r\n var screenTop = props.origin.y;\r\n return React.createElement(SpreadStyles, { style: {\r\n left: screenLeft,\r\n top: screenTop,\r\n width: designWidth,\r\n height: designHeight\r\n } }, props.children);\r\n};\r\nexport default ControlSpread;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Spread/control/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx", | |
"name": "./src/apollo-builder/design/Spread/control/connect.tsx", | |
"index": 706, | |
"index2": 707, | |
"size": 1407, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx", | |
"module": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../../design/Spread/control/connect", | |
"loc": "5:0-65" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "/* Role: Connects the Canvas component with the mobx model */\r\nimport * as React from 'react';\r\nimport connect from '../../../utils/connect';\r\nimport ElementControl from '../../Element/control/connect';\r\nimport Spread from './component';\r\nexport default connect(Spread)(function (model, props) { return ({\r\n size: model.size,\r\n backgroundColor: 'transparent',\r\n origin: props.origin,\r\n designToScreenRatio: props.designToScreenRatio,\r\n children: model.elements.map(function (elementModel, i) { return (React.createElement(ElementControl, { key: i, model: elementModel, designToScreenRatio: props.designToScreenRatio })); })\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/control/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Spread/model.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/model.tsx", | |
"name": "./src/apollo-builder/design/Spread/model.tsx", | |
"index": 674, | |
"index2": 671, | |
"size": 4475, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"issuerId": "./src/apollo-builder/design/models.tsx", | |
"issuerName": "./src/apollo-builder/design/models.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/models.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"module": "./src/apollo-builder/design/models.tsx", | |
"moduleName": "./src/apollo-builder/design/models.tsx", | |
"type": "harmony import", | |
"userRequest": "./Spread/model", | |
"loc": "5:0-56" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Definition of state and actions used by the canvas */\r\nimport { observable, computed, action } from 'mobx';\r\nimport Position from '../Position/model';\r\nimport EditableText from '../EditableText/model';\r\nimport { ActionSourcesBase } from '../../core/actionStack/ActionSource';\r\nvar SpreadModel = (function (_super) {\r\n __extends(SpreadModel, _super);\r\n function SpreadModel(size) {\r\n var _this = _super.call(this) || this;\r\n _this.elements = [];\r\n _this.size = size;\r\n return _this;\r\n }\r\n SpreadModel.prototype.getActionSources = function () {\r\n return this.elements;\r\n };\r\n SpreadModel.prototype.addElement = function (element) {\r\n this.elements.push(element);\r\n };\r\n Object.defineProperty(SpreadModel.prototype, \"textColor\", {\r\n set: function (color) {\r\n this.editableTextElements(this.elements)\r\n .forEach(function (element) {\r\n element.textModel.setColor(color);\r\n });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpreadModel.prototype, \"hasTextSelections\", {\r\n get: function () {\r\n return this.textSelections.some(function (e) { return e.selectionController.selected; });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpreadModel.prototype, \"textSelections\", {\r\n get: function () {\r\n return this.editableTextElements(this.elements).filter(function (e) { return e.selectionController.selected; });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n SpreadModel.prototype.selectDefaultText = function () {\r\n var textElements = this.editableTextElements(this.elements);\r\n if (textElements && textElements.length > 0) {\r\n textElements[0].selectionController.requestSelection();\r\n }\r\n };\r\n SpreadModel.prototype.editableTextElements = function (elements) {\r\n return elements.filter(function (e) { return e instanceof Position && e.element instanceof EditableText; }).map(function (e) { return e.element; });\r\n };\r\n return SpreadModel;\r\n}(ActionSourcesBase));\r\nexport default SpreadModel;\r\n__decorate([\r\n observable\r\n], SpreadModel.prototype, \"size\", void 0);\r\n__decorate([\r\n observable\r\n], SpreadModel.prototype, \"elements\", void 0);\r\n__decorate([\r\n computed\r\n], SpreadModel.prototype, \"hasTextSelections\", null);\r\n__decorate([\r\n computed\r\n], SpreadModel.prototype, \"textSelections\", null);\r\n__decorate([\r\n action.bound\r\n], SpreadModel.prototype, \"selectDefaultText\", null);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Spread/model.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Text/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/component.tsx", | |
"name": "./src/apollo-builder/design/Text/component.tsx", | |
"index": 702, | |
"index2": 692, | |
"size": 1596, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/connect.tsx", | |
"issuerId": "./src/apollo-builder/design/Text/connect.tsx", | |
"issuerName": "./src/apollo-builder/design/Text/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/Text/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/connect.tsx", | |
"module": "./src/apollo-builder/design/Text/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/Text/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "3:0-31" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 9, | |
"source": "/* Role: a stub for adding an editable text field to the (html) canvas. Right now it just outputs a blob of text. */\r\nimport * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nvar StyledDiv = (_a = [\"\\n border: none;\\n padding: 0;\\n white-space: pre;\\n\"], _a.raw = [\"\\n border: none;\\n padding: 0;\\n white-space: pre;\\n\"], styled.div(_a));\r\nvar Text = function (props) {\r\n return React.createElement(StyledDiv, { style: {\r\n textAlign: props.alignment,\r\n width: props.size.width,\r\n height: props.size.height,\r\n fontFamily: props.fontFamily,\r\n fontSize: props.fontSize,\r\n lineHeight: props.size.height + 'px',\r\n color: props.color\r\n } }, props.text === undefined ? props.placeholder : props.text);\r\n};\r\nexport default Text;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Text/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/connect.tsx", | |
"name": "./src/apollo-builder/design/Text/connect.tsx", | |
"index": 701, | |
"index2": 693, | |
"size": 1160, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx", | |
"issuerId": "./src/apollo-builder/design/connects.tsx", | |
"issuerName": "./src/apollo-builder/design/connects.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/connects.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx", | |
"module": "./src/apollo-builder/design/connects.tsx", | |
"moduleName": "./src/apollo-builder/design/connects.tsx", | |
"type": "harmony import", | |
"userRequest": "./Text/connect", | |
"loc": "6:0-49" | |
}, { | |
"moduleId": "./src/apollo-builder/design/EditableText/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/connect.tsx", | |
"module": "./src/apollo-builder/design/EditableText/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/EditableText/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../Text/connect", | |
"loc": "3:0-35" | |
}, { | |
"moduleId": "./src/apollo-builder/design/EditableText/control/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/EditableText/control/connect.tsx", | |
"module": "./src/apollo-builder/design/EditableText/control/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/EditableText/control/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../../Text/connect", | |
"loc": "3:0-38" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 8, | |
"source": "/* Role: Connects the Rectangle component with its state */\r\nimport connect from '../../utils/connect';\r\nimport Text from './component';\r\nexport default connect(Text)(function (model) { return ({\r\n color: model.color,\r\n size: model.container.size,\r\n text: model.text,\r\n placeholder: model.placeholder,\r\n alignment: model.alignment,\r\n fontFamily: model.fontFamily,\r\n fontSize: model.fontSize\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/Text/model.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/model.tsx", | |
"name": "./src/apollo-builder/design/Text/model.tsx", | |
"index": 679, | |
"index2": 672, | |
"size": 3229, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"issuerId": "./src/apollo-builder/design/models.tsx", | |
"issuerName": "./src/apollo-builder/design/models.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/models.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"module": "./src/apollo-builder/design/models.tsx", | |
"moduleName": "./src/apollo-builder/design/models.tsx", | |
"type": "harmony import", | |
"userRequest": "./Text/model", | |
"loc": "6:0-52" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: Defined the state model and action for the Rectangle component */\r\nimport { observable, action } from 'mobx';\r\nimport ElementModel from '../Element/model';\r\nvar TextModel = (function (_super) {\r\n __extends(TextModel, _super);\r\n function TextModel(options, container) {\r\n var _this = _super.call(this) || this;\r\n _this.container = container;\r\n _this.placeholder = options.placeholder || '';\r\n _this.text = options.text || undefined;\r\n _this.color = options.color || '#000000';\r\n _this.alignment = options.alignment || 'left';\r\n _this.fontSize = options.fontSize || 30;\r\n _this.fontFamily = options.fontFamily || 'Arial';\r\n return _this;\r\n }\r\n TextModel.prototype.setColor = function (color) {\r\n this.color = color;\r\n };\r\n return TextModel;\r\n}(ElementModel));\r\n__decorate([\r\n observable\r\n], TextModel.prototype, \"placeholder\", void 0);\r\n__decorate([\r\n observable\r\n], TextModel.prototype, \"text\", void 0);\r\n__decorate([\r\n observable\r\n], TextModel.prototype, \"color\", void 0);\r\n__decorate([\r\n observable\r\n], TextModel.prototype, \"alignment\", void 0);\r\n__decorate([\r\n observable\r\n], TextModel.prototype, \"fontSize\", void 0);\r\n__decorate([\r\n observable\r\n], TextModel.prototype, \"fontFamily\", void 0);\r\n__decorate([\r\n action.bound\r\n], TextModel.prototype, \"setColor\", null);\r\nexport default TextModel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Text/model.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/connects.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx", | |
"name": "./src/apollo-builder/design/connects.tsx", | |
"index": 696, | |
"index2": 696, | |
"size": 1119, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/connect.tsx", | |
"issuerId": "./src/apollo-builder/design/Element/connect.tsx", | |
"issuerName": "./src/apollo-builder/design/Element/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/Element/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/connect.tsx", | |
"module": "./src/apollo-builder/design/Element/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/Element/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../connects", | |
"loc": "20:0-66" | |
}], | |
"usedExports": ["Position", "Text", "Image", "EditableText"], | |
"providedExports": ["Element", "Image", "Position", "Spread", "Text", "EditableText"], | |
"depth": 7, | |
"source": "/* Role: Aggregates all connect components */\r\nexport { default as Element } from './Element/connect';\r\nexport { default as Image } from './Image/connect';\r\nexport { default as Position } from './Position/connect';\r\nexport { default as Spread } from './Spread/connect';\r\nexport { default as Text } from './Text/connect';\r\nexport { default as EditableText } from './EditableText/connect';\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/connects.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/design/models.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx", | |
"name": "./src/apollo-builder/design/models.tsx", | |
"index": 669, | |
"index2": 673, | |
"size": 1149, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"module": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"type": "harmony import", | |
"userRequest": "../../design/models", | |
"loc": "25:0-95" | |
}, { | |
"moduleId": "./src/apollo-builder/design/Element/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/connect.tsx", | |
"module": "./src/apollo-builder/design/Element/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/Element/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../models", | |
"loc": "21:0-84" | |
}, { | |
"moduleId": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx", | |
"module": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../../models", | |
"loc": "20:0-76" | |
}], | |
"usedExports": ["PositionModel", "TextModel", "ImageModel", "EditableTextModel", "SpreadModel"], | |
"providedExports": ["ElementModel", "ImageModel", "PositionModel", "SpreadModel", "TextModel", "EditableTextModel"], | |
"depth": 6, | |
"source": "/* Role: Aggregates all the component models in the system */\r\nexport { default as ElementModel } from './Element/model';\r\nexport { default as ImageModel } from './Image/model';\r\nexport { default as PositionModel } from './Position/model';\r\nexport { default as SpreadModel } from './Spread/model';\r\nexport { default as TextModel } from './Text/model';\r\nexport { default as EditableTextModel } from './EditableText/model';\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/models.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/Canvas/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/component.tsx", | |
"name": "./src/apollo-builder/layout/Canvas/component.tsx", | |
"index": 693, | |
"index2": 687, | |
"size": 1031, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx", | |
"module": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "3:0-33" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "import * as React from 'react';\r\nvar Canvas = function (props) { return (React.createElement(\"div\", { style: { height: '100%' }, onMouseDownCapture: props.startSelecting, onMouseDown: props.endSelecting },\r\n props.designLayer,\r\n props.controlLayer)); };\r\nexport default Canvas;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx", | |
"name": "./src/apollo-builder/layout/Canvas/connect.tsx", | |
"index": 692, | |
"index2": 708, | |
"size": 1571, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx", | |
"module": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../Canvas/connect", | |
"loc": "5:0-39" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 5, | |
"source": "import * as React from 'react';\r\nimport connect from '../../utils/connect';\r\nimport Canvas from './component';\r\nimport Spread from '../../design/Spread/connect';\r\nimport SpreadControls from '../../design/Spread/control/connect';\r\nexport default connect(Canvas)(function (model) { return ({\r\n startSelecting: model.startSelecting,\r\n endSelecting: model.endSelecting,\r\n designLayer: (React.createElement(Spread, { model: model.selectedSpread, origin: model.spreadPosition, designToScreenRatio: model.designToScreenRatio, backgroundColor: model.backgroundColor, backgroundUrl: (model.backgroundUrl !== undefined) ? model.backgroundUrl : '' })),\r\n controlLayer: (React.createElement(SpreadControls, { model: model.selectedSpread, origin: model.spreadPosition, designToScreenRatio: model.designToScreenRatio }))\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Canvas/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx", | |
"name": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx", | |
"index": 737, | |
"index2": 732, | |
"size": 1319, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./ColorPlatePanel/component", | |
"loc": "4:0-58" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "import * as React from 'react';\r\nimport Plate from '../../../ui/Plates/Plate';\r\nvar ColorPlatePanel = function (props) {\r\n return (React.createElement(\"div\", null, props.plates.map(function (plate, index) { return (React.createElement(Plate, { key: index, bgColor: plate.bgColor, textColor: plate.textColor, bgThumb: plate.bgThumb !== undefined ? plate.bgThumb : '', selected: index === props.selectedPlateIndex, onSelectPlate: function () { return props.selectPlate(index); } })); })));\r\n};\r\nexport default ColorPlatePanel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx", | |
"name": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx", | |
"index": 743, | |
"index2": 737, | |
"size": 3866, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx", | |
"module": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "2:0-40" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "/** Role: Text Menu Component */\r\nimport * as React from 'react';\r\nimport styled from '../../../utils/styled';\r\nimport ControlPanelButton from '../../../ui/buttons/ControlPanelButton';\r\nimport Flex from '../../../ui/Flex';\r\nimport TooltipSlider from '../../../ui/TooltipSlider';\r\nimport Label from '../../../ui/Slider/Label';\r\nimport slideIn from '../../../ui/animation/slideIn';\r\nimport slideOut from '../../../ui/animation/slideOut';\r\nvar TextMenuPanel = (_a = [\"\\n background-color: \", \";\\n padding: 5px 10px 10px 0;\\n min-height: 100px;\\n width: 164px;\\n position: absolute;\\n border-radius: 5px;\\n text-align: center;\\n z-index: 1;\\n &>div{\\n padding-top: 10px;\\n }\\n\\n &.mount-enter-active{\\n opacity: 1;\\n animation: \", \" 0.25s \", \";\\n }\\n\\n &.mount-leave-active{\\n opacity: 0;\\n animation: \", \" 0.25s \", \";\\n }\\n\"], _a.raw = [\"\\n background-color: \", \";\\n padding: 5px 10px 10px 0;\\n min-height: 100px;\\n width: 164px;\\n position: absolute;\\n border-radius: 5px;\\n text-align: center;\\n z-index: 1;\\n &>div{\\n padding-top: 10px;\\n }\\n\\n &.mount-enter-active{\\n opacity: 1;\\n animation: \", \" 0.25s \", \";\\n }\\n\\n &.mount-leave-active{\\n opacity: 0;\\n animation: \", \" 0.25s \", \";\\n }\\n\"], styled.div(_a, function (props) { return props.theme.controlPanelBackground; }, slideIn, function (props) { return props.theme.defaultTimingFunc; }, slideOut, function (props) { return props.theme.defaultTimingFunc; }));\r\nvar TextAlignmentWrapper = (_b = [\"\\n position:relative;\\n left: -2px;\\n max-width: 100px;\\n margin: auto;\\n div:nth-of-type(1){\\n background-position: left;\\n }\\n div:nth-of-type(3){\\n background-position: right;\\n }\\n\"], _b.raw = [\"\\n position:relative;\\n left: -2px;\\n max-width: 100px;\\n margin: auto;\\n div:nth-of-type(1){\\n background-position: left;\\n }\\n div:nth-of-type(3){\\n background-position: right;\\n }\\n\"], styled(Flex)(_b));\r\nvar TextMenu = function (props) { return (React.createElement(TextMenuPanel, null,\r\n React.createElement(TooltipSlider, { min: 24, max: 100, value: props.fontSize, onChange: props.onFontSizeChange, width: 100, leftLabel: React.createElement(Label, { size: 9 }, \"A\"), rightLabel: React.createElement(Label, { size: 18 }, \"A\") }),\r\n React.createElement(TextAlignmentWrapper, { row: true },\r\n React.createElement(ControlPanelButton, { onClick: function () { return props.onAlignmentChange('left'); }, iconKey: \"left-align\", isActive: props.alignment === 'left' }),\r\n React.createElement(ControlPanelButton, { onClick: function () { return props.onAlignmentChange('center'); }, iconKey: \"center-align\", isActive: props.alignment === 'center' }),\r\n React.createElement(ControlPanelButton, { onClick: function () { return props.onAlignmentChange('right'); }, iconKey: \"right-align\", isActive: props.alignment === 'right' })))); };\r\nexport default TextMenu;\r\nvar _a, _b;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx", | |
"name": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx", | |
"index": 742, | |
"index2": 738, | |
"size": 1123, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./TextMenuPanel/connect", | |
"loc": "8:0-52" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "import connect from '../../../utils/connect';\r\nimport TextMenuPanel from './component';\r\nexport default connect(TextMenuPanel)(function (model) { return ({\r\n alignment: model.textModel.alignment,\r\n fontSize: model.textModel.fontSize,\r\n onAlignmentChange: model.changeAlignment,\r\n onFontSizeChange: model.changeFontSize\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/ControlPanel/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/component.tsx", | |
"name": "./src/apollo-builder/layout/ControlPanel/component.tsx", | |
"index": 739, | |
"index2": 733, | |
"size": 1211, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "6:0-39" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "/* Role: Defines the ControlPanel component */\r\nimport * as React from 'react';\r\nimport Flex from '../../ui/Flex';\r\nvar ControlPanel = function (_a) {\r\n var children = _a.children;\r\n return (React.createElement(Flex, { column: true },\r\n React.createElement(Flex, null, React.Children.map(children, function (child) {\r\n return React.createElement(Flex, { column: true }, child);\r\n }))));\r\n};\r\nexport default ControlPanel;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"name": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"index": 714, | |
"index2": 739, | |
"size": 2729, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx", | |
"module": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../ControlPanel/connect", | |
"loc": "6:0-51" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 5, | |
"source": "import * as React from 'react';\r\nimport ControlPanelMenu from '../../ui/ControlPanelMenu';\r\nimport ScrollablePanel from '../../ui/ScrollablePanel';\r\nimport ColorPlatePanel from './ColorPlatePanel/component';\r\nimport connect from '../../utils/connect';\r\nimport ControlPanel from './component';\r\nimport ControlPanelButtons from '../../ui/buttons/ControlPanelButtonWrapper';\r\nimport TextMenuPanel from './TextMenuPanel/connect';\r\nimport { ControlPanelButtonType } from './model';\r\nvar getSelectedPanel = function (model) {\r\n var selectedPanel;\r\n var controlPanelModel = model.controlPanel;\r\n switch (controlPanelModel.selectedPanel) {\r\n case ControlPanelButtonType.Text:\r\n if (controlPanelModel.selectedTextModel) {\r\n selectedPanel = React.createElement(TextMenuPanel, { key: \"textmenu\", model: controlPanelModel.selectedTextModel });\r\n }\r\n else {\r\n selectedPanel = null;\r\n }\r\n break;\r\n case ControlPanelButtonType.Plate:\r\n selectedPanel = (React.createElement(ScrollablePanel, { key: \"ScrollablePanel\" },\r\n React.createElement(ColorPlatePanel, { plates: model.plates, selectedPlateIndex: model.selectedPlateIndex, selectPlate: model.selectPlate })));\r\n break;\r\n default:\r\n selectedPanel = React.createElement(\"div\", null);\r\n }\r\n return selectedPanel;\r\n};\r\nexport default connect(ControlPanel)(function (model, _a) {\r\n var children = _a.children;\r\n return ({\r\n children: [\r\n React.createElement(ControlPanelButtons, { key: \"controlPanelButtons\", selected: model.controlPanel.selectedPanel, selectTextPanel: model.controlPanel.selectTextPanel, selectPlatePanel: model.controlPanel.selectPlatePanel }),\r\n React.createElement(ControlPanelMenu, { key: \"controlPanelMenu\", isPanelOpen: model.controlPanel.selectedPanel !== 0 }, getSelectedPanel(model))\r\n ]\r\n });\r\n});\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/ControlPanel/model.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/model.tsx", | |
"name": "./src/apollo-builder/layout/ControlPanel/model.tsx", | |
"index": 680, | |
"index2": 674, | |
"size": 4578, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"issuerId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"issuerName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"module": "./src/apollo-builder/layout/Workspace/model.ts", | |
"moduleName": "./src/apollo-builder/layout/Workspace/model.ts", | |
"type": "harmony import", | |
"userRequest": "../../layout/ControlPanel/model", | |
"loc": "26:0-59" | |
}, { | |
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./model", | |
"loc": "9:0-49" | |
}, { | |
"moduleId": "./src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx", | |
"module": "./src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx", | |
"moduleName": "./src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx", | |
"type": "harmony import", | |
"userRequest": "../../layout/ControlPanel/model", | |
"loc": "5:0-73" | |
}], | |
"usedExports": ["ControlPanelButtonType", "default"], | |
"providedExports": ["ControlPanelButtonType", "default"], | |
"depth": 6, | |
"source": "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { action, computed, observable, autorun } from 'mobx';\r\nexport var ControlPanelButtonType;\r\n(function (ControlPanelButtonType) {\r\n ControlPanelButtonType[ControlPanelButtonType[\"None\"] = 0] = \"None\";\r\n ControlPanelButtonType[ControlPanelButtonType[\"Text\"] = 1] = \"Text\";\r\n ControlPanelButtonType[ControlPanelButtonType[\"Plate\"] = 2] = \"Plate\";\r\n})(ControlPanelButtonType || (ControlPanelButtonType = {}));\r\nvar ControlPanelModel = (function () {\r\n function ControlPanelModel(workspace) {\r\n var _this = this;\r\n this.workspace = workspace;\r\n this.manuallySelectedPanel = ControlPanelButtonType.None;\r\n autorun(function () {\r\n if (_this.selectedPanel === ControlPanelButtonType.Text) {\r\n _this.manuallySelectedPanel = ControlPanelButtonType.None;\r\n }\r\n // close any open panels when a click event is received from the canvas\r\n _this.workspace.deselect$\r\n .subscribe(_this.deselectPanels);\r\n });\r\n }\r\n Object.defineProperty(ControlPanelModel.prototype, \"selectedPanel\", {\r\n get: function () {\r\n return (this.workspace.hasTextSelections) ? ControlPanelButtonType.Text : this.manuallySelectedPanel;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns the current selected control panel button. Business logic:\r\n * - clicking on a single button hides/shows that section\r\n * - clicking ON a text element in the page shows the text menu\r\n * - clicking OFF a text element in the page unselected\r\n */\r\n ControlPanelModel.prototype.selectTextPanel = function () {\r\n if (this.selectedPanel !== ControlPanelButtonType.Text) {\r\n this.workspace.selectDefaultText();\r\n }\r\n else {\r\n this.workspace.deselect();\r\n this.manuallySelectedPanel = ControlPanelButtonType.None;\r\n }\r\n };\r\n ControlPanelModel.prototype.selectPlatePanel = function () {\r\n this.workspace.deselect();\r\n this.manuallySelectedPanel = (this.selectedPanel === ControlPanelButtonType.None) ? ControlPanelButtonType.Plate : ControlPanelButtonType.None;\r\n };\r\n ControlPanelModel.prototype.deselectPanels = function () {\r\n this.manuallySelectedPanel = ControlPanelButtonType.None;\r\n };\r\n Object.defineProperty(ControlPanelModel.prototype, \"selectedTextModel\", {\r\n get: function () {\r\n var textSelection = this.workspace.textSelections;\r\n return textSelection[0];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ControlPanelModel;\r\n}());\r\nexport default ControlPanelModel;\r\n__decorate([\r\n observable\r\n], ControlPanelModel.prototype, \"manuallySelectedPanel\", void 0);\r\n__decorate([\r\n computed\r\n], ControlPanelModel.prototype, \"selectedPanel\", null);\r\n__decorate([\r\n action.bound\r\n], ControlPanelModel.prototype, \"selectTextPanel\", null);\r\n__decorate([\r\n action.bound\r\n], ControlPanelModel.prototype, \"selectPlatePanel\", null);\r\n__decorate([\r\n action.bound\r\n], ControlPanelModel.prototype, \"deselectPanels\", null);\r\n__decorate([\r\n computed\r\n], ControlPanelModel.prototype, \"selectedTextModel\", null);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/model.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/model.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/Preview/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx", | |
"name": "./src/apollo-builder/layout/Preview/component.tsx", | |
"index": 753, | |
"index2": 749, | |
"size": 6912, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/Preview/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/Preview/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Preview/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx", | |
"module": "./src/apollo-builder/layout/Preview/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/Preview/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "3:0-34" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 5, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\n/* Role: Defines the ControlPanel component */\r\nimport * as React from 'react';\r\nimport styled, { keyframes, withTheme } from '../../utils/styled';\r\nimport ResponsiveContainer from '../../ui/ResponsiveContainer';\r\nimport { CSSTransitionGroup } from 'react-transition-group';\r\nimport fadeIn from '../../ui/animation/fadeIn';\r\nimport fadeOut from '../../ui/animation/fadeOut';\r\nvar previewEnter = (_a = [\"\\n 0%{\\n margin-top: 40px;\\n }\\n 100%{\\n margin-top:0;\\n }\\n\"], _a.raw = [\"\\n 0%{\\n margin-top: 40px;\\n }\\n 100%{\\n margin-top:0;\\n }\\n\"], keyframes(_a));\r\nvar previewLeave = (_b = [\"\\n 0%{\\n margin-top: 0;\\n }\\n 100%{\\n margin-top:40px;\\n }\\n\"], _b.raw = [\"\\n 0%{\\n margin-top: 0;\\n }\\n 100%{\\n margin-top:40px;\\n }\\n\"], keyframes(_b));\r\nvar PreviewWrapper = (_c = [\"\\n height: 100%;\\n width: 100%;\\n top: 0;\\n left: 0;\\n background-color: rgba(0, 0, 0, 0.75);\\n position: absolute;\\n z-index: 2;\\n cursor: pointer;\\n\\n &.preview-enter{\\n animation: \", \" 0.35s \", \";\\n &>div:nth-of-type(2)>div{\\n animation: \", \" 0.35s \", \";\\n }\\n\\n }\\n &.preview-leave{\\n animation: \", \" 0.35s \", \";\\n opacity: 0;\\n &>div:nth-of-type(2)>div{\\n animation: \", \" 0.35s \", \";\\n }\\n }\\n\"], _c.raw = [\"\\n height: 100%;\\n width: 100%;\\n top: 0;\\n left: 0;\\n background-color: rgba(0, 0, 0, 0.75);\\n position: absolute;\\n z-index: 2;\\n cursor: pointer;\\n\\n &.preview-enter{\\n animation: \", \" 0.35s \", \";\\n &>div:nth-of-type(2)>div{\\n animation: \", \" 0.35s \", \";\\n }\\n\\n }\\n &.preview-leave{\\n animation: \", \" 0.35s \", \";\\n opacity: 0;\\n &>div:nth-of-type(2)>div{\\n animation: \", \" 0.35s \", \";\\n }\\n }\\n\"], styled.div(_c, fadeIn, function (props) { return props.theme.defaultTimingFunc; }, previewEnter, function (props) { return props.theme.defaultTimingFunc; }, fadeOut, function (props) { return props.theme.defaultTimingFunc; }, previewLeave, function (props) { return props.theme.defaultTimingFunc; }));\r\nvar ClosePreview = (_d = [\"\\n height: 100px;\\n width: 100px;\\n color: #FFF;\\n background: transparent;\\n font-size: 48px;\\n position: absolute;\\n top: 0;\\n right:0;\\n outline: none;\\n appearance: none;\\n border: none;\\n cursor: pointer;\\n font-family: \\\"Arial Narrow\\\", Arial, sans-serif;\\n font-weight: 100;\\n\"], _d.raw = [\"\\n height: 100px;\\n width: 100px;\\n color: #FFF;\\n background: transparent;\\n font-size: 48px;\\n position: absolute;\\n top: 0;\\n right:0;\\n outline: none;\\n appearance: none;\\n border: none;\\n cursor: pointer;\\n font-family: \\\"Arial Narrow\\\", Arial, sans-serif;\\n font-weight: 100;\\n\"], styled.button(_d));\r\nvar PreviewBackground = (_e = [\"\\n display: flex;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n position: absolute;\\n\"], _e.raw = [\"\\n display: flex;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n position: absolute;\\n\"], styled.div(_e));\r\nvar Preview = (function (_super) {\r\n __extends(Preview, _super);\r\n function Preview() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.handleKeyPress = function (event) {\r\n if (event.key === 'Escape') {\r\n _this.props.closePreview();\r\n }\r\n };\r\n return _this;\r\n }\r\n Preview.prototype.componentDidUpdate = function () {\r\n if (this.divElement) {\r\n this.divElement.focus();\r\n }\r\n };\r\n Preview.prototype.render = function () {\r\n var _this = this;\r\n var _a = this.props, getSpread = _a.getSpread, closePreview = _a.closePreview, isPreviewMode = _a.isPreviewMode, spreadSize = _a.spreadSize;\r\n return (React.createElement(ResponsiveContainer, { getChildren: function (size) {\r\n size = size || { width: 0, height: 0 };\r\n var horizontalScale = (size.width - (_this.props.theme.previewHorizontalOffset * 2)) / spreadSize.width;\r\n var verticalScale = (size.height * 2) / spreadSize.height;\r\n var previewToScreenRatio = Math.min(horizontalScale, verticalScale);\r\n var previewSpreadPosition = {\r\n x: _this.props.theme.previewHorizontalOffset,\r\n y: (size.height / 2) - ((spreadSize.height * previewToScreenRatio) / 2)\r\n };\r\n return React.createElement(\"div\", { style: { width: '100%', height: '100%', position: 'absolute', top: 0, left: 0 } },\r\n React.createElement(CSSTransitionGroup, { transitionName: \"preview\", transitionEnterTimeout: 350, transitionLeaveTimeout: 350 }, isPreviewMode\r\n ?\r\n React.createElement(PreviewWrapper, null,\r\n React.createElement(PreviewBackground, { tabIndex: 0, onClick: closePreview, onKeyDown: _this.handleKeyPress, innerRef: function (element) { return _this.divElement = element; } }),\r\n React.createElement(ClosePreview, { onClick: closePreview }, \"X\"),\r\n React.createElement(\"div\", { tabIndex: 0, onKeyDown: _this.handleKeyPress }, getSpread(previewToScreenRatio, previewSpreadPosition)))\r\n : null));\r\n } }));\r\n };\r\n return Preview;\r\n}(React.Component));\r\nexport default withTheme(Preview);\r\nvar _a, _b, _c, _d, _e;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/Preview/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx", | |
"name": "./src/apollo-builder/layout/Preview/connect.tsx", | |
"index": 752, | |
"index2": 750, | |
"size": 1397, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"issuerId": "./src/apollo-builder/app.tsx", | |
"issuerName": "./src/apollo-builder/app.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/app.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"module": "./src/apollo-builder/app.tsx", | |
"moduleName": "./src/apollo-builder/app.tsx", | |
"type": "harmony import", | |
"userRequest": "./layout/Preview/connect", | |
"loc": "25:0-47" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 4, | |
"source": "import * as React from 'react';\r\nimport connect from '../../utils/connect';\r\nimport Preview from './component';\r\nimport Spread from '../../design/Spread/connect';\r\nexport default connect(Preview)(function (model) { return ({\r\n spreadSize: model.selectedSpread.size,\r\n getSpread: function (ratio, position) {\r\n return React.createElement(Spread, { backgroundColor: model.backgroundColor, backgroundUrl: (model.backgroundUrl !== undefined) ? model.backgroundUrl : '', designToScreenRatio: ratio, origin: position, model: model.selectedSpread });\r\n },\r\n isPreviewMode: model.isPreviewMode,\r\n closePreview: model.hidePreview\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/Workspace/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx", | |
"name": "./src/apollo-builder/layout/Workspace/component.tsx", | |
"index": 684, | |
"index2": 681, | |
"size": 2668, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx", | |
"module": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "2:0-36" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 5, | |
"source": "import * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nimport Footer from '../../ui/footer';\r\nimport MeasureContainer from '../../ui/MeasureContainer';\r\nimport { withTheme } from '../../utils/styled';\r\nvar MeasureContainerChildWrapper = (_a = [\"\\n height: 100%;\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n z-index:1;\\n\"], _a.raw = [\"\\n height: 100%;\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n z-index:1;\\n\"], styled.div(_a));\r\nvar ContinueButtonWrapper = (_b = [\"\\n position: absolute;\\n right: 60px;\\n margin-left: 40px;\\n top: calc(50% - 20px);\\n z-index: 2;\\n\"], _b.raw = [\"\\n position: absolute;\\n right: 60px;\\n margin-left: 40px;\\n top: calc(50% - 20px);\\n z-index: 2;\\n\"], styled.div(_b));\r\nvar ControlPanelWrapper = (_c = [\"\\n color: \", \";\\n padding: 10px;\\n border-radius: 4px 0 0 4px;\\n position: absolute;\\n left: 20px;\\n top: 123px;\\n z-index: 2;\\n\"], _c.raw = [\"\\n color: \", \";\\n padding: 10px;\\n border-radius: 4px 0 0 4px;\\n position: absolute;\\n left: 20px;\\n top: 123px;\\n z-index: 2;\\n\"], styled.div(_c, function (props) { return props.theme.defaultFontColor; }));\r\nvar Workspace = function (props) { return (React.createElement(MeasureContainer, { measureRequest: props.measureSizeRequest, onSizeChanged: function (size) { return props.onSizeChanged(size, {\r\n width: props.theme.spreadHorizontalOffset,\r\n height: props.theme.spreadVerticalOffset\r\n }); } },\r\n React.createElement(MeasureContainerChildWrapper, null,\r\n React.createElement(ControlPanelWrapper, null, props.controlPanel),\r\n props.canvas,\r\n React.createElement(ContinueButtonWrapper, null, props.continueButton),\r\n React.createElement(Footer, null, props.footer)))); };\r\nexport default withTheme(Workspace);\r\nvar _a, _b, _c;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx", | |
"name": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"index": 683, | |
"index2": 742, | |
"size": 1647, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"issuerId": "./src/apollo-builder/app.tsx", | |
"issuerName": "./src/apollo-builder/app.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/app.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"module": "./src/apollo-builder/app.tsx", | |
"moduleName": "./src/apollo-builder/app.tsx", | |
"type": "harmony import", | |
"userRequest": "./layout/Workspace/connect", | |
"loc": "19:0-51" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 4, | |
"source": "import * as React from 'react';\r\nimport Workspace from './component';\r\nimport TooltipSlider from '../../ui/TooltipSlider';\r\nimport connect from '../../utils/connect';\r\nimport Canvas from '../Canvas/connect';\r\nimport ControlPanel from '../ControlPanel/connect';\r\nimport ContinueButton from '../../ui/buttons/ContinueButton';\r\nexport default connect(Workspace)(function (model) { return ({\r\n measureSizeRequest: model.scaleSpreadToFitRequest,\r\n onSizeChanged: model.scaleSpreadToContainer,\r\n controlPanel: (React.createElement(ControlPanel, { model: model })),\r\n continueButton: (React.createElement(ContinueButton, null)),\r\n canvas: (React.createElement(Canvas, { model: model })),\r\n footer: (React.createElement(TooltipSlider, { min: 30, max: 400, value: model.designToScreenRatio * 100, onChange: model.setDesignToScreenRatio, width: 207, showNav: true, suffix: \"%\" }))\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/layout/Workspace/model.ts", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts", | |
"name": "./src/apollo-builder/layout/Workspace/model.ts", | |
"index": 664, | |
"index2": 676, | |
"size": 17097, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/builder/model.tsx", | |
"issuerId": "./src/apollo-builder/core/builder/model.tsx", | |
"issuerName": "./src/apollo-builder/core/builder/model.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/core/builder/model.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/core/builder/model.tsx", | |
"module": "./src/apollo-builder/core/builder/model.tsx", | |
"moduleName": "./src/apollo-builder/core/builder/model.tsx", | |
"type": "harmony import", | |
"userRequest": "../../layout/Workspace/model", | |
"loc": "9:0-53" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 5, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* Role: the main workspace model */\r\nimport { action, computed, observable } from 'mobx';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { Observable } from 'rxjs';\r\nimport { from } from 'rxjs/observable/from';\r\nimport { toStream } from 'mobx-utils/lib/mobx-utils';\r\nimport { actionStream } from '../../common/action-stream';\r\nimport { Container } from '../../common/container';\r\nimport { EditableTextModel, PositionModel, SpreadModel, TextModel } from '../../design/models';\r\nimport ControlPanel from '../../layout/ControlPanel/model';\r\nimport ActionStackController from '../../core/actionStack/ActionStackController';\r\nimport { ActionSourcesBase } from '../../core/actionStack/ActionSource';\r\nimport { createActionSink } from '../../core/actionStack/ActionSink';\r\nvar Workspace = (function (_super) {\r\n __extends(Workspace, _super);\r\n function Workspace(project, configuration) {\r\n var _this = _super.call(this) || this;\r\n _this.configuration = configuration;\r\n /**\r\n * Toggle preview functionality\r\n */\r\n _this.isPreviewMode = false;\r\n // selectction/deselection handlers\r\n _this.spreadPosition = { x: 0, y: 0 };\r\n _this.designToScreenRatio = 1;\r\n // the selected plate (determines background color and text color)\r\n _this.selectedPlateIndex = 0;\r\n // these belong in the *product*, but for now we'll stash them here\r\n _this.plates = [\r\n { bgColor: '#ffffff', textColor: '#333333' },\r\n {\r\n bgColor: 'transparent',\r\n textColor: '#000000',\r\n bgUrl: 'src/apollo-builder/assets/mocks/plates/bg/[email protected]',\r\n bgThumb: 'src/apollo-builder/assets/mocks/plates/thumb/s-12.png'\r\n },\r\n {\r\n bgColor: 'transparent',\r\n textColor: '#ffffff',\r\n bgUrl: 'src/apollo-builder/assets/mocks/plates/bg/wood.png',\r\n bgThumb: 'src/apollo-builder/assets/mocks/plates/thumb/s-5.png'\r\n },\r\n {\r\n bgColor: 'transparent',\r\n textColor: '#000000',\r\n bgUrl: 'src/apollo-builder/assets/mocks/plates/bg/[email protected]',\r\n bgThumb: 'src/apollo-builder/assets/mocks/plates/thumb/s-8.png'\r\n },\r\n {\r\n bgColor: 'transparent',\r\n textColor: '#000000',\r\n bgUrl: 'src/apollo-builder/assets/mocks/plates/bg/[email protected]',\r\n bgThumb: 'src/apollo-builder/assets/mocks/plates/thumb/s-37.png'\r\n },\r\n {\r\n bgColor: 'transparent',\r\n textColor: '#b2975b',\r\n bgUrl: 'src/apollo-builder/assets/mocks/plates/bg/marble.png',\r\n bgThumb: 'src/apollo-builder/assets/mocks/plates/thumb/s-34.png'\r\n },\r\n { bgColor: '#233A6A', textColor: '#ffffff' },\r\n { bgColor: '#ffffff', textColor: '#233A6A' },\r\n { bgColor: '#ffffff', textColor: '#BC1622' },\r\n { bgColor: '#EBE131', textColor: '#000000' },\r\n { bgColor: '#00a900', textColor: '#ffffff' },\r\n { bgColor: '#0099cc', textColor: '#ffffff' },\r\n { bgColor: '#233A6A', textColor: '#ffffff' },\r\n { bgColor: '#ffffff', textColor: '#233A6A' },\r\n { bgColor: '#ffffff', textColor: '#BC1622' },\r\n { bgColor: '#452717', textColor: '#ffffff' },\r\n { bgColor: '#BC1622', textColor: '#333333' },\r\n { bgColor: '#000000', textColor: '#ffffff' },\r\n { bgColor: '#EBE131', textColor: '#000000' },\r\n { bgColor: '#00a900', textColor: '#ffffff' }\r\n ];\r\n _this.status = undefined;\r\n _this.startSelecting = actionStream();\r\n _this.endSelecting = actionStream();\r\n _this.deselect$ = from(_this.startSelecting)\r\n .switchMap(function () { return from(_this.endSelecting)\r\n .takeUntil(_this.selectRequest$); });\r\n _this.scaleSpreadToFitSubject = new Subject();\r\n _this.selectRequest$ = new Subject();\r\n _this.selectedId = undefined;\r\n _this.nextId = 0;\r\n _this.actionStackController = new ActionStackController();\r\n _this.actionSink = createActionSink();\r\n // filter the stream of all available fonts from the host and load only (the 'normal' font face of) the default fonts\r\n _this.fontsLoadRequest$ = Observable.from(toStream(function () { return _this.defaultFonts; }))\r\n .startWith(_this.defaultFonts)\r\n .switchMap(function (fonts) { return _this.configuration.host.font.all$\r\n .switchMap(function (allFonts) { return Observable.from(allFonts.filter(function (f) { return fonts.indexOf(f.fontFamilyName) >= 0; })); })\r\n .mergeMap(function (f) { return f.normal; })\r\n .filter(function (ff) { return !!ff; })\r\n .mergeMap(function (ff) { return ff.load(); }); });\r\n _this.project = project;\r\n _this.setupStubSpread();\r\n _this.deselect$.subscribe(_this.deselect);\r\n _this.action$\r\n .subscribe(function (action) { return _this.actionStackController.addAction(action); });\r\n _this.fontsLoadRequest$.subscribe();\r\n return _this;\r\n }\r\n Object.defineProperty(Workspace.prototype, \"scaleSpreadToFitRequest\", {\r\n get: function () {\r\n return this.scaleSpreadToFitSubject.asObservable();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Workspace.prototype, \"defaultFonts\", {\r\n // this array of default fonts will eventually come from configuration\r\n get: function () {\r\n return ['Asap'];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Workspace.prototype.getActionSources = function () {\r\n return [this.selectedSpread, this.actionSink];\r\n };\r\n Workspace.prototype.scaleSpreadToFit = function () {\r\n this.scaleSpreadToFitSubject.next();\r\n };\r\n Workspace.prototype.selectPlate = function (plateIndex) {\r\n var _this = this;\r\n var oldPlateIndex = this.selectedPlateIndex;\r\n this.actionSink(function () {\r\n _this.selectedPlateIndex = plateIndex;\r\n // todo: temporary\r\n _this.selectedSpread.textColor = _this.plates[_this.selectedPlateIndex].textColor;\r\n }, function () {\r\n _this.selectedPlateIndex = oldPlateIndex;\r\n // todo: temporary\r\n _this.selectedSpread.textColor = _this.plates[_this.selectedPlateIndex].textColor;\r\n });\r\n };\r\n Workspace.prototype.setDesignToScreenRatio = function (ratio) {\r\n var newRatio = Math.round(ratio) / 100;\r\n this.spreadPosition = {\r\n x: Math.round(this.spreadPosition.x + this.selectedSpread.size.width * (this.designToScreenRatio - newRatio) / 2),\r\n y: Math.round(this.spreadPosition.y + this.selectedSpread.size.height * (this.designToScreenRatio - newRatio) / 2)\r\n };\r\n this.designToScreenRatio = newRatio;\r\n };\r\n Workspace.prototype.scaleSpreadToContainer = function (containerSize, marginSize) {\r\n var selectedSpread = this.selectedSpread;\r\n // can update the margin for preview mode\r\n var marginWidth = marginSize.width;\r\n // the margin helps determine the available space of the spread with no overlap. We times it by 2 to\r\n // ensure it's exactly center aligned (e.g. left + right cols of equal widths)\r\n var horizontalScale = (containerSize.width - (marginWidth * 2)) / selectedSpread.size.width;\r\n var verticalScale = (containerSize.height - marginSize.height * 2) / selectedSpread.size.height;\r\n // Scales spread to fit inside the container\r\n this.designToScreenRatio = Math.floor(Math.min(horizontalScale, verticalScale) * 50) / 50;\r\n // Centers spread inside the container\r\n this.spreadPosition = {\r\n x: Math.round((containerSize.width - selectedSpread.size.width * this.designToScreenRatio) / 2),\r\n y: Math.round((containerSize.height - selectedSpread.size.height * this.designToScreenRatio) / 2)\r\n };\r\n };\r\n // Deselects all workspace controls\r\n Workspace.prototype.deselect = function () {\r\n this.selectedId = undefined;\r\n };\r\n Workspace.prototype.addEditableText = function (left, top, model) {\r\n var selectionController = this.createSelectionController(model);\r\n var element = new EditableTextModel(model.container, selectionController, model);\r\n this.selectedSpread.addElement(new PositionModel({ left: left, top: top }, model.container, element));\r\n };\r\n Workspace.prototype.saveProject = function () {\r\n var _this = this;\r\n // TODO: remove this mockup method implementation and\r\n // implement saving project\r\n this.status = 'saving';\r\n // faking time needed for BE to respond with some status\r\n setTimeout(function () {\r\n _this.resetStatus();\r\n }, 2000);\r\n };\r\n // TODO: remove this method all together\r\n // this method is here to reset status of application\r\n // this will be done by BE (sending different statuses)\r\n Workspace.prototype.resetStatus = function () {\r\n this.status = undefined;\r\n };\r\n Workspace.prototype.showPreview = function () {\r\n this.deselect();\r\n this.isPreviewMode = true;\r\n };\r\n Workspace.prototype.hidePreview = function () {\r\n this.isPreviewMode = false;\r\n };\r\n Workspace.prototype.undo = function () {\r\n this.actionStackController.undo();\r\n };\r\n Workspace.prototype.redo = function () {\r\n this.actionStackController.redo();\r\n };\r\n Object.defineProperty(Workspace.prototype, \"backgroundColor\", {\r\n get: function () {\r\n return this.plates[this.selectedPlateIndex].bgColor;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Workspace.prototype, \"backgroundUrl\", {\r\n get: function () {\r\n return this.plates[this.selectedPlateIndex].bgUrl;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Workspace.prototype, \"textColor\", {\r\n get: function () {\r\n return this.plates[this.selectedPlateIndex].textColor;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Workspace.prototype, \"selected\", {\r\n get: function () {\r\n return this.selectedId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Workspace.prototype, \"hasTextSelections\", {\r\n get: function () {\r\n return this.selectedSpread.hasTextSelections;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Workspace.prototype, \"textSelections\", {\r\n get: function () {\r\n return this.selectedSpread.textSelections;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Workspace.prototype.selectDefaultText = function () {\r\n this.selectedSpread.selectDefaultText();\r\n };\r\n Workspace.prototype.createSelectionController = function (model) {\r\n var uniqueId = this.nextId++;\r\n var that = this;\r\n return observable({\r\n get selected() { return that.selectedId === uniqueId; },\r\n requestSelection: action(function () {\r\n that.selectedId = uniqueId;\r\n that.selectRequest$.next();\r\n })\r\n });\r\n };\r\n // the spread would really be constructed from the project data, but for now we'll stub the sucker out\r\n Workspace.prototype.setupStubSpread = function () {\r\n var stubSpread = new SpreadModel({\r\n width: 730,\r\n height: 180\r\n });\r\n // currently using the first font from the default fonts array\r\n var defaultFontFamily = this.defaultFonts[0] + \", Arial, Helvetica, sans-serif\";\r\n this.selectedSpread = stubSpread;\r\n this.controlPanel = new ControlPanel(this);\r\n this.addEditableText(15, 20, new TextModel({\r\n placeholder: 'Full Name',\r\n color: 'black',\r\n alignment: 'center',\r\n fontFamily: defaultFontFamily,\r\n fontSize: 42\r\n }, new Container({ width: 700, height: 65 })));\r\n this.addEditableText(15, 95, new TextModel({\r\n placeholder: 'Title',\r\n color: 'black',\r\n alignment: 'center',\r\n fontFamily: defaultFontFamily,\r\n fontSize: 42\r\n }, new Container({ width: 700, height: 65 })));\r\n };\r\n return Workspace;\r\n}(ActionSourcesBase));\r\nexport default Workspace;\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"project\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"isPreviewMode\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"selectedProduct\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"controlPanel\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"selectedSpread\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"spreadPosition\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"designToScreenRatio\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"selectedPlateIndex\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"plates\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"status\", void 0);\r\n__decorate([\r\n observable\r\n], Workspace.prototype, \"selectedId\", void 0);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"defaultFonts\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"selectPlate\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"setDesignToScreenRatio\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"scaleSpreadToContainer\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"deselect\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"addEditableText\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"saveProject\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"resetStatus\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"showPreview\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"hidePreview\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"undo\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"redo\", null);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"backgroundColor\", null);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"backgroundUrl\", null);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"textColor\", null);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"selected\", null);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"hasTextSelections\", null);\r\n__decorate([\r\n computed\r\n], Workspace.prototype, \"textSelections\", null);\r\n__decorate([\r\n action.bound\r\n], Workspace.prototype, \"selectDefaultText\", null);\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/model.ts\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/ControlPanelMenu.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ControlPanelMenu.tsx", | |
"name": "./src/apollo-builder/ui/ControlPanelMenu.tsx", | |
"index": 715, | |
"index2": 723, | |
"size": 2674, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../../ui/ControlPanelMenu", | |
"loc": "2:0-57" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "/* Role: provides a consistent style for any content in the control panel's second column (i.e. selected type -\r\n// \"Text\" / \"Image\", \"Plate Color\" settings) */\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\nimport styled from '../utils/styled';\r\nimport { CSSTransitionGroup } from 'react-transition-group';\r\nvar StyledMenu = (_a = [\"\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n height: auto;\\n z-index: 1;\\n left: 86px;\\n position: absolute;\\n top: 0;\\n border-radius: 0 4px 4px 4px;\\n\"], _a.raw = [\"\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n height: auto;\\n z-index: 1;\\n left: 86px;\\n position: absolute;\\n top: 0;\\n border-radius: 0 4px 4px 4px;\\n\"], styled.div(_a));\r\nvar ControlPanelMenu = (function (_super) {\r\n __extends(ControlPanelMenu, _super);\r\n function ControlPanelMenu() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ControlPanelMenu.prototype.render = function () {\r\n return (React.createElement(StyledMenu, null,\r\n React.createElement(CSSTransitionGroup, { transitionName: \"mount\", transitionEnterTimeout: 500, transitionLeaveTimeout: this.props.isPanelOpen ? 1 : 500 }, this.props.children)));\r\n };\r\n return ControlPanelMenu;\r\n}(React.Component));\r\nexport default ControlPanelMenu;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ControlPanelMenu.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ControlPanelMenu.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/FocusObserver.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/FocusObserver.tsx", | |
"name": "./src/apollo-builder/ui/FocusObserver.tsx", | |
"index": 751, | |
"index2": 747, | |
"size": 2419, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"issuerId": "./src/apollo-builder/app.tsx", | |
"issuerName": "./src/apollo-builder/app.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/app.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"module": "./src/apollo-builder/app.tsx", | |
"moduleName": "./src/apollo-builder/app.tsx", | |
"type": "harmony import", | |
"userRequest": "./ui/FocusObserver", | |
"loc": "24:0-47" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 4, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\nimport { Scheduler, Subject, Observable } from 'rxjs';\r\nimport * as PropTypes from 'prop-types';\r\nvar FocusObserver = (function (_super) {\r\n __extends(FocusObserver, _super);\r\n function FocusObserver() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.focus$ = new Subject();\r\n _this.blur$ = new Subject();\r\n _this.signal$ = _this.blur$.switchMap(function () { return Observable.of(undefined, Scheduler.async).takeUntil(_this.focus$); });\r\n return _this;\r\n }\r\n FocusObserver.prototype.getChildContext = function () {\r\n return { focusControl: this.signal$ };\r\n };\r\n FocusObserver.prototype.render = function () {\r\n var _this = this;\r\n return (React.createElement(\"div\", { className: this.props.className, style: this.props.style, onFocus: function (e) { return _this.focus$.next(e.target); }, onBlurCapture: function (e) { return _this.blur$.next(e.target); } }, this.props.children));\r\n };\r\n return FocusObserver;\r\n}(React.Component));\r\nFocusObserver.childContextTypes = { focusControl: PropTypes.object };\r\nexport default FocusObserver;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/FocusObserver.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/FocusObserver.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/MeasureContainer.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/MeasureContainer.tsx", | |
"name": "./src/apollo-builder/ui/MeasureContainer.tsx", | |
"index": 686, | |
"index2": 680, | |
"size": 3841, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx", | |
"issuerId": "./src/apollo-builder/layout/Workspace/component.tsx", | |
"issuerName": "./src/apollo-builder/layout/Workspace/component.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/component.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx", | |
"module": "./src/apollo-builder/layout/Workspace/component.tsx", | |
"moduleName": "./src/apollo-builder/layout/Workspace/component.tsx", | |
"type": "harmony import", | |
"userRequest": "../../ui/MeasureContainer", | |
"loc": "4:0-57" | |
}, { | |
"moduleId": "./src/apollo-builder/ui/ResponsiveContainer.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ResponsiveContainer.tsx", | |
"module": "./src/apollo-builder/ui/ResponsiveContainer.tsx", | |
"moduleName": "./src/apollo-builder/ui/ResponsiveContainer.tsx", | |
"type": "harmony import", | |
"userRequest": "./MeasureContainer", | |
"loc": "12:0-50" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\n/* Role: Captures the DOM dimensions of its parent. */\r\nimport * as React from 'react';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { equals as sizeEquals } from '../common/size';\r\nvar windowResize$ = Observable.fromEvent(window, 'resize');\r\nvar MeasureContainer = (function (_super) {\r\n __extends(MeasureContainer, _super);\r\n function MeasureContainer() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.element$ = new BehaviorSubject(undefined);\r\n _this.sizes$ = _this.element$\r\n .filter(function (element) { return !!element; })\r\n .switchMap(function (element) {\r\n return (_this.props.measureRequest || Observable.empty())\r\n .merge(windowResize$)\r\n .startWith(null)\r\n .map(function () { return ({\r\n width: element.offsetWidth,\r\n height: element.offsetHeight\r\n }); });\r\n })\r\n .distinctUntilChanged(sizeEquals)\r\n .publishReplay(1)\r\n .refCount();\r\n return _this;\r\n }\r\n MeasureContainer.prototype.componentDidMount = function () {\r\n if (this.element$.value === undefined) {\r\n // tslint:disable-next-line:no-console\r\n console.warn('ref has not been called; check that child component passed is either a DOM element or a styled component.');\r\n }\r\n if (this.props.onSizeChanged) {\r\n this.sizeChangeSubscription = this.sizes$.subscribe(this.props.onSizeChanged);\r\n }\r\n };\r\n MeasureContainer.prototype.componentWillUnmount = function () {\r\n this.element$.complete();\r\n if (this.sizeChangeSubscription) {\r\n this.sizeChangeSubscription.unsubscribe();\r\n this.sizeChangeSubscription = undefined;\r\n }\r\n };\r\n MeasureContainer.prototype.render = function () {\r\n var _this = this;\r\n var child = React.Children.only(this.props.children);\r\n var prevRef = typeof child.type === 'string' ? child.props.ref : child.props.innerRef;\r\n if (prevRef !== undefined) {\r\n throw new Error('Child elements with ref/innerRef specified are not supported.');\r\n }\r\n var ref = function (element) { return _this.element$.next(element); };\r\n var refProps = typeof child.type === 'string' ? { ref: ref } : { innerRef: ref };\r\n var clonedChild = React.cloneElement(child, refProps);\r\n return clonedChild;\r\n };\r\n return MeasureContainer;\r\n}(React.Component));\r\nexport default MeasureContainer;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/MeasureContainer.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/MeasureContainer.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/buttons/PrimaryButton.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/PrimaryButton.tsx", | |
"name": "./src/apollo-builder/ui/buttons/PrimaryButton.tsx", | |
"index": 746, | |
"index2": 740, | |
"size": 2940, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ContinueButton.tsx", | |
"issuerId": "./src/apollo-builder/ui/buttons/ContinueButton.tsx", | |
"issuerName": "./src/apollo-builder/ui/buttons/ContinueButton.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/ui/buttons/ContinueButton.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ContinueButton.tsx", | |
"module": "./src/apollo-builder/ui/buttons/ContinueButton.tsx", | |
"moduleName": "./src/apollo-builder/ui/buttons/ContinueButton.tsx", | |
"type": "harmony import", | |
"userRequest": "../../ui/buttons/PrimaryButton", | |
"loc": "4:0-59" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "import * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nvar Button = (_a = [\"\\n background-color: white;\\n padding: 6px;\\n border-radius: 24px;\\n cursor: pointer;\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\\n\\n & > * {\\n display: inline-block;\\n height: 12px;\\n vertical-align: middle;\\n transition: all \", \" linear;\\n }\\n & > span {\\n font-size: 12px;\\n padding: 10px 14px;\\n color: \", \";\\n }\\n & > div {\\n padding: 10px 16px;\\n border-left: 1px solid #d8d8d8;\\n background-image: url(\", \");\\n background-repeat: no-repeat;\\n background-position: 56% 50%;\\n }\\n &:hover {\\n & > span {\\n color: \", \";\\n }\\n & > div {\\n background-image: url(\", \");\\n }\\n }\\n\"], _a.raw = [\"\\n background-color: white;\\n padding: 6px;\\n border-radius: 24px;\\n cursor: pointer;\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\\n\\n & > * {\\n display: inline-block;\\n height: 12px;\\n vertical-align: middle;\\n transition: all \", \" linear;\\n }\\n & > span {\\n font-size: 12px;\\n padding: 10px 14px;\\n color: \", \";\\n }\\n & > div {\\n padding: 10px 16px;\\n border-left: 1px solid #d8d8d8;\\n background-image: url(\", \");\\n background-repeat: no-repeat;\\n background-position: 56% 50%;\\n }\\n &:hover {\\n & > span {\\n color: \", \";\\n }\\n & > div {\\n background-image: url(\", \");\\n }\\n }\\n\"], styled.div(_a, function (props) { return props.theme.transitionSpeed; }, function (props) { return props.theme.defaultFontColor; }, function (props) { return props.theme.getIcon('arrow-right', false); }, function (props) { return props.theme.defaultFontColorActive; }, function (props) { return props.theme.getIcon('arrow-right', true); }));\r\nvar ContinueButton = function (props) { return (React.createElement(Button, null,\r\n React.createElement(\"span\", null, props.children),\r\n React.createElement(\"div\", null))); };\r\nexport default ContinueButton;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/PrimaryButton.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/PrimaryButton.tsx\"); } } })();" | |
}, { | |
"id": 5, | |
"identifier": "multi dev-app/index.tsx", | |
"name": "multi dev-app/index.tsx", | |
"index": 652, | |
"index2": 763, | |
"size": 28, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": null, | |
"issuerId": null, | |
"issuerName": null, | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 0 | |
}, { | |
"id": "./src/apollo-builder/ui/Plates/Plate.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/Plates/Plate.tsx", | |
"name": "./src/apollo-builder/ui/Plates/Plate.tsx", | |
"index": 738, | |
"index2": 731, | |
"size": 2932, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx", | |
"issuerId": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx", | |
"issuerName": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx", | |
"module": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx", | |
"moduleName": "./src/apollo-builder/layout/ControlPanel/ColorPlatePanel/component.tsx", | |
"type": "harmony import", | |
"userRequest": "../../../ui/Plates/Plate", | |
"loc": "2:0-45" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "import * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nvar PlateWrapper = (_a = [\"\\n display: inline-block;\\n width: 67px;\\n height: 67px;\\n line-height: 67px;\\n text-align: center;\\n font-size: 2em;\\n cursor: pointer;\\n background: \", \";\\n &>span{\\n opacity: \", \";\\n }\\n transition: all 0.4s cubic-bezier(0.18, 0.89, 0.32, 1.28);\\n transform: \", \"\\n\"], _a.raw = [\"\\n display: inline-block;\\n width: 67px;\\n height: 67px;\\n line-height: 67px;\\n text-align: center;\\n font-size: 2em;\\n cursor: pointer;\\n background: \",\r\n \";\\n &>span{\\n opacity: \", \";\\n }\\n transition: all 0.4s cubic-bezier(0.18, 0.89, 0.32, 1.28);\\n transform: \", \"\\n\"], styled.span(_a, function (props) { return props.bgThumb.length > 0\r\n ? 'url(' + props.bgThumb + ')' : props.bgColor; }, function (props) { return props.bgThumb.length > 0 ? '0' : '1'; }, function (props) { return props.selected ? 'scale(0.8)' : 'scale(1)'; }));\r\nvar PlateBorder = (_b = [\"\\n margin: 10px 10px 0 0;\\n display: inline-block;\\n width: 67px;\\n height: 67px;\\n border: \", \";\\n border-radius: 2px;\\n box-sizing: content-box;\\n &:last-of-type , &:nth-last-of-type(2){\\n margin-bottom: 12px;\\n }\\n\"], _b.raw = [\"\\n margin: 10px 10px 0 0;\\n display: inline-block;\\n width: 67px;\\n height: 67px;\\n border: \", \";\\n border-radius: 2px;\\n box-sizing: content-box;\\n &:last-of-type , &:nth-last-of-type(2){\\n margin-bottom: 12px;\\n }\\n\"], styled.span(_b, function (props) { return props.selected ? props.theme.selectedElementOutline : '2px solid ' + props.theme.controlPanelBackground; }));\r\nvar Plate = function (props) { return (React.createElement(PlateBorder, { selected: props.selected },\r\n React.createElement(PlateWrapper, { bgThumb: props.bgThumb, bgColor: props.bgColor, selected: props.selected, style: {\r\n backgroundColor: props.bgColor,\r\n color: props.textColor,\r\n backgroundImage: props.bgThumb\r\n }, onClick: props.onSelectPlate },\r\n React.createElement(\"span\", null, \"T\")))); };\r\nexport default Plate;\r\nvar _a, _b;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/Plates/Plate.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/Plates/Plate.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/Position.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/Position.tsx", | |
"name": "./src/apollo-builder/ui/Position.tsx", | |
"index": 712, | |
"index2": 704, | |
"size": 1030, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx", | |
"issuerId": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"issuerName": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/design/Element/control/connect.tsx", | |
"module": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"moduleName": "./src/apollo-builder/design/Element/control/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../../../ui/Position", | |
"loc": "21:0-44" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 8, | |
"source": "/* Role: simple component that handles placing an element at a particular position */\r\nimport * as React from 'react';\r\nvar Position = function (props) { return (React.createElement(\"div\", { style: { position: 'absolute', left: props.left, top: props.top } }, props.children)); };\r\nexport default Position;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/Position.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/Position.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/ResponsiveContainer.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ResponsiveContainer.tsx", | |
"name": "./src/apollo-builder/ui/ResponsiveContainer.tsx", | |
"index": 754, | |
"index2": 748, | |
"size": 2033, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx", | |
"issuerId": "./src/apollo-builder/layout/Preview/component.tsx", | |
"issuerName": "./src/apollo-builder/layout/Preview/component.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Preview/component.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx", | |
"module": "./src/apollo-builder/layout/Preview/component.tsx", | |
"moduleName": "./src/apollo-builder/layout/Preview/component.tsx", | |
"type": "harmony import", | |
"userRequest": "../../ui/ResponsiveContainer", | |
"loc": "14:0-63" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport * as React from 'react';\r\nimport MeasureContainer from './MeasureContainer';\r\nvar ResponsiveContainer = (function (_super) {\r\n __extends(ResponsiveContainer, _super);\r\n function ResponsiveContainer() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.onSizeChanged = function (size) {\r\n _this.setState(size);\r\n };\r\n return _this;\r\n }\r\n ResponsiveContainer.prototype.render = function () {\r\n var children = this.props.getChildren(this.state);\r\n return React.createElement(MeasureContainer, { measureRequest: this.props.measureRequest, onSizeChanged: this.onSizeChanged }, children);\r\n };\r\n return ResponsiveContainer;\r\n}(React.Component));\r\nexport default ResponsiveContainer;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ResponsiveContainer.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ResponsiveContainer.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx", | |
"name": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"index": 730, | |
"index2": 730, | |
"size": 5044, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../../ui/ScrollablePanel", | |
"loc": "3:0-55" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "/* Role: provides a styled, scrollable panel with a +/i icon at the bottom to expand/contract the region */\r\nimport * as React from 'react';\r\nimport ScrollArea from 'react-scrollbar-patch';\r\nimport styled from '../utils/styled';\r\nimport slideIn from '../ui/animation/slideIn';\r\nimport slideOut from '../ui/animation/slideOut';\r\nimport fadeIn from '../ui/animation/fadeIn';\r\nimport fadeOut from '../ui/animation/fadeOut';\r\nimport StyledScrollable from './StyledScrollable';\r\nvar StyledScrollablePanel = (_a = [\"\\n position: absolute;\\n &.mount-enter-active{\\n opacity: 1;\\n animation: \", \" 0.3s \", \";\\n &>div span:nth-child(n + 4){\\n animation: \", \" 0.2s \", \";\\n }\\n &>div span:nth-child(n + 8){\\n animation: \", \" 0.4s \", \";\\n }\\n }\\n\\n &.mount-leave-active{\\n &>div{\\n opacity: 0;\\n animation: \", \" 0.3s \", \";\\n }\\n &>div span{\\n opacity: 0;\\n }\\n }\\n\\n >div:first-child{\\n padding: 0;\\n margin: 0 0 -10px;\\n border-top-right-radius: 5px;\\n border-bottom-right-radius: 5px;\\n border-bottom-left-radius: 5px;\\n height: auto;\\n transition: max-height 0.3s \", \";\\n\\n >div>span:nth-child(n + 11){\\n animation: \", \" 0.2s \", \";\\n opacity: 0;\\n }\\n }\\n\\n .scrollarea{\\n height: auto;\\n width: 195px;\\n max-height: \", \";\\n }\\n\\n .scrollarea-content{\\n padding-left: 12px;\\n border-top-right-radius: 5px;\\n border-bottom-right-radius: 5px;\\n border-bottom-left-radius: 5px;\\n background-color: \", \";\\n width: 163px;\\n\\n &>span:nth-child(n + 11){\\n animation: \", \" 0.6s \", \";\\n }\\n\\n &>span:nth-child(n + 13){\\n animation: \", \" 0.9s \", \";\\n }\\n }\\n\"], _a.raw = [\"\\n position: absolute;\\n &.mount-enter-active{\\n opacity: 1;\\n animation: \", \" 0.3s \", \";\\n &>div span:nth-child(n + 4){\\n animation: \", \" 0.2s \", \";\\n }\\n &>div span:nth-child(n + 8){\\n animation: \", \" 0.4s \", \";\\n }\\n }\\n\\n &.mount-leave-active{\\n &>div{\\n opacity: 0;\\n animation: \", \" 0.3s \", \";\\n }\\n &>div span{\\n opacity: 0;\\n }\\n }\\n\\n >div:first-child{\\n padding: 0;\\n margin: 0 0 -10px;\\n border-top-right-radius: 5px;\\n border-bottom-right-radius: 5px;\\n border-bottom-left-radius: 5px;\\n height: auto;\\n transition: max-height 0.3s \", \";\\n\\n >div>span:nth-child(n + 11){\\n animation: \", \" 0.2s \", \";\\n opacity: 0;\\n }\\n }\\n\\n .scrollarea{\\n height: auto;\\n width: 195px;\\n max-height: \", \";\\n }\\n\\n .scrollarea-content{\\n padding-left: 12px;\\n border-top-right-radius: 5px;\\n border-bottom-right-radius: 5px;\\n border-bottom-left-radius: 5px;\\n background-color: \", \";\\n width: 163px;\\n\\n &>span:nth-child(n + 11){\\n animation: \", \" 0.6s \", \";\\n }\\n\\n &>span:nth-child(n + 13){\\n animation: \", \" 0.9s \", \";\\n }\\n }\\n\"], styled.div(_a, slideIn, function (props) { return props.theme.defaultTimingFunc; }, fadeIn, function (props) { return props.theme.defaultTimingFunc; }, fadeIn, function (props) { return props.theme.defaultTimingFunc; }, slideOut, function (props) { return props.theme.defaultTimingFunc; }, function (props) { return props.theme.defaultTimingFunc; }, fadeOut, function (props) { return props.theme.defaultTimingFunc; }, function (props) { return props.theme.scrollablePanelHeight; }, function (props) { return props.theme.controlPanelBackground; }, fadeIn, function (props) { return props.theme.defaultTimingFunc; }, fadeIn, function (props) { return props.theme.defaultTimingFunc; }));\r\nvar ScrollablePanel = function (props) {\r\n return React.createElement(StyledScrollablePanel, null,\r\n React.createElement(StyledScrollable, null,\r\n React.createElement(ScrollArea, { speed: 1.5, horizontal: false, smoothScrolling: true }, props.children)));\r\n};\r\nexport default ScrollablePanel;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/StatusMessage/component.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/component.tsx", | |
"name": "./src/apollo-builder/ui/StatusMessage/component.tsx", | |
"index": 749, | |
"index2": 744, | |
"size": 1681, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/connect.ts", | |
"issuerId": "./src/apollo-builder/ui/StatusMessage/connect.ts", | |
"issuerName": "./src/apollo-builder/ui/StatusMessage/connect.ts", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/ui/StatusMessage/connect.ts", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/connect.ts", | |
"module": "./src/apollo-builder/ui/StatusMessage/connect.ts", | |
"moduleName": "./src/apollo-builder/ui/StatusMessage/connect.ts", | |
"type": "harmony import", | |
"userRequest": "./component", | |
"loc": "1:0-40" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 5, | |
"source": "import * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nimport { FormattedMessage } from 'react-intl';\r\nvar StatusMessageContainer = (_a = [\"\\n min-width: 310px;\\n position: relative;\\n top: 20px;\\n text-align: center;\\n\"], _a.raw = [\"\\n min-width: 310px;\\n position: relative;\\n top: 20px;\\n text-align: center;\\n\"], styled.div(_a));\r\nvar StatusMessageStyled = (_b = [\"\\n position: relative;\\n font-size: 10px;\\n color: #0f7bd6;\\n\"], _b.raw = [\"\\n position: relative;\\n font-size: 10px;\\n color: #0f7bd6;\\n\"], styled.div(_b));\r\nvar StatusMessage = function (props) { return (React.createElement(StatusMessageContainer, null, props.status ?\r\n React.createElement(StatusMessageStyled, null,\r\n React.createElement(FormattedMessage, { id: props.status, defaultMessage: props.status })) : null)); }; // StatusMessage\r\nexport default StatusMessage;\r\nvar _a, _b;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/component.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/component.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/StatusMessage/connect.ts", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/connect.ts", | |
"name": "./src/apollo-builder/ui/StatusMessage/connect.ts", | |
"index": 748, | |
"index2": 745, | |
"size": 935, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"issuerId": "./src/apollo-builder/app.tsx", | |
"issuerName": "./src/apollo-builder/app.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/app.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"module": "./src/apollo-builder/app.tsx", | |
"moduleName": "./src/apollo-builder/app.tsx", | |
"type": "harmony import", | |
"userRequest": "./ui/StatusMessage/connect", | |
"loc": "21:0-55" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 4, | |
"source": "import StatusMessage from './component';\r\nimport connect from '../../utils/connect';\r\nexport default connect(StatusMessage)(function (model) { return ({\r\n status: model.status\r\n}); });\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/connect.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StatusMessage/connect.ts\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/StyledScrollable.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StyledScrollable.tsx", | |
"name": "./src/apollo-builder/ui/StyledScrollable.tsx", | |
"index": 736, | |
"index2": 729, | |
"size": 2412, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx", | |
"issuerId": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"issuerName": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx", | |
"module": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"moduleName": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"type": "harmony import", | |
"userRequest": "./StyledScrollable", | |
"loc": "9:0-50" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "/* Role: any scrollable regions with <ScrollArea /> should be wrapped in this component. Provides a consistent style for the scrollbars */\r\nimport styled from '../utils/styled';\r\nvar StyledScrollable = (_a = [\"\\n\\n & > .scrollarea {\\n &:hover .scrollbar-container.vertical .scrollbar {\\n opacity: 1;\\n }\\n\\n & > .scrollbar-container.vertical {\\n opacity: 1;\\n width: 10px;\\n padding-left: 5px;\\n right: 5px;\\n\\n &:hover {\\n opacity: 1 !important;\\n background-color: transparent;\\n }\\n\\n & > .scrollbar {\\n border-radius: 4px;\\n width: 6px;\\n background-color: \", \";\\n opacity: 0.5;\\n transition: opacity 0.25s ease-in;\\n }\\n }\\n }\\n\"], _a.raw = [\"\\n\\n & > .scrollarea {\\n &:hover .scrollbar-container.vertical .scrollbar {\\n opacity: 1;\\n }\\n\\n & > .scrollbar-container.vertical {\\n opacity: 1;\\n width: 10px;\\n padding-left: 5px;\\n right: 5px;\\n\\n &:hover {\\n opacity: 1 !important;\\n background-color: transparent;\\n }\\n\\n & > .scrollbar {\\n border-radius: 4px;\\n width: 6px;\\n background-color: \", \";\\n opacity: 0.5;\\n transition: opacity 0.25s ease-in;\\n }\\n }\\n }\\n\"], styled.div(_a, function (props) { return props.theme.scrollbarBackground; }));\r\nexport default StyledScrollable;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StyledScrollable.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/StyledScrollable.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/animation/fadeIn.ts", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/fadeIn.ts", | |
"name": "./src/apollo-builder/ui/animation/fadeIn.ts", | |
"index": 734, | |
"index2": 727, | |
"size": 933, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx", | |
"issuerId": "./src/apollo-builder/layout/Preview/component.tsx", | |
"issuerName": "./src/apollo-builder/layout/Preview/component.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Preview/component.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx", | |
"module": "./src/apollo-builder/layout/Preview/component.tsx", | |
"moduleName": "./src/apollo-builder/layout/Preview/component.tsx", | |
"type": "harmony import", | |
"userRequest": "../../ui/animation/fadeIn", | |
"loc": "16:0-47" | |
}, { | |
"moduleId": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx", | |
"module": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"moduleName": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"type": "harmony import", | |
"userRequest": "../ui/animation/fadeIn", | |
"loc": "7:0-44" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "import { keyframes } from '../../utils/styled';\r\nexport default (_a = [\"from { opacity: 0; } to { opacity : 1; }\"], _a.raw = [\"from { opacity: 0; } to { opacity : 1; }\"], keyframes(_a));\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/fadeIn.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/fadeIn.ts\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/animation/fadeOut.ts", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/fadeOut.ts", | |
"name": "./src/apollo-builder/ui/animation/fadeOut.ts", | |
"index": 735, | |
"index2": 728, | |
"size": 935, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx", | |
"issuerId": "./src/apollo-builder/layout/Preview/component.tsx", | |
"issuerName": "./src/apollo-builder/layout/Preview/component.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Preview/component.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Preview/component.tsx", | |
"module": "./src/apollo-builder/layout/Preview/component.tsx", | |
"moduleName": "./src/apollo-builder/layout/Preview/component.tsx", | |
"type": "harmony import", | |
"userRequest": "../../ui/animation/fadeOut", | |
"loc": "17:0-49" | |
}, { | |
"moduleId": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx", | |
"module": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"moduleName": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"type": "harmony import", | |
"userRequest": "../ui/animation/fadeOut", | |
"loc": "8:0-46" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "import { keyframes } from '../../utils/styled';\r\nexport default (_a = [\"from { opacity: 1; } to { opacity : 0; }\"], _a.raw = [\"from { opacity: 1; } to { opacity : 0; }\"], keyframes(_a));\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/fadeOut.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/fadeOut.ts\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/animation/slideIn.ts", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/slideIn.ts", | |
"name": "./src/apollo-builder/ui/animation/slideIn.ts", | |
"index": 732, | |
"index2": 725, | |
"size": 1163, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx", | |
"issuerId": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"issuerName": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx", | |
"module": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"moduleName": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"type": "harmony import", | |
"userRequest": "../ui/animation/slideIn", | |
"loc": "5:0-46" | |
}, { | |
"moduleId": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx", | |
"module": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx", | |
"moduleName": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx", | |
"type": "harmony import", | |
"userRequest": "../../../ui/animation/slideIn", | |
"loc": "8:0-52" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "import { keyframes } from '../../utils/styled';\r\nexport default (_a = [\"\\n 0% {\\n transform: translateX(-15px);\\n opacity: 0;\\n }\\n 100% {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n\"], _a.raw = [\"\\n 0% {\\n transform: translateX(-15px);\\n opacity: 0;\\n }\\n 100% {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n\"], keyframes(_a));\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/slideIn.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/slideIn.ts\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/animation/slideOut.ts", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/slideOut.ts", | |
"name": "./src/apollo-builder/ui/animation/slideOut.ts", | |
"index": 733, | |
"index2": 726, | |
"size": 1165, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx", | |
"issuerId": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"issuerName": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/ScrollablePanel.tsx", | |
"module": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"moduleName": "./src/apollo-builder/ui/ScrollablePanel.tsx", | |
"type": "harmony import", | |
"userRequest": "../ui/animation/slideOut", | |
"loc": "6:0-48" | |
}, { | |
"moduleId": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx", | |
"module": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx", | |
"moduleName": "./src/apollo-builder/layout/ControlPanel/TextMenuPanel/component.tsx", | |
"type": "harmony import", | |
"userRequest": "../../../ui/animation/slideOut", | |
"loc": "9:0-54" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 7, | |
"source": "import { keyframes } from '../../utils/styled';\r\nexport default (_a = [\"\\n 0% {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n 100% {\\n transform: translateX(-30px);\\n opacity: 0;\\n }\\n\"], _a.raw = [\"\\n 0% {\\n transform: translateX(0);\\n opacity: 1;\\n }\\n 100% {\\n transform: translateX(-30px);\\n opacity: 0;\\n }\\n\"], keyframes(_a));\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/slideOut.ts\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/animation/slideOut.ts\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/buttons/ContinueButton.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ContinueButton.tsx", | |
"name": "./src/apollo-builder/ui/buttons/ContinueButton.tsx", | |
"index": 745, | |
"index2": 741, | |
"size": 1215, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/connect.tsx", | |
"module": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/Workspace/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../../ui/buttons/ContinueButton", | |
"loc": "7:0-61" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 5, | |
"source": "/* Role: the main Continue button on the workspace to allow a user to progress out of the builder */\r\nimport * as React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport PrimaryButton from '../../ui/buttons/PrimaryButton';\r\nvar ContinueButton = function () { return (React.createElement(PrimaryButton, null,\r\n React.createElement(FormattedMessage, { id: \"continue_button\", defaultMessage: \"Continue\" }))); };\r\nexport default ContinueButton;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ContinueButton.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ContinueButton.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx", | |
"name": "./src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx", | |
"index": 740, | |
"index2": 735, | |
"size": 2944, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"issuerId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"issuerName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"module": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"moduleName": "./src/apollo-builder/layout/ControlPanel/connect.tsx", | |
"type": "harmony import", | |
"userRequest": "../../ui/buttons/ControlPanelButtonWrapper", | |
"loc": "7:0-77" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "import * as React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport styled from '../../utils/styled';\r\nimport ControlPanelButton from './ControlPanelButton';\r\nimport { ControlPanelButtonType } from '../../layout/ControlPanel/model';\r\nvar ControlPanelButtonWrapper = (_a = [\"\\n z-index: 2;\\n cursor: pointer;\\n width: 66px;\\n height: 130px;\\n background: \", \";\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\\n border-radius: 4px;\\n\"], _a.raw = [\"\\n z-index: 2;\\n cursor: pointer;\\n width: 66px;\\n height: 130px;\\n background: \", \";\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\\n border-radius: 4px;\\n\"], styled.div(_a, function (props) { return props.theme.menuOptionBackground; }));\r\nvar BackgroundPanel = (_b = [\"\\n transition: background 0.25s ease-in;\\n background: \", \";\\n padding: 10px;\\n border-top-left-radius: 5px;\\n border-bottom-left-radius: 5px;\\n z-index: 2;\\n position: relative;\\n top: -10px;\\n\"], _b.raw = [\"\\n transition: background 0.25s ease-in;\\n background: \",\r\n \";\\n padding: 10px;\\n border-top-left-radius: 5px;\\n border-bottom-left-radius: 5px;\\n z-index: 2;\\n position: relative;\\n top: -10px;\\n\"], styled.div(_b, function (props) {\r\n return props.isPanelSelected ? props.theme.controlPanelBackground : 'transparent';\r\n}));\r\nvar ControlPanelButtons = function (props) { return (React.createElement(BackgroundPanel, { isPanelSelected: props.selected !== ControlPanelButtonType.None },\r\n React.createElement(ControlPanelButtonWrapper, null,\r\n React.createElement(ControlPanelButton, { iconKey: \"text-icon\", isActive: props.selected === ControlPanelButtonType.Text, onClick: props.selectTextPanel },\r\n React.createElement(FormattedMessage, { id: \"text\", defaultMessage: \"Text\" })),\r\n React.createElement(ControlPanelButton, { iconKey: \"color-icon\", isActive: props.selected === ControlPanelButtonType.Plate, onClick: props.selectPlatePanel },\r\n React.createElement(FormattedMessage, { id: \"plate_color\", defaultMessage: \"Plate Color\" }))))); };\r\nexport default ControlPanelButtons;\r\nvar _a, _b;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/ControlPanelButtonWrapper.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/buttons/IconButton.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/IconButton.tsx", | |
"name": "./src/apollo-builder/ui/buttons/IconButton.tsx", | |
"index": 747, | |
"index2": 743, | |
"size": 2812, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"issuerId": "./src/apollo-builder/app.tsx", | |
"issuerName": "./src/apollo-builder/app.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/app.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"module": "./src/apollo-builder/app.tsx", | |
"moduleName": "./src/apollo-builder/app.tsx", | |
"type": "harmony import", | |
"userRequest": "./ui/buttons/IconButton", | |
"loc": "20:0-49" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 4, | |
"source": "import * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nvar IconButtonStyled = (_a = [\"\\n width: 68px;\\n height: 100%;\\n text-align: center;\\n cursor: pointer;\\n\\n div {\\n height: 46px;\\n text-align: center;\\n background-image: url(\", \");\\n background-repeat: no-repeat;\\n background-position: 50% 100%;\\n transition: all \", \" linear;\\n }\\n\\n span {\\n opacity: 0; /* to allow transition */\\n transition: all \", \" linear;\\n font-size: 9px;\\n color: \", \";\\n }\\n\\n &:hover {\\n div {\\n background-image: url(\", \");\\n }\\n span {\\n opacity: 1;\\n color: \", \";\\n }\\n }\\n\"], _a.raw = [\"\\n width: 68px;\\n height: 100%;\\n text-align: center;\\n cursor: pointer;\\n\\n div {\\n height: 46px;\\n text-align: center;\\n background-image: url(\", \");\\n background-repeat: no-repeat;\\n background-position: 50% 100%;\\n transition: all \", \" linear;\\n }\\n\\n span {\\n opacity: 0; /* to allow transition */\\n transition: all \", \" linear;\\n font-size: 9px;\\n color: \", \";\\n }\\n\\n &:hover {\\n div {\\n background-image: url(\", \");\\n }\\n span {\\n opacity: 1;\\n color: \", \";\\n }\\n }\\n\"], styled.div(_a, function (props) { return props.theme.getIcon(props.iconKey, props.isActive); }, function (props) { return props.theme.transitionSpeed; }, function (props) { return props.theme.transitionSpeed; }, function (props) { return props.theme.defaultFontColor; }, function (props) { return props.theme.getIcon(props.iconKey, true); }, function (props) { return props.theme.defaultFontColorActive; }));\r\nvar IconButton = function (props) { return (React.createElement(IconButtonStyled, { iconKey: props.iconKey, isActive: props.isActive, onClick: props.onClick },\r\n React.createElement(\"div\", null),\r\n props.children)); };\r\nexport default IconButton;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/IconButton.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/buttons/IconButton.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/footer/index.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/footer/index.tsx", | |
"name": "./src/apollo-builder/ui/footer/index.tsx", | |
"index": 685, | |
"index2": 679, | |
"size": 1103, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx", | |
"issuerId": "./src/apollo-builder/layout/Workspace/component.tsx", | |
"issuerName": "./src/apollo-builder/layout/Workspace/component.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/layout/Workspace/component.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/layout/Workspace/component.tsx", | |
"module": "./src/apollo-builder/layout/Workspace/component.tsx", | |
"moduleName": "./src/apollo-builder/layout/Workspace/component.tsx", | |
"type": "harmony import", | |
"userRequest": "../../ui/footer", | |
"loc": "3:0-37" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 6, | |
"source": "/* Role: Defines the Footer component */\r\nimport styled from '../../utils/styled';\r\nexport default (_a = [\"\\n width: 100%;\\n height: 70px;\\n position: absolute;\\n bottom: 50px;\\n pointer-events: none;\\n\"], _a.raw = [\"\\n width: 100%;\\n height: 70px;\\n position: absolute;\\n bottom: 50px;\\n pointer-events: none;\\n\"], styled.div(_a));\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/footer/index.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/footer/index.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/ui/header/CommandBar.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/header/CommandBar.tsx", | |
"name": "./src/apollo-builder/ui/header/CommandBar.tsx", | |
"index": 750, | |
"index2": 746, | |
"size": 2896, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"issuerId": "./src/apollo-builder/app.tsx", | |
"issuerName": "./src/apollo-builder/app.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/app.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/app.tsx", | |
"module": "./src/apollo-builder/app.tsx", | |
"moduleName": "./src/apollo-builder/app.tsx", | |
"type": "harmony import", | |
"userRequest": "./ui/header/CommandBar", | |
"loc": "23:0-48" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 4, | |
"source": "/* Role: Defines the Header component */\r\nimport * as React from 'react';\r\nimport styled from '../../utils/styled';\r\nvar barWidth = '310px';\r\nvar barPerspective = '600px';\r\nvar CommandBar = (_a = [\"\\n min-width: \", \";\\n height: 73px;\\n /* Z axis transform to counter the perspective transform in the underlying span */\\n transform: translate3d(0, 0, \", \");\\n\\n &>span{\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\\n width: \", \";\\n height: 105px;\\n top: -12px;\\n position: absolute;\\n background-color: \", \";\\n transform: perspective(\", \") rotateX(-45deg);\\n border-bottom-right-radius: 7px;\\n border-bottom-left-radius: 7px;\\n }\\n &>div{\\n width: 100%;\\n height: 100%;\\n position: relative;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n align-content: center;\\n transform: translate3d(0, 0, \", \");\\n }\\n\"], _a.raw = [\"\\n min-width: \", \";\\n height: 73px;\\n /* Z axis transform to counter the perspective transform in the underlying span */\\n transform: translate3d(0, 0, \", \");\\n\\n &>span{\\n box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2);\\n width: \", \";\\n height: 105px;\\n top: -12px;\\n position: absolute;\\n background-color: \", \";\\n transform: perspective(\", \") rotateX(-45deg);\\n border-bottom-right-radius: 7px;\\n border-bottom-left-radius: 7px;\\n }\\n &>div{\\n width: 100%;\\n height: 100%;\\n position: relative;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n align-content: center;\\n transform: translate3d(0, 0, \", \");\\n }\\n\"], styled.div(_a, barWidth, barPerspective, barWidth, function (props) { return props.theme.headerBackground; }, barPerspective, barPerspective));\r\nvar CommandBarComponent = function (props) {\r\n return React.createElement(CommandBar, null,\r\n React.createElement(\"span\", null),\r\n React.createElement(\"div\", null, props.children));\r\n};\r\nexport default CommandBarComponent;\r\nvar _a;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/header/CommandBar.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/ui/header/CommandBar.tsx\"); } } })();" | |
}, { | |
"id": "./src/apollo-builder/utils/memoize.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/utils/memoize.tsx", | |
"name": "./src/apollo-builder/utils/memoize.tsx", | |
"index": 667, | |
"index2": 660, | |
"size": 2065, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/container.tsx", | |
"issuerId": "./src/apollo-builder/common/container.tsx", | |
"issuerName": "./src/apollo-builder/common/container.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/apollo-builder/common/container.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/common/container.tsx", | |
"module": "./src/apollo-builder/common/container.tsx", | |
"moduleName": "./src/apollo-builder/common/container.tsx", | |
"type": "harmony import", | |
"userRequest": "../utils/memoize", | |
"loc": "9:0-39" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["memoize", "default"], | |
"depth": 7, | |
"source": "/* Role: Defines a memoization decorator */\r\n/* Role: Defines a memoization decorator */ export function memoize(target, propertyKey, descriptor) {\r\n if (typeof descriptor.value === 'function') {\r\n descriptor.value = getNewFunction(descriptor.value);\r\n }\r\n else if (typeof descriptor.get === 'function') {\r\n descriptor.get = getNewFunction(descriptor.get);\r\n }\r\n else {\r\n throw new Error('@memoize decorator is only allowed on a get accessor or a parameterless method.');\r\n }\r\n}\r\nvar counter = 0;\r\nfunction getNewFunction(originalMethod) {\r\n var identifier = ++counter;\r\n var propValName = \"__memoized_value_\" + identifier;\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var returnedValue;\r\n if (this.hasOwnProperty(propValName)) {\r\n returnedValue = this[propValName];\r\n }\r\n else {\r\n returnedValue = originalMethod.apply(this, args);\r\n Object.defineProperty(this, propValName, {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: returnedValue\r\n });\r\n }\r\n return returnedValue;\r\n };\r\n}\r\nexport default memoize;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/utils/memoize.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/apollo-builder/utils/memoize.tsx\"); } } })();" | |
}, { | |
"id": "./src/dev-app/app.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx", | |
"name": "./src/dev-app/app.tsx", | |
"index": 654, | |
"index2": 760, | |
"size": 1218, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx", | |
"issuerId": "./src/dev-app/index.tsx", | |
"issuerName": "./src/dev-app/index.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/dev-app/index.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx", | |
"module": "./src/dev-app/index.tsx", | |
"moduleName": "./src/dev-app/index.tsx", | |
"type": "harmony import", | |
"userRequest": "./app", | |
"loc": "2:0-24" | |
}, { | |
"moduleId": "./src/dev-app/index.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx", | |
"module": "./src/dev-app/index.tsx", | |
"moduleName": "./src/dev-app/index.tsx", | |
"type": "module.hot.accept", | |
"userRequest": "./app", | |
"loc": "6:4-70" | |
}, { | |
"moduleId": "./src/dev-app/index.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx", | |
"module": "./src/dev-app/index.tsx", | |
"moduleName": "./src/dev-app/index.tsx", | |
"type": "harmony accept", | |
"userRequest": "./app", | |
"loc": "6:31-69" | |
}], | |
"usedExports": true, | |
"providedExports": ["default"], | |
"depth": 2, | |
"source": "/* Role: Defines the App component, i.e. the main entry point of the application used for development */\r\nimport App from 'apollo-builder/app';\r\nimport './app-global-styles';\r\nimport * as React from 'react';\r\nimport Configuration from './configuration';\r\nimport AppHost from './host';\r\nimport devTheme from './theme';\r\nvar host = new AppHost();\r\nvar configuration = new Configuration(host, devTheme);\r\nvar Host = function () {\r\n return React.createElement(App, { configuration: configuration });\r\n};\r\nexport default Host;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx\"); } } })();" | |
}, { | |
"id": "./src/dev-app/configuration.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/configuration.tsx", | |
"name": "./src/dev-app/configuration.tsx", | |
"index": 756, | |
"index2": 757, | |
"size": 1229, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx", | |
"issuerId": "./src/dev-app/app.tsx", | |
"issuerName": "./src/dev-app/app.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/dev-app/app.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx", | |
"module": "./src/dev-app/app.tsx", | |
"moduleName": "./src/dev-app/app.tsx", | |
"type": "harmony import", | |
"userRequest": "./configuration", | |
"loc": "5:0-44" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 3, | |
"source": "import { DemoFontService } from 'dev-app/sandbox/services/DemoFontService';\r\nimport { Host as FontServiceHost } from 'dev-app/host/font/fontServiceHost';\r\nvar demoFontService = new DemoFontService('http://apxcorefontservice.azurewebsites.net');\r\nvar Configuration = (function () {\r\n function Configuration(host, theme) {\r\n this.host = host;\r\n this.theme = theme;\r\n this.host.font = new FontServiceHost(demoFontService);\r\n }\r\n return Configuration;\r\n}());\r\nexport default Configuration;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/configuration.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/configuration.tsx\"); } } })();" | |
}, { | |
"id": "./src/dev-app/host/index.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/host/index.tsx", | |
"name": "./src/dev-app/host/index.tsx", | |
"index": 761, | |
"index2": 758, | |
"size": 822, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx", | |
"issuerId": "./src/dev-app/app.tsx", | |
"issuerName": "./src/dev-app/app.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/dev-app/app.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx", | |
"module": "./src/dev-app/app.tsx", | |
"moduleName": "./src/dev-app/app.tsx", | |
"type": "harmony import", | |
"userRequest": "./host", | |
"loc": "6:0-29" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 3, | |
"source": "var AppHost = (function () {\r\n function AppHost() {\r\n }\r\n return AppHost;\r\n}());\r\nexport default AppHost;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/host/index.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/host/index.tsx\"); } } })();" | |
}, { | |
"id": "./src/dev-app/index.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx", | |
"name": "./src/dev-app/index.tsx", | |
"index": 653, | |
"index2": 762, | |
"size": 974, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "multi dev-app/index.tsx", | |
"issuerId": 5, | |
"issuerName": "multi dev-app/index.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": 5, | |
"moduleIdentifier": "multi dev-app/index.tsx", | |
"module": "multi dev-app/index.tsx", | |
"moduleName": "multi dev-app/index.tsx", | |
"type": "single entry", | |
"userRequest": "dev-app/index.tsx", | |
"loc": "main:100000" | |
}], | |
"usedExports": true, | |
"providedExports": null, | |
"depth": 1, | |
"source": "/* Role: The main entry point of the application is associated with the specified DOM element */\r\nimport App from './app';\r\nimport renderApp from './app-container';\r\nrenderApp(App);\r\nif (module.hot) {\r\n module.hot.accept('./app', function () { return renderApp(App); });\r\n}\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/index.tsx\"); } } })();" | |
}, { | |
"id": "./src/dev-app/theme.tsx", | |
"identifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/theme.tsx", | |
"name": "./src/dev-app/theme.tsx", | |
"index": 762, | |
"index2": 759, | |
"size": 938, | |
"cacheable": true, | |
"built": true, | |
"optional": false, | |
"prefetched": false, | |
"chunks": [0], | |
"assets": [], | |
"issuer": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx", | |
"issuerId": "./src/dev-app/app.tsx", | |
"issuerName": "./src/dev-app/app.tsx", | |
"failed": false, | |
"errors": 0, | |
"warnings": 0, | |
"reasons": [{ | |
"moduleId": "./src/dev-app/app.tsx", | |
"moduleIdentifier": "/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/react-hot-loader/webpack.js!/Users/mdentremont/Projects/REACT/Apollo.Builder/node_modules/awesome-typescript-loader/dist/entry.js??ref--1!/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/app.tsx", | |
"module": "./src/dev-app/app.tsx", | |
"moduleName": "./src/dev-app/app.tsx", | |
"type": "harmony import", | |
"userRequest": "./theme", | |
"loc": "7:0-31" | |
}], | |
"usedExports": ["default"], | |
"providedExports": ["default"], | |
"depth": 3, | |
"source": "import DefaultTheme from 'apollo-builder/external/theme/default';\r\n// extend the default theme or create your own with the props from ITheme\r\nvar devTheme = DefaultTheme;\r\n// e.g. devTheme.defaultFontColor = 'red';\r\nexport default devTheme;\r\n\n\n ;(function register() { /* react-hot-loader/webpack */ if (process.env.NODE_ENV !== 'production') { if (typeof __REACT_HOT_LOADER__ === 'undefined') { return; } if (typeof module.exports === 'function') { __REACT_HOT_LOADER__.register(module.exports, 'module.exports', \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/theme.tsx\"); return; } for (var key in module.exports) { if (!Object.prototype.hasOwnProperty.call(module.exports, key)) { continue; } var namedExport = void 0; try { namedExport = module.exports[key]; } catch (err) { continue; } __REACT_HOT_LOADER__.register(namedExport, key, \"/Users/mdentremont/Projects/REACT/Apollo.Builder/src/dev-app/theme.tsx\"); } } })();" | |
}], | |
"filteredModules": 0, | |
"origins": [{ | |
"moduleId": 5, | |
"module": "multi dev-app/index.tsx", | |
"moduleIdentifier": "multi dev-app/index.tsx", | |
"moduleName": "multi dev-app/index.tsx", | |
"loc": "", | |
"name": "main", | |
"reasons": [] | |
}] | |
} | |
]} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<head> | |
<meta charset="utf-8"> | |
<script src="https://d3js.org/d3.v4.min.js"></script> | |
<style> | |
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; } | |
.node { | |
fill: steelblue; | |
stroke: none; | |
} | |
.link { | |
fill: none; | |
stroke: #ccc; | |
stroke-width: 1px; | |
} | |
</style> | |
</head> | |
<body> | |
<script> | |
var width = 960, height = 500; | |
var svg = d3.select("body").append("svg") | |
.attr("width", width) | |
.attr("height", height) | |
var chart = svg.append("g").attr("transform", "translate(5,5)") | |
chart.append("g").attr("class", "links") | |
chart.append("g").attr("class", "nodes") | |
d3.json("nodes.json", function(err, data){ | |
var root = d3.hierarchy(data) | |
var treeLayout = d3.tree(); | |
treeLayout.size([400, 200]) | |
treeLayout(root); | |
d3.select('svg g.nodes') | |
.selectAll('circle.node') | |
.data(root.descendants()) | |
.enter() | |
.append('circle') | |
.classed('node', true) | |
.attr('cx', function(d) {return d.x;}) | |
.attr('cy', function(d) {return d.y;}) | |
.attr('r', 4); | |
// Links | |
d3.select('svg g.links') | |
.selectAll('line.link') | |
.data(root.links()) | |
.enter() | |
.append('line') | |
.classed('link', true) | |
.attr('x1', function(d) {return d.source.x;}) | |
.attr('y1', function(d) {return d.source.y;}) | |
.attr('x2', function(d) {return d.target.x;}) | |
.attr('y2', function(d) {return d.target.y;}); | |
}) | |
</script> | |
</body> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "A1", | |
"children": [ | |
{ | |
"name": "B1", | |
"children": [ | |
{ | |
"name": "C1", | |
"value": 100 | |
}, | |
{ | |
"name": "C2", | |
"value": 300 | |
}, | |
{ | |
"name": "C3", | |
"value": 200 | |
} | |
] | |
}, | |
{ | |
"name": "B2", | |
"value": 200 | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment