Socket
Socket
Sign inDemoInstall

@haventech/semotus

Package Overview
Dependencies
Maintainers
3
Versions
45
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@haventech/semotus - npm Package Compare versions

Comparing version 4.1.1-beta.1 to 4.1.1

2

dist/helpers/ProcessCall.js

@@ -523,2 +523,2 @@ "use strict";

exports.postCallErrorLog = postCallErrorLog;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvY2Vzc0NhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9Qcm9jZXNzQ2FsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXFEO0FBR3JEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBc0IsV0FBVyxDQUFDLE9BQTJCLEVBQUUsV0FBcUI7Ozs7Ozs7b0JBRzlELHFCQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUE7O29CQUFoRCxXQUFXLEdBQUcsU0FBa0MsQ0FBQztvQkFDakQscUJBQU0sV0FBVyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsRUFBQTs7b0JBQXZDLFNBQXVDLENBQUM7b0JBQ3ZCLHFCQUFNLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxFQUFBOztvQkFBdkQsVUFBVSxHQUFHLFNBQTBDO29CQUM5QyxxQkFBTSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUE7O29CQUF4RCxVQUFVLEdBQUcsU0FBMkMsQ0FBQztvQkFDMUMscUJBQU0sV0FBVyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBQTs7b0JBQS9DLE1BQU0sR0FBRyxTQUFzQztvQkFDckQscUJBQU0sWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBQTs7b0JBQW5DLFNBQW1DLENBQUM7b0JBQ3BDLHFCQUFNLGVBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUE7O29CQUF0QyxTQUFzQyxDQUFDOzs7O29CQUV2QyxxQkFBTSxlQUFlLENBQUMsT0FBTyxFQUFFLEtBQUcsQ0FBQyxFQUFBOztvQkFBbkMsU0FBbUMsQ0FBQzs7Ozs7O0NBRTNDO0FBYkQsa0NBYUM7QUFHRDs7OztHQUlHO0FBQ0gsU0FBZSxTQUFTLENBQUMsT0FBMkI7Ozs7WUFDekMsT0FBTyxHQUE0RixPQUFPLFFBQW5HLEVBQUUsVUFB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QUMsQ0FBQztJQUM3QixPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQzVCLENBQUM7QUFHRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQXNCLEVBQUUsV0FBd0I7SUFDNUgsSUFBSSxPQUFPLEdBQUc7UUFDVixTQUFTLEVBQUUsU0FBUztRQUNwQixNQUFNLEVBQUUscUJBQXFCO1FBQzdCLElBQUksRUFBRTtZQUNGLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtZQUNyQixRQUFRLEVBQUUsbUJBQU8sQ0FBQyxXQUFXLENBQUM7WUFDOUIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO1lBQzdCLE9BQU8sRUFBRSxTQUFTO1NBQ3JCO1FBQ0QsUUFBUSxFQUFFLFNBQVM7S0FDdEIsQ0FBQztJQUVGLE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBRTVCLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztLQUNsQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQXBCRCw0Q0FvQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RlbGF5LCBnZXRFcnJvciwgbG9nVGltZX0gZnJvbSAnLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHtDYWxsQ29udGV4dCwgUHJvY2Vzc0NhbGxQYXlsb2FkLCBSZW1vdGVDYWxsLCBTZW1vdHVzLCBTZXNzaW9ufSBmcm9tICcuL1R5cGVzJztcblxuLyoqXG4gKiBXZSBwcm9jZXNzIHRoZSBjYWxsIHRoZSByZW1vdGUgbWV0aG9kIGluIHN0YWdlcyBzdGFydGluZyBieSBsZXR0aW5nIHRoZSBjb250cm9sbGVyIGV4YW1pbmUgdGhlXG4gKiBjaGFuZ2VzIChwcmVDYWxsSG9vaykgYW5kIGdpdmluZyBpdCBhIGNoYW5jZSB0byByZWZyZXNoIGRhdGEgaWYgaXQgbmVlZHMgdG8uICBUaGVuIHdlIGFwcGx5IGFueVxuICogY2hhbmdlcyBpbiB0aGUgbWVzc2FnZXMgYW5kIGdpdmUgdGhlIG9iamVjdCBvd25pbmcgdGhlIG1ldGhvZCBhIGNoYW5jZSB0byB2YWxpZGF0ZSB0aGF0IHRoZVxuICogY2FsbCBpcyB2YWxpZCBhbmQgdGFrZSBjYXJlIG9mIGFueSBhdXRob3JpemF0aW9uIGNvbmNlcm5zLiAgRmluYWxseSB3ZSBsZXQgdGhlIGNvbnRyb2xsZXIgcGVyZm9ybVxuICogYW55IHBvc3QtY2FsbCBwcm9jZXNzaW5nIHN1Y2ggYXMgY29tbWl0aW5nIGRhdGEgYW5kIHRoZW4gd2UgZGVhbCB3aXRoIGEgZmFpbHVyZSBvciBzdWNjZXNzLlxuICpcbiAqIEBwYXJhbSBwYXlsb2FkXG4gKiBAcGFyYW0ge3Vua25vd259IGZvcmNldXBkYXRlIHVua25vd25cbiAqXG4gKiBAcmV0dXJucyB7dW5rbm93bn0gdW5rbm93blxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0NhbGwocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCBmb3JjZXVwZGF0ZT86IGJvb2xlYW4pIHtcblxuICAgIHRyeSB7XG4gICAgICAgIGZvcmNldXBkYXRlID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGZvcmNldXBkYXRlKTtcbiAgICAgICAgYXdhaXQgcHJlQ2FsbEhvb2socGF5bG9hZCwgZm9yY2V1cGRhdGUpO1xuICAgICAgICBsZXQgdmFsaWRhdGlvbiA9IGF3YWl0IGFwcGx5Q2hhbmdlc0FuZFZhbGlkYXRlQ2FsbChwYXlsb2FkKTtcbiAgICAgICAgdmFsaWRhdGlvbiA9IGF3YWl0IGN1c3RvbVZhbGlkYXRpb24ocGF5bG9hZCwgdmFsaWRhdGlvbik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhbGxJZlZhbGlkKHBheWxvYWQsIHZhbGlkYXRpb24pO1xuICAgICAgICBhd2FpdCBwb3N0Q2FsbEhvb2socGF5bG9hZCwgcmVzdWx0KTtcbiAgICAgICAgYXdhaXQgcG9zdENhbGxTdWNjZXNzKHBheWxvYWQsIHJlc3VsdCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGF3YWl0IHBvc3RDYWxsRmFpbHVyZShwYXlsb2FkLCBlcnIpO1xuICAgIH1cbn1cblxuXG4vKipcbiAqIElmIHRoZXJlIGlzIGFuIHVwZGF0ZSBjb25mbGljdCB3ZSB3YW50IHRvIHJldHJ5IGFmdGVyIHJlc3RvcmluZyB0aGUgc2Vzc2lvblxuICpcbiAqIEByZXR1cm5zIHsqfSB1bmtub3duXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJldHJ5Q2FsbChwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQpIHtcbiAgICBjb25zdCB7c2Vtb3R1cywgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQsIHNlc3Npb24sIHN1YnNjcmlwdGlvbklkLCByZW1vdGVDYWxsSWQsIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2t9ID0gcGF5bG9hZDtcblxuICAgIGlmIChyZXN0b3JlU2Vzc2lvbkNhbGxiYWNrKSB7XG4gICAgICAgIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvY2Vzc0NhbGwocGF5bG9hZCwgdHJ1ZSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoYXQgb2JqZWN0cyBjaGFuZ2VkIGFuZCBwYXNzIHRoaXMgdG8gdGhlIHByZVNlcnZlckNhbGwgbWV0aG9kIG9uIHRoZSBjb250cm9sbGVyXG4gKlxuICogQHBhcmFtIHBheWxvYWRcbiAqIEBwYXJhbSAgZm9yY2V1cGRhdGUgdW5rbm93blxuICpcbiAqIEByZXR1cm5zICB1bmtub3duXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHByZUNhbGxIb29rKHBheWxvYWQ6IFByb2Nlc3NDYWxsUGF5bG9hZCwgZm9yY2V1cGRhdGU/OiBib29sZWFuKTogUHJvbWlzZTx2b2lkIHwgYm9vbGVhbj4ge1xuICAgIGNvbnN0IHtzZW1vdHVzLCByZW1vdGVDYWxsLCBzZXNzaW9uLCBjYWxsQ29udGV4dCwgSFRUUE9ianN9ID0gcGF5bG9hZDtcbiAgICBzZW1vdHVzLmxvZ2dlci5pbmZvKFxuICAgICAgICB7XG4gICAgICAgICAgICBjb21wb25lbnQ6ICdzZW1vdHVzJyxcbiAgICAgICAgICAgIG1vZHVsZTogJ3Byb2Nlc3NDYWxsJyxcbiAgICAgICAgICAgIGFjdGl2aXR5OiAncHJlU2VydmVyQ2FsbCcsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgY2FsbDogcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICAgICAgICAgIHNlcXVlbmNlOiByZW1vdGVDYWxsLnNlcXVlbmNlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW90ZUNhbGwubmFtZVxuICAgICk7XG5cbiAgICBpZiAoc2Vtb3R1cy5jb250cm9sbGVyICYmIHNlbW90dXMuY29udHJvbGxlci5wcmVTZXJ2ZXJDYWxsKSB7XG4gICAgICAgIGxldCBjaGFuZ2VzID0ge307XG5cbiAgICAgICAgZm9yICh2YXIgb2JqSWQgaW4gSlNPTi5wYXJzZShyZW1vdGVDYWxsLmNoYW5nZXMpKSB7XG4gICAgICAgICAgICBjaGFuZ2VzW3NlbW90dXMuX19kaWN0aW9uYXJ5X19bb2JqSWQucmVwbGFjZSgvW14tXSotLywgJycpLnJlcGxhY2UoLy0uKi8sICcnKV0uX19uYW1lX19dID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZW1vdGVPYmplY3QgPSBzZXNzaW9uLm9iamVjdHNbcmVtb3RlQ2FsbC5pZF07XG5cbiAgICAgICAgLy8gTmVlZCB0byBkb3VibGUgY2hlY2sgaWYgbm90IGluIHNlc3Npb24sIHdoYXQgdGhlIHRlbXBsYXRlIGlzLlxuICAgICAgICBsZXQgcmVtb3RlVGVtcGxhdGUgPSBzZW1vdHVzLl9fZGljdGlvbmFyeV9fW3JlbW90ZUNhbGwuaWQucmVwbGFjZSgvW14tXSotLywgJycpLnJlcGxhY2UoLy0uKi8sICcnKV07XG4gICAgICAgIGxldCBpc1B1YmxpYyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChyZW1vdGVPYmplY3QpIHtcbiAgICAgICAgICAgIGlzUHVibGljID0gc2Vtb3R1cy5yb2xlID09PSAnc2VydmVyJyAmJiByZW1vdGVPYmplY3RbcmVtb3RlQ2FsbC5uYW1lXSAmJiByZW1vdGVPYmplY3RbcmVtb3RlQ2FsbC5uYW1lXS5yZW1vdGVQdWJsaWM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmVtb3RlVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBjbGFzcyBkb2Vzbid0IGV4aXN0LCB3ZSBzaG91bGQgZ2V0IHRoZSByZW1vdGUgZnVuY3Rpb24gZnJvbSB0aGUgcHJvdG90eXBlXG4gICAgICAgICAgICBpc1B1YmxpYyA9IHNlbW90dXMucm9sZSA9PT0gJ3NlcnZlcicgJiYgcmVtb3RlVGVtcGxhdGUucHJvdG90eXBlW3JlbW90ZUNhbGwubmFtZV0gJiYgcmVtb3RlVGVtcGxhdGUucHJvdG90eXBlW3JlbW90ZUNhbGwubmFtZV0ucmVtb3RlUHVibGljO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2Vtb3R1cy5sb2dnZXIuZXJyb3Ioe1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogJ3NlbW90dXMnLFxuICAgICAgICAgICAgICAgIG1vZHVsZTogJ3Byb2Nlc3NDYWxsJyxcbiAgICAgICAgICAgICAgICBhY3Rpdml0eTogJ3ByZVNlcnZlckNhbGwnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbDogcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIFx0J0NvdWxkIG5vdCBmaW5kIHRlbXBsYXRlIGZvciAnICsgb2JqSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbW90dXMuY29udHJvbGxlci5wcmVTZXJ2ZXJDYWxsLmNhbGwoXG4gICAgICAgICAgICBzZW1vdHVzLmNvbnRyb2xsZXIsXG4gICAgICAgICAgICByZW1vdGVDYWxsLmNoYW5nZXMubGVuZ3RoID4gMixcbiAgICAgICAgICAgIGNoYW5nZXMsXG4gICAgICAgICAgICBjYWxsQ29udGV4dCxcbiAgICAgICAgICAgIGZvcmNldXBkYXRlLFxuICAgICAgICAgICAgcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICAgICAgcmVtb3RlQ2FsbCxcbiAgICAgICAgICAgIGlzUHVibGljLFxuICAgICAgICAgICAgSFRUUE9ianNcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbi8qKlxuICogQXBwbHkgY2hhbmdlcyBpbiB0aGUgbWVzc2FnZSBhbmQgdGhlbiB2YWxpZGF0ZSB0aGUgY2FsbC4gIFRocm93IFwiU3luYyBFcnJvclwiIGlmIGNoYW5nZXMgY2FuJ3QgYmUgYXBwbGllZFxuICpcbiAqIEByZXR1cm5zIHt1bmtub3dufSB1bmtub3duXG4gKi9cbmZ1bmN0aW9uIGFwcGx5Q2hhbmdlc0FuZFZhbGlkYXRlQ2FsbChwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQpOiBib29sZWFuIHtcbiAgICBjb25zdCB7c2Vtb3R1cywgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQsIHNlc3Npb24sIHN1YnNjcmlwdGlvbklkLCByZW1vdGVDYWxsSWQsIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2t9ID0gcGF5bG9hZDtcblxuICAgIHNlbW90dXMubG9nZ2VyLmluZm8oXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogJ3NlbW90dXMnLFxuICAgICAgICAgICAgbW9kdWxlOiAncHJvY2Vzc0NhbGwnLFxuICAgICAgICAgICAgYWN0aXZpdHk6ICdhcHBseUNoYW5nZXNBbmRWYWxpZGF0ZUNhbGwnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZSxcbiAgICAgICAgICAgICAgICByZW1vdGVDYWxsSWQ6IHJlbW90ZUNhbGwuaWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3RlQ2FsbC5uYW1lXG4gICAgKTtcblxuICAgIGxldCBjaGFuZ2VzID0gSlNPTi5wYXJzZShyZW1vdGVDYWxsLmNoYW5nZXMpO1xuXG4gICAgY29uc3QgcmVzID0gc2Vtb3R1cy5fYXBwbHlDaGFuZ2VzKGNoYW5nZXMsIHNlbW90dXMucm9sZSA9PT0gJ2NsaWVudCcsIHN1YnNjcmlwdGlvbklkLCBjYWxsQ29udGV4dCk7XG4gICAgaWYgKHJlcykge1xuICAgICAgICBjb25zdCBvYmogPSBzZXNzaW9uLm9iamVjdHNbcmVtb3RlQ2FsbC5pZF07XG5cbiAgICAgICAgaWYgKCFvYmopIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgb2JqZWN0IGZvciByZW1vdGUgY2FsbCAke3JlbW90ZUNhbGwuaWR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjaGVjayB0byBzZWUgaWYgdGhpcyBmdW5jdGlvbiBpcyBzdXBwb3NlZCB0byBiZSBjYWxsZWQgZGlyZWN0bHkgZnJvbSBjbGllbnRcbiAgICAgICAgaWYgKG9iai5fX3Byb3RvX19bcmVtb3RlQ2FsbC5uYW1lXS5fX29uX18gIT09ICdzZXJ2ZXInKSB7XG4gICAgICAgICAgICB0aHJvdyAnSW52YWxpZCBGdW5jdGlvbiBDYWxsOyBub3QgYW4gQVBJIGZ1bmN0aW9uJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZW1vdHVzLnJvbGUgPT09ICdzZXJ2ZXInICYmIG9iai52YWxpZGF0ZVNlcnZlckNhbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmoudmFsaWRhdGVTZXJ2ZXJDYWxsLmNhbGwob2JqLCByZW1vdGVDYWxsLm5hbWUsIGNhbGxDb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICdTeW5jIEVycm9yJztcbiAgICB9XG59XG5cbi8qKlxuICogQXBwbHkgZnVuY3Rpb24gc3BlY2lmaWMgY3VzdG9tIHNlcnZlclNpZGUgdmFsaWRhdGlvbiBmdW5jdGlvbnNcbiAqXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICogQHBhcmFtIHtib29sZWFufSBpc1ZhbGlkIC0gUmVzdWx0IG9mIHByZXZpb3VzIHZhbGlkYXRpb24gc3RlcCAoYXBwbHlDaGFuZ2VzQW5kVmFsaWRhdGVDYWxsKVxuICogQHBhcmFtIHNlc3Npb25cbiAqIEBwYXJhbSByZW1vdGVDYWxsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBwYXNzZWQgZnVuY3Rpb25cbiAqL1xuZnVuY3Rpb24gY3VzdG9tVmFsaWRhdGlvbihwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQsIGlzVmFsaWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBjb25zdCB7c2Vtb3R1cywgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQsIHNlc3Npb24sIHN1YnNjcmlwdGlvbklkLCByZW1vdGVDYWxsSWQsIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2t9ID0gcGF5bG9hZDtcblxuICAgIGxldCBsb2dnZXJPYmplY3QgPSB7XG4gICAgICAgIGNvbXBvbmVudDogJ3NlbW90dXMnLFxuICAgICAgICBtb2R1bGU6ICdwcm9jZXNzQ2FsbCcsXG4gICAgICAgIGFjdGl2aXR5OiAnY3VzdG9tVmFsaWRhdGlvbicsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgIHNlcXVlbmNlOiByZW1vdGVDYWxsLnNlcXVlbmNlLFxuICAgICAgICAgICAgcmVtb3RlQ2FsbElkOiByZW1vdGVDYWxsLmlkXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgbGV0IHJlbW90ZU9iamVjdCA9IHNlc3Npb24ub2JqZWN0c1tyZW1vdGVDYWxsLmlkXTtcblxuICAgIHNlbW90dXMubG9nZ2VyLmluZm8obG9nZ2VyT2JqZWN0LCByZW1vdGVDYWxsLm5hbWUpO1xuXG4gICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHNlbW90dXMucm9sZSA9PT0gJ3NlcnZlcicgJiYgcmVtb3RlT2JqZWN0W3JlbW90ZUNhbGwubmFtZV0uc2VydmVyVmFsaWRhdGlvbikge1xuICAgICAgICBsZXQgYXJncyA9IHNlbW90dXMuX2V4dHJhY3RBcmd1bWVudHMocmVtb3RlQ2FsbCk7XG4gICAgICAgIGFyZ3MudW5zaGlmdChyZW1vdGVPYmplY3QpO1xuXG4gICAgICAgIHJldHVybiByZW1vdGVPYmplY3RbcmVtb3RlQ2FsbC5uYW1lXS5zZXJ2ZXJWYWxpZGF0aW9uLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBJZiB0aGUgY2hhbmdlcyBjb3VsZCBiZSBhcHBsaWVkIGFuZCB0aGUgdmFsaWRhdGlvbiB3YXMgc3VjY2Vzc2Z1bCBjYWxsIHRoZSBtZXRob2RcbiAqXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICogQHBhcmFtIHtib29sZWFufSBpc1ZhbGlkIC0gdGFrZXMgYSBmbGFnIGlmIHRoZSBjYWxsIGlzIHZhbGlkIG9yIG5vdCwgaWYgaXQgaXMgdGhlbiB3ZSBwcm9jZWVkIG5vcm1hbGx5LFxuICogb3RoZXJ3aXNlLCB3ZSB0aHJvdyBhbiBlcnJvciBhbmQgc3RvcCBleGVjdXRpb25cbiAqXG4gKiBAcGFyYW0gc2Vzc2lvblxuICogQHBhcmFtIHJlbW90ZUNhbGxcbiAqIEByZXR1cm5zIHt1bmtub3dufSB1bmtub3duXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNhbGxJZlZhbGlkKHBheWxvYWQ6IFByb2Nlc3NDYWxsUGF5bG9hZCwgaXNWYWxpZDogYm9vbGVhbikge1xuICAgIGNvbnN0IHtzZW1vdHVzLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCwgc2Vzc2lvbiwgc3Vic2NyaXB0aW9uSWQsIHJlbW90ZUNhbGxJZCwgcmVzdG9yZVNlc3Npb25DYWxsYmFja30gPSBwYXlsb2FkO1xuXG4gICAgbGV0IGxvZ2dlck9iamVjdCA9IHtcbiAgICAgICAgY29tcG9uZW50OiAnc2Vtb3R1cycsXG4gICAgICAgIG1vZHVsZTogJ3Byb2Nlc3NDYWxsJyxcbiAgICAgICAgYWN0aXZpdHk6ICdjYWxsSWZWYWxpZCcsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgIHNlcXVlbmNlOiByZW1vdGVDYWxsLnNlcXVlbmNlLFxuICAgICAgICAgICAgcmVtb3RlQ2FsbElkOiByZW1vdGVDYWxsLmlkXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgc2Vtb3R1cy5sb2dnZXIuaW5mbyhsb2dnZXJPYmplY3QsIHJlbW90ZUNhbGwubmFtZSk7XG5cbiAgICBsZXQgb2JqID0gc2Vzc2lvbi5vYmplY3RzW3JlbW90ZUNhbGwuaWRdO1xuXG4gICAgaWYgKCFvYmpbcmVtb3RlQ2FsbC5uYW1lXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVtb3RlQ2FsbC5uYW1lICsgJyBmdW5jdGlvbiBkb2VzIG5vdCBleGlzdC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzVmFsaWQgJiYgcmVtb3RlQ2FsbCAmJiByZW1vdGVDYWxsLm5hbWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlbW90ZUNhbGwubmFtZSArICcgcmVmdXNlZCcpO1xuICAgIH1cblxuICAgIGxldCBhcmdzID0gc2Vtb3R1cy5fZXh0cmFjdEFyZ3VtZW50cyhyZW1vdGVDYWxsKTtcblxuICAgIHJldHVybiBvYmpbcmVtb3RlQ2FsbC5uYW1lXS5hcHBseShvYmosIGFyZ3MpO1xufVxuXG4vKipcbiAqIExldCB0aGUgY29udHJvbGxlciBrbm93IHRoYXQgdGhlIG1ldGhvZCB3YXMgY29tcGxldGVkIGFuZCBnaXZlIGl0IGEgY2hhbmNlIHRvIGNvbW1pdCBjaGFuZ2VzXG4gKlxuICogQHBhcmFtIHBheWxvYWRcbiAqIEBwYXJhbSAgcmV0dXJuVmFsdWUgdW5rbm93blxuICpcbiAqIEByZXR1cm5zXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHBvc3RDYWxsSG9vayhwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQsIHJldHVyblZhbHVlKSB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0LCBIVFRQT2Jqc30gPSBwYXlsb2FkO1xuXG4gICAgaWYgKHNlbW90dXMuY29udHJvbGxlciAmJiBzZW1vdHVzLmNvbnRyb2xsZXIucG9zdFNlcnZlckNhbGwpIHtcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlczogYm9vbGVhbiA9IHJlbW90ZUNhbGwuY2hhbmdlcy5sZW5ndGggPiAyO1xuICAgICAgICBhd2FpdCBzZW1vdHVzLmNvbnRyb2xsZXIucG9zdFNlcnZlckNhbGwuY2FsbChzZW1vdHVzLmNvbnRyb2xsZXIsIGhhc0NoYW5nZXMsIGNhbGxDb250ZXh0LCBzZW1vdHVzLmNoYW5nZVN0cmluZywgSFRUUE9ianMpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbi8qKlxuICogUGFja2FnZSB1cCBhbnkgY2hhbmdlcyByZXN1bHRpbmcgZnJvbSB0aGUgZXhlY3V0aW9uIGFuZCBzZW5kIHRoZW0gYmFjayBpbiB0aGUgbWVzc2FnZSwgY2xlYXJpbmdcbiAqIG91ciBjaGFuZ2UgcXVldWUgdG8gYWNjdW11bGF0ZSBtb3JlIGNoYW5nZXMgZm9yIHRoZSBuZXh0IGNhbGxcbiAqXG4gKiBAcGFyYW0gc2Vtb3R1c1xuICogQHBhcmFtIHJlbW90ZUNhbGxcbiAqIEBwYXJhbSByZW1vdGVDYWxsSWRcbiAqIEBwYXJhbSB7dW5rbm93bn0gcmV0IHVua25vd25cbiAqL1xuZnVuY3Rpb24gcG9zdENhbGxTdWNjZXNzKHBheWxvYWQ6IFByb2Nlc3NDYWxsUGF5bG9hZCwgcmV0KTogdm9pZCB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0LCBzZXNzaW9uLCByZW1vdGVDYWxsSWR9ID0gcGF5bG9hZDtcblxuICAgIHNlbW90dXMubG9nZ2VyLmluZm8oXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogJ3NlbW90dXMnLFxuICAgICAgICAgICAgbW9kdWxlOiAncHJvY2Vzc0NhbGwnLFxuICAgICAgICAgICAgYWN0aXZpdHk6ICdwb3N0Q2FsbC5zdWNjZXNzJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBjYWxsOiByZW1vdGVDYWxsLm5hbWUsXG4gICAgICAgICAgICAgICAgY2FsbFRpbWU6IGxvZ1RpbWUoY2FsbENvbnRleHQpLFxuICAgICAgICAgICAgICAgIHNlcXVlbmNlOiByZW1vdGVDYWxsLnNlcXVlbmNlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW90ZUNhbGwubmFtZVxuICAgICk7XG5cbiAgICBwYWNrYWdlQ2hhbmdlcyhzZW1vdHVzLCBzZXNzaW9uLHtcbiAgICAgICAgdHlwZTogJ3Jlc3BvbnNlJyxcbiAgICAgICAgc3luYzogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KHNlbW90dXMuX3RvVHJhbnNwb3J0KHJldCkpLFxuICAgICAgICBuYW1lOiByZW1vdGVDYWxsLm5hbWUsXG4gICAgICAgIHJlbW90ZUNhbGxJZDogcmVtb3RlQ2FsbElkXG4gICAgfSk7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIGlkZW50aWZ5IGlmIHRoZXJlJ3MgYSBwb3N0U2VydmVyRXJyb3JIYW5kbGVyIGNhbGxiYWNrIG9uIHRoZSBiYXNlIGNvbnRyb2xsZXJcbiAqIElmIHRoZXJlIGlzLCB3ZSBleGVjdXRlIHRoZSBoYW5kbGVyLCBhbmQgaWYgd2UgY2F0Y2ggYW4gZXJyb3IgaW4gdGhlIGhhbmRsZXIsIHdlIHByb3BvZ2F0ZSBpdCB1cCB0byB0aGUgbG9nZ2VyLlxuICogQHBhcmFtIGxvZ2dlclxuICogQHBhcmFtIHsqfSBjb250cm9sbGVyXG4gKiBAcGFyYW0gdHlwZVxuICogQHBhcmFtIHJlbW90ZUNhbGxcbiAqIEBwYXJhbSByZW1vdGVDYWxsSWRcbiAqIEBwYXJhbSBjYWxsQ29udGV4dFxuICogQHBhcmFtIGNoYW5nZVN0cmluZ1xuICogQHBhcmFtIHNlc3Npb25cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUVycm9ySGFuZGxlcihsb2dnZXIsIGNvbnRyb2xsZXI6IGFueSwgdHlwZSwgcmVtb3RlQ2FsbDogUmVtb3RlQ2FsbCwgcmVtb3RlQ2FsbElkLCBjYWxsQ29udGV4dDogQ2FsbENvbnRleHQsIGNoYW5nZVN0cmluZywgc2Vzc2lvbjogU2Vzc2lvbikge1xuXG4gICAgaWYgKGNvbnRyb2xsZXIgJiYgY29udHJvbGxlci5wb3N0U2VydmVyRXJyb3JIYW5kbGVyKSB7XG4gICAgICAgIGxldCBlcnJvclR5cGUgPSB0eXBlO1xuICAgICAgICBsZXQgZnVuY3Rpb25OYW1lID0gcmVtb3RlQ2FsbC5uYW1lO1xuICAgICAgICBsZXQgb2JqID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoc2Vzc2lvbi5vYmplY3RzW3JlbW90ZUNhbGwuaWRdKSB7XG4gICAgICAgICAgICBvYmogPSBzZXNzaW9uLm9iamVjdHNbcmVtb3RlQ2FsbC5pZF07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGxvZ0JvZHkgPSB7XG4gICAgICAgICAgICBjb21wb25lbnQ6ICdzZW1vdHVzJyxcbiAgICAgICAgICAgIG1vZHVsZTogJ3Byb2Nlc3NDYWxsLmZhaWx1cmUnLFxuICAgICAgICAgICAgYWN0aXZpdHk6ICdwb3N0Q2FsbC5yZXNvbHZlRXJyb3JIYW5kbGVyJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBjYWxsOiByZW1vdGVDYWxsLm5hbWUsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGNvbnRyb2xsZXIucG9zdFNlcnZlckVycm9ySGFuZGxlci5jYWxsKGNvbnRyb2xsZXIsIGVycm9yVHlwZSwgcmVtb3RlQ2FsbElkLCBvYmosIGZ1bmN0aW9uTmFtZSwgY2FsbENvbnRleHQsIGNoYW5nZVN0cmluZyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3IubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGxvZ0JvZHkuZGF0YS5tZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvZ0JvZHkuZGF0YS5tZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoZXJyb3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IobG9nQm9keSwgJ1VzZXIgZGVmaW5lZCBwb3N0U2VydmVyRXJyb3JIYW5kbGVyIHRocmV3IGFuIGVycm9yJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogSGFuZGxlIGVycm9ycyBieSByZXR1cm5pbmcgYW4gYXByb3ByaWF0ZSBtZXNzYWdlLiAgSW4gYWxsIGNhc2VzIGNoYW5nZXMgc2VudCBiYWNrIHRob3VnaCB0aGV5XG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSByZW1vdGVDYWxsXG4gKiBAcGFyYW0gY2FsbENvbnRleHRcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0ge3Vua25vd259IGVyciB1bmtub3duXG4gKlxuICogQHJldHVybnMge3Vua25vd259IEEgUHJvbWlzZVxuICovXG5hc3luYyBmdW5jdGlvbiBwb3N0Q2FsbEZhaWx1cmUocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCBlcnIpIHtcbiAgICBjb25zdCB7c2Vtb3R1cywgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQsIHNlc3Npb24sIHN1YnNjcmlwdGlvbklkLCByZW1vdGVDYWxsSWQsIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2t9ID0gcGF5bG9hZDtcblxuICAgIGxldCBsb2dTdHJpbmcgPSAnJztcblxuICAgIGxldCBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7fTtcblxuICAgIGxldCB1cGRhdGVDb25mbGljdFJldHJ5ID0gZmFsc2U7XG5cbiAgICBpZiAoZXJyID09PSAnU3luYyBFcnJvcicpIHtcbiAgICAgICAgcG9zdENhbGxFcnJvckxvZyhzZW1vdHVzLmxvZ2dlciwgJ3Bvc3RDYWxsLnN5bmNFcnJvcicsIHVuZGVmaW5lZCwgJ2Vycm9yJywgcmVtb3RlQ2FsbC5uYW1lLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgIHBhY2thZ2VDaGFuZ2VzUGF5bG9hZCA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdyZXNwb25zZScsXG4gICAgICAgICAgICBzeW5jOiBmYWxzZSxcbiAgICAgICAgICAgIGNoYW5nZXM6ICcnXG4gICAgICAgIH07XG4gICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSA9PSAnVXBkYXRlIENvbmZsaWN0Jykge1xuICAgICAgICAvLyBOb3QgdGhpcyBtYXkgYmUgY2F1Z2h0IGluIHRoZSB0cmFuc3BvcnQgKGUuZy4gQW1vcnBoaWMpIGFuZCByZXRyaWVkKVxuXG4gICAgICAgIC8vIGluY3JlbWVudCBjYWxsQ29udGV4dC5yZXRyaWVzIGFmdGVyIGNoZWNraW5nIGlmIDwgMy4gU2hvdWxkIHJldHJ5IDMgdGltZXMuXG4gICAgICAgIGlmIChjYWxsQ29udGV4dC5yZXRyaWVzKysgPCAzKSB7XG4gICAgICAgICAgICBwb3N0Q2FsbEVycm9yTG9nKHNlbW90dXMubG9nZ2VyLCAncG9zdENhbGwudXBkYXRlQ29uZmxpY3QnLCB1bmRlZmluZWQsICd3YXJuJywgcmVtb3RlQ2FsbC5uYW1lLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgICAgICB1cGRhdGVDb25mbGljdFJldHJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYXNzaWdubWVudCBpcyBvbmx5IHVzZWQgZm9yIHRoZSBlcnJvciBoYW5kbGVyXG4gICAgICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3JldHJ5J1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc3RDYWxsRXJyb3JMb2coc2Vtb3R1cy5sb2dnZXIsICdwb3N0Q2FsbC51cGRhdGVDb25mbGljdCcsIHVuZGVmaW5lZCwgJ2Vycm9yJywgcmVtb3RlQ2FsbC5uYW1lLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3JldHJ5JyxcbiAgICAgICAgICAgICAgICBzeW5jOiBmYWxzZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghKGVyciBpbnN0YW5jZW9mIEVycm9yKSkge1xuICAgICAgICAgICAgcG9zdENhbGxFcnJvckxvZyhzZW1vdHVzLmxvZ2dlciwgJ3Bvc3RDYWxsLmVycm9yJywgSlNPTi5zdHJpbmdpZnkoZXJyKSwgJ2luZm8nLCByZW1vdGVDYWxsLm5hbWUsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChlcnIuc3RhY2spIHtcbiAgICAgICAgICAgICAgICBsb2dTdHJpbmcgPSAnRXhjZXB0aW9uIGluICcgKyByZW1vdGVDYWxsLm5hbWUgKyAnIC0gJyArIGVyci5tZXNzYWdlICsgKCcgJyArIGVyci5zdGFjayk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvZ1N0cmluZyA9ICdFeGNlcHRpb24gaW4gJyArIHJlbW90ZUNhbGwubmFtZSArICcgLSAnICsgZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBvc3RDYWxsRXJyb3JMb2coc2Vtb3R1cy5sb2dnZXIsICdwb3N0Q2FsbC5leGNlcHRpb24nLCBlcnIubWVzc2FnZSwgJ2Vycm9yJywgbG9nU3RyaW5nLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7XG4gICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgc3luYzogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBnZXRFcnJvcihlcnIpLFxuICAgICAgICAgICAgbmFtZTogcmVtb3RlQ2FsbC5uYW1lXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgT2JqZWN0LmFzc2lnbihwYWNrYWdlQ2hhbmdlc1BheWxvYWQsIHtyZW1vdGVDYWxsSWQ6IHJlbW90ZUNhbGxJZH0pO1xuXG4gICAgYXdhaXQgcmVzb2x2ZUVycm9ySGFuZGxlcihcbiAgICAgICAgc2Vtb3R1cy5sb2dnZXIsXG4gICAgICAgIHNlbW90dXMuY29udHJvbGxlcixcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQudHlwZSxcbiAgICAgICAgcmVtb3RlQ2FsbCxcbiAgICAgICAgcmVtb3RlQ2FsbElkLFxuICAgICAgICBjYWxsQ29udGV4dCxcbiAgICAgICAgc2Vtb3R1cy5jaGFuZ2VTdHJpbmcsXG4gICAgICAgIHNlc3Npb25cbiAgICApO1xuXG4gICAgaWYgKHVwZGF0ZUNvbmZsaWN0UmV0cnkpIHtcbiAgICAgICAgYXdhaXQgZGVsYXkoY2FsbENvbnRleHQucmV0cmllcyAqIDEwMDApO1xuICAgICAgICByZXR1cm4gcmV0cnlDYWxsKHBheWxvYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYWNrYWdlQ2hhbmdlcyhzZW1vdHVzLCBzZXNzaW9uLCBwYWNrYWdlQ2hhbmdlc1BheWxvYWQpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBEZWFsIHdpdGggY2hhbmdlcyBnb2luZyBiYWNrIHRvIHRoZSBjYWxsZXIgLSBBY3R1YWxseSBub3QgQXN5bmMhXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0ge3Vua25vd259IG1lc3NhZ2UgdW5rbm93blxuICovXG5mdW5jdGlvbiBwYWNrYWdlQ2hhbmdlcyhzZW1vdHVzOiBTZW1vdHVzLCBzZXNzaW9uOiBTZXNzaW9uLCBtZXNzYWdlKSB7XG4gICAgc2Vtb3R1cy5fY29udmVydEFycmF5UmVmZXJlbmNlc1RvQ2hhbmdlcygpO1xuICAgIG1lc3NhZ2UuY2hhbmdlcyA9IEpTT04uc3RyaW5naWZ5KHNlbW90dXMuZ2V0Q2hhbmdlcygpKTtcblxuICAgIGlmIChzZW1vdHVzLm1lbVNlc3Npb24gJiYgc2Vtb3R1cy5tZW1TZXNzaW9uLnNlbW90dXMgJiYgc2Vtb3R1cy5tZW1TZXNzaW9uLnNlbW90dXMuY2FsbFN0YXJ0VGltZSkge1xuICAgICAgICBzZW1vdHVzLm1lbVNlc3Npb24uc2Vtb3R1cy5jYWxsU3RhcnRUaW1lID0gMDtcbiAgICB9XG5cbiAgICAvLyBJbnNwZWN0IGEgY29weSBvZiB0aGUgbWVzc2FnZSBvbiB0aGUgc2VydmVyIG9ubHkgYmVmb3JlIHNlbnQgb3V0LiBPbmx5IGZvciBkZWJ1ZyBwdXJwb3Nlc1xuICAgIGlmIChzZW1vdHVzLmNvbnRyb2xsZXIgJiYgc2Vtb3R1cy5jb250cm9sbGVyLmluc3BlY3RNZXNzYWdlKSB7XG4gICAgICAgIHNlbW90dXMuY29udHJvbGxlci5pbnNwZWN0TWVzc2FnZShPYmplY3QuYXNzaWduKHt9LCBtZXNzYWdlKSk7XG4gICAgfVxuXG4gICAgc2Vzc2lvbi5zZW5kTWVzc2FnZShtZXNzYWdlKTtcbiAgICBzZW1vdHVzLl9kZWxldGVDaGFuZ2VzKCk7XG4gICAgc2Vtb3R1cy5fcHJvY2Vzc1F1ZXVlKCk7XG59XG5cblxuLyoqXG4gKiAgSGVscGVyIGZ1bmN0aW9uIHRvIGxvZyBhbW9ycGhpYyBlcnJvcnMuXG4gKiBAcGFyYW0geyp9IGxvZ2dlclxuICogQHBhcmFtIHsqfSBhY3Rpdml0eVxuICogQHBhcmFtIHsqfSBtZXNzYWdlXG4gKiBAcGFyYW0geyp9IGxvZ1R5cGVcbiAqIEBwYXJhbSB7Kn0gbG9nU3RyaW5nXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbFxuICogQHBhcmFtIGNhbGxDb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3N0Q2FsbEVycm9yTG9nKGxvZ2dlciwgYWN0aXZpdHksIG1lc3NhZ2UsIGxvZ1R5cGUsIGxvZ1N0cmluZywgcmVtb3RlQ2FsbDogUmVtb3RlQ2FsbCwgY2FsbENvbnRleHQ6IENhbGxDb250ZXh0KSB7XG4gICAgbGV0IGxvZ0JvZHkgPSB7XG4gICAgICAgIGNvbXBvbmVudDogJ3NlbW90dXMnLFxuICAgICAgICBtb2R1bGU6ICdwcm9jZXNzQ2FsbC5mYWlsdXJlJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY2FsbDogcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICAgICAgY2FsbFRpbWU6IGxvZ1RpbWUoY2FsbENvbnRleHQpLFxuICAgICAgICAgICAgc2VxdWVuY2U6IHJlbW90ZUNhbGwuc2VxdWVuY2UsXG4gICAgICAgICAgICBtZXNzYWdlOiB1bmRlZmluZWRcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHk6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICBsb2dCb2R5LmFjdGl2aXR5ID0gYWN0aXZpdHk7XG5cbiAgICBpZiAobG9nZ2VyLmRhdGEpIHtcbiAgICAgICAgbG9nQm9keS5kYXRhLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIH1cblxuICAgIGxvZ2dlcltsb2dUeXBlXShsb2dCb2R5LCBsb2dTdHJpbmcpO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvY2Vzc0NhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9Qcm9jZXNzQ2FsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXFEO0FBR3JEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBc0IsV0FBVyxDQUFDLE9BQTJCLEVBQUUsV0FBcUI7Ozs7Ozs7b0JBRzlELHFCQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUE7O29CQUFoRCxXQUFXLEdBQUcsU0FBa0MsQ0FBQztvQkFDakQscUJBQU0sV0FBVyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsRUFBQTs7b0JBQXZDLFNBQXVDLENBQUM7b0JBQ3ZCLHFCQUFNLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxFQUFBOztvQkFBdkQsVUFBVSxHQUFHLFNBQTBDO29CQUM5QyxxQkFBTSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUE7O29CQUF4RCxVQUFVLEdBQUcsU0FBMkMsQ0FBQztvQkFDMUMscUJBQU0sV0FBVyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBQTs7b0JBQS9DLE1BQU0sR0FBRyxTQUFzQztvQkFDckQscUJBQU0sWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBQTs7b0JBQW5DLFNBQW1DLENBQUM7b0JBQ3BDLHFCQUFNLGVBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUE7O29CQUF0QyxTQUFzQyxDQUFDOzs7O29CQUV2QyxxQkFBTSxlQUFlLENBQUMsT0FBTyxFQUFFLEtBQUcsQ0FBQyxFQUFBOztvQkFBbkMsU0FBbUMsQ0FBQzs7Ozs7O0NBRTNDO0FBYkQsa0NBYUM7QUFHRDs7OztHQUlHO0FBQ0gsU0FBZSxTQUFTLENBQUMsT0FBMkI7Ozs7WUFDekMsT0FBTyxHQUE0RixPQUFPLFFBQW5HLEVBQUUsVUFBVSxHQUFnRixPQUFPLFdBQXZGLEVBQUUsV0FBVyxHQUFtRSxPQUFPLFlBQTFFLEVBQUUsT0FBTyxHQUEwRCxPQUFPLFFBQWpFLEVBQUUsY0FBYyxHQUEwQyxPQUFPLGVBQWpELEVBQUUsWUFBWSxHQUE0QixPQUFPLGFBQW5DLEVBQUUsc0JBQXNCLEdBQUksT0FBTyx1QkFBWCxDQUFZO1lBRWxILElBQUksc0JBQXNCLEVBQUU7Z0JBQ3hCLHNCQUFzQixFQUFFLENBQUM7YUFDNUI7WUFFRCxzQkFBTyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFDOzs7Q0FDckM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZSxXQUFXLENBQUMsT0FBMkIsRUFBRSxXQUFxQjs7OztZQUNsRSxPQUFPLEdBQWdELE9BQU8sUUFBdkQsRUFBRSxVQUFVLEdBQW9DLE9BQU8sV0FBM0MsRUFBRSxPQUFPLEdBQTJCLE9BQU8sUUFBbEMsRUFBRSxXQUFXLEdBQWMsT0FBTyxZQUFyQixFQUFFLFFBQVEsR0FBSSxPQUFPLFNBQVgsQ0FBWTtZQUN0RSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZjtnQkFDSSxTQUFTLEVBQUUsU0FBUztnQkFDcEIsTUFBTSxFQUFFLGFBQWE7Z0JBQ3JCLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixJQUFJLEVBQUU7b0JBQ0YsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO29CQUNyQixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7aUJBQ2hDO2FBQ0osRUFDRCxVQUFVLENBQUMsSUFBSSxDQUNsQixDQUFDO1lBRUYsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFO2dCQUNwRCxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUVqQixLQUFTLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDOUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztpQkFDbkc7Z0JBRUcsWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUc5QyxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNoRyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUVyQixJQUFJLFlBQVksRUFBRTtvQkFDZCxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQztpQkFDdkg7cUJBQ0ksSUFBSSxjQUFjLEVBQUU7b0JBQ3JCLG1GQUFtRjtvQkFDbkYsUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLGNBQWMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQztpQkFDL0k7cUJBQ0k7b0JBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7d0JBQ2pCLFNBQVMsRUFBRSxTQUFTO3dCQUNwQixNQUFNLEVBQUUsYUFBYTt3QkFDckIsUUFBUSxFQUFFLGVBQWU7d0JBQ3pCLElBQUksRUFBRTs0QkFDRixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7NEJBQ3JCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTt5QkFDaEM7cUJBQ0osRUFBRyw4QkFBOEIsR0FBRyxLQUFLLENBQUMsQ0FBQztpQkFDL0M7Z0JBRUQsc0JBQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUN4QyxPQUFPLENBQUMsVUFBVSxFQUNsQixVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzdCLE9BQU8sRUFDUCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFVBQVUsQ0FBQyxJQUFJLEVBQ2YsVUFBVSxFQUNWLFFBQVEsRUFDUixRQUFRLENBQ1gsRUFBQzthQUNMO2lCQUFNO2dCQUNILHNCQUFPLElBQUksRUFBQzthQUNmOzs7O0NBQ0o7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUywyQkFBMkIsQ0FBQyxPQUEyQjtJQUNyRCxJQUFBLHlCQUFPLEVBQUUsK0JBQVUsRUFBRSxpQ0FBVyxFQUFFLHlCQUFPLEVBQUUsdUNBQWMsRUFBRSxtQ0FBWSxFQUFFLHVEQUFzQixDQUFZO0lBRWxILE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNmO1FBQ0ksU0FBUyxFQUFFLFNBQVM7UUFDcEIsTUFBTSxFQUFFLGFBQWE7UUFDckIsUUFBUSxFQUFFLDZCQUE2QjtRQUN2QyxJQUFJLEVBQUU7WUFDRixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7WUFDckIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO1lBQzdCLFlBQVksRUFBRSxVQUFVLENBQUMsRUFBRTtTQUM5QjtLQUNKLEVBQ0QsVUFBVSxDQUFDLElBQUksQ0FDbEIsQ0FBQztJQUVGLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTdDLElBQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNuRyxJQUFJLEdBQUcsRUFBRTtRQUNMLElBQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUFzQyxVQUFVLENBQUMsRUFBSSxDQUFDLENBQUM7U0FDMUU7UUFFRCw4RUFBOEU7UUFDOUUsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQ3BELE1BQU0sNENBQTRDLENBQUM7U0FDdEQ7UUFFRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRTtZQUNyRCxPQUFPLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDekU7UUFFRCxPQUFPLElBQUksQ0FBQztLQUNmO1NBQU07UUFDSCxNQUFNLFlBQVksQ0FBQztLQUN0QjtBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsZ0JBQWdCLENBQUMsT0FBMkIsRUFBRSxPQUFnQjtJQUM1RCxJQUFBLHlCQUFPLEVBQUUsK0JBQVUsRUFBRSxpQ0FBVyxFQUFFLHlCQUFPLEVBQUUsdUNBQWMsRUFBRSxtQ0FBWSxFQUFFLHVEQUFzQixDQUFZO0lBRWxILElBQUksWUFBWSxHQUFHO1FBQ2YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsTUFBTSxFQUFFLGFBQWE7UUFDckIsUUFBUSxFQUFFLGtCQUFrQjtRQUM1QixJQUFJLEVBQUU7WUFDRixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7WUFDckIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO1lBQzdCLFlBQVksRUFBRSxVQUFVLENBQUMsRUFBRTtTQUM5QjtLQUNKLENBQUM7SUFFRixJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVsRCxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5ELElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDVixPQUFPLEtBQUssQ0FBQztLQUNoQjtTQUFNLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRTtRQUNwRixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUzQixPQUFPLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMzRTtTQUFNO1FBQ0gsT0FBTyxJQUFJLENBQUM7S0FDZjtBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZSxXQUFXLENBQUMsT0FBMkIsRUFBRSxPQUFnQjs7OztZQUM3RCxPQUFPLEdBQTRGLE9BQU8sUUFBbkcsRUFBRSxVQUFVLEdBQWdGLE9BQU8sV0FBdkYsRUFBRSxXQUFXLEdBQW1FLE9BQU8sWUFBMUUsRUFBRSxPQUFPLEdBQTBELE9BQU8sUUFBakUsRUFBRSxjQUFjLEdBQTBDLE9BQU8sZUFBakQsRUFBRSxZQUFZLEdBQTRCLE9BQU8sYUFBbkMsRUFBRSxzQkFBc0IsR0FBSSxPQUFPLHVCQUFYLENBQVk7WUFFOUcsWUFBWSxHQUFHO2dCQUNmLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixNQUFNLEVBQUUsYUFBYTtnQkFDckIsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLElBQUksRUFBRTtvQkFDRixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7b0JBQ3JCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtvQkFDN0IsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUFFO2lCQUM5QjthQUNKLENBQUM7WUFFRixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRS9DLEdBQUcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV6QyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLDJCQUEyQixDQUFDLENBQUM7YUFDbEU7WUFFRCxJQUFJLENBQUMsT0FBTyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFO2dCQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUM7YUFDakQ7WUFFRyxJQUFJLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRWpELHNCQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBQzs7O0NBQ2hEO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWUsWUFBWSxDQUFDLE9BQTJCLEVBQUUsV0FBVzs7Ozs7O29CQUN6RCxPQUFPLEdBQXVDLE9BQU8sUUFBOUMsRUFBRSxVQUFVLEdBQTJCLE9BQU8sV0FBbEMsRUFBRSxXQUFXLEdBQWMsT0FBTyxZQUFyQixFQUFFLFFBQVEsR0FBSSxPQUFPLFNBQVgsQ0FBWTt5QkFFekQsQ0FBQSxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFBLEVBQXZELHdCQUF1RDtvQkFDakQsVUFBVSxHQUFZLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztvQkFDMUQscUJBQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxFQUFBOztvQkFBekgsU0FBeUgsQ0FBQzs7d0JBRTlILHNCQUFPLFdBQVcsRUFBQzs7OztDQUN0QjtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxlQUFlLENBQUMsT0FBMkIsRUFBRSxHQUFHO0lBQzlDLElBQUEseUJBQU8sRUFBRSwrQkFBVSxFQUFFLGlDQUFXLEVBQUUseUJBQU8sRUFBRSxtQ0FBWSxDQUFZO0lBRTFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNmO1FBQ0ksU0FBUyxFQUFFLFNBQVM7UUFDcEIsTUFBTSxFQUFFLGFBQWE7UUFDckIsUUFBUSxFQUFFLGtCQUFrQjtRQUM1QixJQUFJLEVBQUU7WUFDRixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7WUFDckIsUUFBUSxFQUFFLG1CQUFPLENBQUMsV0FBVyxDQUFDO1lBQzlCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtTQUNoQztLQUNKLEVBQ0QsVUFBVSxDQUFDLElBQUksQ0FDbEIsQ0FBQztJQUVGLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFDO1FBQzVCLElBQUksRUFBRSxVQUFVO1FBQ2hCLElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRCxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7UUFDckIsWUFBWSxFQUFFLFlBQVk7S0FDN0IsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsVUFBZSxFQUFFLElBQUksRUFBRSxVQUFzQixFQUFFLFlBQVksRUFBRSxXQUF3QixFQUFFLFlBQVksRUFBRSxPQUFnQjs7Ozs7O3lCQUV4SixDQUFBLFVBQVUsSUFBSSxVQUFVLENBQUMsc0JBQXNCLENBQUEsRUFBL0Msd0JBQStDO29CQUMzQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUNqQixZQUFZLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDL0IsR0FBRyxHQUFHLFNBQVMsQ0FBQztvQkFDcEIsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTt3QkFDaEMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUN4QztvQkFDRyxPQUFPLEdBQUc7d0JBQ1YsU0FBUyxFQUFFLFNBQVM7d0JBQ3BCLE1BQU0sRUFBRSxxQkFBcUI7d0JBQzdCLFFBQVEsRUFBRSw4QkFBOEI7d0JBQ3hDLElBQUksRUFBRTs0QkFDRixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7NEJBQ3JCLE9BQU8sRUFBRSxTQUFTO3lCQUNyQjtxQkFDSixDQUFDOzs7O29CQUdFLHFCQUFNLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLEVBQUE7O29CQUEvSCxTQUErSCxDQUFDOzs7O29CQUVoSSxJQUFJLE9BQUssQ0FBQyxPQUFPLEVBQUU7d0JBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBSyxDQUFDLE9BQU8sQ0FBQzt3QkFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQy9CO3lCQUFNO3dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBSyxDQUFDLENBQUM7cUJBQ2hEO29CQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLG9EQUFvRCxDQUFDLENBQUM7Ozs7OztDQUd2RjtBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFlLGVBQWUsQ0FBQyxPQUEyQixFQUFFLEdBQUc7Ozs7OztvQkFDcEQsT0FBTyxHQUE0RixPQUFPLFFBQW5HLEVBQUUsVUFBVSxHQUFnRixPQUFPLFdBQXZGLEVBQUUsV0FBVyxHQUFtRSxPQUFPLFlBQTFFLEVBQUUsT0FBTyxHQUEwRCxPQUFPLFFBQWpFLEVBQUUsY0FBYyxHQUEwQyxPQUFPLGVBQWpELEVBQUUsWUFBWSxHQUE0QixPQUFPLGFBQW5DLEVBQUUsc0JBQXNCLEdBQUksT0FBTyx1QkFBWCxDQUFZO29CQUU5RyxTQUFTLEdBQUcsRUFBRSxDQUFDO29CQUVmLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztvQkFFM0IsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO29CQUVoQyxJQUFJLEdBQUcsS0FBSyxZQUFZLEVBQUU7d0JBQ3RCLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQzt3QkFDckgscUJBQXFCLEdBQUc7NEJBQ3BCLElBQUksRUFBRSxVQUFVOzRCQUNoQixJQUFJLEVBQUUsS0FBSzs0QkFDWCxPQUFPLEVBQUUsRUFBRTt5QkFDZCxDQUFDO3FCQUNMO3lCQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsRUFBRTt3QkFDekMsdUVBQXVFO3dCQUV2RSw2RUFBNkU7d0JBQzdFLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRTs0QkFDM0IsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDOzRCQUN6SCxtQkFBbUIsR0FBRyxJQUFJLENBQUM7NEJBQzNCLDhEQUE4RDs0QkFDOUQscUJBQXFCLEdBQUc7Z0NBQ3BCLElBQUksRUFBRSxPQUFPOzZCQUNoQixDQUFDO3lCQUNMOzZCQUFNOzRCQUNILGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUseUJBQXlCLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQzs0QkFDMUgscUJBQXFCLEdBQUc7Z0NBQ3BCLElBQUksRUFBRSxPQUFPO2dDQUNiLElBQUksRUFBRSxLQUFLOzZCQUNkLENBQUM7eUJBQ0w7cUJBQ0o7eUJBQU07d0JBQ0gsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLEtBQUssQ0FBQyxFQUFFOzRCQUN6QixnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO3lCQUM3SDs2QkFBTTs0QkFDSCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7Z0NBQ1gsU0FBUyxHQUFHLGVBQWUsR0FBRyxVQUFVLENBQUMsSUFBSSxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzs2QkFDM0Y7aUNBQU07Z0NBQ0gsU0FBUyxHQUFHLGVBQWUsR0FBRyxVQUFVLENBQUMsSUFBSSxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDOzZCQUN2RTs0QkFFRCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7eUJBQ3BIO3dCQUVELHFCQUFxQixHQUFHOzRCQUNwQixJQUFJLEVBQUUsT0FBTzs0QkFDYixJQUFJLEVBQUUsSUFBSTs0QkFDVixLQUFLLEVBQUUsb0JBQVEsQ0FBQyxHQUFHLENBQUM7NEJBQ3BCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTt5QkFDeEIsQ0FBQztxQkFDTDtvQkFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLEVBQUMsWUFBWSxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUM7b0JBRW5FLHFCQUFNLG1CQUFtQixDQUNyQixPQUFPLENBQUMsTUFBTSxFQUNkLE9BQU8sQ0FBQyxVQUFVO3dCQUNsQixhQUFhO3dCQUNiLHFCQUFxQixDQUFDLElBQUksRUFDMUIsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsT0FBTyxDQUFDLFlBQVksRUFDcEIsT0FBTyxDQUNWLEVBQUE7O29CQVZELFNBVUMsQ0FBQzt5QkFFRSxtQkFBbUIsRUFBbkIsd0JBQW1CO29CQUNuQixxQkFBTSxpQkFBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUE7O29CQUF2QyxTQUF1QyxDQUFDO29CQUN4QyxzQkFBTyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUM7d0JBRTFCLHNCQUFPLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDLEVBQUM7Ozs7Q0FFdEU7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLGNBQWMsQ0FBQyxPQUFnQixFQUFFLE9BQWdCLEVBQUUsT0FBTztJQUMvRCxPQUFPLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztJQUMzQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFdkQsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtRQUM5RixPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0tBQ2hEO0lBRUQsNEZBQTRGO0lBQzVGLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRTtRQUN6RCxPQUFPLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ2pFO0lBRUQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQzVCLENBQUM7QUFHRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQXNCLEVBQUUsV0FBd0I7SUFDNUgsSUFBSSxPQUFPLEdBQUc7UUFDVixTQUFTLEVBQUUsU0FBUztRQUNwQixNQUFNLEVBQUUscUJBQXFCO1FBQzdCLElBQUksRUFBRTtZQUNGLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtZQUNyQixRQUFRLEVBQUUsbUJBQU8sQ0FBQyxXQUFXLENBQUM7WUFDOUIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO1lBQzdCLE9BQU8sRUFBRSxTQUFTO1NBQ3JCO1FBQ0QsUUFBUSxFQUFFLFNBQVM7S0FDdEIsQ0FBQztJQUVGLE9BQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBRTVCLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztLQUNsQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQXBCRCw0Q0FvQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RlbGF5LCBnZXRFcnJvciwgbG9nVGltZX0gZnJvbSAnLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHtDYWxsQ29udGV4dCwgUHJvY2Vzc0NhbGxQYXlsb2FkLCBSZW1vdGVDYWxsLCBTZW1vdHVzLCBTZXNzaW9ufSBmcm9tICcuL1R5cGVzJztcblxuLyoqXG4gKiBXZSBwcm9jZXNzIHRoZSBjYWxsIHRoZSByZW1vdGUgbWV0aG9kIGluIHN0YWdlcyBzdGFydGluZyBieSBsZXR0aW5nIHRoZSBjb250cm9sbGVyIGV4YW1pbmUgdGhlXG4gKiBjaGFuZ2VzIChwcmVDYWxsSG9vaykgYW5kIGdpdmluZyBpdCBhIGNoYW5jZSB0byByZWZyZXNoIGRhdGEgaWYgaXQgbmVlZHMgdG8uICBUaGVuIHdlIGFwcGx5IGFueVxuICogY2hhbmdlcyBpbiB0aGUgbWVzc2FnZXMgYW5kIGdpdmUgdGhlIG9iamVjdCBvd25pbmcgdGhlIG1ldGhvZCBhIGNoYW5jZSB0byB2YWxpZGF0ZSB0aGF0IHRoZVxuICogY2FsbCBpcyB2YWxpZCBhbmQgdGFrZSBjYXJlIG9mIGFueSBhdXRob3JpemF0aW9uIGNvbmNlcm5zLiAgRmluYWxseSB3ZSBsZXQgdGhlIGNvbnRyb2xsZXIgcGVyZm9ybVxuICogYW55IHBvc3QtY2FsbCBwcm9jZXNzaW5nIHN1Y2ggYXMgY29tbWl0aW5nIGRhdGEgYW5kIHRoZW4gd2UgZGVhbCB3aXRoIGEgZmFpbHVyZSBvciBzdWNjZXNzLlxuICpcbiAqIEBwYXJhbSBwYXlsb2FkXG4gKiBAcGFyYW0ge3Vua25vd259IGZvcmNldXBkYXRlIHVua25vd25cbiAqXG4gKiBAcmV0dXJucyB7dW5rbm93bn0gdW5rbm93blxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0NhbGwocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCBmb3JjZXVwZGF0ZT86IGJvb2xlYW4pIHtcblxuICAgIHRyeSB7XG4gICAgICAgIGZvcmNldXBkYXRlID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGZvcmNldXBkYXRlKTtcbiAgICAgICAgYXdhaXQgcHJlQ2FsbEhvb2socGF5bG9hZCwgZm9yY2V1cGRhdGUpO1xuICAgICAgICBsZXQgdmFsaWRhdGlvbiA9IGF3YWl0IGFwcGx5Q2hhbmdlc0FuZFZhbGlkYXRlQ2FsbChwYXlsb2FkKTtcbiAgICAgICAgdmFsaWRhdGlvbiA9IGF3YWl0IGN1c3RvbVZhbGlkYXRpb24ocGF5bG9hZCwgdmFsaWRhdGlvbik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhbGxJZlZhbGlkKHBheWxvYWQsIHZhbGlkYXRpb24pO1xuICAgICAgICBhd2FpdCBwb3N0Q2FsbEhvb2socGF5bG9hZCwgcmVzdWx0KTtcbiAgICAgICAgYXdhaXQgcG9zdENhbGxTdWNjZXNzKHBheWxvYWQsIHJlc3VsdCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGF3YWl0IHBvc3RDYWxsRmFpbHVyZShwYXlsb2FkLCBlcnIpO1xuICAgIH1cbn1cblxuXG4vKipcbiAqIElmIHRoZXJlIGlzIGFuIHVwZGF0ZSBjb25mbGljdCB3ZSB3YW50IHRvIHJldHJ5IGFmdGVyIHJlc3RvcmluZyB0aGUgc2Vzc2lvblxuICpcbiAqIEByZXR1cm5zIHsqfSB1bmtub3duXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJldHJ5Q2FsbChwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQpIHtcbiAgICBjb25zdCB7c2Vtb3R1cywgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQsIHNlc3Npb24sIHN1YnNjcmlwdGlvbklkLCByZW1vdGVDYWxsSWQsIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2t9ID0gcGF5bG9hZDtcblxuICAgIGlmIChyZXN0b3JlU2Vzc2lvbkNhbGxiYWNrKSB7XG4gICAgICAgIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvY2Vzc0NhbGwocGF5bG9hZCwgdHJ1ZSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoYXQgb2JqZWN0cyBjaGFuZ2VkIGFuZCBwYXNzIHRoaXMgdG8gdGhlIHByZVNlcnZlckNhbGwgbWV0aG9kIG9uIHRoZSBjb250cm9sbGVyXG4gKlxuICogQHBhcmFtIHBheWxvYWRcbiAqIEBwYXJhbSAgZm9yY2V1cGRhdGUgdW5rbm93blxuICpcbiAqIEByZXR1cm5zICB1bmtub3duXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHByZUNhbGxIb29rKHBheWxvYWQ6IFByb2Nlc3NDYWxsUGF5bG9hZCwgZm9yY2V1cGRhdGU/OiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB7c2Vtb3R1cywgcmVtb3RlQ2FsbCwgc2Vzc2lvbiwgY2FsbENvbnRleHQsIEhUVFBPYmpzfSA9IHBheWxvYWQ7XG4gICAgc2Vtb3R1cy5sb2dnZXIuaW5mbyhcbiAgICAgICAge1xuICAgICAgICAgICAgY29tcG9uZW50OiAnc2Vtb3R1cycsXG4gICAgICAgICAgICBtb2R1bGU6ICdwcm9jZXNzQ2FsbCcsXG4gICAgICAgICAgICBhY3Rpdml0eTogJ3ByZVNlcnZlckNhbGwnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZW1vdGVDYWxsLm5hbWVcbiAgICApO1xuXG4gICAgaWYgKHNlbW90dXMuY29udHJvbGxlciAmJiBzZW1vdHVzLmNvbnRyb2xsZXIucHJlU2VydmVyQ2FsbCkge1xuICAgICAgICBsZXQgY2hhbmdlcyA9IHt9O1xuXG4gICAgICAgIGZvciAodmFyIG9iaklkIGluIEpTT04ucGFyc2UocmVtb3RlQ2FsbC5jaGFuZ2VzKSkge1xuICAgICAgICAgICAgY2hhbmdlc1tzZW1vdHVzLl9fZGljdGlvbmFyeV9fW29iaklkLnJlcGxhY2UoL1teLV0qLS8sICcnKS5yZXBsYWNlKC8tLiovLCAnJyldLl9fbmFtZV9fXSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVtb3RlT2JqZWN0ID0gc2Vzc2lvbi5vYmplY3RzW3JlbW90ZUNhbGwuaWRdO1xuXG4gICAgICAgIC8vIE5lZWQgdG8gZG91YmxlIGNoZWNrIGlmIG5vdCBpbiBzZXNzaW9uLCB3aGF0IHRoZSB0ZW1wbGF0ZSBpcy5cbiAgICAgICAgbGV0IHJlbW90ZVRlbXBsYXRlID0gc2Vtb3R1cy5fX2RpY3Rpb25hcnlfX1tyZW1vdGVDYWxsLmlkLnJlcGxhY2UoL1teLV0qLS8sICcnKS5yZXBsYWNlKC8tLiovLCAnJyldO1xuICAgICAgICBsZXQgaXNQdWJsaWMgPSBmYWxzZTtcblxuICAgICAgICBpZiAocmVtb3RlT2JqZWN0KSB7XG4gICAgICAgICAgICBpc1B1YmxpYyA9IHNlbW90dXMucm9sZSA9PT0gJ3NlcnZlcicgJiYgcmVtb3RlT2JqZWN0W3JlbW90ZUNhbGwubmFtZV0gJiYgcmVtb3RlT2JqZWN0W3JlbW90ZUNhbGwubmFtZV0ucmVtb3RlUHVibGljO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJlbW90ZVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgY2xhc3MgZG9lc24ndCBleGlzdCwgd2Ugc2hvdWxkIGdldCB0aGUgcmVtb3RlIGZ1bmN0aW9uIGZyb20gdGhlIHByb3RvdHlwZVxuICAgICAgICAgICAgaXNQdWJsaWMgPSBzZW1vdHVzLnJvbGUgPT09ICdzZXJ2ZXInICYmIHJlbW90ZVRlbXBsYXRlLnByb3RvdHlwZVtyZW1vdGVDYWxsLm5hbWVdICYmIHJlbW90ZVRlbXBsYXRlLnByb3RvdHlwZVtyZW1vdGVDYWxsLm5hbWVdLnJlbW90ZVB1YmxpYztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNlbW90dXMubG9nZ2VyLmVycm9yKHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICdzZW1vdHVzJyxcbiAgICAgICAgICAgICAgICBtb2R1bGU6ICdwcm9jZXNzQ2FsbCcsXG4gICAgICAgICAgICAgICAgYWN0aXZpdHk6ICdwcmVTZXJ2ZXJDYWxsJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2U6IHJlbW90ZUNhbGwuc2VxdWVuY2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBcdCdDb3VsZCBub3QgZmluZCB0ZW1wbGF0ZSBmb3IgJyArIG9iaklkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZW1vdHVzLmNvbnRyb2xsZXIucHJlU2VydmVyQ2FsbC5jYWxsKFxuICAgICAgICAgICAgc2Vtb3R1cy5jb250cm9sbGVyLFxuICAgICAgICAgICAgcmVtb3RlQ2FsbC5jaGFuZ2VzLmxlbmd0aCA+IDIsXG4gICAgICAgICAgICBjaGFuZ2VzLFxuICAgICAgICAgICAgY2FsbENvbnRleHQsXG4gICAgICAgICAgICBmb3JjZXVwZGF0ZSxcbiAgICAgICAgICAgIHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgIHJlbW90ZUNhbGwsXG4gICAgICAgICAgICBpc1B1YmxpYyxcbiAgICAgICAgICAgIEhUVFBPYmpzXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuXG4vKipcbiAqIEFwcGx5IGNoYW5nZXMgaW4gdGhlIG1lc3NhZ2UgYW5kIHRoZW4gdmFsaWRhdGUgdGhlIGNhbGwuICBUaHJvdyBcIlN5bmMgRXJyb3JcIiBpZiBjaGFuZ2VzIGNhbid0IGJlIGFwcGxpZWRcbiAqXG4gKiBAcmV0dXJucyB7dW5rbm93bn0gdW5rbm93blxuICovXG5mdW5jdGlvbiBhcHBseUNoYW5nZXNBbmRWYWxpZGF0ZUNhbGwocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkKTogYm9vbGVhbiB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0LCBzZXNzaW9uLCBzdWJzY3JpcHRpb25JZCwgcmVtb3RlQ2FsbElkLCByZXN0b3JlU2Vzc2lvbkNhbGxiYWNrfSA9IHBheWxvYWQ7XG5cbiAgICBzZW1vdHVzLmxvZ2dlci5pbmZvKFxuICAgICAgICB7XG4gICAgICAgICAgICBjb21wb25lbnQ6ICdzZW1vdHVzJyxcbiAgICAgICAgICAgIG1vZHVsZTogJ3Byb2Nlc3NDYWxsJyxcbiAgICAgICAgICAgIGFjdGl2aXR5OiAnYXBwbHlDaGFuZ2VzQW5kVmFsaWRhdGVDYWxsJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBjYWxsOiByZW1vdGVDYWxsLm5hbWUsXG4gICAgICAgICAgICAgICAgc2VxdWVuY2U6IHJlbW90ZUNhbGwuc2VxdWVuY2UsXG4gICAgICAgICAgICAgICAgcmVtb3RlQ2FsbElkOiByZW1vdGVDYWxsLmlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW90ZUNhbGwubmFtZVxuICAgICk7XG5cbiAgICBsZXQgY2hhbmdlcyA9IEpTT04ucGFyc2UocmVtb3RlQ2FsbC5jaGFuZ2VzKTtcblxuICAgIGNvbnN0IHJlcyA9IHNlbW90dXMuX2FwcGx5Q2hhbmdlcyhjaGFuZ2VzLCBzZW1vdHVzLnJvbGUgPT09ICdjbGllbnQnLCBzdWJzY3JpcHRpb25JZCwgY2FsbENvbnRleHQpO1xuICAgIGlmIChyZXMpIHtcbiAgICAgICAgY29uc3Qgb2JqID0gc2Vzc2lvbi5vYmplY3RzW3JlbW90ZUNhbGwuaWRdO1xuXG4gICAgICAgIGlmICghb2JqKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIG9iamVjdCBmb3IgcmVtb3RlIGNhbGwgJHtyZW1vdGVDYWxsLmlkfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIHRoaXMgZnVuY3Rpb24gaXMgc3VwcG9zZWQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gY2xpZW50XG4gICAgICAgIGlmIChvYmouX19wcm90b19fW3JlbW90ZUNhbGwubmFtZV0uX19vbl9fICE9PSAnc2VydmVyJykge1xuICAgICAgICAgICAgdGhyb3cgJ0ludmFsaWQgRnVuY3Rpb24gQ2FsbDsgbm90IGFuIEFQSSBmdW5jdGlvbic7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2Vtb3R1cy5yb2xlID09PSAnc2VydmVyJyAmJiBvYmoudmFsaWRhdGVTZXJ2ZXJDYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLnZhbGlkYXRlU2VydmVyQ2FsbC5jYWxsKG9iaiwgcmVtb3RlQ2FsbC5uYW1lLCBjYWxsQ29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAnU3luYyBFcnJvcic7XG4gICAgfVxufVxuXG4vKipcbiAqIEFwcGx5IGZ1bmN0aW9uIHNwZWNpZmljIGN1c3RvbSBzZXJ2ZXJTaWRlIHZhbGlkYXRpb24gZnVuY3Rpb25zXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNWYWxpZCAtIFJlc3VsdCBvZiBwcmV2aW91cyB2YWxpZGF0aW9uIHN0ZXAgKGFwcGx5Q2hhbmdlc0FuZFZhbGlkYXRlQ2FsbClcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgcGFzc2VkIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIGN1c3RvbVZhbGlkYXRpb24ocGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCBpc1ZhbGlkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0LCBzZXNzaW9uLCBzdWJzY3JpcHRpb25JZCwgcmVtb3RlQ2FsbElkLCByZXN0b3JlU2Vzc2lvbkNhbGxiYWNrfSA9IHBheWxvYWQ7XG5cbiAgICBsZXQgbG9nZ2VyT2JqZWN0ID0ge1xuICAgICAgICBjb21wb25lbnQ6ICdzZW1vdHVzJyxcbiAgICAgICAgbW9kdWxlOiAncHJvY2Vzc0NhbGwnLFxuICAgICAgICBhY3Rpdml0eTogJ2N1c3RvbVZhbGlkYXRpb24nLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjYWxsOiByZW1vdGVDYWxsLm5hbWUsXG4gICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZSxcbiAgICAgICAgICAgIHJlbW90ZUNhbGxJZDogcmVtb3RlQ2FsbC5pZFxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGxldCByZW1vdGVPYmplY3QgPSBzZXNzaW9uLm9iamVjdHNbcmVtb3RlQ2FsbC5pZF07XG5cbiAgICBzZW1vdHVzLmxvZ2dlci5pbmZvKGxvZ2dlck9iamVjdCwgcmVtb3RlQ2FsbC5uYW1lKTtcblxuICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChzZW1vdHVzLnJvbGUgPT09ICdzZXJ2ZXInICYmIHJlbW90ZU9iamVjdFtyZW1vdGVDYWxsLm5hbWVdLnNlcnZlclZhbGlkYXRpb24pIHtcbiAgICAgICAgbGV0IGFyZ3MgPSBzZW1vdHVzLl9leHRyYWN0QXJndW1lbnRzKHJlbW90ZUNhbGwpO1xuICAgICAgICBhcmdzLnVuc2hpZnQocmVtb3RlT2JqZWN0KTtcblxuICAgICAgICByZXR1cm4gcmVtb3RlT2JqZWN0W3JlbW90ZUNhbGwubmFtZV0uc2VydmVyVmFsaWRhdGlvbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbi8qKlxuICogSWYgdGhlIGNoYW5nZXMgY291bGQgYmUgYXBwbGllZCBhbmQgdGhlIHZhbGlkYXRpb24gd2FzIHN1Y2Nlc3NmdWwgY2FsbCB0aGUgbWV0aG9kXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNWYWxpZCAtIHRha2VzIGEgZmxhZyBpZiB0aGUgY2FsbCBpcyB2YWxpZCBvciBub3QsIGlmIGl0IGlzIHRoZW4gd2UgcHJvY2VlZCBub3JtYWxseSxcbiAqIG90aGVyd2lzZSwgd2UgdGhyb3cgYW4gZXJyb3IgYW5kIHN0b3AgZXhlY3V0aW9uXG4gKlxuICogQHBhcmFtIHNlc3Npb25cbiAqIEBwYXJhbSByZW1vdGVDYWxsXG4gKiBAcmV0dXJucyB7dW5rbm93bn0gdW5rbm93blxuICovXG5hc3luYyBmdW5jdGlvbiBjYWxsSWZWYWxpZChwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQsIGlzVmFsaWQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB7c2Vtb3R1cywgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQsIHNlc3Npb24sIHN1YnNjcmlwdGlvbklkLCByZW1vdGVDYWxsSWQsIHJlc3RvcmVTZXNzaW9uQ2FsbGJhY2t9ID0gcGF5bG9hZDtcblxuICAgIGxldCBsb2dnZXJPYmplY3QgPSB7XG4gICAgICAgIGNvbXBvbmVudDogJ3NlbW90dXMnLFxuICAgICAgICBtb2R1bGU6ICdwcm9jZXNzQ2FsbCcsXG4gICAgICAgIGFjdGl2aXR5OiAnY2FsbElmVmFsaWQnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjYWxsOiByZW1vdGVDYWxsLm5hbWUsXG4gICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZSxcbiAgICAgICAgICAgIHJlbW90ZUNhbGxJZDogcmVtb3RlQ2FsbC5pZFxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHNlbW90dXMubG9nZ2VyLmluZm8obG9nZ2VyT2JqZWN0LCByZW1vdGVDYWxsLm5hbWUpO1xuXG4gICAgbGV0IG9iaiA9IHNlc3Npb24ub2JqZWN0c1tyZW1vdGVDYWxsLmlkXTtcblxuICAgIGlmICghb2JqW3JlbW90ZUNhbGwubmFtZV0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlbW90ZUNhbGwubmFtZSArICcgZnVuY3Rpb24gZG9lcyBub3QgZXhpc3QuJyk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1ZhbGlkICYmIHJlbW90ZUNhbGwgJiYgcmVtb3RlQ2FsbC5uYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZW1vdGVDYWxsLm5hbWUgKyAnIHJlZnVzZWQnKTtcbiAgICB9XG5cbiAgICBsZXQgYXJncyA9IHNlbW90dXMuX2V4dHJhY3RBcmd1bWVudHMocmVtb3RlQ2FsbCk7XG5cbiAgICByZXR1cm4gb2JqW3JlbW90ZUNhbGwubmFtZV0uYXBwbHkob2JqLCBhcmdzKTtcbn1cblxuLyoqXG4gKiBMZXQgdGhlIGNvbnRyb2xsZXIga25vdyB0aGF0IHRoZSBtZXRob2Qgd2FzIGNvbXBsZXRlZCBhbmQgZ2l2ZSBpdCBhIGNoYW5jZSB0byBjb21taXQgY2hhbmdlc1xuICpcbiAqIEBwYXJhbSBwYXlsb2FkXG4gKiBAcGFyYW0gIHJldHVyblZhbHVlIHVua25vd25cbiAqXG4gKiBAcmV0dXJuc1xuICovXG5hc3luYyBmdW5jdGlvbiBwb3N0Q2FsbEhvb2socGF5bG9hZDogUHJvY2Vzc0NhbGxQYXlsb2FkLCByZXR1cm5WYWx1ZSkge1xuICAgIGNvbnN0IHtzZW1vdHVzLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCwgSFRUUE9ianN9ID0gcGF5bG9hZDtcblxuICAgIGlmIChzZW1vdHVzLmNvbnRyb2xsZXIgJiYgc2Vtb3R1cy5jb250cm9sbGVyLnBvc3RTZXJ2ZXJDYWxsKSB7XG4gICAgICAgIGNvbnN0IGhhc0NoYW5nZXM6IGJvb2xlYW4gPSByZW1vdGVDYWxsLmNoYW5nZXMubGVuZ3RoID4gMjtcbiAgICAgICAgYXdhaXQgc2Vtb3R1cy5jb250cm9sbGVyLnBvc3RTZXJ2ZXJDYWxsLmNhbGwoc2Vtb3R1cy5jb250cm9sbGVyLCBoYXNDaGFuZ2VzLCBjYWxsQ29udGV4dCwgc2Vtb3R1cy5jaGFuZ2VTdHJpbmcsIEhUVFBPYmpzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xufVxuXG4vKipcbiAqIFBhY2thZ2UgdXAgYW55IGNoYW5nZXMgcmVzdWx0aW5nIGZyb20gdGhlIGV4ZWN1dGlvbiBhbmQgc2VuZCB0aGVtIGJhY2sgaW4gdGhlIG1lc3NhZ2UsIGNsZWFyaW5nXG4gKiBvdXIgY2hhbmdlIHF1ZXVlIHRvIGFjY3VtdWxhdGUgbW9yZSBjaGFuZ2VzIGZvciB0aGUgbmV4dCBjYWxsXG4gKlxuICogQHBhcmFtIHNlbW90dXNcbiAqIEBwYXJhbSByZW1vdGVDYWxsXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbElkXG4gKiBAcGFyYW0ge3Vua25vd259IHJldCB1bmtub3duXG4gKi9cbmZ1bmN0aW9uIHBvc3RDYWxsU3VjY2VzcyhwYXlsb2FkOiBQcm9jZXNzQ2FsbFBheWxvYWQsIHJldCk6IHZvaWQge1xuICAgIGNvbnN0IHtzZW1vdHVzLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCwgc2Vzc2lvbiwgcmVtb3RlQ2FsbElkfSA9IHBheWxvYWQ7XG5cbiAgICBzZW1vdHVzLmxvZ2dlci5pbmZvKFxuICAgICAgICB7XG4gICAgICAgICAgICBjb21wb25lbnQ6ICdzZW1vdHVzJyxcbiAgICAgICAgICAgIG1vZHVsZTogJ3Byb2Nlc3NDYWxsJyxcbiAgICAgICAgICAgIGFjdGl2aXR5OiAncG9zdENhbGwuc3VjY2VzcycsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgY2FsbDogcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICAgICAgICAgIGNhbGxUaW1lOiBsb2dUaW1lKGNhbGxDb250ZXh0KSxcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogcmVtb3RlQ2FsbC5zZXF1ZW5jZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZW1vdGVDYWxsLm5hbWVcbiAgICApO1xuXG4gICAgcGFja2FnZUNoYW5nZXMoc2Vtb3R1cywgc2Vzc2lvbix7XG4gICAgICAgIHR5cGU6ICdyZXNwb25zZScsXG4gICAgICAgIHN5bmM6IHRydWUsXG4gICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeShzZW1vdHVzLl90b1RyYW5zcG9ydChyZXQpKSxcbiAgICAgICAgbmFtZTogcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICByZW1vdGVDYWxsSWQ6IHJlbW90ZUNhbGxJZFxuICAgIH0pO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBpZGVudGlmeSBpZiB0aGVyZSdzIGEgcG9zdFNlcnZlckVycm9ySGFuZGxlciBjYWxsYmFjayBvbiB0aGUgYmFzZSBjb250cm9sbGVyXG4gKiBJZiB0aGVyZSBpcywgd2UgZXhlY3V0ZSB0aGUgaGFuZGxlciwgYW5kIGlmIHdlIGNhdGNoIGFuIGVycm9yIGluIHRoZSBoYW5kbGVyLCB3ZSBwcm9wb2dhdGUgaXQgdXAgdG8gdGhlIGxvZ2dlci5cbiAqIEBwYXJhbSBsb2dnZXJcbiAqIEBwYXJhbSB7Kn0gY29udHJvbGxlclxuICogQHBhcmFtIHR5cGVcbiAqIEBwYXJhbSByZW1vdGVDYWxsXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbElkXG4gKiBAcGFyYW0gY2FsbENvbnRleHRcbiAqIEBwYXJhbSBjaGFuZ2VTdHJpbmdcbiAqIEBwYXJhbSBzZXNzaW9uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVFcnJvckhhbmRsZXIobG9nZ2VyLCBjb250cm9sbGVyOiBhbnksIHR5cGUsIHJlbW90ZUNhbGw6IFJlbW90ZUNhbGwsIHJlbW90ZUNhbGxJZCwgY2FsbENvbnRleHQ6IENhbGxDb250ZXh0LCBjaGFuZ2VTdHJpbmcsIHNlc3Npb246IFNlc3Npb24pIHtcblxuICAgIGlmIChjb250cm9sbGVyICYmIGNvbnRyb2xsZXIucG9zdFNlcnZlckVycm9ySGFuZGxlcikge1xuICAgICAgICBsZXQgZXJyb3JUeXBlID0gdHlwZTtcbiAgICAgICAgbGV0IGZ1bmN0aW9uTmFtZSA9IHJlbW90ZUNhbGwubmFtZTtcbiAgICAgICAgbGV0IG9iaiA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHNlc3Npb24ub2JqZWN0c1tyZW1vdGVDYWxsLmlkXSkge1xuICAgICAgICAgICAgb2JqID0gc2Vzc2lvbi5vYmplY3RzW3JlbW90ZUNhbGwuaWRdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsb2dCb2R5ID0ge1xuICAgICAgICAgICAgY29tcG9uZW50OiAnc2Vtb3R1cycsXG4gICAgICAgICAgICBtb2R1bGU6ICdwcm9jZXNzQ2FsbC5mYWlsdXJlJyxcbiAgICAgICAgICAgIGFjdGl2aXR5OiAncG9zdENhbGwucmVzb2x2ZUVycm9ySGFuZGxlcicsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgY2FsbDogcmVtb3RlQ2FsbC5uYW1lLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBjb250cm9sbGVyLnBvc3RTZXJ2ZXJFcnJvckhhbmRsZXIuY2FsbChjb250cm9sbGVyLCBlcnJvclR5cGUsIHJlbW90ZUNhbGxJZCwgb2JqLCBmdW5jdGlvbk5hbWUsIGNhbGxDb250ZXh0LCBjaGFuZ2VTdHJpbmcpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBsb2dCb2R5LmRhdGEubWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsb2dCb2R5LmRhdGEubWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGxvZ0JvZHksICdVc2VyIGRlZmluZWQgcG9zdFNlcnZlckVycm9ySGFuZGxlciB0aHJldyBhbiBlcnJvcicpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEhhbmRsZSBlcnJvcnMgYnkgcmV0dXJuaW5nIGFuIGFwcm9wcmlhdGUgbWVzc2FnZS4gIEluIGFsbCBjYXNlcyBjaGFuZ2VzIHNlbnQgYmFjayB0aG91Z2ggdGhleVxuICpcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKiBAcGFyYW0gcmVtb3RlQ2FsbFxuICogQHBhcmFtIGNhbGxDb250ZXh0XG4gKiBAcGFyYW0gc2Vzc2lvblxuICogQHBhcmFtIHt1bmtub3dufSBlcnIgdW5rbm93blxuICpcbiAqIEByZXR1cm5zIHt1bmtub3dufSBBIFByb21pc2VcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcG9zdENhbGxGYWlsdXJlKHBheWxvYWQ6IFByb2Nlc3NDYWxsUGF5bG9hZCwgZXJyKSB7XG4gICAgY29uc3Qge3NlbW90dXMsIHJlbW90ZUNhbGwsIGNhbGxDb250ZXh0LCBzZXNzaW9uLCBzdWJzY3JpcHRpb25JZCwgcmVtb3RlQ2FsbElkLCByZXN0b3JlU2Vzc2lvbkNhbGxiYWNrfSA9IHBheWxvYWQ7XG5cbiAgICBsZXQgbG9nU3RyaW5nID0gJyc7XG5cbiAgICBsZXQgcGFja2FnZUNoYW5nZXNQYXlsb2FkID0ge307XG5cbiAgICBsZXQgdXBkYXRlQ29uZmxpY3RSZXRyeSA9IGZhbHNlO1xuXG4gICAgaWYgKGVyciA9PT0gJ1N5bmMgRXJyb3InKSB7XG4gICAgICAgIHBvc3RDYWxsRXJyb3JMb2coc2Vtb3R1cy5sb2dnZXIsICdwb3N0Q2FsbC5zeW5jRXJyb3InLCB1bmRlZmluZWQsICdlcnJvcicsIHJlbW90ZUNhbGwubmFtZSwgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQpO1xuICAgICAgICBwYWNrYWdlQ2hhbmdlc1BheWxvYWQgPSB7XG4gICAgICAgICAgICB0eXBlOiAncmVzcG9uc2UnLFxuICAgICAgICAgICAgc3luYzogZmFsc2UsXG4gICAgICAgICAgICBjaGFuZ2VzOiAnJ1xuICAgICAgICB9O1xuICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgPT0gJ1VwZGF0ZSBDb25mbGljdCcpIHtcbiAgICAgICAgLy8gTm90IHRoaXMgbWF5IGJlIGNhdWdodCBpbiB0aGUgdHJhbnNwb3J0IChlLmcuIEFtb3JwaGljKSBhbmQgcmV0cmllZClcblxuICAgICAgICAvLyBpbmNyZW1lbnQgY2FsbENvbnRleHQucmV0cmllcyBhZnRlciBjaGVja2luZyBpZiA8IDMuIFNob3VsZCByZXRyeSAzIHRpbWVzLlxuICAgICAgICBpZiAoY2FsbENvbnRleHQucmV0cmllcysrIDwgMykge1xuICAgICAgICAgICAgcG9zdENhbGxFcnJvckxvZyhzZW1vdHVzLmxvZ2dlciwgJ3Bvc3RDYWxsLnVwZGF0ZUNvbmZsaWN0JywgdW5kZWZpbmVkLCAnd2FybicsIHJlbW90ZUNhbGwubmFtZSwgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQpO1xuICAgICAgICAgICAgdXBkYXRlQ29uZmxpY3RSZXRyeSA9IHRydWU7XG4gICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFzc2lnbm1lbnQgaXMgb25seSB1c2VkIGZvciB0aGUgZXJyb3IgaGFuZGxlclxuICAgICAgICAgICAgcGFja2FnZUNoYW5nZXNQYXlsb2FkID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdyZXRyeSdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb3N0Q2FsbEVycm9yTG9nKHNlbW90dXMubG9nZ2VyLCAncG9zdENhbGwudXBkYXRlQ29uZmxpY3QnLCB1bmRlZmluZWQsICdlcnJvcicsIHJlbW90ZUNhbGwubmFtZSwgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQpO1xuICAgICAgICAgICAgcGFja2FnZUNoYW5nZXNQYXlsb2FkID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdyZXRyeScsXG4gICAgICAgICAgICAgICAgc3luYzogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBFcnJvcikpIHtcbiAgICAgICAgICAgIHBvc3RDYWxsRXJyb3JMb2coc2Vtb3R1cy5sb2dnZXIsICdwb3N0Q2FsbC5lcnJvcicsIEpTT04uc3RyaW5naWZ5KGVyciksICdpbmZvJywgcmVtb3RlQ2FsbC5uYW1lLCByZW1vdGVDYWxsLCBjYWxsQ29udGV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZXJyLnN0YWNrKSB7XG4gICAgICAgICAgICAgICAgbG9nU3RyaW5nID0gJ0V4Y2VwdGlvbiBpbiAnICsgcmVtb3RlQ2FsbC5uYW1lICsgJyAtICcgKyBlcnIubWVzc2FnZSArICgnICcgKyBlcnIuc3RhY2spO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsb2dTdHJpbmcgPSAnRXhjZXB0aW9uIGluICcgKyByZW1vdGVDYWxsLm5hbWUgKyAnIC0gJyArIGVyci5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwb3N0Q2FsbEVycm9yTG9nKHNlbW90dXMubG9nZ2VyLCAncG9zdENhbGwuZXhjZXB0aW9uJywgZXJyLm1lc3NhZ2UsICdlcnJvcicsIGxvZ1N0cmluZywgcmVtb3RlQ2FsbCwgY2FsbENvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFja2FnZUNoYW5nZXNQYXlsb2FkID0ge1xuICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHN5bmM6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogZ2V0RXJyb3IoZXJyKSxcbiAgICAgICAgICAgIG5hbWU6IHJlbW90ZUNhbGwubmFtZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIE9iamVjdC5hc3NpZ24ocGFja2FnZUNoYW5nZXNQYXlsb2FkLCB7cmVtb3RlQ2FsbElkOiByZW1vdGVDYWxsSWR9KTtcblxuICAgIGF3YWl0IHJlc29sdmVFcnJvckhhbmRsZXIoXG4gICAgICAgIHNlbW90dXMubG9nZ2VyLFxuICAgICAgICBzZW1vdHVzLmNvbnRyb2xsZXIsXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcGFja2FnZUNoYW5nZXNQYXlsb2FkLnR5cGUsXG4gICAgICAgIHJlbW90ZUNhbGwsXG4gICAgICAgIHJlbW90ZUNhbGxJZCxcbiAgICAgICAgY2FsbENvbnRleHQsXG4gICAgICAgIHNlbW90dXMuY2hhbmdlU3RyaW5nLFxuICAgICAgICBzZXNzaW9uXG4gICAgKTtcblxuICAgIGlmICh1cGRhdGVDb25mbGljdFJldHJ5KSB7XG4gICAgICAgIGF3YWl0IGRlbGF5KGNhbGxDb250ZXh0LnJldHJpZXMgKiAxMDAwKTtcbiAgICAgICAgcmV0dXJuIHJldHJ5Q2FsbChwYXlsb2FkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGFja2FnZUNoYW5nZXMoc2Vtb3R1cywgc2Vzc2lvbiwgcGFja2FnZUNoYW5nZXNQYXlsb2FkKTtcbiAgICB9XG59XG5cbi8qKlxuICogRGVhbCB3aXRoIGNoYW5nZXMgZ29pbmcgYmFjayB0byB0aGUgY2FsbGVyIC0gQWN0dWFsbHkgbm90IEFzeW5jIVxuICpcbiAqIEBwYXJhbSBzZW1vdHVzXG4gKiBAcGFyYW0gc2Vzc2lvblxuICogQHBhcmFtIHt1bmtub3dufSBtZXNzYWdlIHVua25vd25cbiAqL1xuZnVuY3Rpb24gcGFja2FnZUNoYW5nZXMoc2Vtb3R1czogU2Vtb3R1cywgc2Vzc2lvbjogU2Vzc2lvbiwgbWVzc2FnZSkge1xuICAgIHNlbW90dXMuX2NvbnZlcnRBcnJheVJlZmVyZW5jZXNUb0NoYW5nZXMoKTtcbiAgICBtZXNzYWdlLmNoYW5nZXMgPSBKU09OLnN0cmluZ2lmeShzZW1vdHVzLmdldENoYW5nZXMoKSk7XG5cbiAgICBpZiAoc2Vtb3R1cy5tZW1TZXNzaW9uICYmIHNlbW90dXMubWVtU2Vzc2lvbi5zZW1vdHVzICYmIHNlbW90dXMubWVtU2Vzc2lvbi5zZW1vdHVzLmNhbGxTdGFydFRpbWUpIHtcbiAgICAgICAgc2Vtb3R1cy5tZW1TZXNzaW9uLnNlbW90dXMuY2FsbFN0YXJ0VGltZSA9IDA7XG4gICAgfVxuXG4gICAgLy8gSW5zcGVjdCBhIGNvcHkgb2YgdGhlIG1lc3NhZ2Ugb24gdGhlIHNlcnZlciBvbmx5IGJlZm9yZSBzZW50IG91dC4gT25seSBmb3IgZGVidWcgcHVycG9zZXNcbiAgICBpZiAoc2Vtb3R1cy5jb250cm9sbGVyICYmIHNlbW90dXMuY29udHJvbGxlci5pbnNwZWN0TWVzc2FnZSkge1xuICAgICAgICBzZW1vdHVzLmNvbnRyb2xsZXIuaW5zcGVjdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7fSwgbWVzc2FnZSkpO1xuICAgIH1cblxuICAgIHNlc3Npb24uc2VuZE1lc3NhZ2UobWVzc2FnZSk7XG4gICAgc2Vtb3R1cy5fZGVsZXRlQ2hhbmdlcygpO1xuICAgIHNlbW90dXMuX3Byb2Nlc3NRdWV1ZSgpO1xufVxuXG5cbi8qKlxuICogIEhlbHBlciBmdW5jdGlvbiB0byBsb2cgYW1vcnBoaWMgZXJyb3JzLlxuICogQHBhcmFtIHsqfSBsb2dnZXJcbiAqIEBwYXJhbSB7Kn0gYWN0aXZpdHlcbiAqIEBwYXJhbSB7Kn0gbWVzc2FnZVxuICogQHBhcmFtIHsqfSBsb2dUeXBlXG4gKiBAcGFyYW0geyp9IGxvZ1N0cmluZ1xuICogQHBhcmFtIHJlbW90ZUNhbGxcbiAqIEBwYXJhbSBjYWxsQ29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gcG9zdENhbGxFcnJvckxvZyhsb2dnZXIsIGFjdGl2aXR5LCBtZXNzYWdlLCBsb2dUeXBlLCBsb2dTdHJpbmcsIHJlbW90ZUNhbGw6IFJlbW90ZUNhbGwsIGNhbGxDb250ZXh0OiBDYWxsQ29udGV4dCkge1xuICAgIGxldCBsb2dCb2R5ID0ge1xuICAgICAgICBjb21wb25lbnQ6ICdzZW1vdHVzJyxcbiAgICAgICAgbW9kdWxlOiAncHJvY2Vzc0NhbGwuZmFpbHVyZScsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNhbGw6IHJlbW90ZUNhbGwubmFtZSxcbiAgICAgICAgICAgIGNhbGxUaW1lOiBsb2dUaW1lKGNhbGxDb250ZXh0KSxcbiAgICAgICAgICAgIHNlcXVlbmNlOiByZW1vdGVDYWxsLnNlcXVlbmNlLFxuICAgICAgICAgICAgbWVzc2FnZTogdW5kZWZpbmVkXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5OiB1bmRlZmluZWRcbiAgICB9O1xuXG4gICAgbG9nQm9keS5hY3Rpdml0eSA9IGFjdGl2aXR5O1xuXG4gICAgaWYgKGxvZ2dlci5kYXRhKSB7XG4gICAgICAgIGxvZ0JvZHkuZGF0YS5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB9XG5cbiAgICBsb2dnZXJbbG9nVHlwZV0obG9nQm9keSwgbG9nU3RyaW5nKTtcbn1cbiJdfQ==
{
"name": "@haventech/semotus",
"version": "4.1.1-beta.1",
"version": "4.1.1",
"description": "A subclass of supertype that synchronizes sets of objects.",

@@ -5,0 +5,0 @@ "homepage": "https://github.com/haven-life/amorphic-framework",

@@ -55,3 +55,3 @@ import {delay, getError, logTime} from './Utilities';

*/
async function preCallHook(payload: ProcessCallPayload, forceupdate?: boolean): Promise<void | boolean> {
async function preCallHook(payload: ProcessCallPayload, forceupdate?: boolean): Promise<any> {
const {semotus, remoteCall, session, callContext, HTTPObjs} = payload;

@@ -58,0 +58,0 @@ semotus.logger.info(

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc