/*
	Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/

//>>built
define("dojo/when",["./Deferred","./promise/Promise"],function(_1,_2){"use strict";return function when(_3,_4,_5,_6){var _7=_3&&typeof _3.then==="function";var _8=_7&&_3 instanceof _2;if(!_7){if(arguments.length>1){return _4?_4(_3):_3;}else{return new _1().resolve(_3);}}else{if(!_8){var _9=new _1(_3.cancel);_3.then(_9.resolve,_9.reject,_9.progress);_3=_9.promise;}}if(_4||_5||_6){return _3.then(_4,_5,_6);}return _3;};});