itslanguage
Advanced tools
Comparing version 3.0.0-beta-4.7 to 3.0.0-beta-4.8
@@ -11,2 +11,3 @@ 'use strict'; | ||
exports.endStreamAudioForChoiceRecognition = endStreamAudioForChoiceRecognition; | ||
exports.prepareAudioStream = prepareAudioStream; | ||
@@ -60,9 +61,17 @@ var _audioOverSocket = require('../../utils/audio-over-socket'); | ||
* below is some code for the new streaming yet to come. | ||
* | ||
* export function prepareAudioStream(recognitionId, recorder) { | ||
* const rpc = 'choise.chuck'; | ||
* return registerAudioStream(recorder, rpc) | ||
* .then(() => makeWebsocketCall('choice.recognise', {args: [recognitionId, rpc]})); | ||
* } | ||
*/ | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvY2hhbGxlbmdlcy9jaG9pY2UvcmVjb2duaXRpb24uanMiXSwibmFtZXMiOlsiZ2V0QWxsQ2hvaWNlUmVjb2duaXRpb25zIiwiZ2V0Q2hvaWNlUmVjb2duaXRpb25CeUlEIiwicHJlcGFyZUNob2ljZVJlY29nbml0aW9uIiwicHJlcGFyZUNob2ljZVJlY29nbml0aW9uQ2hhbGxlbmdlIiwicHJlcGFyZUF1ZGlvRm9yQ2hvaWNlUmVjb2duaXRpb24iLCJzdHJlYW1BdWRpb0ZvckNob2ljZVJlY29nbml0aW9uIiwiZW5kU3RyZWFtQXVkaW9Gb3JDaG9pY2VSZWNvZ25pdGlvbiIsInVybCIsImNoYWxsZW5nZSIsImlkIiwicmVjb2duaXRpb25JZCIsImNoYWxsZW5nZUlkIiwiYXJncyIsInJlY29yZGVyIiwicHJvZ3Jlc3NDYiJdLCJtYXBwaW5ncyI6Ijs7O1FBa0JnQkEsd0IsR0FBQUEsd0I7UUFJQUMsd0IsR0FBQUEsd0I7UUFJQUMsd0IsR0FBQUEsd0I7UUFJQUMsaUMsR0FBQUEsaUM7UUFJQUMsZ0MsR0FBQUEsZ0M7UUFJQUMsK0IsR0FBQUEsK0I7UUFJQUMsa0MsR0FBQUEsa0M7O0FBakNoQjs7QUFJQTs7QUFDQTs7QUFFQSxJQUFNQyxNQUFNLFNBQU5BLEdBQU07QUFBQSxpQ0FBbUNDLFNBQW5DO0FBQUEsQ0FBWixDLENBaEJBOzs7Ozs7Ozs7QUFrQk8sU0FBU1Isd0JBQVQsR0FBb0M7QUFDekMsU0FBTyxzQ0FBa0IsS0FBbEIsT0FBNEJPLEdBQTVCLENBQVA7QUFDRDs7QUFFTSxTQUFTTix3QkFBVCxDQUFrQ1EsRUFBbEMsRUFBc0M7QUFDM0MsU0FBTyxzQ0FBa0IsS0FBbEIsRUFBNEJGLEdBQTVCLFNBQW1DRSxFQUFuQyxDQUFQO0FBQ0Q7O0FBRU0sU0FBU1Asd0JBQVQsR0FBb0M7QUFDekMsU0FBTyxrQ0FBa0IseUJBQWxCLENBQVA7QUFDRDs7QUFFTSxTQUFTQyxpQ0FBVCxDQUEyQ08sYUFBM0MsRUFBMERDLFdBQTFELEVBQXVFO0FBQzVFLFNBQU8sa0NBQWtCLHVCQUFsQixFQUEyQyxFQUFDQyxNQUFNLENBQUNGLGFBQUQsRUFBZ0JDLFdBQWhCLENBQVAsRUFBM0MsQ0FBUDtBQUNEOztBQUVNLFNBQVNQLGdDQUFULENBQTBDTSxhQUExQyxFQUF5REcsUUFBekQsRUFBbUU7QUFDeEUsU0FBTyw0Q0FBc0JILGFBQXRCLEVBQXFDRyxRQUFyQyxFQUErQyxtQkFBL0MsQ0FBUDtBQUNEOztBQUVNLFNBQVNSLCtCQUFULENBQXlDSyxhQUF6QyxFQUF3REcsUUFBeEQsRUFBa0U7QUFDdkUsU0FBTyx3REFBa0NILGFBQWxDLEVBQWlERyxRQUFqRCxFQUEyRCxjQUEzRCxDQUFQO0FBQ0Q7O0FBRU0sU0FBU1Asa0NBQVQsQ0FBNENJLGFBQTVDLEVBQTJESSxVQUEzRCxFQUF1RTtBQUM1RSxTQUFPLGtDQUFrQixrQkFBbEIsRUFBc0MsRUFBQ0YsTUFBTSxDQUFDRixhQUFELENBQVAsRUFBd0JJLHNCQUF4QixFQUF0QyxDQUFQO0FBQ0Q7O0FBRUQiLCJmaWxlIjoicmVjb2duaXRpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgcmVhZGlseSBhdmFpbGFibGUgZnVuY3Rpb25zIHdoaWNoIGludGVyYWN0IHdpdGggdGhlXG4gKiBJVFNMYW5ndWFnZSBjaG9pY2UgcmVjb2duaXRpb24gQVBJLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGlzIG9uZSBvZiB0aGUgXCJuZXN0ZWRcIiBvciBcImNvbXBvc2l0ZVwiIEFQSXM7IFlvdSBjYW4gb25seVxuICogb2J0YWluIHRoZSBkYXRhIGlmIHlvdSBwcm92aWRlIGEgcmVmZXJlbmNlIHRvIHRoZSBjaGFsbGVuZ2UgZm9yIHdoaWNoIHlvdVxuICogd2FudCBhIHJlY29yZGluZy5cbiAqL1xuXG5pbXBvcnQge1xuICBlbmNvZGVBbmRTZW5kQXVkaW9PbkRhdGFBdmFpbGlibGUsXG4gIHByZXBhcmVTZXJ2ZXJGb3JBdWRpb1xufSBmcm9tICcuLi8uLi91dGlscy9hdWRpby1vdmVyLXNvY2tldCc7XG5pbXBvcnQge2F1dGhvcmlzZWRSZXF1ZXN0fSBmcm9tICcuLi8uLi9jb21tdW5pY2F0aW9uJztcbmltcG9ydCB7bWFrZVdlYnNvY2tldENhbGx9IGZyb20gJy4uLy4uL2NvbW11bmljYXRpb24vd2Vic29ja2V0JztcblxuY29uc3QgdXJsID0gY2hhbGxlbmdlID0+IGAvY2hhbGxlbmdlcy9jaG9pY2UvJHtjaGFsbGVuZ2V9L3JlY29nbml0aW9uc2A7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxDaG9pY2VSZWNvZ25pdGlvbnMoKSB7XG4gIHJldHVybiBhdXRob3Jpc2VkUmVxdWVzdCgnR0VUJywgYCR7dXJsfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hvaWNlUmVjb2duaXRpb25CeUlEKGlkKSB7XG4gIHJldHVybiBhdXRob3Jpc2VkUmVxdWVzdCgnR0VUJywgYCR7dXJsfS8ke2lkfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUNob2ljZVJlY29nbml0aW9uKCkge1xuICByZXR1cm4gbWFrZVdlYnNvY2tldENhbGwoJ2Nob2ljZS5pbml0X3JlY29nbml0aW9uJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQ2hvaWNlUmVjb2duaXRpb25DaGFsbGVuZ2UocmVjb2duaXRpb25JZCwgY2hhbGxlbmdlSWQpIHtcbiAgcmV0dXJuIG1ha2VXZWJzb2NrZXRDYWxsKCdjaG9pY2UuaW5pdF9jaGFsbGVuZ2UnLCB7YXJnczogW3JlY29nbml0aW9uSWQsIGNoYWxsZW5nZUlkXX0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUF1ZGlvRm9yQ2hvaWNlUmVjb2duaXRpb24ocmVjb2duaXRpb25JZCwgcmVjb3JkZXIpIHtcbiAgcmV0dXJuIHByZXBhcmVTZXJ2ZXJGb3JBdWRpbyhyZWNvZ25pdGlvbklkLCByZWNvcmRlciwgJ2Nob2ljZS5pbml0X2F1ZGlvJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJlYW1BdWRpb0ZvckNob2ljZVJlY29nbml0aW9uKHJlY29nbml0aW9uSWQsIHJlY29yZGVyKSB7XG4gIHJldHVybiBlbmNvZGVBbmRTZW5kQXVkaW9PbkRhdGFBdmFpbGlibGUocmVjb2duaXRpb25JZCwgcmVjb3JkZXIsICdjaG9pY2Uud3JpdGUnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuZFN0cmVhbUF1ZGlvRm9yQ2hvaWNlUmVjb2duaXRpb24ocmVjb2duaXRpb25JZCwgcHJvZ3Jlc3NDYikge1xuICByZXR1cm4gbWFrZVdlYnNvY2tldENhbGwoJ2Nob2ljZS5yZWNvZ25pc2UnLCB7YXJnczogW3JlY29nbml0aW9uSWRdLCBwcm9ncmVzc0NifSk7XG59XG5cbi8qXG4gKiBiZWxvdyBpcyBzb21lIGNvZGUgZm9yIHRoZSBuZXcgc3RyZWFtaW5nIHlldCB0byBjb21lLlxuICpcbiAqIGV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQXVkaW9TdHJlYW0ocmVjb2duaXRpb25JZCwgcmVjb3JkZXIpIHtcbiAqICAgY29uc3QgcnBjID0gJ2Nob2lzZS5jaHVjayc7XG4gKiAgIHJldHVybiByZWdpc3RlckF1ZGlvU3RyZWFtKHJlY29yZGVyLCBycGMpXG4gKiAgICAgLnRoZW4oKCkgPT4gbWFrZVdlYnNvY2tldENhbGwoJ2Nob2ljZS5yZWNvZ25pc2UnLCB7YXJnczogW3JlY29nbml0aW9uSWQsIHJwY119KSk7XG4gKiB9XG4gKi9cbiJdfQ== | ||
function prepareAudioStream(recognitionId, recorder) { | ||
var _arguments = arguments; | ||
var rpc = 'choice.chuck'; | ||
return (0, _audioOverSocket.registerAudioStream)(recorder, rpc).then(function (_ref) { | ||
var procedure = _ref.procedure; | ||
if (procedure) { | ||
(0, _websocket.makeWebsocketCall)('choice.recognise', { args: [recognitionId, procedure] }); | ||
} else { | ||
console.log(_arguments); | ||
} | ||
}); | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvY2hhbGxlbmdlcy9jaG9pY2UvcmVjb2duaXRpb24uanMiXSwibmFtZXMiOlsiZ2V0QWxsQ2hvaWNlUmVjb2duaXRpb25zIiwiZ2V0Q2hvaWNlUmVjb2duaXRpb25CeUlEIiwicHJlcGFyZUNob2ljZVJlY29nbml0aW9uIiwicHJlcGFyZUNob2ljZVJlY29nbml0aW9uQ2hhbGxlbmdlIiwicHJlcGFyZUF1ZGlvRm9yQ2hvaWNlUmVjb2duaXRpb24iLCJzdHJlYW1BdWRpb0ZvckNob2ljZVJlY29nbml0aW9uIiwiZW5kU3RyZWFtQXVkaW9Gb3JDaG9pY2VSZWNvZ25pdGlvbiIsInByZXBhcmVBdWRpb1N0cmVhbSIsInVybCIsImNoYWxsZW5nZSIsImlkIiwicmVjb2duaXRpb25JZCIsImNoYWxsZW5nZUlkIiwiYXJncyIsInJlY29yZGVyIiwicHJvZ3Jlc3NDYiIsInJwYyIsInRoZW4iLCJwcm9jZWR1cmUiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiOzs7UUFtQmdCQSx3QixHQUFBQSx3QjtRQUlBQyx3QixHQUFBQSx3QjtRQUlBQyx3QixHQUFBQSx3QjtRQUlBQyxpQyxHQUFBQSxpQztRQUlBQyxnQyxHQUFBQSxnQztRQUlBQywrQixHQUFBQSwrQjtRQUlBQyxrQyxHQUFBQSxrQztRQU9BQyxrQixHQUFBQSxrQjs7QUF6Q2hCOztBQUtBOztBQUNBOztBQUVBLElBQU1DLE1BQU0sU0FBTkEsR0FBTTtBQUFBLGlDQUFtQ0MsU0FBbkM7QUFBQSxDQUFaLEMsQ0FqQkE7Ozs7Ozs7OztBQW1CTyxTQUFTVCx3QkFBVCxHQUFvQztBQUN6QyxTQUFPLHNDQUFrQixLQUFsQixPQUE0QlEsR0FBNUIsQ0FBUDtBQUNEOztBQUVNLFNBQVNQLHdCQUFULENBQWtDUyxFQUFsQyxFQUFzQztBQUMzQyxTQUFPLHNDQUFrQixLQUFsQixFQUE0QkYsR0FBNUIsU0FBbUNFLEVBQW5DLENBQVA7QUFDRDs7QUFFTSxTQUFTUix3QkFBVCxHQUFvQztBQUN6QyxTQUFPLGtDQUFrQix5QkFBbEIsQ0FBUDtBQUNEOztBQUVNLFNBQVNDLGlDQUFULENBQTJDUSxhQUEzQyxFQUEwREMsV0FBMUQsRUFBdUU7QUFDNUUsU0FBTyxrQ0FBa0IsdUJBQWxCLEVBQTJDLEVBQUNDLE1BQU0sQ0FBQ0YsYUFBRCxFQUFnQkMsV0FBaEIsQ0FBUCxFQUEzQyxDQUFQO0FBQ0Q7O0FBRU0sU0FBU1IsZ0NBQVQsQ0FBMENPLGFBQTFDLEVBQXlERyxRQUF6RCxFQUFtRTtBQUN4RSxTQUFPLDRDQUFzQkgsYUFBdEIsRUFBcUNHLFFBQXJDLEVBQStDLG1CQUEvQyxDQUFQO0FBQ0Q7O0FBRU0sU0FBU1QsK0JBQVQsQ0FBeUNNLGFBQXpDLEVBQXdERyxRQUF4RCxFQUFrRTtBQUN2RSxTQUFPLHdEQUFrQ0gsYUFBbEMsRUFBaURHLFFBQWpELEVBQTJELGNBQTNELENBQVA7QUFDRDs7QUFFTSxTQUFTUixrQ0FBVCxDQUE0Q0ssYUFBNUMsRUFBMkRJLFVBQTNELEVBQXVFO0FBQzVFLFNBQU8sa0NBQWtCLGtCQUFsQixFQUFzQyxFQUFDRixNQUFNLENBQUNGLGFBQUQsQ0FBUCxFQUF3Qkksc0JBQXhCLEVBQXRDLENBQVA7QUFDRDs7QUFFRDs7O0FBR08sU0FBU1Isa0JBQVQsQ0FBNEJJLGFBQTVCLEVBQTJDRyxRQUEzQyxFQUFxRDtBQUFBOztBQUMxRCxNQUFNRSxNQUFNLGNBQVo7QUFDQSxTQUFPLDBDQUFvQkYsUUFBcEIsRUFBOEJFLEdBQTlCLEVBQ0pDLElBREksQ0FDQyxnQkFBaUI7QUFBQSxRQUFmQyxTQUFlLFFBQWZBLFNBQWU7O0FBQ3JCLFFBQUlBLFNBQUosRUFBZTtBQUNiLHdDQUFrQixrQkFBbEIsRUFBc0MsRUFBQ0wsTUFBTSxDQUFDRixhQUFELEVBQWdCTyxTQUFoQixDQUFQLEVBQXRDO0FBQ0QsS0FGRCxNQUVPO0FBQ0xDLGNBQVFDLEdBQVI7QUFDRDtBQUNGLEdBUEksQ0FBUDtBQVFEIiwiZmlsZSI6InJlY29nbml0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHJlYWRpbHkgYXZhaWxhYmxlIGZ1bmN0aW9ucyB3aGljaCBpbnRlcmFjdCB3aXRoIHRoZVxuICogSVRTTGFuZ3VhZ2UgY2hvaWNlIHJlY29nbml0aW9uIEFQSS5cbiAqXG4gKiBOb3RlIHRoYXQgdGhpcyBpcyBvbmUgb2YgdGhlIFwibmVzdGVkXCIgb3IgXCJjb21wb3NpdGVcIiBBUElzOyBZb3UgY2FuIG9ubHlcbiAqIG9idGFpbiB0aGUgZGF0YSBpZiB5b3UgcHJvdmlkZSBhIHJlZmVyZW5jZSB0byB0aGUgY2hhbGxlbmdlIGZvciB3aGljaCB5b3VcbiAqIHdhbnQgYSByZWNvcmRpbmcuXG4gKi9cblxuaW1wb3J0IHtcbiAgZW5jb2RlQW5kU2VuZEF1ZGlvT25EYXRhQXZhaWxpYmxlLFxuICBwcmVwYXJlU2VydmVyRm9yQXVkaW8sXG4gIHJlZ2lzdGVyQXVkaW9TdHJlYW0sXG59IGZyb20gJy4uLy4uL3V0aWxzL2F1ZGlvLW92ZXItc29ja2V0JztcbmltcG9ydCB7YXV0aG9yaXNlZFJlcXVlc3R9IGZyb20gJy4uLy4uL2NvbW11bmljYXRpb24nO1xuaW1wb3J0IHttYWtlV2Vic29ja2V0Q2FsbH0gZnJvbSAnLi4vLi4vY29tbXVuaWNhdGlvbi93ZWJzb2NrZXQnO1xuXG5jb25zdCB1cmwgPSBjaGFsbGVuZ2UgPT4gYC9jaGFsbGVuZ2VzL2Nob2ljZS8ke2NoYWxsZW5nZX0vcmVjb2duaXRpb25zYDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbENob2ljZVJlY29nbml0aW9ucygpIHtcbiAgcmV0dXJuIGF1dGhvcmlzZWRSZXF1ZXN0KCdHRVQnLCBgJHt1cmx9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaG9pY2VSZWNvZ25pdGlvbkJ5SUQoaWQpIHtcbiAgcmV0dXJuIGF1dGhvcmlzZWRSZXF1ZXN0KCdHRVQnLCBgJHt1cmx9LyR7aWR9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQ2hvaWNlUmVjb2duaXRpb24oKSB7XG4gIHJldHVybiBtYWtlV2Vic29ja2V0Q2FsbCgnY2hvaWNlLmluaXRfcmVjb2duaXRpb24nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVDaG9pY2VSZWNvZ25pdGlvbkNoYWxsZW5nZShyZWNvZ25pdGlvbklkLCBjaGFsbGVuZ2VJZCkge1xuICByZXR1cm4gbWFrZVdlYnNvY2tldENhbGwoJ2Nob2ljZS5pbml0X2NoYWxsZW5nZScsIHthcmdzOiBbcmVjb2duaXRpb25JZCwgY2hhbGxlbmdlSWRdfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQXVkaW9Gb3JDaG9pY2VSZWNvZ25pdGlvbihyZWNvZ25pdGlvbklkLCByZWNvcmRlcikge1xuICByZXR1cm4gcHJlcGFyZVNlcnZlckZvckF1ZGlvKHJlY29nbml0aW9uSWQsIHJlY29yZGVyLCAnY2hvaWNlLmluaXRfYXVkaW8nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmVhbUF1ZGlvRm9yQ2hvaWNlUmVjb2duaXRpb24ocmVjb2duaXRpb25JZCwgcmVjb3JkZXIpIHtcbiAgcmV0dXJuIGVuY29kZUFuZFNlbmRBdWRpb09uRGF0YUF2YWlsaWJsZShyZWNvZ25pdGlvbklkLCByZWNvcmRlciwgJ2Nob2ljZS53cml0ZScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5kU3RyZWFtQXVkaW9Gb3JDaG9pY2VSZWNvZ25pdGlvbihyZWNvZ25pdGlvbklkLCBwcm9ncmVzc0NiKSB7XG4gIHJldHVybiBtYWtlV2Vic29ja2V0Q2FsbCgnY2hvaWNlLnJlY29nbmlzZScsIHthcmdzOiBbcmVjb2duaXRpb25JZF0sIHByb2dyZXNzQ2J9KTtcbn1cblxuLypcbiAqIGJlbG93IGlzIHNvbWUgY29kZSBmb3IgdGhlIG5ldyBzdHJlYW1pbmcgeWV0IHRvIGNvbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQXVkaW9TdHJlYW0ocmVjb2duaXRpb25JZCwgcmVjb3JkZXIpIHtcbiAgY29uc3QgcnBjID0gJ2Nob2ljZS5jaHVjayc7XG4gIHJldHVybiByZWdpc3RlckF1ZGlvU3RyZWFtKHJlY29yZGVyLCBycGMpXG4gICAgLnRoZW4oKHtwcm9jZWR1cmV9KSA9PiB7XG4gICAgICBpZiAocHJvY2VkdXJlKSB7XG4gICAgICAgIG1ha2VXZWJzb2NrZXRDYWxsKCdjaG9pY2UucmVjb2duaXNlJywge2FyZ3M6IFtyZWNvZ25pdGlvbklkLCBwcm9jZWR1cmVdfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhhcmd1bWVudHMpO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG4iXX0= |
'use strict'; | ||
exports.__esModule = true; | ||
exports.settings = undefined; | ||
exports.updateSettings = updateSettings; | ||
exports.request = request; | ||
exports.authorisedRequest = authorisedRequest; | ||
/** | ||
* This file contains the settings and the communication mechanism for the | ||
* ITSLanguage REST API. | ||
*/ | ||
require('whatwg-fetch'); | ||
// Headers | ||
var CONTENT_TYPE = 'Content-Type'; | ||
var CONTENT_TYPE = 'Content-Type'; /** | ||
* This file contains the settings and the communication mechanism for the | ||
* ITSLanguage REST API. | ||
*/ | ||
var AUTHORIZATION = 'Authorization'; | ||
@@ -175,2 +178,2 @@ | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvY29tbXVuaWNhdGlvbi9pbmRleC5qcyJdLCJuYW1lcyI6WyJ1cGRhdGVTZXR0aW5ncyIsInJlcXVlc3QiLCJhdXRob3Jpc2VkUmVxdWVzdCIsIkNPTlRFTlRfVFlQRSIsIkFVVEhPUklaQVRJT04iLCJBUFBMSUNBVElPTl9KU09OIiwic2V0dGluZ3MiLCJhcGlVUkwiLCJ3c1VSTCIsImF1dGhvcml6YXRpb25Ub2tlbiIsIm5ld1NldHRpbmdzIiwiT2JqZWN0IiwiRXJyb3IiLCJhc3NpZ24iLCJoYW5kbGVSZXNwb25zZSIsInJlc3BvbnNlIiwicmVzcG9uc2VDb250ZW50VHlwZSIsImhlYWRlcnMiLCJnZXQiLCJpbmNsdWRlcyIsImpzb24iLCJ0aGVuIiwib2siLCJQcm9taXNlIiwicmVqZWN0Iiwic3RhdHVzIiwic3RhdHVzVGV4dCIsIm1ldGhvZCIsInVybCIsImJvZHkiLCJyZXF1ZXN0SGVhZGVycyIsIkhlYWRlcnMiLCJyZXF1ZXN0Qm9keSIsIlVSTFNlYXJjaFBhcmFtcyIsIkZvcm1EYXRhIiwic2V0IiwiSlNPTiIsInN0cmluZ2lmeSIsInJlcXVlc3RVUkwiLCJzdGFydHNXaXRoIiwicmVxdWVzdE9wdGlvbnMiLCJmZXRjaCIsImdldEJlYXJlclRva2VuIiwidW5hdXRob3Jpc2VkIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7O1FBK0JnQkEsYyxHQUFBQSxjO1FBaUVBQyxPLEdBQUFBLE87UUE2REFDLGlCLEdBQUFBLGlCO0FBN0poQjs7Ozs7QUFLQTtBQUNBLElBQU1DLGVBQWUsY0FBckI7QUFDQSxJQUFNQyxnQkFBZ0IsZUFBdEI7O0FBRUE7QUFDQSxJQUFNQyxtQkFBbUIsa0JBQXpCOztBQUdBOzs7QUFHTyxJQUFNQyw4QkFBVztBQUN0QkMsVUFBUSw0QkFEYztBQUV0QkMsU0FBTyxJQUZlO0FBR3RCQyxzQkFBb0I7QUFIRSxDQUFqQjs7QUFPUDs7Ozs7Ozs7QUFRTyxTQUFTVCxjQUFULENBQXdCVSxXQUF4QixF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QkMsY0FBM0IsQ0FBUDtBQUNELEdBTEQsQ0FLRSxPQUFPYSxZQUFQLEVBQXFCO0FBQ3JCLFdBQU9wQixRQUFRQyxNQUFSLENBQWVtQixhQUFhQyxPQUE1QixDQUFQO0FBQ0Q7QUFDRiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBzZXR0aW5ncyBhbmQgdGhlIGNvbW11bmljYXRpb24gbWVjaGFuaXNtIGZvciB0aGVcbiAqIElUU0xhbmd1YWdlIFJFU1QgQVBJLlxuICovXG5cbi8vIEhlYWRlcnNcbmNvbnN0IENPTlRFTlRfVFlQRSA9ICdDb250ZW50LVR5cGUnO1xuY29uc3QgQVVUSE9SSVpBVElPTiA9ICdBdXRob3JpemF0aW9uJztcblxuLy8gQ29udGVudC1UeXBlc1xuY29uc3QgQVBQTElDQVRJT05fSlNPTiA9ICdhcHBsaWNhdGlvbi9qc29uJztcblxuXG4vKipcbiAqIFRoZSBzZXR0aW5ncyB0byB1c2UgZm9yIHRoZSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIElUU0xhbmd1YWdlIEFQSS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldHRpbmdzID0ge1xuICBhcGlVUkw6ICdodHRwczovL2FwaS5pdHNsYW5ndWFnZS5ubCcsXG4gIHdzVVJMOiBudWxsLFxuICBhdXRob3JpemF0aW9uVG9rZW46IG51bGxcbn07XG5cblxuLyoqXG4gKiBVcGRhdGUgdGhlIHNldHRpbmdzIHdpdGggdGhlIGBuZXdTZXR0aW5nc2AuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG5ld1NldHRpbmdzIC0gVGhlIHNldHRpbmdzIHRvIGluamVjdC91cGRhdGUuXG4gKlxuICogQHRocm93cyB7RXJyb3J9IC0gV2hlbiB0aGUgZ2l2ZW4gYG5ld1NldHRpbmdzYCBpcyBzb21ldGhpbmcgb3RoZXIgdGhhbiBhXG4gKiAgICAgICAgICAgICAgICAgICBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTZXR0aW5ncyhuZXdTZXR0aW5ncykge1xuICBpZiAoIW5ld1NldHRpbmdzIHx8ICEobmV3U2V0dGluZ3MgaW5zdGFuY2VvZiBPYmplY3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UsIG9ubHkgcHJvdmlkZSBvYmplY3RzIGFzIHNldHRpbmdzLicpO1xuICB9XG5cbiAgT2JqZWN0LmFzc2lnbihzZXR0aW5ncywgbmV3U2V0dGluZ3MpO1xufVxuXG5cbi8qKlxuICogUGFyc2UgdGhlIHJlc3BvbnNlIG9mIGEgZmV0Y2ggcmVxdWVzdC5cbiAqXG4gKiBUcnkgdG8gcGFyc2UgdGhlIGdpdmVuIHJlc3BvbnNlIGJvZHkgYXMgSlNPTiwgaWYgaXQgaXNuJ3QgTGVhdmUgdGhlXG4gKiByZXNwb25zZSBhcyBpcy5cbiAqXG4gKiBAcGFyYW0ge1Jlc3BvbnNlfSByZXNwb25zZSAtIFRoZSByZXNwb25zZSB0byBwYXJzZS5cbiAqXG4gKiBAdGhyb3dzIHtQcm9taXNlLjxTdHJpbmc+fSAtIFdoZW4gdGhlIHJlcXVldHMgd2FzIG5vdCBva2F5IGFuZCB0aGUgY29udGVudHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlc3BvbnNlIGlzbid0IGpzb24uXG4gKiBAdGhyb3dzIHtQcm9taXNlLjxPYmplY3Q+fSAtIFdoZW4gdGhlIHJlcXVldHMgd2FzIG5vdCBva2F5IGFuZCB0aGUgY29udGVudHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlc3BvbnNlIGlzIGpzb24uXG4gKlxuICogQHJldHVybnMge1Byb21pc2UuPE9iamVjdD59IC0gVGhlIGNvbnRlbnRzIG9mIGEgSlNPTiByZXNwb25zZSBvciB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlIGl0c2VsZiBpZiB0aGUgYm9keSBpcyBzb21ldGhpbmcgb3RoZXJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gSlNPTi5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgY29uc3QgcmVzcG9uc2VDb250ZW50VHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KENPTlRFTlRfVFlQRSk7XG5cbiAgLy8gVGhlIElUU0xhbmd1YWdlIEFQSSBzaG91bGQgcmV0dXJuIEpTT04uIElmIHRcbiAgaWYgKHJlc3BvbnNlQ29udGVudFR5cGUgJiYgcmVzcG9uc2VDb250ZW50VHlwZS5pbmNsdWRlcyhBUFBMSUNBVElPTl9KU09OKSkge1xuICAgIHJldHVybiByZXNwb25zZS5qc29uKCkudGhlbihqc29uID0+IHtcbiAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGpzb24pO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cblxuLyoqXG4gKiBQZXJmb3JtIGFuIEhUVFAgcmVxdWVzdCBmb3IgdGhlIGdpdmVuIG1ldGhvZCwgdXJsLCBib2R5LCBhbmQgaGVhZGVycy5cbiAqXG4gKiBJbiBjYXNlIHRoZSBnaXZlbiB1cmwgaXMgYSBwYXJ0aWFsIHVybCwgbWVhbmluZyBpdCBzdGFydHMgd2l0aCBhIGAvYCwgdGhlXG4gKiBiYXNlIFVSTCB0byB0aGUgSVRTTGFuZ3VhZ2UgQVBJIGlzIHByZXBlbmRlZC5cbiAqXG4gKiBXaGVuIGEgT2JqZWN0IGluc3RhbmNlIGlzIHByb3ZpZGVkIGFzIGJvZHksIGl0J2xsIGJlIHRyYW5zZm9ybWVkIGludG8gSlNPTi5cbiAqIFVubGVzcyBpdCBpcyBlaXRoZXIgYSBgVVJMU2VhcmNoUGFyYW1zYCBvciBhIGBGb3JtRGF0YWAgb2JqZWN0LiBBbnl0aGluZ1xuICogZWxzZSBpcyBzZW50IGFzIHBsYWluIHRleHQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCAtIFRoZSByZXF1ZXN0IE1FVEhPRCAoJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnKS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBUaGUgbG9jYXRpb24gdG8gc2VuZCB0aGUgcmVxdWVzdCB0by5cbiAqIEBwYXJhbSB7Kn0gW2JvZHldIC0gQW55dGhpbmcgd2hpY2ggbmVlZHMgdG8gYmUgc2VudCBzb21ld2hlcmUuXG4gKiBAcGFyYW0ge0hlYWRlcnN9IFtoZWFkZXJzXSAtIEV4dHJhIGhlYWRlcnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxPYmplY3Q+fSBUaGUgcmVzcG9uc2Ugb2YgdGhlIG1hZGUgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMpIHtcbiAgY29uc3QgcmVxdWVzdEhlYWRlcnMgPSBoZWFkZXJzIHx8IG5ldyBIZWFkZXJzKCk7XG5cbiAgbGV0IHJlcXVlc3RCb2R5ID0gYm9keTtcbiAgaWYgKCEoYm9keSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcyB8fCBib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpICYmIGJvZHkgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICByZXF1ZXN0SGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgcmVxdWVzdEJvZHkgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgfVxuXG4gIGxldCByZXF1ZXN0VVJMID0gdXJsO1xuICAvLyBYWFggcmVtb3ZlIHRoZSBVUkwgdHJ1dGh5IGNoZWNrIHdoZW4gYWxsIHRlc3RzIGFyZSBwcm9wZXJseSB3cml0dGVuLiBOb3dcbiAgLy8gaXQgaGFwcGVucyB3YXkgdG8gb2Z0ZW4gdGhhdCB0aGUgVVJMIGlzIG9taXR0ZWQgd2l0aG91dCBhbnkgZ29vZCByZWFzb24uXG4gIGlmICh1cmwgJiYgdXJsLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgIHJlcXVlc3RVUkwgPSBgJHtzZXR0aW5ncy5hcGlVUkx9JHt1cmx9YDtcbiAgfVxuXG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIG1ldGhvZCxcbiAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVycyxcbiAgICBib2R5OiByZXF1ZXN0Qm9keVxuICB9O1xuXG4gIHJldHVybiBmZXRjaChyZXF1ZXN0VVJMLCByZXF1ZXN0T3B0aW9ucykudGhlbihoYW5kbGVSZXNwb25zZSk7XG59XG5cblxuLyoqXG4gKiBCdWlsZCBhIGJlYXJlciB0b2tlbiBmcm9tIHRoZSBgYXV0aG9yaXphdGlvblRva2VuYCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0LlxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSBXaGVuIG5vIGF1dGhvcml6YXRpb25Ub2tlbiBpcyBzZXQuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGdlbmVyYXRlZCBiZWFyZXIgdG9rZW4uXG4gKi9cbmZ1bmN0aW9uIGdldEJlYXJlclRva2VuKCkge1xuICBpZiAoIXNldHRpbmdzLmF1dGhvcml6YXRpb25Ub2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIGF1dGhlbnRpY2F0ZSBmaXJzdC4nKTtcbiAgfVxuXG4gIHJldHVybiBgQmVhcmVyICR7c2V0dGluZ3MuYXV0aG9yaXphdGlvblRva2VufWA7XG59XG5cblxuLyoqXG4gKiBQZXJmb3JtIGFuIEhUVFAgcmVxdWVzdCB3aXRoIHRoZSBkZXNpcmVkIG1ldGhvZCwgYm9keSwgYW5kIGhlYWRlcnMgdG8gdGhlXG4gKiBnaXZlbiBwYXJ0aWFsIElUU0xhbmd1YWdlIEFQSSBVUkwuXG4gKlxuICogVGhpcyByZXF1ZXN0IHdpbGwgYWRkIHRoZSBgYEF1dGhvcml6YXRpb25gYCBoZWFkZXIgdG8gdGhlIHJlcXVlc3QuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBvbmx5IGFsbG93cyB0byBtYWtlIGNhbGxzIHRvIHRoZSBJVFNMYW5ndWFnZSBBUEkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCAtIFRoZSByZXF1ZXN0IE1FVEhPRCAoJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnKS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBUaGUgbG9jYXRpb24gdG8gc2VuZCB0aGUgcmVxdWVzdCB0by5cbiAqIEBwYXJhbSB7Kn0gW2JvZHldIC0gQW55dGhpbmcgd2hpY2ggbmVlZHMgdG8gYmUgc2VudCBzb21ld2hlcmUuXG4gKiBAcGFyYW0ge0hlYWRlcnN9IFtoZWFkZXJzXSAtIEV4dHJhIGhlYWRlcnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICpcbiAqIEB0aHJvd3Mge1Byb21pc2UuPHN0cmluZz59IC0gV2hlbiB0aGUgZ2l2ZW4gYHVybGAgcGFyYW0gaXMgbm90IGEgcGFydGlhbFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkwsIG9yIHdoZW4gdGhlcmUgaXMgbm8gYXV0aG9yaXNhdGlvbiB0b2tlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGlibGUuXG4gKlxuICogQHJldHVybnMge1Byb21pc2UuPE9iamVjdD59IC0gVGhlIHJlc3BvbnNlIGZyb20gdGhlIElUU0xhbmd1YWdlIEFQSS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1dGhvcmlzZWRSZXF1ZXN0KG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJzKSB7XG4gIC8vIFhYWCByZW1vdmUgdGhlIFVSTCB0cnV0aHkgY2hlY2sgd2hlbiBhbGwgcGFydHMgb2YgdGhlIFNESyBubyBsb25nZXIgYnVpbGRcbiAgLy8gYSBjb21wbGV0ZSB1cmwgYnkgdGhlbXNlbHZlcyB1c2luZyB0aGUgXCJwcml2YXRlXCIgc2V0dGluZ3Mgb2JqZWN0IG9mIHRoZWlyXG4gIC8vIGNvbm5lY3Rpb24gcmVmZXJlbmNlLlxuICBpZiAodXJsICYmICghdXJsLnN0YXJ0c1dpdGgoJy8nKSAmJiAhdXJsLnN0YXJ0c1dpdGgoc2V0dGluZ3MuYXBpVVJMKSkpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ09ubHkgcmVsYXRpdmUgSVRTTGFuZ3VhZ2UgQVBJIFVSTHMgYXJlIGFsbG93ZWQuJyk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlcXVlc3RIZWFkZXJzID0gaGVhZGVycyB8fCBuZXcgSGVhZGVycygpO1xuICAgIHJlcXVlc3RIZWFkZXJzLnNldChBVVRIT1JJWkFUSU9OLCBnZXRCZWFyZXJUb2tlbigpKTtcblxuICAgIHJldHVybiByZXF1ZXN0KG1ldGhvZCwgdXJsLCBib2R5LCByZXF1ZXN0SGVhZGVycyk7XG4gIH0gY2F0Y2ggKHVuYXV0aG9yaXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh1bmF1dGhvcmlzZWQubWVzc2FnZSk7XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvY29tbXVuaWNhdGlvbi9pbmRleC5qcyJdLCJuYW1lcyI6WyJ1cGRhdGVTZXR0aW5ncyIsInJlcXVlc3QiLCJhdXRob3Jpc2VkUmVxdWVzdCIsIkNPTlRFTlRfVFlQRSIsIkFVVEhPUklaQVRJT04iLCJBUFBMSUNBVElPTl9KU09OIiwic2V0dGluZ3MiLCJhcGlVUkwiLCJ3c1VSTCIsImF1dGhvcml6YXRpb25Ub2tlbiIsIm5ld1NldHRpbmdzIiwiT2JqZWN0IiwiRXJyb3IiLCJhc3NpZ24iLCJoYW5kbGVSZXNwb25zZSIsInJlc3BvbnNlIiwicmVzcG9uc2VDb250ZW50VHlwZSIsImhlYWRlcnMiLCJnZXQiLCJpbmNsdWRlcyIsImpzb24iLCJ0aGVuIiwib2siLCJQcm9taXNlIiwicmVqZWN0Iiwic3RhdHVzIiwic3RhdHVzVGV4dCIsIm1ldGhvZCIsInVybCIsImJvZHkiLCJyZXF1ZXN0SGVhZGVycyIsIkhlYWRlcnMiLCJyZXF1ZXN0Qm9keSIsIlVSTFNlYXJjaFBhcmFtcyIsIkZvcm1EYXRhIiwic2V0IiwiSlNPTiIsInN0cmluZ2lmeSIsInJlcXVlc3RVUkwiLCJzdGFydHNXaXRoIiwicmVxdWVzdE9wdGlvbnMiLCJmZXRjaCIsImdldEJlYXJlclRva2VuIiwidW5hdXRob3Jpc2VkIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7OztRQWlDZ0JBLGMsR0FBQUEsYztRQWlFQUMsTyxHQUFBQSxPO1FBNkRBQyxpQixHQUFBQSxpQjs7QUExSmhCOztBQUVBO0FBQ0EsSUFBTUMsZUFBZSxjQUFyQixDLENBUkE7Ozs7O0FBU0EsSUFBTUMsZ0JBQWdCLGVBQXRCOztBQUVBO0FBQ0EsSUFBTUMsbUJBQW1CLGtCQUF6Qjs7QUFHQTs7O0FBR08sSUFBTUMsOEJBQVc7QUFDdEJDLFVBQVEsNEJBRGM7QUFFdEJDLFNBQU8sSUFGZTtBQUd0QkMsc0JBQW9CO0FBSEUsQ0FBakI7O0FBT1A7Ozs7Ozs7O0FBUU8sU0FBU1QsY0FBVCxDQUF3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SUFBckIsRUFBMkJDLGNBQTNCLENBQVA7QUFDRCxHQUxELENBS0UsT0FBT2EsWUFBUCxFQUFxQjtBQUNyQixXQUFPcEIsUUFBUUMsTUFBUixDQUFlbUIsYUFBYUMsT0FBNUIsQ0FBUDtBQUNEO0FBQ0YiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgc2V0dGluZ3MgYW5kIHRoZSBjb21tdW5pY2F0aW9uIG1lY2hhbmlzbSBmb3IgdGhlXG4gKiBJVFNMYW5ndWFnZSBSRVNUIEFQSS5cbiAqL1xuXG5pbXBvcnQgJ3doYXR3Zy1mZXRjaCc7XG5cbi8vIEhlYWRlcnNcbmNvbnN0IENPTlRFTlRfVFlQRSA9ICdDb250ZW50LVR5cGUnO1xuY29uc3QgQVVUSE9SSVpBVElPTiA9ICdBdXRob3JpemF0aW9uJztcblxuLy8gQ29udGVudC1UeXBlc1xuY29uc3QgQVBQTElDQVRJT05fSlNPTiA9ICdhcHBsaWNhdGlvbi9qc29uJztcblxuXG4vKipcbiAqIFRoZSBzZXR0aW5ncyB0byB1c2UgZm9yIHRoZSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIElUU0xhbmd1YWdlIEFQSS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldHRpbmdzID0ge1xuICBhcGlVUkw6ICdodHRwczovL2FwaS5pdHNsYW5ndWFnZS5ubCcsXG4gIHdzVVJMOiBudWxsLFxuICBhdXRob3JpemF0aW9uVG9rZW46IG51bGxcbn07XG5cblxuLyoqXG4gKiBVcGRhdGUgdGhlIHNldHRpbmdzIHdpdGggdGhlIGBuZXdTZXR0aW5nc2AuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG5ld1NldHRpbmdzIC0gVGhlIHNldHRpbmdzIHRvIGluamVjdC91cGRhdGUuXG4gKlxuICogQHRocm93cyB7RXJyb3J9IC0gV2hlbiB0aGUgZ2l2ZW4gYG5ld1NldHRpbmdzYCBpcyBzb21ldGhpbmcgb3RoZXIgdGhhbiBhXG4gKiAgICAgICAgICAgICAgICAgICBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTZXR0aW5ncyhuZXdTZXR0aW5ncykge1xuICBpZiAoIW5ld1NldHRpbmdzIHx8ICEobmV3U2V0dGluZ3MgaW5zdGFuY2VvZiBPYmplY3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UsIG9ubHkgcHJvdmlkZSBvYmplY3RzIGFzIHNldHRpbmdzLicpO1xuICB9XG5cbiAgT2JqZWN0LmFzc2lnbihzZXR0aW5ncywgbmV3U2V0dGluZ3MpO1xufVxuXG5cbi8qKlxuICogUGFyc2UgdGhlIHJlc3BvbnNlIG9mIGEgZmV0Y2ggcmVxdWVzdC5cbiAqXG4gKiBUcnkgdG8gcGFyc2UgdGhlIGdpdmVuIHJlc3BvbnNlIGJvZHkgYXMgSlNPTiwgaWYgaXQgaXNuJ3QgTGVhdmUgdGhlXG4gKiByZXNwb25zZSBhcyBpcy5cbiAqXG4gKiBAcGFyYW0ge1Jlc3BvbnNlfSByZXNwb25zZSAtIFRoZSByZXNwb25zZSB0byBwYXJzZS5cbiAqXG4gKiBAdGhyb3dzIHtQcm9taXNlLjxTdHJpbmc+fSAtIFdoZW4gdGhlIHJlcXVldHMgd2FzIG5vdCBva2F5IGFuZCB0aGUgY29udGVudHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlc3BvbnNlIGlzbid0IGpzb24uXG4gKiBAdGhyb3dzIHtQcm9taXNlLjxPYmplY3Q+fSAtIFdoZW4gdGhlIHJlcXVldHMgd2FzIG5vdCBva2F5IGFuZCB0aGUgY29udGVudHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlc3BvbnNlIGlzIGpzb24uXG4gKlxuICogQHJldHVybnMge1Byb21pc2UuPE9iamVjdD59IC0gVGhlIGNvbnRlbnRzIG9mIGEgSlNPTiByZXNwb25zZSBvciB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlIGl0c2VsZiBpZiB0aGUgYm9keSBpcyBzb21ldGhpbmcgb3RoZXJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gSlNPTi5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgY29uc3QgcmVzcG9uc2VDb250ZW50VHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KENPTlRFTlRfVFlQRSk7XG5cbiAgLy8gVGhlIElUU0xhbmd1YWdlIEFQSSBzaG91bGQgcmV0dXJuIEpTT04uIElmIHRcbiAgaWYgKHJlc3BvbnNlQ29udGVudFR5cGUgJiYgcmVzcG9uc2VDb250ZW50VHlwZS5pbmNsdWRlcyhBUFBMSUNBVElPTl9KU09OKSkge1xuICAgIHJldHVybiByZXNwb25zZS5qc29uKCkudGhlbihqc29uID0+IHtcbiAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGpzb24pO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cblxuLyoqXG4gKiBQZXJmb3JtIGFuIEhUVFAgcmVxdWVzdCBmb3IgdGhlIGdpdmVuIG1ldGhvZCwgdXJsLCBib2R5LCBhbmQgaGVhZGVycy5cbiAqXG4gKiBJbiBjYXNlIHRoZSBnaXZlbiB1cmwgaXMgYSBwYXJ0aWFsIHVybCwgbWVhbmluZyBpdCBzdGFydHMgd2l0aCBhIGAvYCwgdGhlXG4gKiBiYXNlIFVSTCB0byB0aGUgSVRTTGFuZ3VhZ2UgQVBJIGlzIHByZXBlbmRlZC5cbiAqXG4gKiBXaGVuIGEgT2JqZWN0IGluc3RhbmNlIGlzIHByb3ZpZGVkIGFzIGJvZHksIGl0J2xsIGJlIHRyYW5zZm9ybWVkIGludG8gSlNPTi5cbiAqIFVubGVzcyBpdCBpcyBlaXRoZXIgYSBgVVJMU2VhcmNoUGFyYW1zYCBvciBhIGBGb3JtRGF0YWAgb2JqZWN0LiBBbnl0aGluZ1xuICogZWxzZSBpcyBzZW50IGFzIHBsYWluIHRleHQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCAtIFRoZSByZXF1ZXN0IE1FVEhPRCAoJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnKS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBUaGUgbG9jYXRpb24gdG8gc2VuZCB0aGUgcmVxdWVzdCB0by5cbiAqIEBwYXJhbSB7Kn0gW2JvZHldIC0gQW55dGhpbmcgd2hpY2ggbmVlZHMgdG8gYmUgc2VudCBzb21ld2hlcmUuXG4gKiBAcGFyYW0ge0hlYWRlcnN9IFtoZWFkZXJzXSAtIEV4dHJhIGhlYWRlcnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxPYmplY3Q+fSBUaGUgcmVzcG9uc2Ugb2YgdGhlIG1hZGUgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMpIHtcbiAgY29uc3QgcmVxdWVzdEhlYWRlcnMgPSBoZWFkZXJzIHx8IG5ldyBIZWFkZXJzKCk7XG5cbiAgbGV0IHJlcXVlc3RCb2R5ID0gYm9keTtcbiAgaWYgKCEoYm9keSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcyB8fCBib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpICYmIGJvZHkgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICByZXF1ZXN0SGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgcmVxdWVzdEJvZHkgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgfVxuXG4gIGxldCByZXF1ZXN0VVJMID0gdXJsO1xuICAvLyBYWFggcmVtb3ZlIHRoZSBVUkwgdHJ1dGh5IGNoZWNrIHdoZW4gYWxsIHRlc3RzIGFyZSBwcm9wZXJseSB3cml0dGVuLiBOb3dcbiAgLy8gaXQgaGFwcGVucyB3YXkgdG8gb2Z0ZW4gdGhhdCB0aGUgVVJMIGlzIG9taXR0ZWQgd2l0aG91dCBhbnkgZ29vZCByZWFzb24uXG4gIGlmICh1cmwgJiYgdXJsLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgIHJlcXVlc3RVUkwgPSBgJHtzZXR0aW5ncy5hcGlVUkx9JHt1cmx9YDtcbiAgfVxuXG4gIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgIG1ldGhvZCxcbiAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVycyxcbiAgICBib2R5OiByZXF1ZXN0Qm9keSxcbiAgfTtcblxuICByZXR1cm4gZmV0Y2gocmVxdWVzdFVSTCwgcmVxdWVzdE9wdGlvbnMpLnRoZW4oaGFuZGxlUmVzcG9uc2UpO1xufVxuXG5cbi8qKlxuICogQnVpbGQgYSBiZWFyZXIgdG9rZW4gZnJvbSB0aGUgYGF1dGhvcml6YXRpb25Ub2tlbmAgaW4gdGhlIHNldHRpbmdzIG9iamVjdC5cbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gV2hlbiBubyBhdXRob3JpemF0aW9uVG9rZW4gaXMgc2V0LlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBnZW5lcmF0ZWQgYmVhcmVyIHRva2VuLlxuICovXG5mdW5jdGlvbiBnZXRCZWFyZXJUb2tlbigpIHtcbiAgaWYgKCFzZXR0aW5ncy5hdXRob3JpemF0aW9uVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBhdXRoZW50aWNhdGUgZmlyc3QuJyk7XG4gIH1cblxuICByZXR1cm4gYEJlYXJlciAke3NldHRpbmdzLmF1dGhvcml6YXRpb25Ub2tlbn1gO1xufVxuXG5cbi8qKlxuICogUGVyZm9ybSBhbiBIVFRQIHJlcXVlc3Qgd2l0aCB0aGUgZGVzaXJlZCBtZXRob2QsIGJvZHksIGFuZCBoZWFkZXJzIHRvIHRoZVxuICogZ2l2ZW4gcGFydGlhbCBJVFNMYW5ndWFnZSBBUEkgVVJMLlxuICpcbiAqIFRoaXMgcmVxdWVzdCB3aWxsIGFkZCB0aGUgYGBBdXRob3JpemF0aW9uYGAgaGVhZGVyIHRvIHRoZSByZXF1ZXN0LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gb25seSBhbGxvd3MgdG8gbWFrZSBjYWxscyB0byB0aGUgSVRTTGFuZ3VhZ2UgQVBJLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgLSBUaGUgcmVxdWVzdCBNRVRIT0QgKCdHRVQnLCAnUE9TVCcsICdQVVQnLCAnREVMRVRFJykuXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVGhlIGxvY2F0aW9uIHRvIHNlbmQgdGhlIHJlcXVlc3QgdG8uXG4gKiBAcGFyYW0geyp9IFtib2R5XSAtIEFueXRoaW5nIHdoaWNoIG5lZWRzIHRvIGJlIHNlbnQgc29tZXdoZXJlLlxuICogQHBhcmFtIHtIZWFkZXJzfSBbaGVhZGVyc10gLSBFeHRyYSBoZWFkZXJzIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAqXG4gKiBAdGhyb3dzIHtQcm9taXNlLjxzdHJpbmc+fSAtIFdoZW4gdGhlIGdpdmVuIGB1cmxgIHBhcmFtIGlzIG5vdCBhIHBhcnRpYWxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMLCBvciB3aGVuIHRoZXJlIGlzIG5vIGF1dGhvcmlzYXRpb24gdG9rZW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxpYmxlLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxPYmplY3Q+fSAtIFRoZSByZXNwb25zZSBmcm9tIHRoZSBJVFNMYW5ndWFnZSBBUEkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdXRob3Jpc2VkUmVxdWVzdChtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycykge1xuICAvLyBYWFggcmVtb3ZlIHRoZSBVUkwgdHJ1dGh5IGNoZWNrIHdoZW4gYWxsIHBhcnRzIG9mIHRoZSBTREsgbm8gbG9uZ2VyIGJ1aWxkXG4gIC8vIGEgY29tcGxldGUgdXJsIGJ5IHRoZW1zZWx2ZXMgdXNpbmcgdGhlIFwicHJpdmF0ZVwiIHNldHRpbmdzIG9iamVjdCBvZiB0aGVpclxuICAvLyBjb25uZWN0aW9uIHJlZmVyZW5jZS5cbiAgaWYgKHVybCAmJiAoIXVybC5zdGFydHNXaXRoKCcvJykgJiYgIXVybC5zdGFydHNXaXRoKHNldHRpbmdzLmFwaVVSTCkpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdPbmx5IHJlbGF0aXZlIElUU0xhbmd1YWdlIEFQSSBVUkxzIGFyZSBhbGxvd2VkLicpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXF1ZXN0SGVhZGVycyA9IGhlYWRlcnMgfHwgbmV3IEhlYWRlcnMoKTtcbiAgICByZXF1ZXN0SGVhZGVycy5zZXQoQVVUSE9SSVpBVElPTiwgZ2V0QmVhcmVyVG9rZW4oKSk7XG5cbiAgICByZXR1cm4gcmVxdWVzdChtZXRob2QsIHVybCwgYm9keSwgcmVxdWVzdEhlYWRlcnMpO1xuICB9IGNhdGNoICh1bmF1dGhvcmlzZWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodW5hdXRob3Jpc2VkLm1lc3NhZ2UpO1xuICB9XG59XG4iXX0= |
@@ -198,4 +198,6 @@ 'use strict'; | ||
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, | ||
args = _ref.args, | ||
kwargs = _ref.kwargs, | ||
_ref$args = _ref.args, | ||
args = _ref$args === undefined ? [] : _ref$args, | ||
_ref$kwargs = _ref.kwargs, | ||
kwargs = _ref$kwargs === undefined ? {} : _ref$kwargs, | ||
options = _ref.options, | ||
@@ -229,2 +231,2 @@ progressCb = _ref.progressCb; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvY29tbXVuaWNhdGlvbi93ZWJzb2NrZXQuanMiXSwibmFtZXMiOlsib3BlbldlYnNvY2tldENvbm5lY3Rpb24iLCJnZXRXZWJzb2NrZXRDb25uZWN0aW9uIiwiY2xvc2VXZWJzb2NrZXRDb25uZWN0aW9uIiwibWFrZVdlYnNvY2tldENhbGwiLCJsb2ciLCJlcnJvciIsImNvbnNvbGUiLCJiaW5kIiwiYnVuZGVzYXV0b2JhaG4iLCJoYW5kbGVXZWJzb2NrZXRBdXRob3Jpc2F0aW9uQ2hhbGxlbmdlIiwic2Vzc2lvbiIsIm1ldGhvZCIsImF1dGhvcml6YXRpb25Ub2tlbiIsIkVycm9yIiwiZXN0YWJsaXNoTmV3QnVuZGVzYmFobiIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYmFobiIsIkNvbm5lY3Rpb24iLCJ1cmwiLCJ3c1VSTCIsInJlYWxtIiwidXNlX2VzNl9wcm9taXNlcyIsImF1dGhtZXRob2RzIiwiYXV0aGlkIiwiZGV0YWlscyIsInRpY2tldCIsIm9uY2hhbGxlbmdlIiwib25jbG9zZSIsIm1lc3NhZ2UiLCJvbm9wZW4iLCJvcGVuIiwiY2F0Y2giLCJyZWFzb24iLCJ0aGVuIiwiY2xvc2UiLCJycGMiLCJhcmdzIiwia3dhcmdzIiwib3B0aW9ucyIsInByb2dyZXNzQ2IiLCJtZXJnZWRPcHRpb25zIiwicmVjZWl2ZV9wcm9ncmVzcyIsImNvbm5lY3Rpb24iLCJjYWxsIiwicHJvZ3Jlc3MiLCJ3c3NFcnJvciIsInJlc3VsdCIsIndzc0t3YXJncyIsIndzc0FyZ3MiXSwibWFwcGluZ3MiOiI7Ozs7a1FBQUE7Ozs7UUE4R2dCQSx1QixHQUFBQSx1QjtRQWlCQUMsc0IsR0FBQUEsc0I7UUFlQUMsd0IsR0FBQUEsd0I7UUE0Q0FDLGlCLEdBQUFBLGlCOztBQXRMaEI7Ozs7QUFDQTs7OztBQUNBOzs7O0FBRUEsSUFBTUMsTUFBTSxxQkFBTSxtQkFBTixDQUFaO0FBQ0EsSUFBTUMsUUFBUSxxQkFBTSxtQkFBTixDQUFk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STtBQUFBLE1BQXpDQyxJQUF5QyxRQUF6Q0EsSUFBeUM7QUFBQSxNQUFuQ0MsTUFBbUMsUUFBbkNBLE1BQW1DO0FBQUEsTUFBM0JDLE9BQTJCLFFBQTNCQSxPQUEyQjtBQUFBLE1BQWxCQyxVQUFrQixRQUFsQkEsVUFBa0I7O0FBQy9FLE1BQUlDLGdCQUFnQkYsT0FBcEI7QUFDQSxNQUFJQyxVQUFKLEVBQWdCO0FBQ2RDLGlDQUNLRixPQURMO0FBRUVHLHdCQUFrQixJQUZwQixDQUV5QjtBQUZ6QjtBQUlEO0FBQ0QsU0FBTzFDLHlCQUNKa0MsSUFESSxDQUNDO0FBQUEsV0FDSlMsV0FBV2xDLE9BQVgsQ0FBbUJtQyxJQUFuQixxQkFBMENSLEdBQTFDLEVBQWlEQyxJQUFqRCxFQUF1REMsTUFBdkQsRUFBK0RHLGFBQS9ELEVBQ0dJLFFBREgsQ0FDWUwsVUFEWixDQURJO0FBQUEsR0FERCxFQUtKUixLQUxJLENBS0Usa0JBQVU7QUFBQSxRQUNEYyxRQURDLEdBQzZDQyxNQUQ3QyxDQUNSM0MsS0FEUTtBQUFBLFFBQ2lCNEMsU0FEakIsR0FDNkNELE1BRDdDLENBQ1NULE1BRFQ7QUFBQSxRQUNrQ1csT0FEbEMsR0FDNkNGLE1BRDdDLENBQzRCVixJQUQ1Qjs7QUFHZjs7QUFDQWpDLFVBQU0yQyxNQUFOOztBQUVBO0FBQ0EsV0FBT2pDLFFBQVFFLE1BQVI7QUFDTFosYUFBTzBDO0FBREYsT0FFRkUsU0FGRTtBQUdMWCxzQkFBVVksT0FBVjtBQUhLLE9BQVA7QUFLRCxHQWpCSSxDQUFQO0FBa0JEIiwiZmlsZSI6IndlYnNvY2tldC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqL1xuXG5pbXBvcnQgYXV0b2JhaG4gZnJvbSAnYXV0b2JhaG4nO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7c2V0dGluZ3N9IGZyb20gJy4vaW5kZXgnO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnaXRzLXNkazpXZWJTb2NrZXQnKTtcbmNvbnN0IGVycm9yID0gZGVidWcoJ2l0cy1zZGs6V2ViU29ja2V0Jyk7XG5sb2cubG9nID0gY29uc29sZS5sb2cuYmluZChjb25zb2xlKTtcblxuLyoqXG4gKiBLZWVwIGhvbGQgb2YgdGhlIGN1cnJlbnRseSBvcGVuIGF1dG9iYWhuIGNvbm5lY3Rpb24uXG4gKlxuICogQHR5cGUge1Byb21pc2UuPGF1dG9iYWhuLkNvbm5lY3Rpb24+fVxuICovXG5sZXQgYnVuZGVzYXV0b2JhaG47XG5cblxuLyoqXG4gKiBBbGxvdyB0aGUgYGF1dG9iYWhuLkNvbm5lY3Rpb25gIHRvIGNoYWxsZW5nZSB0aGUgcHJvdmlkZWQgYXV0aGVudGljYXRpb24uXG4gKlxuICogQHBhcmFtIHthdXRvYmFobi5TZXNzaW9ufSBzZXNzaW9uIC0gVGhlIHNlc3Npb24gb2YgdGhlIGN1cnJlbnRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtAbGluayBhdXRvYmFobi5Db25uZWN0aW9ufS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgLSBUaGUgYXV0aGVudGljYXRpb24gbWV0aG9kIGl0IHRyaWVzIHRvIHVzZS5cbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBXaGVuIHRoZSBnaXZlbiBgbWV0aG9kYCBpcyB1bmtub3duIHRvIHRoZSBTREsuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZVdlYnNvY2tldEF1dGhvcmlzYXRpb25DaGFsbGVuZ2Uoc2Vzc2lvbiwgbWV0aG9kKSB7XG4gIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgY2FzZSAndGlja2V0JzpcbiAgICAgIHJldHVybiBzZXR0aW5ncy5hdXRob3JpemF0aW9uVG9rZW47XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHdlYnNvY2tldCBzZXJ2ZXIgdHJpZWQgdG8gdXNlIHRoZSB1bmtub3duICcgK1xuICAgICAgICAgICAgICAgICAgICAgIGBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2U6IFwiJHttZXRob2R9XCJgKTtcbiAgfVxufVxuXG5cbi8qKlxuICogU2V0IHtAbGluayBidW5kZXNhdXRvYmFobn0gdG8gYSBuZXcgUHJvbWlzZSB3aGljaCByZXNvbHZlcyBpbnRvIGFcbiAqIGBhdXRvYmFobi5Db25uZWN0aW9uYCBvYmplY3Qgd2hlbiBhIGNvbm5lY3Rpb24gd2FzIHN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZC5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48YXV0b2JhaG4uQ29ubmVjdGlvbj59IC0gQSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdoZW4gdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBhbmQgb3BlbmVkLlxuICovXG5mdW5jdGlvbiBlc3RhYmxpc2hOZXdCdW5kZXNiYWhuKCkge1xuICBidW5kZXNhdXRvYmFobiA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBiYWhuID0gbmV3IGF1dG9iYWhuLkNvbm5lY3Rpb24oe1xuICAgICAgdXJsOiBzZXR0aW5ncy53c1VSTCxcbiAgICAgIHJlYWxtOiAnZGVmYXVsdCcsXG4gICAgICAvLyBPZiBjb3Vyc2Ugd2Ugd2FudCB0byB1c2UgZXM2IHByb21pc2VzIGlmIHRoZXkgYXJlIGF2YWlsYmlsZS5cbiAgICAgIC8vIEJ1dCwgdGhlIGJhY2tlbmQgc29tZXRpbWVzIHNwaXRzIG91dCBwcm9ncmVzcy4gRm9yIHRoYXQgd2UgbmVlZFxuICAgICAgLy8gYSBXaGVuLkpTIHByb21pc2UuLlxuICAgICAgdXNlX2VzNl9wcm9taXNlczogZmFsc2UsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY2FtZWxjYXNlXG4gICAgICAvLyBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIHJlcXVpcmVkIGluIG9yZGVyIHRvIGF1dGhvcmlzZSB0aGVcbiAgICAgIC8vIGNvbm5lY3Rpb24uXG4gICAgICBhdXRobWV0aG9kczogWyd0aWNrZXQnXSxcbiAgICAgIGF1dGhpZDogJ29hdXRoMicsXG4gICAgICBkZXRhaWxzOiB7XG4gICAgICAgIHRpY2tldDogc2V0dGluZ3MuYXV0aG9yaXphdGlvblRva2VuXG4gICAgICB9LFxuICAgICAgb25jaGFsbGVuZ2U6IGhhbmRsZVdlYnNvY2tldEF1dGhvcmlzYXRpb25DaGFsbGVuZ2VcbiAgICB9KTtcblxuICAgIC8vIGBhdXRvYmFobi5Db25uZWN0aW9uYCBjYWxscyBpdHMgYG9uY2xvc2VgIG1ldGhvZCwgaWYgaXQgZXhpc3RzLCB3aGVuIGl0XG4gICAgLy8gd2FzIG5vdCBhYmxlIHRvIG9wZW4gYSBjb25uZWN0aW9uLlxuICAgIGJhaG4ub25jbG9zZSA9ICgvKiByZWFzb24sIGRldGFpbHMgKi8pID0+IHtcbiAgICAgIC8vIFdoZW4gdGhlIGNvbm5lY3Rpb24gZmFpbGQgdG8gb3BlbiBhIHJlYXNvbiBpcyBnaXZlbiB3aXRoIHNvbWUgZGV0YWlscy5cbiAgICAgIC8vIFNhZGx5IHRoZXNlIGFyZSB2ZXJ5IHVuZGVzY3JpcHRpdmUuIFRoZXJlZm9yZSBoaW50L3dhcm4gdGhlIGRldmVsb3BlclxuICAgICAgLy8gYWJvdXQgcG90ZW50aWFsIGVycm9uZW91cyBzZXR0aW5ncyBvciB0byBjb250YWN0IHVzLlxuICAgICAgY29uc3QgbWVzc2FnZSA9ICdUaGUgY29ubmVjdGlvbiBpcyBlcnJvbmVvdXM7IGNoZWNrIGlmIGFsbCByZXF1aXJlZCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAnc2V0dGluZ3MgaGF2ZSBiZWVuIGluamVjdGVkIHVzaW5nIHRoZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAnYHVwZGF0ZVNldHRpbmdzKClgIGZ1bmN0aW9uLiBJZiB0aGUgcHJvYmxlbSBwZXJzaXN0cyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAncGxlYXNlIHBvc3QgYSBpc3N1ZSBvbiBvdXIgR2l0SHViIHJlcG9zaXRvcnkuJztcbiAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICB9O1xuXG4gICAgLy8gQ29ubmVjdGlvbiBnb3QgZXN0YWJsaXNoZWQ7IGxldHMgdXMgaXQuXG4gICAgYmFobi5vbm9wZW4gPSAoKSA9PiB7XG4gICAgICBsb2coJ1N1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZCBhIHdlYnNvY2tldCBjb25uZWN0aW9uLicpO1xuICAgICAgLy8gUmVtb3ZlIHRoZSBgb25jbG9zZWAgaGFuZGxlciBhcyBpdCBpcyBubyBsb25nZXIgb2YgaW50ZXJlc3QgdG8gdXMuXG4gICAgICBkZWxldGUgYmFobi5vbmNsb3NlO1xuICAgICAgcmVzb2x2ZShiYWhuKTtcbiAgICB9O1xuXG4gICAgYmFobi5vcGVuKCk7XG4gIH0pO1xuXG4gIC8vIFJldHVybiB0aGUgcHJvbWlzZSB0byBtYWtlIGl0IHRoaXMgZnVuY3Rpb24gY2hhaW5hYmxlLiBJbiBjYXNlIHRoZVxuICAvLyBgYnVuZGVzYXV0b2JhaG5gIGlzIHJlamVjdGVkOyByZW1vdmUgdGhlIHJlZmVyZW5jZSBzbyB3ZSBjYW4gdXNlIHNpbXBsZVxuICAvLyBmYWxzeSBjaGVja3MgdG8gZGV0ZW1pbmUgaWYgdGhlcmUgaXMgYSBjb25uZWN0aW9uLlxuICByZXR1cm4gYnVuZGVzYXV0b2JhaG4uY2F0Y2gocmVhc29uID0+IHtcbiAgICBidW5kZXNhdXRvYmFobiA9IG51bGw7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gIH0pO1xufVxuXG5cbi8qKlxuICogT3BlbiBhIG5ldyB3ZWJzb2NrZXQgY29ubmVjdGlvbi5cbiAqXG4gKiBUaGVyZSB0aGVyZSBjdXJyZW50bHkgaXMgYSBvcGVuIGNvbm5lY3Rpb24sIGNsb3NlIGl0IGFuZCBvcGVuIGEgbmV3XG4gKiBjb25uZWN0aW9uLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxzdHJpbmc+fSAtIEEgcmVzb2x2ZWQgcHJvbWlzZSB3aGljaCByZXNvbHZlcyB3aGVuIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYW5kIG9wZW5lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wZW5XZWJzb2NrZXRDb25uZWN0aW9uKCkge1xuICByZXR1cm4gY2xvc2VXZWJzb2NrZXRDb25uZWN0aW9uKClcbiAgICAudGhlbigoKSA9PiBlc3RhYmxpc2hOZXdCdW5kZXNiYWhuKCkpXG4gICAgLy8gYGJ1bmRlc2F1dG9iYWhuYCBhY3R1YWxseSByZXNvbHZlZCB3aXRoIHRoZSBgYXV0b2JhaG4uQ29ubmVjdGlvbmBcbiAgICAvLyBvYmplY3QuIFRoaXMgaXMgb25seSBtZWFudCBmb3IgaW50ZXJuYWwgdXNhZ2UgYW5kIHRoZXJlZm9yZSBzaG91bGQgbm90XG4gICAgLy8gYmUgZXhwb3NlZCB0byB0aGUgdXNlcnMgb2YgdGhlIFNESy5cbiAgICAudGhlbigoKSA9PiAnU3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkIGEgd2Vic29ja2V0IGNvbm5lY3Rpb24uJyk7XG59XG5cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgd2Vic29ja2V0IGNvbm5lY3Rpb24sIG9yIG9wZW4gYSBuZXcgb25lLlxuICpcbiAqIElmIHRoZXJlIGlzIG5vIGN1cnJlbnQgY29ubmVjdGlvbiwgb3BlbiBvbmUgYW5kIHJldHVybiB0aGF0IGluIHN0ZWFkLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxhdXRvYmFobi5Db25uZWN0aW9uPn0gLSBUaGUgY3VycmVudCB3ZWJzb2NrZXQgY29ubmVjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdlYnNvY2tldENvbm5lY3Rpb24oKSB7XG4gIGlmICghYnVuZGVzYXV0b2JhaG4pIHtcbiAgICByZXR1cm4gZXN0YWJsaXNoTmV3QnVuZGVzYmFobigpO1xuICB9XG5cbiAgcmV0dXJuIGJ1bmRlc2F1dG9iYWhuO1xufVxuXG5cbi8qKlxuICogQ2xvc2UgdGhlIGN1cnJlbnQgd2Vic29ja2V0IGNvbm5lY3Rpb24uXG4gKlxuICogQHJldHVybnMge1Byb21pc2UuPHN0cmluZz59IC0gQSBwcm9taXNlIHdoaWNoIHdpbGwgcmVzb2x2ZSBhcyBzb29uIGFzIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IGNsb3NlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlV2Vic29ja2V0Q29ubmVjdGlvbigpIHtcbiAgaWYgKCFidW5kZXNhdXRvYmFobikge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJ1RoZXJlIGlzIG5vIHdlYnNvY2tldCBjb25uZWN0aW9uIHRvIGNsb3NlLicpO1xuICB9XG5cbiAgcmV0dXJuIGJ1bmRlc2F1dG9iYWhuXG4gICAgLnRoZW4oYmFobiA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBiYWhuLmNsb3NlKCk7XG4gICAgICAgIGJ1bmRlc2F1dG9iYWhuID0gbnVsbDtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdUaGUgd2Vic29ja2V0IGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIHN1Y2Nlc3NmdWxseS4nO1xuICAgICAgICBsb2cobWVzc2FnZSk7XG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgfSBjYXRjaCAocmVhc29uKSB7XG4gICAgICAgIC8vIGBhdXRvYmFobi5Db25uZWN0aW9uLmNsb3NlKClgIHRocm93cyBhIHN0cmluZyB3aGVuIHRoZSBjb25uZWN0aW9uIGlzXG4gICAgICAgIC8vIGFscmVhZHkgY2xvc2VkLiBUaGUgY29ubmVjdGlvbiBpcyBub3QgZXhwb3NlZCBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZVxuICAgICAgICAvLyBjbG9zZWQgYnkgYW55b25lIHVzaW5nIHRoZSBTREsuIFJlZ2FyZGxlc3MsIHdoZW4gaXQgaGFwcGVucyBqdXN0XG4gICAgICAgIC8vIHJldHVybiBhIHJlc29sdmVkIHByb21pc2UuXG4gICAgICAgIGJ1bmRlc2F1dG9iYWhuID0gbnVsbDtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdUaGUgd2Vic29ja2V0IGNvbm5lY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuJztcbiAgICAgICAgZXJyb3IobWVzc2FnZSk7XG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG5cbi8qKlxuICogTWFrZSBhIHJwYyBjYWxsIHRvIHRoZSBJVFNMYW5ndWFnZSB3ZWJzb2NrZXQgc2VydmVyLlxuICpcbiAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRvIGVzdGFibGlzaCBhIHdlYnNvY2tldCBjb25uZWN0aW9uIGlmIHRoZXJlIGlzbid0IG9uZVxuICogYWxyZWFkeS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcnBjIC0gVGhlIFJQQyB0byBtYWtlLiBUaGlzIGJlIHByZXBlbmRlZCBieSBgbmwuaXRzbGFuZ3VhZ2VgXG4gKiAgICAgICAgICAgICAgICAgICAgICAgYXMgdGhlIHdlYnNvY2tldCBzZXJ2ZXIgb25seSBoYW5kbGVzIHdlYnNvY2tldCBjYWxsc1xuICogICAgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlIFJQQyBzdGFydHMgd2l0aCB0aGF0IHByZWZpeC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSBEZXN0cnVjdHVyZWQgb2JqZWN0IHdpdGggb3B0aW9ucyB0byBwYXNzIHRvIHRoZSB3ZWJzb2NrZXQgc2VydmVyLlxuICogQHBhcmFtIHtBcnJheX0gW29wdGlvbnMuYXJnc10gLSBBbiBhcnJheSB3aXRoIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBSUEMuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnMua3dhcmdzXSAtIEFuIG9iamVjdCAoZGljdGlvbmFyeSkgd2l0aCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgUlBDLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zLm9wdGlvbnNdIC0gVGhlIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgUlBDLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdGlvbnMucHJvZ3Jlc3NDYl0gLSBPcHRpb25hbCBjYWxsYmFjayB0byByZWNlaXZlIHByb2dyZXNzZWQgcmVzdWx0cy5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48Kj59IC0gVGhlIHJlc3BvbnNlIG9mIHRoZSB3ZWJzb2NrZXQgY2FsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VXZWJzb2NrZXRDYWxsKHJwYywge2FyZ3MsIGt3YXJncywgb3B0aW9ucywgcHJvZ3Jlc3NDYn0gPSB7fSkge1xuICBsZXQgbWVyZ2VkT3B0aW9ucyA9IG9wdGlvbnM7XG4gIGlmIChwcm9ncmVzc0NiKSB7XG4gICAgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICByZWNlaXZlX3Byb2dyZXNzOiB0cnVlIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY2FtZWxjYXNlXG4gICAgfTtcbiAgfVxuICByZXR1cm4gZ2V0V2Vic29ja2V0Q29ubmVjdGlvbigpXG4gICAgLnRoZW4oY29ubmVjdGlvbiA9PlxuICAgICAgY29ubmVjdGlvbi5zZXNzaW9uLmNhbGwoYG5sLml0c2xhbmd1YWdlLiR7cnBjfWAsIGFyZ3MsIGt3YXJncywgbWVyZ2VkT3B0aW9ucylcbiAgICAgICAgLnByb2dyZXNzKHByb2dyZXNzQ2IpXG4gICAgKVxuICAgIC5jYXRjaChyZXN1bHQgPT4ge1xuICAgICAgY29uc3Qge2Vycm9yOiB3c3NFcnJvciwga3dhcmdzOiB3c3NLd2FyZ3MsIGFyZ3M6IHdzc0FyZ3N9ID0gcmVzdWx0O1xuXG4gICAgICAvLyBMb2cgdGhlIGVycm9yIHRvIHN0ZGVyclxuICAgICAgZXJyb3IocmVzdWx0KTtcblxuICAgICAgLy8gUmV0dXJuIGEgc2xpZ2h0bHkgc2ltcGxpc3RpYyB2ZXJzaW9uIG9mIHRoZSBlcnJvciB0aGF0IG9jY3VycmVkXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoe1xuICAgICAgICBlcnJvcjogd3NzRXJyb3IsXG4gICAgICAgIC4uLndzc0t3YXJncyxcbiAgICAgICAgYXJnczogWy4uLndzc0FyZ3NdXG4gICAgICB9KTtcbiAgICB9KTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvY29tbXVuaWNhdGlvbi93ZWJzb2NrZXQuanMiXSwibmFtZXMiOlsib3BlbldlYnNvY2tldENvbm5lY3Rpb24iLCJnZXRXZWJzb2NrZXRDb25uZWN0aW9uIiwiY2xvc2VXZWJzb2NrZXRDb25uZWN0aW9uIiwibWFrZVdlYnNvY2tldENhbGwiLCJsb2ciLCJlcnJvciIsImNvbnNvbGUiLCJiaW5kIiwiYnVuZGVzYXV0b2JhaG4iLCJoYW5kbGVXZWJzb2NrZXRBdXRob3Jpc2F0aW9uQ2hhbGxlbmdlIiwic2Vzc2lvbiIsIm1ldGhvZCIsImF1dGhvcml6YXRpb25Ub2tlbiIsIkVycm9yIiwiZXN0YWJsaXNoTmV3QnVuZGVzYmFobiIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYmFobiIsIkNvbm5lY3Rpb24iLCJ1cmwiLCJ3c1VSTCIsInJlYWxtIiwidXNlX2VzNl9wcm9taXNlcyIsImF1dGhtZXRob2RzIiwiYXV0aGlkIiwiZGV0YWlscyIsInRpY2tldCIsIm9uY2hhbGxlbmdlIiwib25jbG9zZSIsIm1lc3NhZ2UiLCJvbm9wZW4iLCJvcGVuIiwiY2F0Y2giLCJyZWFzb24iLCJ0aGVuIiwiY2xvc2UiLCJycGMiLCJhcmdzIiwia3dhcmdzIiwib3B0aW9ucyIsInByb2dyZXNzQ2IiLCJtZXJnZWRPcHRpb25zIiwicmVjZWl2ZV9wcm9ncmVzcyIsImNvbm5lY3Rpb24iLCJjYWxsIiwicHJvZ3Jlc3MiLCJ3c3NFcnJvciIsInJlc3VsdCIsIndzc0t3YXJncyIsIndzc0FyZ3MiXSwibWFwcGluZ3MiOiI7Ozs7a1FBQUE7Ozs7UUE4R2dCQSx1QixHQUFBQSx1QjtRQWlCQUMsc0IsR0FBQUEsc0I7UUFlQUMsd0IsR0FBQUEsd0I7UUE0Q0FDLGlCLEdBQUFBLGlCOztBQXRMaEI7Ozs7QUFDQTs7OztBQUNBOzs7O0FBRUEsSUFBTUMsTUFBTSxxQkFBTSxtQkFBTixDQUFaO0FBQ0EsSUFBTUMsUUFBUSxxQkFBTSxtQkFBTixDQUFk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STtBQUFBLHVCQUFuREMsSUFBbUQ7QUFBQSxNQUFuREEsSUFBbUQsNkJBQTVDLEVBQTRDO0FBQUEseUJBQXhDQyxNQUF3QztBQUFBLE1BQXhDQSxNQUF3QywrQkFBL0IsRUFBK0I7QUFBQSxNQUEzQkMsT0FBMkIsUUFBM0JBLE9BQTJCO0FBQUEsTUFBbEJDLFVBQWtCLFFBQWxCQSxVQUFrQjs7QUFDekYsTUFBSUMsZ0JBQWdCRixPQUFwQjtBQUNBLE1BQUlDLFVBQUosRUFBZ0I7QUFDZEMsaUNBQ0tGLE9BREw7QUFFRUcsd0JBQWtCLElBRnBCLENBRXlCO0FBRnpCO0FBSUQ7QUFDRCxTQUFPMUMseUJBQ0prQyxJQURJLENBQ0M7QUFBQSxXQUNKUyxXQUFXbEMsT0FBWCxDQUFtQm1DLElBQW5CLHFCQUEwQ1IsR0FBMUMsRUFBaURDLElBQWpELEVBQXVEQyxNQUF2RCxFQUErREcsYUFBL0QsRUFDR0ksUUFESCxDQUNZTCxVQURaLENBREk7QUFBQSxHQURELEVBS0pSLEtBTEksQ0FLRSxrQkFBVTtBQUFBLFFBQ0RjLFFBREMsR0FDNkNDLE1BRDdDLENBQ1IzQyxLQURRO0FBQUEsUUFDaUI0QyxTQURqQixHQUM2Q0QsTUFEN0MsQ0FDU1QsTUFEVDtBQUFBLFFBQ2tDVyxPQURsQyxHQUM2Q0YsTUFEN0MsQ0FDNEJWLElBRDVCOztBQUdmOztBQUNBakMsVUFBTTJDLE1BQU47O0FBRUE7QUFDQSxXQUFPakMsUUFBUUUsTUFBUjtBQUNMWixhQUFPMEM7QUFERixPQUVGRSxTQUZFO0FBR0xYLHNCQUFVWSxPQUFWO0FBSEssT0FBUDtBQUtELEdBakJJLENBQVA7QUFrQkQiLCJmaWxlIjoid2Vic29ja2V0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICovXG5cbmltcG9ydCBhdXRvYmFobiBmcm9tICdhdXRvYmFobic7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtzZXR0aW5nc30gZnJvbSAnLi9pbmRleCc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdpdHMtc2RrOldlYlNvY2tldCcpO1xuY29uc3QgZXJyb3IgPSBkZWJ1ZygnaXRzLXNkazpXZWJTb2NrZXQnKTtcbmxvZy5sb2cgPSBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpO1xuXG4vKipcbiAqIEtlZXAgaG9sZCBvZiB0aGUgY3VycmVudGx5IG9wZW4gYXV0b2JhaG4gY29ubmVjdGlvbi5cbiAqXG4gKiBAdHlwZSB7UHJvbWlzZS48YXV0b2JhaG4uQ29ubmVjdGlvbj59XG4gKi9cbmxldCBidW5kZXNhdXRvYmFobjtcblxuXG4vKipcbiAqIEFsbG93IHRoZSBgYXV0b2JhaG4uQ29ubmVjdGlvbmAgdG8gY2hhbGxlbmdlIHRoZSBwcm92aWRlZCBhdXRoZW50aWNhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge2F1dG9iYWhuLlNlc3Npb259IHNlc3Npb24gLSBUaGUgc2Vzc2lvbiBvZiB0aGUgY3VycmVudFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge0BsaW5rIGF1dG9iYWhuLkNvbm5lY3Rpb259LlxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCAtIFRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2QgaXQgdHJpZXMgdG8gdXNlLlxuICpcbiAqIEB0aHJvd3Mge0Vycm9yfSAtIFdoZW4gdGhlIGdpdmVuIGBtZXRob2RgIGlzIHVua25vd24gdG8gdGhlIFNESy5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlV2Vic29ja2V0QXV0aG9yaXNhdGlvbkNoYWxsZW5nZShzZXNzaW9uLCBtZXRob2QpIHtcbiAgc3dpdGNoIChtZXRob2QpIHtcbiAgICBjYXNlICd0aWNrZXQnOlxuICAgICAgcmV0dXJuIHNldHRpbmdzLmF1dGhvcml6YXRpb25Ub2tlbjtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgd2Vic29ja2V0IHNlcnZlciB0cmllZCB0byB1c2UgdGhlIHVua25vd24gJyArXG4gICAgICAgICAgICAgICAgICAgICAgYGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZTogXCIke21ldGhvZH1cImApO1xuICB9XG59XG5cblxuLyoqXG4gKiBTZXQge0BsaW5rIGJ1bmRlc2F1dG9iYWhufSB0byBhIG5ldyBQcm9taXNlIHdoaWNoIHJlc29sdmVzIGludG8gYVxuICogYGF1dG9iYWhuLkNvbm5lY3Rpb25gIG9iamVjdCB3aGVuIGEgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjxhdXRvYmFobi5Db25uZWN0aW9uPn0gLSBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2hlbiB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uIHdhcyBzdWNjZXNzZnVsbHlcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGFuZCBvcGVuZWQuXG4gKi9cbmZ1bmN0aW9uIGVzdGFibGlzaE5ld0J1bmRlc2JhaG4oKSB7XG4gIGJ1bmRlc2F1dG9iYWhuID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGJhaG4gPSBuZXcgYXV0b2JhaG4uQ29ubmVjdGlvbih7XG4gICAgICB1cmw6IHNldHRpbmdzLndzVVJMLFxuICAgICAgcmVhbG06ICdkZWZhdWx0JyxcbiAgICAgIC8vIE9mIGNvdXJzZSB3ZSB3YW50IHRvIHVzZSBlczYgcHJvbWlzZXMgaWYgdGhleSBhcmUgYXZhaWxiaWxlLlxuICAgICAgLy8gQnV0LCB0aGUgYmFja2VuZCBzb21ldGltZXMgc3BpdHMgb3V0IHByb2dyZXNzLiBGb3IgdGhhdCB3ZSBuZWVkXG4gICAgICAvLyBhIFdoZW4uSlMgcHJvbWlzZS4uXG4gICAgICB1c2VfZXM2X3Byb21pc2VzOiBmYWxzZSwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjYW1lbGNhc2VcbiAgICAgIC8vIFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgcmVxdWlyZWQgaW4gb3JkZXIgdG8gYXV0aG9yaXNlIHRoZVxuICAgICAgLy8gY29ubmVjdGlvbi5cbiAgICAgIGF1dGhtZXRob2RzOiBbJ3RpY2tldCddLFxuICAgICAgYXV0aGlkOiAnb2F1dGgyJyxcbiAgICAgIGRldGFpbHM6IHtcbiAgICAgICAgdGlja2V0OiBzZXR0aW5ncy5hdXRob3JpemF0aW9uVG9rZW5cbiAgICAgIH0sXG4gICAgICBvbmNoYWxsZW5nZTogaGFuZGxlV2Vic29ja2V0QXV0aG9yaXNhdGlvbkNoYWxsZW5nZVxuICAgIH0pO1xuXG4gICAgLy8gYGF1dG9iYWhuLkNvbm5lY3Rpb25gIGNhbGxzIGl0cyBgb25jbG9zZWAgbWV0aG9kLCBpZiBpdCBleGlzdHMsIHdoZW4gaXRcbiAgICAvLyB3YXMgbm90IGFibGUgdG8gb3BlbiBhIGNvbm5lY3Rpb24uXG4gICAgYmFobi5vbmNsb3NlID0gKC8qIHJlYXNvbiwgZGV0YWlscyAqLykgPT4ge1xuICAgICAgLy8gV2hlbiB0aGUgY29ubmVjdGlvbiBmYWlsZCB0byBvcGVuIGEgcmVhc29uIGlzIGdpdmVuIHdpdGggc29tZSBkZXRhaWxzLlxuICAgICAgLy8gU2FkbHkgdGhlc2UgYXJlIHZlcnkgdW5kZXNjcmlwdGl2ZS4gVGhlcmVmb3JlIGhpbnQvd2FybiB0aGUgZGV2ZWxvcGVyXG4gICAgICAvLyBhYm91dCBwb3RlbnRpYWwgZXJyb25lb3VzIHNldHRpbmdzIG9yIHRvIGNvbnRhY3QgdXMuXG4gICAgICBjb25zdCBtZXNzYWdlID0gJ1RoZSBjb25uZWN0aW9uIGlzIGVycm9uZW91czsgY2hlY2sgaWYgYWxsIHJlcXVpcmVkICcgK1xuICAgICAgICAgICAgICAgICAgICAgICdzZXR0aW5ncyBoYXZlIGJlZW4gaW5qZWN0ZWQgdXNpbmcgdGhlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICdgdXBkYXRlU2V0dGluZ3MoKWAgZnVuY3Rpb24uIElmIHRoZSBwcm9ibGVtIHBlcnNpc3RzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICdwbGVhc2UgcG9zdCBhIGlzc3VlIG9uIG91ciBHaXRIdWIgcmVwb3NpdG9yeS4nO1xuICAgICAgcmVqZWN0KG1lc3NhZ2UpO1xuICAgIH07XG5cbiAgICAvLyBDb25uZWN0aW9uIGdvdCBlc3RhYmxpc2hlZDsgbGV0cyB1cyBpdC5cbiAgICBiYWhuLm9ub3BlbiA9ICgpID0+IHtcbiAgICAgIGxvZygnU3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkIGEgd2Vic29ja2V0IGNvbm5lY3Rpb24uJyk7XG4gICAgICAvLyBSZW1vdmUgdGhlIGBvbmNsb3NlYCBoYW5kbGVyIGFzIGl0IGlzIG5vIGxvbmdlciBvZiBpbnRlcmVzdCB0byB1cy5cbiAgICAgIGRlbGV0ZSBiYWhuLm9uY2xvc2U7XG4gICAgICByZXNvbHZlKGJhaG4pO1xuICAgIH07XG5cbiAgICBiYWhuLm9wZW4oKTtcbiAgfSk7XG5cbiAgLy8gUmV0dXJuIHRoZSBwcm9taXNlIHRvIG1ha2UgaXQgdGhpcyBmdW5jdGlvbiBjaGFpbmFibGUuIEluIGNhc2UgdGhlXG4gIC8vIGBidW5kZXNhdXRvYmFobmAgaXMgcmVqZWN0ZWQ7IHJlbW92ZSB0aGUgcmVmZXJlbmNlIHNvIHdlIGNhbiB1c2Ugc2ltcGxlXG4gIC8vIGZhbHN5IGNoZWNrcyB0byBkZXRlbWluZSBpZiB0aGVyZSBpcyBhIGNvbm5lY3Rpb24uXG4gIHJldHVybiBidW5kZXNhdXRvYmFobi5jYXRjaChyZWFzb24gPT4ge1xuICAgIGJ1bmRlc2F1dG9iYWhuID0gbnVsbDtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59XG5cblxuLyoqXG4gKiBPcGVuIGEgbmV3IHdlYnNvY2tldCBjb25uZWN0aW9uLlxuICpcbiAqIFRoZXJlIHRoZXJlIGN1cnJlbnRseSBpcyBhIG9wZW4gY29ubmVjdGlvbiwgY2xvc2UgaXQgYW5kIG9wZW4gYSBuZXdcbiAqIGNvbm5lY3Rpb24uXG4gKlxuICogQHJldHVybnMge1Byb21pc2UuPHN0cmluZz59IC0gQSByZXNvbHZlZCBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdoZW4gdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uIHdhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhbmQgb3BlbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb3BlbldlYnNvY2tldENvbm5lY3Rpb24oKSB7XG4gIHJldHVybiBjbG9zZVdlYnNvY2tldENvbm5lY3Rpb24oKVxuICAgIC50aGVuKCgpID0+IGVzdGFibGlzaE5ld0J1bmRlc2JhaG4oKSlcbiAgICAvLyBgYnVuZGVzYXV0b2JhaG5gIGFjdHVhbGx5IHJlc29sdmVkIHdpdGggdGhlIGBhdXRvYmFobi5Db25uZWN0aW9uYFxuICAgIC8vIG9iamVjdC4gVGhpcyBpcyBvbmx5IG1lYW50IGZvciBpbnRlcm5hbCB1c2FnZSBhbmQgdGhlcmVmb3JlIHNob3VsZCBub3RcbiAgICAvLyBiZSBleHBvc2VkIHRvIHRoZSB1c2VycyBvZiB0aGUgU0RLLlxuICAgIC50aGVuKCgpID0+ICdTdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgYSB3ZWJzb2NrZXQgY29ubmVjdGlvbi4nKTtcbn1cblxuXG4vKipcbiAqIEdldCB0aGUgY3VycmVudCB3ZWJzb2NrZXQgY29ubmVjdGlvbiwgb3Igb3BlbiBhIG5ldyBvbmUuXG4gKlxuICogSWYgdGhlcmUgaXMgbm8gY3VycmVudCBjb25uZWN0aW9uLCBvcGVuIG9uZSBhbmQgcmV0dXJuIHRoYXQgaW4gc3RlYWQuXG4gKlxuICogQHJldHVybnMge1Byb21pc2UuPGF1dG9iYWhuLkNvbm5lY3Rpb24+fSAtIFRoZSBjdXJyZW50IHdlYnNvY2tldCBjb25uZWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2Vic29ja2V0Q29ubmVjdGlvbigpIHtcbiAgaWYgKCFidW5kZXNhdXRvYmFobikge1xuICAgIHJldHVybiBlc3RhYmxpc2hOZXdCdW5kZXNiYWhuKCk7XG4gIH1cblxuICByZXR1cm4gYnVuZGVzYXV0b2JhaG47XG59XG5cblxuLyoqXG4gKiBDbG9zZSB0aGUgY3VycmVudCB3ZWJzb2NrZXQgY29ubmVjdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48c3RyaW5nPn0gLSBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIGFzIHNvb24gYXMgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uIHdhcyBzdWNjZXNzZnVsbHkgY2xvc2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VXZWJzb2NrZXRDb25uZWN0aW9uKCkge1xuICBpZiAoIWJ1bmRlc2F1dG9iYWhuKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnVGhlcmUgaXMgbm8gd2Vic29ja2V0IGNvbm5lY3Rpb24gdG8gY2xvc2UuJyk7XG4gIH1cblxuICByZXR1cm4gYnVuZGVzYXV0b2JhaG5cbiAgICAudGhlbihiYWhuID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGJhaG4uY2xvc2UoKTtcbiAgICAgICAgYnVuZGVzYXV0b2JhaG4gPSBudWxsO1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gJ1RoZSB3ZWJzb2NrZXQgY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQgc3VjY2Vzc2Z1bGx5Lic7XG4gICAgICAgIGxvZyhtZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICB9IGNhdGNoIChyZWFzb24pIHtcbiAgICAgICAgLy8gYGF1dG9iYWhuLkNvbm5lY3Rpb24uY2xvc2UoKWAgdGhyb3dzIGEgc3RyaW5nIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXNcbiAgICAgICAgLy8gYWxyZWFkeSBjbG9zZWQuIFRoZSBjb25uZWN0aW9uIGlzIG5vdCBleHBvc2VkIGFuZCB0aGVyZWZvcmUgY2Fubm90IGJlXG4gICAgICAgIC8vIGNsb3NlZCBieSBhbnlvbmUgdXNpbmcgdGhlIFNESy4gUmVnYXJkbGVzcywgd2hlbiBpdCBoYXBwZW5zIGp1c3RcbiAgICAgICAgLy8gcmV0dXJuIGEgcmVzb2x2ZWQgcHJvbWlzZS5cbiAgICAgICAgYnVuZGVzYXV0b2JhaG4gPSBudWxsO1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gJ1RoZSB3ZWJzb2NrZXQgY29ubmVjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIGNsb3NlZC4nO1xuICAgICAgICBlcnJvcihtZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICB9XG4gICAgfSk7XG59XG5cblxuLyoqXG4gKiBNYWtlIGEgcnBjIGNhbGwgdG8gdGhlIElUU0xhbmd1YWdlIHdlYnNvY2tldCBzZXJ2ZXIuXG4gKlxuICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gZXN0YWJsaXNoIGEgd2Vic29ja2V0IGNvbm5lY3Rpb24gaWYgdGhlcmUgaXNuJ3Qgb25lXG4gKiBhbHJlYWR5LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBycGMgLSBUaGUgUlBDIHRvIG1ha2UuIFRoaXMgYmUgcHJlcGVuZGVkIGJ5IGBubC5pdHNsYW5ndWFnZWBcbiAqICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGUgd2Vic29ja2V0IHNlcnZlciBvbmx5IGhhbmRsZXMgd2Vic29ja2V0IGNhbGxzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgUlBDIHN0YXJ0cyB3aXRoIHRoYXQgcHJlZml4LlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIERlc3RydWN0dXJlZCBvYmplY3Qgd2l0aCBvcHRpb25zIHRvIHBhc3MgdG8gdGhlIHdlYnNvY2tldCBzZXJ2ZXIuXG4gKiBAcGFyYW0ge0FycmF5fSBbb3B0aW9ucy5hcmdzXSAtIEFuIGFycmF5IHdpdGggYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIFJQQy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5rd2FyZ3NdIC0gQW4gb2JqZWN0IChkaWN0aW9uYXJ5KSB3aXRoIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBSUEMuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnMub3B0aW9uc10gLSBUaGUgb3B0aW9ucyB0byBwYXNzIHRvIHRoZSBSUEMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5wcm9ncmVzc0NiXSAtIE9wdGlvbmFsIGNhbGxiYWNrIHRvIHJlY2VpdmUgcHJvZ3Jlc3NlZCByZXN1bHRzLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlLjwqPn0gLSBUaGUgcmVzcG9uc2Ugb2YgdGhlIHdlYnNvY2tldCBjYWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVdlYnNvY2tldENhbGwocnBjLCB7YXJncyA9IFtdLCBrd2FyZ3MgPSB7fSwgb3B0aW9ucywgcHJvZ3Jlc3NDYn0gPSB7fSkge1xuICBsZXQgbWVyZ2VkT3B0aW9ucyA9IG9wdGlvbnM7XG4gIGlmIChwcm9ncmVzc0NiKSB7XG4gICAgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICByZWNlaXZlX3Byb2dyZXNzOiB0cnVlIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY2FtZWxjYXNlXG4gICAgfTtcbiAgfVxuICByZXR1cm4gZ2V0V2Vic29ja2V0Q29ubmVjdGlvbigpXG4gICAgLnRoZW4oY29ubmVjdGlvbiA9PlxuICAgICAgY29ubmVjdGlvbi5zZXNzaW9uLmNhbGwoYG5sLml0c2xhbmd1YWdlLiR7cnBjfWAsIGFyZ3MsIGt3YXJncywgbWVyZ2VkT3B0aW9ucylcbiAgICAgICAgLnByb2dyZXNzKHByb2dyZXNzQ2IpXG4gICAgKVxuICAgIC5jYXRjaChyZXN1bHQgPT4ge1xuICAgICAgY29uc3Qge2Vycm9yOiB3c3NFcnJvciwga3dhcmdzOiB3c3NLd2FyZ3MsIGFyZ3M6IHdzc0FyZ3N9ID0gcmVzdWx0O1xuXG4gICAgICAvLyBMb2cgdGhlIGVycm9yIHRvIHN0ZGVyclxuICAgICAgZXJyb3IocmVzdWx0KTtcblxuICAgICAgLy8gUmV0dXJuIGEgc2xpZ2h0bHkgc2ltcGxpc3RpYyB2ZXJzaW9uIG9mIHRoZSBlcnJvciB0aGF0IG9jY3VycmVkXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoe1xuICAgICAgICBlcnJvcjogd3NzRXJyb3IsXG4gICAgICAgIC4uLndzc0t3YXJncyxcbiAgICAgICAgYXJnczogWy4uLndzc0FyZ3NdXG4gICAgICB9KTtcbiAgICB9KTtcbn1cbiJdfQ== |
'use strict'; | ||
exports.__esModule = true; | ||
exports.registerAudioStream = undefined; | ||
/* | ||
* next to sending audo as encoded chunks, we can also prepare a rpc | ||
* that'll fetch the result for us. | ||
* Below is an example of how this could look like. | ||
* Remember to import getWebsocket and authobahn for this to work! | ||
*/ | ||
var registerAudioStream = exports.registerAudioStream = function () { | ||
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(recorder, rpcName) { | ||
var rpc, rpcRegistration, asyncChucks; | ||
return regeneratorRuntime.wrap(function _callee$(_context) { | ||
while (1) { | ||
switch (_context.prev = _context.next) { | ||
case 0: | ||
asyncChucks = function asyncChucks(args, kwargs, details) { | ||
// eslint-disable-next-line new-cap | ||
var defer = new _autobahn2.default.when.defer(); | ||
if (details.progress) { | ||
recorder.addEventListener('dataavailable', function (chuck) { | ||
var dataToSend = Array.from(new Uint8Array(chuck)); | ||
details.progress([dataToSend]); | ||
}); | ||
recorder.addEventListener('recorded', function () { | ||
defer.resolve('Done with streaming you basterd'); | ||
if (rpcRegistration) { | ||
console.log('yeash!'); | ||
(0, _websocket.getWebsocketConnection)().then(function (connection) { | ||
return connection.session.unregister(rpcRegistration).then(function () { | ||
console.log('succesfully un-registered'); | ||
}); | ||
}); | ||
} | ||
}); | ||
} | ||
return defer.promise; | ||
}; | ||
rpc = 'nl.itslanguage.' + rpcName; | ||
rpcRegistration = null; | ||
return _context.abrupt('return', (0, _websocket.getWebsocketConnection)().then(function (connection) { | ||
return connection.session.register(rpc, asyncChucks).then(function (registration) { | ||
rpcRegistration = registration; | ||
return registration; | ||
}); | ||
})); | ||
case 4: | ||
case 'end': | ||
return _context.stop(); | ||
} | ||
} | ||
}, _callee, this); | ||
})); | ||
return function registerAudioStream(_x, _x2) { | ||
return _ref.apply(this, arguments); | ||
}; | ||
}(); | ||
/** | ||
* Send the recorder settings to the websocket server to initialize it. | ||
* | ||
* The reserved ID (passed in the parameters) is returned once the promise is | ||
* resolved. | ||
* | ||
* @param {string} id - The reserved ID for the audio. | ||
* @param {MediaRecorder|Recorder} recorder - The recorder which has been set up to | ||
* record. | ||
* @param {string} rpc - The RPC to use to initialize the websocket server. | ||
* | ||
* @emits {websocketserverreadyforaudio} - When the websocket server has been | ||
* prepared for and is ready to receive | ||
* the audio. | ||
* | ||
* @returns {Promise} - The promise which resolves when the websocket server | ||
* is ready for the audio. | ||
*/ | ||
exports.encodeAndSendAudioOnDataAvailible = encodeAndSendAudioOnDataAvailible; | ||
@@ -8,2 +91,6 @@ exports.prepareServerForAudio = prepareServerForAudio; | ||
var _autobahn = require('autobahn'); | ||
var _autobahn2 = _interopRequireDefault(_autobahn); | ||
var _broadcaster = require('../broadcaster'); | ||
@@ -19,2 +106,6 @@ | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /** | ||
* This file contains some re-usable parts for websocket audio communication. | ||
*/ | ||
/** | ||
@@ -38,57 +129,3 @@ * Encode the audio as base64 and send it to the websocket server. | ||
}); | ||
} | ||
/* | ||
* next to sending audo as encoded chunks, we can also prepare a rpc | ||
* that'll fetch the result for us. | ||
* Below is an example of how this could look like. | ||
* Remember to import getWebsocket and authobahn for this to work! | ||
* | ||
* export function registerAudioStream(recorder, rpcName) { | ||
* const rpc = `nl.itslanguage.${rpcName}`; | ||
* | ||
* const sendSomeChucks = () => { | ||
* const defer = new autobahn.when.defer(); | ||
* | ||
* recorder.addEventListener('dataavailable', chuck => { | ||
* console.log(chuck); | ||
* defer.notify(chuck); | ||
* }); | ||
* | ||
* recorder.addEventListener('recorded', () => { | ||
* defer.resolve('stream ended'); | ||
* }); | ||
* | ||
* return defer.promise; | ||
* }; | ||
* | ||
* return getWebsocketConnection().then(connection => | ||
* connection.session.register(rpc, sendSomeChucks) | ||
* ); | ||
* } | ||
*/ | ||
/** | ||
* Send the recorder settings to the websocket server to initialize it. | ||
* | ||
* The reserved ID (passed in the parameters) is returned once the promise is | ||
* resolved. | ||
* | ||
* @param {string} id - The reserved ID for the audio. | ||
* @param {MediaRecorder|Recorder} recorder - The recorder which has been set up to | ||
* record. | ||
* @param {string} rpc - The RPC to use to initialize the websocket server. | ||
* | ||
* @emits {websocketserverreadyforaudio} - When the websocket server has been | ||
* prepared for and is ready to receive | ||
* the audio. | ||
* | ||
* @returns {Promise} - The promise which resolves when the websocket server | ||
* is ready for the audio. | ||
*/ | ||
/** | ||
* This file contains some re-usable parts for websocket audio communication. | ||
*/ | ||
function prepareServerForAudio(id, recorder, rpc) { | ||
}function prepareServerForAudio(id, recorder, rpc) { | ||
var _recorder$getAudioSpe = recorder.getAudioSpecs(), | ||
@@ -131,2 +168,2 @@ audioFormat = _recorder$getAudioSpe.audioFormat, | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdXRpbHMvYXVkaW8tb3Zlci1zb2NrZXQuanMiXSwibmFtZXMiOlsiZW5jb2RlQW5kU2VuZEF1ZGlvT25EYXRhQXZhaWxpYmxlIiwicHJlcGFyZVNlcnZlckZvckF1ZGlvIiwid2FpdEZvclVzZXJNZWRpYUFwcHJvdmFsIiwiaWQiLCJyZWNvcmRlciIsInJwYyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYWRkRXZlbnRMaXN0ZW5lciIsImVuY29kZWQiLCJjaHVuayIsImFyZ3MiLCJ0aGVuIiwiZ2V0QXVkaW9TcGVjcyIsImF1ZGlvRm9ybWF0IiwiYXVkaW9QYXJhbWV0ZXJzIiwia3dhcmdzIiwiZW1pdCIsImhhc1VzZXJNZWRpYUFwcHJvdmFsIl0sIm1hcHBpbmdzIjoiOzs7UUFrQmdCQSxpQyxHQUFBQSxpQztRQTREQUMscUIsR0FBQUEscUI7UUF3QkFDLHdCLEdBQUFBLHdCOztBQWxHaEI7Ozs7QUFDQTs7QUFDQTs7OztBQUdBOzs7Ozs7Ozs7QUFTTyxTQUFTRixpQ0FBVCxDQUEyQ0csRUFBM0MsRUFBK0NDLFFBQS9DLEVBQXlEQyxHQUF6RCxFQUE4RDtBQUNuRSxTQUFPLElBQUlDLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDdEM7QUFDQTtBQUNBSixhQUFTSyxnQkFBVCxDQUEwQixlQUExQixFQUEyQyxpQkFBUztBQUNsRCxVQUFNQyxVQUFVLHlCQUFhQyxLQUFiLENBQWhCO0FBQ0Esd0NBQWtCTixHQUFsQixFQUF1QixFQUFDTyxNQUFNLENBQUNULEVBQUQsRUFBS08sT0FBTCxFQUFjLFFBQWQsQ0FBUCxFQUF2QixFQUNHRyxJQURILENBQ1FOLE9BRFIsRUFDaUJDLE1BRGpCO0FBRUQsS0FKRDtBQUtELEdBUk0sQ0FBUDtBQVNEOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4QkE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTVEQTs7OztBQThFTyxTQUFTUCxxQkFBVCxDQUErQkUsRUFBL0IsRUFBbUNDLFFBQW5DLEVBQTZDQyxHQUE3QyxFQUFrRDtBQUFBLDhCQUNoQkQsU0FBU1UsYUFBVCxFQURnQjtBQUFBLE1BQ2hEQyxXQURnRCx5QkFDaERBLFdBRGdEO0FBQUEsTUFDbkNDLGVBRG1DLHlCQUNuQ0EsZUFEbUM7O0FBRXZELFNBQU8sa0NBQWtCWCxHQUFsQixFQUF1QixFQUFDTyxNQUFNLENBQUNULEVBQUQsRUFBS1ksV0FBTCxDQUFQLEVBQTBCRSxRQUFRRCxlQUFsQyxFQUF2QixFQUNKSCxJQURJLENBQ0MsWUFBTTtBQUNWO0FBQ0E7QUFDQSwwQkFBWUssSUFBWixDQUFpQiw4QkFBakI7QUFDQSxXQUFPZixFQUFQO0FBQ0QsR0FOSSxDQUFQO0FBT0Q7O0FBR0Q7Ozs7Ozs7Ozs7OztBQVlPLFNBQVNELHdCQUFULENBQWtDQyxFQUFsQyxFQUFzQ0MsUUFBdEMsRUFBZ0Q7QUFDckQsU0FBTyxJQUFJRSxPQUFKLENBQVksbUJBQVc7QUFDNUI7QUFDQTtBQUNBLFFBQUlGLFNBQVNlLG9CQUFULEVBQUosRUFBcUM7QUFDbkNaO0FBQ0QsS0FGRCxNQUVPO0FBQ0xILGVBQVNLLGdCQUFULENBQTBCLE9BQTFCLEVBQW1DRixPQUFuQztBQUNEO0FBQ0YsR0FSTSxFQVFKTSxJQVJJLENBUUM7QUFBQSxXQUFNVixFQUFOO0FBQUEsR0FSRCxDQUFQO0FBU0QiLCJmaWxlIjoiYXVkaW8tb3Zlci1zb2NrZXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZmlsZSBjb250YWlucyBzb21lIHJlLXVzYWJsZSBwYXJ0cyBmb3Igd2Vic29ja2V0IGF1ZGlvIGNvbW11bmljYXRpb24uXG4gKi9cblxuaW1wb3J0IGJyb2FkY2FzdGVyIGZyb20gJy4uL2Jyb2FkY2FzdGVyJztcbmltcG9ydCB7ZGF0YVRvQmFzZTY0fSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7bWFrZVdlYnNvY2tldENhbGx9IGZyb20gJy4uL2NvbW11bmljYXRpb24vd2Vic29ja2V0JztcblxuXG4vKipcbiAqIEVuY29kZSB0aGUgYXVkaW8gYXMgYmFzZTY0IGFuZCBzZW5kIGl0IHRvIHRoZSB3ZWJzb2NrZXQgc2VydmVyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIFRoZSByZXNlcnZlZCBJRCBmb3IgdGhlIGF1ZGlvLlxuICogQHBhcmFtIHtNZWRpYVJlY29yZGVyfFJlY29yZGVyfSByZWNvcmRlciAtIFRoZSByZWNvcmRlciB0byB1c2UgdG8gZ2V0IHRoZSByZWNvcmRpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gcnBjIC0gVGhlIFJQQyB0byB1c2UgdG8gc3RvcmUgdGhlIGRhdGEuXG4gKlxuICogQHJldHVybnMge1Byb21pc2UuPCo+fSAtIFRoZSByZXNwb25zZSBvZiB0aGUgZ2l2ZW4gUlBDLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlQW5kU2VuZEF1ZGlvT25EYXRhQXZhaWxpYmxlKGlkLCByZWNvcmRlciwgcnBjKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLy8gV2hlbiB0aGUgYXVkaW8gaXMgZG9uZSByZWNvcmRpbmc6IGVuY29kZSB0aGUgZGF0YSwgc2VuZCBpdCB0byB0aGVcbiAgICAvLyB3ZWJzb2NrZXQgc2VydmVyIGFuZCBjb250aW51ZSB3aXRoIHRoZSBjaGFpbi5cbiAgICByZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdkYXRhYXZhaWxhYmxlJywgY2h1bmsgPT4ge1xuICAgICAgY29uc3QgZW5jb2RlZCA9IGRhdGFUb0Jhc2U2NChjaHVuayk7XG4gICAgICBtYWtlV2Vic29ja2V0Q2FsbChycGMsIHthcmdzOiBbaWQsIGVuY29kZWQsICdiYXNlNjQnXX0pXG4gICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKlxuICogbmV4dCB0byBzZW5kaW5nIGF1ZG8gYXMgZW5jb2RlZCBjaHVua3MsIHdlIGNhbiBhbHNvIHByZXBhcmUgYSBycGNcbiAqIHRoYXQnbGwgZmV0Y2ggdGhlIHJlc3VsdCBmb3IgdXMuXG4gKiBCZWxvdyBpcyBhbiBleGFtcGxlIG9mIGhvdyB0aGlzIGNvdWxkIGxvb2sgbGlrZS5cbiAqIFJlbWVtYmVyIHRvIGltcG9ydCBnZXRXZWJzb2NrZXQgYW5kIGF1dGhvYmFobiBmb3IgdGhpcyB0byB3b3JrIVxuICpcbiAqIGV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckF1ZGlvU3RyZWFtKHJlY29yZGVyLCBycGNOYW1lKSB7XG4gKiAgIGNvbnN0IHJwYyA9IGBubC5pdHNsYW5ndWFnZS4ke3JwY05hbWV9YDtcbiAqXG4gKiAgIGNvbnN0IHNlbmRTb21lQ2h1Y2tzID0gKCkgPT4ge1xuICogICAgIGNvbnN0IGRlZmVyID0gbmV3IGF1dG9iYWhuLndoZW4uZGVmZXIoKTtcbiAqXG4gKiAgICAgcmVjb3JkZXIuYWRkRXZlbnRMaXN0ZW5lcignZGF0YWF2YWlsYWJsZScsIGNodWNrID0+IHtcbiAqICAgICAgIGNvbnNvbGUubG9nKGNodWNrKTtcbiAqICAgICAgIGRlZmVyLm5vdGlmeShjaHVjayk7XG4gKiAgICAgfSk7XG4gKlxuICogICAgIHJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3JlY29yZGVkJywgKCkgPT4ge1xuICogICAgICAgZGVmZXIucmVzb2x2ZSgnc3RyZWFtIGVuZGVkJyk7XG4gKiAgICAgfSk7XG4gKlxuICogICAgIHJldHVybiBkZWZlci5wcm9taXNlO1xuICogICB9O1xuICpcbiAqICAgcmV0dXJuIGdldFdlYnNvY2tldENvbm5lY3Rpb24oKS50aGVuKGNvbm5lY3Rpb24gPT5cbiAqICAgICBjb25uZWN0aW9uLnNlc3Npb24ucmVnaXN0ZXIocnBjLCBzZW5kU29tZUNodWNrcylcbiAqICAgKTtcbiAqIH1cbiAqL1xuXG4vKipcbiAqIFNlbmQgdGhlIHJlY29yZGVyIHNldHRpbmdzIHRvIHRoZSB3ZWJzb2NrZXQgc2VydmVyIHRvIGluaXRpYWxpemUgaXQuXG4gKlxuICogVGhlIHJlc2VydmVkIElEIChwYXNzZWQgaW4gdGhlIHBhcmFtZXRlcnMpIGlzIHJldHVybmVkIG9uY2UgdGhlIHByb21pc2UgaXNcbiAqIHJlc29sdmVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIFRoZSByZXNlcnZlZCBJRCBmb3IgdGhlIGF1ZGlvLlxuICogQHBhcmFtIHtNZWRpYVJlY29yZGVyfFJlY29yZGVyfSByZWNvcmRlciAtIFRoZSByZWNvcmRlciB3aGljaCBoYXMgYmVlbiBzZXQgdXAgdG9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuXG4gKiBAcGFyYW0ge3N0cmluZ30gcnBjIC0gVGhlIFJQQyB0byB1c2UgdG8gaW5pdGlhbGl6ZSB0aGUgd2Vic29ja2V0IHNlcnZlci5cbiAqXG4gKiBAZW1pdHMge3dlYnNvY2tldHNlcnZlcnJlYWR5Zm9yYXVkaW99IC0gV2hlbiB0aGUgd2Vic29ja2V0IHNlcnZlciBoYXMgYmVlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVkIGZvciBhbmQgaXMgcmVhZHkgdG8gcmVjZWl2ZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhdWRpby5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gLSBUaGUgcHJvbWlzZSB3aGljaCByZXNvbHZlcyB3aGVuIHRoZSB3ZWJzb2NrZXQgc2VydmVyXG4gKiAgICAgICAgICAgICAgICAgICAgICBpcyByZWFkeSBmb3IgdGhlIGF1ZGlvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVNlcnZlckZvckF1ZGlvKGlkLCByZWNvcmRlciwgcnBjKSB7XG4gIGNvbnN0IHthdWRpb0Zvcm1hdCwgYXVkaW9QYXJhbWV0ZXJzfSA9IHJlY29yZGVyLmdldEF1ZGlvU3BlY3MoKTtcbiAgcmV0dXJuIG1ha2VXZWJzb2NrZXRDYWxsKHJwYywge2FyZ3M6IFtpZCwgYXVkaW9Gb3JtYXRdLCBrd2FyZ3M6IGF1ZGlvUGFyYW1ldGVyc30pXG4gICAgLnRoZW4oKCkgPT4ge1xuICAgICAgLy8gV2UndmUgcHJlcGVkIHRoZSB3ZWJzb2NrZXQgc2VydmVyLCBub3cgaXQgY2FuIHJlY2VpdmUgYXVkaW8uIEJyb2FkY2FzdFxuICAgICAgLy8gdGhhdCBpdCBpcyBhbGxvd2VkIHRvIHJlY29yZC5cbiAgICAgIGJyb2FkY2FzdGVyLmVtaXQoJ3dlYnNvY2tldHNlcnZlcnJlYWR5Zm9yYXVkaW8nKTtcbiAgICAgIHJldHVybiBpZDtcbiAgICB9KTtcbn1cblxuXG4vKipcbiAqIFdhaXQgZm9yIHRoZSByZWNvcmRlciB0byBnZXQgdGhlIHBlcm1pc3Npb24gZm9yIHVzZXIgbWVkaWEuXG4gKlxuICogVGhlIHJlc2VydmVkIElEIChwYXNzZWQgaW4gdGhlIHBhcmFtZXRlcnMpIGlzIHJldHVybmVkIG9uY2UgdGhlIHByb21pc2UgaXNcbiAqIHJlc29sdmVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIFRoZSByZXNlcnZlZCBJRCBmb3IgdGhlIGF1ZGlvLlxuICogQHBhcmFtIHtNZWRpYVJlY29yZGVyfSByZWNvcmRlciAtIFRoZSByZWNvcmRlciBmb3Igd2hpY2ggdG8gd2FpdC5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gLSBUaGUgcHJvbWlzZSB3aGljaCByZXNvbHZlcyBpZiB0aGUgdXNlciBoYXMgYWxsb3dlZCB1c1xuICogICAgICAgICAgICAgICAgICAgICAgdG8gcmVjb3JkIHRoZW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0Rm9yVXNlck1lZGlhQXBwcm92YWwoaWQsIHJlY29yZGVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAvLyBXZSBuZWVkIHRoZSB1c2VyJ3MgcGVybWlzc2lvbiBpbiBvcmRlciB0byByZWNvcmQgdGhlIGF1ZGlvLiBXYWl0IGZvclxuICAgIC8vIGl0IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeS5cbiAgICBpZiAocmVjb3JkZXIuaGFzVXNlck1lZGlhQXBwcm92YWwoKSkge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdyZWFkeScsIHJlc29sdmUpO1xuICAgIH1cbiAgfSkudGhlbigoKSA9PiBpZCk7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdXRpbHMvYXVkaW8tb3Zlci1zb2NrZXQuanMiXSwibmFtZXMiOlsicmVjb3JkZXIiLCJycGNOYW1lIiwiYXN5bmNDaHVja3MiLCJhcmdzIiwia3dhcmdzIiwiZGV0YWlscyIsImRlZmVyIiwid2hlbiIsInByb2dyZXNzIiwiYWRkRXZlbnRMaXN0ZW5lciIsImRhdGFUb1NlbmQiLCJBcnJheSIsImZyb20iLCJVaW50OEFycmF5IiwiY2h1Y2siLCJyZXNvbHZlIiwicnBjUmVnaXN0cmF0aW9uIiwiY29uc29sZSIsImxvZyIsInRoZW4iLCJjb25uZWN0aW9uIiwic2Vzc2lvbiIsInVucmVnaXN0ZXIiLCJwcm9taXNlIiwicnBjIiwicmVnaXN0ZXIiLCJyZWdpc3RyYXRpb24iLCJyZWdpc3RlckF1ZGlvU3RyZWFtIiwiZW5jb2RlQW5kU2VuZEF1ZGlvT25EYXRhQXZhaWxpYmxlIiwicHJlcGFyZVNlcnZlckZvckF1ZGlvIiwid2FpdEZvclVzZXJNZWRpYUFwcHJvdmFsIiwiaWQiLCJQcm9taXNlIiwicmVqZWN0IiwiZW5jb2RlZCIsImNodW5rIiwiZ2V0QXVkaW9TcGVjcyIsImF1ZGlvRm9ybWF0IiwiYXVkaW9QYXJhbWV0ZXJzIiwiZW1pdCIsImhhc1VzZXJNZWRpYUFwcHJvdmFsIl0sIm1hcHBpbmdzIjoiOzs7OztBQStCQTs7Ozs7OztxRUFNTyxpQkFBbUNBLFFBQW5DLEVBQTZDQyxPQUE3QztBQUFBLDhCQUlJQyxXQUpKO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJSUEsdUJBSkosWUFJSUEsV0FKSixDQUlnQkMsSUFKaEIsRUFJc0JDLE1BSnRCLEVBSThCQyxPQUo5QixFQUl1QztBQUMxQztBQUNBLGtCQUFNQyxRQUFRLElBQUksbUJBQVNDLElBQVQsQ0FBY0QsS0FBbEIsRUFBZDs7QUFFQSxrQkFBSUQsUUFBUUcsUUFBWixFQUFzQjtBQUNwQlIseUJBQVNTLGdCQUFULENBQTBCLGVBQTFCLEVBQTJDLGlCQUFTO0FBQ2xELHNC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QUExQixFQUFtQ00sT0FBbkM7QUFDRDtBQUNGLEdBUk0sRUFRSkksSUFSSSxDQVFDO0FBQUEsV0FBTVksRUFBTjtBQUFBLEdBUkQsQ0FBUDtBQVNEIiwiZmlsZSI6ImF1ZGlvLW92ZXItc29ja2V0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgc29tZSByZS11c2FibGUgcGFydHMgZm9yIHdlYnNvY2tldCBhdWRpbyBjb21tdW5pY2F0aW9uLlxuICovXG5cbmltcG9ydCBhdXRvYmFobiBmcm9tICdhdXRvYmFobic7XG5pbXBvcnQgYnJvYWRjYXN0ZXIgZnJvbSAnLi4vYnJvYWRjYXN0ZXInO1xuaW1wb3J0IHtkYXRhVG9CYXNlNjR9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHtnZXRXZWJzb2NrZXRDb25uZWN0aW9uLCBtYWtlV2Vic29ja2V0Q2FsbH0gZnJvbSAnLi4vY29tbXVuaWNhdGlvbi93ZWJzb2NrZXQnO1xuXG5cbi8qKlxuICogRW5jb2RlIHRoZSBhdWRpbyBhcyBiYXNlNjQgYW5kIHNlbmQgaXQgdG8gdGhlIHdlYnNvY2tldCBzZXJ2ZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVGhlIHJlc2VydmVkIElEIGZvciB0aGUgYXVkaW8uXG4gKiBAcGFyYW0ge01lZGlhUmVjb3JkZXJ8UmVjb3JkZXJ9IHJlY29yZGVyIC0gVGhlIHJlY29yZGVyIHRvIHVzZSB0byBnZXQgdGhlIHJlY29yZGluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBycGMgLSBUaGUgUlBDIHRvIHVzZSB0byBzdG9yZSB0aGUgZGF0YS5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZS48Kj59IC0gVGhlIHJlc3BvbnNlIG9mIHRoZSBnaXZlbiBSUEMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVBbmRTZW5kQXVkaW9PbkRhdGFBdmFpbGlibGUoaWQsIHJlY29yZGVyLCBycGMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyBXaGVuIHRoZSBhdWRpbyBpcyBkb25lIHJlY29yZGluZzogZW5jb2RlIHRoZSBkYXRhLCBzZW5kIGl0IHRvIHRoZVxuICAgIC8vIHdlYnNvY2tldCBzZXJ2ZXIgYW5kIGNvbnRpbnVlIHdpdGggdGhlIGNoYWluLlxuICAgIHJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2RhdGFhdmFpbGFibGUnLCBjaHVuayA9PiB7XG4gICAgICBjb25zdCBlbmNvZGVkID0gZGF0YVRvQmFzZTY0KGNodW5rKTtcbiAgICAgIG1ha2VXZWJzb2NrZXRDYWxsKHJwYywge2FyZ3M6IFtpZCwgZW5jb2RlZCwgJ2Jhc2U2NCddfSlcbiAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qXG4gKiBuZXh0IHRvIHNlbmRpbmcgYXVkbyBhcyBlbmNvZGVkIGNodW5rcywgd2UgY2FuIGFsc28gcHJlcGFyZSBhIHJwY1xuICogdGhhdCdsbCBmZXRjaCB0aGUgcmVzdWx0IGZvciB1cy5cbiAqIEJlbG93IGlzIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgY291bGQgbG9vayBsaWtlLlxuICogUmVtZW1iZXIgdG8gaW1wb3J0IGdldFdlYnNvY2tldCBhbmQgYXV0aG9iYWhuIGZvciB0aGlzIHRvIHdvcmshXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWdpc3RlckF1ZGlvU3RyZWFtKHJlY29yZGVyLCBycGNOYW1lKSB7XG4gIGNvbnN0IHJwYyA9IGBubC5pdHNsYW5ndWFnZS4ke3JwY05hbWV9YDtcbiAgbGV0IHJwY1JlZ2lzdHJhdGlvbiA9IG51bGw7XG5cbiAgZnVuY3Rpb24gYXN5bmNDaHVja3MoYXJncywga3dhcmdzLCBkZXRhaWxzKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICBjb25zdCBkZWZlciA9IG5ldyBhdXRvYmFobi53aGVuLmRlZmVyKCk7XG5cbiAgICBpZiAoZGV0YWlscy5wcm9ncmVzcykge1xuICAgICAgcmVjb3JkZXIuYWRkRXZlbnRMaXN0ZW5lcignZGF0YWF2YWlsYWJsZScsIGNodWNrID0+IHtcbiAgICAgICAgY29uc3QgZGF0YVRvU2VuZCA9IEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoY2h1Y2spKTtcbiAgICAgICAgZGV0YWlscy5wcm9ncmVzcyhbZGF0YVRvU2VuZF0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3JlY29yZGVkJywgKCkgPT4ge1xuICAgICAgICBkZWZlci5yZXNvbHZlKCdEb25lIHdpdGggc3RyZWFtaW5nIHlvdSBiYXN0ZXJkJyk7XG4gICAgICAgIGlmIChycGNSZWdpc3RyYXRpb24pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygneWVhc2ghJyk7XG4gICAgICAgICAgZ2V0V2Vic29ja2V0Q29ubmVjdGlvbigpLnRoZW4oY29ubmVjdGlvbiA9PlxuICAgICAgICAgICAgY29ubmVjdGlvbi5zZXNzaW9uLnVucmVnaXN0ZXIocnBjUmVnaXN0cmF0aW9uKS50aGVuKFxuICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3N1Y2Nlc2Z1bGx5IHVuLXJlZ2lzdGVyZWQnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZlci5wcm9taXNlO1xuICB9XG5cbiAgcmV0dXJuIGdldFdlYnNvY2tldENvbm5lY3Rpb24oKS50aGVuKGNvbm5lY3Rpb24gPT5cbiAgICBjb25uZWN0aW9uLnNlc3Npb24ucmVnaXN0ZXIocnBjLCBhc3luY0NodWNrcykudGhlbihyZWdpc3RyYXRpb24gPT4ge1xuICAgICAgcnBjUmVnaXN0cmF0aW9uID0gcmVnaXN0cmF0aW9uO1xuICAgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbjtcbiAgICB9KVxuICApO1xufVxuXG4vKipcbiAqIFNlbmQgdGhlIHJlY29yZGVyIHNldHRpbmdzIHRvIHRoZSB3ZWJzb2NrZXQgc2VydmVyIHRvIGluaXRpYWxpemUgaXQuXG4gKlxuICogVGhlIHJlc2VydmVkIElEIChwYXNzZWQgaW4gdGhlIHBhcmFtZXRlcnMpIGlzIHJldHVybmVkIG9uY2UgdGhlIHByb21pc2UgaXNcbiAqIHJlc29sdmVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIFRoZSByZXNlcnZlZCBJRCBmb3IgdGhlIGF1ZGlvLlxuICogQHBhcmFtIHtNZWRpYVJlY29yZGVyfFJlY29yZGVyfSByZWNvcmRlciAtIFRoZSByZWNvcmRlciB3aGljaCBoYXMgYmVlbiBzZXQgdXAgdG9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuXG4gKiBAcGFyYW0ge3N0cmluZ30gcnBjIC0gVGhlIFJQQyB0byB1c2UgdG8gaW5pdGlhbGl6ZSB0aGUgd2Vic29ja2V0IHNlcnZlci5cbiAqXG4gKiBAZW1pdHMge3dlYnNvY2tldHNlcnZlcnJlYWR5Zm9yYXVkaW99IC0gV2hlbiB0aGUgd2Vic29ja2V0IHNlcnZlciBoYXMgYmVlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVkIGZvciBhbmQgaXMgcmVhZHkgdG8gcmVjZWl2ZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhdWRpby5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gLSBUaGUgcHJvbWlzZSB3aGljaCByZXNvbHZlcyB3aGVuIHRoZSB3ZWJzb2NrZXQgc2VydmVyXG4gKiAgICAgICAgICAgICAgICAgICAgICBpcyByZWFkeSBmb3IgdGhlIGF1ZGlvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVNlcnZlckZvckF1ZGlvKGlkLCByZWNvcmRlciwgcnBjKSB7XG4gIGNvbnN0IHthdWRpb0Zvcm1hdCwgYXVkaW9QYXJhbWV0ZXJzfSA9IHJlY29yZGVyLmdldEF1ZGlvU3BlY3MoKTtcbiAgcmV0dXJuIG1ha2VXZWJzb2NrZXRDYWxsKHJwYywge2FyZ3M6IFtpZCwgYXVkaW9Gb3JtYXRdLCBrd2FyZ3M6IGF1ZGlvUGFyYW1ldGVyc30pXG4gICAgLnRoZW4oKCkgPT4ge1xuICAgICAgLy8gV2UndmUgcHJlcGVkIHRoZSB3ZWJzb2NrZXQgc2VydmVyLCBub3cgaXQgY2FuIHJlY2VpdmUgYXVkaW8uIEJyb2FkY2FzdFxuICAgICAgLy8gdGhhdCBpdCBpcyBhbGxvd2VkIHRvIHJlY29yZC5cbiAgICAgIGJyb2FkY2FzdGVyLmVtaXQoJ3dlYnNvY2tldHNlcnZlcnJlYWR5Zm9yYXVkaW8nKTtcbiAgICAgIHJldHVybiBpZDtcbiAgICB9KTtcbn1cblxuXG4vKipcbiAqIFdhaXQgZm9yIHRoZSByZWNvcmRlciB0byBnZXQgdGhlIHBlcm1pc3Npb24gZm9yIHVzZXIgbWVkaWEuXG4gKlxuICogVGhlIHJlc2VydmVkIElEIChwYXNzZWQgaW4gdGhlIHBhcmFtZXRlcnMpIGlzIHJldHVybmVkIG9uY2UgdGhlIHByb21pc2UgaXNcbiAqIHJlc29sdmVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIFRoZSByZXNlcnZlZCBJRCBmb3IgdGhlIGF1ZGlvLlxuICogQHBhcmFtIHtNZWRpYVJlY29yZGVyfSByZWNvcmRlciAtIFRoZSByZWNvcmRlciBmb3Igd2hpY2ggdG8gd2FpdC5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gLSBUaGUgcHJvbWlzZSB3aGljaCByZXNvbHZlcyBpZiB0aGUgdXNlciBoYXMgYWxsb3dlZCB1c1xuICogICAgICAgICAgICAgICAgICAgICAgdG8gcmVjb3JkIHRoZW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0Rm9yVXNlck1lZGlhQXBwcm92YWwoaWQsIHJlY29yZGVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAvLyBXZSBuZWVkIHRoZSB1c2VyJ3MgcGVybWlzc2lvbiBpbiBvcmRlciB0byByZWNvcmQgdGhlIGF1ZGlvLiBXYWl0IGZvclxuICAgIC8vIGl0IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeS5cbiAgICBpZiAocmVjb3JkZXIuaGFzVXNlck1lZGlhQXBwcm92YWwoKSkge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdyZWFkeScsIHJlc29sdmUpO1xuICAgIH1cbiAgfSkudGhlbigoKSA9PiBpZCk7XG59XG4iXX0= |
@@ -5,6 +5,2 @@ 'use strict'; | ||
var _mediaRecorder = require('./media-recorder'); | ||
var _mediaRecorder2 = _interopRequireDefault(_mediaRecorder); | ||
var _tools = require('./tools'); | ||
@@ -67,5 +63,26 @@ | ||
this._stopwatch = null; | ||
if (options.audioContext) { | ||
this.audioContext = options.audioContext; | ||
} else { | ||
this.audioContext = this.createAudioContext(); | ||
} | ||
} | ||
/** | ||
* Get the audio context or create one. | ||
* | ||
* @return {AudioContext} The AudioContext created will be returned | ||
*/ | ||
AudioRecorder.prototype.createAudioContext = function createAudioContext() { | ||
if (!window.ItslAudioContext) { | ||
window.AudioContext = window.AudioContext || window.webkitAudioContext; | ||
window.ItslAudioContext = new window.AudioContext(); | ||
} | ||
return window.ItslAudioContext; | ||
}; | ||
/** | ||
* Turn off all event listeners for this recorder. | ||
@@ -140,12 +157,2 @@ */ | ||
AudioRecorder.prototype._recordingCompatibility /* istanbul ignore next */ = function _recordingCompatibility() { | ||
// Detect audio recording capabilities. | ||
// http://caniuse.com/#feat=stream | ||
// https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getUserMedia | ||
// navigator.getUserMedia = navigator.getUserMedia || | ||
// navigator.webkitGetUserMedia || | ||
// navigator.mozGetUserMedia || | ||
// navigator.msGetUserMedia; | ||
// this.canGetUserMedia = Boolean(navigator.getUserMedia); | ||
// console.log('Native deprecated navigator.getUserMedia API capability:', this.canGetUserMedia); | ||
// https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/mediaDevices.getUserMedia | ||
@@ -159,16 +166,2 @@ this.canMediaDevicesGetUserMedia = false; | ||
// Detect MediaStream Recording | ||
// It allows recording audio using the MediaStream from the above | ||
// getUserMedia directly with a native codec better than Wave. | ||
// http://www.w3.org/TR/mediastream-recording/ | ||
// this.canUseMediaRecorder = Boolean(window.MediaRecorder); | ||
// console.log('Native MediaRecorder recording capability:', this.canUseMediaRecorder); | ||
// Web Audio API | ||
// High-level JavaScript API for processing and synthesizing audio | ||
// http://caniuse.com/#feat=audio-api | ||
window.AudioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext; | ||
var canCreateAudioContext = Boolean(window.AudioContext); | ||
console.log('Native Web Audio API (AudioContext) processing capability:', canCreateAudioContext); | ||
if (!this.canGetUserMedia && !this.canMediaDevicesGetUserMedia) { | ||
@@ -197,30 +190,18 @@ throw new Error('Some form of audio recording capability is required'); | ||
AudioRecorder.prototype.requestUserMedia = function requestUserMedia() { | ||
var self = this; | ||
function success(stream) { | ||
console.log('Got getUserMedia stream'); | ||
var _this = this; | ||
// checking audio presence | ||
if (self.canMediaDevicesGetUserMedia) { | ||
if (stream.getAudioTracks().length) { | ||
console.log('Got audio tracks:', stream.getAudioTracks().length); | ||
} | ||
} | ||
var readyForStream = function readyForStream(stream) { | ||
// Modify state of userMediaApproval now access is granted. | ||
self.userMediaApproval = true; | ||
_this.userMediaApproval = true; | ||
var micInputGain = self._startUserMedia(stream); | ||
self.fireEvent('ready', [self.audioContext, micInputGain]); | ||
} | ||
function failure(e) { | ||
console.log(e); | ||
var micInputGain = _this._startUserMedia(stream); | ||
_this.fireEvent('ready', [_this.audioContext, micInputGain]); | ||
}; | ||
var userCanceled = function userCanceled(error) { | ||
console.error(error); | ||
throw new Error('No live audio input available or permitted'); | ||
} | ||
}; | ||
if (this.canMediaDevicesGetUserMedia) { | ||
// Use of promises is required. | ||
navigator.mediaDevices.getUserMedia({ audio: true }).then(success).catch(failure); | ||
} else if (this.canGetUserMedia) { | ||
navigator.getUserMedia({ audio: true }, success, failure); | ||
} | ||
navigator.mediaDevices.getUserMedia({ audio: true }).then(readyForStream).catch(userCanceled); | ||
}; | ||
@@ -237,12 +218,2 @@ | ||
AudioRecorder.prototype._startUserMedia = function _startUserMedia(stream) { | ||
if (!this.audioContext) { | ||
// Initialize the context once, and only when getUserMedia was | ||
// successful. | ||
this.audioContext = new window.AudioContext(); | ||
} | ||
if (!this.audioContext.createMediaStreamSource) { | ||
throw new Error('AudioContext has no property createMediaStreamSource'); | ||
} | ||
// Creates an audio node from the microphone incoming stream. | ||
@@ -280,19 +251,7 @@ var micInput = this.audioContext.createMediaStreamSource(stream); | ||
AudioRecorder.prototype._getBestRecorder = function _getBestRecorder(micInputGain) { | ||
var recorder = null; | ||
// Start by checking for a MediaRecorder. | ||
// if (this.canUserMediaRecorder && !this._settings.forceWave) { | ||
// // Use the recorder with MediaRecorder implementation. | ||
// recorder = new MediaRecorder(micInputGain); | ||
// } else if (this.canGetUserMedia) { | ||
if (this.canMediaDevicesGetUserMedia) { | ||
// Fall back to raw (WAVE) audio encoding. | ||
var self = this; | ||
recorder = new _webAudioRecorder2.default(micInputGain, function (data) { | ||
self.streamCallback(data); | ||
}, new _wavePacker2.default()); | ||
} else { | ||
throw new Error('Unable to find a proper recorder.'); | ||
} | ||
console.log('Recorder initialised.'); | ||
return recorder; | ||
var _this2 = this; | ||
return new _webAudioRecorder2.default(micInputGain, this.audioContext, function (data) { | ||
_this2.streamCallback(data); | ||
}, new _wavePacker2.default(), false); | ||
}; | ||
@@ -361,2 +320,4 @@ | ||
this.audioContext.resume(); | ||
this._recorder.record(); | ||
@@ -459,2 +420,2 @@ if (this._stopwatch) { | ||
exports.default = AudioRecorder; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby9hdWRpby1yZWNvcmRlci5qcyJdLCJuYW1lcyI6WyJBdWRpb1JlY29yZGVyIiwib3B0aW9ucyIsIl9zZXR0aW5ncyIsIk9iamVjdCIsImFzc2lnbiIsIl9yZWNvcmRpbmdDb21wYXRpYmlsaXR5IiwidXNlck1lZGlhQXBwcm92YWwiLCJfcmVjb3JkZXIiLCJfZW1pdHRlciIsIl9zdG9wd2F0Y2giLCJyZW1vdmVBbGxFdmVudExpc3RlbmVycyIsImFkZEV2ZW50TGlzdGVuZXIiLCJuYW1lIiwiaGFuZGxlciIsIm9uIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9mZiIsImZpcmVFdmVudCIsImFyZ3MiLCJlbWl0IiwiaGFzVXNlck1lZGlhQXBwcm92YWwiLCJjYW5NZWRpYURldmljZXNHZXRVc2VyTWVkaWEiLCJuYXZpZ2F0b3IiLCJtZWRpYURldmljZXMiLCJnZXRVc2VyTWVkaWEiLCJ3ZWJraXRHZXRVc2VyTWVkaWEiLCJtb3pHZXRVc2VyTWVkaWEiLCJCb29sZWFuIiwiY29uc29sZSIsImxvZyIsIndpbmRvdyIsIkF1ZGlvQ29udGV4dCIsIndlYmtpdEF1ZGlvQ29udGV4dCIsIm1vekF1ZGlvQ29udGV4dCIsImNhbkNyZWF0ZUF1ZGlvQ29udGV4dCIsImNhbkdldFVzZXJNZWRpYSIsIkVycm9yIiwiVVJMIiwid2Via2l0VVJMIiwiaGFzV2luZG93VVJMIiwicmVxdWVzdFVzZXJNZWRpYSIsInNlbGYiLCJzdWNjZXNzIiwic3RyZWFtIiwiZ2V0QXVkaW9UcmFja3MiLCJsZW5ndGgiLCJtaWNJbnB1dEdhaW4iLCJfc3RhcnRVc2VyTWVkaWEiLCJhdWRpb0NvbnRleHQiLCJmYWlsdXJlIiwiZSIsImF1ZGlvIiwidGhlbiIsImNhdGNoIiwiY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UiLCJtaWNJbnB1dCIsImNyZWF0ZUdhaW4iLCJjb25uZWN0IiwiX2dldEJlc3RSZWNvcmRlciIsInJlY29yZGVyIiwic3RyZWFtQ2FsbGJhY2siLCJkYXRhIiwiY2h1bmsiLCJfcmVxdWlyZUdldFVzZXJNZWRpYSIsInN0YXJ0UmVjb3JkaW5nU2Vzc2lvbiIsImlkIiwidXVpZF8iLCJ1bmRlZmluZWQiLCJ2NCIsImFjdGl2ZVJlY29yZGluZ0lkIiwicmVjb3JkIiwiY2IiLCJpc1JlY29yZGluZyIsIl92YWx1ZSIsInN0YXJ0Iiwic3RvcCIsImZvcmNlZCIsImdldEVuY29kZWRBdWRpbyIsImJsb2IiLCJ0eXBlIiwidG9nZ2xlUmVjb3JkaW5nIiwiZ2V0QXVkaW9TcGVjcyIsImJpbmRTdG9wd2F0Y2giLCJ0aWNrQ2IiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFFQTs7OztJQUlxQkEsYTtBQUNuQjs7Ozs7O0FBTUEseUJBQVlDLE9BQVosRUFBcUI7QUFBQTs7QUFDbkIsU0FBS0MsU0FBTCxHQUFpQkMsT0FBT0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JILE9BQWxCLENBQWpCOztBQUVBLFNBQUtJLHVCQUFMOztBQUVBLFNBQUtDLGlCQUFMLEdBQXlCLEtBQXpCOztBQUVBOzs7O0FBSUEsU0FBS0MsU0FBTCxHQUFpQixJQUFqQjs7QUFFQSxTQUFLQyxRQUFMLEdBQWdCLDRCQUFHLEVBQUgsQ0FBaEI7O0FBRUEsU0FBS0MsVUFBTCxHQUFrQixJQUFsQjtBQUNEOztBQUVEOzs7OzswQkFHQUMsdUIsc0NBQTBCO0FBQ3hCLDBCQUFPLEtBQUtGLFFBQVo7QUFDRCxHOztBQUVEOzs7Ozs7OzswQkFNQUcsZ0IsNkJBQWlCQyxJLEVBQU1DLE8sRUFBUztBQUM5QixTQUFLTCxRQUFMLENBQWNNLEVBQWQsQ0FBaUJGLElBQWpCLEVBQXVCQyxPQUF2QjtBQUNELEc7O0FBRUQ7Ozs7Ozs7OzBCQU1BRSxtQixnQ0FBb0JILEksRUFBTUMsTyxFQUFTO0FBQ2pDLFNBQUtMLFFBQUwsQ0FBY1EsR0FBZCxDQUFrQkosSUFBbEIsRUFBd0JDLE9BQXhCO0FBQ0QsRzs7QUFFRDs7Ozs7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QWMwRSxNQUFkLENBQWxCO0FBQ0EsV0FBTyxLQUFLMUUsVUFBWjtBQUNELEc7Ozs7O2tCQWhYa0JULGEiLCJmaWxlIjoiYXVkaW8tcmVjb3JkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWVkaWFSZWNvcmRlciBmcm9tICcuL21lZGlhLXJlY29yZGVyJztcbmltcG9ydCBTdG9wd2F0Y2ggZnJvbSAnLi90b29scyc7XG5pbXBvcnQgV2F2ZVBhY2tlciBmcm9tICcuL3dhdmUtcGFja2VyJztcbmltcG9ydCBXZWJBdWRpb1JlY29yZGVyIGZyb20gJy4vd2ViLWF1ZGlvLXJlY29yZGVyJztcbmltcG9ydCBhbGxPZmYgZnJvbSAnZXZlbnQtZW1pdHRlci9hbGwtb2ZmJztcbmltcG9ydCBlZSBmcm9tICdldmVudC1lbWl0dGVyJztcbmltcG9ydCB1dWlkIGZyb20gJ3V1aWQnO1xuXG4vKipcbiAqIEF1ZGlvIHJlY29yZGluZyBjb21wb25lbnQuXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdWRpb1JlY29yZGVyIHtcbiAgLyoqXG4gICAqIElUU0xhbmd1YWdlIEF1ZGlvUmVjb3JkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7P09iamVjdH0gb3B0aW9ucyAtIE92ZXJyaWRlIGFueSBvZiB0aGUgZGVmYXVsdCBzZXR0aW5ncy5cbiAgICpcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICB0aGlzLl9zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5fcmVjb3JkaW5nQ29tcGF0aWJpbGl0eSgpO1xuXG4gICAgdGhpcy51c2VyTWVkaWFBcHByb3ZhbCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAdHlwZSB7V2ViQXVkaW9SZWNvcmRlcnxNZWRpYVJlY29yZGVyfSBUaGUgc3BlY2lmaWMgcmVjb3JkZXIgdHlwZS5cbiAgICAgKi9cbiAgICB0aGlzLl9yZWNvcmRlciA9IG51bGw7XG5cbiAgICB0aGlzLl9lbWl0dGVyID0gZWUoe30pO1xuXG4gICAgdGhpcy5fc3RvcHdhdGNoID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUdXJuIG9mZiBhbGwgZXZlbnQgbGlzdGVuZXJzIGZvciB0aGlzIHJlY29yZGVyLlxuICAgKi9cbiAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgYWxsT2ZmKHRoaXMuX2VtaXR0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBldmVudCBsaXN0ZW5lci4gTGlzdGVucyB0byBldmVudHMgZW1pdHRlZCBmcm9tIHRoZSByZWNvcmRlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEhhbmRsZXIgZnVuY3Rpb24gdG8gYWRkLlxuICAgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKSB7XG4gICAgdGhpcy5fZW1pdHRlci5vbihuYW1lLCBoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZXZlbnQgbGlzdGVuZXIgb2YgdGhlIHJlY29yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gSGFuZGxlciBmdW5jdGlvbiB0byByZW1vdmUuXG4gICAqL1xuICByZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGhhbmRsZXIpIHtcbiAgICB0aGlzLl9lbWl0dGVyLm9mZihuYW1lLCBoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlIGFuIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0ge09iamVjdFtdfSBhcmdzIC0gQXJndW1lbnRzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZmlyZUV2ZW50KG5hbWUsIGFyZ3MgPSBbXSkge1xuICAgIHRoaXMuX2VtaXR0ZXIuZW1pdChuYW1lLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgdXNlciBoYXMgYWxyZWFkeSBnaXZlbiBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgbWljcm9waG9uZS5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdXNlciBoYXMgZ3JhbnRlZCBhY2Nlc3MgdG8gdGhlIG1pY3JvcGhvbmUuIEZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGhhc1VzZXJNZWRpYUFwcHJvdmFsKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJNZWRpYUFwcHJvdmFsIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYnJvd3NlciBjb21wYXRpYmlsaXR5IGZvciBhdWRpbyByZWNvcmRpbmcuXG4gICAqIEluIGNhc2Ugb2YgY29tcGF0aWJpbGl0eSBpc3N1ZXMsIGFuIGVycm9yIGlzIHRocm93bi5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZWNvcmRpbmdDb21wYXRpYmlsaXR5LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8oKSB7XG4gICAgLy8gRGV0ZWN0IGF1ZGlvIHJlY29yZGluZyBjYXBhYmlsaXRpZXMuXG4gICAgLy8gaHR0cDovL2Nhbml1c2UuY29tLyNmZWF0PXN0cmVhbVxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9OYXZpZ2F0b3IuZ2V0VXNlck1lZGlhXG4gICAgLy8gbmF2aWdhdG9yLmdldFVzZXJNZWRpYSA9IG5hdmlnYXRvci5nZXRVc2VyTWVkaWEgfHxcbiAgICAvLyAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgfHxcbiAgICAvLyAgIG5hdmlnYXRvci5tb3pHZXRVc2VyTWVkaWEgfHxcbiAgICAvLyAgIG5hdmlnYXRvci5tc0dldFVzZXJNZWRpYTtcbiAgICAvLyB0aGlzLmNhbkdldFVzZXJNZWRpYSA9IEJvb2xlYW4obmF2aWdhdG9yLmdldFVzZXJNZWRpYSk7XG4gICAgLy8gY29uc29sZS5sb2coJ05hdGl2ZSBkZXByZWNhdGVkIG5hdmlnYXRvci5nZXRVc2VyTWVkaWEgQVBJIGNhcGFiaWxpdHk6JywgdGhpcy5jYW5HZXRVc2VyTWVkaWEpO1xuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL01lZGlhRGV2aWNlcy9tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhXG4gICAgdGhpcy5jYW5NZWRpYURldmljZXNHZXRVc2VyTWVkaWEgPSBmYWxzZTtcbiAgICBpZiAobmF2aWdhdG9yLm1lZGlhRGV2aWNlcykge1xuICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEgPSBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSB8fFxuICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLndlYmtpdEdldFVzZXJNZWRpYSB8fFxuICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm1vekdldFVzZXJNZWRpYTtcbiAgICAgIHRoaXMuY2FuTWVkaWFEZXZpY2VzR2V0VXNlck1lZGlhID0gQm9vbGVhbihuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdOYXRpdmUgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEgQVBJIGNhcGFiaWxpdHk6JywgdGhpcy5jYW5NZWRpYURldmljZXNHZXRVc2VyTWVkaWEpO1xuXG4gICAgLy8gRGV0ZWN0IE1lZGlhU3RyZWFtIFJlY29yZGluZ1xuICAgIC8vIEl0IGFsbG93cyByZWNvcmRpbmcgYXVkaW8gdXNpbmcgdGhlIE1lZGlhU3RyZWFtIGZyb20gdGhlIGFib3ZlXG4gICAgLy8gZ2V0VXNlck1lZGlhIGRpcmVjdGx5IHdpdGggYSBuYXRpdmUgY29kZWMgYmV0dGVyIHRoYW4gV2F2ZS5cbiAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9tZWRpYXN0cmVhbS1yZWNvcmRpbmcvXG4gICAgLy8gdGhpcy5jYW5Vc2VNZWRpYVJlY29yZGVyID0gQm9vbGVhbih3aW5kb3cuTWVkaWFSZWNvcmRlcik7XG4gICAgLy8gY29uc29sZS5sb2coJ05hdGl2ZSBNZWRpYVJlY29yZGVyIHJlY29yZGluZyBjYXBhYmlsaXR5OicsIHRoaXMuY2FuVXNlTWVkaWFSZWNvcmRlcik7XG5cbiAgICAvLyBXZWIgQXVkaW8gQVBJXG4gICAgLy8gSGlnaC1sZXZlbCBKYXZhU2NyaXB0IEFQSSBmb3IgcHJvY2Vzc2luZyBhbmQgc3ludGhlc2l6aW5nIGF1ZGlvXG4gICAgLy8gaHR0cDovL2Nhbml1c2UuY29tLyNmZWF0PWF1ZGlvLWFwaVxuICAgIHdpbmRvdy5BdWRpb0NvbnRleHQgPSB3aW5kb3cuQXVkaW9Db250ZXh0IHx8XG4gICAgICB3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0IHx8IHdpbmRvdy5tb3pBdWRpb0NvbnRleHQ7XG4gICAgY29uc3QgY2FuQ3JlYXRlQXVkaW9Db250ZXh0ID0gQm9vbGVhbih3aW5kb3cuQXVkaW9Db250ZXh0KTtcbiAgICBjb25zb2xlLmxvZygnTmF0aXZlIFdlYiBBdWRpbyBBUEkgKEF1ZGlvQ29udGV4dCkgcHJvY2Vzc2luZyBjYXBhYmlsaXR5OicsIGNhbkNyZWF0ZUF1ZGlvQ29udGV4dCk7XG5cbiAgICBpZiAoIXRoaXMuY2FuR2V0VXNlck1lZGlhICYmICF0aGlzLmNhbk1lZGlhRGV2aWNlc0dldFVzZXJNZWRpYSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnU29tZSBmb3JtIG9mIGF1ZGlvIHJlY29yZGluZyBjYXBhYmlsaXR5IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgd2luZG93LlVSTCA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTDtcbiAgICBjb25zdCBoYXNXaW5kb3dVUkwgPSBCb29sZWFuKHdpbmRvdy5VUkwpO1xuICAgIGNvbnNvbGUubG9nKCdOYXRpdmUgd2luZG93LlVSTCBjYXBhYmlsaXR5OicsIGhhc1dpbmRvd1VSTCk7XG4gICAgaWYgKCFoYXNXaW5kb3dVUkwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ05vIHdpbmRvdy5VUkwgYmxvYiBjb252ZXJzaW9uIGNhcGFiaWxpdGllcycpO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgbWljcm9waG9uZSBhY2Nlc3MuXG4gICAqXG4gICAqIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBtYXkgcmVzdWx0IGluIHRocm93biBleGNlcHRpb25zIHdoZW4gYnJvd3NlclxuICAgKiBkb2Vzbid0IHN1cHBvcnQgcHJvdmlkZSBsaXZlIGF1ZGlvIGlucHV0LlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgbm8gbGl2ZSBhdWRpbyBpbnB1dCBpcyBhdmFpbGFibGUgb3IgcGVybWl0dGVkLlxuICAgKi9cbiAgcmVxdWVzdFVzZXJNZWRpYSgpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBmdW5jdGlvbiBzdWNjZXNzKHN0cmVhbSkge1xuICAgICAgY29uc29sZS5sb2coJ0dvdCBnZXRVc2VyTWVkaWEgc3RyZWFtJyk7XG5cbiAgICAgIC8vIGNoZWNraW5nIGF1ZGlvIHByZXNlbmNlXG4gICAgICBpZiAoc2VsZi5jYW5NZWRpYURldmljZXNHZXRVc2VyTWVkaWEpIHtcbiAgICAgICAgaWYgKHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdHb3QgYXVkaW8gdHJhY2tzOicsIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTW9kaWZ5IHN0YXRlIG9mIHVzZXJNZWRpYUFwcHJvdmFsIG5vdyBhY2Nlc3MgaXMgZ3JhbnRlZC5cbiAgICAgIHNlbGYudXNlck1lZGlhQXBwcm92YWwgPSB0cnVlO1xuXG4gICAgICBjb25zdCBtaWNJbnB1dEdhaW4gPSBzZWxmLl9zdGFydFVzZXJNZWRpYShzdHJlYW0pO1xuICAgICAgc2VsZi5maXJlRXZlbnQoJ3JlYWR5JywgW3NlbGYuYXVkaW9Db250ZXh0LCBtaWNJbnB1dEdhaW5dKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmFpbHVyZShlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gbGl2ZSBhdWRpbyBpbnB1dCBhdmFpbGFibGUgb3IgcGVybWl0dGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2FuTWVkaWFEZXZpY2VzR2V0VXNlck1lZGlhKSB7XG4gICAgICAvLyBVc2Ugb2YgcHJvbWlzZXMgaXMgcmVxdWlyZWQuXG4gICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KS50aGVuKHN1Y2Nlc3MpLmNhdGNoKGZhaWx1cmUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jYW5HZXRVc2VyTWVkaWEpIHtcbiAgICAgIG5hdmlnYXRvci5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSwgc3VjY2VzcywgZmFpbHVyZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF1ZGlvIGFjY2VzcyB3YXMgZ3JhbnRlZCwgc3RhcnQgYW5hbHlzaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge01lZGlhU3RyZWFtfSBzdHJlYW0gLSBNZWRpYSBTdHJlYW0uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfc3RhcnRVc2VyTWVkaWEoc3RyZWFtKSB7XG4gICAgaWYgKCF0aGlzLmF1ZGlvQ29udGV4dCkge1xuICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29udGV4dCBvbmNlLCBhbmQgb25seSB3aGVuIGdldFVzZXJNZWRpYSB3YXNcbiAgICAgIC8vIHN1Y2Nlc3NmdWwuXG4gICAgICB0aGlzLmF1ZGlvQ29udGV4dCA9IG5ldyB3aW5kb3cuQXVkaW9Db250ZXh0KCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmF1ZGlvQ29udGV4dC5jcmVhdGVNZWRpYVN0cmVhbVNvdXJjZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdWRpb0NvbnRleHQgaGFzIG5vIHByb3BlcnR5IGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlJyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlcyBhbiBhdWRpbyBub2RlIGZyb20gdGhlIG1pY3JvcGhvbmUgaW5jb21pbmcgc3RyZWFtLlxuICAgIGNvbnN0IG1pY0lucHV0ID0gdGhpcy5hdWRpb0NvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2Uoc3RyZWFtKTtcblxuICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBGaXJlZm94IHRoYXQgd291bGQgb3RoZXJ3aXNlIGxlYWQgdG9cbiAgICAvLyB0aGUgc291bmQgaW5wdXQgc3RvcHBpbmcgYWZ0ZXIgfjUgc2Vjb25kcy5cbiAgICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQ1MTJcbiAgICAvLyB0aGUgaW1wb3J0YW50IHRoaW5nIGlzIHRvIHNhdmUgYSByZWZlcmVuY2UgdG8gdGhlIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlXG4gICAgdGhpcy5taWNJbnB1dCA9IG1pY0lucHV0O1xuXG4gICAgLy8gQ3JlYXRlIGEgZ2FpbiBub2RlXG4gICAgY29uc3QgbWljSW5wdXRHYWluID0gdGhpcy5hdWRpb0NvbnRleHQuY3JlYXRlR2FpbigpO1xuICAgIC8vIENvbm5lY3QgdGhlIG1pY3JvcGhvbmUgc291cmNlIHRvIGEgZ2FpbiBub2RlLlxuICAgIG1pY0lucHV0LmNvbm5lY3QobWljSW5wdXRHYWluKTtcblxuICAgIHRoaXMuX3JlY29yZGVyID0gdGhpcy5fZ2V0QmVzdFJlY29yZGVyKG1pY0lucHV0R2Fpbik7XG5cbiAgICByZXR1cm4gbWljSW5wdXRHYWluO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHJlY29yZGVyIG9iamVjdCB0aGF0IHBlcmZvcm1zIGF1ZGlvIGNvbXByZXNzaW9uLCB3aGVuIGF2YWlsYWJsZS5cbiAgICpcbiAgICogVXNpbmcgdGhlIE1lZGlhIFN0cmVhbSBSZWNvcmRpbmcgQVBJIGZvciByZWNvcmRpbmcgaXMgdGhlIHByZWZlcmVkXG4gICAqIHNvbHV0aW9uLiBJdCBhbGxvd3MgcmVjb3JkaW5nIGNvbXByZXNzZWQgYXVkaW8gd2hpY2ggbWFrZXMgaXQgcXVpY2tlciB0b1xuICAgKiBzdWJtaXQuIElmIG5vdCBhdmFpbGFibGUsIHVzZSBhIGRlZmF1bHQgY3JlYXRlU2NyaXB0UHJvY2Vzc29yIGlzIHVzZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7R2Fpbk5vZGV9IG1pY0lucHV0R2FpbiAtIFRoZSBHYWluTm9kZSB0byBhbmFseXplLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2dldEJlc3RSZWNvcmRlcihtaWNJbnB1dEdhaW4pIHtcbiAgICBsZXQgcmVjb3JkZXIgPSBudWxsO1xuICAgIC8vIFN0YXJ0IGJ5IGNoZWNraW5nIGZvciBhIE1lZGlhUmVjb3JkZXIuXG4gICAgLy8gaWYgKHRoaXMuY2FuVXNlck1lZGlhUmVjb3JkZXIgJiYgIXRoaXMuX3NldHRpbmdzLmZvcmNlV2F2ZSkge1xuICAgIC8vICAgLy8gVXNlIHRoZSByZWNvcmRlciB3aXRoIE1lZGlhUmVjb3JkZXIgaW1wbGVtZW50YXRpb24uXG4gICAgLy8gICByZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKG1pY0lucHV0R2Fpbik7XG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLmNhbkdldFVzZXJNZWRpYSkge1xuICAgIGlmICh0aGlzLmNhbk1lZGlhRGV2aWNlc0dldFVzZXJNZWRpYSkge1xuICAgICAgLy8gRmFsbCBiYWNrIHRvIHJhdyAoV0FWRSkgYXVkaW8gZW5jb2RpbmcuXG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgIHJlY29yZGVyID0gbmV3IFdlYkF1ZGlvUmVjb3JkZXIobWljSW5wdXRHYWluLCBkYXRhID0+IHtcbiAgICAgICAgc2VsZi5zdHJlYW1DYWxsYmFjayhkYXRhKTtcbiAgICAgIH0sIG5ldyBXYXZlUGFja2VyKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIGEgcHJvcGVyIHJlY29yZGVyLicpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnUmVjb3JkZXIgaW5pdGlhbGlzZWQuJyk7XG4gICAgcmV0dXJuIHJlY29yZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgY2h1bmsgb2YgYXVkaW8gYmVjb21lcyBhdmFpbGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGNodW5rIC0gQSBjaHVuayBvZiBhdWRpbyAoSW50MTYgZm9ybWF0dGVkKS5cbiAgICovXG4gIHN0cmVhbUNhbGxiYWNrKGNodW5rKSB7XG4gICAgdGhpcy5maXJlRXZlbnQoJ2RhdGFhdmFpbGFibGUnLCBbY2h1bmtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaHJvdyBhbiBlcnJvciBpZiB0aGUgdXNlciBpcyBub3QgeWV0IGxvZ2dlZCBpbi5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgd2hlbiBwZXJtaXNzaW9uIHdhcyBhbHJlYWR5IGdyYW50ZWQuIEZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIF9yZXF1aXJlR2V0VXNlck1lZGlhKCkge1xuICAgIGlmICh0aGlzLl9yZWNvcmRlcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdSZXF1ZXN0aW5nIGdldFVzZXJNZWRpYSBwZXJtaXNzaW9uIGZpcnN0LicpO1xuICAgIHRoaXMucmVxdWVzdFVzZXJNZWRpYSgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBuZXcgcmVjb3JkaW5nIHNlc3Npb24gaWQuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFdoZW4gZGVmaW5lZCwgc3RpY2sgdGhpcyBpZCB0byB0aGUgcmVjb3JkZWQgYmxvYi5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGlkIHRoYXQgd2FzIGdpdmVuIG9yIGEgdW5pcXVlIGdlbmVyYXRlZCBvbmUuXG4gICAqL1xuICBzdGFydFJlY29yZGluZ1Nlc3Npb24oaWQpIHtcbiAgICAvLyBHZW5lcmF0ZSBhIHV1aWQgdG8gcmVtZW1iZXIgdGhpcyByZWNvcmRpbmcgYnkgKGxvY2FsbHkpLlxuICAgIGNvbnN0IHV1aWRfID0gaWQgPT09IHVuZGVmaW5lZCA/IHV1aWQudjQoKSA6IGlkO1xuICAgIHRoaXMuYWN0aXZlUmVjb3JkaW5nSWQgPSB1dWlkXztcbiAgICByZXR1cm4gdXVpZF87XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgcmVjb3JkaW5nIG1pY3JvcGhvbmUgaW5wdXQgdW50aWwgc3RvcHBlZC5cbiAgICpcbiAgICogQHBhcmFtIHs/RnVuY3Rpb259IGNiIC0gVGhlIGNhbGxiYWNrIHRoYXQgcHJvdmlkZXMgYSBwaWVjZSBvZiByYXcgYXVkaW8gd2hlblxuICAgKiBpdCBiZWNvbWVzIGF2YWlsYWJsZS4gSXQgbWF5IGJlIHVzZWQgZm9yIHN0cmVhbWluZy5cbiAgICogQGVtaXRzIHtFdmVudH0gJ3JlY29yZGluZycgV2l0aCBhcmd1bWVudHM6IFtyZWNvcmRpbmcgSURdLlxuICAgKi9cbiAgcmVjb3JkKGNiKSB7XG4gICAgaWYgKCF0aGlzLl9yZXF1aXJlR2V0VXNlck1lZGlhKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1JlY29yZGluZygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FscmVhZHkgcmVjb3JkaW5nLCBzdG9wIHJlY29yZGluZyBmaXJzdC4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWNvcmRlci5yZWNvcmQoKTtcbiAgICBpZiAodGhpcy5fc3RvcHdhdGNoKSB7XG4gICAgICB0aGlzLl9zdG9wd2F0Y2guX3ZhbHVlID0gMDtcbiAgICAgIHRoaXMuX3N0b3B3YXRjaC5zdGFydCgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hY3RpdmVSZWNvcmRpbmdJZCkge1xuICAgICAgdGhpcy5zdGFydFJlY29yZGluZ1Nlc3Npb24oKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ1JlY29yZGluZyBhcyBpZDogJyArIHRoaXMuYWN0aXZlUmVjb3JkaW5nSWQpO1xuXG4gICAgdGhpcy5maXJlRXZlbnQoJ3JlY29yZGluZycsIFt0aGlzLmFjdGl2ZVJlY29yZGluZ0lkXSk7XG4gICAgcmV0dXJuIGNiO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgcmVjb3JkaW5nIG1pY3JvcGhvbmUgaW5wdXQuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2ZvcmNlZD1mYWxzZV0gLSBTZXQgd2hldGhlciB0byBmb3JjZSB0aGUgbWljcm9waG9uZSB0byBzdG9wIHJlY29yZGluZyBvciBsZXQgaXQgZW5kIG5vcm1hbGx5LlxuICAgKiBAZW1pdHMge0V2ZW50fSAncmVjb3JkZWQnIFdpdGggYXJndW1lbnRzOiBbcmVjb3JkaW5nIElELCBhdWRpbyBCbG9iLCBmb3JjZWRdLlxuICAgKi9cbiAgc3RvcChmb3JjZWQpIHtcbiAgICBpZiAoIXRoaXMuX3JlY29yZGVyLmlzUmVjb3JkaW5nKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fcmVjb3JkZXIuc3RvcCgpO1xuICAgIGlmICh0aGlzLl9zdG9wd2F0Y2gpIHtcbiAgICAgIHRoaXMuX3N0b3B3YXRjaC5zdG9wKCk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdTdG9wcGVkIHJlY29yZGluZyBmb3IgaWQ6ICcgKyB0aGlzLmFjdGl2ZVJlY29yZGluZ0lkKTtcblxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuX3JlY29yZGVyLmdldEVuY29kZWRBdWRpbyhibG9iID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdSZWNlaXZlZCBlbmNvZGVkIGF1ZGlvIG9mIHR5cGU6ICcgKyBibG9iLnR5cGUpO1xuICAgICAgLy8gQWxsb3cgZGlyZWN0IHBsYXliYWNrIGZyb20gbG9jYWwgYmxvYi5cbiAgICAgIHNlbGYuZmlyZUV2ZW50KCdyZWNvcmRlZCcsIFtzZWxmLmFjdGl2ZVJlY29yZGluZ0lkLCBibG9iLCBCb29sZWFuKGZvcmNlZCldKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGVyZSBpcyBhIHJlY29yZGluZyBpbiBwcm9ncmVzcy5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdXNlciBpcyBjdXJyZW50bHkgcmVjb3JkaW5nIGF1ZGlvLiBGYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNSZWNvcmRpbmcoKSB7XG4gICAgaWYgKCF0aGlzLl9yZWNvcmRlcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVjb3JkZXIuaXNSZWNvcmRpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgYXVkaW8gcGxheWJhY2suIFN3aXRjaCBmcm9tIHBsYXlpbmcgdG8gcGF1c2VkIHN0YXRlIGFuZCBiYWNrLlxuICAgKi9cbiAgdG9nZ2xlUmVjb3JkaW5nKCkge1xuICAgIGlmICh0aGlzLmlzUmVjb3JkaW5nKCkpIHtcbiAgICAgIHRoaXMuc3RvcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlY29yZCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlY29yZGVkIGF1ZGlvIHNwZWNpZmljYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBDb250YWluaW5nIGF1ZGlvRm9ybWF0IGFuZCBhdWRpb1BhcmFtZXRlcnMgZGVzY3JpYmluZyB0aGUgZm9ybWF0LlxuICAgKi9cbiAgZ2V0QXVkaW9TcGVjcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVjb3JkZXIuZ2V0QXVkaW9TcGVjcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmQgYSBzdG9wd2F0Y2ggdG8gc3luYyB3aXRoIHRoZSBwbGF5aW5nIGFuZCBzdG9wcGluZyBmdW5jdGlvbmFsaXR5IG9mIHRoZSByZWNvcmRlci5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gdGlja0NiIC0gQ2FsbGJhY2sgdG8gaW52b2tlIG9uIGV2ZXJ5IHRpY2suIEEgdGljayBvY2N1cnMgb25jZSBldmVyeSAxMDAgbXMuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBfdGlja0NiIGlzIG51bGwuXG4gICAqIEByZXR1cm5zIHtTdG9wd2F0Y2h9IE5ldyBTdG9wd2F0Y2ggb2JqZWN0LlxuICAgKi9cbiAgYmluZFN0b3B3YXRjaCh0aWNrQ2IpIHtcbiAgICB0aGlzLl9zdG9wd2F0Y2ggPSBuZXcgU3RvcHdhdGNoKHRpY2tDYik7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3B3YXRjaDtcbiAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby9hdWRpby1yZWNvcmRlci5qcyJdLCJuYW1lcyI6WyJBdWRpb1JlY29yZGVyIiwib3B0aW9ucyIsIl9zZXR0aW5ncyIsIk9iamVjdCIsImFzc2lnbiIsIl9yZWNvcmRpbmdDb21wYXRpYmlsaXR5IiwidXNlck1lZGlhQXBwcm92YWwiLCJfcmVjb3JkZXIiLCJfZW1pdHRlciIsIl9zdG9wd2F0Y2giLCJhdWRpb0NvbnRleHQiLCJjcmVhdGVBdWRpb0NvbnRleHQiLCJ3aW5kb3ciLCJJdHNsQXVkaW9Db250ZXh0IiwiQXVkaW9Db250ZXh0Iiwid2Via2l0QXVkaW9Db250ZXh0IiwicmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMiLCJhZGRFdmVudExpc3RlbmVyIiwibmFtZSIsImhhbmRsZXIiLCJvbiIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvZmYiLCJmaXJlRXZlbnQiLCJhcmdzIiwiZW1pdCIsImhhc1VzZXJNZWRpYUFwcHJvdmFsIiwiY2FuTWVkaWFEZXZpY2VzR2V0VXNlck1lZGlhIiwibmF2aWdhdG9yIiwibWVkaWFEZXZpY2VzIiwiZ2V0VXNlck1lZGlhIiwid2Via2l0R2V0VXNlck1lZGlhIiwibW96R2V0VXNlck1lZGlhIiwiQm9vbGVhbiIsImNvbnNvbGUiLCJsb2ciLCJjYW5HZXRVc2VyTWVkaWEiLCJFcnJvciIsIlVSTCIsIndlYmtpdFVSTCIsImhhc1dpbmRvd1VSTCIsInJlcXVlc3RVc2VyTWVkaWEiLCJyZWFkeUZvclN0cmVhbSIsIm1pY0lucHV0R2FpbiIsIl9zdGFydFVzZXJNZWRpYSIsInN0cmVhbSIsInVzZXJDYW5jZWxlZCIsImVycm9yIiwiYXVkaW8iLCJ0aGVuIiwiY2F0Y2giLCJtaWNJbnB1dCIsImNyZWF0ZU1lZGlhU3RyZWFtU291cmNlIiwiY3JlYXRlR2FpbiIsImNvbm5lY3QiLCJfZ2V0QmVzdFJlY29yZGVyIiwic3RyZWFtQ2FsbGJhY2siLCJkYXRhIiwiY2h1bmsiLCJfcmVxdWlyZUdldFVzZXJNZWRpYSIsInN0YXJ0UmVjb3JkaW5nU2Vzc2lvbiIsImlkIiwidXVpZF8iLCJ1bmRlZmluZWQiLCJ2NCIsImFjdGl2ZVJlY29yZGluZ0lkIiwicmVjb3JkIiwiY2IiLCJpc1JlY29yZGluZyIsInJlc3VtZSIsIl92YWx1ZSIsInN0YXJ0Iiwic3RvcCIsImZvcmNlZCIsInNlbGYiLCJnZXRFbmNvZGVkQXVkaW8iLCJibG9iIiwidHlwZSIsInRvZ2dsZVJlY29yZGluZyIsImdldEF1ZGlvU3BlY3MiLCJiaW5kU3RvcHdhdGNoIiwidGlja0NiIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7OztBQUVBOzs7O0lBSXFCQSxhO0FBQ25COzs7Ozs7QUFNQSx5QkFBWUMsT0FBWixFQUFxQjtBQUFBOztBQUNuQixTQUFLQyxTQUFMLEdBQWlCQyxPQUFPQyxNQUFQLENBQWMsRUFBZCxFQUFrQkgsT0FBbEIsQ0FBakI7O0FBRUEsU0FBS0ksdUJBQUw7O0FBRUEsU0FBS0MsaUJBQUwsR0FBeUIsS0FBekI7O0FBRUE7Ozs7QUFJQSxTQUFLQyxTQUFMLEdBQWlCLElBQWpCOztBQUVBLFNBQUtDLFFBQUwsR0FBZ0IsNEJBQUcsRUFBSCxDQUFoQjs7QUFFQSxTQUFLQyxVQUFMLEdBQWtCLElBQWxCOztBQUVBLFFBQUlSLFFBQVFTLFlBQVosRUFBMEI7QUFDeEIsV0FBS0EsWUFBTCxHQUFvQlQsUUFBUVMsWUFBNUI7QUFDRCxLQUZELE1BRU87QUFDTCxXQUFLQSxZQUFMLEdBQW9CLEtBQUtDLGtCQUFMLEVBQXBCO0FBQ0Q7QUFDRjs7QUFHRDs7Ozs7OzswQkFLQUEsa0IsaUNBQXFCO0FBQ25CLFFBQUksQ0FBQ0MsT0FBT0MsZ0JBQVosRUFBOEI7QUFDNUJELGFBQU9FLFlBQVAsR0FDRUYsT0FBT0UsWUFBUCxJQUF1QkYsT0FBT0csa0JBRGhDO0FBRUFILGFBQU9DLGdCQUFQLEdBQTBCLElBQUlELE9BQU9FLFlBQVgsRUFBMUI7QUFDRDtBQUNELFdB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QUFMLENBQWU2RCxXQUFmLEVBQVA7QUFDRCxHOztBQUVEOzs7OzswQkFHQVUsZSw4QkFBa0I7QUFDaEIsUUFBSSxLQUFLVixXQUFMLEVBQUosRUFBd0I7QUFDdEIsV0FBS0ksSUFBTDtBQUNELEtBRkQsTUFFTztBQUNMLFdBQUtOLE1BQUw7QUFDRDtBQUNGLEc7O0FBRUQ7Ozs7Ozs7MEJBS0FhLGEsNEJBQWdCO0FBQ2QsV0FBTyxLQUFLeEUsU0FBTCxDQUFld0UsYUFBZixFQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7OzBCQU9BQyxhLDBCQUFjQyxNLEVBQVE7QUFDcEIsU0FBS3hFLFVBQUwsR0FBa0Isb0JBQWN3RSxNQUFkLENBQWxCO0FBQ0EsV0FBTyxLQUFLeEUsVUFBWjtBQUNELEc7Ozs7O2tCQTFVa0JULGEiLCJmaWxlIjoiYXVkaW8tcmVjb3JkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3RvcHdhdGNoIGZyb20gJy4vdG9vbHMnO1xuaW1wb3J0IFdhdmVQYWNrZXIgZnJvbSAnLi93YXZlLXBhY2tlcic7XG5pbXBvcnQgV2ViQXVkaW9SZWNvcmRlciBmcm9tICcuL3dlYi1hdWRpby1yZWNvcmRlcic7XG5pbXBvcnQgYWxsT2ZmIGZyb20gJ2V2ZW50LWVtaXR0ZXIvYWxsLW9mZic7XG5pbXBvcnQgZWUgZnJvbSAnZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgdXVpZCBmcm9tICd1dWlkJztcblxuLyoqXG4gKiBBdWRpbyByZWNvcmRpbmcgY29tcG9uZW50LlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXVkaW9SZWNvcmRlciB7XG4gIC8qKlxuICAgKiBJVFNMYW5ndWFnZSBBdWRpb1JlY29yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gez9PYmplY3R9IG9wdGlvbnMgLSBPdmVycmlkZSBhbnkgb2YgdGhlIGRlZmF1bHQgc2V0dGluZ3MuXG4gICAqXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgdGhpcy5fc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKTtcblxuICAgIHRoaXMuX3JlY29yZGluZ0NvbXBhdGliaWxpdHkoKTtcblxuICAgIHRoaXMudXNlck1lZGlhQXBwcm92YWwgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHR5cGUge1dlYkF1ZGlvUmVjb3JkZXJ8TWVkaWFSZWNvcmRlcn0gVGhlIHNwZWNpZmljIHJlY29yZGVyIHR5cGUuXG4gICAgICovXG4gICAgdGhpcy5fcmVjb3JkZXIgPSBudWxsO1xuXG4gICAgdGhpcy5fZW1pdHRlciA9IGVlKHt9KTtcblxuICAgIHRoaXMuX3N0b3B3YXRjaCA9IG51bGw7XG5cbiAgICBpZiAob3B0aW9ucy5hdWRpb0NvbnRleHQpIHtcbiAgICAgIHRoaXMuYXVkaW9Db250ZXh0ID0gb3B0aW9ucy5hdWRpb0NvbnRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXVkaW9Db250ZXh0ID0gdGhpcy5jcmVhdGVBdWRpb0NvbnRleHQoKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGF1ZGlvIGNvbnRleHQgb3IgY3JlYXRlIG9uZS5cbiAgICpcbiAgICogQHJldHVybiB7QXVkaW9Db250ZXh0fSBUaGUgQXVkaW9Db250ZXh0IGNyZWF0ZWQgd2lsbCBiZSByZXR1cm5lZFxuICAgKi9cbiAgY3JlYXRlQXVkaW9Db250ZXh0KCkge1xuICAgIGlmICghd2luZG93Lkl0c2xBdWRpb0NvbnRleHQpIHtcbiAgICAgIHdpbmRvdy5BdWRpb0NvbnRleHQgPVxuICAgICAgICB3aW5kb3cuQXVkaW9Db250ZXh0IHx8IHdpbmRvdy53ZWJraXRBdWRpb0NvbnRleHQ7XG4gICAgICB3aW5kb3cuSXRzbEF1ZGlvQ29udGV4dCA9IG5ldyB3aW5kb3cuQXVkaW9Db250ZXh0KCk7XG4gICAgfVxuICAgIHJldHVybiB3aW5kb3cuSXRzbEF1ZGlvQ29udGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUdXJuIG9mZiBhbGwgZXZlbnQgbGlzdGVuZXJzIGZvciB0aGlzIHJlY29yZGVyLlxuICAgKi9cbiAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgYWxsT2ZmKHRoaXMuX2VtaXR0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBldmVudCBsaXN0ZW5lci4gTGlzdGVucyB0byBldmVudHMgZW1pdHRlZCBmcm9tIHRoZSByZWNvcmRlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciAtIEhhbmRsZXIgZnVuY3Rpb24gdG8gYWRkLlxuICAgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKSB7XG4gICAgdGhpcy5fZW1pdHRlci5vbihuYW1lLCBoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZXZlbnQgbGlzdGVuZXIgb2YgdGhlIHJlY29yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gSGFuZGxlciBmdW5jdGlvbiB0byByZW1vdmUuXG4gICAqL1xuICByZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGhhbmRsZXIpIHtcbiAgICB0aGlzLl9lbWl0dGVyLm9mZihuYW1lLCBoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlIGFuIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0ge09iamVjdFtdfSBhcmdzIC0gQXJndW1lbnRzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZmlyZUV2ZW50KG5hbWUsIGFyZ3MgPSBbXSkge1xuICAgIHRoaXMuX2VtaXR0ZXIuZW1pdChuYW1lLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgdXNlciBoYXMgYWxyZWFkeSBnaXZlbiBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgbWljcm9waG9uZS5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdXNlciBoYXMgZ3JhbnRlZCBhY2Nlc3MgdG8gdGhlIG1pY3JvcGhvbmUuIEZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGhhc1VzZXJNZWRpYUFwcHJvdmFsKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJNZWRpYUFwcHJvdmFsIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYnJvd3NlciBjb21wYXRpYmlsaXR5IGZvciBhdWRpbyByZWNvcmRpbmcuXG4gICAqIEluIGNhc2Ugb2YgY29tcGF0aWJpbGl0eSBpc3N1ZXMsIGFuIGVycm9yIGlzIHRocm93bi5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZWNvcmRpbmdDb21wYXRpYmlsaXR5LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8oKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL01lZGlhRGV2aWNlcy9tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhXG4gICAgdGhpcy5jYW5NZWRpYURldmljZXNHZXRVc2VyTWVkaWEgPSBmYWxzZTtcbiAgICBpZiAobmF2aWdhdG9yLm1lZGlhRGV2aWNlcykge1xuICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEgPSBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSB8fFxuICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLndlYmtpdEdldFVzZXJNZWRpYSB8fFxuICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLm1vekdldFVzZXJNZWRpYTtcbiAgICAgIHRoaXMuY2FuTWVkaWFEZXZpY2VzR2V0VXNlck1lZGlhID0gQm9vbGVhbihuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdOYXRpdmUgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEgQVBJIGNhcGFiaWxpdHk6JywgdGhpcy5jYW5NZWRpYURldmljZXNHZXRVc2VyTWVkaWEpO1xuXG4gICAgaWYgKCF0aGlzLmNhbkdldFVzZXJNZWRpYSAmJiAhdGhpcy5jYW5NZWRpYURldmljZXNHZXRVc2VyTWVkaWEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1NvbWUgZm9ybSBvZiBhdWRpbyByZWNvcmRpbmcgY2FwYWJpbGl0eSBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIHdpbmRvdy5VUkwgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7XG4gICAgY29uc3QgaGFzV2luZG93VVJMID0gQm9vbGVhbih3aW5kb3cuVVJMKTtcbiAgICBjb25zb2xlLmxvZygnTmF0aXZlIHdpbmRvdy5VUkwgY2FwYWJpbGl0eTonLCBoYXNXaW5kb3dVUkwpO1xuICAgIGlmICghaGFzV2luZG93VVJMKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdObyB3aW5kb3cuVVJMIGJsb2IgY29udmVyc2lvbiBjYXBhYmlsaXRpZXMnKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IG1pY3JvcGhvbmUgYWNjZXNzLlxuICAgKlxuICAgKiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gbWF5IHJlc3VsdCBpbiB0aHJvd24gZXhjZXB0aW9ucyB3aGVuIGJyb3dzZXJcbiAgICogZG9lc24ndCBzdXBwb3J0IHByb3ZpZGUgbGl2ZSBhdWRpbyBpbnB1dC5cbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIG5vIGxpdmUgYXVkaW8gaW5wdXQgaXMgYXZhaWxhYmxlIG9yIHBlcm1pdHRlZC5cbiAgICovXG4gIHJlcXVlc3RVc2VyTWVkaWEoKSB7XG4gICAgY29uc3QgcmVhZHlGb3JTdHJlYW0gPSBzdHJlYW0gPT4ge1xuICAgICAgLy8gTW9kaWZ5IHN0YXRlIG9mIHVzZXJNZWRpYUFwcHJvdmFsIG5vdyBhY2Nlc3MgaXMgZ3JhbnRlZC5cbiAgICAgIHRoaXMudXNlck1lZGlhQXBwcm92YWwgPSB0cnVlO1xuXG4gICAgICBjb25zdCBtaWNJbnB1dEdhaW4gPSB0aGlzLl9zdGFydFVzZXJNZWRpYShzdHJlYW0pO1xuICAgICAgdGhpcy5maXJlRXZlbnQoJ3JlYWR5JywgW3RoaXMuYXVkaW9Db250ZXh0LCBtaWNJbnB1dEdhaW5dKTtcbiAgICB9O1xuXG4gICAgY29uc3QgdXNlckNhbmNlbGVkID0gZXJyb3IgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGxpdmUgYXVkaW8gaW5wdXQgYXZhaWxhYmxlIG9yIHBlcm1pdHRlZCcpO1xuICAgIH07XG5cbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KVxuICAgICAgLnRoZW4ocmVhZHlGb3JTdHJlYW0pXG4gICAgICAuY2F0Y2godXNlckNhbmNlbGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdWRpbyBhY2Nlc3Mgd2FzIGdyYW50ZWQsIHN0YXJ0IGFuYWx5c2luZy5cbiAgICpcbiAgICogQHBhcmFtIHtNZWRpYVN0cmVhbX0gc3RyZWFtIC0gTWVkaWEgU3RyZWFtLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3N0YXJ0VXNlck1lZGlhKHN0cmVhbSkge1xuICAgIC8vIENyZWF0ZXMgYW4gYXVkaW8gbm9kZSBmcm9tIHRoZSBtaWNyb3Bob25lIGluY29taW5nIHN0cmVhbS5cbiAgICBjb25zdCBtaWNJbnB1dCA9IHRoaXMuYXVkaW9Db250ZXh0LmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKHN0cmVhbSk7XG5cbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gRmlyZWZveCB0aGF0IHdvdWxkIG90aGVyd2lzZSBsZWFkIHRvXG4gICAgLy8gdGhlIHNvdW5kIGlucHV0IHN0b3BwaW5nIGFmdGVyIH41IHNlY29uZHMuXG4gICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0NTEyXG4gICAgLy8gdGhlIGltcG9ydGFudCB0aGluZyBpcyB0byBzYXZlIGEgcmVmZXJlbmNlIHRvIHRoZSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZVxuICAgIHRoaXMubWljSW5wdXQgPSBtaWNJbnB1dDtcblxuICAgIC8vIENyZWF0ZSBhIGdhaW4gbm9kZVxuICAgIGNvbnN0IG1pY0lucHV0R2FpbiA9IHRoaXMuYXVkaW9Db250ZXh0LmNyZWF0ZUdhaW4oKTtcbiAgICAvLyBDb25uZWN0IHRoZSBtaWNyb3Bob25lIHNvdXJjZSB0byBhIGdhaW4gbm9kZS5cbiAgICBtaWNJbnB1dC5jb25uZWN0KG1pY0lucHV0R2Fpbik7XG5cbiAgICB0aGlzLl9yZWNvcmRlciA9IHRoaXMuX2dldEJlc3RSZWNvcmRlcihtaWNJbnB1dEdhaW4pO1xuXG4gICAgcmV0dXJuIG1pY0lucHV0R2FpbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSByZWNvcmRlciBvYmplY3QgdGhhdCBwZXJmb3JtcyBhdWRpbyBjb21wcmVzc2lvbiwgd2hlbiBhdmFpbGFibGUuXG4gICAqXG4gICAqIFVzaW5nIHRoZSBNZWRpYSBTdHJlYW0gUmVjb3JkaW5nIEFQSSBmb3IgcmVjb3JkaW5nIGlzIHRoZSBwcmVmZXJlZFxuICAgKiBzb2x1dGlvbi4gSXQgYWxsb3dzIHJlY29yZGluZyBjb21wcmVzc2VkIGF1ZGlvIHdoaWNoIG1ha2VzIGl0IHF1aWNrZXIgdG9cbiAgICogc3VibWl0LiBJZiBub3QgYXZhaWxhYmxlLCB1c2UgYSBkZWZhdWx0IGNyZWF0ZVNjcmlwdFByb2Nlc3NvciBpcyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge0dhaW5Ob2RlfSBtaWNJbnB1dEdhaW4gLSBUaGUgR2Fpbk5vZGUgdG8gYW5hbHl6ZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9nZXRCZXN0UmVjb3JkZXIobWljSW5wdXRHYWluKSB7XG4gICAgcmV0dXJuIG5ldyBXZWJBdWRpb1JlY29yZGVyKG1pY0lucHV0R2FpbiwgdGhpcy5hdWRpb0NvbnRleHQsIGRhdGEgPT4ge1xuICAgICAgdGhpcy5zdHJlYW1DYWxsYmFjayhkYXRhKTtcbiAgICB9LCBuZXcgV2F2ZVBhY2tlcigpLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBjaHVuayBvZiBhdWRpbyBiZWNvbWVzIGF2YWlsYWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gY2h1bmsgLSBBIGNodW5rIG9mIGF1ZGlvIChJbnQxNiBmb3JtYXR0ZWQpLlxuICAgKi9cbiAgc3RyZWFtQ2FsbGJhY2soY2h1bmspIHtcbiAgICB0aGlzLmZpcmVFdmVudCgnZGF0YWF2YWlsYWJsZScsIFtjaHVua10pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93IGFuIGVycm9yIGlmIHRoZSB1c2VyIGlzIG5vdCB5ZXQgbG9nZ2VkIGluLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHBlcm1pc3Npb24gd2FzIGFscmVhZHkgZ3JhbnRlZC4gRmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgX3JlcXVpcmVHZXRVc2VyTWVkaWEoKSB7XG4gICAgaWYgKHRoaXMuX3JlY29yZGVyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ1JlcXVlc3RpbmcgZ2V0VXNlck1lZGlhIHBlcm1pc3Npb24gZmlyc3QuJyk7XG4gICAgdGhpcy5yZXF1ZXN0VXNlck1lZGlhKCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIG5ldyByZWNvcmRpbmcgc2Vzc2lvbiBpZC5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gV2hlbiBkZWZpbmVkLCBzdGljayB0aGlzIGlkIHRvIHRoZSByZWNvcmRlZCBibG9iLlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgaWQgdGhhdCB3YXMgZ2l2ZW4gb3IgYSB1bmlxdWUgZ2VuZXJhdGVkIG9uZS5cbiAgICovXG4gIHN0YXJ0UmVjb3JkaW5nU2Vzc2lvbihpZCkge1xuICAgIC8vIEdlbmVyYXRlIGEgdXVpZCB0byByZW1lbWJlciB0aGlzIHJlY29yZGluZyBieSAobG9jYWxseSkuXG4gICAgY29uc3QgdXVpZF8gPSBpZCA9PT0gdW5kZWZpbmVkID8gdXVpZC52NCgpIDogaWQ7XG4gICAgdGhpcy5hY3RpdmVSZWNvcmRpbmdJZCA9IHV1aWRfO1xuICAgIHJldHVybiB1dWlkXztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCByZWNvcmRpbmcgbWljcm9waG9uZSBpbnB1dCB1bnRpbCBzdG9wcGVkLlxuICAgKlxuICAgKiBAcGFyYW0gez9GdW5jdGlvbn0gY2IgLSBUaGUgY2FsbGJhY2sgdGhhdCBwcm92aWRlcyBhIHBpZWNlIG9mIHJhdyBhdWRpbyB3aGVuXG4gICAqIGl0IGJlY29tZXMgYXZhaWxhYmxlLiBJdCBtYXkgYmUgdXNlZCBmb3Igc3RyZWFtaW5nLlxuICAgKiBAZW1pdHMge0V2ZW50fSAncmVjb3JkaW5nJyBXaXRoIGFyZ3VtZW50czogW3JlY29yZGluZyBJRF0uXG4gICAqL1xuICByZWNvcmQoY2IpIHtcbiAgICBpZiAoIXRoaXMuX3JlcXVpcmVHZXRVc2VyTWVkaWEoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzUmVjb3JkaW5nKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQWxyZWFkeSByZWNvcmRpbmcsIHN0b3AgcmVjb3JkaW5nIGZpcnN0LicpO1xuICAgIH1cblxuICAgIHRoaXMuYXVkaW9Db250ZXh0LnJlc3VtZSgpO1xuXG4gICAgdGhpcy5fcmVjb3JkZXIucmVjb3JkKCk7XG4gICAgaWYgKHRoaXMuX3N0b3B3YXRjaCkge1xuICAgICAgdGhpcy5fc3RvcHdhdGNoLl92YWx1ZSA9IDA7XG4gICAgICB0aGlzLl9zdG9wd2F0Y2guc3RhcnQoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYWN0aXZlUmVjb3JkaW5nSWQpIHtcbiAgICAgIHRoaXMuc3RhcnRSZWNvcmRpbmdTZXNzaW9uKCk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdSZWNvcmRpbmcgYXMgaWQ6ICcgKyB0aGlzLmFjdGl2ZVJlY29yZGluZ0lkKTtcblxuICAgIHRoaXMuZmlyZUV2ZW50KCdyZWNvcmRpbmcnLCBbdGhpcy5hY3RpdmVSZWNvcmRpbmdJZF0pO1xuICAgIHJldHVybiBjYjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHJlY29yZGluZyBtaWNyb3Bob25lIGlucHV0LlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmb3JjZWQ9ZmFsc2VdIC0gU2V0IHdoZXRoZXIgdG8gZm9yY2UgdGhlIG1pY3JvcGhvbmUgdG8gc3RvcCByZWNvcmRpbmcgb3IgbGV0IGl0IGVuZCBub3JtYWxseS5cbiAgICogQGVtaXRzIHtFdmVudH0gJ3JlY29yZGVkJyBXaXRoIGFyZ3VtZW50czogW3JlY29yZGluZyBJRCwgYXVkaW8gQmxvYiwgZm9yY2VkXS5cbiAgICovXG4gIHN0b3AoZm9yY2VkKSB7XG4gICAgaWYgKCF0aGlzLl9yZWNvcmRlci5pc1JlY29yZGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3JlY29yZGVyLnN0b3AoKTtcbiAgICBpZiAodGhpcy5fc3RvcHdhdGNoKSB7XG4gICAgICB0aGlzLl9zdG9wd2F0Y2guc3RvcCgpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnU3RvcHBlZCByZWNvcmRpbmcgZm9yIGlkOiAnICsgdGhpcy5hY3RpdmVSZWNvcmRpbmdJZCk7XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICB0aGlzLl9yZWNvcmRlci5nZXRFbmNvZGVkQXVkaW8oYmxvYiA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnUmVjZWl2ZWQgZW5jb2RlZCBhdWRpbyBvZiB0eXBlOiAnICsgYmxvYi50eXBlKTtcbiAgICAgIC8vIEFsbG93IGRpcmVjdCBwbGF5YmFjayBmcm9tIGxvY2FsIGJsb2IuXG4gICAgICBzZWxmLmZpcmVFdmVudCgncmVjb3JkZWQnLCBbc2VsZi5hY3RpdmVSZWNvcmRpbmdJZCwgYmxvYiwgQm9vbGVhbihmb3JjZWQpXSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlcmUgaXMgYSByZWNvcmRpbmcgaW4gcHJvZ3Jlc3MuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHVzZXIgaXMgY3VycmVudGx5IHJlY29yZGluZyBhdWRpby4gRmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIGlzUmVjb3JkaW5nKCkge1xuICAgIGlmICghdGhpcy5fcmVjb3JkZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3JlY29yZGVyLmlzUmVjb3JkaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlIGF1ZGlvIHBsYXliYWNrLiBTd2l0Y2ggZnJvbSBwbGF5aW5nIHRvIHBhdXNlZCBzdGF0ZSBhbmQgYmFjay5cbiAgICovXG4gIHRvZ2dsZVJlY29yZGluZygpIHtcbiAgICBpZiAodGhpcy5pc1JlY29yZGluZygpKSB7XG4gICAgICB0aGlzLnN0b3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWNvcmQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZWNvcmRlZCBhdWRpbyBzcGVjaWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMge09iamVjdH0gQ29udGFpbmluZyBhdWRpb0Zvcm1hdCBhbmQgYXVkaW9QYXJhbWV0ZXJzIGRlc2NyaWJpbmcgdGhlIGZvcm1hdC5cbiAgICovXG4gIGdldEF1ZGlvU3BlY3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlY29yZGVyLmdldEF1ZGlvU3BlY3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIGEgc3RvcHdhdGNoIHRvIHN5bmMgd2l0aCB0aGUgcGxheWluZyBhbmQgc3RvcHBpbmcgZnVuY3Rpb25hbGl0eSBvZiB0aGUgcmVjb3JkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHRpY2tDYiAtIENhbGxiYWNrIHRvIGludm9rZSBvbiBldmVyeSB0aWNrLiBBIHRpY2sgb2NjdXJzIG9uY2UgZXZlcnkgMTAwIG1zLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgX3RpY2tDYiBpcyBudWxsLlxuICAgKiBAcmV0dXJucyB7U3RvcHdhdGNofSBOZXcgU3RvcHdhdGNoIG9iamVjdC5cbiAgICovXG4gIGJpbmRTdG9wd2F0Y2godGlja0NiKSB7XG4gICAgdGhpcy5fc3RvcHdhdGNoID0gbmV3IFN0b3B3YXRjaCh0aWNrQ2IpO1xuICAgIHJldHVybiB0aGlzLl9zdG9wd2F0Y2g7XG4gIH1cbn1cbiJdfQ== |
@@ -8,2 +8,35 @@ 'use strict'; | ||
/** | ||
* Util function to concat two ArrayBuffers. | ||
* | ||
* @param {[ArrayBuffer]} buffers - Array with buffers to concat. | ||
* | ||
* @return {ArrayBuffer} - Concatenated ArrayBuffer | ||
*/ | ||
function concatArrayBuffers() { | ||
// Determine the length | ||
var length = 0; | ||
for (var _len = arguments.length, buffers = Array(_len), _key = 0; _key < _len; _key++) { | ||
buffers[_key] = arguments[_key]; | ||
} | ||
buffers.forEach(function (buffer) { | ||
length += buffer.byteLength; | ||
}); | ||
// Prepare the concatenated Array | ||
var result = new Uint8Array(length); | ||
// Loop through all items and put them in the result | ||
var offset = 0; | ||
buffers.forEach(function (buffer) { | ||
result.set(buffer, offset); | ||
offset += buffer.byteLength; | ||
}); | ||
// Return the ArrayBuffer | ||
return result.buffer; | ||
} | ||
/** | ||
* Packer class for audio packing | ||
@@ -13,5 +46,14 @@ * | ||
*/ | ||
var WavePacker = function () { | ||
function WavePacker() { | ||
_classCallCheck(this, WavePacker); | ||
this.recordingSampleRate = null; | ||
this.sampleRate = null; | ||
this.channels = null; | ||
this.recording = false; | ||
this.recLength = 0; | ||
this.recBuffersL = []; | ||
this.recBuffersR = []; | ||
} | ||
@@ -62,2 +104,3 @@ | ||
} | ||
// Both the left and right channel's data is a view (Float32Array) | ||
@@ -68,2 +111,4 @@ // on top of the buffer (ArrayBuffer). Each buffer's element should | ||
// a WAVE file at the server. Therefore convert from float here. | ||
// We choose only one channel (left) because the backend can only | ||
// process mono sound. Left is just a random choice then... | ||
var converted = convertFloat32ToInt16(left); | ||
@@ -216,2 +261,2 @@ callback(converted); | ||
exports.default = WavePacker; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby93YXZlLXBhY2tlci5qcyJdLCJuYW1lcyI6WyJXYXZlUGFja2VyIiwiaW5pdCIsInJlY29yZGluZ1NhbXBsZVJhdGUiLCJzYW1wbGVSYXRlIiwiY2hhbm5lbHMiLCJpbmRleE9mIiwiRXJyb3IiLCJyZWNvcmRpbmciLCJjbGVhciIsInJlY0xlbmd0aCIsInJlY0J1ZmZlcnNMIiwicmVjQnVmZmVyc1IiLCJyZWNvcmQiLCJsZWZ0IiwicmlnaHQiLCJwdXNoIiwibGVuZ3RoIiwicmVjb3JkU3RyZWFtaW5nIiwiY2FsbGJhY2siLCJjb252ZXJ0RmxvYXQzMlRvSW50MTYiLCJidWZmZXIiLCJsIiwiYnVmIiwiSW50MTZBcnJheSIsIk1hdGgiLCJtaW4iLCJjb252ZXJ0ZWQiLCJleHBvcnRXQVYiLCJidWZmZXJMIiwibWVyZ2VCdWZmZXJzIiwiYnVmZmVyUiIsImludGVybGVhdmVkIiwiaW50ZXJsZWF2ZSIsImRhdGF2aWV3IiwiZW5jb2RlV0FWIiwiYXVkaW9CbG9iIiwiQmxvYiIsInR5cGUiLCJleHBvcnRNb25vV0FWIiwiQXJyYXlCdWZmZXIiLCJ2aWV3IiwiRGF0YVZpZXciLCJ3cml0ZVVURkJ5dGVzIiwic2V0VWludDMyIiwic2V0VWludDE2IiwibG5nIiwiaW5kZXgiLCJ2b2x1bWUiLCJpIiwic2V0SW50MTYiLCJibG9iIiwiY29uc29sZSIsImxvZyIsInNpemUiLCJsZWZ0Q2hhbm5lbCIsInJpZ2h0Q2hhbm5lbCIsInJlc3VsdCIsImlucHV0SW5kZXgiLCJGbG9hdDMyQXJyYXkiLCJyZWR1Y2VCeSIsInJlc2FtcGxlZFJlc3VsdCIsInZhbHVlIiwiaiIsImNoYW5uZWxCdWZmZXIiLCJyZWNvcmRpbmdMZW5ndGgiLCJvZmZzZXQiLCJzZXQiLCJzdHJpbmciLCJzZXRVaW50OCIsImNoYXJDb2RlQXQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7OztJQUtxQkEsVTs7Ozs7QUFDbkI7Ozs7Ozs7dUJBT0FDLEksaUJBQUtDLG1C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LEdBQVAsQ0FBVzlDLE1BQVgsRUFBbUI2QyxNQUFuQjtBQUNBQSxnQkFBVTdDLE9BQU9KLE1BQWpCO0FBQ0Q7QUFDRCxXQUFPd0MsTUFBUDtBQUNELEc7O2FBRU1kLGEsMEJBQWNGLEksRUFBTXlCLE0sRUFBUUUsTSxFQUFRO0FBQ3pDLFFBQU10QixNQUFNc0IsT0FBT25ELE1BQW5CO0FBQ0EsU0FBSyxJQUFJZ0MsSUFBSSxDQUFiLEVBQWdCQSxJQUFJSCxHQUFwQixFQUF5QkcsR0FBekIsRUFBOEI7QUFDNUJSLFdBQUs0QixRQUFMLENBQWNILFNBQVNqQixDQUF2QixFQUEwQm1CLE9BQU9FLFVBQVAsQ0FBa0JyQixDQUFsQixDQUExQjtBQUNEO0FBQ0YsRzs7Ozs7a0JBcE1rQmhELFUiLCJmaWxlIjoid2F2ZS1wYWNrZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBhY2tlciBjbGFzcyBmb3IgYXVkaW8gcGFja2luZ1xuICpcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhdmVQYWNrZXIge1xuICAvKipcbiAgICogU3RvcCByZWNvcmRpbmcgYXVkaW8uXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByZWNvcmRpbmdTYW1wbGVSYXRlIC0gU2FtcGxlIHJhdGUgb2YgcmVjb3JkaW5nLiBNdXN0IGJlIGVpdGhlciA0ODAwMCBvciA0NDEwMC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHNhbXBsZVJhdGUgLSBTYW1wbGUgcmF0ZS4gTXVzdCBiZSBoYWxmIG9yIGEgcXVhcnRlciBvZiB0aGUgcmVjb3JkaW5nIHNhbXBsZSByYXRlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gY2hhbm5lbHMgLSBBbW91bnQgb2YgYXVkaW8gY2hhbm5lbHMuIDEgb3IgMi5cbiAgICovXG4gIGluaXQocmVjb3JkaW5nU2FtcGxlUmF0ZSwgc2FtcGxlUmF0ZSwgY2hhbm5lbHMpIHtcbiAgICB0aGlzLnJlY29yZGluZ1NhbXBsZVJhdGUgPSByZWNvcmRpbmdTYW1wbGVSYXRlO1xuICAgIGlmIChbNDgwMDAsIDQ0MTAwXS5pbmRleE9mKHRoaXMucmVjb3JkaW5nU2FtcGxlUmF0ZSkgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICc0ODAwMCBvciA0NDEwMCBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIHJlY29yZGluZ1NhbXBsZVJhdGVzJyk7XG4gICAgfVxuXG4gICAgdGhpcy5zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTtcbiAgICBpZiAoW1xuICAgICAgdGhpcy5yZWNvcmRpbmdTYW1wbGVSYXRlLFxuICAgICAgdGhpcy5yZWNvcmRpbmdTYW1wbGVSYXRlIC8gMixcbiAgICAgIHRoaXMucmVjb3JkaW5nU2FtcGxlUmF0ZSAvIDRcbiAgICBdLmluZGV4T2YodGhpcy5zYW1wbGVSYXRlKSA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ3NhbXBsZVJhdGUgbXVzdCBiZSBlcXVhbCwgaGFsZiBvciBhIHF1YXJ0ZXIgb2YgdGhlICcgK1xuICAgICAgICAncmVjb3JkaW5nIHNhbXBsZSByYXRlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFubmVscyA9IGNoYW5uZWxzO1xuICAgIHRoaXMucmVjb3JkaW5nID0gZmFsc2U7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnJlY0xlbmd0aCA9IDA7XG4gICAgdGhpcy5yZWNCdWZmZXJzTCA9IFtdO1xuICAgIHRoaXMucmVjQnVmZmVyc1IgPSBbXTtcbiAgfVxuXG4gIHJlY29yZChsZWZ0LCByaWdodCkge1xuICAgIHRoaXMucmVjQnVmZmVyc0wucHVzaChsZWZ0KTtcbiAgICB0aGlzLnJlY0J1ZmZlcnNSLnB1c2gocmlnaHQpO1xuICAgIHRoaXMucmVjTGVuZ3RoICs9IGxlZnQubGVuZ3RoO1xuICB9XG5cbiAgcmVjb3JkU3RyZWFtaW5nKGxlZnQsIHJpZ2h0LCBjYWxsYmFjaykge1xuICAgIGZ1bmN0aW9uIGNvbnZlcnRGbG9hdDMyVG9JbnQxNihidWZmZXIpIHtcbiAgICAgIGxldCBsID0gYnVmZmVyLmxlbmd0aDtcbiAgICAgIGNvbnN0IGJ1ZiA9IG5ldyBJbnQxNkFycmF5KGwpO1xuICAgICAgd2hpbGUgKGwtLSkge1xuICAgICAgICBidWZbbF0gPSBNYXRoLm1pbigxLCBidWZmZXJbbF0pICogMHg3RkZGO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJ1Zi5idWZmZXI7XG4gICAgfVxuICAgIC8vIEJvdGggdGhlIGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWwncyBkYXRhIGlzIGEgdmlldyAoRmxvYXQzMkFycmF5KVxuICAgIC8vIG9uIHRvcCBvZiB0aGUgYnVmZmVyIChBcnJheUJ1ZmZlcikuIEVhY2ggYnVmZmVyJ3MgZWxlbWVudCBzaG91bGRcbiAgICAvLyBoYXZlIF92YWx1ZSBiZXR3ZWVuIC0xIGFuZCAxLlxuICAgIC8vIFRoZSBhdWRpbyB0byBleHBvcnQgYXJlIDE2IGJpdCBQQ00gc2FtcGxlcyB0aGF0IGFyZSB3cmFwcGVkIGluXG4gICAgLy8gYSBXQVZFIGZpbGUgYXQgdGhlIHNlcnZlci4gVGhlcmVmb3JlIGNvbnZlcnQgZnJvbSBmbG9hdCBoZXJlLlxuICAgIGNvbnN0IGNvbnZlcnRlZCA9IGNvbnZlcnRGbG9hdDMyVG9JbnQxNihsZWZ0KTtcbiAgICBjYWxsYmFjayhjb252ZXJ0ZWQpO1xuICB9XG5cbiAgZXhwb3J0V0FWKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgYnVmZmVyTCA9IFdhdmVQYWNrZXIubWVyZ2VCdWZmZXJzKHRoaXMucmVjQnVmZmVyc0wsIHRoaXMucmVjTGVuZ3RoKTtcbiAgICBjb25zdCBidWZmZXJSID0gV2F2ZVBhY2tlci5tZXJnZUJ1ZmZlcnModGhpcy5yZWNCdWZmZXJzUiwgdGhpcy5yZWNMZW5ndGgpO1xuICAgIGNvbnN0IGludGVybGVhdmVkID0gdGhpcy5pbnRlcmxlYXZlKGJ1ZmZlckwsIGJ1ZmZlclIpO1xuICAgIGNvbnN0IGRhdGF2aWV3ID0gdGhpcy5lbmNvZGVXQVYoaW50ZXJsZWF2ZWQpO1xuICAgIGNvbnN0IGF1ZGlvQmxvYiA9IG5ldyBCbG9iKFtkYXRhdmlld10sIHtcbiAgICAgIHR5cGU6ICdhdWRpby93YXYnXG4gICAgfSk7XG4gICAgY2FsbGJhY2soYXVkaW9CbG9iKTtcbiAgfVxuXG5cbiAgZXhwb3J0TW9ub1dBVihjYWxsYmFjaykge1xuICAgIGNvbnN0IGJ1ZmZlckwgPSBXYXZlUGFja2VyLm1lcmdlQnVmZmVycyh0aGlzLnJlY0J1ZmZlcnNMLCB0aGlzLnJlY0xlbmd0aCk7XG4gICAgY29uc3QgZGF0YXZpZXcgPSB0aGlzLmVuY29kZVdBVihidWZmZXJMLCB0cnVlKTtcbiAgICBjb25zdCBhdWRpb0Jsb2IgPSBuZXcgQmxvYihbZGF0YXZpZXddLCB7XG4gICAgICB0eXBlOiAnYXVkaW8vd2F2J1xuICAgIH0pO1xuICAgIGNhbGxiYWNrKGF1ZGlvQmxvYik7XG4gIH1cblxuICAvKipcbiAgICogV3JhcCB0aGUgcmF3IGF1ZGlvIGluIGEgaGVhZGVyIHRvIG1ha2UgaXQgYSBXQVZFIGZvcm1hdC5cbiAgICpcbiAgICogU3BlY3M6IHtAbGluayBodHRwczovL2Njcm1hLnN0YW5mb3JkLmVkdS9jb3Vyc2VzLzQyMi9wcm9qZWN0cy9XYXZlRm9ybWF0L30uXG4gICAqXG4gICAqIEBwYXJhbSB7W119IGludGVybGVhdmVkIC0gQXJyYXkgb2YgaW50ZXJsZWF2ZWQgYXVkaW8uXG4gICAqL1xuICBlbmNvZGVXQVYoaW50ZXJsZWF2ZWQpIHtcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNDQgKyBpbnRlcmxlYXZlZC5sZW5ndGggKiAyKTtcbiAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7XG5cbiAgICAvLyBSSUZGIGNodW5rIGRlc2NyaXB0b3JcbiAgICBXYXZlUGFja2VyLndyaXRlVVRGQnl0ZXModmlldywgMCwgJ1JJRkYnKTtcbiAgICAvLyBmaWxlIGxlbmd0aFxuICAgIHZpZXcuc2V0VWludDMyKDQsIDQ0ICsgaW50ZXJsZWF2ZWQubGVuZ3RoICogMiwgdHJ1ZSk7XG4gICAgLy8gUklGRiB0eXBlXG4gICAgV2F2ZVBhY2tlci53cml0ZVVURkJ5dGVzKHZpZXcsIDgsICdXQVZFJyk7XG4gICAgLy8gRk1UIHN1Yi1jaHVua1xuICAgIFdhdmVQYWNrZXIud3JpdGVVVEZCeXRlcyh2aWV3LCAxMiwgJ2ZtdCAnKTtcbiAgICAvLyBmb3JtYXQgY2h1bmsgbGVuZ3RoXG4gICAgdmlldy5zZXRVaW50MzIoMTYsIDE2LCB0cnVlKTtcbiAgICAvLyBzYW1wbGUgZm9ybWF0IChyYXcpXG4gICAgdmlldy5zZXRVaW50MTYoMjAsIDEsIHRydWUpO1xuICAgIC8vIGNoYW5uZWwgY291bnQuIG1vbm89MSwgc3RlcmVvPTJcbiAgICB2aWV3LnNldFVpbnQxNigyMiwgdGhpcy5jaGFubmVscywgdHJ1ZSk7XG4gICAgLy8gc2FtcGxlIHJhdGVcbiAgICB2aWV3LnNldFVpbnQzMigyNCwgdGhpcy5zYW1wbGVSYXRlLCB0cnVlKTtcbiAgICAvLyBieXRlIHJhdGUgKHNhbXBsZSByYXRlICogYmxvY2sgYWxpZ24pXG4gICAgdmlldy5zZXRVaW50MzIoMjgsIHRoaXMuc2FtcGxlUmF0ZSAqIDIgKiB0aGlzLmNoYW5uZWxzLCB0cnVlKTtcbiAgICAvLyBibG9jayBhbGlnbiAoY2hhbm5lbCBjb3VudCAqIGJ5dGVzIHBlciBzYW1wbGUpXG4gICAgdmlldy5zZXRVaW50MTYoMzIsIHRoaXMuY2hhbm5lbHMgKiAyLCB0cnVlKTtcbiAgICAvLyBiaXRzIHBlciBzYW1wbGVcbiAgICB2aWV3LnNldFVpbnQxNigzNCwgMTYsIHRydWUpO1xuICAgIC8vIGRhdGEgc3ViLWNodW5rXG4gICAgV2F2ZVBhY2tlci53cml0ZVVURkJ5dGVzKHZpZXcsIDM2LCAnZGF0YScpO1xuICAgIHZpZXcuc2V0VWludDMyKDQwLCBpbnRlcmxlYXZlZC5sZW5ndGggKiAyLCB0cnVlKTtcblxuICAgIC8vIHdyaXRlIHRoZSBQQ00gc2FtcGxlc1xuICAgIGNvbnN0IGxuZyA9IGludGVybGVhdmVkLmxlbmd0aDtcbiAgICBsZXQgaW5kZXggPSA0NDtcbiAgICBjb25zdCB2b2x1bWUgPSAxO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG5nOyBpKyspIHtcbiAgICAgIHZpZXcuc2V0SW50MTYoaW5kZXgsIGludGVybGVhdmVkW2ldICogKDB4N0ZGRiAqIHZvbHVtZSksIHRydWUpO1xuICAgICAgaW5kZXggKz0gMjtcbiAgICB9XG5cbiAgICAvLyBXcmFwIGluIEhUTUw1IEJsb2IgZm9yIHRyYW5zcG9ydFxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdmlld10sIHtcbiAgICAgIHR5cGU6ICdhdWRpby93YXYnXG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coJ1JlY29yZGVkIGF1ZGlvL3dhdiBCbG9iIHNpemU6ICcgKyBibG9iLnNpemUpO1xuICAgIHJldHVybiBibG9iO1xuICB9XG5cbiAgaW50ZXJsZWF2ZShsZWZ0Q2hhbm5lbCwgcmlnaHRDaGFubmVsKSB7XG4gICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgbGV0IGxlbmd0aCA9IG51bGw7XG4gICAgbGV0IGkgPSBudWxsO1xuICAgIGxldCBpbnB1dEluZGV4ID0gbnVsbDtcbiAgICBpZiAodGhpcy5jaGFubmVscyA9PT0gMSkge1xuICAgICAgLy8gS2VlcCBib3RoIHJpZ2h0IGFuZCBsZWZ0IGlucHV0IGNoYW5uZWxzLCBidXQgXCJwYW5cIiB0aGVtIGJvdGhcbiAgICAgIC8vIGluIHRoZSBjZW50ZXIgKHRvIHRoZSBzaW5nbGUgbW9ubyBjaGFubmVsKVxuICAgICAgbGVuZ3RoID0gbGVmdENoYW5uZWwubGVuZ3RoO1xuICAgICAgcmVzdWx0ID0gbmV3IEZsb2F0MzJBcnJheShsZW5ndGgpO1xuICAgICAgZm9yIChpID0gMDsgaSA8IGxlZnRDaGFubmVsLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHJlc3VsdFtpXSA9IDAuNSAqIChsZWZ0Q2hhbm5lbFtpXSArIHJpZ2h0Q2hhbm5lbFtpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCA9IGxlZnRDaGFubmVsLmxlbmd0aCArIHJpZ2h0Q2hhbm5lbC5sZW5ndGg7XG4gICAgICByZXN1bHQgPSBuZXcgRmxvYXQzMkFycmF5KGxlbmd0aCk7XG5cbiAgICAgIGlucHV0SW5kZXggPSAwO1xuICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDspIHtcbiAgICAgICAgcmVzdWx0W2krK10gPSBsZWZ0Q2hhbm5lbFtpbnB1dEluZGV4XTtcbiAgICAgICAgcmVzdWx0W2krK10gPSByaWdodENoYW5uZWxbaW5wdXRJbmRleF07XG4gICAgICAgIGlucHV0SW5kZXgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbHNvIGRvd25zYW1wbGUgaWYgbmVlZGVkLlxuICAgIGlmICh0aGlzLnJlY29yZGluZ1NhbXBsZVJhdGUgIT09IHRoaXMuc2FtcGxlUmF0ZSkge1xuICAgICAgLy8gRS5nLiA0NDEwMC8xMTAyNSA9IDRcbiAgICAgIGNvbnN0IHJlZHVjZUJ5ID0gdGhpcy5yZWNvcmRpbmdTYW1wbGVSYXRlIC8gdGhpcy5zYW1wbGVSYXRlO1xuICAgICAgY29uc3QgcmVzYW1wbGVkUmVzdWx0ID0gbmV3IEZsb2F0MzJBcnJheShsZW5ndGggLyByZWR1Y2VCeSk7XG5cbiAgICAgIGlucHV0SW5kZXggPSAwO1xuICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDspIHtcbiAgICAgICAgbGV0IHZhbHVlID0gMDtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByZWR1Y2VCeTsgaisrKSB7XG4gICAgICAgICAgdmFsdWUgKz0gcmVzdWx0W2lucHV0SW5kZXgrK107XG4gICAgICAgIH1cbiAgICAgICAgcmVzYW1wbGVkUmVzdWx0W2krK10gPSAxIC8gcmVkdWNlQnkgKiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNhbXBsZWRSZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdGF0aWMgbWVyZ2VCdWZmZXJzKGNoYW5uZWxCdWZmZXIsIHJlY29yZGluZ0xlbmd0aCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBGbG9hdDMyQXJyYXkocmVjb3JkaW5nTGVuZ3RoKTtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBjb25zdCBsbmcgPSBjaGFubmVsQnVmZmVyLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxuZzsgaSsrKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBjaGFubmVsQnVmZmVyW2ldO1xuICAgICAgcmVzdWx0LnNldChidWZmZXIsIG9mZnNldCk7XG4gICAgICBvZmZzZXQgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyB3cml0ZVVURkJ5dGVzKHZpZXcsIG9mZnNldCwgc3RyaW5nKSB7XG4gICAgY29uc3QgbG5nID0gc3RyaW5nLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxuZzsgaSsrKSB7XG4gICAgICB2aWV3LnNldFVpbnQ4KG9mZnNldCArIGksIHN0cmluZy5jaGFyQ29kZUF0KGkpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby93YXZlLXBhY2tlci5qcyJdLCJuYW1lcyI6WyJjb25jYXRBcnJheUJ1ZmZlcnMiLCJsZW5ndGgiLCJidWZmZXJzIiwiZm9yRWFjaCIsImJ1ZmZlciIsImJ5dGVMZW5ndGgiLCJyZXN1bHQiLCJVaW50OEFycmF5Iiwib2Zmc2V0Iiwic2V0IiwiV2F2ZVBhY2tlciIsInJlY29yZGluZ1NhbXBsZVJhdGUiLCJzYW1wbGVSYXRlIiwiY2hhbm5lbHMiLCJyZWNvcmRpbmciLCJyZWNMZW5ndGgiLCJyZWNCdWZmZXJzTCIsInJlY0J1ZmZlcnNSIiwiaW5pdCIsImluZGV4T2YiLCJFcnJvciIsImNsZWFyIiwicmVjb3JkIiwibGVmdCIsInJpZ2h0IiwicHVzaCIsInJlY29yZFN0cmVhbWluZyIsImNhbGxiYWNrIiwiY29udmVydEZsb2F0MzJUb0ludDE2IiwibCIsImJ1ZiIsIkludDE2QXJyYXkiLCJNYXRoIiwibWluIiwiY29udmVydGVkIiwiZXhwb3J0V0FWIiwiYnVmZmVyTCIsIm1lcmdlQnVmZmVycyIsImJ1ZmZlclIiLCJpbnRlcmxlYXZlZCIsImludGVybGVhdmUiLCJkYXRhdmlldyIsImVuY29kZVdBViIsImF1ZGlvQmxvYiIsIkJsb2IiLCJ0eXBlIiwiZXhwb3J0TW9ub1dBViIsIkFycmF5QnVmZmVyIiwidmlldyIsIkRhdGFWaWV3Iiwid3JpdGVVVEZCeXRlcyIsInNldFVpbnQzMiIsInNldFVpbnQxNiIsImxuZyIsImluZGV4Iiwidm9sdW1lIiwiaSIsInNldEludDE2IiwiYmxvYiIsImNvbnNvbGUiLCJsb2ciLCJzaXplIiwibGVmdENoYW5uZWwiLCJyaWdodENoYW5uZWwiLCJpbnB1dEluZGV4IiwiRmxvYXQzMkFycmF5IiwicmVkdWNlQnkiLCJyZXNhbXBsZWRSZXN1bHQiLCJ2YWx1ZSIsImoiLCJjaGFubmVsQnVmZmVyIiwicmVjb3JkaW5nTGVuZ3RoIiwic3RyaW5nIiwic2V0VWludDgiLCJjaGFyQ29kZUF0Il0sIm1h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Rzs7Ozs7a0JBL01rQjlDLFUiLCJmaWxlIjoid2F2ZS1wYWNrZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFV0aWwgZnVuY3Rpb24gdG8gY29uY2F0IHR3byBBcnJheUJ1ZmZlcnMuXG4gKlxuICogQHBhcmFtIHtbQXJyYXlCdWZmZXJdfSBidWZmZXJzIC0gQXJyYXkgd2l0aCBidWZmZXJzIHRvIGNvbmNhdC5cbiAqXG4gKiBAcmV0dXJuIHtBcnJheUJ1ZmZlcn0gLSBDb25jYXRlbmF0ZWQgQXJyYXlCdWZmZXJcbiAqL1xuZnVuY3Rpb24gY29uY2F0QXJyYXlCdWZmZXJzKC4uLmJ1ZmZlcnMpIHtcbiAgLy8gRGV0ZXJtaW5lIHRoZSBsZW5ndGhcbiAgbGV0IGxlbmd0aCA9IDA7XG4gIGJ1ZmZlcnMuZm9yRWFjaChidWZmZXIgPT4ge1xuICAgIGxlbmd0aCArPSBidWZmZXIuYnl0ZUxlbmd0aDtcbiAgfSk7XG5cbiAgLy8gUHJlcGFyZSB0aGUgY29uY2F0ZW5hdGVkIEFycmF5XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KGxlbmd0aCk7XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGFsbCBpdGVtcyBhbmQgcHV0IHRoZW0gaW4gdGhlIHJlc3VsdFxuICBsZXQgb2Zmc2V0ID0gMDtcbiAgYnVmZmVycy5mb3JFYWNoKGJ1ZmZlciA9PiB7XG4gICAgcmVzdWx0LnNldChidWZmZXIsIG9mZnNldCk7XG4gICAgb2Zmc2V0ICs9IGJ1ZmZlci5ieXRlTGVuZ3RoO1xuICB9KTtcblxuICAvLyBSZXR1cm4gdGhlIEFycmF5QnVmZmVyXG4gIHJldHVybiByZXN1bHQuYnVmZmVyO1xufVxuXG4vKipcbiAqIFBhY2tlciBjbGFzcyBmb3IgYXVkaW8gcGFja2luZ1xuICpcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhdmVQYWNrZXIge1xuICByZWNvcmRpbmdTYW1wbGVSYXRlID0gbnVsbDtcbiAgc2FtcGxlUmF0ZSA9IG51bGw7XG4gIGNoYW5uZWxzID0gbnVsbDtcbiAgcmVjb3JkaW5nID0gZmFsc2U7XG4gIHJlY0xlbmd0aCA9IDA7XG4gIHJlY0J1ZmZlcnNMID0gW107XG4gIHJlY0J1ZmZlcnNSID0gW107XG5cbiAgLyoqXG4gICAqIFN0b3AgcmVjb3JkaW5nIGF1ZGlvLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcmVjb3JkaW5nU2FtcGxlUmF0ZSAtIFNhbXBsZSByYXRlIG9mIHJlY29yZGluZy4gTXVzdCBiZSBlaXRoZXIgNDgwMDAgb3IgNDQxMDAuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzYW1wbGVSYXRlIC0gU2FtcGxlIHJhdGUuIE11c3QgYmUgaGFsZiBvciBhIHF1YXJ0ZXIgb2YgdGhlIHJlY29yZGluZyBzYW1wbGUgcmF0ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGNoYW5uZWxzIC0gQW1vdW50IG9mIGF1ZGlvIGNoYW5uZWxzLiAxIG9yIDIuXG4gICAqL1xuICBpbml0KHJlY29yZGluZ1NhbXBsZVJhdGUsIHNhbXBsZVJhdGUsIGNoYW5uZWxzKSB7XG4gICAgdGhpcy5yZWNvcmRpbmdTYW1wbGVSYXRlID0gcmVjb3JkaW5nU2FtcGxlUmF0ZTtcbiAgICBpZiAoWzQ4MDAwLCA0NDEwMF0uaW5kZXhPZih0aGlzLnJlY29yZGluZ1NhbXBsZVJhdGUpID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnNDgwMDAgb3IgNDQxMDAgYXJlIHRoZSBvbmx5IHN1cHBvcnRlZCByZWNvcmRpbmdTYW1wbGVSYXRlcycpO1xuICAgIH1cblxuICAgIHRoaXMuc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7XG4gICAgaWYgKFtcbiAgICAgIHRoaXMucmVjb3JkaW5nU2FtcGxlUmF0ZSxcbiAgICAgIHRoaXMucmVjb3JkaW5nU2FtcGxlUmF0ZSAvIDIsXG4gICAgICB0aGlzLnJlY29yZGluZ1NhbXBsZVJhdGUgLyA0XG4gICAgXS5pbmRleE9mKHRoaXMuc2FtcGxlUmF0ZSkgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdzYW1wbGVSYXRlIG11c3QgYmUgZXF1YWwsIGhhbGYgb3IgYSBxdWFydGVyIG9mIHRoZSAnICtcbiAgICAgICAgJ3JlY29yZGluZyBzYW1wbGUgcmF0ZScpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbm5lbHMgPSBjaGFubmVscztcbiAgICB0aGlzLnJlY29yZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5yZWNMZW5ndGggPSAwO1xuICAgIHRoaXMucmVjQnVmZmVyc0wgPSBbXTtcbiAgICB0aGlzLnJlY0J1ZmZlcnNSID0gW107XG4gIH1cblxuICByZWNvcmQobGVmdCwgcmlnaHQpIHtcbiAgICB0aGlzLnJlY0J1ZmZlcnNMLnB1c2gobGVmdCk7XG4gICAgdGhpcy5yZWNCdWZmZXJzUi5wdXNoKHJpZ2h0KTtcbiAgICB0aGlzLnJlY0xlbmd0aCArPSBsZWZ0Lmxlbmd0aDtcbiAgfVxuXG4gIHJlY29yZFN0cmVhbWluZyhsZWZ0LCByaWdodCwgY2FsbGJhY2spIHtcbiAgICBmdW5jdGlvbiBjb252ZXJ0RmxvYXQzMlRvSW50MTYoYnVmZmVyKSB7XG4gICAgICBsZXQgbCA9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBjb25zdCBidWYgPSBuZXcgSW50MTZBcnJheShsKTtcbiAgICAgIHdoaWxlIChsLS0pIHtcbiAgICAgICAgYnVmW2xdID0gTWF0aC5taW4oMSwgYnVmZmVyW2xdKSAqIDB4N0ZGRjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBidWYuYnVmZmVyO1xuICAgIH1cblxuICAgIC8vIEJvdGggdGhlIGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWwncyBkYXRhIGlzIGEgdmlldyAoRmxvYXQzMkFycmF5KVxuICAgIC8vIG9uIHRvcCBvZiB0aGUgYnVmZmVyIChBcnJheUJ1ZmZlcikuIEVhY2ggYnVmZmVyJ3MgZWxlbWVudCBzaG91bGRcbiAgICAvLyBoYXZlIF92YWx1ZSBiZXR3ZWVuIC0xIGFuZCAxLlxuICAgIC8vIFRoZSBhdWRpbyB0byBleHBvcnQgYXJlIDE2IGJpdCBQQ00gc2FtcGxlcyB0aGF0IGFyZSB3cmFwcGVkIGluXG4gICAgLy8gYSBXQVZFIGZpbGUgYXQgdGhlIHNlcnZlci4gVGhlcmVmb3JlIGNvbnZlcnQgZnJvbSBmbG9hdCBoZXJlLlxuICAgIC8vIFdlIGNob29zZSBvbmx5IG9uZSBjaGFubmVsIChsZWZ0KSBiZWNhdXNlIHRoZSBiYWNrZW5kIGNhbiBvbmx5XG4gICAgLy8gcHJvY2VzcyBtb25vIHNvdW5kLiBMZWZ0IGlzIGp1c3QgYSByYW5kb20gY2hvaWNlIHRoZW4uLi5cbiAgICBjb25zdCBjb252ZXJ0ZWQgPSBjb252ZXJ0RmxvYXQzMlRvSW50MTYobGVmdCk7XG4gICAgY2FsbGJhY2soY29udmVydGVkKTtcbiAgfVxuXG4gIGV4cG9ydFdBVihjYWxsYmFjaykge1xuICAgIGNvbnN0IGJ1ZmZlckwgPSBXYXZlUGFja2VyLm1lcmdlQnVmZmVycyh0aGlzLnJlY0J1ZmZlcnNMLCB0aGlzLnJlY0xlbmd0aCk7XG4gICAgY29uc3QgYnVmZmVyUiA9IFdhdmVQYWNrZXIubWVyZ2VCdWZmZXJzKHRoaXMucmVjQnVmZmVyc1IsIHRoaXMucmVjTGVuZ3RoKTtcbiAgICBjb25zdCBpbnRlcmxlYXZlZCA9IHRoaXMuaW50ZXJsZWF2ZShidWZmZXJMLCBidWZmZXJSKTtcbiAgICBjb25zdCBkYXRhdmlldyA9IHRoaXMuZW5jb2RlV0FWKGludGVybGVhdmVkKTtcbiAgICBjb25zdCBhdWRpb0Jsb2IgPSBuZXcgQmxvYihbZGF0YXZpZXddLCB7XG4gICAgICB0eXBlOiAnYXVkaW8vd2F2J1xuICAgIH0pO1xuICAgIGNhbGxiYWNrKGF1ZGlvQmxvYik7XG4gIH1cblxuXG4gIGV4cG9ydE1vbm9XQVYoY2FsbGJhY2spIHtcbiAgICBjb25zdCBidWZmZXJMID0gV2F2ZVBhY2tlci5tZXJnZUJ1ZmZlcnModGhpcy5yZWNCdWZmZXJzTCwgdGhpcy5yZWNMZW5ndGgpO1xuICAgIGNvbnN0IGRhdGF2aWV3ID0gdGhpcy5lbmNvZGVXQVYoYnVmZmVyTCwgdHJ1ZSk7XG4gICAgY29uc3QgYXVkaW9CbG9iID0gbmV3IEJsb2IoW2RhdGF2aWV3XSwge1xuICAgICAgdHlwZTogJ2F1ZGlvL3dhdidcbiAgICB9KTtcbiAgICBjYWxsYmFjayhhdWRpb0Jsb2IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXAgdGhlIHJhdyBhdWRpbyBpbiBhIGhlYWRlciB0byBtYWtlIGl0IGEgV0FWRSBmb3JtYXQuXG4gICAqXG4gICAqIFNwZWNzOiB7QGxpbmsgaHR0cHM6Ly9jY3JtYS5zdGFuZm9yZC5lZHUvY291cnNlcy80MjIvcHJvamVjdHMvV2F2ZUZvcm1hdC99LlxuICAgKlxuICAgKiBAcGFyYW0ge1tdfSBpbnRlcmxlYXZlZCAtIEFycmF5IG9mIGludGVybGVhdmVkIGF1ZGlvLlxuICAgKi9cbiAgZW5jb2RlV0FWKGludGVybGVhdmVkKSB7XG4gICAgY29uc3QgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDQ0ICsgaW50ZXJsZWF2ZWQubGVuZ3RoICogMik7XG4gICAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIpO1xuXG4gICAgLy8gUklGRiBjaHVuayBkZXNjcmlwdG9yXG4gICAgV2F2ZVBhY2tlci53cml0ZVVURkJ5dGVzKHZpZXcsIDAsICdSSUZGJyk7XG4gICAgLy8gZmlsZSBsZW5ndGhcbiAgICB2aWV3LnNldFVpbnQzMig0LCA0NCArIGludGVybGVhdmVkLmxlbmd0aCAqIDIsIHRydWUpO1xuICAgIC8vIFJJRkYgdHlwZVxuICAgIFdhdmVQYWNrZXIud3JpdGVVVEZCeXRlcyh2aWV3LCA4LCAnV0FWRScpO1xuICAgIC8vIEZNVCBzdWItY2h1bmtcbiAgICBXYXZlUGFja2VyLndyaXRlVVRGQnl0ZXModmlldywgMTIsICdmbXQgJyk7XG4gICAgLy8gZm9ybWF0IGNodW5rIGxlbmd0aFxuICAgIHZpZXcuc2V0VWludDMyKDE2LCAxNiwgdHJ1ZSk7XG4gICAgLy8gc2FtcGxlIGZvcm1hdCAocmF3KVxuICAgIHZpZXcuc2V0VWludDE2KDIwLCAxLCB0cnVlKTtcbiAgICAvLyBjaGFubmVsIGNvdW50LiBtb25vPTEsIHN0ZXJlbz0yXG4gICAgdmlldy5zZXRVaW50MTYoMjIsIHRoaXMuY2hhbm5lbHMsIHRydWUpO1xuICAgIC8vIHNhbXBsZSByYXRlXG4gICAgdmlldy5zZXRVaW50MzIoMjQsIHRoaXMuc2FtcGxlUmF0ZSwgdHJ1ZSk7XG4gICAgLy8gYnl0ZSByYXRlIChzYW1wbGUgcmF0ZSAqIGJsb2NrIGFsaWduKVxuICAgIHZpZXcuc2V0VWludDMyKDI4LCB0aGlzLnNhbXBsZVJhdGUgKiAyICogdGhpcy5jaGFubmVscywgdHJ1ZSk7XG4gICAgLy8gYmxvY2sgYWxpZ24gKGNoYW5uZWwgY291bnQgKiBieXRlcyBwZXIgc2FtcGxlKVxuICAgIHZpZXcuc2V0VWludDE2KDMyLCB0aGlzLmNoYW5uZWxzICogMiwgdHJ1ZSk7XG4gICAgLy8gYml0cyBwZXIgc2FtcGxlXG4gICAgdmlldy5zZXRVaW50MTYoMzQsIDE2LCB0cnVlKTtcbiAgICAvLyBkYXRhIHN1Yi1jaHVua1xuICAgIFdhdmVQYWNrZXIud3JpdGVVVEZCeXRlcyh2aWV3LCAzNiwgJ2RhdGEnKTtcbiAgICB2aWV3LnNldFVpbnQzMig0MCwgaW50ZXJsZWF2ZWQubGVuZ3RoICogMiwgdHJ1ZSk7XG5cbiAgICAvLyB3cml0ZSB0aGUgUENNIHNhbXBsZXNcbiAgICBjb25zdCBsbmcgPSBpbnRlcmxlYXZlZC5sZW5ndGg7XG4gICAgbGV0IGluZGV4ID0gNDQ7XG4gICAgY29uc3Qgdm9sdW1lID0gMTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxuZzsgaSsrKSB7XG4gICAgICB2aWV3LnNldEludDE2KGluZGV4LCBpbnRlcmxlYXZlZFtpXSAqICgweDdGRkYgKiB2b2x1bWUpLCB0cnVlKTtcbiAgICAgIGluZGV4ICs9IDI7XG4gICAgfVxuXG4gICAgLy8gV3JhcCBpbiBIVE1MNSBCbG9iIGZvciB0cmFuc3BvcnRcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3ZpZXddLCB7XG4gICAgICB0eXBlOiAnYXVkaW8vd2F2J1xuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKCdSZWNvcmRlZCBhdWRpby93YXYgQmxvYiBzaXplOiAnICsgYmxvYi5zaXplKTtcbiAgICByZXR1cm4gYmxvYjtcbiAgfVxuXG4gIGludGVybGVhdmUobGVmdENoYW5uZWwsIHJpZ2h0Q2hhbm5lbCkge1xuICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgIGxldCBsZW5ndGggPSBudWxsO1xuICAgIGxldCBpID0gbnVsbDtcbiAgICBsZXQgaW5wdXRJbmRleCA9IG51bGw7XG4gICAgaWYgKHRoaXMuY2hhbm5lbHMgPT09IDEpIHtcbiAgICAgIC8vIEtlZXAgYm90aCByaWdodCBhbmQgbGVmdCBpbnB1dCBjaGFubmVscywgYnV0IFwicGFuXCIgdGhlbSBib3RoXG4gICAgICAvLyBpbiB0aGUgY2VudGVyICh0byB0aGUgc2luZ2xlIG1vbm8gY2hhbm5lbClcbiAgICAgIGxlbmd0aCA9IGxlZnRDaGFubmVsLmxlbmd0aDtcbiAgICAgIHJlc3VsdCA9IG5ldyBGbG9hdDMyQXJyYXkobGVuZ3RoKTtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBsZWZ0Q2hhbm5lbC5sZW5ndGg7ICsraSkge1xuICAgICAgICByZXN1bHRbaV0gPSAwLjUgKiAobGVmdENoYW5uZWxbaV0gKyByaWdodENoYW5uZWxbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSBsZWZ0Q2hhbm5lbC5sZW5ndGggKyByaWdodENoYW5uZWwubGVuZ3RoO1xuICAgICAgcmVzdWx0ID0gbmV3IEZsb2F0MzJBcnJheShsZW5ndGgpO1xuXG4gICAgICBpbnB1dEluZGV4ID0gMDtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7KSB7XG4gICAgICAgIHJlc3VsdFtpKytdID0gbGVmdENoYW5uZWxbaW5wdXRJbmRleF07XG4gICAgICAgIHJlc3VsdFtpKytdID0gcmlnaHRDaGFubmVsW2lucHV0SW5kZXhdO1xuICAgICAgICBpbnB1dEluZGV4Kys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWxzbyBkb3duc2FtcGxlIGlmIG5lZWRlZC5cbiAgICBpZiAodGhpcy5yZWNvcmRpbmdTYW1wbGVSYXRlICE9PSB0aGlzLnNhbXBsZVJhdGUpIHtcbiAgICAgIC8vIEUuZy4gNDQxMDAvMTEwMjUgPSA0XG4gICAgICBjb25zdCByZWR1Y2VCeSA9IHRoaXMucmVjb3JkaW5nU2FtcGxlUmF0ZSAvIHRoaXMuc2FtcGxlUmF0ZTtcbiAgICAgIGNvbnN0IHJlc2FtcGxlZFJlc3VsdCA9IG5ldyBGbG9hdDMyQXJyYXkobGVuZ3RoIC8gcmVkdWNlQnkpO1xuXG4gICAgICBpbnB1dEluZGV4ID0gMDtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7KSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IDA7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVkdWNlQnk7IGorKykge1xuICAgICAgICAgIHZhbHVlICs9IHJlc3VsdFtpbnB1dEluZGV4KytdO1xuICAgICAgICB9XG4gICAgICAgIHJlc2FtcGxlZFJlc3VsdFtpKytdID0gMSAvIHJlZHVjZUJ5ICogdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzYW1wbGVkUmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RhdGljIG1lcmdlQnVmZmVycyhjaGFubmVsQnVmZmVyLCByZWNvcmRpbmdMZW5ndGgpIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRmxvYXQzMkFycmF5KHJlY29yZGluZ0xlbmd0aCk7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgY29uc3QgbG5nID0gY2hhbm5lbEJ1ZmZlci5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsbmc7IGkrKykge1xuICAgICAgY29uc3QgYnVmZmVyID0gY2hhbm5lbEJ1ZmZlcltpXTtcbiAgICAgIHJlc3VsdC5zZXQoYnVmZmVyLCBvZmZzZXQpO1xuICAgICAgb2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdGF0aWMgd3JpdGVVVEZCeXRlcyh2aWV3LCBvZmZzZXQsIHN0cmluZykge1xuICAgIGNvbnN0IGxuZyA9IHN0cmluZy5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsbmc7IGkrKykge1xuICAgICAgdmlldy5zZXRVaW50OChvZmZzZXQgKyBpLCBzdHJpbmcuY2hhckNvZGVBdChpKSk7XG4gICAgfVxuICB9XG59XG4iXX0= |
@@ -19,6 +19,7 @@ 'use strict'; | ||
* @param {GainNode} source - The source to record. | ||
* @param {AudioContext} ctx - The AudioContext to use. | ||
* @param {?Function} streamingCallback - The callback to deliver audio chunks to. | ||
* @param {WavePacker} packer - Packer to use. | ||
*/ | ||
function WebAudioRecorder(source, streamingCallback, packer) { | ||
function WebAudioRecorder(source, ctx, streamingCallback, packer) { | ||
_classCallCheck(this, WebAudioRecorder); | ||
@@ -28,3 +29,3 @@ | ||
var context = source.context; | ||
var context = ctx; | ||
// For the best quality, use the samplerate in which audio is recorded. | ||
@@ -61,8 +62,8 @@ this.recordedSampleRate = context.sampleRate; | ||
var self = this; | ||
recorder.addEventListener('audioprocess', function (e) { | ||
recorder.onaudioprocess = function (audioProcessing) { | ||
if (!self.recording) { | ||
return; | ||
} | ||
var left = e.inputBuffer.getChannelData(0); | ||
var right = e.inputBuffer.getChannelData(1); | ||
var left = audioProcessing.inputBuffer.getChannelData(0); | ||
var right = audioProcessing.inputBuffer.getChannelData(1); | ||
// These returned channel buffers are pointers to the current samples | ||
@@ -77,19 +78,3 @@ // coming in. Make a snapshot (clone). The webworkers can't serialize | ||
} | ||
}); | ||
// recorder.onaudioprocess = function(e) { | ||
// if (!self.recording) { | ||
// return; | ||
// } | ||
// const left = e.inputBuffer.getChannelData(0); | ||
// const right = e.inputBuffer.getChannelData(1); | ||
// // These returned channel buffers are pointers to the current samples | ||
// // coming in. Make a snapshot (clone). The webworkers can't serialize | ||
// // the pointers. Well, Chrome and FF could, but Edge can't. | ||
// const leftClone = new Float32Array(left); | ||
// const rightClone = new Float32Array(right); | ||
// self.packer.record(leftClone, rightClone); | ||
// if (streamingCallback) { | ||
// self.packer.recordStreaming(leftClone, rightClone, streamingCallback); | ||
// } | ||
// }; | ||
}; | ||
@@ -167,2 +152,2 @@ source.connect(recorder); | ||
exports.default = WebAudioRecorder; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby93ZWItYXVkaW8tcmVjb3JkZXIuanMiXSwibmFtZXMiOlsiV2ViQXVkaW9SZWNvcmRlciIsInNvdXJjZSIsInN0cmVhbWluZ0NhbGxiYWNrIiwicGFja2VyIiwicmVjb3JkaW5nIiwiY29udGV4dCIsInJlY29yZGVkU2FtcGxlUmF0ZSIsInNhbXBsZVJhdGUiLCJjaGFubmVscyIsImNvbnNvbGUiLCJsb2ciLCJnZXRBdWRpb1NwZWNzIiwiYXVkaW9QYXJhbWV0ZXJzIiwiaW5pdCIsImJ1ZmZlclNpemUiLCJyZWNvcmRlciIsImNyZWF0ZVNjcmlwdFByb2Nlc3NvciIsIl9yZWNvcmRlciIsInNlbGYiLCJhZGRFdmVudExpc3RlbmVyIiwibGVmdCIsImUiLCJpbnB1dEJ1ZmZlciIsImdldENoYW5uZWxEYXRhIiwicmlnaHQiLCJsZWZ0Q2xvbmUiLCJGbG9hdDMyQXJyYXkiLCJyaWdodENsb25lIiwicmVjb3JkIiwicmVjb3JkU3RyZWFtaW5nIiwiY29ubmVjdCIsImRlc3RpbmF0aW9uIiwiYXVkaW9Gb3JtYXQiLCJzYW1wbGVXaWR0aCIsImZyYW1lUmF0ZSIsImNsZWFyIiwiZ2V0RW5jb2RlZEF1ZGlvIiwiY2FsbGJhY2siLCJleHBvcnRXQVYiLCJpc1JlY29yZGluZyIsInN0b3AiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0lBSXFCQSxnQjtBQUNuQjs7Ozs7Ozs7OztBQVVBLDRCQUFZQyxNQUFaLEVBQW9CQyxpQkFBcEIsRUFBdUNDLE1BQXZDLEVBQStDO0FBQUE7O0FBQzdDLFNBQUtDLFNBQUwsR0FBaUIsS0FBakI7O0FBRUEsUUFBTUMsVUFBVUosT0FBT0ksT0FBdkI7QUFDQTtBQUNBLFNBQUtDLGtCQUFMLEdBQTBCRCxRQUFRRSxVQUFsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQUtBLFVBQUwsR0FBa0IsS0FBS0Qsa0JBQUwsR0FBMEIsQ0FBNUM7QUFDQTtBQUNBLFNBQUtDLFVBQUwsR0FBa0JMLG9CQUFvQixLQUFLSSxrQkFBekIsR0FDaEIsS0FBS0MsVUFEUDs7QUFHQTtBQUNBLFNBQUtDLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDQUMsWUFBUUMsR0FBUixDQUFZLG1CQUNFLEtBQUtDLGFBQUwsR0FBcUJDLGVBQXJCLENBQXFDTCxVQURuRDs7QUFHQSxTQUFLSixNQUFMLEdBQWNBLE1BQWQ7QUFDQSxTQUFLQSxNQUFMLENBQVlVLElBQVosQ0FBaUIsS0FBS1Asa0JBQXRCLEVBQTBDLEtBQUtDLFVBQS9DLEVBQTJELEtBQUtDLFFBQWhFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU1NLGFBQWEsSUFBbkI7QUFDQSxRQUFNQyxXQUFXVixRQUFRVyxxQkFBUixDQUE4QkYsVUFBOUIsRUFBMEMsQ0FBMUMsRUFBNkMsQ0FBN0MsQ0FBakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQUtHLFNBQUwsR0FBaUJGLFFBQWpCOztBQUVBLFFBQU1HLE9BQU8sSUFBYjtBQUNBSCxhQUFTSSxnQkFBVCxDQUEwQixjQUExQixFQUEwQyxhQUFLO0FBQzdDLFVBQUksQ0FBQ0QsS0FBS2QsU0FBVixFQUFxQjtBQUNuQjtBQUNEO0FBQ0QsVUFBTWdCLE9BQU9DLEVBQUVDLFdBQUYsQ0FBY0MsY0FBZCxDQUE2QixDQUE3QixDQUFiO0FBQ0EsVUFBTUMsUUFBUUgsRUFBRUMsV0FBRixDQUFjQyxjQUFkLENBQTZCLENBQTdCLENBQWQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFNRSxZQUFZLElBQUlDLFlBQUosQ0FBaUJOLElBQWpCLENBQWxCO0FBQ0EsVUFBTU8sYUFBYSxJQUFJRCxZQUFKLENBQWlCRixLQUFqQixDQUFuQjtBQUNBTixXQUFLZixNQUFMLENBQVl5QixNQUFaLENBQW1CSCxTQUFuQixFQUE4QkUsVUFBOUI7QUFDQSxVQUFJekIsaUJBQUosRUFBdUI7QUFDckJnQixhQUFLZixNQUFMLENBQVkwQixlQUFaLENBQTRCSixTQUE1QixFQUF1Q0UsVUFBdkMsRUFBbUR6QixpQkFBbkQ7QUFDRDtBQUNGLEtBZkQ7QUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUFELFdBQU82QixPQUFQLENBQWVmLFFBQWY7QUFDQTtBQUNBO0FBQ0FBLGFBQVNlLE9BQVQsQ0FBaUJ6QixRQUFRMEIsV0FBekI7QUFDRDs7QUFFRDs7Ozs7Ozs2QkFLQXBCLGEsNEJBQWdCO0FBQ2QsV0FBTztBQUNMcUIsbUJBQWEsWUFEUjtBQUVMcEIsdUJBQWlCO0FBQ2ZKLGtCQUFVLEtBQUtBLFFBREE7QUFFZnlCLHFCQUFhLEVBRkU7QUFHZkMsbUJBQVcsS0FBSzNCLFVBSEQ7QUFJZkEsb0JBQVksS0FBS0E7QUFKRjtBQUZaLEtBQVA7QUFTRCxHOztBQUVEOzs7Ozs7NkJBSUFxQixNLHFCQUFTO0FBQ1AsU0FBS3pCLE1BQUwsQ0FBWWdDLEtBQVo7QUFDQSxTQUFLL0IsU0FBTCxHQUFpQixJQUFqQjtBQUNELEc7O0FBRUQ7Ozs7Ozs7NkJBS0FnQyxlLDRCQUFnQkMsUSxFQUFVO0FBQ3hCLFNBQUtsQyxNQUFMLENBQVltQyxTQUFaLENBQXNCRCxRQUF0QjtBQUNELEc7O0FBRUQ7Ozs7Ozs7NkJBS0FFLFcsMEJBQWM7QUFDWixXQUFPLEtBQUtuQyxTQUFaO0FBQ0QsRzs7QUFFRDs7Ozs7NkJBR0FvQyxJLG1CQUFPO0FBQ0wsU0FBS3BDLFNBQUwsR0FBaUIsS0FBakI7QUFDRCxHOzs7OztrQkF4SWtCSixnQiIsImZpbGUiOiJ3ZWItYXVkaW8tcmVjb3JkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYkF1ZGlvUmVjb3JkZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXZWJBdWRpb1JlY29yZGVyIHtcbiAgLyoqXG4gICAqIFVzZSAnbG93IGxldmVsJyBwcm9jZXNzaW5nIHRvb2xpbmcgdG8gcmVjb3JkIGF1ZGlvIGFuZCBnZXQgYSBXYXZlXG4gICAqIChhdWRpby93YXYpIGVuY29kZWQgcmVjb3JkaW5nLlxuICAgKlxuICAgKiBDdXJyZW50bHkgc3VwcG9ydGVkIGluIGFsbCBtb2Rlcm4gSFRNTDUvV2ViQXVkaW8gYnJvd3NlcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7R2Fpbk5vZGV9IHNvdXJjZSAtIFRoZSBzb3VyY2UgdG8gcmVjb3JkLlxuICAgKiBAcGFyYW0gez9GdW5jdGlvbn0gc3RyZWFtaW5nQ2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gZGVsaXZlciBhdWRpbyBjaHVua3MgdG8uXG4gICAqIEBwYXJhbSB7V2F2ZVBhY2tlcn0gcGFja2VyIC0gUGFja2VyIHRvIHVzZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNvdXJjZSwgc3RyZWFtaW5nQ2FsbGJhY2ssIHBhY2tlcikge1xuICAgIHRoaXMucmVjb3JkaW5nID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc291cmNlLmNvbnRleHQ7XG4gICAgLy8gRm9yIHRoZSBiZXN0IHF1YWxpdHksIHVzZSB0aGUgc2FtcGxlcmF0ZSBpbiB3aGljaCBhdWRpbyBpcyByZWNvcmRlZC5cbiAgICB0aGlzLnJlY29yZGVkU2FtcGxlUmF0ZSA9IGNvbnRleHQuc2FtcGxlUmF0ZTtcbiAgICAvLyB2YXIgc2FtcGxlUmF0ZSA9IHJlY29yZGVkU2FtcGxlUmF0ZTtcbiAgICAvLyA0ODAwMGh6IC0+IDI0MDAwaHogcmVjb3JkaW5nLCA0NDEwMGh6IC0+IDIyMDUwaHogcmVjb3JkaW5nLlxuICAgIC8vIFNoZWZmaWVsZCBkZXRlcm1pbmVkIHRoZSBtaW5pbXVtIHRvIGJlIDE2MDAwaHosIHNvIC80IGlzIHRvbyBsb3cuXG4gICAgdGhpcy5zYW1wbGVSYXRlID0gdGhpcy5yZWNvcmRlZFNhbXBsZVJhdGUgLyAyO1xuICAgIC8vIFN0cmVhbWluZyBkb2Vzbid0IHlldCBkb3duc2FtcGxlOiAjMTMwMi5cbiAgICB0aGlzLnNhbXBsZVJhdGUgPSBzdHJlYW1pbmdDYWxsYmFjayA/IHRoaXMucmVjb3JkZWRTYW1wbGVSYXRlIDpcbiAgICAgIHRoaXMuc2FtcGxlUmF0ZTtcblxuICAgIC8vIEFsd2F5cyByZWNvcmQgYXVkaW8gaW4gbW9uby5cbiAgICB0aGlzLmNoYW5uZWxzID0gMTtcbiAgICBjb25zb2xlLmxvZygnUmVjb3JkaW5nIGF0OiAnICtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QXVkaW9TcGVjcygpLmF1ZGlvUGFyYW1ldGVycy5zYW1wbGVSYXRlKTtcblxuICAgIHRoaXMucGFja2VyID0gcGFja2VyO1xuICAgIHRoaXMucGFja2VyLmluaXQodGhpcy5yZWNvcmRlZFNhbXBsZVJhdGUsIHRoaXMuc2FtcGxlUmF0ZSwgdGhpcy5jaGFubmVscyk7XG5cbiAgICAvLyBGcm9tIHRoZSBzcGVjOiBUaGlzIHZhbHVlIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBhdWRpb3Byb2Nlc3NcbiAgICAvLyBldmVudCBpcyBkaXNwYXRjaGVkIGFuZCBob3cgbWFueSBzYW1wbGUtZnJhbWVzIG5lZWQgdG8gYmUgcHJvY2Vzc2VkXG4gICAgLy8gZWFjaCBjYWxsLiBMb3dlciB2YWx1ZXMgZm9yIGJ1ZmZlciBzaXplIHdpbGwgcmVzdWx0IGluIGEgbG93ZXJcbiAgICAvLyAoYmV0dGVyKSBsYXRlbmN5LiBIaWdoZXIgdmFsdWVzIHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGF2b2lkIGF1ZGlvXG4gICAgLy8gYnJlYWt1cCBhbmQgZ2xpdGNoZXMuXG4gICAgLy8gTGVnYWwgdmFsdWVzIGFyZSAoMjU2LCA1MTIsIDEwMjQsIDIwNDgsIDQwOTYsIDgxOTIsIDE2Mzg0KS5cbiAgICBjb25zdCBidWZmZXJTaXplID0gODE5MjtcbiAgICBjb25zdCByZWNvcmRlciA9IGNvbnRleHQuY3JlYXRlU2NyaXB0UHJvY2Vzc29yKGJ1ZmZlclNpemUsIDIsIDIpO1xuICAgIC8vIEtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHNjcmlwdFByb2Nlc3Nvci5cbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gQ2hyb21lIHRoYXQgd291bGQgb3RoZXJ3aXNlIGxlYWQgdG9cbiAgICAvLyB0aGUgcmVjb3JkZXIgYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQgYmVmb3JlIGl0IGV2ZW4gcmVjb3JkZWQgYW55dGhpbmcuXG4gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjUyMVxuICAgIHRoaXMuX3JlY29yZGVyID0gcmVjb3JkZXI7XG5cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICByZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdhdWRpb3Byb2Nlc3MnLCBlID0+IHtcbiAgICAgIGlmICghc2VsZi5yZWNvcmRpbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbGVmdCA9IGUuaW5wdXRCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMCk7XG4gICAgICBjb25zdCByaWdodCA9IGUuaW5wdXRCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMSk7XG4gICAgICAvLyBUaGVzZSByZXR1cm5lZCBjaGFubmVsIGJ1ZmZlcnMgYXJlIHBvaW50ZXJzIHRvIHRoZSBjdXJyZW50IHNhbXBsZXNcbiAgICAgIC8vIGNvbWluZyBpbi4gTWFrZSBhIHNuYXBzaG90IChjbG9uZSkuIFRoZSB3ZWJ3b3JrZXJzIGNhbid0IHNlcmlhbGl6ZVxuICAgICAgLy8gdGhlIHBvaW50ZXJzLiBXZWxsLCBDaHJvbWUgYW5kIEZGIGNvdWxkLCBidXQgRWRnZSBjYW4ndC5cbiAgICAgIGNvbnN0IGxlZnRDbG9uZSA9IG5ldyBGbG9hdDMyQXJyYXkobGVmdCk7XG4gICAgICBjb25zdCByaWdodENsb25lID0gbmV3IEZsb2F0MzJBcnJheShyaWdodCk7XG4gICAgICBzZWxmLnBhY2tlci5yZWNvcmQobGVmdENsb25lLCByaWdodENsb25lKTtcbiAgICAgIGlmIChzdHJlYW1pbmdDYWxsYmFjaykge1xuICAgICAgICBzZWxmLnBhY2tlci5yZWNvcmRTdHJlYW1pbmcobGVmdENsb25lLCByaWdodENsb25lLCBzdHJlYW1pbmdDYWxsYmFjayk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gcmVjb3JkZXIub25hdWRpb3Byb2Nlc3MgPSBmdW5jdGlvbihlKSB7XG4gICAgLy8gICBpZiAoIXNlbGYucmVjb3JkaW5nKSB7XG4gICAgLy8gICAgIHJldHVybjtcbiAgICAvLyAgIH1cbiAgICAvLyAgIGNvbnN0IGxlZnQgPSBlLmlucHV0QnVmZmVyLmdldENoYW5uZWxEYXRhKDApO1xuICAgIC8vICAgY29uc3QgcmlnaHQgPSBlLmlucHV0QnVmZmVyLmdldENoYW5uZWxEYXRhKDEpO1xuICAgIC8vICAgLy8gVGhlc2UgcmV0dXJuZWQgY2hhbm5lbCBidWZmZXJzIGFyZSBwb2ludGVycyB0byB0aGUgY3VycmVudCBzYW1wbGVzXG4gICAgLy8gICAvLyBjb21pbmcgaW4uIE1ha2UgYSBzbmFwc2hvdCAoY2xvbmUpLiBUaGUgd2Vid29ya2VycyBjYW4ndCBzZXJpYWxpemVcbiAgICAvLyAgIC8vIHRoZSBwb2ludGVycy4gV2VsbCwgQ2hyb21lIGFuZCBGRiBjb3VsZCwgYnV0IEVkZ2UgY2FuJ3QuXG4gICAgLy8gICBjb25zdCBsZWZ0Q2xvbmUgPSBuZXcgRmxvYXQzMkFycmF5KGxlZnQpO1xuICAgIC8vICAgY29uc3QgcmlnaHRDbG9uZSA9IG5ldyBGbG9hdDMyQXJyYXkocmlnaHQpO1xuICAgIC8vICAgc2VsZi5wYWNrZXIucmVjb3JkKGxlZnRDbG9uZSwgcmlnaHRDbG9uZSk7XG4gICAgLy8gICBpZiAoc3RyZWFtaW5nQ2FsbGJhY2spIHtcbiAgICAvLyAgICAgc2VsZi5wYWNrZXIucmVjb3JkU3RyZWFtaW5nKGxlZnRDbG9uZSwgcmlnaHRDbG9uZSwgc3RyZWFtaW5nQ2FsbGJhY2spO1xuICAgIC8vICAgfVxuICAgIC8vIH07XG5cbiAgICBzb3VyY2UuY29ubmVjdChyZWNvcmRlcik7XG4gICAgLy8gSWYgdGhlIHNjcmlwdCBub2RlIGlzIG5vdCBjb25uZWN0ZWQgdG8gYW4gb3V0cHV0IHRoZSBcIm9uYXVkaW9wcm9jZXNzXCJcbiAgICAvLyBldmVudCBpcyBub3QgdHJpZ2dlcmVkIGluIGNocm9tZS5cbiAgICByZWNvcmRlci5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVjb3JkZWQgYXVkaW8gc3BlY2lmaWNhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IENvbnRhaW5pbmcgbWV0YWRhdGEgb24gdGhlIGF1ZGlvIGZvcm1hdC5cbiAgICovXG4gIGdldEF1ZGlvU3BlY3MoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF1ZGlvRm9ybWF0OiAnYXVkaW8vd2F2ZScsXG4gICAgICBhdWRpb1BhcmFtZXRlcnM6IHtcbiAgICAgICAgY2hhbm5lbHM6IHRoaXMuY2hhbm5lbHMsXG4gICAgICAgIHNhbXBsZVdpZHRoOiAxNixcbiAgICAgICAgZnJhbWVSYXRlOiB0aGlzLnNhbXBsZVJhdGUsXG4gICAgICAgIHNhbXBsZVJhdGU6IHRoaXMuc2FtcGxlUmF0ZVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgcmVjb3JkaW5nIGF1ZGlvLlxuICAgKlxuICAgKi9cbiAgcmVjb3JkKCkge1xuICAgIHRoaXMucGFja2VyLmNsZWFyKCk7XG4gICAgdGhpcy5yZWNvcmRpbmcgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgZW5jb2RlZCBhdWRpbyB0byBiZSByZXR1cm5lZCB0aHJvdWdoIGNhbGxiYWNrLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byB1c2Ugd2hlbiByZXR1cm5pbmcgdGhlIGF1ZGlvIGFzIGEgYmxvYiBpbiBXYXZlIGZvcm1hdC5cbiAgICovXG4gIGdldEVuY29kZWRBdWRpbyhjYWxsYmFjaykge1xuICAgIHRoaXMucGFja2VyLmV4cG9ydFdBVihjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogSXMgYXVkaW8gcmVjb3JkaW5nIGluIHByb2dyZXNzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHJlY29yZGluZy4gRmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNSZWNvcmRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVjb3JkaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgcmVjb3JkaW5nIGF1ZGlvLlxuICAgKi9cbiAgc3RvcCgpIHtcbiAgICB0aGlzLnJlY29yZGluZyA9IGZhbHNlO1xuICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdWRpby93ZWItYXVkaW8tcmVjb3JkZXIuanMiXSwibmFtZXMiOlsiV2ViQXVkaW9SZWNvcmRlciIsInNvdXJjZSIsImN0eCIsInN0cmVhbWluZ0NhbGxiYWNrIiwicGFja2VyIiwicmVjb3JkaW5nIiwiY29udGV4dCIsInJlY29yZGVkU2FtcGxlUmF0ZSIsInNhbXBsZVJhdGUiLCJjaGFubmVscyIsImNvbnNvbGUiLCJsb2ciLCJnZXRBdWRpb1NwZWNzIiwiYXVkaW9QYXJhbWV0ZXJzIiwiaW5pdCIsImJ1ZmZlclNpemUiLCJyZWNvcmRlciIsImNyZWF0ZVNjcmlwdFByb2Nlc3NvciIsIl9yZWNvcmRlciIsInNlbGYiLCJvbmF1ZGlvcHJvY2VzcyIsImF1ZGlvUHJvY2Vzc2luZyIsImxlZnQiLCJpbnB1dEJ1ZmZlciIsImdldENoYW5uZWxEYXRhIiwicmlnaHQiLCJsZWZ0Q2xvbmUiLCJGbG9hdDMyQXJyYXkiLCJyaWdodENsb25lIiwicmVjb3JkIiwicmVjb3JkU3RyZWFtaW5nIiwiY29ubmVjdCIsImRlc3RpbmF0aW9uIiwiYXVkaW9Gb3JtYXQiLCJzYW1wbGVXaWR0aCIsImZyYW1lUmF0ZSIsImNsZWFyIiwiZ2V0RW5jb2RlZEF1ZGlvIiwiY2FsbGJhY2siLCJleHBvcnRXQVYiLCJpc1JlY29yZGluZyIsInN0b3AiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0lBSXFCQSxnQjtBQUNuQjs7Ozs7Ozs7Ozs7QUFXQSw0QkFBWUMsTUFBWixFQUFvQkMsR0FBcEIsRUFBeUJDLGlCQUF6QixFQUE0Q0MsTUFBNUMsRUFBb0Q7QUFBQTs7QUFDbEQsU0FBS0MsU0FBTCxHQUFpQixLQUFqQjs7QUFFQSxRQUFNQyxVQUFVSixHQUFoQjtBQUNBO0FBQ0EsU0FBS0ssa0JBQUwsR0FBMEJELFFBQVFFLFVBQWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBS0EsVUFBTCxHQUFrQixLQUFLRCxrQkFBTCxHQUEwQixDQUE1QztBQUNBO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQkwsb0JBQW9CLEtBQUtJLGtCQUF6QixHQUNoQixLQUFLQyxVQURQOztBQUdBO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixDQUFoQjtBQUNBQyxZQUFRQyxHQUFSLENBQVksbUJBQ0UsS0FBS0MsYUFBTCxHQUFxQkMsZUFBckIsQ0FBcUNMLFVBRG5EOztBQUdBLFNBQUtKLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtBLE1BQUwsQ0FBWVUsSUFBWixDQUFpQixLQUFLUCxrQkFBdEIsRUFBMEMsS0FBS0MsVUFBL0MsRUFBMkQsS0FBS0MsUUFBaEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTU0sYUFBYSxJQUFuQjtBQUNBLFFBQU1DLFdBQVdWLFFBQVFXLHFCQUFSLENBQThCRixVQUE5QixFQUEwQyxDQUExQyxFQUE2QyxDQUE3QyxDQUFqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBS0csU0FBTCxHQUFpQkYsUUFBakI7O0FBRUEsUUFBTUcsT0FBTyxJQUFiO0FBQ0FILGFBQVNJLGNBQVQsR0FBMEIsVUFBU0MsZUFBVCxFQUEwQjtBQUNsRCxVQUFJLENBQUNGLEtBQUtkLFNBQVYsRUFBcUI7QUFDbkI7QUFDRDtBQUNELFVBQU1pQixPQUFPRCxnQkFBZ0JFLFdBQWhCLENBQTRCQyxjQUE1QixDQUEyQyxDQUEzQyxDQUFiO0FBQ0EsVUFBTUMsUUFBUUosZ0JBQWdCRSxXQUFoQixDQUE0QkMsY0FBNUIsQ0FBMkMsQ0FBM0MsQ0FBZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQU1FLFlBQVksSUFBSUMsWUFBSixDQUFpQkwsSUFBakIsQ0FBbEI7QUFDQSxVQUFNTSxhQUFhLElBQUlELFlBQUosQ0FBaUJGLEtBQWpCLENBQW5CO0FBQ0FOLFdBQUtmLE1BQUwsQ0FBWXlCLE1BQVosQ0FBbUJILFNBQW5CLEVBQThCRSxVQUE5QjtBQUNBLFVBQUl6QixpQkFBSixFQUF1QjtBQUNyQmdCLGFBQUtmLE1BQUwsQ0FBWTBCLGVBQVosQ0FBNEJKLFNBQTVCLEVBQXVDRSxVQUF2QyxFQUFtRHpCLGlCQUFuRDtBQUNEO0FBQ0YsS0FmRDs7QUFpQkFGLFdBQU84QixPQUFQLENBQWVmLFFBQWY7QUFDQTtBQUNBO0FBQ0FBLGFBQVNlLE9BQVQsQ0FBaUJ6QixRQUFRMEIsV0FBekI7QUFDRDs7QUFFRDs7Ozs7Ozs2QkFLQXBCLGEsNEJBQWdCO0FBQ2QsV0FBTztBQUNMcUIsbUJBQWEsWUFEUjtBQUVMcEIsdUJBQWlCO0FBQ2ZKLGtCQUFVLEtBQUtBLFFBREE7QUFFZnlCLHFCQUFhLEVBRkU7QUFHZkMsbUJBQVcsS0FBSzNCLFVBSEQ7QUFJZkEsb0JBQVksS0FBS0E7QUFKRjtBQUZaLEtBQVA7QUFTRCxHOztBQUVEOzs7Ozs7NkJBSUFxQixNLHFCQUFTO0FBQ1AsU0FBS3pCLE1BQUwsQ0FBWWdDLEtBQVo7QUFDQSxTQUFLL0IsU0FBTCxHQUFpQixJQUFqQjtBQUNELEc7O0FBRUQ7Ozs7Ozs7NkJBS0FnQyxlLDRCQUFnQkMsUSxFQUFVO0FBQ3hCLFNBQUtsQyxNQUFMLENBQVltQyxTQUFaLENBQXNCRCxRQUF0QjtBQUNELEc7O0FBRUQ7Ozs7Ozs7NkJBS0FFLFcsMEJBQWM7QUFDWixXQUFPLEtBQUtuQyxTQUFaO0FBQ0QsRzs7QUFFRDs7Ozs7NkJBR0FvQyxJLG1CQUFPO0FBQ0wsU0FBS3BDLFNBQUwsR0FBaUIsS0FBakI7QUFDRCxHOzs7OztrQkF6SGtCTCxnQiIsImZpbGUiOiJ3ZWItYXVkaW8tcmVjb3JkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYkF1ZGlvUmVjb3JkZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXZWJBdWRpb1JlY29yZGVyIHtcbiAgLyoqXG4gICAqIFVzZSAnbG93IGxldmVsJyBwcm9jZXNzaW5nIHRvb2xpbmcgdG8gcmVjb3JkIGF1ZGlvIGFuZCBnZXQgYSBXYXZlXG4gICAqIChhdWRpby93YXYpIGVuY29kZWQgcmVjb3JkaW5nLlxuICAgKlxuICAgKiBDdXJyZW50bHkgc3VwcG9ydGVkIGluIGFsbCBtb2Rlcm4gSFRNTDUvV2ViQXVkaW8gYnJvd3NlcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7R2Fpbk5vZGV9IHNvdXJjZSAtIFRoZSBzb3VyY2UgdG8gcmVjb3JkLlxuICAgKiBAcGFyYW0ge0F1ZGlvQ29udGV4dH0gY3R4IC0gVGhlIEF1ZGlvQ29udGV4dCB0byB1c2UuXG4gICAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBzdHJlYW1pbmdDYWxsYmFjayAtIFRoZSBjYWxsYmFjayB0byBkZWxpdmVyIGF1ZGlvIGNodW5rcyB0by5cbiAgICogQHBhcmFtIHtXYXZlUGFja2VyfSBwYWNrZXIgLSBQYWNrZXIgdG8gdXNlLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc291cmNlLCBjdHgsIHN0cmVhbWluZ0NhbGxiYWNrLCBwYWNrZXIpIHtcbiAgICB0aGlzLnJlY29yZGluZyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IGN0eDtcbiAgICAvLyBGb3IgdGhlIGJlc3QgcXVhbGl0eSwgdXNlIHRoZSBzYW1wbGVyYXRlIGluIHdoaWNoIGF1ZGlvIGlzIHJlY29yZGVkLlxuICAgIHRoaXMucmVjb3JkZWRTYW1wbGVSYXRlID0gY29udGV4dC5zYW1wbGVSYXRlO1xuICAgIC8vIHZhciBzYW1wbGVSYXRlID0gcmVjb3JkZWRTYW1wbGVSYXRlO1xuICAgIC8vIDQ4MDAwaHogLT4gMjQwMDBoeiByZWNvcmRpbmcsIDQ0MTAwaHogLT4gMjIwNTBoeiByZWNvcmRpbmcuXG4gICAgLy8gU2hlZmZpZWxkIGRldGVybWluZWQgdGhlIG1pbmltdW0gdG8gYmUgMTYwMDBoeiwgc28gLzQgaXMgdG9vIGxvdy5cbiAgICB0aGlzLnNhbXBsZVJhdGUgPSB0aGlzLnJlY29yZGVkU2FtcGxlUmF0ZSAvIDI7XG4gICAgLy8gU3RyZWFtaW5nIGRvZXNuJ3QgeWV0IGRvd25zYW1wbGU6ICMxMzAyLlxuICAgIHRoaXMuc2FtcGxlUmF0ZSA9IHN0cmVhbWluZ0NhbGxiYWNrID8gdGhpcy5yZWNvcmRlZFNhbXBsZVJhdGUgOlxuICAgICAgdGhpcy5zYW1wbGVSYXRlO1xuXG4gICAgLy8gQWx3YXlzIHJlY29yZCBhdWRpbyBpbiBtb25vLlxuICAgIHRoaXMuY2hhbm5lbHMgPSAxO1xuICAgIGNvbnNvbGUubG9nKCdSZWNvcmRpbmcgYXQ6ICcgK1xuICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBdWRpb1NwZWNzKCkuYXVkaW9QYXJhbWV0ZXJzLnNhbXBsZVJhdGUpO1xuXG4gICAgdGhpcy5wYWNrZXIgPSBwYWNrZXI7XG4gICAgdGhpcy5wYWNrZXIuaW5pdCh0aGlzLnJlY29yZGVkU2FtcGxlUmF0ZSwgdGhpcy5zYW1wbGVSYXRlLCB0aGlzLmNoYW5uZWxzKTtcblxuICAgIC8vIEZyb20gdGhlIHNwZWM6IFRoaXMgdmFsdWUgY29udHJvbHMgaG93IGZyZXF1ZW50bHkgdGhlIGF1ZGlvcHJvY2Vzc1xuICAgIC8vIGV2ZW50IGlzIGRpc3BhdGNoZWQgYW5kIGhvdyBtYW55IHNhbXBsZS1mcmFtZXMgbmVlZCB0byBiZSBwcm9jZXNzZWRcbiAgICAvLyBlYWNoIGNhbGwuIExvd2VyIHZhbHVlcyBmb3IgYnVmZmVyIHNpemUgd2lsbCByZXN1bHQgaW4gYSBsb3dlclxuICAgIC8vIChiZXR0ZXIpIGxhdGVuY3kuIEhpZ2hlciB2YWx1ZXMgd2lsbCBiZSBuZWNlc3NhcnkgdG8gYXZvaWQgYXVkaW9cbiAgICAvLyBicmVha3VwIGFuZCBnbGl0Y2hlcy5cbiAgICAvLyBMZWdhbCB2YWx1ZXMgYXJlICgyNTYsIDUxMiwgMTAyNCwgMjA0OCwgNDA5NiwgODE5MiwgMTYzODQpLlxuICAgIGNvbnN0IGJ1ZmZlclNpemUgPSA4MTkyO1xuICAgIGNvbnN0IHJlY29yZGVyID0gY29udGV4dC5jcmVhdGVTY3JpcHRQcm9jZXNzb3IoYnVmZmVyU2l6ZSwgMiwgMik7XG4gICAgLy8gS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgc2NyaXB0UHJvY2Vzc29yLlxuICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBDaHJvbWUgdGhhdCB3b3VsZCBvdGhlcndpc2UgbGVhZCB0b1xuICAgIC8vIHRoZSByZWNvcmRlciBiZWluZyBnYXJiYWdlIGNvbGxlY3RlZCBiZWZvcmUgaXQgZXZlbiByZWNvcmRlZCBhbnl0aGluZy5cbiAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNTIxXG4gICAgdGhpcy5fcmVjb3JkZXIgPSByZWNvcmRlcjtcblxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHJlY29yZGVyLm9uYXVkaW9wcm9jZXNzID0gZnVuY3Rpb24oYXVkaW9Qcm9jZXNzaW5nKSB7XG4gICAgICBpZiAoIXNlbGYucmVjb3JkaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxlZnQgPSBhdWRpb1Byb2Nlc3NpbmcuaW5wdXRCdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMCk7XG4gICAgICBjb25zdCByaWdodCA9IGF1ZGlvUHJvY2Vzc2luZy5pbnB1dEJ1ZmZlci5nZXRDaGFubmVsRGF0YSgxKTtcbiAgICAgIC8vIFRoZXNlIHJldHVybmVkIGNoYW5uZWwgYnVmZmVycyBhcmUgcG9pbnRlcnMgdG8gdGhlIGN1cnJlbnQgc2FtcGxlc1xuICAgICAgLy8gY29taW5nIGluLiBNYWtlIGEgc25hcHNob3QgKGNsb25lKS4gVGhlIHdlYndvcmtlcnMgY2FuJ3Qgc2VyaWFsaXplXG4gICAgICAvLyB0aGUgcG9pbnRlcnMuIFdlbGwsIENocm9tZSBhbmQgRkYgY291bGQsIGJ1dCBFZGdlIGNhbid0LlxuICAgICAgY29uc3QgbGVmdENsb25lID0gbmV3IEZsb2F0MzJBcnJheShsZWZ0KTtcbiAgICAgIGNvbnN0IHJpZ2h0Q2xvbmUgPSBuZXcgRmxvYXQzMkFycmF5KHJpZ2h0KTtcbiAgICAgIHNlbGYucGFja2VyLnJlY29yZChsZWZ0Q2xvbmUsIHJpZ2h0Q2xvbmUpO1xuICAgICAgaWYgKHN0cmVhbWluZ0NhbGxiYWNrKSB7XG4gICAgICAgIHNlbGYucGFja2VyLnJlY29yZFN0cmVhbWluZyhsZWZ0Q2xvbmUsIHJpZ2h0Q2xvbmUsIHN0cmVhbWluZ0NhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc291cmNlLmNvbm5lY3QocmVjb3JkZXIpO1xuICAgIC8vIElmIHRoZSBzY3JpcHQgbm9kZSBpcyBub3QgY29ubmVjdGVkIHRvIGFuIG91dHB1dCB0aGUgXCJvbmF1ZGlvcHJvY2Vzc1wiXG4gICAgLy8gZXZlbnQgaXMgbm90IHRyaWdnZXJlZCBpbiBjaHJvbWUuXG4gICAgcmVjb3JkZXIuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlY29yZGVkIGF1ZGlvIHNwZWNpZmljYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBDb250YWluaW5nIG1ldGFkYXRhIG9uIHRoZSBhdWRpbyBmb3JtYXQuXG4gICAqL1xuICBnZXRBdWRpb1NwZWNzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBhdWRpb0Zvcm1hdDogJ2F1ZGlvL3dhdmUnLFxuICAgICAgYXVkaW9QYXJhbWV0ZXJzOiB7XG4gICAgICAgIGNoYW5uZWxzOiB0aGlzLmNoYW5uZWxzLFxuICAgICAgICBzYW1wbGVXaWR0aDogMTYsXG4gICAgICAgIGZyYW1lUmF0ZTogdGhpcy5zYW1wbGVSYXRlLFxuICAgICAgICBzYW1wbGVSYXRlOiB0aGlzLnNhbXBsZVJhdGVcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHJlY29yZGluZyBhdWRpby5cbiAgICpcbiAgICovXG4gIHJlY29yZCgpIHtcbiAgICB0aGlzLnBhY2tlci5jbGVhcigpO1xuICAgIHRoaXMucmVjb3JkaW5nID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IGVuY29kZWQgYXVkaW8gdG8gYmUgcmV0dXJuZWQgdGhyb3VnaCBjYWxsYmFjay5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gdXNlIHdoZW4gcmV0dXJuaW5nIHRoZSBhdWRpbyBhcyBhIGJsb2IgaW4gV2F2ZSBmb3JtYXQuXG4gICAqL1xuICBnZXRFbmNvZGVkQXVkaW8oY2FsbGJhY2spIHtcbiAgICB0aGlzLnBhY2tlci5leHBvcnRXQVYoY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIElzIGF1ZGlvIHJlY29yZGluZyBpbiBwcm9ncmVzcy5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgd2hlbiByZWNvcmRpbmcuIEZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzUmVjb3JkaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnJlY29yZGluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHJlY29yZGluZyBhdWRpby5cbiAgICovXG4gIHN0b3AoKSB7XG4gICAgdGhpcy5yZWNvcmRpbmcgPSBmYWxzZTtcbiAgfVxufVxuIl19 |
{ | ||
"name": "itslanguage", | ||
"version": "3.0.0-beta-4.7", | ||
"version": "3.0.0-beta-4.8", | ||
"description": "The core JavaScript SDK for ITSLanguage.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -126,3 +126,3 @@ 'use strict'; | ||
}); | ||
_context.next = 17; | ||
_context.next = 19; | ||
break; | ||
@@ -134,5 +134,7 @@ | ||
console.error(_context.t0); | ||
console.log('catchie catch'); | ||
this.error(_context.t0.name + ': ' + _context.t0.message); | ||
case 17: | ||
case 19: | ||
case 'end': | ||
@@ -218,2 +220,2 @@ return _context.stop(); | ||
exports.default = Player; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9XZWJBdWRpby9QbGF5ZXIuanMiXSwibmFtZXMiOlsiUGxheWVyIiwiYXVkaW9CdWZmZXIiLCJhdWRpb1NvdXJjZSIsImNyZWF0ZUJ1ZmZlclNvdXJjZSIsImRpc2Nvbm5lY3RCdWZmZXJTb3VyY2UiLCJhdWRpb0NvbnRleHQiLCJidWZmZXIiLCJjb25uZWN0IiwiZGVzdGluYXRpb24iLCJhZGRFdmVudExpc3RlbmVyIiwic3VzcGVuZEF1ZGlvQ29udGV4dCIsImF1ZGlvU291cmNlRXhpc3RzIiwiZGlzY29ubmVjdCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJsb2FkIiwidXJsIiwid2l0aEl0c2xUb2tlbiIsInJlcXVlc3RNZXRob2QiLCJyZXNwb25zZSIsImFycmF5QnVmZmVyIiwiYXVkaW9EYXRhIiwiZGVjb2RlQXVkaW9EYXRhIiwiZGVjb2RlZEF1ZGlvIiwiZmlyZUV2ZW50IiwiZXJyb3IiLCJuYW1lIiwibWVzc2FnZSIsImF1ZGlvQnVmZmVyRXhpc3RzIiwiQm9vbGVhbiIsInBsYXkiLCJzdGF0ZSIsInJlc3VtZSIsInN0YXJ0Iiwic3RvcCIsInBhdXNlIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7SUFJcUJBLE07Ozs7Ozs7Ozs7OztrSkFLbkJDLFcsR0FBYyxJLFFBTWRDLFcsR0FBYyxJOztBQVZkOzs7Ozs7QUFNQTs7Ozs7O21CQU1BQyxrQixpQ0FBcUI7QUFDbkIsU0FBS0Msc0JBQUw7O0FBRUE7QUFDQSxTQUFLRixXQUFMLEdBQW1CLEtBQUtHLFlBQUwsQ0FBa0JGLGtCQUFsQixFQUFuQjs7QUFFQTtBQUNBLFNBQUtELFdBQUwsQ0FBaUJJLE1BQWpCLEdBQTBCLEtBQUtMLFdBQS9COztBQUVBO0FBQ0EsU0FBS0MsV0FBTCxDQUFpQkssT0FBakIsQ0FBeUIsS0FBS0YsWUFBTCxDQUFrQkcsV0FBM0M7O0FBRUE7QUFDQSxTQUFLTixXQUFMLENBQWlCTyxnQkFBakIsQ0FBa0MsT0FBbEMsRUFBMkMsS0FBS0MsbUJBQWhEO0FBQ0QsRzs7bUJBRUROLHNCLHFDQUF5QjtBQUN2QixRQUFJLEtBQUtPLGlCQUFMLEVBQUosRUFBOEI7QUFDNUIsV0FBS1QsV0FBTCxDQUFpQlUsVUFBakI7QUFDQSxXQUFLVixXQUFMLENBQWlCVyxtQkFBakIsQ0FBcUMsT0FBckMsRUFBOEMsS0FBS0gsbUJBQW5EO0FBQ0Q7QUFDRixHOztBQUVEOzs7Ozs7Ozs7Ozs7OzttQkFZTUksSTt3RkFBS0MsRzs7O1VBQUtDLGEsdUVBQWdCLEk7Ozs7OztrQkFDekJELEc7Ozs7Ozs7OztBQUlMO0FBQ01FLDJCLEdBQWdCRCx5RTtBQUNmWCwwQixHQUFnQixJLENBQWhCQSxZOzs7cUJBR2tCWSxjQUFjLEtBQWQsRUFBcUJGLEdBQXJCLEM7OztBQUFqQkcsc0I7O3FCQUNrQkEsU0FBU0MsV0FBVCxFOzs7QUFBbEJDLHVCOztBQUNOZiwyQkFBYWdCLGVBQWIsQ0FBNkJELFNBQTdCLEVBQXdDLHdCQUFnQjtBQUN0RCx1QkFBS25CLFdBQUwsR0FBbUJxQixZQUFuQjtBQUNBLHVCQUFLQyxTQUFMLENBQWUsUUFBZjtBQUNELGVBSEQ7Ozs7Ozs7O0FBS0EsbUJBQUtDLEtBQUwsQ0FBYyxZQUFNQyxJQUFwQixVQUE2QixZQUFNQyxPQUFuQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJSjs7Ozs7O21CQUtBQyxpQixnQ0FBb0I7QUFDbEIsV0FBT0MsUUFBUSxLQUFLM0IsV0FBYixDQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7OzttQkFLQVUsaUIsZ0NBQW9CO0FBQ2xCLFdBQU9pQixRQUFRLEtBQUsxQixXQUFiLENBQVA7QUFDRCxHOztBQUVEOzs7OzttQkFHQTJCLEksbUJBQU87QUFDTCxTQUFLMUIsa0JBQUw7O0FBRUEsUUFBSSxLQUFLRSxZQUFMLENBQWtCeUIsS0FBbEIsS0FBNEIsV0FBaEMsRUFBNkM7QUFDM0MsV0FBS3pCLFlBQUwsQ0FBa0IwQixNQUFsQjtBQUNEOztBQUVEO0FBQ0EsU0FBSzdCLFdBQUwsQ0FBaUI4QixLQUFqQjtBQUNBLFNBQUtULFNBQUwsQ0FBZSxTQUFmO0FBQ0QsRzs7QUFFRDs7Ozs7O21CQUlBVSxJLG1CQUFPO0FBQ0wsUUFBSSxDQUFDLEtBQUtOLGlCQUFMLEVBQUQsSUFBNkIsQ0FBQyxLQUFLaEIsaUJBQUwsRUFBbEMsRUFBNEQ7QUFDMUQ7QUFDRDs7QUFFRCxTQUFLVCxXQUFMLENBQWlCK0IsSUFBakI7QUFDQSxTQUFLVixTQUFMLENBQWUsU0FBZjtBQUNELEc7O21CQUVEVyxLLG9CQUFRO0FBQ04sUUFBSSxDQUFDLEtBQUtQLGlCQUFMLEVBQUQsSUFBNkIsQ0FBQyxLQUFLaEIsaUJBQUwsRUFBbEMsRUFBNEQ7QUFDMUQ7QUFDRDs7QUFFRCxTQUFLVCxXQUFMLENBQWlCK0IsSUFBakI7QUFDQSxTQUFLVixTQUFMLENBQWUsT0FBZjtBQUNELEc7Ozs7O2tCQTFIa0J2QixNIiwiZmlsZSI6IlBsYXllci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXV0aG9yaXNlZFJlcXVlc3QsIHJlcXVlc3R9IGZyb20gJy4uL2FwaS9jb21tdW5pY2F0aW9uJztcbmltcG9ydCBBdWRpb0NvbnRleHQgZnJvbSAnLi9BdWRpb0NvbnRleHQnO1xuXG4vKipcbiAqIFBsYXllclxuICogU2ltcGxlIEF1ZGlvIFBsYXllciBiYXNlZCBvbiBXZWIgQXVkaW8gQVBJIHRlY2hub2xvZ3lcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxheWVyIGV4dGVuZHMgQXVkaW9Db250ZXh0IHtcbiAgLyoqXG4gICAqIFByaXZhdGUgb2JqZWN0IHRvIGhvbGQgQXVkaW9CdWZmZXIgbm9kZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGF1ZGlvQnVmZmVyID0gbnVsbDtcblxuICAvKipcbiAgICogUHJpdmF0ZSBvYmplY3QgdG8gaG9sZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgbm9kZS5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGF1ZGlvU291cmNlID0gbnVsbDtcblxuICBjcmVhdGVCdWZmZXJTb3VyY2UoKSB7XG4gICAgdGhpcy5kaXNjb25uZWN0QnVmZmVyU291cmNlKCk7XG5cbiAgICAvLyBDcmVhdGUgYSBzb3VuZCBzb3VyY2VcbiAgICB0aGlzLmF1ZGlvU291cmNlID0gdGhpcy5hdWRpb0NvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7XG5cbiAgICAvLyBTZWxlY3Qgd2hhdCB0byBwbGF5XG4gICAgdGhpcy5hdWRpb1NvdXJjZS5idWZmZXIgPSB0aGlzLmF1ZGlvQnVmZmVyO1xuXG4gICAgLy8gQ29ubmVjdCB0byB0aGUgc3BlYWtlcnMhXG4gICAgdGhpcy5hdWRpb1NvdXJjZS5jb25uZWN0KHRoaXMuYXVkaW9Db250ZXh0LmRlc3RpbmF0aW9uKTtcblxuICAgIC8vIEFkZCBzb21lIGV2ZW50IGhhbmRsZXJzO1xuICAgIHRoaXMuYXVkaW9Tb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCB0aGlzLnN1c3BlbmRBdWRpb0NvbnRleHQpO1xuICB9XG5cbiAgZGlzY29ubmVjdEJ1ZmZlclNvdXJjZSgpIHtcbiAgICBpZiAodGhpcy5hdWRpb1NvdXJjZUV4aXN0cygpKSB7XG4gICAgICB0aGlzLmF1ZGlvU291cmNlLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMuYXVkaW9Tb3VyY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcignZW5kZWQnLCB0aGlzLnN1c3BlbmRBdWRpb0NvbnRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gYXVkaW8gc3RyZWFtIGZyb20gYW4gVVJMLlxuICAgKlxuICAgKiBJZiB0aGUgd2l0aEl0c2xUb2tlbiBpcyBwcm92aWRlZCAoYW5kIHNldCB0byB0cnVlKSB1c2UgdGhlIGF1dGhvcml6ZWRSZXF1ZXN0IG1ldGhvZCB0byBsb2FkXG4gICAqIHRoZSBhdWRpby4gVGhpcyBpbiBlZmZlY3Qgd2lsbCBzZXQgdGhlIElUU0xhbmd1YWdlIGJlYXJlciB0b2tlbiAoaWYgYXZhaWxhYmxlKSB0byB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogRm9yIGJvdGggcmVxdWVzdCBtZXRob2RzIGdvZXM6IHRoZXJlJ3Mgbm8gY2hlY2sgd2hldGhlciB5b3UncmUgdHJ5aW5nIHRvIGxvYWQgZnJvbSBJVFNMYW5ndWFnZVxuICAgKiBiYWNrZW5kIHN5c3RlbSBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBVcmwgdG8gbG9hZC5cbiAgICogQHBhcmFtIHtib29sZWFufSB3aXRoSXRzbFRva2VuIC0gTWFrZSB1c2Ugb2YgYXV0aG9yaXplZFJlcXVlc3Qgb3IganVzdCByZXF1ZXN0IGlmIHNldCB0byBmYWxzZS5cbiAgICovXG4gIGFzeW5jIGxvYWQodXJsLCB3aXRoSXRzbFRva2VuID0gdHJ1ZSkge1xuICAgIGlmICghdXJsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdG8gYXNrIGF1dGhvcml6ZWQsIG9yIG5vdC5cbiAgICBjb25zdCByZXF1ZXN0TWV0aG9kID0gd2l0aEl0c2xUb2tlbiA/IGF1dGhvcmlzZWRSZXF1ZXN0IDogcmVxdWVzdDtcbiAgICBjb25zdCB7YXVkaW9Db250ZXh0fSA9IHRoaXM7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0TWV0aG9kKCdHRVQnLCB1cmwpO1xuICAgICAgY29uc3QgYXVkaW9EYXRhID0gYXdhaXQgcmVzcG9uc2UuYXJyYXlCdWZmZXIoKTtcbiAgICAgIGF1ZGlvQ29udGV4dC5kZWNvZGVBdWRpb0RhdGEoYXVkaW9EYXRhLCBkZWNvZGVkQXVkaW8gPT4ge1xuICAgICAgICB0aGlzLmF1ZGlvQnVmZmVyID0gZGVjb2RlZEF1ZGlvO1xuICAgICAgICB0aGlzLmZpcmVFdmVudCgnbG9hZGVkJyk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5lcnJvcihgJHtlcnJvci5uYW1lfTogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGlmIHRoZSBhdWRpb0J1ZmZlciBoYXMgYmVlbiBjcmVhdGVkIGFuZCBsb2FkZWQsIG9yIG5vdC5cblxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVGhlIGF1ZGlvQnVmZmVyIGNyZWF0ZWQuXG4gICAqL1xuICBhdWRpb0J1ZmZlckV4aXN0cygpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLmF1ZGlvQnVmZmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gaWYgYXVkaW9Tb3VyY2UgaGFzIGJlZW4gY3JlYXRlZCwgb3Igbm90LlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVGhlIGF1ZGlvU291cmNlIGNyZWF0ZWQuXG4gICAqL1xuICBhdWRpb1NvdXJjZUV4aXN0cygpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLmF1ZGlvU291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBhdWRpbyBwbGF5YmFjayBvZiB0aGF0IHdoYXQgaXMgaW4gdGhlIGJ1ZmZlci5cbiAgICovXG4gIHBsYXkoKSB7XG4gICAgdGhpcy5jcmVhdGVCdWZmZXJTb3VyY2UoKTtcblxuICAgIGlmICh0aGlzLmF1ZGlvQ29udGV4dC5zdGF0ZSA9PT0gJ3N1c3BlbmRlZCcpIHtcbiAgICAgIHRoaXMuYXVkaW9Db250ZXh0LnJlc3VtZSgpO1xuICAgIH1cblxuICAgIC8vIHBsYXkgdGhlIHNvdXJjZSBub3dcbiAgICB0aGlzLmF1ZGlvU291cmNlLnN0YXJ0KCk7XG4gICAgdGhpcy5maXJlRXZlbnQoJ3BsYXlpbmcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHBsYXliYWNrIG9mIGF1ZGlvLlxuICAgKiBDaGVjayBmb3IgYnVmZmVyIGFuZCBzb3VyY2UgdG8gZXhpc3QsIGlmIG5vdCwgZXhpdC5cbiAgICovXG4gIHN0b3AoKSB7XG4gICAgaWYgKCF0aGlzLmF1ZGlvQnVmZmVyRXhpc3RzKCkgJiYgIXRoaXMuYXVkaW9Tb3VyY2VFeGlzdHMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYXVkaW9Tb3VyY2Uuc3RvcCgpO1xuICAgIHRoaXMuZmlyZUV2ZW50KCdzdG9wcGVkJyk7XG4gIH1cblxuICBwYXVzZSgpIHtcbiAgICBpZiAoIXRoaXMuYXVkaW9CdWZmZXJFeGlzdHMoKSAmJiAhdGhpcy5hdWRpb1NvdXJjZUV4aXN0cygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hdWRpb1NvdXJjZS5zdG9wKCk7XG4gICAgdGhpcy5maXJlRXZlbnQoJ3BhdXNlJyk7XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9XZWJBdWRpby9QbGF5ZXIuanMiXSwibmFtZXMiOlsiUGxheWVyIiwiYXVkaW9CdWZmZXIiLCJhdWRpb1NvdXJjZSIsImNyZWF0ZUJ1ZmZlclNvdXJjZSIsImRpc2Nvbm5lY3RCdWZmZXJTb3VyY2UiLCJhdWRpb0NvbnRleHQiLCJidWZmZXIiLCJjb25uZWN0IiwiZGVzdGluYXRpb24iLCJhZGRFdmVudExpc3RlbmVyIiwic3VzcGVuZEF1ZGlvQ29udGV4dCIsImF1ZGlvU291cmNlRXhpc3RzIiwiZGlzY29ubmVjdCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJsb2FkIiwidXJsIiwid2l0aEl0c2xUb2tlbiIsInJlcXVlc3RNZXRob2QiLCJyZXNwb25zZSIsImFycmF5QnVmZmVyIiwiYXVkaW9EYXRhIiwiZGVjb2RlQXVkaW9EYXRhIiwiZGVjb2RlZEF1ZGlvIiwiZmlyZUV2ZW50IiwiY29uc29sZSIsImVycm9yIiwibG9nIiwibmFtZSIsIm1lc3NhZ2UiLCJhdWRpb0J1ZmZlckV4aXN0cyIsIkJvb2xlYW4iLCJwbGF5Iiwic3RhdGUiLCJyZXN1bWUiLCJzdGFydCIsInN0b3AiLCJwYXVzZSJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOztBQUNBOzs7Ozs7Ozs7Ozs7OztBQUVBOzs7O0lBSXFCQSxNOzs7Ozs7Ozs7Ozs7a0pBS25CQyxXLEdBQWMsSSxRQU1kQyxXLEdBQWMsSTs7QUFWZDs7Ozs7O0FBTUE7Ozs7OzttQkFNQUMsa0IsaUNBQXFCO0FBQ25CLFNBQUtDLHNCQUFMOztBQUVBO0FBQ0EsU0FBS0YsV0FBTCxHQUFtQixLQUFLRyxZQUFMLENBQWtCRixrQkFBbEIsRUFBbkI7O0FBRUE7QUFDQSxTQUFLRCxXQUFMLENBQWlCSSxNQUFqQixHQUEwQixLQUFLTCxXQUEvQjs7QUFFQTtBQUNBLFNBQUtDLFdBQUwsQ0FBaUJLLE9BQWpCLENBQXlCLEtBQUtGLFlBQUwsQ0FBa0JHLFdBQTNDOztBQUVBO0FBQ0EsU0FBS04sV0FBTCxDQUFpQk8sZ0JBQWpCLENBQWtDLE9BQWxDLEVBQTJDLEtBQUtDLG1CQUFoRDtBQUNELEc7O21CQUVETixzQixxQ0FBeUI7QUFDdkIsUUFBSSxLQUFLTyxpQkFBTCxFQUFKLEVBQThCO0FBQzVCLFdBQUtULFdBQUwsQ0FBaUJVLFVBQWpCO0FBQ0EsV0FBS1YsV0FBTCxDQUFpQlcsbUJBQWpCLENBQXFDLE9BQXJDLEVBQThDLEtBQUtILG1CQUFuRDtBQUNEO0FBQ0YsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7bUJBWU1JLEk7d0ZBQUtDLEc7OztVQUFLQyxhLHVFQUFnQixJOzs7Ozs7a0JBQ3pCRCxHOzs7Ozs7Ozs7QUFJTDtBQUNNRSwyQixHQUFnQkQseUU7QUFDZlgsMEIsR0FBZ0IsSSxDQUFoQkEsWTs7O3FCQUdrQlksY0FBYyxLQUFkLEVBQXFCRixHQUFyQixDOzs7QUFBakJHLHNCOztxQkFDa0JBLFNBQVNDLFdBQVQsRTs7O0FBQWxCQyx1Qjs7QUFDTmYsMkJBQWFnQixlQUFiLENBQTZCRCxTQUE3QixFQUF3Qyx3QkFBZ0I7QUFDdEQsdUJBQUtuQixXQUFMLEdBQW1CcUIsWUFBbkI7QUFDQSx1QkFBS0MsU0FBTCxDQUFlLFFBQWY7QUFDRCxlQUhEOzs7Ozs7OztBQUtBQyxzQkFBUUMsS0FBUjtBQUNBRCxzQkFBUUUsR0FBUixDQUFZLGVBQVo7QUFDQSxtQkFBS0QsS0FBTCxDQUFjLFlBQU1FLElBQXBCLFVBQTZCLFlBQU1DLE9BQW5DOzs7Ozs7Ozs7Ozs7Ozs7OztBQUlKOzs7Ozs7bUJBS0FDLGlCLGdDQUFvQjtBQUNsQixXQUFPQyxRQUFRLEtBQUs3QixXQUFiLENBQVA7QUFDRCxHOztBQUVEOzs7Ozs7O21CQUtBVSxpQixnQ0FBb0I7QUFDbEIsV0FBT21CLFFBQVEsS0FBSzVCLFdBQWIsQ0FBUDtBQUNELEc7O0FBRUQ7Ozs7O21CQUdBNkIsSSxtQkFBTztBQUNMLFNBQUs1QixrQkFBTDs7QUFFQSxRQUFJLEtBQUtFLFlBQUwsQ0FBa0IyQixLQUFsQixLQUE0QixXQUFoQyxFQUE2QztBQUMzQyxXQUFLM0IsWUFBTCxDQUFrQjRCLE1BQWxCO0FBQ0Q7O0FBRUQ7QUFDQSxTQUFLL0IsV0FBTCxDQUFpQmdDLEtBQWpCO0FBQ0EsU0FBS1gsU0FBTCxDQUFlLFNBQWY7QUFDRCxHOztBQUVEOzs7Ozs7bUJBSUFZLEksbUJBQU87QUFDTCxRQUFJLENBQUMsS0FBS04saUJBQUwsRUFBRCxJQUE2QixDQUFDLEtBQUtsQixpQkFBTCxFQUFsQyxFQUE0RDtBQUMxRDtBQUNEOztBQUVELFNBQUtULFdBQUwsQ0FBaUJpQyxJQUFqQjtBQUNBLFNBQUtaLFNBQUwsQ0FBZSxTQUFmO0FBQ0QsRzs7bUJBRURhLEssb0JBQVE7QUFDTixRQUFJLENBQUMsS0FBS1AsaUJBQUwsRUFBRCxJQUE2QixDQUFDLEtBQUtsQixpQkFBTCxFQUFsQyxFQUE0RDtBQUMxRDtBQUNEOztBQUVELFNBQUtULFdBQUwsQ0FBaUJpQyxJQUFqQjtBQUNBLFNBQUtaLFNBQUwsQ0FBZSxPQUFmO0FBQ0QsRzs7Ozs7a0JBNUhrQnZCLE0iLCJmaWxlIjoiUGxheWVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthdXRob3Jpc2VkUmVxdWVzdCwgcmVxdWVzdH0gZnJvbSAnLi4vYXBpL2NvbW11bmljYXRpb24nO1xuaW1wb3J0IEF1ZGlvQ29udGV4dCBmcm9tICcuL0F1ZGlvQ29udGV4dCc7XG5cbi8qKlxuICogUGxheWVyXG4gKiBTaW1wbGUgQXVkaW8gUGxheWVyIGJhc2VkIG9uIFdlYiBBdWRpbyBBUEkgdGVjaG5vbG9neVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbGF5ZXIgZXh0ZW5kcyBBdWRpb0NvbnRleHQge1xuICAvKipcbiAgICogUHJpdmF0ZSBvYmplY3QgdG8gaG9sZCBBdWRpb0J1ZmZlciBub2RlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYXVkaW9CdWZmZXIgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBQcml2YXRlIG9iamVjdCB0byBob2xkIEF1ZGlvQnVmZmVyU291cmNlTm9kZSBub2RlLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYXVkaW9Tb3VyY2UgPSBudWxsO1xuXG4gIGNyZWF0ZUJ1ZmZlclNvdXJjZSgpIHtcbiAgICB0aGlzLmRpc2Nvbm5lY3RCdWZmZXJTb3VyY2UoKTtcblxuICAgIC8vIENyZWF0ZSBhIHNvdW5kIHNvdXJjZVxuICAgIHRoaXMuYXVkaW9Tb3VyY2UgPSB0aGlzLmF1ZGlvQ29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTtcblxuICAgIC8vIFNlbGVjdCB3aGF0IHRvIHBsYXlcbiAgICB0aGlzLmF1ZGlvU291cmNlLmJ1ZmZlciA9IHRoaXMuYXVkaW9CdWZmZXI7XG5cbiAgICAvLyBDb25uZWN0IHRvIHRoZSBzcGVha2VycyFcbiAgICB0aGlzLmF1ZGlvU291cmNlLmNvbm5lY3QodGhpcy5hdWRpb0NvbnRleHQuZGVzdGluYXRpb24pO1xuXG4gICAgLy8gQWRkIHNvbWUgZXZlbnQgaGFuZGxlcnM7XG4gICAgdGhpcy5hdWRpb1NvdXJjZS5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsIHRoaXMuc3VzcGVuZEF1ZGlvQ29udGV4dCk7XG4gIH1cblxuICBkaXNjb25uZWN0QnVmZmVyU291cmNlKCkge1xuICAgIGlmICh0aGlzLmF1ZGlvU291cmNlRXhpc3RzKCkpIHtcbiAgICAgIHRoaXMuYXVkaW9Tb3VyY2UuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5hdWRpb1NvdXJjZS5yZW1vdmVFdmVudExpc3RlbmVyKCdlbmRlZCcsIHRoaXMuc3VzcGVuZEF1ZGlvQ29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBhdWRpbyBzdHJlYW0gZnJvbSBhbiBVUkwuXG4gICAqXG4gICAqIElmIHRoZSB3aXRoSXRzbFRva2VuIGlzIHByb3ZpZGVkIChhbmQgc2V0IHRvIHRydWUpIHVzZSB0aGUgYXV0aG9yaXplZFJlcXVlc3QgbWV0aG9kIHRvIGxvYWRcbiAgICogdGhlIGF1ZGlvLiBUaGlzIGluIGVmZmVjdCB3aWxsIHNldCB0aGUgSVRTTGFuZ3VhZ2UgYmVhcmVyIHRva2VuIChpZiBhdmFpbGFibGUpIHRvIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBGb3IgYm90aCByZXF1ZXN0IG1ldGhvZHMgZ29lczogdGhlcmUncyBubyBjaGVjayB3aGV0aGVyIHlvdSdyZSB0cnlpbmcgdG8gbG9hZCBmcm9tIElUU0xhbmd1YWdlXG4gICAqIGJhY2tlbmQgc3lzdGVtIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFVybCB0byBsb2FkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHdpdGhJdHNsVG9rZW4gLSBNYWtlIHVzZSBvZiBhdXRob3JpemVkUmVxdWVzdCBvciBqdXN0IHJlcXVlc3QgaWYgc2V0IHRvIGZhbHNlLlxuICAgKi9cbiAgYXN5bmMgbG9hZCh1cmwsIHdpdGhJdHNsVG9rZW4gPSB0cnVlKSB7XG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgd2hldGhlciB0byBhc2sgYXV0aG9yaXplZCwgb3Igbm90LlxuICAgIGNvbnN0IHJlcXVlc3RNZXRob2QgPSB3aXRoSXRzbFRva2VuID8gYXV0aG9yaXNlZFJlcXVlc3QgOiByZXF1ZXN0O1xuICAgIGNvbnN0IHthdWRpb0NvbnRleHR9ID0gdGhpcztcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RNZXRob2QoJ0dFVCcsIHVybCk7XG4gICAgICBjb25zdCBhdWRpb0RhdGEgPSBhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpO1xuICAgICAgYXVkaW9Db250ZXh0LmRlY29kZUF1ZGlvRGF0YShhdWRpb0RhdGEsIGRlY29kZWRBdWRpbyA9PiB7XG4gICAgICAgIHRoaXMuYXVkaW9CdWZmZXIgPSBkZWNvZGVkQXVkaW87XG4gICAgICAgIHRoaXMuZmlyZUV2ZW50KCdsb2FkZWQnKTtcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIGNvbnNvbGUubG9nKCdjYXRjaGllIGNhdGNoJyk7XG4gICAgICB0aGlzLmVycm9yKGAke2Vycm9yLm5hbWV9OiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgaWYgdGhlIGF1ZGlvQnVmZmVyIGhhcyBiZWVuIGNyZWF0ZWQgYW5kIGxvYWRlZCwgb3Igbm90LlxuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUaGUgYXVkaW9CdWZmZXIgY3JlYXRlZC5cbiAgICovXG4gIGF1ZGlvQnVmZmVyRXhpc3RzKCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuYXVkaW9CdWZmZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBpZiBhdWRpb1NvdXJjZSBoYXMgYmVlbiBjcmVhdGVkLCBvciBub3QuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUaGUgYXVkaW9Tb3VyY2UgY3JlYXRlZC5cbiAgICovXG4gIGF1ZGlvU291cmNlRXhpc3RzKCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuYXVkaW9Tb3VyY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGF1ZGlvIHBsYXliYWNrIG9mIHRoYXQgd2hhdCBpcyBpbiB0aGUgYnVmZmVyLlxuICAgKi9cbiAgcGxheSgpIHtcbiAgICB0aGlzLmNyZWF0ZUJ1ZmZlclNvdXJjZSgpO1xuXG4gICAgaWYgKHRoaXMuYXVkaW9Db250ZXh0LnN0YXRlID09PSAnc3VzcGVuZGVkJykge1xuICAgICAgdGhpcy5hdWRpb0NvbnRleHQucmVzdW1lKCk7XG4gICAgfVxuXG4gICAgLy8gcGxheSB0aGUgc291cmNlIG5vd1xuICAgIHRoaXMuYXVkaW9Tb3VyY2Uuc3RhcnQoKTtcbiAgICB0aGlzLmZpcmVFdmVudCgncGxheWluZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgcGxheWJhY2sgb2YgYXVkaW8uXG4gICAqIENoZWNrIGZvciBidWZmZXIgYW5kIHNvdXJjZSB0byBleGlzdCwgaWYgbm90LCBleGl0LlxuICAgKi9cbiAgc3RvcCgpIHtcbiAgICBpZiAoIXRoaXMuYXVkaW9CdWZmZXJFeGlzdHMoKSAmJiAhdGhpcy5hdWRpb1NvdXJjZUV4aXN0cygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hdWRpb1NvdXJjZS5zdG9wKCk7XG4gICAgdGhpcy5maXJlRXZlbnQoJ3N0b3BwZWQnKTtcbiAgfVxuXG4gIHBhdXNlKCkge1xuICAgIGlmICghdGhpcy5hdWRpb0J1ZmZlckV4aXN0cygpICYmICF0aGlzLmF1ZGlvU291cmNlRXhpc3RzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmF1ZGlvU291cmNlLnN0b3AoKTtcbiAgICB0aGlzLmZpcmVFdmVudCgncGF1c2UnKTtcbiAgfVxufVxuIl19 |
807328
6925