@cloudbase/oauth 3.1.4 → 3.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/auth/auth-error.d.ts +1 -0
- package/dist/cjs/auth/auth-error.js +2 -1
- package/dist/cjs/index.js +16 -1
- package/dist/cjs/oauth2client/oauth2client.js +5 -1
- package/dist/esm/auth/auth-error.d.ts +1 -0
- package/dist/esm/auth/auth-error.js +2 -1
- package/dist/esm/index.js +16 -1
- package/dist/esm/oauth2client/oauth2client.js +5 -1
- package/dist/miniprogram/index.js +1 -1
- package/package.json +4 -4
- package/src/auth/auth-error.ts +4 -0
- package/src/index.ts +15 -0
- package/src/oauth2client/oauth2client.ts +3 -0
|
@@ -24,9 +24,10 @@ var AuthError = (function (_super) {
|
|
|
24
24
|
_this.name = 'AuthError';
|
|
25
25
|
_this.status = error.error;
|
|
26
26
|
_this.code = error.error_code;
|
|
27
|
+
_this.requestId = error.requestId;
|
|
27
28
|
return _this;
|
|
28
29
|
}
|
|
29
30
|
return AuthError;
|
|
30
31
|
}(Error));
|
|
31
32
|
exports.AuthError = AuthError;
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2F1dGgtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7SUFBK0IsNkJBQUs7SUFpQmxDLG1CQUFZLEtBQUs7UUFBakIsWUFDRSxrQkFBTSxLQUFLLENBQUMsaUJBQWlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUtoRDtRQVJTLG1CQUFhLEdBQUcsSUFBSSxDQUFBO1FBSTVCLEtBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFBO1FBQ3ZCLEtBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQTtRQUN6QixLQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUE7UUFDNUIsS0FBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFBOztJQUNsQyxDQUFDO0lBQ0gsZ0JBQUM7QUFBRCxDQUFDLEFBeEJELENBQStCLEtBQUssR0F3Qm5DO0FBeEJZLDhCQUFTIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEF1dGhFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIEVycm9yIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBlcnJvci4gTW9zdCBlcnJvcnMgY29taW5nIGZyb21cbiAgICogSFRUUCByZXNwb25zZXMgd2lsbCBoYXZlIGEgY29kZSwgdGhvdWdoIHNvbWUgZXJyb3JzIHRoYXQgb2NjdXJcbiAgICogYmVmb3JlIGEgcmVzcG9uc2UgaXMgcmVjZWl2ZWQgd2lsbCBub3QgaGF2ZSBvbmUgcHJlc2VudC4gSW4gdGhhdFxuICAgKiBjYXNlIHtAbGluayAjc3RhdHVzfSB3aWxsIGFsc28gYmUgdW5kZWZpbmVkLlxuICAgKi9cbiAgY29kZTogKHN0cmluZyAmIHt9KSB8IHVuZGVmaW5lZFxuXG4gIC8qKiBIVFRQIHN0YXR1cyBjb2RlIHRoYXQgY2F1c2VkIHRoZSBlcnJvci4gKi9cbiAgc3RhdHVzOiBudW1iZXIgfCB1bmRlZmluZWRcblxuICAvKiogUmVxdWVzdCBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIGVycm9yLiAqL1xuICByZXF1ZXN0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIHByb3RlY3RlZCBfX2lzQXV0aEVycm9yID0gdHJ1ZVxuXG4gIGNvbnN0cnVjdG9yKGVycm9yKSB7XG4gICAgc3VwZXIoZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24gfHwgZXJyb3IubWVzc2FnZSlcbiAgICB0aGlzLm5hbWUgPSAnQXV0aEVycm9yJ1xuICAgIHRoaXMuc3RhdHVzID0gZXJyb3IuZXJyb3JcbiAgICB0aGlzLmNvZGUgPSBlcnJvci5lcnJvcl9jb2RlXG4gICAgdGhpcy5yZXF1ZXN0SWQgPSBlcnJvci5yZXF1ZXN0SWRcbiAgfVxufVxuIl19
|
package/dist/cjs/index.js
CHANGED
|
@@ -76,6 +76,21 @@ var CloudbaseOAuth = (function () {
|
|
|
76
76
|
if (detectSessionInUrl) {
|
|
77
77
|
this.oauth2client.setGetInitialSession(this.authApi.getInitialSession.bind(this.authApi));
|
|
78
78
|
}
|
|
79
|
+
else {
|
|
80
|
+
try {
|
|
81
|
+
var url = new URL(window.location.href);
|
|
82
|
+
var code = url.searchParams.get('code');
|
|
83
|
+
var state = url.searchParams.get('state');
|
|
84
|
+
var cacheData = JSON.parse(sessionStorage.getItem(state) || 'null');
|
|
85
|
+
if (code && state && (cacheData === null || cacheData === void 0 ? void 0 : cacheData.hash)) {
|
|
86
|
+
url.hash = cacheData.hash;
|
|
87
|
+
window.history.replaceState(null, '', url.toString());
|
|
88
|
+
window.location.replace(url.toString());
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
}
|
|
93
|
+
}
|
|
79
94
|
}
|
|
80
95
|
CloudbaseOAuth.prototype.initializeSession = function (onUserObtained) {
|
|
81
96
|
if (!this.detectSessionInUrl) {
|
|
@@ -88,4 +103,4 @@ var CloudbaseOAuth = (function () {
|
|
|
88
103
|
return CloudbaseOAuth;
|
|
89
104
|
}());
|
|
90
105
|
exports.CloudbaseOAuth = CloudbaseOAuth;
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDREQUEwRDtBQUMxRCxvQ0FBK0M7QUFDL0Msd0NBQStDO0FBRS9DLG9DQUFrQztBQUF6Qiw0RkFBQSxJQUFJLE9BQUE7QUFDYixnREFBNkM7QUFBcEMsdUdBQUEsU0FBUyxPQUFBO0FBQ2xCLDREQUEyQztBQUkzQyx5Q0FBa0Q7QUFBekMsMkdBQUEsaUJBQWlCLE9BQUE7QUFDMUIsd0NBQWlKO0FBQXhJLHlHQUFBLGVBQWUsT0FBQTtBQUFFLG9HQUFBLFVBQVUsT0FBQTtBQUFFLG1IQUFBLHlCQUF5QixPQUFBO0FBQUUsa0hBQUEsd0JBQXdCLE9BQUE7QUFBRSxnR0FBQSxNQUFNLE9BQUE7QUFBRSxpSEFBQSx1QkFBdUIsT0FBQTtBQUUxSDtJQUtFLHdCQUFZLFdBQXdCO1FBR2hDLElBQUEsU0FBUyxHQWlCUCxXQUFXLFVBakJKLEVBQ1QsS0FnQkUsV0FBVyxRQWhCWSxFQUF6QixPQUFPLG1CQUFHLHdCQUFlLEtBQUEsRUFDekIsUUFBUSxHQWVOLFdBQVcsU0FmTCxFQUNSLEdBQUcsR0FjRCxXQUFXLElBZFYsRUFDSCxPQUFPLEdBYUwsV0FBVyxRQWJOLEVBQ1AsT0FBTyxHQVlMLFdBQVcsUUFaTixFQUNQLFdBQVcsR0FXVCxXQUFXLFlBWEYsRUFDWCxtQkFBbUIsR0FVakIsV0FBVyxvQkFWTSxFQUNuQixPQUFPLEdBU0wsV0FBVyxRQVROLEVBQ1AsT0FBTyxHQVFMLFdBQVcsUUFSTixFQUNQLGtCQUFrQixHQU9oQixXQUFXLG1CQVBLLEVBQ2xCLE9BQU8sR0FNTCxXQUFXLFFBTk4sRUFDUCxJQUFJLEdBS0YsV0FBVyxLQUxULEVBQ0osVUFBVSxHQUlSLFdBQVcsV0FKSCxFQUNWLFFBQVEsR0FHTixXQUFXLFNBSEwsRUFDUixrQkFBa0IsR0FF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IH0gZnJvbSAnLi9vYXV0aDJjbGllbnQvb2F1dGgyY2xpZW50J1xuaW1wb3J0IHsgQXV0aE9wdGlvbnMsIEF1dGggfSBmcm9tICcuL2F1dGgvYXBpcydcbmltcG9ydCB7IEFVVEhfQVBJX1BSRUZJWCB9IGZyb20gJy4vYXV0aC9jb25zdHMnXG5pbXBvcnQgeyBDcmVkZW50aWFscyB9IGZyb20gJy4vb2F1dGgyY2xpZW50L21vZGVscydcbmV4cG9ydCB7IEF1dGggfSBmcm9tICcuL2F1dGgvYXBpcydcbmV4cG9ydCB7IEF1dGhFcnJvciB9IGZyb20gJy4vYXV0aC9hdXRoLWVycm9yJ1xuZXhwb3J0ICogYXMgYXV0aE1vZGVscyBmcm9tICcuL2F1dGgvbW9kZWxzJ1xuZXhwb3J0IHR5cGUgeyBQcm92aWRlclByb2ZpbGUsIFVzZXJJbmZvLCBNb2RpZnlVc2VyQmFzaWNJbmZvUmVxdWVzdCB9IGZyb20gJy4vYXV0aC9tb2RlbHMnXG5leHBvcnQgdHlwZSB7IENyZWRlbnRpYWxzLCBPQXV0aDJDbGllbnRPcHRpb25zLCBSZXNwb25zZUVycm9yLCBBdXRoQ2xpZW50UmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuL29hdXRoMmNsaWVudC9tb2RlbHMnXG5leHBvcnQgdHlwZSB7IEF1dGhPcHRpb25zIH0gZnJvbSAnLi9hdXRoL2FwaXMnXG5leHBvcnQgeyB3ZUFwcEp3dERlY29kZUFsbCB9IGZyb20gJy4vdXRpbHMvYmFzZTY0J1xuZXhwb3J0IHsgQVVUSF9BUElfUFJFRklYLCBPQVVUSF9UWVBFLCBERUZBVUxUX05PREVfQUNDRVNTX1NDT1BFLCBMT0dJTl9TVEFURV9DSEFOR0VEX1RZUEUsIEVWRU5UUywgQVVUSF9TVEFURV9DSEFOR0VEX1RZUEUgfSBmcm9tICcuL2F1dGgvY29uc3RzJ1xuXG5leHBvcnQgY2xhc3MgQ2xvdWRiYXNlT0F1dGgge1xuICBwdWJsaWMgb2F1dGgyY2xpZW50OiBPQXV0aDJDbGllbnRcbiAgcHVibGljIGF1dGhBcGk6IEF1dGhcbiAgcHJpdmF0ZSBkZXRlY3RTZXNzaW9uSW5Vcmw6IGJvb2xlYW5cblxuICBjb25zdHJ1Y3RvcihhdXRoT3B0aW9uczogQXV0aE9wdGlvbnMpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgIGNvbnN0IHtcbiAgICAgIGFwaU9yaWdpbixcbiAgICAgIGFwaVBhdGggPSBBVVRIX0FQSV9QUkVGSVgsXG4gICAgICBjbGllbnRJZCxcbiAgICAgIGVudixcbiAgICAgIHN0b3JhZ2UsXG4gICAgICByZXF1ZXN0LFxuICAgICAgYmFzZVJlcXVlc3QsXG4gICAgICBhbm9ueW1vdXNTaWduSW5GdW5jLFxuICAgICAgd3hDbG91ZCxcbiAgICAgIGFkYXB0ZXIsXG4gICAgICBvbkNyZWRlbnRpYWxzRXJyb3IsXG4gICAgICBoZWFkZXJzLFxuICAgICAgaTE4bixcbiAgICAgIHVzZVd4Q2xvdWQsXG4gICAgICBldmVudEJ1cyxcbiAgICAgIGRldGVjdFNlc3Npb25JblVybCxcbiAgICAgIGRlYnVnLFxuICAgIH0gPSBhdXRoT3B0aW9uc1xuICAgIHRoaXMuZGV0ZWN0U2Vzc2lvbkluVXJsID0gZGV0ZWN0U2Vzc2lvbkluVXJsID8/IGZhbHNlXG4gICAgdGhpcy5vYXV0aDJjbGllbnQgPSBuZXcgT0F1dGgyQ2xpZW50KHtcbiAgICAgIGFwaU9yaWdpbixcbiAgICAgIGFwaVBhdGgsXG4gICAgICBjbGllbnRJZCxcbiAgICAgIGVudixcbiAgICAgIHN0b3JhZ2UsXG4gICAgICBiYXNlUmVxdWVzdDogYmFzZVJlcXVlc3QgfHwgcmVxdWVzdCxcbiAgICAgIGFub255bW91c1NpZ25JbkZ1bmMsXG4gICAgICB3eENsb3VkLFxuICAgICAgb25DcmVkZW50aWFsc0Vycm9yLFxuICAgICAgaGVhZGVyczogaGVhZGVycyB8fCB7fSxcbiAgICAgIGkxOG4sXG4gICAgICB1c2VXeENsb3VkLFxuICAgICAgZXZlbnRCdXMsXG4gICAgICBkZWJ1ZyxcbiAgICB9KVxuXG4gICAgdGhpcy5hdXRoQXBpID0gbmV3IEF1dGgoe1xuICAgICAgY3JlZGVudGlhbHNDbGllbnQ6IHRoaXMub2F1dGgyY2xpZW50LFxuICAgICAgLi4uYXV0aE9wdGlvbnMsXG4gICAgICAvLyDlhbzlrrnogIHpgLvovpHvvIzmnInlgLzkvKDlhaXliJnkuI3otbBBdXRo5YaF55qE6aqM6K+B56CB6K+35rGC6YC76L6RXG4gICAgICByZXF1ZXN0OiByZXF1ZXN0ID8gdGhpcy5vYXV0aDJjbGllbnQucmVxdWVzdC5iaW5kKHRoaXMub2F1dGgyY2xpZW50KSA6IHVuZGVmaW5lZCxcbiAgICAgIGFkYXB0ZXIsXG4gICAgfSlcblxuICAgIC8vIFNldCB0aGUgZ2V0SW5pdGlhbFNlc3Npb24gY2FsbGJhY2sgYWZ0ZXIgQXV0aCBpcyBjcmVhdGVkXG4gICAgLy8gVGhpcyBhbGxvd3MgQXV0aC5nZXRJbml0aWFsU2Vzc2lvbiB0byBoYW5kbGUgVVJMIGRldGVjdGlvbiBhbmQgT0F1dGggdmVyaWZpY2F0aW9uXG4gICAgaWYgKGRldGVjdFNlc3Npb25JblVybCkge1xuICAgICAgdGhpcy5vYXV0aDJjbGllbnQuc2V0R2V0SW5pdGlhbFNlc3Npb24odGhpcy5hdXRoQXBpLmdldEluaXRpYWxTZXNzaW9uLmJpbmQodGhpcy5hdXRoQXBpKSlcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g5Zyo5o6I5p2D5LmL5YmN5pivaGFzaOWcsOWdgOeahOaDheWGteS4i++8jOmcgOimgeWwhmhhc2jlnLDlnYDmm7/mjaLliLB1cmzkuIpcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpXG4gICAgICAgIGNvbnN0IGNvZGUgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgnY29kZScpXG4gICAgICAgIGNvbnN0IHN0YXRlID0gdXJsLnNlYXJjaFBhcmFtcy5nZXQoJ3N0YXRlJylcbiAgICAgICAgY29uc3QgY2FjaGVEYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHN0YXRlKSB8fCAnbnVsbCcpXG4gICAgICAgIGlmIChjb2RlICYmIHN0YXRlICYmIGNhY2hlRGF0YT8uaGFzaCkge1xuICAgICAgICAgIHVybC5oYXNoID0gY2FjaGVEYXRhLmhhc2hcbiAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIHVybC50b1N0cmluZygpKVxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHVybC50b1N0cmluZygpKVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvL1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBOb3RlOiBEbyBOT1QgYXV0by1jYWxsIGluaXRpYWxpemUoKSBoZXJlLlxuICAgIC8vIFVwcGVyIGxheWVyIChwYWNrYWdlcy9hdXRoKSBzaG91bGQgY2FsbCBpbml0aWFsaXplU2Vzc2lvbigpIGFmdGVyIHNldHRpbmcgdXAgb25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkIGNhbGxiYWNrXG4gIH1cblxuICAvKipcbiAgICogU2V0dXAgdGhlIG9uSW5pdGlhbFNlc3Npb25PYnRhaW5lZCBjYWxsYmFjayBhbmQgdHJpZ2dlciBpbml0aWFsaXphdGlvbi5cbiAgICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIGJ5IHVwcGVyIGxheWVyIChwYWNrYWdlcy9hdXRoKSBhZnRlciBjcmVhdGluZyBBdXRoIGluc3RhbmNlLlxuICAgKiBAcGFyYW0gb25Vc2VyT2J0YWluZWQgQ2FsbGJhY2sgdG8gaGFuZGxlIHVzZXIgaW5mbyBzdG9yYWdlIGFmdGVyIHNlc3Npb24gaXMgb2J0YWluZWRcbiAgICovXG4gIHB1YmxpYyBpbml0aWFsaXplU2Vzc2lvbihvblVzZXJPYnRhaW5lZD86IChkYXRhOiB7IHNlc3Npb246IENyZWRlbnRpYWxzOyB1c2VyPzogYW55OyB0eXBlPzogc3RyaW5nIH0sIGVycm9yPzogYW55KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPik6IHZvaWQge1xuICAgIGlmICghdGhpcy5kZXRlY3RTZXNzaW9uSW5VcmwpIHtcbiAgICAgIHRoaXMub2F1dGgyY2xpZW50LmluaXRpYWxpemUoUHJvbWlzZS5yZXNvbHZlKHsgZXJyb3I6IG51bGwgfSkpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5vYXV0aDJjbGllbnQuc2V0T25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkKG9uVXNlck9idGFpbmVkKVxuICAgIC8vIFBhc3MgY2FsbGJhY2sgZGlyZWN0bHkgdG8gaW5pdGlhbGl6ZSgpIHRvIGVuc3VyZSBpdCdzIHNldCBiZWZvcmUgaW5pdGlhbGl6YXRpb24gc3RhcnRzXG4gICAgdGhpcy5vYXV0aDJjbGllbnQuaW5pdGlhbGl6ZSgpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -566,6 +566,10 @@ var OAuth2Client = exports.OAuth2Client = (function () {
|
|
|
566
566
|
return [3, 21];
|
|
567
567
|
case 15:
|
|
568
568
|
responseError_1 = _f.sent();
|
|
569
|
+
try {
|
|
570
|
+
responseError_1.requestId = responseError_1.requestId || options.headers[RequestIdHeaderName] || '';
|
|
571
|
+
}
|
|
572
|
+
catch (error) { }
|
|
569
573
|
if (!(options.withCredentials && responseError_1 && responseError_1.error === consts_1.ErrorType.UNAUTHENTICATED)) return [3, 17];
|
|
570
574
|
return [4, this.setCredentials(null)];
|
|
571
575
|
case 16:
|
|
@@ -1167,4 +1171,4 @@ var OAuth2Client = exports.OAuth2Client = (function () {
|
|
|
1167
1171
|
OAuth2Client.retryInterval = 1000;
|
|
1168
1172
|
return OAuth2Client;
|
|
1169
1173
|
}());
|
|
1170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29hdXRoMmNsaWVudC9vYXV0aDJjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBb0M7QUFDcEMseUNBT3VCO0FBYXZCLHNDQUFzQztBQUN0Qyx3Q0FBNEM7QUFFNUMsbUVBQWdFO0FBQ2hFLDBDQUF3QztBQUN4QyxrQ0FBa0M7QUFHbEMsa0RBQWdEO0FBRWhELElBQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFBO0FBQzFDLElBQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFBO0FBQ3hDLElBQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFBO0FBV2hDLElBQU0sY0FBYyxHQUFvQixVQUFtQixHQUFXLEVBQUUsT0FBd0I7Ozs7OztvQkFDakcsTUFBTSxHQUFhLElBQUksQ0FBQTtvQkFDdkIsYUFBYSxHQUF5QixJQUFJLENBQUE7Ozs7b0JBR3RDLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQTtvQkFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7d0JBQ3ZCLFdBQVcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO3FCQUMzQjtvQkFDRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUksT0FBTyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTt3QkFDNUQsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtxQkFDcEQ7b0JBQ2dDLFdBQU0sS0FBSyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBQTs7b0JBQXhELGNBQWMsR0FBYSxTQUE2QjtvQkFDekMsV0FBTSxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUE7O29C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QUFXLEdBQUcsU0FBc0MsQ0FBQTs7O3dCQUU5QyxHQUFHLEdBQUcsdUNBQXVDLENBQUE7d0JBQ25ELE1BQUEsSUFBSSxDQUFDLGtCQUFrQixxREFBRyxFQUFFLEdBQUcsS0FBQSxFQUFFLENBQUMsQ0FBQTt3QkFDbEMsV0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUE7NkJBR3pDLFdBQU8sV0FBVyxFQUFBOzs7O0tBQ25CO0lBenNCYyx5QkFBWSxHQUFHLENBQUMsQUFBSixDQUFJO0lBQ2hCLHFCQUFRLEdBQUcsQ0FBQyxBQUFKLENBQUk7SUFDWixxQkFBUSxHQUFHLENBQUMsQUFBSixDQUFJO0lBQ1osMEJBQWEsR0FBRyxJQUFJLEFBQVAsQ0FBTztJQXVzQnJDLG1CQUFDO0NBQUEsQUEzc0JELElBMnNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVycm9yVHlwZSB9IGZyb20gJy4vY29uc3RzJ1xuaW1wb3J0IHtcbiAgQXBpVXJscyxcbiAgQXBpVXJsc1YyLFxuICBBVVRIX0FQSV9QUkVGSVgsXG4gIEFVVEhfU1RBVEVfQ0hBTkdFRF9UWVBFLFxuICBERUZBVUxUX05PREVfQUNDRVNTX1NDT1BFLFxuICBFVkVOVFMsXG59IGZyb20gJy4uL2F1dGgvY29uc3RzJ1xuXG5pbXBvcnQgeyBBdXRoQ2xpZW50LCBTaW1wbGVTdG9yYWdlIH0gZnJvbSAnLi9pbnRlcmZhY2UnXG5cbmltcG9ydCB7XG4gIENyZWRlbnRpYWxzLFxuICBSZXNwb25zZUVycm9yLFxuICBSZXF1ZXN0T3B0aW9ucyxcbiAgUmVxdWVzdEZ1bmN0aW9uLFxuICBPQXV0aDJDbGllbnRPcHRpb25zLFxuICBBdXRoQ2xpZW50UmVxdWVzdE9wdGlvbnMsXG59IGZyb20gJy4vbW9kZWxzJ1xuXG5pbXBvcnQgeyB1dWlkdjQgfSBmcm9tICcuLi91dGlscy91dWlkJ1xuaW1wb3J0IHsgZ2V0UGF0aE5hbWUgfSBmcm9tICcuLi91dGlscy9pbmRleCdcblxuaW1wb3J0IHsgU2luZ2xlUHJvbWlzZSB9IGZyb20gJy4uL3V0aWxzL2Z1bmN0aW9uL3NpbmdsZS1wcm9taXNlJ1xuaW1wb3J0IHsgd2VCdG9hIH0gZnJvbSAnLi4vdXRpbHMvYmFzZTY0J1xuaW1wb3J0IHsgaXNNcCB9IGZyb20gJy4uL3V0aWxzL21wJ1xuaW1wb3J0IHsgQXV0aE9wdGlvbnMgfSBmcm9tICcuLi9hdXRoL2FwaXMnXG5pbXBvcnQgeyBJQ2xvdWRiYXNlQ29uZmlnIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcbmltcG9ydCB7IGxhbmdFdmVudCB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuXG5jb25zdCBSZXF1ZXN0SWRIZWFkZXJOYW1lID0gJ3gtcmVxdWVzdC1pZCdcbmNvbnN0IERldmljZUlkSGVhZGVyTmFtZSA9ICd4LWRldmljZS1pZCdcbmNvbnN0IERldmljZUlkU2VjdGlvbk5hbWUgPSAnZGV2aWNlX2lkJ1xuXG5kZWNsYXJlIGNvbnN0IHd4OiBhbnlcblxuZXhwb3J0IGludGVyZmFjZSBUb1Jlc3BvbnNlRXJyb3JPcHRpb25zIHtcbiAgZXJyb3I/OiBFcnJvclR5cGVcbiAgZXJyb3JfZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBudWxsXG4gIGVycm9yX3VyaT86IHN0cmluZyB8IG51bGxcbiAgZGV0YWlscz86IGFueSB8IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRSZXF1ZXN0OiBSZXF1ZXN0RnVuY3Rpb24gPSBhc3luYyBmdW5jdGlvbiA8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICBsZXQgcmVzdWx0OiBUIHwgbnVsbCA9IG51bGxcbiAgbGV0IHJlc3BvbnNlRXJyb3I6IFJlc3BvbnNlRXJyb3IgfCBudWxsID0gbnVsbFxuICB0cnkge1xuICAgIC8vIE9iamVjdHMgbXVzdCBiZSBjb3BpZWQgdG8gcHJldmVudCBtb2RpZmljYXRpb24gb2YgZGF0YSBzdWNoIGFzIGJvZHkuXG4gICAgY29uc3QgY29weU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKVxuICAgIGlmICghY29weU9wdGlvbnMubWV0aG9kKSB7XG4gICAgICBjb3B5T3B0aW9ucy5tZXRob2QgPSAnR0VUJ1xuICAgIH1cbiAgICBpZiAoY29weU9wdGlvbnMuYm9keSAmJiB0eXBlb2YgY29weU9wdGlvbnMuYm9keSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNvcHlPcHRpb25zLmJvZHkgPSBKU09OLnN0cmluZ2lmeShjb3B5T3B0aW9ucy5ib2R5KVxuICAgIH1cbiAgICBjb25zdCByZXNwb25zZVJlc3VsdDogUmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIGNvcHlPcHRpb25zKVxuICAgIGNvbnN0IGpzb25SZXNwb25zZSA9IGF3YWl0IHJlc3BvbnNlUmVzdWx0Lmpzb24oKVxuICAgIGlmIChqc29uUmVzcG9uc2U/LmVycm9yKSB7XG4gICAgICByZXNwb25zZUVycm9yID0ganNvblJlc3BvbnNlIGFzIFJlc3BvbnNlRXJyb3JcbiAgICAgIHJlc3BvbnNlRXJyb3IuZXJyb3JfdXJpID0gbmV3IFVSTCh1cmwpLnBhdGhuYW1lXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGpzb25SZXNwb25zZSBhcyBUXG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlc3BvbnNlRXJyb3IgPSB7XG4gICAgICBlcnJvcjogRXJyb3JUeXBlLlVOUkVBQ0hBQkxFLFxuICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGVycm9yLm1lc3NhZ2UsXG4gICAgICBlcnJvcl91cmk6IG5ldyBVUkwodXJsKS5wYXRobmFtZSxcbiAgICB9XG4gIH1cbiAgaWYgKHJlc3BvbnNlRXJyb3IpIHtcbiAgICB0aHJvdyByZXNwb25zZUVycm9yXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB0b1Jlc3BvbnNlRXJyb3IgPSAoZXJyb3I6IFJlc3BvbnNlRXJyb3IgfCBFcnJvciwgb3B0aW9ucz86IFRvUmVzcG9uc2VFcnJvck9wdGlvbnMpOiBSZXNwb25zZUVycm9yID0+IHtcbiAgbGV0IHJlc3BvbnNlRXJyb3I6IFJlc3BvbnNlRXJyb3JcbiAgY29uc3QgZm9ybWF0T3B0aW9uczogVG9SZXNwb25zZUVycm9yT3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICByZXNwb25zZUVycm9yID0ge1xuICAgICAgZXJyb3I6IGZvcm1hdE9wdGlvbnMuZXJyb3IgfHwgRXJyb3JUeXBlLkxPQ0FMLFxuICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGZvcm1hdE9wdGlvbnMuZXJyb3JfZGVzY3JpcHRpb24gfHwgZXJyb3IubWVzc2FnZSxcbiAgICAgIGVycm9yX3VyaTogZm9ybWF0T3B0aW9ucy5lcnJvcl91cmksXG4gICAgICBkZXRhaWxzOiBmb3JtYXRPcHRpb25zLmRldGFpbHMgfHwgZXJyb3Iuc3RhY2ssXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGZvcm1hdEVycm9yOiBUb1Jlc3BvbnNlRXJyb3JPcHRpb25zID0gZXJyb3IgfHwge31cbiAgICByZXNwb25zZUVycm9yID0ge1xuICAgICAgZXJyb3I6IGZvcm1hdE9wdGlvbnMuZXJyb3IgfHwgZm9ybWF0RXJyb3IuZXJyb3IgfHwgRXJyb3JUeXBlLkxPQ0FMLFxuICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGZvcm1hdE9wdGlvbnMuZXJyb3JfZGVzY3JpcHRpb24gfHwgZm9ybWF0RXJyb3IuZXJyb3JfZGVzY3JpcHRpb24sXG4gICAgICBlcnJvcl91cmk6IGZvcm1hdE9wdGlvbnMuZXJyb3JfdXJpIHx8IGZvcm1hdEVycm9yLmVycm9yX3VyaSxcbiAgICAgIGRldGFpbHM6IGZvcm1hdE9wdGlvbnMuZGV0YWlscyB8fCBmb3JtYXRFcnJvci5kZXRhaWxzLFxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzcG9uc2VFcnJvclxufVxuXG4vKipcbiAqIEdlbmVyYXRlIHJlcXVlc3QgaWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVJlcXVlc3RJZCgpOiBzdHJpbmcge1xuICByZXR1cm4gdXVpZHY0KClcbn1cblxuLyoqXG4gKiBEZWZhdWx0IFN0b3JhZ2UuXG4gKi9cbmNsYXNzIERlZmF1bHRTdG9yYWdlIGltcGxlbWVudHMgU2ltcGxlU3RvcmFnZSB7XG4gIC8qKlxuICAgKiDnvJPlrZhrZXnnu5/kuIDkvb/nlKjlkI7nvIDljLrliIZcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgcHJpdmF0ZSByZWFkb25seSBfZW52OiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihvcHRzPzogeyBlbnY6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5fZW52ID0gb3B0cz8uZW52IHx8ICcnXG4gIH1cbiAgLyoqXG4gICAqIEdldCBpdGVtLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqL1xuICBhc3luYyBnZXRJdGVtKGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHtrZXl9JHt0aGlzLl9lbnZ9YClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgaXRlbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKi9cbiAgYXN5bmMgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtrZXl9JHt0aGlzLl9lbnZ9YClcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgaXRlbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICovXG4gIGFzeW5jIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7a2V5fSR7dGhpcy5fZW52fWAsIHZhbHVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBpdGVtIHN5bmMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICovXG4gIGdldEl0ZW1TeW5jKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHtrZXl9JHt0aGlzLl9lbnZ9YClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgaXRlbSBzeW5jLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqL1xuICByZW1vdmVJdGVtU3luYyhrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtrZXl9JHt0aGlzLl9lbnZ9YClcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgaXRlbSBzeW5jLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKi9cbiAgc2V0SXRlbVN5bmMoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7a2V5fSR7dGhpcy5fZW52fWAsIHZhbHVlKVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0U3RvcmFnZSA9IG5ldyBEZWZhdWx0U3RvcmFnZSgpXG5cbmludGVyZmFjZSBMb2NhbENyZWRlbnRpYWxzT3B0aW9ucyB7XG4gIHRva2VuU2VjdGlvbk5hbWU6IHN0cmluZ1xuICBzdG9yYWdlOiBTaW1wbGVTdG9yYWdlXG4gIGNsaWVudElkOiBzdHJpbmdcbiAgY3JlZGVudGlhbHM/OiBDcmVkZW50aWFsc1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGNyZWRlbnRpYWxzIGlzIGV4cGlyZWQuXG4gKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNDcmVkZW50aWFsc0V4cGlyZWQoY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzKTogYm9vbGVhbiB7XG4gIGxldCBpc0V4cGlyZWQgPSB0cnVlXG4gIGlmIChjcmVkZW50aWFscz8uZXhwaXJlc19hdCAmJiBjcmVkZW50aWFscz8uYWNjZXNzX3Rva2VuKSB7XG4gICAgaXNFeHBpcmVkID0gY3JlZGVudGlhbHMuZXhwaXJlc19hdCA8IG5ldyBEYXRlKClcbiAgfVxuICByZXR1cm4gaXNFeHBpcmVkXG59XG5cbi8qKlxuICogTG9jYWwgY3JlZGVudGlhbHMuXG4gKiBMb2NhbCBjcmVkZW50aWFscywgd2l0aCBtZW1vcnkgY2FjaGUgYW5kIHN0b3JhZ2UgY2FjaGUuXG4gKiBJZiB0aGUgbWVtb3J5IGNhY2hlIGV4cGlyZXMsIHRoZSBzdG9yYWdlIGNhY2hlIGlzIGF1dG9tYXRpY2FsbHkgbG9hZGVkLlxuICovXG5jbGFzcyBMb2NhbENyZWRlbnRpYWxzIHtcbiAgcHJpdmF0ZSB0b2tlblNlY3Rpb25OYW1lOiBzdHJpbmdcblxuICBwcml2YXRlIHN0b3JhZ2U6IFNpbXBsZVN0b3JhZ2VcblxuICBwcml2YXRlIGNsaWVudElkOiBzdHJpbmdcblxuICBwcml2YXRlIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyB8IG51bGwgPSBudWxsXG4gIC8vIOadpeiHqmFjY2Vzc0tleeeahOi6q+S7ve+8jOS4jeaMgeS5heWMllxuICBwcml2YXRlIGFjY2Vzc0tleUNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyB8IG51bGwgPSBudWxsXG5cbiAgcHJpdmF0ZSBzaW5nbGVQcm9taXNlOiBTaW5nbGVQcm9taXNlID0gbnVsbFxuXG4gIC8qKlxuICAgKiBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0xvY2FsQ3JlZGVudGlhbHNPcHRpb25zfSBvcHRpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBMb2NhbENyZWRlbnRpYWxzT3B0aW9ucykge1xuICAgIHRoaXMudG9rZW5TZWN0aW9uTmFtZSA9IG9wdGlvbnMudG9rZW5TZWN0aW9uTmFtZVxuICAgIHRoaXMuc3RvcmFnZSA9IG9wdGlvbnMuc3RvcmFnZVxuICAgIHRoaXMuY2xpZW50SWQgPSBvcHRpb25zLmNsaWVudElkXG4gICAgdGhpcy5zaW5nbGVQcm9taXNlID0gbmV3IFNpbmdsZVByb21pc2UoeyBjbGllbnRJZDogdGhpcy5jbGllbnRJZCB9KVxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IG51bGxcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdG9yYWdlQ3JlZGVudGlhbHNTeW5jKCk6IENyZWRlbnRpYWxzIHwgbnVsbCB7XG4gICAgbGV0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IG51bGxcbiAgICBjb25zdCB0b2tlblN0cjogc3RyaW5nID0gdGhpcy5zdG9yYWdlLmdldEl0ZW1TeW5jKHRoaXMudG9rZW5TZWN0aW9uTmFtZSlcbiAgICBpZiAodG9rZW5TdHIgIT09IHVuZGVmaW5lZCAmJiB0b2tlblN0ciAhPT0gbnVsbCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY3JlZGVudGlhbHMgPSBKU09OLnBhcnNlKHRva2VuU3RyKVxuICAgICAgICBpZiAoY3JlZGVudGlhbHM/LmV4cGlyZXNfYXQpIHtcbiAgICAgICAgICBjcmVkZW50aWFscy5leHBpcmVzX2F0ID0gbmV3IERhdGUoY3JlZGVudGlhbHMuZXhwaXJlc19hdClcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy50b2tlblNlY3Rpb25OYW1lKVxuICAgICAgICBjcmVkZW50aWFscyA9IG51bGxcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gIH1cblxuICAvKipcbiAgICogc2V0Q3JlZGVudGlhbHMgUHJvdmlkZXMgYW4gYWx0ZXJuYXRpdmUgZmV0Y2ggYXBpIHJlcXVlc3QgaW1wbGVtZW50YXRpb24gd2l0aCBhdXRoIGNyZWRlbnRpYWxzXG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2V0Q3JlZGVudGlhbHMoY3JlZGVudGlhbHM/OiBDcmVkZW50aWFscyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChjcmVkZW50aWFscz8uZXhwaXJlc19pbikge1xuICAgICAgaWYgKCFjcmVkZW50aWFscz8uZXhwaXJlc19hdCkge1xuICAgICAgICBjcmVkZW50aWFscy5leHBpcmVzX2F0ID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIChjcmVkZW50aWFscy5leHBpcmVzX2luIC0gMzApICogMTAwMClcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnN0b3JhZ2UpIHtcbiAgICAgICAgY29uc3QgdG9rZW5TdHI6IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGNyZWRlbnRpYWxzKVxuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnRva2VuU2VjdGlvbk5hbWUsIHRva2VuU3RyKVxuICAgICAgfVxuICAgICAgdGhpcy5jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnN0b3JhZ2UpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy50b2tlblNlY3Rpb25OYW1lKVxuICAgICAgfVxuICAgICAgdGhpcy5jcmVkZW50aWFscyA9IG51bGxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc2V0IGNyZWRlbnRpYWxzIGZyb20gYWNjZXNzS2V5XG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gICAqL1xuICBwdWJsaWMgc2V0QWNjZXNzS2V5Q3JlZGVudGlhbHMoY3JlZGVudGlhbHM/OiBDcmVkZW50aWFscykge1xuICAgIHRoaXMuYWNjZXNzS2V5Q3JlZGVudGlhbHMgPSBjcmVkZW50aWFsc1xuICAgIC8vIG5vZGUgc2RrIOWcuuaZr+S4i+ebtOaOpeS9v+eUqGFjY2Vzc0tleei6q+S7vVxuICAgIGlmIChjcmVkZW50aWFscy5zY29wZSA9PT0gREVGQVVMVF9OT0RFX0FDQ0VTU19TQ09QRSkge1xuICAgICAgdGhpcy5jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjcmVkZW50aWFscy5cbiAgICogQHJldHVybiB7UHJvbWlzZTxDcmVkZW50aWFscyB8IG51bGw+fVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldENyZWRlbnRpYWxzKCk6IFByb21pc2U8Q3JlZGVudGlhbHMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuc2luZ2xlUHJvbWlzZS5ydW4oJ2dldENyZWRlbnRpYWxzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKGlzQ3JlZGVudGlhbHNFeHBpcmVkKHRoaXMuY3JlZGVudGlhbHMpKSB7XG4gICAgICAgIGNvbnN0IHsgY3JlZGVudGlhbHMsIGlzQWNjZXNzS2V5Q3JlZGVudGlhbHMgfSA9IGF3YWl0IHRoaXMuZ2V0U3RvcmFnZUNyZWRlbnRpYWxzKClcbiAgICAgICAgaWYgKGlzQWNjZXNzS2V5Q3JlZGVudGlhbHMpIHtcbiAgICAgICAgICByZXR1cm4gY3JlZGVudGlhbHNcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNyZWRlbnRpYWxzID0gY3JlZGVudGlhbHNcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmNyZWRlbnRpYWxzXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc3RvcmFnZSBjcmVkZW50aWFscy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ2V0U3RvcmFnZUNyZWRlbnRpYWxzKCk6IFByb21pc2U8eyBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgfCBudWxsOyBpc0FjY2Vzc0tleUNyZWRlbnRpYWxzOiBib29sZWFuIH0+IHtcbiAgICByZXR1cm4gdGhpcy5zaW5nbGVQcm9taXNlLnJ1bignX2dldFN0b3JhZ2VDcmVkZW50aWFscycsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBudWxsXG4gICAgICBsZXQgaXNBY2Nlc3NLZXlDcmVkZW50aWFscyA9IGZhbHNlXG4gICAgICBjb25zdCB0b2tlblN0cjogc3RyaW5nID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldEl0ZW0odGhpcy50b2tlblNlY3Rpb25OYW1lKVxuICAgICAgaWYgKCEhdG9rZW5TdHIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjcmVkZW50aWFscyA9IEpTT04ucGFyc2UodG9rZW5TdHIpXG4gICAgICAgICAgaWYgKGNyZWRlbnRpYWxzPy5leHBpcmVzX2F0KSB7XG4gICAgICAgICAgICBjcmVkZW50aWFscy5leHBpcmVzX2F0ID0gbmV3IERhdGUoY3JlZGVudGlhbHMuZXhwaXJlc19hdClcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy50b2tlblNlY3Rpb25OYW1lKVxuICAgICAgICAgIGNyZWRlbnRpYWxzID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjcmVkZW50aWFscyA9IHRoaXMuYWNjZXNzS2V5Q3JlZGVudGlhbHMgfHwgbnVsbFxuICAgICAgICBpc0FjY2Vzc0tleUNyZWRlbnRpYWxzID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgY3JlZGVudGlhbHMsIGlzQWNjZXNzS2V5Q3JlZGVudGlhbHMgfVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBPQXV0aDJDbGllbnRcbiAqL1xuZXhwb3J0IGNsYXNzIE9BdXRoMkNsaWVudCBpbXBsZW1lbnRzIEF1dGhDbGllbnQge1xuICBwcml2YXRlIHN0YXRpYyBkZWZhdWx0UmV0cnkgPSAyXG4gIHByaXZhdGUgc3RhdGljIG1pblJldHJ5ID0gMFxuICBwcml2YXRlIHN0YXRpYyBtYXhSZXRyeSA9IDVcbiAgcHJpdmF0ZSBzdGF0aWMgcmV0cnlJbnRlcnZhbCA9IDEwMDBcblxuICBwdWJsaWMgbG9jYWxDcmVkZW50aWFsczogTG9jYWxDcmVkZW50aWFsc1xuICAvKipcbiAgICogS2VlcHMgdHJhY2sgb2YgdGhlIGFzeW5jIGNsaWVudCBpbml0aWFsaXphdGlvbi5cbiAgICogV2hlbiBudWxsIG9yIG5vdCB5ZXQgcmVzb2x2ZWQgdGhlIGF1dGggc3RhdGUgaXMgYHVua25vd25gXG4gICAqIE9uY2UgcmVzb2x2ZWQgdGhlIGF1dGggc3RhdGUgaXMga25vd24gYW5kIGl0J3Mgc2FmZSB0byBjYWxsIGFueSBmdXJ0aGVyIGNsaWVudCBtZXRob2RzLlxuICAgKi9cbiAgcHVibGljIGluaXRpYWxpemVQcm9taXNlOiBQcm9taXNlPHsgZXJyb3I6IEVycm9yIHwgbnVsbCB9PiB8IG51bGwgPSBudWxsXG4gIHByb3RlY3RlZCBsb2NrQWNxdWlyZWQgPSBmYWxzZVxuICBwcm90ZWN0ZWQgcGVuZGluZ0luTG9jazogUHJvbWlzZTxhbnk+W10gPSBbXVxuICBwcm90ZWN0ZWQgbG9nRGVidWdNZXNzYWdlczogYm9vbGVhblxuICBwcm90ZWN0ZWQgZ2V0SW5pdGlhbFNlc3Npb24/OiAoKSA9PiBQcm9taXNlPHtcbiAgICBkYXRhOiB7IHNlc3Npb246IENyZWRlbnRpYWxzOyB1c2VyPzogYW55IH0gfCBudWxsXG4gICAgZXJyb3I6IEVycm9yIHwgbnVsbFxuICB9PlxuICBwcml2YXRlIGFwaU9yaWdpbjogc3RyaW5nXG4gIHByaXZhdGUgYXBpUGF0aDogc3RyaW5nXG4gIHByaXZhdGUgY2xpZW50SWQ6IHN0cmluZ1xuICBwcml2YXRlIGkxOG46IElDbG91ZGJhc2VDb25maWdbJ2kxOG4nXVxuICBwcml2YXRlIHJldHJ5OiBudW1iZXJcbiAgcHJpdmF0ZSBjbGllbnRTZWNyZXQ/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiYXNlUmVxdWVzdDogPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8VD5cbiAgcHJpdmF0ZSBzdG9yYWdlOiBTaW1wbGVTdG9yYWdlXG4gIHByaXZhdGUgZGV2aWNlSUQ/OiBzdHJpbmdcbiAgcHJpdmF0ZSB0b2tlbkluVVJMPzogYm9vbGVhblxuICBwcml2YXRlIHJlZnJlc2hUb2tlbkZ1bmM6IChyZWZyZXNoVG9rZW4/OiBzdHJpbmcsIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHMpID0+IFByb21pc2U8Q3JlZGVudGlhbHM+XG4gIHByaXZhdGUgaGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbiAgcHJpdmF0ZSBzaW5nbGVQcm9taXNlOiBTaW5nbGVQcm9taXNlID0gbnVsbFxuICBwcml2YXRlIGFub255bW91c1NpZ25JbkZ1bmM6IChDcmVkZW50aWFscykgPT4gUHJvbWlzZTxDcmVkZW50aWFscyB8IHZvaWQ+XG4gIHByaXZhdGUgd3hDbG91ZDogYW55XG4gIHByaXZhdGUgdXNlV3hDbG91ZDogYm9vbGVhblxuICBwcml2YXRlIGV2ZW50QnVzOiBhbnlcbiAgcHJpdmF0ZSBiYXNpY0F1dGg6IHN0cmluZ1xuICBwcml2YXRlIG9uQ3JlZGVudGlhbHNFcnJvcjogQXV0aE9wdGlvbnNbJ29uQ3JlZGVudGlhbHNFcnJvciddIHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgb25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkPzogKGRhdGE6IHsgc2Vzc2lvbjogQ3JlZGVudGlhbHM7IHVzZXI/OiBhbnkgfSwgZXJyb3I/OiBhbnkpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+XG5cbiAgLyoqXG4gICAqIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T0F1dGgyQ2xpZW50T3B0aW9uc30gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9uczogT0F1dGgyQ2xpZW50T3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucy5jbGllbnRTZWNyZXQpIHtcbiAgICAgIG9wdGlvbnMuY2xpZW50U2VjcmV0ID0gJydcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuY2xpZW50SWQgJiYgb3B0aW9ucy5lbnYpIHtcbiAgICAgIG9wdGlvbnMuY2xpZW50SWQgPSBvcHRpb25zLmVudlxuICAgIH1cblxuICAgIHRoaXMuYXBpT3JpZ2luID0gb3B0aW9ucy5hcGlPcmlnaW5cbiAgICB0aGlzLmFwaVBhdGggPSBvcHRpb25zLmFwaVBhdGggfHwgQVVUSF9BUElfUFJFRklYXG4gICAgdGhpcy5jbGllbnRJZCA9IG9wdGlvbnMuY2xpZW50SWRcbiAgICB0aGlzLmkxOG4gPSBvcHRpb25zLmkxOG5cbiAgICB0aGlzLmV2ZW50QnVzID0gb3B0aW9ucy5ldmVudEJ1c1xuICAgIHRoaXMuc2luZ2xlUHJvbWlzZSA9IG5ldyBTaW5nbGVQcm9taXNlKHsgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQgfSlcbiAgICB0aGlzLnJldHJ5ID0gdGhpcy5mb3JtYXRSZXRyeShvcHRpb25zLnJldHJ5LCBPQXV0aDJDbGllbnQuZGVmYXVsdFJldHJ5KVxuICAgIGlmIChvcHRpb25zLmJhc2VSZXF1ZXN0KSB7XG4gICAgICB0aGlzLmJhc2VSZXF1ZXN0ID0gb3B0aW9ucy5iYXNlUmVxdWVzdFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJhc2VSZXF1ZXN0ID0gZGVmYXVsdFJlcXVlc3RcbiAgICB9XG4gICAgdGhpcy50b2tlbkluVVJMID0gb3B0aW9ucy50b2tlbkluVVJMXG4gICAgdGhpcy5oZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuc3RvcmFnZSA9IG9wdGlvbnMuc3RvcmFnZSB8fCBkZWZhdWx0U3RvcmFnZVxuICAgIHRoaXMubG9jYWxDcmVkZW50aWFscyA9IG5ldyBMb2NhbENyZWRlbnRpYWxzKHtcbiAgICAgIHRva2VuU2VjdGlvbk5hbWU6IGBjcmVkZW50aWFsc18ke29wdGlvbnMuY2xpZW50SWR9YCxcbiAgICAgIHN0b3JhZ2U6IHRoaXMuc3RvcmFnZSxcbiAgICAgIGNsaWVudElkOiBvcHRpb25zLmNsaWVudElkLFxuICAgIH0pXG5cbiAgICB0aGlzLmNsaWVudFNlY3JldCA9IG9wdGlvbnMuY2xpZW50U2VjcmV0XG4gICAgaWYgKG9wdGlvbnMuY2xpZW50SWQpIHtcbiAgICAgIHRoaXMuYmFzaWNBdXRoID0gYEJhc2ljICR7d2VCdG9hKGAke29wdGlvbnMuY2xpZW50SWR9OiR7dGhpcy5jbGllbnRTZWNyZXR9YCl9YFxuICAgIH1cbiAgICB0aGlzLnd4Q2xvdWQgPSBvcHRpb25zLnd4Q2xvdWRcbiAgICB0cnkge1xuICAgICAgaWYgKGlzTXAoKSkge1xuICAgICAgICB0aGlzLnVzZVd4Q2xvdWQgPSBvcHRpb25zLnVzZVd4Q2xvdWRcbiAgICAgICAgaWYgKHRoaXMud3hDbG91ZCA9PT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuZW52KSB7XG4gICAgICAgICAgd3guY2xvdWQuaW5pdCh7IGVudjogb3B0aW9ucy5lbnYgfSlcbiAgICAgICAgICB0aGlzLnd4Q2xvdWQgPSB3eC5jbG91ZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vXG4gICAgfVxuICAgIHRoaXMucmVmcmVzaFRva2VuRnVuYyA9IG9wdGlvbnMucmVmcmVzaFRva2VuRnVuYyB8fCB0aGlzLmRlZmF1bHRSZWZyZXNoVG9rZW5GdW5jXG4gICAgdGhpcy5hbm9ueW1vdXNTaWduSW5GdW5jID0gb3B0aW9ucy5hbm9ueW1vdXNTaWduSW5GdW5jXG4gICAgdGhpcy5vbkNyZWRlbnRpYWxzRXJyb3IgPSBvcHRpb25zLm9uQ3JlZGVudGlhbHNFcnJvclxuXG4gICAgLy8gTmV3IG9wdGlvbnMgZm9yIHNlc3Npb24gZGV0ZWN0aW9uXG4gICAgdGhpcy5nZXRJbml0aWFsU2Vzc2lvbiA9IG9wdGlvbnMuZ2V0SW5pdGlhbFNlc3Npb25cbiAgICB0aGlzLm9uSW5pdGlhbFNlc3Npb25PYnRhaW5lZCA9IG9wdGlvbnMub25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkXG4gICAgdGhpcy5sb2dEZWJ1Z01lc3NhZ2VzID0gb3B0aW9ucy5kZWJ1ZyA/PyBmYWxzZVxuXG4gICAgbGFuZ0V2ZW50LmJ1cy5vbihsYW5nRXZlbnQuTEFOR19DSEFOR0VfRVZFTlQsIChwYXJhbXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5pMThuID0gcGFyYW1zLmRhdGE/LmkxOG4gfHwgdGhpcy5pMThuXG4gICAgfSlcblxuICAgIC8vIE5vdGU6IEF1dG8taW5pdGlhbGl6ZSBpcyBOT1QgY2FsbGVkIGhlcmUgdG8gYWxsb3cgQ2xvdWRiYXNlT0F1dGggdG8gc2V0IGdldEluaXRpYWxTZXNzaW9uIGZpcnN0XG4gICAgLy8gQ2xvdWRiYXNlT0F1dGguY29uc3RydWN0b3Igd2lsbCBjYWxsIGluaXRpYWxpemUoKSBhZnRlciBzZXR0aW5nIHVwIHRoZSBjYWxsYmFja1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGdldEluaXRpYWxTZXNzaW9uIGNhbGxiYWNrLlxuICAgKiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6ZSgpIHRvIGdldCB0aGUgaW5pdGlhbCBzZXNzaW9uIChlLmcuLCBmcm9tIE9BdXRoIGNhbGxiYWNrIGluIFVSTCkuXG4gICAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZ2V0IGluaXRpYWwgc2Vzc2lvblxuICAgKi9cbiAgcHVibGljIHNldEdldEluaXRpYWxTZXNzaW9uKGNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHtcbiAgICBkYXRhOiB7IHNlc3Npb246IENyZWRlbnRpYWxzOyB1c2VyPzogYW55IH0gfCBudWxsXG4gICAgZXJyb3I6IEVycm9yIHwgbnVsbFxuICB9PiwpOiB2b2lkIHtcbiAgICB0aGlzLmdldEluaXRpYWxTZXNzaW9uID0gY2FsbGJhY2tcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBvbkluaXRpYWxTZXNzaW9uT2J0YWluZWQgY2FsbGJhY2suXG4gICAqIFRoaXMgY2FsbGJhY2sgaXMgaW52b2tlZCBhZnRlciBpbml0aWFsIHNlc3Npb24gaXMgb2J0YWluZWQgYW5kIHN0b3JlZCxcbiAgICogYWxsb3dpbmcgdXBwZXIgbGF5ZXJzIHRvIGhhbmRsZSB1c2VyIGluZm8gc3RvcmFnZS5cbiAgICogQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgc2Vzc2lvbiBhbmQgdXNlciBkYXRhXG4gICAqL1xuICBwdWJsaWMgc2V0T25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkKGNhbGxiYWNrOiAoZGF0YTogeyBzZXNzaW9uOiBDcmVkZW50aWFsczsgdXNlcj86IGFueSB9KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPiwpOiB2b2lkIHtcbiAgICB0aGlzLm9uSW5pdGlhbFNlc3Npb25PYnRhaW5lZCA9IGNhbGxiYWNrXG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNsaWVudCBzZXNzaW9uIGVpdGhlciBmcm9tIHRoZSB1cmwgb3IgZnJvbSBzdG9yYWdlLlxuICAgKiBUaGlzIG1ldGhvZCBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZCB3aGVuIGluc3RhbnRpYXRpbmcgdGhlIGNsaWVudCB3aXRoIGRldGVjdFNlc3Npb25JblVybD10cnVlLFxuICAgKiBidXQgc2hvdWxkIGFsc28gYmUgY2FsbGVkIG1hbnVhbGx5IHdoZW4gY2hlY2tpbmcgZm9yIGFuIGVycm9yIGZyb20gYW4gYXV0aCByZWRpcmVjdC5cbiAgICogQHBhcmFtIG9uSW5pdGlhbFNlc3Npb25PYnRhaW5lZCBPcHRpb25hbCBjYWxsYmFjayB0byBzZXQgYmVmb3JlIGluaXRpYWxpemF0aW9uIHN0YXJ0c1xuICAgKi9cbiAgYXN5bmMgaW5pdGlhbGl6ZShmdW5jPzogUHJvbWlzZTx7IGVycm9yOiBFcnJvciB8IG51bGwgfT4pOiBQcm9taXNlPHsgZXJyb3I6IEVycm9yIHwgbnVsbCB9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1taXN1c2VkLXByb21pc2VzXG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZVByb21pc2UpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmluaXRpYWxpemVQcm9taXNlXG4gICAgfVxuXG4gICAgaWYgKGZ1bmMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pbml0aWFsaXplUHJvbWlzZSA9IGZ1bmNcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmluaXRpYWxpemVQcm9taXNlXG4gICAgfVxuXG4gICAgdGhpcy5pbml0aWFsaXplUHJvbWlzZSA9IChhc3luYyAoKSA9PiBhd2FpdCB0aGlzLl9hY3F1aXJlTG9jaygtMSwgYXN5bmMgKCkgPT4gYXdhaXQgdGhpcy5faW5pdGlhbGl6ZSgpKSkoKVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVByb21pc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBzZXRDcmVkZW50aWFscyBQcm92aWRlcyBhbiBhbHRlcm5hdGl2ZSBmZXRjaCBhcGkgcmVxdWVzdCBpbXBsZW1lbnRhdGlvbiB3aXRoIGF1dGggY3JlZGVudGlhbHNcbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHNcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRDcmVkZW50aWFscyhjcmVkZW50aWFscz86IENyZWRlbnRpYWxzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gSWYgaW5pdGlhbGl6YXRpb24gaXMgaW4gcHJvZ3Jlc3MsIHdhaXQgZm9yIGl0IGZpcnN0XG4gICAgYXdhaXQgdGhpcy5pbml0aWFsaXplUHJvbWlzZVxuICAgIHJldHVybiB0aGlzLl9hY3F1aXJlTG9jaygtMSwgYXN5bmMgKCkgPT4gdGhpcy5sb2NhbENyZWRlbnRpYWxzLnNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBzZXQgY3JlZGVudGlhbHMgZnJvbSBhY2Nlc3NLZXlcbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHNcbiAgICovXG4gIHB1YmxpYyBzZXRBY2Nlc3NLZXlDcmVkZW50aWFscyhjcmVkZW50aWFscz86IENyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHRoaXMubG9jYWxDcmVkZW50aWFscy5zZXRBY2Nlc3NLZXlDcmVkZW50aWFscyhjcmVkZW50aWFscylcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXRBY2Nlc3NUb2tlbiByZXR1cm4gYSB2YWxpZGF0ZSBhY2Nlc3MgdG9rZW5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRBY2Nlc3NUb2tlbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIC8vIElmIGluaXRpYWxpemF0aW9uIGlzIGluIHByb2dyZXNzLCB3YWl0IGZvciBpdCBmaXJzdFxuICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVByb21pc2VcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmdldENyZWRlbnRpYWxzKClcbiAgICAvLyBub2RlIHNkayDlnLrmma/kuIvnm7TmjqXov5Tlm55hY2Nlc3NfdG9rZW5cbiAgICBpZiAoY3JlZGVudGlhbHM/LnNjb3BlID09PSBERUZBVUxUX05PREVfQUNDRVNTX1NDT1BFKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNyZWRlbnRpYWxzLmFjY2Vzc190b2tlbilcbiAgICB9XG4gICAgaWYgKGNyZWRlbnRpYWxzPy5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY3JlZGVudGlhbHMuYWNjZXNzX3Rva2VuKVxuICAgIH1cbiAgICBjb25zdCByZXNwRXJyOiBSZXNwb25zZUVycm9yID0geyBlcnJvcjogRXJyb3JUeXBlLlVOQVVUSEVOVElDQVRFRCB9XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlc3BFcnIpXG4gIH1cblxuICAvKipcbiAgICogcmVxdWVzdCBodHRwIGxpa2Ugc2ltcGxlIGZldGNoIGFwaSwgZXhwOnJlcXVlc3QoJy92MS91c2VyL21lJywge3dpdGhDcmVkZW50aWFsczp0cnVlfSlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge0F1dGhDbGllbnRSZXF1ZXN0T3B0aW9uc30gb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlcXVlc3Q8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBBdXRoQ2xpZW50UmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgIH1cbiAgICBjb25zdCByZXRyeTogbnVtYmVyID0gdGhpcy5mb3JtYXRSZXRyeShvcHRpb25zLnJldHJ5LCB0aGlzLnJldHJ5KVxuICAgIG9wdGlvbnMuaGVhZGVycyA9IHsgLi4ub3B0aW9ucy5oZWFkZXJzLCBbdGhpcy5pMThuPy5MQU5HX0hFQURFUl9LRVldOiB0aGlzLmkxOG4/LmxhbmcgfVxuICAgIGlmICh0aGlzLmhlYWRlcnMpIHtcbiAgICAgIG9wdGlvbnMuaGVhZGVycyA9IHtcbiAgICAgICAgLi4udGhpcy5oZWFkZXJzLFxuICAgICAgICAuLi5vcHRpb25zLmhlYWRlcnMsXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5oZWFkZXJzW1JlcXVlc3RJZEhlYWRlck5hbWVdKSB7XG4gICAgICBvcHRpb25zLmhlYWRlcnNbUmVxdWVzdElkSGVhZGVyTmFtZV0gPSBnZW5lcmF0ZVJlcXVlc3RJZCgpXG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5oZWFkZXJzW0RldmljZUlkSGVhZGVyTmFtZV0pIHtcbiAgICAgIGNvbnN0IGRldmljZUlkID0gYXdhaXQgdGhpcy5nZXREZXZpY2VJZCgpXG4gICAgICBvcHRpb25zLmhlYWRlcnNbRGV2aWNlSWRIZWFkZXJOYW1lXSA9IGRldmljZUlkXG4gICAgfVxuICAgIGlmIChvcHRpb25zPy53aXRoQmFzaWNBdXRoICYmIHRoaXMuYmFzaWNBdXRoKSB7XG4gICAgICBvcHRpb25zLmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IHRoaXMuYmFzaWNBdXRoXG4gICAgfVxuICAgIGlmIChvcHRpb25zPy53aXRoQ3JlZGVudGlhbHMpIHtcbiAgICAgIC8vIFVzZSBjdXN0b20gZ2V0Q3JlZGVudGlhbHMgZnVuY3Rpb24gaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB1c2UgZGVmYXVsdFxuICAgICAgLy8gQ3VzdG9tIGdldENyZWRlbnRpYWxzIGF2b2lkcyBkZWZhdWx0IGdldENyZWRlbnRpYWxzKCkgY2FsbCB3aGljaCBtYXkgY2F1c2UgZGVhZGxvY2sgZHVyaW5nIGluaXRpYWxpemF0aW9uXG4gICAgICBjb25zdCBjcmVkZW50aWFscyA9IG9wdGlvbnMuZ2V0Q3JlZGVudGlhbHMgPyBhd2FpdCBvcHRpb25zLmdldENyZWRlbnRpYWxzKCkgOiBhd2FpdCB0aGlzLmdldENyZWRlbnRpYWxzKClcbiAgICAgIGlmIChjcmVkZW50aWFscykge1xuICAgICAgICBpZiAodGhpcy50b2tlbkluVVJMKSB7XG4gICAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPCAwKSB7XG4gICAgICAgICAgICB1cmwgKz0gJz8nXG4gICAgICAgICAgfVxuICAgICAgICAgIHVybCArPSBgYWNjZXNzX3Rva2VuPSR7Y3JlZGVudGlhbHMuYWNjZXNzX3Rva2VufWBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGAke2NyZWRlbnRpYWxzLnRva2VuX3R5cGV9ICR7Y3JlZGVudGlhbHMuYWNjZXNzX3Rva2VufWBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jbGllbnRJZCAmJiB1cmwuaW5kZXhPZignY2xpZW50X2lkJykgPCAwKSB7XG4gICAgICAgIHVybCArPSB1cmwuaW5kZXhPZignPycpIDwgMCA/ICc/JyA6ICcmJ1xuICAgICAgICB1cmwgKz0gYGNsaWVudF9pZD0ke3RoaXMuY2xpZW50SWR9YFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgdXJsID0gYCR7dGhpcy5hcGlPcmlnaW59JHt0aGlzLmFwaVBhdGh9JHt1cmx9YFxuICAgIH1cbiAgICBsZXQgcmVzcG9uc2U6IFQgfCBudWxsID0gbnVsbFxuICAgIGNvbnN0IG1heFJlcXVlc3RUaW1lczogbnVtYmVyID0gcmV0cnkgKyAxXG4gICAgZm9yIChsZXQgcmVxdWVzdFRpbWUgPSAwOyByZXF1ZXN0VGltZSA8IG1heFJlcXVlc3RUaW1lczsgcmVxdWVzdFRpbWUrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKG9wdGlvbnMudXNlV3hDbG91ZCB8fCB0aGlzLnVzZVd4Q2xvdWQpIHtcbiAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMud3hDbG91ZENhbGxGdW5jdGlvbjxUPih1cmwsIG9wdGlvbnMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmJhc2VSZXF1ZXN0PFQ+KHVybCwgb3B0aW9ucylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIShyZXNwb25zZSBhcyBhbnkpPy5jb2RlKSB7XG4gICAgICAgICAgdGhyb3cge1xuICAgICAgICAgICAgZXJyb3I6IChyZXNwb25zZSBhcyBhbnkpLmNvZGUsXG4gICAgICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogKHJlc3BvbnNlIGFzIGFueSkubWVzc2FnZSxcbiAgICAgICAgICAgIGVycm9yX3VyaTogbmV3IFVSTCh1cmwpLnBhdGhuYW1lLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGNhdGNoIChyZXNwb25zZUVycm9yKSB7XG4gICAgICAgIGlmIChvcHRpb25zLndpdGhDcmVkZW50aWFscyAmJiByZXNwb25zZUVycm9yICYmIHJlc3BvbnNlRXJyb3IuZXJyb3IgPT09IEVycm9yVHlwZS5VTkFVVEhFTlRJQ0FURUQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNldENyZWRlbnRpYWxzKG51bGwpXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlc3BvbnNlRXJyb3IpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxdWVzdFRpbWUgPT09IHJldHJ5IHx8ICFyZXNwb25zZUVycm9yIHx8IHJlc3BvbnNlRXJyb3IuZXJyb3IgIT09ICd1bnJlYWNoYWJsZScpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcG9uc2VFcnJvcilcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5zbGVlcChPQXV0aDJDbGllbnQucmV0cnlJbnRlcnZhbClcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgd3hDbG91ZENhbGxGdW5jdGlvbjxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gICAgbGV0IHJlc3VsdDogVCB8IG51bGwgPSBudWxsXG4gICAgbGV0IHJlc3BvbnNlRXJyb3I6IFJlc3BvbnNlRXJyb3IgfCBudWxsID0gbnVsbFxuICAgIHRyeSB7XG4gICAgICBsZXQgdXNlckFnZW50ID0gJydcbiAgICAgIHRyeSB7XG4gICAgICAgIHVzZXJBZ2VudCA9IGF3YWl0IHd4LmdldFJlbmRlcmVyVXNlckFnZW50KClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgY29uc3QgeyByZXN1bHQ6IHJlc3BvbnNlUmVzdWx0IH0gPSBhd2FpdCB0aGlzLnd4Q2xvdWQuY2FsbEZ1bmN0aW9uKHtcbiAgICAgICAgbmFtZTogJ2h0dHBPdmVyQ2FsbEZ1bmN0aW9uJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBtZXRob2Q6IG9wdGlvbnMubWV0aG9kLFxuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIG9yaWdpbjogJ2h0dHBzOi8vc2VydmljZXdlY2hhdC5jb20nLFxuICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiB1c2VyQWdlbnQsXG4gICAgICAgICAgICAuLi5vcHRpb25zLmhlYWRlcnMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBib2R5OiBvcHRpb25zLmJvZHksXG4gICAgICAgIH0sXG4gICAgICB9KVxuXG4gICAgICBpZiAocmVzcG9uc2VSZXN1bHQ/LmJvZHk/LmVycm9yX2NvZGUpIHtcbiAgICAgICAgcmVzcG9uc2VFcnJvciA9IHJlc3BvbnNlUmVzdWx0Py5ib2R5IGFzIFJlc3BvbnNlRXJyb3JcbiAgICAgICAgcmVzcG9uc2VFcnJvci5lcnJvcl91cmkgPSBnZXRQYXRoTmFtZSh1cmwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSByZXNwb25zZVJlc3VsdD8uYm9keSBhcyBUXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJlc3BvbnNlRXJyb3IgPSB7XG4gICAgICAgIGVycm9yOiBFcnJvclR5cGUuVU5SRUFDSEFCTEUsXG4gICAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICBlcnJvcl91cmk6IGdldFBhdGhOYW1lKHVybCksXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlRXJyb3IpIHtcbiAgICAgIHRocm93IHJlc3BvbnNlRXJyb3JcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3JlZGVudGlhbHMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Q3JlZGVudGlhbHMoKTogUHJvbWlzZTxDcmVkZW50aWFscyB8IG51bGw+IHtcbiAgICAvLyBJZiBpbml0aWFsaXphdGlvbiBpcyBpbiBwcm9ncmVzcywgd2FpdCBmb3IgaXQgZmlyc3RcbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemVQcm9taXNlXG5cbiAgICByZXR1cm4gdGhpcy5fYWNxdWlyZUxvY2soLTEsIGFzeW5jICgpID0+IHRoaXMuX2dldENyZWRlbnRpYWxzKCkpXG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQg5bqf5byD5o6l5Y+j77yM5Yu/55SoLiDlpoLpnIDojrflj5blh63or4Hkv6Hmga/or7fkvb/nlKggZ2V0Q3JlZGVudGlhbHMg5pa55rOVXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3JlZGVudGlhbHNTeW5jKCk6IENyZWRlbnRpYWxzIHwgbnVsbCB7XG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gdGhpcy5sb2NhbENyZWRlbnRpYWxzLmdldFN0b3JhZ2VDcmVkZW50aWFsc1N5bmMoKVxuICAgIHJldHVybiBjcmVkZW50aWFsc1xuICB9XG5cbiAgcHVibGljIGdldENyZWRlbnRpYWxzQXN5bmMoKTogUHJvbWlzZTxDcmVkZW50aWFscyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDcmVkZW50aWFscygpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuZ2V0Q3JlZGVudGlhbHMoKVxuICAgIGlmICghY3JlZGVudGlhbHMpIHtcbiAgICAgIGNvbnN0IG1zZyA9ICdjcmVkZW50aWFscyBub3QgZm91bmQnXG4gICAgICB0aGlzLm9uQ3JlZGVudGlhbHNFcnJvcj8uKHsgbXNnIH0pXG4gICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcihtc2cpXG4gICAgfVxuICAgIHJldHVybiBjcmVkZW50aWFscy5zY29wZVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEdyb3VwcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLmdldENyZWRlbnRpYWxzKClcbiAgICBpZiAoIWNyZWRlbnRpYWxzKSB7XG4gICAgICBjb25zdCBtc2cgPSAnY3JlZGVudGlhbHMgbm90IGZvdW5kJ1xuICAgICAgdGhpcy5vbkNyZWRlbnRpYWxzRXJyb3I/Lih7IG1zZyB9KVxuICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IobXNnKVxuICAgIH1cbiAgICByZXR1cm4gY3JlZGVudGlhbHMuZ3JvdXBzXG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaCBleHBpcmVkIHRva2VuLlxuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzPn1cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZWZyZXNoVG9rZW4oY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzLCBvcHRpb25zPzogeyB0aHJvd0Vycm9yPzogYm9vbGVhbiB9KTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIC8vIElmIGluaXRpYWxpemF0aW9uIGlzIGluIHByb2dyZXNzLCB3YWl0IGZvciBpdCBmaXJzdFxuICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVByb21pc2VcblxuICAgIHJldHVybiB0aGlzLl9hY3F1aXJlTG9jaygtMSwgYXN5bmMgKCkgPT4gdGhpcy5fcmVmcmVzaFRva2VuKGNyZWRlbnRpYWxzLCBvcHRpb25zKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCByZWZyZXNoIHRva2VuIG1ldGhvZCAoY2FsbGVkIHdpdGhpbiBsb2NrKVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBfcmVmcmVzaFRva2VuKGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscywgb3B0aW9ucz86IHsgdGhyb3dFcnJvcj86IGJvb2xlYW4gfSk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICByZXR1cm4gdGhpcy5zaW5nbGVQcm9taXNlLnJ1bignX3JlZnJlc2hUb2tlbicsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIG5vZGUgc2RrIOWcuuaZr+S4i+S4jemcgOimgeWIt+aWsCB0b2tlblxuICAgICAgaWYgKGNyZWRlbnRpYWxzPy5zY29wZSA9PT0gREVGQVVMVF9OT0RFX0FDQ0VTU19TQ09QRSkge1xuICAgICAgICByZXR1cm4gY3JlZGVudGlhbHNcbiAgICAgIH1cblxuICAgICAgaWYgKCFjcmVkZW50aWFscyB8fCAhY3JlZGVudGlhbHMucmVmcmVzaF90b2tlbikge1xuICAgICAgICBjb25zdCBtc2cgPSAnbm8gcmVmcmVzaCB0b2tlbiBmb3VuZCBpbiBjcmVkZW50aWFscydcbiAgICAgICAgdGhpcy5vbkNyZWRlbnRpYWxzRXJyb3I/Lih7IG1zZyB9KVxuICAgICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcihtc2cpXG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBuZXdDcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbkZ1bmMoY3JlZGVudGlhbHMucmVmcmVzaF90b2tlbiwgY3JlZGVudGlhbHMpXG4gICAgICAgIGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5zZXRDcmVkZW50aWFscyhuZXdDcmVkZW50aWFscylcblxuICAgICAgICB0aGlzLmV2ZW50QnVzPy5maXJlKEVWRU5UUy5BVVRIX1NUQVRFX0NIQU5HRUQsIHsgZXZlbnQ6IEFVVEhfU1RBVEVfQ0hBTkdFRF9UWVBFLlRPS0VOX1JFRlJFU0hFRCB9KVxuXG4gICAgICAgIHJldHVybiBuZXdDcmVkZW50aWFsc1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKG9wdGlvbnM/LnRocm93RXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvci5lcnJvciA9PT0gRXJyb3JUeXBlLklOVkFMSURfR1JBTlQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuc2V0Q3JlZGVudGlhbHMobnVsbClcbiAgICAgICAgICBjb25zdCBtc2cgPSBlcnJvci5lcnJvcl9kZXNjcmlwdGlvblxuICAgICAgICAgIHRoaXMub25DcmVkZW50aWFsc0Vycm9yPy4oeyBtc2cgfSlcbiAgICAgICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcihtc2cpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkNyZWRlbnRpYWxzRXJyb3I/Lih7IG1zZzogZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24gfSlcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFub255bW91c0xvZ2luKGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscykge1xuICAgIHJldHVybiB0aGlzLnNpbmdsZVByb21pc2UucnVuKCdfYW5vbnltb3VzTG9naW4nLCBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hbm9ueW1vdXNTaWduSW5GdW5jKSB7XG4gICAgICAgIGNvbnN0IGMgPSBhd2FpdCB0aGlzLmFub255bW91c1NpZ25JbkZ1bmMoY3JlZGVudGlhbHMpXG4gICAgICAgIGNyZWRlbnRpYWxzID0gYyB8fCAoYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLmdldENyZWRlbnRpYWxzKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuYW5vbnltb3VzU2lnbkluKGNyZWRlbnRpYWxzKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY3JlZGVudGlhbHNcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHJldHJ5IHZhbHVlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gcmV0cnlcbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja1JldHJ5KHJldHJ5OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCByZXNwb25zZUVycm9yOiBSZXNwb25zZUVycm9yIHwgbnVsbCA9IG51bGxcbiAgICBpZiAodHlwZW9mIHJldHJ5ICE9PSAnbnVtYmVyJyB8fCByZXRyeSA8IE9BdXRoMkNsaWVudC5taW5SZXRyeSB8fCByZXRyeSA+IE9BdXRoMkNsaWVudC5tYXhSZXRyeSkge1xuICAgICAgcmVzcG9uc2VFcnJvciA9IHtcbiAgICAgICAgZXJyb3I6IEVycm9yVHlwZS5VTlJFQUNIQUJMRSxcbiAgICAgICAgZXJyb3JfZGVzY3JpcHRpb246ICd3cm9uZyBvcHRpb25zIHBhcmFtOiByZXRyeScsXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChyZXNwb25zZUVycm9yKSB7XG4gICAgICB0aHJvdyByZXNwb25zZUVycm9yXG4gICAgfVxuICAgIHJldHVybiByZXRyeVxuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCByZXRyeSB2YWx1ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHJldHJ5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkZWZhdWx0VmFsZVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBwcml2YXRlIGZvcm1hdFJldHJ5KHJldHJ5OiBudW1iZXIsIGRlZmF1bHRWYWxlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh0eXBlb2YgcmV0cnkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbGVcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tSZXRyeShyZXRyeSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTbGVlcC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG1zXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKClcbiAgICAgIH0sIG1zKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogYW5vbnltb3VzIHNpZ25JblxuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzPn1cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgYW5vbnltb3VzU2lnbkluKGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICByZXR1cm4gdGhpcy5zaW5nbGVQcm9taXNlLnJ1bignX2Fub255bW91cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghY3JlZGVudGlhbHMgfHwgY3JlZGVudGlhbHMuc2NvcGUgIT09ICdhbm9ueW1vdXMnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKCdubyBhbm9ueW1vdXMgaW4gY3JlZGVudGlhbHMnKVxuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbmV3Q3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5yZXF1ZXN0KEFwaVVybHMuQVVUSF9TSUdOX0lOX0FOT05ZTU9VU0xZX1VSTCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIHdpdGhCYXNpY0F1dGg6IHRydWUsXG4gICAgICAgICAgYm9keToge30sXG4gICAgICAgIH0pXG4gICAgICAgIGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5zZXRDcmVkZW50aWFscyhuZXdDcmVkZW50aWFscylcbiAgICAgICAgcmV0dXJuIG5ld0NyZWRlbnRpYWxzXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IuZXJyb3IgPT09IEVycm9yVHlwZS5JTlZBTElEX0dSQU5UKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLnNldENyZWRlbnRpYWxzKG51bGwpXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IoZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogRGVmYXVsdCByZWZyZXNoIHRva2VuIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmcmVzaFRva2VuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBkZWZhdWx0UmVmcmVzaFRva2VuRnVuYyhyZWZyZXNoVG9rZW4/OiBzdHJpbmcsIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHMpOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgaWYgKHJlZnJlc2hUb2tlbiA9PT0gdW5kZWZpbmVkIHx8IHJlZnJlc2hUb2tlbiA9PT0gJycpIHtcbiAgICAgIGNvbnN0IG1zZyA9ICdyZWZyZXNoIHRva2VuIG5vdCBmb3VuZCdcbiAgICAgIHRoaXMub25DcmVkZW50aWFsc0Vycm9yPy4oeyBtc2cgfSlcbiAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKG1zZylcbiAgICB9XG5cbiAgICBsZXQgdXJsOiBzdHJpbmcgPSBBcGlVcmxzLkFVVEhfVE9LRU5fVVJMXG5cbiAgICBpZiAoY3JlZGVudGlhbHM/LnZlcnNpb24gPT09ICd2MicpIHtcbiAgICAgIHVybCA9IEFwaVVybHNWMi5BVVRIX1RPS0VOX1VSTFxuICAgIH1cblxuICAgIGNvbnN0IG5ld0NyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMucmVxdWVzdCh1cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keToge1xuICAgICAgICBjbGllbnRfaWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICAgIGNsaWVudF9zZWNyZXQ6IHRoaXMuY2xpZW50U2VjcmV0LFxuICAgICAgICBncmFudF90eXBlOiAncmVmcmVzaF90b2tlbicsXG4gICAgICAgIHJlZnJlc2hfdG9rZW46IHJlZnJlc2hUb2tlbixcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIHJldHVybiB7IC4uLm5ld0NyZWRlbnRpYWxzLCB2ZXJzaW9uOiBjcmVkZW50aWFscz8udmVyc2lvbiB8fCAndjEnIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGV2aWNlSWRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ2V0RGV2aWNlSWQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAodGhpcy5kZXZpY2VJRCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGV2aWNlSURcbiAgICB9XG4gICAgbGV0IGRldmljZUlkOiBzdHJpbmcgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShEZXZpY2VJZFNlY3Rpb25OYW1lKVxuICAgIGlmICghKHR5cGVvZiBkZXZpY2VJZCA9PT0gJ3N0cmluZycgJiYgZGV2aWNlSWQubGVuZ3RoID49IDE2ICYmIGRldmljZUlkLmxlbmd0aCA8PSA0OCkpIHtcbiAgICAgIGRldmljZUlkID0gdXVpZHY0KClcbiAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXRJdGVtKERldmljZUlkU2VjdGlvbk5hbWUsIGRldmljZUlkKVxuICAgIH1cbiAgICB0aGlzLmRldmljZUlEID0gZGV2aWNlSWRcbiAgICByZXR1cm4gZGV2aWNlSWRcbiAgfVxuICAvKipcbiAgICogR2VuZXJhdGUgdW5BdXRoZW50aWNhdGVkIGVycm9yLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXJyXG4gICAqIEByZXR1cm4ge1Byb21pc2U8VD59XG4gICAqL1xuICBwcml2YXRlIHVuQXV0aGVudGljYXRlZEVycm9yPFQ+KGVycj86IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHJlc3BFcnI6IFJlc3BvbnNlRXJyb3IgPSB7XG4gICAgICBlcnJvcjogRXJyb3JUeXBlLlVOQVVUSEVOVElDQVRFRCxcbiAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiBlcnIsXG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZXNwRXJyKVxuICB9XG5cbiAgLyoqXG4gICAqIERlYnVnIGxvZ2dpbmcgaGVscGVyXG4gICAqL1xuICBwcml2YXRlIF9kZWJ1ZyguLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvZ0RlYnVnTWVzc2FnZXMpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbT0F1dGgyQ2xpZW50XScsIC4uLmFyZ3MpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElNUE9SVEFOVDpcbiAgICogMS4gTmV2ZXIgdGhyb3cgaW4gdGhpcyBtZXRob2QsIGFzIGl0IGlzIGNhbGxlZCBmcm9tIHRoZSBjb25zdHJ1Y3RvclxuICAgKiAyLiBOZXZlciByZXR1cm4gYSBzZXNzaW9uIGZyb20gdGhpcyBtZXRob2QgYXMgaXQgd291bGQgYmUgY2FjaGVkIG92ZXJcbiAgICogICAgdGhlIHdob2xlIGxpZmV0aW1lIG9mIHRoZSBjbGllbnRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX2luaXRpYWxpemUoKTogUHJvbWlzZTx7IGVycm9yOiBFcnJvciB8IG51bGwgfT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBJZiBubyBnZXRJbml0aWFsU2Vzc2lvbiBjYWxsYmFjayBpcyBzZXQsIG5vdGhpbmcgdG8gZG9cbiAgICAgIGlmICghdGhpcy5nZXRJbml0aWFsU2Vzc2lvbikge1xuICAgICAgICB0aGlzLl9kZWJ1ZygnI19pbml0aWFsaXplKCknLCAnbm8gZ2V0SW5pdGlhbFNlc3Npb24gY2FsbGJhY2sgc2V0LCBza2lwcGluZycpXG4gICAgICAgIHJldHVybiB7IGVycm9yOiBudWxsIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fZGVidWcoJyNfaW5pdGlhbGl6ZSgpJywgJ2NhbGxpbmcgZ2V0SW5pdGlhbFNlc3Npb24gY2FsbGJhY2snKVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGRhdGEsIGVycm9yIH0gPSBhd2FpdCB0aGlzLmdldEluaXRpYWxTZXNzaW9uKClcblxuICAgICAgICBpZiAoZGF0YT8uc2Vzc2lvbikge1xuICAgICAgICAgIHRoaXMuX2RlYnVnKCcjX2luaXRpYWxpemUoKScsICdzZXNzaW9uIG9idGFpbmVkIGZyb20gZ2V0SW5pdGlhbFNlc3Npb24nLCBkYXRhLnNlc3Npb24pXG4gICAgICAgICAgYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLnNldENyZWRlbnRpYWxzKGRhdGE/LnNlc3Npb24pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbnZva2UgY2FsbGJhY2sgZm9yIHVwcGVyIGxheWVyIHRvIGhhbmRsZSB1c2VyIHN0b3JhZ2VcbiAgICAgICAgLy8gVGhpcyBpcyBjYWxsZWQgQkVGT1JFIGxvY2sgaXMgcmVsZWFzZWQgc28gdXNlciBzdG9yYWdlIGlzIGF0b21pYyB3aXRoIHNlc3Npb25cbiAgICAgICAgaWYgKHRoaXMub25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkKSB7XG4gICAgICAgICAgdGhpcy5fZGVidWcoJyNfaW5pdGlhbGl6ZSgpJywgJ2NhbGxpbmcgb25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkIGNhbGxiYWNrJylcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5vbkluaXRpYWxTZXNzaW9uT2J0YWluZWQoZGF0YSwgZXJyb3IpXG4gICAgICAgICAgfSBjYXRjaCAoY2FsbGJhY2tFcnJvcikge1xuICAgICAgICAgICAgdGhpcy5fZGVidWcoJyNfaW5pdGlhbGl6ZSgpJywgJ2Vycm9yIGluIG9uSW5pdGlhbFNlc3Npb25PYnRhaW5lZCcsIGNhbGxiYWNrRXJyb3IpXG4gICAgICAgICAgICAvLyBEb24ndCBmYWlsIGluaXRpYWxpemF0aW9uIGlmIGNhbGxiYWNrIGZhaWxzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHRoaXMuX2RlYnVnKCcjX2luaXRpYWxpemUoKScsICdlcnJvciBmcm9tIGdldEluaXRpYWxTZXNzaW9uJywgZXJyb3IpXG4gICAgICAgICAgcmV0dXJuIHsgZXJyb3IgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IG51bGwgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMuX2RlYnVnKCcjX2luaXRpYWxpemUoKScsICdleGNlcHRpb24gZHVyaW5nIGdldEluaXRpYWxTZXNzaW9uJywgZXJyKVxuICAgICAgICByZXR1cm4geyBlcnJvcjogZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5fZGVidWcoJyNfaW5pdGlhbGl6ZSgpJywgJ3VuZXhwZWN0ZWQgZXJyb3InLCBlcnJvcilcbiAgICAgIHJldHVybiB7IGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSkgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9kZWJ1ZygnI19pbml0aWFsaXplKCknLCAnZW5kJylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWNxdWlyZXMgYSBnbG9iYWwgbG9jayBiYXNlZCBvbiB0aGUgY2xpZW50IElELlxuICAgKiBUaGlzIGVuc3VyZXMgdGhhdCBvbmx5IG9uZSBvcGVyYXRpb24gY2FuIG1vZGlmeSBjcmVkZW50aWFscyBhdCBhIHRpbWUuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9hY3F1aXJlTG9jazxSPihhY3F1aXJlVGltZW91dDogbnVtYmVyLCBmbjogKCkgPT4gUHJvbWlzZTxSPik6IFByb21pc2U8Uj4ge1xuICAgIHRoaXMuX2RlYnVnKCcjX2FjcXVpcmVMb2NrJywgJ2JlZ2luJywgYWNxdWlyZVRpbWVvdXQpXG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMubG9ja0FjcXVpcmVkKSB7XG4gICAgICAgIC8vIExvY2sgaXMgYWxyZWFkeSBhY3F1aXJlZCwgcXVldWUgdGhlIG9wZXJhdGlvblxuICAgICAgICBjb25zdCBsYXN0ID0gdGhpcy5wZW5kaW5nSW5Mb2NrLmxlbmd0aCA/IHRoaXMucGVuZGluZ0luTG9ja1t0aGlzLnBlbmRpbmdJbkxvY2subGVuZ3RoIC0gMV0gOiBQcm9taXNlLnJlc29sdmUoKVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgbGFzdFxuICAgICAgICAgIHJldHVybiBhd2FpdCBmbigpXG4gICAgICAgIH0pKClcblxuICAgICAgICB0aGlzLnBlbmRpbmdJbkxvY2sucHVzaCgoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCByZXN1bHRcbiAgICAgICAgICB9IGNhdGNoIChfZTogYW55KSB7XG4gICAgICAgICAgICAvLyB3ZSBqdXN0IGNhcmUgaWYgaXQgZmluaXNoZWRcbiAgICAgICAgICB9XG4gICAgICAgIH0pKCksKVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgLy8gQWNxdWlyZSB0aGUgbG9ja1xuICAgICAgdGhpcy5fZGVidWcoJyNfYWNxdWlyZUxvY2snLCAnYWNxdWlyaW5nIGxvY2sgZm9yIGNsaWVudCcsIHRoaXMuY2xpZW50SWQpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMubG9ja0FjcXVpcmVkID0gdHJ1ZVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZuKClcblxuICAgICAgICB0aGlzLnBlbmRpbmdJbkxvY2sucHVzaCgoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCByZXN1bHRcbiAgICAgICAgICB9IGNhdGNoIChfZTogYW55KSB7XG4gICAgICAgICAgICAvLyB3ZSBqdXN0IGNhcmUgaWYgaXQgZmluaXNoZWRcbiAgICAgICAgICB9XG4gICAgICAgIH0pKCksKVxuXG4gICAgICAgIGF3YWl0IHJlc3VsdFxuXG4gICAgICAgIC8vIGtlZXAgZHJhaW5pbmcgdGhlIHF1ZXVlIHVudGlsIHRoZXJlJ3Mgbm90aGluZyB0byB3YWl0IG9uXG4gICAgICAgIHdoaWxlICh0aGlzLnBlbmRpbmdJbkxvY2subGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3Qgd2FpdE9uID0gWy4uLnRoaXMucGVuZGluZ0luTG9ja11cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbCh3YWl0T24pXG4gICAgICAgICAgdGhpcy5wZW5kaW5nSW5Mb2NrLnNwbGljZSgwLCB3YWl0T24ubGVuZ3RoKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3VsdFxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5fZGVidWcoJyNfYWNxdWlyZUxvY2snLCAncmVsZWFzaW5nIGxvY2sgZm9yIGNsaWVudCcsIHRoaXMuY2xpZW50SWQpXG4gICAgICAgIHRoaXMubG9ja0FjcXVpcmVkID0gZmFsc2VcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fZGVidWcoJyNfYWNxdWlyZUxvY2snLCAnZW5kJylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHRvIGdldCBjcmVkZW50aWFscyAoY2FsbGVkIHdpdGhpbiBsb2NrKVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBfZ2V0Q3JlZGVudGlhbHMoKTogUHJvbWlzZTxDcmVkZW50aWFscyB8IG51bGw+IHtcbiAgICBsZXQgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLmdldENyZWRlbnRpYWxzKClcbiAgICAvLyBub2RlIGFkYXB0ZXIg5Zy65pmv5LiL77yMc2NvcGUg5Li6IERFRkFVTFRfTk9ERV9BQ0NFU1NfU0NPUEXvvIzkuI3pnIDopoHliLfmlrAgdG9rZW5cbiAgICBpZiAoY3JlZGVudGlhbHMuc2NvcGUgPT09IERFRkFVTFRfTk9ERV9BQ0NFU1NfU0NPUEUpIHtcbiAgICAgIHJldHVybiBjcmVkZW50aWFsc1xuICAgIH1cbiAgICBpZiAoIWNyZWRlbnRpYWxzKSB7XG4gICAgICBjb25zdCBtc2cgPSAnY3JlZGVudGlhbHMgbm90IGZvdW5kJ1xuICAgICAgdGhpcy5vbkNyZWRlbnRpYWxzRXJyb3I/Lih7IG1zZyB9KVxuICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IobXNnKVxuICAgIH1cbiAgICBpZiAoaXNDcmVkZW50aWFsc0V4cGlyZWQoY3JlZGVudGlhbHMpKSB7XG4gICAgICBpZiAoY3JlZGVudGlhbHMucmVmcmVzaF90b2tlbikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5fcmVmcmVzaFRva2VuKGNyZWRlbnRpYWxzKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGlmIChjcmVkZW50aWFscy5zY29wZSA9PT0gJ2Fub255bW91cycpIHtcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5hbm9ueW1vdXNMb2dpbihjcmVkZW50aWFscylcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkNyZWRlbnRpYWxzRXJyb3I/Lih7IG1zZzogZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24gfSlcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcilcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY3JlZGVudGlhbHMuc2NvcGUgPT09ICdhbm9ueW1vdXMnKSB7XG4gICAgICAgIGNyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5hbm9ueW1vdXNMb2dpbihjcmVkZW50aWFscylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1zZyA9ICdubyByZWZyZXNoIHRva2VuIGZvdW5kIGluIGNyZWRlbnRpYWxzJ1xuICAgICAgICB0aGlzLm9uQ3JlZGVudGlhbHNFcnJvcj8uKHsgbXNnIH0pXG4gICAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKG1zZylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gIH1cbn1cbiJdfQ==
|
|
1174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29hdXRoMmNsaWVudC9vYXV0aDJjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBb0M7QUFDcEMseUNBT3VCO0FBYXZCLHNDQUFzQztBQUN0Qyx3Q0FBNEM7QUFFNUMsbUVBQWdFO0FBQ2hFLDBDQUF3QztBQUN4QyxrQ0FBa0M7QUFHbEMsa0RBQWdEO0FBRWhELElBQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFBO0FBQzFDLElBQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFBO0FBQ3hDLElBQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFBO0FBV2hDLElBQU0sY0FBYyxHQUFvQixVQUFtQixHQUFXLEVBQUUsT0FBd0I7Ozs7OztvQkFDakcsTUFBTSxHQUFhLElBQUksQ0FBQTtvQkFDdkIsYUFBYSxHQUF5QixJQUFJLENBQUE7Ozs7b0JBR3RDLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQTtvQkFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7d0JBQ3ZCLFdBQVcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO3FCQUMzQjtvQkFDRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUksT0FBTyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTt3QkFDNUQsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtxQkFDcEQ7b0JBQ2dDLFdBQU0sS0FBSyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsRUFBQTs7b0JBQXhELGNBQWMsR0FBYSxTQUE2QjtvQkFDekMsV0FBTSxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUE7O29C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QUFNLENBQUMsT0FBSyxDQUFDLEVBQUE7Ozs7NkJBR3ZCLENBQUEsV0FBVyxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUEsRUFBakMsZUFBaUM7d0JBQzVCLFdBQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBQTs7d0JBQXBELFdBQVcsR0FBRyxTQUFzQyxDQUFBOzs7d0JBRTlDLEdBQUcsR0FBRyx1Q0FBdUMsQ0FBQTt3QkFDbkQsTUFBQSxJQUFJLENBQUMsa0JBQWtCLHFEQUFHLEVBQUUsR0FBRyxLQUFBLEVBQUUsQ0FBQyxDQUFBO3dCQUNsQyxXQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBQTs2QkFHekMsV0FBTyxXQUFXLEVBQUE7Ozs7S0FDbkI7SUE1c0JjLHlCQUFZLEdBQUcsQ0FBQyxBQUFKLENBQUk7SUFDaEIscUJBQVEsR0FBRyxDQUFDLEFBQUosQ0FBSTtJQUNaLHFCQUFRLEdBQUcsQ0FBQyxBQUFKLENBQUk7SUFDWiwwQkFBYSxHQUFHLElBQUksQUFBUCxDQUFPO0lBMHNCckMsbUJBQUM7Q0FBQSxBQTlzQkQsSUE4c0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JUeXBlIH0gZnJvbSAnLi9jb25zdHMnXG5pbXBvcnQge1xuICBBcGlVcmxzLFxuICBBcGlVcmxzVjIsXG4gIEFVVEhfQVBJX1BSRUZJWCxcbiAgQVVUSF9TVEFURV9DSEFOR0VEX1RZUEUsXG4gIERFRkFVTFRfTk9ERV9BQ0NFU1NfU0NPUEUsXG4gIEVWRU5UUyxcbn0gZnJvbSAnLi4vYXV0aC9jb25zdHMnXG5cbmltcG9ydCB7IEF1dGhDbGllbnQsIFNpbXBsZVN0b3JhZ2UgfSBmcm9tICcuL2ludGVyZmFjZSdcblxuaW1wb3J0IHtcbiAgQ3JlZGVudGlhbHMsXG4gIFJlc3BvbnNlRXJyb3IsXG4gIFJlcXVlc3RPcHRpb25zLFxuICBSZXF1ZXN0RnVuY3Rpb24sXG4gIE9BdXRoMkNsaWVudE9wdGlvbnMsXG4gIEF1dGhDbGllbnRSZXF1ZXN0T3B0aW9ucyxcbn0gZnJvbSAnLi9tb2RlbHMnXG5cbmltcG9ydCB7IHV1aWR2NCB9IGZyb20gJy4uL3V0aWxzL3V1aWQnXG5pbXBvcnQgeyBnZXRQYXRoTmFtZSB9IGZyb20gJy4uL3V0aWxzL2luZGV4J1xuXG5pbXBvcnQgeyBTaW5nbGVQcm9taXNlIH0gZnJvbSAnLi4vdXRpbHMvZnVuY3Rpb24vc2luZ2xlLXByb21pc2UnXG5pbXBvcnQgeyB3ZUJ0b2EgfSBmcm9tICcuLi91dGlscy9iYXNlNjQnXG5pbXBvcnQgeyBpc01wIH0gZnJvbSAnLi4vdXRpbHMvbXAnXG5pbXBvcnQgeyBBdXRoT3B0aW9ucyB9IGZyb20gJy4uL2F1dGgvYXBpcydcbmltcG9ydCB7IElDbG91ZGJhc2VDb25maWcgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgbGFuZ0V2ZW50IH0gZnJvbSAnQGNsb3VkYmFzZS91dGlsaXRpZXMnXG5cbmNvbnN0IFJlcXVlc3RJZEhlYWRlck5hbWUgPSAneC1yZXF1ZXN0LWlkJ1xuY29uc3QgRGV2aWNlSWRIZWFkZXJOYW1lID0gJ3gtZGV2aWNlLWlkJ1xuY29uc3QgRGV2aWNlSWRTZWN0aW9uTmFtZSA9ICdkZXZpY2VfaWQnXG5cbmRlY2xhcmUgY29uc3Qgd3g6IGFueVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvUmVzcG9uc2VFcnJvck9wdGlvbnMge1xuICBlcnJvcj86IEVycm9yVHlwZVxuICBlcnJvcl9kZXNjcmlwdGlvbj86IHN0cmluZyB8IG51bGxcbiAgZXJyb3JfdXJpPzogc3RyaW5nIHwgbnVsbFxuICBkZXRhaWxzPzogYW55IHwgbnVsbFxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFJlcXVlc3Q6IFJlcXVlc3RGdW5jdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gIGxldCByZXN1bHQ6IFQgfCBudWxsID0gbnVsbFxuICBsZXQgcmVzcG9uc2VFcnJvcjogUmVzcG9uc2VFcnJvciB8IG51bGwgPSBudWxsXG4gIHRyeSB7XG4gICAgLy8gT2JqZWN0cyBtdXN0IGJlIGNvcGllZCB0byBwcmV2ZW50IG1vZGlmaWNhdGlvbiBvZiBkYXRhIHN1Y2ggYXMgYm9keS5cbiAgICBjb25zdCBjb3B5T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpXG4gICAgaWYgKCFjb3B5T3B0aW9ucy5tZXRob2QpIHtcbiAgICAgIGNvcHlPcHRpb25zLm1ldGhvZCA9ICdHRVQnXG4gICAgfVxuICAgIGlmIChjb3B5T3B0aW9ucy5ib2R5ICYmIHR5cGVvZiBjb3B5T3B0aW9ucy5ib2R5ICE9PSAnc3RyaW5nJykge1xuICAgICAgY29weU9wdGlvbnMuYm9keSA9IEpTT04uc3RyaW5naWZ5KGNvcHlPcHRpb25zLmJvZHkpXG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlUmVzdWx0OiBSZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgY29weU9wdGlvbnMpXG4gICAgY29uc3QganNvblJlc3BvbnNlID0gYXdhaXQgcmVzcG9uc2VSZXN1bHQuanNvbigpXG4gICAgaWYgKGpzb25SZXNwb25zZT8uZXJyb3IpIHtcbiAgICAgIHJlc3BvbnNlRXJyb3IgPSBqc29uUmVzcG9uc2UgYXMgUmVzcG9uc2VFcnJvclxuICAgICAgcmVzcG9uc2VFcnJvci5lcnJvcl91cmkgPSBuZXcgVVJMKHVybCkucGF0aG5hbWVcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0ganNvblJlc3BvbnNlIGFzIFRcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVzcG9uc2VFcnJvciA9IHtcbiAgICAgIGVycm9yOiBFcnJvclR5cGUuVU5SRUFDSEFCTEUsXG4gICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZSxcbiAgICAgIGVycm9yX3VyaTogbmV3IFVSTCh1cmwpLnBhdGhuYW1lLFxuICAgIH1cbiAgfVxuICBpZiAocmVzcG9uc2VFcnJvcikge1xuICAgIHRocm93IHJlc3BvbnNlRXJyb3JcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHRvUmVzcG9uc2VFcnJvciA9IChlcnJvcjogUmVzcG9uc2VFcnJvciB8IEVycm9yLCBvcHRpb25zPzogVG9SZXNwb25zZUVycm9yT3B0aW9ucyk6IFJlc3BvbnNlRXJyb3IgPT4ge1xuICBsZXQgcmVzcG9uc2VFcnJvcjogUmVzcG9uc2VFcnJvclxuICBjb25zdCBmb3JtYXRPcHRpb25zOiBUb1Jlc3BvbnNlRXJyb3JPcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHJlc3BvbnNlRXJyb3IgPSB7XG4gICAgICBlcnJvcjogZm9ybWF0T3B0aW9ucy5lcnJvciB8fCBFcnJvclR5cGUuTE9DQUwsXG4gICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZm9ybWF0T3B0aW9ucy5lcnJvcl9kZXNjcmlwdGlvbiB8fCBlcnJvci5tZXNzYWdlLFxuICAgICAgZXJyb3JfdXJpOiBmb3JtYXRPcHRpb25zLmVycm9yX3VyaSxcbiAgICAgIGRldGFpbHM6IGZvcm1hdE9wdGlvbnMuZGV0YWlscyB8fCBlcnJvci5zdGFjayxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZm9ybWF0RXJyb3I6IFRvUmVzcG9uc2VFcnJvck9wdGlvbnMgPSBlcnJvciB8fCB7fVxuICAgIHJlc3BvbnNlRXJyb3IgPSB7XG4gICAgICBlcnJvcjogZm9ybWF0T3B0aW9ucy5lcnJvciB8fCBmb3JtYXRFcnJvci5lcnJvciB8fCBFcnJvclR5cGUuTE9DQUwsXG4gICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZm9ybWF0T3B0aW9ucy5lcnJvcl9kZXNjcmlwdGlvbiB8fCBmb3JtYXRFcnJvci5lcnJvcl9kZXNjcmlwdGlvbixcbiAgICAgIGVycm9yX3VyaTogZm9ybWF0T3B0aW9ucy5lcnJvcl91cmkgfHwgZm9ybWF0RXJyb3IuZXJyb3JfdXJpLFxuICAgICAgZGV0YWlsczogZm9ybWF0T3B0aW9ucy5kZXRhaWxzIHx8IGZvcm1hdEVycm9yLmRldGFpbHMsXG4gICAgfVxuICB9XG4gIHJldHVybiByZXNwb25zZUVycm9yXG59XG5cbi8qKlxuICogR2VuZXJhdGUgcmVxdWVzdCBpZC5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUmVxdWVzdElkKCk6IHN0cmluZyB7XG4gIHJldHVybiB1dWlkdjQoKVxufVxuXG4vKipcbiAqIERlZmF1bHQgU3RvcmFnZS5cbiAqL1xuY2xhc3MgRGVmYXVsdFN0b3JhZ2UgaW1wbGVtZW50cyBTaW1wbGVTdG9yYWdlIHtcbiAgLyoqXG4gICAqIOe8k+WtmGtleee7n+S4gOS9v+eUqOWQjue8gOWMuuWIhlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICBwcml2YXRlIHJlYWRvbmx5IF9lbnY6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM/OiB7IGVudjogc3RyaW5nIH0pIHtcbiAgICB0aGlzLl9lbnYgPSBvcHRzPy5lbnYgfHwgJydcbiAgfVxuICAvKipcbiAgICogR2V0IGl0ZW0uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICovXG4gIGFzeW5jIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGAke2tleX0ke3RoaXMuX2Vudn1gKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBpdGVtLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqL1xuICBhc3luYyByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke2tleX0ke3RoaXMuX2Vudn1gKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBpdGVtLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKi9cbiAgYXN5bmMgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShgJHtrZXl9JHt0aGlzLl9lbnZ9YCwgdmFsdWUpXG4gIH1cblxuICAvKipcbiAgICogR2V0IGl0ZW0gc3luYy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKi9cbiAgZ2V0SXRlbVN5bmMoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGAke2tleX0ke3RoaXMuX2Vudn1gKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBpdGVtIHN5bmMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICovXG4gIHJlbW92ZUl0ZW1TeW5jKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke2tleX0ke3RoaXMuX2Vudn1gKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBpdGVtIHN5bmMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAqL1xuICBzZXRJdGVtU3luYyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShgJHtrZXl9JHt0aGlzLl9lbnZ9YCwgdmFsdWUpXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRTdG9yYWdlID0gbmV3IERlZmF1bHRTdG9yYWdlKClcblxuaW50ZXJmYWNlIExvY2FsQ3JlZGVudGlhbHNPcHRpb25zIHtcbiAgdG9rZW5TZWN0aW9uTmFtZTogc3RyaW5nXG4gIHN0b3JhZ2U6IFNpbXBsZVN0b3JhZ2VcbiAgY2xpZW50SWQ6IHN0cmluZ1xuICBjcmVkZW50aWFscz86IENyZWRlbnRpYWxzXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgY3JlZGVudGlhbHMgaXMgZXhwaXJlZC5cbiAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc0NyZWRlbnRpYWxzRXhwaXJlZChjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpOiBib29sZWFuIHtcbiAgbGV0IGlzRXhwaXJlZCA9IHRydWVcbiAgaWYgKGNyZWRlbnRpYWxzPy5leHBpcmVzX2F0ICYmIGNyZWRlbnRpYWxzPy5hY2Nlc3NfdG9rZW4pIHtcbiAgICBpc0V4cGlyZWQgPSBjcmVkZW50aWFscy5leHBpcmVzX2F0IDwgbmV3IERhdGUoKVxuICB9XG4gIHJldHVybiBpc0V4cGlyZWRcbn1cblxuLyoqXG4gKiBMb2NhbCBjcmVkZW50aWFscy5cbiAqIExvY2FsIGNyZWRlbnRpYWxzLCB3aXRoIG1lbW9yeSBjYWNoZSBhbmQgc3RvcmFnZSBjYWNoZS5cbiAqIElmIHRoZSBtZW1vcnkgY2FjaGUgZXhwaXJlcywgdGhlIHN0b3JhZ2UgY2FjaGUgaXMgYXV0b21hdGljYWxseSBsb2FkZWQuXG4gKi9cbmNsYXNzIExvY2FsQ3JlZGVudGlhbHMge1xuICBwcml2YXRlIHRva2VuU2VjdGlvbk5hbWU6IHN0cmluZ1xuXG4gIHByaXZhdGUgc3RvcmFnZTogU2ltcGxlU3RvcmFnZVxuXG4gIHByaXZhdGUgY2xpZW50SWQ6IHN0cmluZ1xuXG4gIHByaXZhdGUgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzIHwgbnVsbCA9IG51bGxcbiAgLy8g5p2l6IeqYWNjZXNzS2V555qE6Lqr5Lu977yM5LiN5oyB5LmF5YyWXG4gIHByaXZhdGUgYWNjZXNzS2V5Q3JlZGVudGlhbHM6IENyZWRlbnRpYWxzIHwgbnVsbCA9IG51bGxcblxuICBwcml2YXRlIHNpbmdsZVByb21pc2U6IFNpbmdsZVByb21pc2UgPSBudWxsXG5cbiAgLyoqXG4gICAqIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7TG9jYWxDcmVkZW50aWFsc09wdGlvbnN9IG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IExvY2FsQ3JlZGVudGlhbHNPcHRpb25zKSB7XG4gICAgdGhpcy50b2tlblNlY3Rpb25OYW1lID0gb3B0aW9ucy50b2tlblNlY3Rpb25OYW1lXG4gICAgdGhpcy5zdG9yYWdlID0gb3B0aW9ucy5zdG9yYWdlXG4gICAgdGhpcy5jbGllbnRJZCA9IG9wdGlvbnMuY2xpZW50SWRcbiAgICB0aGlzLnNpbmdsZVByb21pc2UgPSBuZXcgU2luZ2xlUHJvbWlzZSh7IGNsaWVudElkOiB0aGlzLmNsaWVudElkIH0pXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IG9wdGlvbnMuY3JlZGVudGlhbHMgfHwgbnVsbFxuICB9XG5cbiAgcHVibGljIGdldFN0b3JhZ2VDcmVkZW50aWFsc1N5bmMoKTogQ3JlZGVudGlhbHMgfCBudWxsIHtcbiAgICBsZXQgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gbnVsbFxuICAgIGNvbnN0IHRva2VuU3RyOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbVN5bmModGhpcy50b2tlblNlY3Rpb25OYW1lKVxuICAgIGlmICh0b2tlblN0ciAhPT0gdW5kZWZpbmVkICYmIHRva2VuU3RyICE9PSBudWxsKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjcmVkZW50aWFscyA9IEpTT04ucGFyc2UodG9rZW5TdHIpXG4gICAgICAgIGlmIChjcmVkZW50aWFscz8uZXhwaXJlc19hdCkge1xuICAgICAgICAgIGNyZWRlbnRpYWxzLmV4cGlyZXNfYXQgPSBuZXcgRGF0ZShjcmVkZW50aWFscy5leHBpcmVzX2F0KVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnRva2VuU2VjdGlvbk5hbWUpXG4gICAgICAgIGNyZWRlbnRpYWxzID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3JlZGVudGlhbHNcbiAgfVxuXG4gIC8qKlxuICAgKiBzZXRDcmVkZW50aWFscyBQcm92aWRlcyBhbiBhbHRlcm5hdGl2ZSBmZXRjaCBhcGkgcmVxdWVzdCBpbXBsZW1lbnRhdGlvbiB3aXRoIGF1dGggY3JlZGVudGlhbHNcbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXRDcmVkZW50aWFscyhjcmVkZW50aWFscz86IENyZWRlbnRpYWxzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGNyZWRlbnRpYWxzPy5leHBpcmVzX2luKSB7XG4gICAgICBpZiAoIWNyZWRlbnRpYWxzPy5leHBpcmVzX2F0KSB7XG4gICAgICAgIGNyZWRlbnRpYWxzLmV4cGlyZXNfYXQgPSBuZXcgRGF0ZShEYXRlLm5vdygpICsgKGNyZWRlbnRpYWxzLmV4cGlyZXNfaW4gLSAzMCkgKiAxMDAwKVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc3RvcmFnZSkge1xuICAgICAgICBjb25zdCB0b2tlblN0cjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY3JlZGVudGlhbHMpXG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXRJdGVtKHRoaXMudG9rZW5TZWN0aW9uTmFtZSwgdG9rZW5TdHIpXG4gICAgICB9XG4gICAgICB0aGlzLmNyZWRlbnRpYWxzID0gY3JlZGVudGlhbHNcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc3RvcmFnZSkge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnRva2VuU2VjdGlvbk5hbWUpXG4gICAgICB9XG4gICAgICB0aGlzLmNyZWRlbnRpYWxzID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBzZXQgY3JlZGVudGlhbHMgZnJvbSBhY2Nlc3NLZXlcbiAgICogQHBhcmFtIHtDcmVkZW50aWFsc30gY3JlZGVudGlhbHNcbiAgICovXG4gIHB1YmxpYyBzZXRBY2Nlc3NLZXlDcmVkZW50aWFscyhjcmVkZW50aWFscz86IENyZWRlbnRpYWxzKSB7XG4gICAgdGhpcy5hY2Nlc3NLZXlDcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzXG4gICAgLy8gbm9kZSBzZGsg5Zy65pmv5LiL55u05o6l5L2/55SoYWNjZXNzS2V56Lqr5Lu9XG4gICAgaWYgKGNyZWRlbnRpYWxzLnNjb3BlID09PSBERUZBVUxUX05PREVfQUNDRVNTX1NDT1BFKSB7XG4gICAgICB0aGlzLmNyZWRlbnRpYWxzID0gY3JlZGVudGlhbHNcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNyZWRlbnRpYWxzLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENyZWRlbnRpYWxzIHwgbnVsbD59XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Q3JlZGVudGlhbHMoKTogUHJvbWlzZTxDcmVkZW50aWFscyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5zaW5nbGVQcm9taXNlLnJ1bignZ2V0Q3JlZGVudGlhbHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoaXNDcmVkZW50aWFsc0V4cGlyZWQodGhpcy5jcmVkZW50aWFscykpIHtcbiAgICAgICAgY29uc3QgeyBjcmVkZW50aWFscywgaXNBY2Nlc3NLZXlDcmVkZW50aWFscyB9ID0gYXdhaXQgdGhpcy5nZXRTdG9yYWdlQ3JlZGVudGlhbHMoKVxuICAgICAgICBpZiAoaXNBY2Nlc3NLZXlDcmVkZW50aWFscykge1xuICAgICAgICAgIHJldHVybiBjcmVkZW50aWFsc1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3JlZGVudGlhbHMgPSBjcmVkZW50aWFsc1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY3JlZGVudGlhbHNcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzdG9yYWdlIGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBnZXRTdG9yYWdlQ3JlZGVudGlhbHMoKTogUHJvbWlzZTx7IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyB8IG51bGw7IGlzQWNjZXNzS2V5Q3JlZGVudGlhbHM6IGJvb2xlYW4gfT4ge1xuICAgIHJldHVybiB0aGlzLnNpbmdsZVByb21pc2UucnVuKCdfZ2V0U3RvcmFnZUNyZWRlbnRpYWxzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IG51bGxcbiAgICAgIGxldCBpc0FjY2Vzc0tleUNyZWRlbnRpYWxzID0gZmFsc2VcbiAgICAgIGNvbnN0IHRva2VuU3RyOiBzdHJpbmcgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnRva2VuU2VjdGlvbk5hbWUpXG4gICAgICBpZiAoISF0b2tlblN0cikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNyZWRlbnRpYWxzID0gSlNPTi5wYXJzZSh0b2tlblN0cilcbiAgICAgICAgICBpZiAoY3JlZGVudGlhbHM/LmV4cGlyZXNfYXQpIHtcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzLmV4cGlyZXNfYXQgPSBuZXcgRGF0ZShjcmVkZW50aWFscy5leHBpcmVzX2F0KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnRva2VuU2VjdGlvbk5hbWUpXG4gICAgICAgICAgY3JlZGVudGlhbHMgPSBudWxsXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNyZWRlbnRpYWxzID0gdGhpcy5hY2Nlc3NLZXlDcmVkZW50aWFscyB8fCBudWxsXG4gICAgICAgIGlzQWNjZXNzS2V5Q3JlZGVudGlhbHMgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4geyBjcmVkZW50aWFscywgaXNBY2Nlc3NLZXlDcmVkZW50aWFscyB9XG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIE9BdXRoMkNsaWVudFxuICovXG5leHBvcnQgY2xhc3MgT0F1dGgyQ2xpZW50IGltcGxlbWVudHMgQXV0aENsaWVudCB7XG4gIHByaXZhdGUgc3RhdGljIGRlZmF1bHRSZXRyeSA9IDJcbiAgcHJpdmF0ZSBzdGF0aWMgbWluUmV0cnkgPSAwXG4gIHByaXZhdGUgc3RhdGljIG1heFJldHJ5ID0gNVxuICBwcml2YXRlIHN0YXRpYyByZXRyeUludGVydmFsID0gMTAwMFxuXG4gIHB1YmxpYyBsb2NhbENyZWRlbnRpYWxzOiBMb2NhbENyZWRlbnRpYWxzXG4gIC8qKlxuICAgKiBLZWVwcyB0cmFjayBvZiB0aGUgYXN5bmMgY2xpZW50IGluaXRpYWxpemF0aW9uLlxuICAgKiBXaGVuIG51bGwgb3Igbm90IHlldCByZXNvbHZlZCB0aGUgYXV0aCBzdGF0ZSBpcyBgdW5rbm93bmBcbiAgICogT25jZSByZXNvbHZlZCB0aGUgYXV0aCBzdGF0ZSBpcyBrbm93biBhbmQgaXQncyBzYWZlIHRvIGNhbGwgYW55IGZ1cnRoZXIgY2xpZW50IG1ldGhvZHMuXG4gICAqL1xuICBwdWJsaWMgaW5pdGlhbGl6ZVByb21pc2U6IFByb21pc2U8eyBlcnJvcjogRXJyb3IgfCBudWxsIH0+IHwgbnVsbCA9IG51bGxcbiAgcHJvdGVjdGVkIGxvY2tBY3F1aXJlZCA9IGZhbHNlXG4gIHByb3RlY3RlZCBwZW5kaW5nSW5Mb2NrOiBQcm9taXNlPGFueT5bXSA9IFtdXG4gIHByb3RlY3RlZCBsb2dEZWJ1Z01lc3NhZ2VzOiBib29sZWFuXG4gIHByb3RlY3RlZCBnZXRJbml0aWFsU2Vzc2lvbj86ICgpID0+IFByb21pc2U8e1xuICAgIGRhdGE6IHsgc2Vzc2lvbjogQ3JlZGVudGlhbHM7IHVzZXI/OiBhbnkgfSB8IG51bGxcbiAgICBlcnJvcjogRXJyb3IgfCBudWxsXG4gIH0+XG4gIHByaXZhdGUgYXBpT3JpZ2luOiBzdHJpbmdcbiAgcHJpdmF0ZSBhcGlQYXRoOiBzdHJpbmdcbiAgcHJpdmF0ZSBjbGllbnRJZDogc3RyaW5nXG4gIHByaXZhdGUgaTE4bjogSUNsb3VkYmFzZUNvbmZpZ1snaTE4biddXG4gIHByaXZhdGUgcmV0cnk6IG51bWJlclxuICBwcml2YXRlIGNsaWVudFNlY3JldD86IHN0cmluZ1xuICBwcml2YXRlIGJhc2VSZXF1ZXN0OiA8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxUPlxuICBwcml2YXRlIHN0b3JhZ2U6IFNpbXBsZVN0b3JhZ2VcbiAgcHJpdmF0ZSBkZXZpY2VJRD86IHN0cmluZ1xuICBwcml2YXRlIHRva2VuSW5VUkw/OiBib29sZWFuXG4gIHByaXZhdGUgcmVmcmVzaFRva2VuRnVuYzogKHJlZnJlc2hUb2tlbj86IHN0cmluZywgY3JlZGVudGlhbHM/OiBDcmVkZW50aWFscykgPT4gUHJvbWlzZTxDcmVkZW50aWFscz5cbiAgcHJpdmF0ZSBoZWFkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICBwcml2YXRlIHNpbmdsZVByb21pc2U6IFNpbmdsZVByb21pc2UgPSBudWxsXG4gIHByaXZhdGUgYW5vbnltb3VzU2lnbkluRnVuYzogKENyZWRlbnRpYWxzKSA9PiBQcm9taXNlPENyZWRlbnRpYWxzIHwgdm9pZD5cbiAgcHJpdmF0ZSB3eENsb3VkOiBhbnlcbiAgcHJpdmF0ZSB1c2VXeENsb3VkOiBib29sZWFuXG4gIHByaXZhdGUgZXZlbnRCdXM6IGFueVxuICBwcml2YXRlIGJhc2ljQXV0aDogc3RyaW5nXG4gIHByaXZhdGUgb25DcmVkZW50aWFsc0Vycm9yOiBBdXRoT3B0aW9uc1snb25DcmVkZW50aWFsc0Vycm9yJ10gfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBvbkluaXRpYWxTZXNzaW9uT2J0YWluZWQ/OiAoZGF0YTogeyBzZXNzaW9uOiBDcmVkZW50aWFsczsgdXNlcj86IGFueSB9LCBlcnJvcj86IGFueSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cblxuICAvKipcbiAgICogY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtPQXV0aDJDbGllbnRPcHRpb25zfSBvcHRpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPQXV0aDJDbGllbnRPcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLmNsaWVudFNlY3JldCkge1xuICAgICAgb3B0aW9ucy5jbGllbnRTZWNyZXQgPSAnJ1xuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5jbGllbnRJZCAmJiBvcHRpb25zLmVudikge1xuICAgICAgb3B0aW9ucy5jbGllbnRJZCA9IG9wdGlvbnMuZW52XG4gICAgfVxuXG4gICAgdGhpcy5hcGlPcmlnaW4gPSBvcHRpb25zLmFwaU9yaWdpblxuICAgIHRoaXMuYXBpUGF0aCA9IG9wdGlvbnMuYXBpUGF0aCB8fCBBVVRIX0FQSV9QUkVGSVhcbiAgICB0aGlzLmNsaWVudElkID0gb3B0aW9ucy5jbGllbnRJZFxuICAgIHRoaXMuaTE4biA9IG9wdGlvbnMuaTE4blxuICAgIHRoaXMuZXZlbnRCdXMgPSBvcHRpb25zLmV2ZW50QnVzXG4gICAgdGhpcy5zaW5nbGVQcm9taXNlID0gbmV3IFNpbmdsZVByb21pc2UoeyBjbGllbnRJZDogdGhpcy5jbGllbnRJZCB9KVxuICAgIHRoaXMucmV0cnkgPSB0aGlzLmZvcm1hdFJldHJ5KG9wdGlvbnMucmV0cnksIE9BdXRoMkNsaWVudC5kZWZhdWx0UmV0cnkpXG4gICAgaWYgKG9wdGlvbnMuYmFzZVJlcXVlc3QpIHtcbiAgICAgIHRoaXMuYmFzZVJlcXVlc3QgPSBvcHRpb25zLmJhc2VSZXF1ZXN0XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYmFzZVJlcXVlc3QgPSBkZWZhdWx0UmVxdWVzdFxuICAgIH1cbiAgICB0aGlzLnRva2VuSW5VUkwgPSBvcHRpb25zLnRva2VuSW5VUkxcbiAgICB0aGlzLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnNcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5zdG9yYWdlID0gb3B0aW9ucy5zdG9yYWdlIHx8IGRlZmF1bHRTdG9yYWdlXG4gICAgdGhpcy5sb2NhbENyZWRlbnRpYWxzID0gbmV3IExvY2FsQ3JlZGVudGlhbHMoe1xuICAgICAgdG9rZW5TZWN0aW9uTmFtZTogYGNyZWRlbnRpYWxzXyR7b3B0aW9ucy5jbGllbnRJZH1gLFxuICAgICAgc3RvcmFnZTogdGhpcy5zdG9yYWdlLFxuICAgICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWQsXG4gICAgfSlcblxuICAgIHRoaXMuY2xpZW50U2VjcmV0ID0gb3B0aW9ucy5jbGllbnRTZWNyZXRcbiAgICBpZiAob3B0aW9ucy5jbGllbnRJZCkge1xuICAgICAgdGhpcy5iYXNpY0F1dGggPSBgQmFzaWMgJHt3ZUJ0b2EoYCR7b3B0aW9ucy5jbGllbnRJZH06JHt0aGlzLmNsaWVudFNlY3JldH1gKX1gXG4gICAgfVxuICAgIHRoaXMud3hDbG91ZCA9IG9wdGlvbnMud3hDbG91ZFxuICAgIHRyeSB7XG4gICAgICBpZiAoaXNNcCgpKSB7XG4gICAgICAgIHRoaXMudXNlV3hDbG91ZCA9IG9wdGlvbnMudXNlV3hDbG91ZFxuICAgICAgICBpZiAodGhpcy53eENsb3VkID09PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5lbnYpIHtcbiAgICAgICAgICB3eC5jbG91ZC5pbml0KHsgZW52OiBvcHRpb25zLmVudiB9KVxuICAgICAgICAgIHRoaXMud3hDbG91ZCA9IHd4LmNsb3VkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy9cbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoVG9rZW5GdW5jID0gb3B0aW9ucy5yZWZyZXNoVG9rZW5GdW5jIHx8IHRoaXMuZGVmYXVsdFJlZnJlc2hUb2tlbkZ1bmNcbiAgICB0aGlzLmFub255bW91c1NpZ25JbkZ1bmMgPSBvcHRpb25zLmFub255bW91c1NpZ25JbkZ1bmNcbiAgICB0aGlzLm9uQ3JlZGVudGlhbHNFcnJvciA9IG9wdGlvbnMub25DcmVkZW50aWFsc0Vycm9yXG5cbiAgICAvLyBOZXcgb3B0aW9ucyBmb3Igc2Vzc2lvbiBkZXRlY3Rpb25cbiAgICB0aGlzLmdldEluaXRpYWxTZXNzaW9uID0gb3B0aW9ucy5nZXRJbml0aWFsU2Vzc2lvblxuICAgIHRoaXMub25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkID0gb3B0aW9ucy5vbkluaXRpYWxTZXNzaW9uT2J0YWluZWRcbiAgICB0aGlzLmxvZ0RlYnVnTWVzc2FnZXMgPSBvcHRpb25zLmRlYnVnID8/IGZhbHNlXG5cbiAgICBsYW5nRXZlbnQuYnVzLm9uKGxhbmdFdmVudC5MQU5HX0NIQU5HRV9FVkVOVCwgKHBhcmFtczogYW55KSA9PiB7XG4gICAgICB0aGlzLmkxOG4gPSBwYXJhbXMuZGF0YT8uaTE4biB8fCB0aGlzLmkxOG5cbiAgICB9KVxuXG4gICAgLy8gTm90ZTogQXV0by1pbml0aWFsaXplIGlzIE5PVCBjYWxsZWQgaGVyZSB0byBhbGxvdyBDbG91ZGJhc2VPQXV0aCB0byBzZXQgZ2V0SW5pdGlhbFNlc3Npb24gZmlyc3RcbiAgICAvLyBDbG91ZGJhc2VPQXV0aC5jb25zdHJ1Y3RvciB3aWxsIGNhbGwgaW5pdGlhbGl6ZSgpIGFmdGVyIHNldHRpbmcgdXAgdGhlIGNhbGxiYWNrXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZ2V0SW5pdGlhbFNlc3Npb24gY2FsbGJhY2suXG4gICAqIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIGR1cmluZyBpbml0aWFsaXplKCkgdG8gZ2V0IHRoZSBpbml0aWFsIHNlc3Npb24gKGUuZy4sIGZyb20gT0F1dGggY2FsbGJhY2sgaW4gVVJMKS5cbiAgICogQHBhcmFtIGNhbGxiYWNrIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBnZXQgaW5pdGlhbCBzZXNzaW9uXG4gICAqL1xuICBwdWJsaWMgc2V0R2V0SW5pdGlhbFNlc3Npb24oY2FsbGJhY2s6ICgpID0+IFByb21pc2U8e1xuICAgIGRhdGE6IHsgc2Vzc2lvbjogQ3JlZGVudGlhbHM7IHVzZXI/OiBhbnkgfSB8IG51bGxcbiAgICBlcnJvcjogRXJyb3IgfCBudWxsXG4gIH0+LCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0SW5pdGlhbFNlc3Npb24gPSBjYWxsYmFja1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG9uSW5pdGlhbFNlc3Npb25PYnRhaW5lZCBjYWxsYmFjay5cbiAgICogVGhpcyBjYWxsYmFjayBpcyBpbnZva2VkIGFmdGVyIGluaXRpYWwgc2Vzc2lvbiBpcyBvYnRhaW5lZCBhbmQgc3RvcmVkLFxuICAgKiBhbGxvd2luZyB1cHBlciBsYXllcnMgdG8gaGFuZGxlIHVzZXIgaW5mbyBzdG9yYWdlLlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGhhbmRsZSBzZXNzaW9uIGFuZCB1c2VyIGRhdGFcbiAgICovXG4gIHB1YmxpYyBzZXRPbkluaXRpYWxTZXNzaW9uT2J0YWluZWQoY2FsbGJhY2s6IChkYXRhOiB7IHNlc3Npb246IENyZWRlbnRpYWxzOyB1c2VyPzogYW55IH0pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+LCk6IHZvaWQge1xuICAgIHRoaXMub25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkID0gY2FsbGJhY2tcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgY2xpZW50IHNlc3Npb24gZWl0aGVyIGZyb20gdGhlIHVybCBvciBmcm9tIHN0b3JhZ2UuXG4gICAqIFRoaXMgbWV0aG9kIGlzIGF1dG9tYXRpY2FsbHkgY2FsbGVkIHdoZW4gaW5zdGFudGlhdGluZyB0aGUgY2xpZW50IHdpdGggZGV0ZWN0U2Vzc2lvbkluVXJsPXRydWUsXG4gICAqIGJ1dCBzaG91bGQgYWxzbyBiZSBjYWxsZWQgbWFudWFsbHkgd2hlbiBjaGVja2luZyBmb3IgYW4gZXJyb3IgZnJvbSBhbiBhdXRoIHJlZGlyZWN0LlxuICAgKiBAcGFyYW0gb25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkIE9wdGlvbmFsIGNhbGxiYWNrIHRvIHNldCBiZWZvcmUgaW5pdGlhbGl6YXRpb24gc3RhcnRzXG4gICAqL1xuICBhc3luYyBpbml0aWFsaXplKGZ1bmM/OiBQcm9taXNlPHsgZXJyb3I6IEVycm9yIHwgbnVsbCB9Pik6IFByb21pc2U8eyBlcnJvcjogRXJyb3IgfCBudWxsIH0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW1pc3VzZWQtcHJvbWlzZXNcbiAgICBpZiAodGhpcy5pbml0aWFsaXplUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVByb21pc2VcbiAgICB9XG5cbiAgICBpZiAoZnVuYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVQcm9taXNlID0gZnVuY1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVByb21pc2VcbiAgICB9XG5cbiAgICB0aGlzLmluaXRpYWxpemVQcm9taXNlID0gKGFzeW5jICgpID0+IGF3YWl0IHRoaXMuX2FjcXVpcmVMb2NrKC0xLCBhc3luYyAoKSA9PiBhd2FpdCB0aGlzLl9pbml0aWFsaXplKCkpKSgpXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5pbml0aWFsaXplUHJvbWlzZVxuICB9XG5cbiAgLyoqXG4gICAqIHNldENyZWRlbnRpYWxzIFByb3ZpZGVzIGFuIGFsdGVybmF0aXZlIGZldGNoIGFwaSByZXF1ZXN0IGltcGxlbWVudGF0aW9uIHdpdGggYXV0aCBjcmVkZW50aWFsc1xuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBJZiBpbml0aWFsaXphdGlvbiBpcyBpbiBwcm9ncmVzcywgd2FpdCBmb3IgaXQgZmlyc3RcbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemVQcm9taXNlXG4gICAgcmV0dXJuIHRoaXMuX2FjcXVpcmVMb2NrKC0xLCBhc3luYyAoKSA9PiB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuc2V0Q3JlZGVudGlhbHMoY3JlZGVudGlhbHMpKVxuICB9XG5cbiAgLyoqXG4gICAqIHNldCBjcmVkZW50aWFscyBmcm9tIGFjY2Vzc0tleVxuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICAgKi9cbiAgcHVibGljIHNldEFjY2Vzc0tleUNyZWRlbnRpYWxzKGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbENyZWRlbnRpYWxzLnNldEFjY2Vzc0tleUNyZWRlbnRpYWxzKGNyZWRlbnRpYWxzKVxuICB9XG5cbiAgLyoqXG4gICAqIGdldEFjY2Vzc1Rva2VuIHJldHVybiBhIHZhbGlkYXRlIGFjY2VzcyB0b2tlblxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEFjY2Vzc1Rva2VuKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8gSWYgaW5pdGlhbGl6YXRpb24gaXMgaW4gcHJvZ3Jlc3MsIHdhaXQgZm9yIGl0IGZpcnN0XG4gICAgYXdhaXQgdGhpcy5pbml0aWFsaXplUHJvbWlzZVxuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuZ2V0Q3JlZGVudGlhbHMoKVxuICAgIC8vIG5vZGUgc2RrIOWcuuaZr+S4i+ebtOaOpei/lOWbnmFjY2Vzc190b2tlblxuICAgIGlmIChjcmVkZW50aWFscz8uc2NvcGUgPT09IERFRkFVTFRfTk9ERV9BQ0NFU1NfU0NPUEUpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY3JlZGVudGlhbHMuYWNjZXNzX3Rva2VuKVxuICAgIH1cbiAgICBpZiAoY3JlZGVudGlhbHM/LmFjY2Vzc190b2tlbikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVkZW50aWFscy5hY2Nlc3NfdG9rZW4pXG4gICAgfVxuICAgIGNvbnN0IHJlc3BFcnI6IFJlc3BvbnNlRXJyb3IgPSB7IGVycm9yOiBFcnJvclR5cGUuVU5BVVRIRU5USUNBVEVEIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcEVycilcbiAgfVxuXG4gIC8qKlxuICAgKiByZXF1ZXN0IGh0dHAgbGlrZSBzaW1wbGUgZmV0Y2ggYXBpLCBleHA6cmVxdWVzdCgnL3YxL3VzZXIvbWUnLCB7d2l0aENyZWRlbnRpYWxzOnRydWV9KVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7QXV0aENsaWVudFJlcXVlc3RPcHRpb25zfSBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVxdWVzdDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IEF1dGhDbGllbnRSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IHt9XG4gICAgfVxuICAgIGNvbnN0IHJldHJ5OiBudW1iZXIgPSB0aGlzLmZvcm1hdFJldHJ5KG9wdGlvbnMucmV0cnksIHRoaXMucmV0cnkpXG4gICAgb3B0aW9ucy5oZWFkZXJzID0geyAuLi5vcHRpb25zLmhlYWRlcnMsIFt0aGlzLmkxOG4/LkxBTkdfSEVBREVSX0tFWV06IHRoaXMuaTE4bj8ubGFuZyB9XG4gICAgaWYgKHRoaXMuaGVhZGVycykge1xuICAgICAgb3B0aW9ucy5oZWFkZXJzID0ge1xuICAgICAgICAuLi50aGlzLmhlYWRlcnMsXG4gICAgICAgIC4uLm9wdGlvbnMuaGVhZGVycyxcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnNbUmVxdWVzdElkSGVhZGVyTmFtZV0pIHtcbiAgICAgIG9wdGlvbnMuaGVhZGVyc1tSZXF1ZXN0SWRIZWFkZXJOYW1lXSA9IGdlbmVyYXRlUmVxdWVzdElkKClcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnNbRGV2aWNlSWRIZWFkZXJOYW1lXSkge1xuICAgICAgY29uc3QgZGV2aWNlSWQgPSBhd2FpdCB0aGlzLmdldERldmljZUlkKClcbiAgICAgIG9wdGlvbnMuaGVhZGVyc1tEZXZpY2VJZEhlYWRlck5hbWVdID0gZGV2aWNlSWRcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LndpdGhCYXNpY0F1dGggJiYgdGhpcy5iYXNpY0F1dGgpIHtcbiAgICAgIG9wdGlvbnMuaGVhZGVycy5BdXRob3JpemF0aW9uID0gdGhpcy5iYXNpY0F1dGhcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LndpdGhDcmVkZW50aWFscykge1xuICAgICAgLy8gVXNlIGN1c3RvbSBnZXRDcmVkZW50aWFscyBmdW5jdGlvbiBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHVzZSBkZWZhdWx0XG4gICAgICAvLyBDdXN0b20gZ2V0Q3JlZGVudGlhbHMgYXZvaWRzIGRlZmF1bHQgZ2V0Q3JlZGVudGlhbHMoKSBjYWxsIHdoaWNoIG1heSBjYXVzZSBkZWFkbG9jayBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gb3B0aW9ucy5nZXRDcmVkZW50aWFscyA/IGF3YWl0IG9wdGlvbnMuZ2V0Q3JlZGVudGlhbHMoKSA6IGF3YWl0IHRoaXMuZ2V0Q3JlZGVudGlhbHMoKVxuICAgICAgaWYgKGNyZWRlbnRpYWxzKSB7XG4gICAgICAgIGlmICh0aGlzLnRva2VuSW5VUkwpIHtcbiAgICAgICAgICBpZiAodXJsLmluZGV4T2YoJz8nKSA8IDApIHtcbiAgICAgICAgICAgIHVybCArPSAnPydcbiAgICAgICAgICB9XG4gICAgICAgICAgdXJsICs9IGBhY2Nlc3NfdG9rZW49JHtjcmVkZW50aWFscy5hY2Nlc3NfdG9rZW59YFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9wdGlvbnMuaGVhZGVycy5BdXRob3JpemF0aW9uID0gYCR7Y3JlZGVudGlhbHMudG9rZW5fdHlwZX0gJHtjcmVkZW50aWFscy5hY2Nlc3NfdG9rZW59YFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNsaWVudElkICYmIHVybC5pbmRleE9mKCdjbGllbnRfaWQnKSA8IDApIHtcbiAgICAgICAgdXJsICs9IHVybC5pbmRleE9mKCc/JykgPCAwID8gJz8nIDogJyYnXG4gICAgICAgIHVybCArPSBgY2xpZW50X2lkPSR7dGhpcy5jbGllbnRJZH1gXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh1cmwuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICB1cmwgPSBgJHt0aGlzLmFwaU9yaWdpbn0ke3RoaXMuYXBpUGF0aH0ke3VybH1gXG4gICAgfVxuICAgIGxldCByZXNwb25zZTogVCB8IG51bGwgPSBudWxsXG4gICAgY29uc3QgbWF4UmVxdWVzdFRpbWVzOiBudW1iZXIgPSByZXRyeSArIDFcbiAgICBmb3IgKGxldCByZXF1ZXN0VGltZSA9IDA7IHJlcXVlc3RUaW1lIDwgbWF4UmVxdWVzdFRpbWVzOyByZXF1ZXN0VGltZSsrKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAob3B0aW9ucy51c2VXeENsb3VkIHx8IHRoaXMudXNlV3hDbG91ZCkge1xuICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy53eENsb3VkQ2FsbEZ1bmN0aW9uPFQ+KHVybCwgb3B0aW9ucylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuYmFzZVJlcXVlc3Q8VD4odXJsLCBvcHRpb25zKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEhKHJlc3BvbnNlIGFzIGFueSk/LmNvZGUpIHtcbiAgICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgICBlcnJvcjogKHJlc3BvbnNlIGFzIGFueSkuY29kZSxcbiAgICAgICAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiAocmVzcG9uc2UgYXMgYW55KS5tZXNzYWdlLFxuICAgICAgICAgICAgZXJyb3JfdXJpOiBuZXcgVVJMKHVybCkucGF0aG5hbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH0gY2F0Y2ggKHJlc3BvbnNlRXJyb3IpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXNwb25zZUVycm9yLnJlcXVlc3RJZCA9IHJlc3BvbnNlRXJyb3IucmVxdWVzdElkIHx8IG9wdGlvbnMuaGVhZGVyc1tSZXF1ZXN0SWRIZWFkZXJOYW1lXSB8fCAnJ1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgaWYgKG9wdGlvbnMud2l0aENyZWRlbnRpYWxzICYmIHJlc3BvbnNlRXJyb3IgJiYgcmVzcG9uc2VFcnJvci5lcnJvciA9PT0gRXJyb3JUeXBlLlVOQVVUSEVOVElDQVRFRCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2V0Q3JlZGVudGlhbHMobnVsbClcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcG9uc2VFcnJvcilcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXF1ZXN0VGltZSA9PT0gcmV0cnkgfHwgIXJlc3BvbnNlRXJyb3IgfHwgcmVzcG9uc2VFcnJvci5lcnJvciAhPT0gJ3VucmVhY2hhYmxlJykge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZXNwb25zZUVycm9yKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnNsZWVwKE9BdXRoMkNsaWVudC5yZXRyeUludGVydmFsKVxuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2VcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB3eENsb3VkQ2FsbEZ1bmN0aW9uPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgcmVzdWx0OiBUIHwgbnVsbCA9IG51bGxcbiAgICBsZXQgcmVzcG9uc2VFcnJvcjogUmVzcG9uc2VFcnJvciB8IG51bGwgPSBudWxsXG4gICAgdHJ5IHtcbiAgICAgIGxldCB1c2VyQWdlbnQgPSAnJ1xuICAgICAgdHJ5IHtcbiAgICAgICAgdXNlckFnZW50ID0gYXdhaXQgd3guZ2V0UmVuZGVyZXJVc2VyQWdlbnQoKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICBjb25zdCB7IHJlc3VsdDogcmVzcG9uc2VSZXN1bHQgfSA9IGF3YWl0IHRoaXMud3hDbG91ZC5jYWxsRnVuY3Rpb24oe1xuICAgICAgICBuYW1lOiAnaHR0cE92ZXJDYWxsRnVuY3Rpb24nLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIG1ldGhvZDogb3B0aW9ucy5tZXRob2QsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgb3JpZ2luOiAnaHR0cHM6Ly9zZXJ2aWNld2VjaGF0LmNvbScsXG4gICAgICAgICAgICAnVXNlci1BZ2VudCc6IHVzZXJBZ2VudCxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMuaGVhZGVycyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJvZHk6IG9wdGlvbnMuYm9keSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChyZXNwb25zZVJlc3VsdD8uYm9keT8uZXJyb3JfY29kZSkge1xuICAgICAgICByZXNwb25zZUVycm9yID0gcmVzcG9uc2VSZXN1bHQ/LmJvZHkgYXMgUmVzcG9uc2VFcnJvclxuICAgICAgICByZXNwb25zZUVycm9yLmVycm9yX3VyaSA9IGdldFBhdGhOYW1lKHVybClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3BvbnNlUmVzdWx0Py5ib2R5IGFzIFRcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmVzcG9uc2VFcnJvciA9IHtcbiAgICAgICAgZXJyb3I6IEVycm9yVHlwZS5VTlJFQUNIQUJMRSxcbiAgICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgIGVycm9yX3VyaTogZ2V0UGF0aE5hbWUodXJsKSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2VFcnJvcikge1xuICAgICAgdGhyb3cgcmVzcG9uc2VFcnJvclxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjcmVkZW50aWFscy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRDcmVkZW50aWFscygpOiBQcm9taXNlPENyZWRlbnRpYWxzIHwgbnVsbD4ge1xuICAgIC8vIElmIGluaXRpYWxpemF0aW9uIGlzIGluIHByb2dyZXNzLCB3YWl0IGZvciBpdCBmaXJzdFxuICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVByb21pc2VcblxuICAgIHJldHVybiB0aGlzLl9hY3F1aXJlTG9jaygtMSwgYXN5bmMgKCkgPT4gdGhpcy5fZ2V0Q3JlZGVudGlhbHMoKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCDlup/lvIPmjqXlj6PvvIzli7/nlKguIOWmgumcgOiOt+WPluWHreivgeS/oeaBr+ivt+S9v+eUqCBnZXRDcmVkZW50aWFscyDmlrnms5VcbiAgICovXG4gIHB1YmxpYyBnZXRDcmVkZW50aWFsc1N5bmMoKTogQ3JlZGVudGlhbHMgfCBudWxsIHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuZ2V0U3RvcmFnZUNyZWRlbnRpYWxzU3luYygpXG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gIH1cblxuICBwdWJsaWMgZ2V0Q3JlZGVudGlhbHNBc3luYygpOiBQcm9taXNlPENyZWRlbnRpYWxzIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmdldENyZWRlbnRpYWxzKClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5nZXRDcmVkZW50aWFscygpXG4gICAgaWYgKCFjcmVkZW50aWFscykge1xuICAgICAgY29uc3QgbXNnID0gJ2NyZWRlbnRpYWxzIG5vdCBmb3VuZCdcbiAgICAgIHRoaXMub25DcmVkZW50aWFsc0Vycm9yPy4oeyBtc2cgfSlcbiAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKG1zZylcbiAgICB9XG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzLnNjb3BlXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0R3JvdXBzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuZ2V0Q3JlZGVudGlhbHMoKVxuICAgIGlmICghY3JlZGVudGlhbHMpIHtcbiAgICAgIGNvbnN0IG1zZyA9ICdjcmVkZW50aWFscyBub3QgZm91bmQnXG4gICAgICB0aGlzLm9uQ3JlZGVudGlhbHNFcnJvcj8uKHsgbXNnIH0pXG4gICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcihtc2cpXG4gICAgfVxuICAgIHJldHVybiBjcmVkZW50aWFscy5ncm91cHNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoIGV4cGlyZWQgdG9rZW4uXG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlZnJlc2hUb2tlbihjcmVkZW50aWFsczogQ3JlZGVudGlhbHMsIG9wdGlvbnM/OiB7IHRocm93RXJyb3I/OiBib29sZWFuIH0pOiBQcm9taXNlPENyZWRlbnRpYWxzPiB7XG4gICAgLy8gSWYgaW5pdGlhbGl6YXRpb24gaXMgaW4gcHJvZ3Jlc3MsIHdhaXQgZm9yIGl0IGZpcnN0XG4gICAgYXdhaXQgdGhpcy5pbml0aWFsaXplUHJvbWlzZVxuXG4gICAgcmV0dXJuIHRoaXMuX2FjcXVpcmVMb2NrKC0xLCBhc3luYyAoKSA9PiB0aGlzLl9yZWZyZXNoVG9rZW4oY3JlZGVudGlhbHMsIG9wdGlvbnMpKVxuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIHJlZnJlc2ggdG9rZW4gbWV0aG9kIChjYWxsZWQgd2l0aGluIGxvY2spXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9yZWZyZXNoVG9rZW4oY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzLCBvcHRpb25zPzogeyB0aHJvd0Vycm9yPzogYm9vbGVhbiB9KTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIHJldHVybiB0aGlzLnNpbmdsZVByb21pc2UucnVuKCdfcmVmcmVzaFRva2VuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gbm9kZSBzZGsg5Zy65pmv5LiL5LiN6ZyA6KaB5Yi35pawIHRva2VuXG4gICAgICBpZiAoY3JlZGVudGlhbHM/LnNjb3BlID09PSBERUZBVUxUX05PREVfQUNDRVNTX1NDT1BFKSB7XG4gICAgICAgIHJldHVybiBjcmVkZW50aWFsc1xuICAgICAgfVxuXG4gICAgICBpZiAoIWNyZWRlbnRpYWxzIHx8ICFjcmVkZW50aWFscy5yZWZyZXNoX3Rva2VuKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9ICdubyByZWZyZXNoIHRva2VuIGZvdW5kIGluIGNyZWRlbnRpYWxzJ1xuICAgICAgICB0aGlzLm9uQ3JlZGVudGlhbHNFcnJvcj8uKHsgbXNnIH0pXG4gICAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKG1zZylcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG5ld0NyZWRlbnRpYWxzOiBDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMucmVmcmVzaFRva2VuRnVuYyhjcmVkZW50aWFscy5yZWZyZXNoX3Rva2VuLCBjcmVkZW50aWFscylcbiAgICAgICAgYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLnNldENyZWRlbnRpYWxzKG5ld0NyZWRlbnRpYWxzKVxuXG4gICAgICAgIHRoaXMuZXZlbnRCdXM/LmZpcmUoRVZFTlRTLkFVVEhfU1RBVEVfQ0hBTkdFRCwgeyBldmVudDogQVVUSF9TVEFURV9DSEFOR0VEX1RZUEUuVE9LRU5fUkVGUkVTSEVEIH0pXG5cbiAgICAgICAgcmV0dXJuIG5ld0NyZWRlbnRpYWxzXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAob3B0aW9ucz8udGhyb3dFcnJvcikge1xuICAgICAgICAgIHRocm93IGVycm9yXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yLmVycm9yID09PSBFcnJvclR5cGUuSU5WQUxJRF9HUkFOVCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMubG9jYWxDcmVkZW50aWFscy5zZXRDcmVkZW50aWFscyhudWxsKVxuICAgICAgICAgIGNvbnN0IG1zZyA9IGVycm9yLmVycm9yX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgdGhpcy5vbkNyZWRlbnRpYWxzRXJyb3I/Lih7IG1zZyB9KVxuICAgICAgICAgIHJldHVybiB0aGlzLnVuQXV0aGVudGljYXRlZEVycm9yKG1zZylcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ3JlZGVudGlhbHNFcnJvcj8uKHsgbXNnOiBlcnJvci5lcnJvcl9kZXNjcmlwdGlvbiB9KVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYW5vbnltb3VzTG9naW4oY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHRoaXMuc2luZ2xlUHJvbWlzZS5ydW4oJ19hbm9ueW1vdXNMb2dpbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmFub255bW91c1NpZ25JbkZ1bmMpIHtcbiAgICAgICAgY29uc3QgYyA9IGF3YWl0IHRoaXMuYW5vbnltb3VzU2lnbkluRnVuYyhjcmVkZW50aWFscylcbiAgICAgICAgY3JlZGVudGlhbHMgPSBjIHx8IChhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuZ2V0Q3JlZGVudGlhbHMoKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5hbm9ueW1vdXNTaWduSW4oY3JlZGVudGlhbHMpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjcmVkZW50aWFsc1xuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgcmV0cnkgdmFsdWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByZXRyeVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBwcml2YXRlIGNoZWNrUmV0cnkocmV0cnk6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IHJlc3BvbnNlRXJyb3I6IFJlc3BvbnNlRXJyb3IgfCBudWxsID0gbnVsbFxuICAgIGlmICh0eXBlb2YgcmV0cnkgIT09ICdudW1iZXInIHx8IHJldHJ5IDwgT0F1dGgyQ2xpZW50Lm1pblJldHJ5IHx8IHJldHJ5ID4gT0F1dGgyQ2xpZW50Lm1heFJldHJ5KSB7XG4gICAgICByZXNwb25zZUVycm9yID0ge1xuICAgICAgICBlcnJvcjogRXJyb3JUeXBlLlVOUkVBQ0hBQkxFLFxuICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogJ3dyb25nIG9wdGlvbnMgcGFyYW06IHJldHJ5JyxcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJlc3BvbnNlRXJyb3IpIHtcbiAgICAgIHRocm93IHJlc3BvbnNlRXJyb3JcbiAgICB9XG4gICAgcmV0dXJuIHJldHJ5XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IHJldHJ5IHZhbHVlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gcmV0cnlcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRlZmF1bHRWYWxlXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHByaXZhdGUgZm9ybWF0UmV0cnkocmV0cnk6IG51bWJlciwgZGVmYXVsdFZhbGU6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHR5cGVvZiByZXRyeSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsZVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jaGVja1JldHJ5KHJldHJ5KVxuICB9XG5cbiAgLyoqXG4gICAqIFNsZWVwLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbXNcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc2xlZXAobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgfSwgbXMpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBhbm9ueW1vdXMgc2lnbkluXG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q3JlZGVudGlhbHM+fVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBhbm9ueW1vdXNTaWduSW4oY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzKTogUHJvbWlzZTxDcmVkZW50aWFscz4ge1xuICAgIHJldHVybiB0aGlzLnNpbmdsZVByb21pc2UucnVuKCdfYW5vbnltb3VzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFjcmVkZW50aWFscyB8fCBjcmVkZW50aWFscy5zY29wZSAhPT0gJ2Fub255bW91cycpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IoJ25vIGFub255bW91cyBpbiBjcmVkZW50aWFscycpXG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBuZXdDcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLnJlcXVlc3QoQXBpVXJscy5BVVRIX1NJR05fSU5fQU5PTllNT1VTTFlfVVJMLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgd2l0aEJhc2ljQXV0aDogdHJ1ZSxcbiAgICAgICAgICBib2R5OiB7fSxcbiAgICAgICAgfSlcbiAgICAgICAgYXdhaXQgdGhpcy5sb2NhbENyZWRlbnRpYWxzLnNldENyZWRlbnRpYWxzKG5ld0NyZWRlbnRpYWxzKVxuICAgICAgICByZXR1cm4gbmV3Q3JlZGVudGlhbHNcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvci5lcnJvciA9PT0gRXJyb3JUeXBlLklOVkFMSURfR1JBTlQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuc2V0Q3JlZGVudGlhbHMobnVsbClcbiAgICAgICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcihlcnJvci5lcnJvcl9kZXNjcmlwdGlvbilcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHJlZnJlc2ggdG9rZW4gZnVuY3Rpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZyZXNoVG9rZW5cbiAgICogQHJldHVybiB7UHJvbWlzZTxDcmVkZW50aWFscz59XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGRlZmF1bHRSZWZyZXNoVG9rZW5GdW5jKHJlZnJlc2hUb2tlbj86IHN0cmluZywgY3JlZGVudGlhbHM/OiBDcmVkZW50aWFscyk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICBpZiAocmVmcmVzaFRva2VuID09PSB1bmRlZmluZWQgfHwgcmVmcmVzaFRva2VuID09PSAnJykge1xuICAgICAgY29uc3QgbXNnID0gJ3JlZnJlc2ggdG9rZW4gbm90IGZvdW5kJ1xuICAgICAgdGhpcy5vbkNyZWRlbnRpYWxzRXJyb3I/Lih7IG1zZyB9KVxuICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IobXNnKVxuICAgIH1cblxuICAgIGxldCB1cmw6IHN0cmluZyA9IEFwaVVybHMuQVVUSF9UT0tFTl9VUkxcblxuICAgIGlmIChjcmVkZW50aWFscz8udmVyc2lvbiA9PT0gJ3YyJykge1xuICAgICAgdXJsID0gQXBpVXJsc1YyLkFVVEhfVE9LRU5fVVJMXG4gICAgfVxuXG4gICAgY29uc3QgbmV3Q3JlZGVudGlhbHM6IENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5yZXF1ZXN0KHVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIGNsaWVudF9pZDogdGhpcy5jbGllbnRJZCxcbiAgICAgICAgY2xpZW50X3NlY3JldDogdGhpcy5jbGllbnRTZWNyZXQsXG4gICAgICAgIGdyYW50X3R5cGU6ICdyZWZyZXNoX3Rva2VuJyxcbiAgICAgICAgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgcmV0dXJuIHsgLi4ubmV3Q3JlZGVudGlhbHMsIHZlcnNpb246IGNyZWRlbnRpYWxzPy52ZXJzaW9uIHx8ICd2MScgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkZXZpY2VJZFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBnZXREZXZpY2VJZCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLmRldmljZUlEKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZXZpY2VJRFxuICAgIH1cbiAgICBsZXQgZGV2aWNlSWQ6IHN0cmluZyA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXRJdGVtKERldmljZUlkU2VjdGlvbk5hbWUpXG4gICAgaWYgKCEodHlwZW9mIGRldmljZUlkID09PSAnc3RyaW5nJyAmJiBkZXZpY2VJZC5sZW5ndGggPj0gMTYgJiYgZGV2aWNlSWQubGVuZ3RoIDw9IDQ4KSkge1xuICAgICAgZGV2aWNlSWQgPSB1dWlkdjQoKVxuICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldEl0ZW0oRGV2aWNlSWRTZWN0aW9uTmFtZSwgZGV2aWNlSWQpXG4gICAgfVxuICAgIHRoaXMuZGV2aWNlSUQgPSBkZXZpY2VJZFxuICAgIHJldHVybiBkZXZpY2VJZFxuICB9XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB1bkF1dGhlbnRpY2F0ZWQgZXJyb3IuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlcnJcbiAgICogQHJldHVybiB7UHJvbWlzZTxUPn1cbiAgICovXG4gIHByaXZhdGUgdW5BdXRoZW50aWNhdGVkRXJyb3I8VD4oZXJyPzogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgcmVzcEVycjogUmVzcG9uc2VFcnJvciA9IHtcbiAgICAgIGVycm9yOiBFcnJvclR5cGUuVU5BVVRIRU5USUNBVEVELFxuICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGVycixcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlc3BFcnIpXG4gIH1cblxuICAvKipcbiAgICogRGVidWcgbG9nZ2luZyBoZWxwZXJcbiAgICovXG4gIHByaXZhdGUgX2RlYnVnKC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9nRGVidWdNZXNzYWdlcykge1xuICAgICAgY29uc29sZS5sb2coJ1tPQXV0aDJDbGllbnRdJywgLi4uYXJncylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSU1QT1JUQU5UOlxuICAgKiAxLiBOZXZlciB0aHJvdyBpbiB0aGlzIG1ldGhvZCwgYXMgaXQgaXMgY2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yXG4gICAqIDIuIE5ldmVyIHJldHVybiBhIHNlc3Npb24gZnJvbSB0aGlzIG1ldGhvZCBhcyBpdCB3b3VsZCBiZSBjYWNoZWQgb3ZlclxuICAgKiAgICB0aGUgd2hvbGUgbGlmZXRpbWUgb2YgdGhlIGNsaWVudFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBfaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHsgZXJyb3I6IEVycm9yIHwgbnVsbCB9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIElmIG5vIGdldEluaXRpYWxTZXNzaW9uIGNhbGxiYWNrIGlzIHNldCwgbm90aGluZyB0byBkb1xuICAgICAgaWYgKCF0aGlzLmdldEluaXRpYWxTZXNzaW9uKSB7XG4gICAgICAgIHRoaXMuX2RlYnVnKCcjX2luaXRpYWxpemUoKScsICdubyBnZXRJbml0aWFsU2Vzc2lvbiBjYWxsYmFjayBzZXQsIHNraXBwaW5nJylcbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IG51bGwgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9kZWJ1ZygnI19pbml0aWFsaXplKCknLCAnY2FsbGluZyBnZXRJbml0aWFsU2Vzc2lvbiBjYWxsYmFjaycpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSwgZXJyb3IgfSA9IGF3YWl0IHRoaXMuZ2V0SW5pdGlhbFNlc3Npb24oKVxuXG4gICAgICAgIGlmIChkYXRhPy5zZXNzaW9uKSB7XG4gICAgICAgICAgdGhpcy5fZGVidWcoJyNfaW5pdGlhbGl6ZSgpJywgJ3Nlc3Npb24gb2J0YWluZWQgZnJvbSBnZXRJbml0aWFsU2Vzc2lvbicsIGRhdGEuc2Vzc2lvbilcbiAgICAgICAgICBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuc2V0Q3JlZGVudGlhbHMoZGF0YT8uc2Vzc2lvbilcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEludm9rZSBjYWxsYmFjayBmb3IgdXBwZXIgbGF5ZXIgdG8gaGFuZGxlIHVzZXIgc3RvcmFnZVxuICAgICAgICAvLyBUaGlzIGlzIGNhbGxlZCBCRUZPUkUgbG9jayBpcyByZWxlYXNlZCBzbyB1c2VyIHN0b3JhZ2UgaXMgYXRvbWljIHdpdGggc2Vzc2lvblxuICAgICAgICBpZiAodGhpcy5vbkluaXRpYWxTZXNzaW9uT2J0YWluZWQpIHtcbiAgICAgICAgICB0aGlzLl9kZWJ1ZygnI19pbml0aWFsaXplKCknLCAnY2FsbGluZyBvbkluaXRpYWxTZXNzaW9uT2J0YWluZWQgY2FsbGJhY2snKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm9uSW5pdGlhbFNlc3Npb25PYnRhaW5lZChkYXRhLCBlcnJvcilcbiAgICAgICAgICB9IGNhdGNoIChjYWxsYmFja0Vycm9yKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWJ1ZygnI19pbml0aWFsaXplKCknLCAnZXJyb3IgaW4gb25Jbml0aWFsU2Vzc2lvbk9idGFpbmVkJywgY2FsbGJhY2tFcnJvcilcbiAgICAgICAgICAgIC8vIERvbid0IGZhaWwgaW5pdGlhbGl6YXRpb24gaWYgY2FsbGJhY2sgZmFpbHNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgdGhpcy5fZGVidWcoJyNfaW5pdGlhbGl6ZSgpJywgJ2Vycm9yIGZyb20gZ2V0SW5pdGlhbFNlc3Npb24nLCBlcnJvcilcbiAgICAgICAgICByZXR1cm4geyBlcnJvciB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBlcnJvcjogbnVsbCB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5fZGVidWcoJyNfaW5pdGlhbGl6ZSgpJywgJ2V4Y2VwdGlvbiBkdXJpbmcgZ2V0SW5pdGlhbFNlc3Npb24nLCBlcnIpXG4gICAgICAgIHJldHVybiB7IGVycm9yOiBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyKSkgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLl9kZWJ1ZygnI19pbml0aWFsaXplKCknLCAndW5leHBlY3RlZCBlcnJvcicsIGVycm9yKVxuICAgICAgcmV0dXJuIHsgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2RlYnVnKCcjX2luaXRpYWxpemUoKScsICdlbmQnKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBY3F1aXJlcyBhIGdsb2JhbCBsb2NrIGJhc2VkIG9uIHRoZSBjbGllbnQgSUQuXG4gICAqIFRoaXMgZW5zdXJlcyB0aGF0IG9ubHkgb25lIG9wZXJhdGlvbiBjYW4gbW9kaWZ5IGNyZWRlbnRpYWxzIGF0IGEgdGltZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgX2FjcXVpcmVMb2NrPFI+KGFjcXVpcmVUaW1lb3V0OiBudW1iZXIsIGZuOiAoKSA9PiBQcm9taXNlPFI+KTogUHJvbWlzZTxSPiB7XG4gICAgdGhpcy5fZGVidWcoJyNfYWNxdWlyZUxvY2snLCAnYmVnaW4nLCBhY3F1aXJlVGltZW91dClcblxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5sb2NrQWNxdWlyZWQpIHtcbiAgICAgICAgLy8gTG9jayBpcyBhbHJlYWR5IGFjcXVpcmVkLCBxdWV1ZSB0aGUgb3BlcmF0aW9uXG4gICAgICAgIGNvbnN0IGxhc3QgPSB0aGlzLnBlbmRpbmdJbkxvY2subGVuZ3RoID8gdGhpcy5wZW5kaW5nSW5Mb2NrW3RoaXMucGVuZGluZ0luTG9jay5sZW5ndGggLSAxXSA6IFByb21pc2UucmVzb2x2ZSgpXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBhd2FpdCBsYXN0XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGZuKClcbiAgICAgICAgfSkoKVxuXG4gICAgICAgIHRoaXMucGVuZGluZ0luTG9jay5wdXNoKChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHJlc3VsdFxuICAgICAgICAgIH0gY2F0Y2ggKF9lOiBhbnkpIHtcbiAgICAgICAgICAgIC8vIHdlIGp1c3QgY2FyZSBpZiBpdCBmaW5pc2hlZFxuICAgICAgICAgIH1cbiAgICAgICAgfSkoKSwpXG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICAvLyBBY3F1aXJlIHRoZSBsb2NrXG4gICAgICB0aGlzLl9kZWJ1ZygnI19hY3F1aXJlTG9jaycsICdhY3F1aXJpbmcgbG9jayBmb3IgY2xpZW50JywgdGhpcy5jbGllbnRJZClcblxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5sb2NrQWNxdWlyZWQgPSB0cnVlXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZm4oKVxuXG4gICAgICAgIHRoaXMucGVuZGluZ0luTG9jay5wdXNoKChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHJlc3VsdFxuICAgICAgICAgIH0gY2F0Y2ggKF9lOiBhbnkpIHtcbiAgICAgICAgICAgIC8vIHdlIGp1c3QgY2FyZSBpZiBpdCBmaW5pc2hlZFxuICAgICAgICAgIH1cbiAgICAgICAgfSkoKSwpXG5cbiAgICAgICAgYXdhaXQgcmVzdWx0XG5cbiAgICAgICAgLy8ga2VlcCBkcmFpbmluZyB0aGUgcXVldWUgdW50aWwgdGhlcmUncyBub3RoaW5nIHRvIHdhaXQgb25cbiAgICAgICAgd2hpbGUgKHRoaXMucGVuZGluZ0luTG9jay5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCB3YWl0T24gPSBbLi4udGhpcy5wZW5kaW5nSW5Mb2NrXVxuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHdhaXRPbilcbiAgICAgICAgICB0aGlzLnBlbmRpbmdJbkxvY2suc3BsaWNlKDAsIHdhaXRPbi5sZW5ndGgpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzdWx0XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLl9kZWJ1ZygnI19hY3F1aXJlTG9jaycsICdyZWxlYXNpbmcgbG9jayBmb3IgY2xpZW50JywgdGhpcy5jbGllbnRJZClcbiAgICAgICAgdGhpcy5sb2NrQWNxdWlyZWQgPSBmYWxzZVxuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9kZWJ1ZygnI19hY3F1aXJlTG9jaycsICdlbmQnKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gZ2V0IGNyZWRlbnRpYWxzIChjYWxsZWQgd2l0aGluIGxvY2spXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9nZXRDcmVkZW50aWFscygpOiBQcm9taXNlPENyZWRlbnRpYWxzIHwgbnVsbD4ge1xuICAgIGxldCBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmxvY2FsQ3JlZGVudGlhbHMuZ2V0Q3JlZGVudGlhbHMoKVxuICAgIC8vIG5vZGUgYWRhcHRlciDlnLrmma/kuIvvvIxzY29wZSDkuLogREVGQVVMVF9OT0RFX0FDQ0VTU19TQ09QRe+8jOS4jemcgOimgeWIt+aWsCB0b2tlblxuICAgIGlmIChjcmVkZW50aWFscy5zY29wZSA9PT0gREVGQVVMVF9OT0RFX0FDQ0VTU19TQ09QRSkge1xuICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gICAgfVxuICAgIGlmICghY3JlZGVudGlhbHMpIHtcbiAgICAgIGNvbnN0IG1zZyA9ICdjcmVkZW50aWFscyBub3QgZm91bmQnXG4gICAgICB0aGlzLm9uQ3JlZGVudGlhbHNFcnJvcj8uKHsgbXNnIH0pXG4gICAgICByZXR1cm4gdGhpcy51bkF1dGhlbnRpY2F0ZWRFcnJvcihtc2cpXG4gICAgfVxuICAgIGlmIChpc0NyZWRlbnRpYWxzRXhwaXJlZChjcmVkZW50aWFscykpIHtcbiAgICAgIGlmIChjcmVkZW50aWFscy5yZWZyZXNoX3Rva2VuKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLl9yZWZyZXNoVG9rZW4oY3JlZGVudGlhbHMpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGNyZWRlbnRpYWxzLnNjb3BlID09PSAnYW5vbnltb3VzJykge1xuICAgICAgICAgICAgY3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmFub255bW91c0xvZ2luKGNyZWRlbnRpYWxzKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uQ3JlZGVudGlhbHNFcnJvcj8uKHsgbXNnOiBlcnJvci5lcnJvcl9kZXNjcmlwdGlvbiB9KVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjcmVkZW50aWFscy5zY29wZSA9PT0gJ2Fub255bW91cycpIHtcbiAgICAgICAgY3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLmFub255bW91c0xvZ2luKGNyZWRlbnRpYWxzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbXNnID0gJ25vIHJlZnJlc2ggdG9rZW4gZm91bmQgaW4gY3JlZGVudGlhbHMnXG4gICAgICAgIHRoaXMub25DcmVkZW50aWFsc0Vycm9yPy4oeyBtc2cgfSlcbiAgICAgICAgcmV0dXJuIHRoaXMudW5BdXRoZW50aWNhdGVkRXJyb3IobXNnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3JlZGVudGlhbHNcbiAgfVxufVxuIl19
|
|
@@ -5,6 +5,7 @@ export class AuthError extends Error {
|
|
|
5
5
|
this.name = 'AuthError';
|
|
6
6
|
this.status = error.error;
|
|
7
7
|
this.code = error.error_code;
|
|
8
|
+
this.requestId = error.requestId;
|
|
8
9
|
}
|
|
9
10
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2F1dGgtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFNBQVUsU0FBUSxLQUFLO0lBaUJsQyxZQUFZLEtBQUs7UUFDZixLQUFLLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUh2QyxrQkFBYSxHQUFHLElBQUksQ0FBQTtRQUk1QixJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQTtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUE7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQTtJQUNsQyxDQUFDO0NBQ0YifQ==
|
package/dist/esm/index.js
CHANGED
|
@@ -36,6 +36,21 @@ export class CloudbaseOAuth {
|
|
|
36
36
|
if (detectSessionInUrl) {
|
|
37
37
|
this.oauth2client.setGetInitialSession(this.authApi.getInitialSession.bind(this.authApi));
|
|
38
38
|
}
|
|
39
|
+
else {
|
|
40
|
+
try {
|
|
41
|
+
const url = new URL(window.location.href);
|
|
42
|
+
const code = url.searchParams.get('code');
|
|
43
|
+
const state = url.searchParams.get('state');
|
|
44
|
+
const cacheData = JSON.parse(sessionStorage.getItem(state) || 'null');
|
|
45
|
+
if (code && state && cacheData?.hash) {
|
|
46
|
+
url.hash = cacheData.hash;
|
|
47
|
+
window.history.replaceState(null, '', url.toString());
|
|
48
|
+
window.location.replace(url.toString());
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
}
|
|
53
|
+
}
|
|
39
54
|
}
|
|
40
55
|
initializeSession(onUserObtained) {
|
|
41
56
|
if (!this.detectSessionInUrl) {
|
|
@@ -46,4 +61,4 @@ export class CloudbaseOAuth {
|
|
|
46
61
|
this.oauth2client.initialize();
|
|
47
62
|
}
|
|
48
63
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQzFELE9BQU8sRUFBZSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTs4QkFDakIsZUFBZTt5QkFBL0IsVUFBVTtBQUl0QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFakosTUFBTSxPQUFPLGNBQWM7SUFLekIsWUFBWSxXQUF3QjtRQUVsQyxNQUFNLEVBQ0osU0FBUyxFQUNULE9BQU8sR0FBRyxlQUFlLEVBQ3pCLFFBQVEsRUFDUixHQUFHLEVBQ0gsT0FBTyxFQUNQLE9BQU8sRUFDUCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxPQUFPLEVBQ1Asa0JBQWtCLEVBQ2xCLE9BQU8sRUFDUCxJQUFJLEVBQ0osVUFBVSxFQUNWLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsS0FBSyxHQUNOLEdBQUcsV0FBVyxDQUFBO1FBQ2YsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixJQUFJLEtBQUssQ0FBQTtRQUNyRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDO1lBQ25DLFNBQVM7WUFDVCxPQUFPO1lBQ1AsUUFBUTtZQUNSLEdBQUc7WUFDSCxPQUFPO1lBQ1AsV0FBVyxFQUFFLFdBQVcsSUFBSSxPQUFPO1lBQ25DLG1CQUFtQjtZQUNuQixPQUFPO1lBQ1Asa0JBQWtCO1lBQ2xCLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRTtZQUN0QixJQUFJO1lBQ0osVUFBVTtZQUNWLFFBQVE7WUFDUixLQUFLO1NBQ04sQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQztZQUN0QixpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUNwQyxHQUFHLFdBQVc7WUFFZCxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2hGLE9BQU87U0FDUixDQUFDLENBQUE7UUFJRixJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7U0FDMUY7YUFBTTtZQUVMLElBQUk7Z0JBQ0YsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDekMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQ3pDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO2dCQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUE7Z0JBQ3JFLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxTQUFTLEVBQUUsSUFBSSxFQUFFO29CQUNwQyxHQUFHLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUE7b0JBQ3pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7b0JBQ3JELE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO2lCQUN4QzthQUNGO1lBQUMsT0FBTyxLQUFLLEVBQUU7YUFFZjtTQUNGO0lBR0gsQ0FBQztJQU9NLGlCQUFpQixDQUFDLGNBQWlIO1FBQ3hJLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDOUQsT0FBTTtTQUNQO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUU3RCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ2hDLENBQUM7Q0FDRiJ9
|
|
@@ -349,6 +349,10 @@ class OAuth2Client {
|
|
|
349
349
|
break;
|
|
350
350
|
}
|
|
351
351
|
catch (responseError) {
|
|
352
|
+
try {
|
|
353
|
+
responseError.requestId = responseError.requestId || options.headers[RequestIdHeaderName] || '';
|
|
354
|
+
}
|
|
355
|
+
catch (error) { }
|
|
352
356
|
if (options.withCredentials && responseError && responseError.error === ErrorType.UNAUTHENTICATED) {
|
|
353
357
|
await this.setCredentials(null);
|
|
354
358
|
return Promise.reject(responseError);
|
|
@@ -704,4 +708,4 @@ OAuth2Client.minRetry = 0;
|
|
|
704
708
|
OAuth2Client.maxRetry = 5;
|
|
705
709
|
OAuth2Client.retryInterval = 1000;
|
|
706
710
|
export { OAuth2Client };
|
|
707
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29hdXRoMmNsaWVudC9vYXV0aDJjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNwQyxPQUFPLEVBQ0wsT0FBTyxFQUNQLFNBQVMsRUFDVCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixNQUFNLEdBQ1AsTUFBTSxnQkFBZ0IsQ0FBQTtBQWF2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRWhELE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFBO0FBQzFDLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFBO0FBQ3hDLE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFBO0FBV3ZDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBb0IsS0FBSyxXQUFjLEdBQVcsRUFBRSxPQUF3QjtJQUNyRyxJQUFJLE1BQU0sR0FBYSxJQUFJLENBQUE7SUFDM0IsSUFBSSxhQUFhLEdBQXlCLElBQUksQ0FBQTtJQUM5QyxJQUFJO1FBRUYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFDdkIsV0FBVyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7U0FDM0I7UUFDRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUksT0FBTyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM1RCxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ3BEO1FBQ0QsTUFBTSxjQUFjLEdBQWEsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBQzlELE1BQU0sWUFBWSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ2hELElBQUksWUFBWSxFQUFFLEtBQUssRUFBRTtZQUN2QixhQUFhLEdBQUcsWUFBNkIsQ0FBQTtZQUM3QyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQTtTQUNoRDthQUFNO1lBQ0wsTUFBTSxHQUFHLFlBQWlCLENBQUE7U0FDM0I7S0FDRjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsYUFBYSxHQUFHO1lBQ2QsS0FBSyxFQUFFLFNBQVMsQ0FBQyxXQUFXO1lBQzVCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ2hDLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRO1NBQ2pDLENBQUE7S0FDRjtJQUNELElBQUksYUFBYSxFQUFFO1FBQ2pCLE1BQU0sYUFBYSxDQUFBO0tBQ3BCO1NBQU07UUFDTCxPQUFPLE1BQU0sQ0FBQTtLQUNkO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBNEIsRUFBRSxPQUFnQyxFQUFpQixFQUFFO0lBQy9HLElBQUksYUFBNEIsQ0FBQTtJQUNoQyxNQUFNLGFBQWEsR0FBMkIsT0FBTyxJQUFJLEVBQUUsQ0FBQTtJQUMzRCxJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7UUFDMUIsYUFBYSxHQUFHO1lBQ2QsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLEtBQUs7WUFDN0MsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxPQUFPO1lBQ25FLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUztZQUNsQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSztTQUM5QyxDQUFBO0tBQ0Y7U0FBTTtRQUNMLE1BQU0sV0FBVyxHQUEyQixLQUFLLElBQUksRUFBRSxDQUFBO1FBQ3ZELGFBQWEsR0FBRztZQUNkLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxJQUFJLFdBQVcsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLEtBQUs7WUFDbEUsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLGlCQUFpQixJQUFJLFdBQVcsQ0FBQyxpQkFBaUI7WUFDbkYsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLFNBQVM7WUFDM0QsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPLElBQUksV0FBVyxDQUFDLE9BQU87U0FDdEQsQ0FBQTtLQUNGO0lBQ0QsT0FBTyxhQUFhLENBQUE7QUFDdEIsQ0FBQyxDQUFBO0FBTUQsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLE1BQU0sRUFBRSxDQUFBO0FBQ2pCLENBQUM7QUFLRCxNQUFNLGNBQWM7SUFPbEIsWUFBWSxJQUFzQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFBO0lBQzdCLENBQUM7SUFLRCxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVc7UUFDdkIsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBTUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFXO1FBQzFCLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ3RELENBQUM7SUFPRCxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ3RDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBTUQsV0FBVyxDQUFDLEdBQVc7UUFDckIsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBTUQsY0FBYyxDQUFDLEdBQVc7UUFDeEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7SUFDdEQsQ0FBQztJQU9ELFdBQVcsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUNwQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDMUQsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUE7QUFjbEQsU0FBUyxvQkFBb0IsQ0FBQyxXQUF3QjtJQUNwRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUE7SUFDcEIsSUFBSSxXQUFXLEVBQUUsVUFBVSxJQUFJLFdBQVcsRUFBRSxZQUFZLEVBQUU7UUFDeEQsU0FBUyxHQUFHLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQTtLQUNoRDtJQUNELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUM7QUFPRCxNQUFNLGdCQUFnQjtJQWlCcEIsWUFBWSxPQUFnQztRQVZwQyxnQkFBVyxHQUF1QixJQUFJLENBQUE7UUFFdEMseUJBQW9CLEdBQXVCLElBQUksQ0FBQTtRQUUvQyxrQkFBYSxHQUFrQixJQUFJLENBQUE7UUFPekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQTtRQUNoRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUE7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDbkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQTtJQUNoRCxDQUFDO0lBRU0seUJBQXlCO1FBQzlCLElBQUksV0FBVyxHQUFnQixJQUFJLENBQUE7UUFDbkMsTUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDeEUsSUFBSSxRQUFRLEtBQUssU0FBUyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7WUFDL0MsSUFBSTtnQkFDRixXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDbEMsSUFBSSxXQUFXLEVBQUUsVUFBVSxFQUFFO29CQUMzQixXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtpQkFDMUQ7YUFDRjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO2dCQUM5QyxXQUFXLEdBQUcsSUFBSSxDQUFBO2FBQ25CO1NBQ0Y7UUFDRCxPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDO0lBTU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxXQUF5QjtRQUNuRCxJQUFJLFdBQVcsRUFBRSxVQUFVLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUU7Z0JBQzVCLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTthQUNyRjtZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsTUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtnQkFDcEQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUE7YUFDNUQ7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtTQUMvQjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoQixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO2FBQ3JEO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUE7U0FDeEI7SUFDSCxDQUFDO0lBTU0sdUJBQXVCLENBQUMsV0FBeUI7UUFDdEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFdBQVcsQ0FBQTtRQUV2QyxJQUFJLFdBQVcsQ0FBQyxLQUFLLEtBQUsseUJBQXlCLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7U0FDL0I7SUFDSCxDQUFDO0lBTU0sS0FBSyxDQUFDLGNBQWM7UUFDekIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN6RCxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDMUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUE7Z0JBQ2xGLElBQUksc0JBQXNCLEVBQUU7b0JBQzFCLE9BQU8sV0FBVyxDQUFBO2lCQUNuQjtnQkFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTthQUMvQjtZQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUN6QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFLTyxLQUFLLENBQUMscUJBQXFCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDakUsSUFBSSxXQUFXLEdBQWdCLElBQUksQ0FBQTtZQUNuQyxJQUFJLHNCQUFzQixHQUFHLEtBQUssQ0FBQTtZQUNsQyxNQUFNLFFBQVEsR0FBVyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1lBQzFFLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtnQkFDZCxJQUFJO29CQUNGLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO29CQUNsQyxJQUFJLFdBQVcsRUFBRSxVQUFVLEVBQUU7d0JBQzNCLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFBO3FCQUMxRDtpQkFDRjtnQkFBQyxPQUFPLEtBQUssRUFBRTtvQkFDZCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO29CQUNwRCxXQUFXLEdBQUcsSUFBSSxDQUFBO2lCQUNuQjthQUNGO2lCQUFNO2dCQUNMLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFBO2dCQUMvQyxzQkFBc0IsR0FBRyxJQUFJLENBQUE7YUFDOUI7WUFDRCxPQUFPLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLENBQUE7UUFDaEQsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0Y7QUFLRCxNQUFhLFlBQVk7SUE2Q3ZCLFlBQVksT0FBNEI7UUFqQ2pDLHNCQUFpQixHQUE0QyxJQUFJLENBQUE7UUFDOUQsaUJBQVksR0FBRyxLQUFLLENBQUE7UUFDcEIsa0JBQWEsR0FBbUIsRUFBRSxDQUFBO1FBa0JwQyxrQkFBYSxHQUFrQixJQUFJLENBQUE7UUFjekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDekIsT0FBTyxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUE7U0FDMUI7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ3BDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQTtTQUMvQjtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQTtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFBO1FBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQTtRQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUE7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDbkUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3ZFLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUE7U0FDdkM7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFBO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFBO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUU5QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksY0FBYyxDQUFBO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDO1lBQzNDLGdCQUFnQixFQUFFLGVBQWUsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNuRCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1NBQzNCLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQTtRQUN4QyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQTtTQUMvRTtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUM5QixJQUFJO1lBQ0YsSUFBSSxJQUFJLEVBQUUsRUFBRTtnQkFDVixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUE7Z0JBQ3BDLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtvQkFDN0MsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7b0JBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQTtpQkFDeEI7YUFDRjtTQUNGO1FBQUMsT0FBTyxLQUFLLEVBQUU7U0FFZjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFBO1FBQ2hGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUE7UUFDdEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQTtRQUdwRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFBO1FBQ2xELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUE7UUFDaEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFBO1FBRTlDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQzVELElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQTtRQUM1QyxDQUFDLENBQUMsQ0FBQTtJQUlKLENBQUM7SUFPTSxvQkFBb0IsQ0FBQyxRQUcxQjtRQUNBLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUE7SUFDbkMsQ0FBQztJQVFNLDJCQUEyQixDQUFDLFFBQThFO1FBQy9HLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxRQUFRLENBQUE7SUFDMUMsQ0FBQztJQVFELEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBdUM7UUFFdEQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsT0FBTyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQTtTQUNwQztRQUVELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFBO1lBQzdCLE9BQU8sTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUE7U0FDcEM7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFBO1FBRTFHLE9BQU8sTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUE7SUFDckMsQ0FBQztJQU9NLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBeUI7UUFFbkQsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUE7UUFDNUIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO0lBQzdGLENBQUM7SUFNTSx1QkFBdUIsQ0FBQyxXQUF5QjtRQUN0RCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUNuRSxDQUFDO0lBS00sS0FBSyxDQUFDLGNBQWM7UUFFekIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUE7UUFDNUIsTUFBTSxXQUFXLEdBQWdCLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBRTVELElBQUksV0FBVyxFQUFFLEtBQUssS0FBSyx5QkFBeUIsRUFBRTtZQUNwRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFBO1NBQ2pEO1FBQ0QsSUFBSSxXQUFXLEVBQUUsWUFBWSxFQUFFO1lBQzdCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUE7U0FDakQ7UUFDRCxNQUFNLE9BQU8sR0FBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFBO1FBQ25FLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBT00sS0FBSyxDQUFDLE9BQU8sQ0FBSSxHQUFXLEVBQUUsT0FBa0M7UUFDckUsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sR0FBRyxFQUFFLENBQUE7U0FDYjtRQUNELE1BQU0sS0FBSyxHQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDakUsT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUN2RixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTyxDQUFDLE9BQU8sR0FBRztnQkFDaEIsR0FBRyxJQUFJLENBQUMsT0FBTztnQkFDZixHQUFHLE9BQU8sQ0FBQyxPQUFPO2FBQ25CLENBQUE7U0FDRjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDekMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLGlCQUFpQixFQUFFLENBQUE7U0FDM0Q7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ3hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQ3pDLE9BQU8sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsR0FBRyxRQUFRLENBQUE7U0FDL0M7UUFDRCxJQUFJLE9BQU8sRUFBRSxhQUFhLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM1QyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFBO1NBQy9DO1FBQ0QsSUFBSSxPQUFPLEVBQUUsZUFBZSxFQUFFO1lBRzVCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtZQUN6RyxJQUFJLFdBQVcsRUFBRTtnQkFDZixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ25CLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ3hCLEdBQUcsSUFBSSxHQUFHLENBQUE7cUJBQ1g7b0JBQ0QsR0FBRyxJQUFJLGdCQUFnQixXQUFXLENBQUMsWUFBWSxFQUFFLENBQUE7aUJBQ2xEO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLEdBQUcsV0FBVyxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUE7aUJBQ3hGO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNqRCxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO2dCQUN2QyxHQUFHLElBQUksYUFBYSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7YUFDcEM7U0FDRjtRQUNELElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2QixHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUE7U0FDL0M7UUFDRCxJQUFJLFFBQVEsR0FBYSxJQUFJLENBQUE7UUFDN0IsTUFBTSxlQUFlLEdBQVcsS0FBSyxHQUFHLENBQUMsQ0FBQTtRQUN6QyxLQUFLLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRSxXQUFXLEdBQUcsZUFBZSxFQUFFLFdBQVcsRUFBRSxFQUFFO1lBQ3RFLElBQUk7Z0JBQ0YsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ3pDLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBSSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7aUJBQzNEO3FCQUFNO29CQUNMLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO2lCQUNuRDtnQkFFRCxJQUFJLENBQUMsQ0FBRSxRQUFnQixFQUFFLElBQUksRUFBRTtvQkFDN0IsTUFBTTt3QkFDSixLQUFLLEVBQUcsUUFBZ0IsQ0FBQyxJQUFJO3dCQUM3QixpQkFBaUIsRUFBRyxRQUFnQixDQUFDLE9BQU87d0JBQzVDLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRO3FCQUNqQyxDQUFBO2lCQUNGO2dCQUVELE1BQUs7YUFDTjtZQUFDLE9BQU8sYUFBYSxFQUFFO2dCQUN0QixJQUFJLE9BQU8sQ0FBQyxlQUFlLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLGVBQWUsRUFBRTtvQkFDakcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO29CQUMvQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7aUJBQ3JDO2dCQUVELElBQUksV0FBVyxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMsS0FBSyxLQUFLLGFBQWEsRUFBRTtvQkFDcEYsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO2lCQUNyQzthQUNGO1lBQ0QsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQTtTQUM3QztRQUNELE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFTSxLQUFLLENBQUMsbUJBQW1CLENBQUksR0FBVyxFQUFFLE9BQXdCO1FBQ3ZFLElBQUksTUFBTSxHQUFhLElBQUksQ0FBQTtRQUMzQixJQUFJLGFBQWEsR0FBeUIsSUFBSSxDQUFBO1FBQzlDLElBQUk7WUFDRixJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUE7WUFDbEIsSUFBSTtnQkFDRixTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTthQUM1QztZQUFDLE9BQU8sS0FBSyxFQUFFLEdBQUU7WUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO2dCQUNqRSxJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixJQUFJLEVBQUU7b0JBQ0osR0FBRztvQkFDSCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07b0JBQ3RCLE9BQU8sRUFBRTt3QkFDUCxNQUFNLEVBQUUsMkJBQTJCO3dCQUNuQyxZQUFZLEVBQUUsU0FBUzt3QkFDdkIsR0FBRyxPQUFPLENBQUMsT0FBTztxQkFDbkI7b0JBQ0QsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO2lCQUNuQjthQUNGLENBQUMsQ0FBQTtZQUVGLElBQUksY0FBYyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ3BDLGFBQWEsR0FBRyxjQUFjLEVBQUUsSUFBcUIsQ0FBQTtnQkFDckQsYUFBYSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDM0M7aUJBQU07Z0JBQ0wsTUFBTSxHQUFHLGNBQWMsRUFBRSxJQUFTLENBQUE7YUFDbkM7U0FDRjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsYUFBYSxHQUFHO2dCQUNkLEtBQUssRUFBRSxTQUFTLENBQUMsV0FBVztnQkFDNUIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ2hDLFNBQVMsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDO2FBQzVCLENBQUE7U0FDRjtRQUVELElBQUksYUFBYSxFQUFFO1lBQ2pCLE1BQU0sYUFBYSxDQUFBO1NBQ3BCO2FBQU07WUFDTCxPQUFPLE1BQU0sQ0FBQTtTQUNkO0lBQ0gsQ0FBQztJQUtNLEtBQUssQ0FBQyxjQUFjO1FBRXpCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFBO1FBRTVCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFLTSxrQkFBa0I7UUFDdkIsTUFBTSxXQUFXLEdBQWdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsRUFBRSxDQUFBO1FBQ2xGLE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRO1FBQ25CLE1BQU0sV0FBVyxHQUFnQixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUM3RSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sR0FBRyxHQUFHLHVCQUF1QixDQUFBO1lBQ25DLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtZQUNsQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUN0QztRQUNELE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQTtJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVM7UUFDcEIsTUFBTSxXQUFXLEdBQWdCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxDQUFBO1FBQzdFLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxHQUFHLEdBQUcsdUJBQXVCLENBQUE7WUFDbkMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ3RDO1FBQ0QsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFBO0lBQzNCLENBQUM7SUFPTSxLQUFLLENBQUMsWUFBWSxDQUFDLFdBQXdCLEVBQUUsT0FBa0M7UUFFcEYsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUE7UUFFNUIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNwRixDQUFDO0lBS08sS0FBSyxDQUFDLGFBQWEsQ0FBQyxXQUF3QixFQUFFLE9BQWtDO1FBQ3RGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBRXhELElBQUksV0FBVyxFQUFFLEtBQUssS0FBSyx5QkFBeUIsRUFBRTtnQkFDcEQsT0FBTyxXQUFXLENBQUE7YUFDbkI7WUFFRCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRTtnQkFDOUMsTUFBTSxHQUFHLEdBQUcsdUNBQXVDLENBQUE7Z0JBQ25ELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtnQkFDbEMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDdEM7WUFDRCxJQUFJO2dCQUNGLE1BQU0sY0FBYyxHQUFnQixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFBO2dCQUN2RyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUE7Z0JBRTFELElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFBO2dCQUVsRyxPQUFPLGNBQWMsQ0FBQTthQUN0QjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLElBQUksT0FBTyxFQUFFLFVBQVUsRUFBRTtvQkFDdkIsTUFBTSxLQUFLLENBQUE7aUJBQ1o7Z0JBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxhQUFhLEVBQUU7b0JBQzNDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtvQkFDaEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFBO29CQUNuQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7b0JBQ2xDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFBO2lCQUN0QztnQkFDRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFBO2dCQUMzRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7YUFDN0I7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQXdCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDMUQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzVCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFBO2dCQUNyRCxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQTthQUNsRTtpQkFBTTtnQkFDTCxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFBO2FBQ3REO1lBRUQsT0FBTyxXQUFXLENBQUE7UUFDcEIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBT08sVUFBVSxDQUFDLEtBQWE7UUFDOUIsSUFBSSxhQUFhLEdBQXlCLElBQUksQ0FBQTtRQUM5QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRTtZQUMvRixhQUFhLEdBQUc7Z0JBQ2QsS0FBSyxFQUFFLFNBQVMsQ0FBQyxXQUFXO2dCQUM1QixpQkFBaUIsRUFBRSw0QkFBNEI7YUFDaEQsQ0FBQTtTQUNGO1FBQ0QsSUFBSSxhQUFhLEVBQUU7WUFDakIsTUFBTSxhQUFhLENBQUE7U0FDcEI7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFRTyxXQUFXLENBQUMsS0FBYSxFQUFFLFdBQW1CO1FBQ3BELElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQ2hDLE9BQU8sV0FBVyxDQUFBO1NBQ25CO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFPTyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQVU7UUFDNUIsT0FBTyxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ25DLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsT0FBTyxFQUFFLENBQUE7WUFDWCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDUixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFPTyxLQUFLLENBQUMsZUFBZSxDQUFDLFdBQXdCO1FBQ3BELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3JELElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUU7Z0JBQ3JELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLDZCQUE2QixDQUFDLENBQUE7YUFDaEU7WUFDRCxJQUFJO2dCQUNGLE1BQU0sY0FBYyxHQUFnQixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLDRCQUE0QixFQUFFO29CQUMzRixNQUFNLEVBQUUsTUFBTTtvQkFDZCxhQUFhLEVBQUUsSUFBSTtvQkFDbkIsSUFBSSxFQUFFLEVBQUU7aUJBQ1QsQ0FBQyxDQUFBO2dCQUNGLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQTtnQkFDMUQsT0FBTyxjQUFjLENBQUE7YUFDdEI7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLGFBQWEsRUFBRTtvQkFDM0MsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO29CQUNoRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtpQkFDMUQ7Z0JBQ0QsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBT08sS0FBSyxDQUFDLHVCQUF1QixDQUFDLFlBQXFCLEVBQUUsV0FBeUI7UUFDcEYsSUFBSSxZQUFZLEtBQUssU0FBUyxJQUFJLFlBQVksS0FBSyxFQUFFLEVBQUU7WUFDckQsTUFBTSxHQUFHLEdBQUcseUJBQXlCLENBQUE7WUFDckMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ3RDO1FBRUQsSUFBSSxHQUFHLEdBQVcsT0FBTyxDQUFDLGNBQWMsQ0FBQTtRQUV4QyxJQUFJLFdBQVcsRUFBRSxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ2pDLEdBQUcsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFBO1NBQy9CO1FBRUQsTUFBTSxjQUFjLEdBQWdCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDMUQsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUU7Z0JBQ0osU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN4QixhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQ2hDLFVBQVUsRUFBRSxlQUFlO2dCQUMzQixhQUFhLEVBQUUsWUFBWTthQUM1QjtTQUNGLENBQUMsQ0FBQTtRQUVGLE9BQU8sRUFBRSxHQUFHLGNBQWMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUNyRSxDQUFDO0lBS08sS0FBSyxDQUFDLFdBQVc7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtTQUNyQjtRQUNELElBQUksUUFBUSxHQUFXLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUN0RSxJQUFJLENBQUMsQ0FBQyxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxFQUFFLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsRUFBRTtZQUNyRixRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUE7WUFDbkIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsQ0FBQTtTQUMxRDtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFNTyxvQkFBb0IsQ0FBSSxHQUFZO1FBQzFDLE1BQU0sT0FBTyxHQUFrQjtZQUM3QixLQUFLLEVBQUUsU0FBUyxDQUFDLGVBQWU7WUFDaEMsaUJBQWlCLEVBQUUsR0FBRztTQUN2QixDQUFBO1FBQ0QsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFLTyxNQUFNLENBQUMsR0FBRyxJQUFXO1FBQzNCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtTQUN2QztJQUNILENBQUM7SUFRTyxLQUFLLENBQUMsV0FBVztRQUN2QixJQUFJO1lBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSw2Q0FBNkMsQ0FBQyxDQUFBO2dCQUM1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFBO2FBQ3ZCO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFBO1lBRW5FLElBQUk7Z0JBQ0YsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO2dCQUV0RCxJQUFJLElBQUksRUFBRSxPQUFPLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUseUNBQXlDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUN0RixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO2lCQUMxRDtnQkFJRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtvQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSwyQ0FBMkMsQ0FBQyxDQUFBO29CQUMxRSxJQUFJO3dCQUNGLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtxQkFDakQ7b0JBQUMsT0FBTyxhQUFhLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsbUNBQW1DLEVBQUUsYUFBYSxDQUFDLENBQUE7cUJBRWxGO2lCQUNGO2dCQUNELElBQUksS0FBSyxFQUFFO29CQUNULElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsOEJBQThCLEVBQUUsS0FBSyxDQUFDLENBQUE7b0JBQ3BFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQTtpQkFDakI7Z0JBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQTthQUN2QjtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsb0NBQW9DLEVBQUUsR0FBRyxDQUFDLENBQUE7Z0JBQ3hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFBO2FBQ3RFO1NBQ0Y7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDeEQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUE7U0FDNUU7Z0JBQVM7WUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ3JDO0lBQ0gsQ0FBQztJQU1PLEtBQUssQ0FBQyxZQUFZLENBQUksY0FBc0IsRUFBRSxFQUFvQjtRQUN4RSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUE7UUFFckQsSUFBSTtZQUNGLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFFckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtnQkFFOUcsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtvQkFDekIsTUFBTSxJQUFJLENBQUE7b0JBQ1YsT0FBTyxNQUFNLEVBQUUsRUFBRSxDQUFBO2dCQUNuQixDQUFDLENBQUMsRUFBRSxDQUFBO2dCQUVKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7b0JBQ2xDLElBQUk7d0JBQ0YsTUFBTSxNQUFNLENBQUE7cUJBQ2I7b0JBQUMsT0FBTyxFQUFPLEVBQUU7cUJBRWpCO2dCQUNILENBQUMsQ0FBQyxFQUFFLENBQUUsQ0FBQTtnQkFFTixPQUFPLE1BQU0sQ0FBQTthQUNkO1lBR0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBRXhFLElBQUk7Z0JBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUE7Z0JBRXhCLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFBO2dCQUVuQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO29CQUNsQyxJQUFJO3dCQUNGLE1BQU0sTUFBTSxDQUFBO3FCQUNiO29CQUFDLE9BQU8sRUFBTyxFQUFFO3FCQUVqQjtnQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFFLENBQUE7Z0JBRU4sTUFBTSxNQUFNLENBQUE7Z0JBR1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRTtvQkFDaEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtvQkFDdEMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2lCQUM1QztnQkFFRCxPQUFPLE1BQU0sTUFBTSxDQUFBO2FBQ3BCO29CQUFTO2dCQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLDJCQUEyQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDeEUsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUE7YUFDMUI7U0FDRjtnQkFBUztZQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ3BDO0lBQ0gsQ0FBQztJQUtPLEtBQUssQ0FBQyxlQUFlO1FBQzNCLElBQUksV0FBVyxHQUFnQixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUUzRSxJQUFJLFdBQVcsQ0FBQyxLQUFLLEtBQUsseUJBQXlCLEVBQUU7WUFDbkQsT0FBTyxXQUFXLENBQUE7U0FDbkI7UUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sR0FBRyxHQUFHLHVCQUF1QixDQUFBO1lBQ25DLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtZQUNsQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUN0QztRQUNELElBQUksb0JBQW9CLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDckMsSUFBSSxXQUFXLENBQUMsYUFBYSxFQUFFO2dCQUM3QixJQUFJO29CQUNGLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUE7aUJBQ3BEO2dCQUFDLE9BQU8sS0FBSyxFQUFFO29CQUNkLElBQUksV0FBVyxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUU7d0JBQ3JDLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUE7cUJBQ3JEO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUE7d0JBQzNELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtxQkFDN0I7aUJBQ0Y7YUFDRjtpQkFBTSxJQUFJLFdBQVcsQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO2dCQUM1QyxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO2FBQ3JEO2lCQUFNO2dCQUNMLE1BQU0sR0FBRyxHQUFHLHVDQUF1QyxDQUFBO2dCQUNuRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7Z0JBQ2xDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ3RDO1NBQ0Y7UUFDRCxPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDOztBQXpzQmMseUJBQVksR0FBRyxDQUFDLEFBQUosQ0FBSTtBQUNoQixxQkFBUSxHQUFHLENBQUMsQUFBSixDQUFJO0FBQ1oscUJBQVEsR0FBRyxDQUFDLEFBQUosQ0FBSTtBQUNaLDBCQUFhLEdBQUcsSUFBSSxBQUFQLENBQU87U0FKeEIsWUFBWSJ9
|
|
711
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29hdXRoMmNsaWVudC9vYXV0aDJjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNwQyxPQUFPLEVBQ0wsT0FBTyxFQUNQLFNBQVMsRUFDVCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixNQUFNLEdBQ1AsTUFBTSxnQkFBZ0IsQ0FBQTtBQWF2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRWhELE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFBO0FBQzFDLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUFBO0FBQ3hDLE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFBO0FBV3ZDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBb0IsS0FBSyxXQUFjLEdBQVcsRUFBRSxPQUF3QjtJQUNyRyxJQUFJLE1BQU0sR0FBYSxJQUFJLENBQUE7SUFDM0IsSUFBSSxhQUFhLEdBQXlCLElBQUksQ0FBQTtJQUM5QyxJQUFJO1FBRUYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFDdkIsV0FBVyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7U0FDM0I7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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("tcboauth",[],t):"object"==typeof exports?exports.tcboauth=t():e.tcboauth=t()}("undefined"!=typeof window?window:this,()=>(()=>{"use strict";var e={3:(e,t,r)=>{r.r(t),r.d(t,{getEncryptInfo:()=>i});const n=void 0;var o=r(912),i=function(){var{publicKey:e="",payload:t={}}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e)return"";try{var r=(0,o.I)(t),i=new n;i.setPublicKey(e);var a=i.encryptLong("object"==typeof r?JSON.stringify(r):r);return a}catch(e){console.error("encrypt error:",e)}return""}},912:(e,t,r)=>{r.d(t,{I:()=>n,y:()=>o});var n=e=>{var t=t=>{for(var r in e)e.hasOwnProperty(r)&&(t[r]=n(e[r]));return t},r=null==e?"NullOrUndefined":Object.prototype.toString.call(e).slice(8,-1);if(["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"].includes(r))return e.slice();switch(r){case"Object":return t(Object.create(Object.getPrototypeOf(e)));case"Array":return t([]);case"Date":return new Date(e.valueOf());case"RegExp":return new RegExp(e.source,(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.sticky?"y":"")+(e.unicode?"u":""));default:return e}},o=e=>{var t=e.match(/^(?:http(s)?:\/\/[^\/]+)?(\/[^\?#]*)/);return t&&t[2]||""}},946:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.COMMUNITY_SITE_URL=t.IS_DEBUG_MODE=t.getProtocol=t.setProtocol=t.getSdkName=t.setSdkName=void 0;var r="@cloudbase/js-sdk";t.setSdkName=function(e){r=e},t.getSdkName=function(){return r};var n="https:";t.setProtocol=function(e){n=e},t.getProtocol=function(){return n},t.IS_DEBUG_MODE=("undefined"==typeof process||process.env,!1),t.COMMUNITY_SITE_URL="https://support.qq.com/products/148793"},205:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ERRORS=void 0,t.ERRORS={INVALID_PARAMS:"INVALID_PARAMS",INVALID_SYNTAX:"INVALID_SYNTAX",INVALID_OPERATION:"INVALID_OPERATION",OPERATION_FAIL:"OPERATION_FAIL",NETWORK_ERROR:"NETWORK_ERROR",UNKOWN_ERROR:"UNKOWN_ERROR"}},794:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.OATUH_LOGINTYPE=void 0,o(r(946),t),o(r(205),t),t.OATUH_LOGINTYPE="constants"},689:function(e,t,r){var n,o=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),i=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))};Object.defineProperty(t,"__esModule",{value:!0}),t.removeEventListener=t.activateEvent=t.addEventListener=t.CloudbaseEventEmitter=t.IErrorEvent=t.CloudbaseEvent=void 0;var a=r(616);var s=function(e,t){this.data=t||null,this.name=e};t.CloudbaseEvent=s;var c=function(e){function t(t,r){var n=e.call(this,"error",{error:t,data:r})||this;return n.error=t,n}return o(t,e),t}(s);t.IErrorEvent=c;var u=function(){function e(){this.listeners={}}return e.prototype.on=function(e,t){return function(e,t,r){r[e]=r[e]||[],r[e].push(t)}(e,t,this.listeners),this},e.prototype.off=function(e,t){return function(e,t,r){if(null==r?void 0:r[e]){var n=r[e].indexOf(t);-1!==n&&r[e].splice(n,1)}}(e,t,this.listeners),this},e.prototype.fire=function(e,t){if((0,a.isInstanceOf)(e,c))return console.error(e.error),this;var r=(0,a.isString)(e)?new s(e,t||{}):e,n=r.name;if(this.listens(n)){r.target=this;for(var o=0,u=this.listeners[n]?i([],this.listeners[n],!0):[];o<u.length;o++){u[o].call(this,r)}}return this},e.prototype.listens=function(e){return this.listeners[e]&&this.listeners[e].length>0},e}();t.CloudbaseEventEmitter=u;var l=new u;t.addEventListener=function(e,t){l.on(e,t)},t.activateEvent=function(e,t){void 0===t&&(t={}),l.fire(e,t)},t.removeEventListener=function(e,t){l.off(e,t)}},616:function(e,t,r){var n=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.parseCaptcha=t.parseQueryString=t.transformPhone=t.sleep=t.printGroupLog=t.throwError=t.printInfo=t.printError=t.printWarn=t.execCallback=t.createPromiseCallback=t.removeParam=t.getHash=t.getQuery=t.toQueryString=t.formatUrl=t.generateRequestId=t.genSeqId=t.isFormData=t.isInstanceOf=t.isNull=t.isPalinObject=t.isUndefined=t.isString=t.isArray=void 0;var o=r(794);t.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},t.isString=function(e){return"string"==typeof e},t.isUndefined=function(e){return void 0===e},t.isPalinObject=function(e){return"[object Object]"===Object.prototype.toString.call(e)},t.isNull=function(e){return"[object Null]"===Object.prototype.toString.call(e)},t.isInstanceOf=function(e,t){return e instanceof t},t.isFormData=function(e){return"[object FormData]"===Object.prototype.toString.call(e)},t.genSeqId=function(){return Math.random().toString(16).slice(2)},t.generateRequestId=function(){var e=(new Date).getTime(),t=(null===Date||void 0===Date?void 0:Date.now)&&1e3*Date.now()||0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(r){var n=16*Math.random();return e>0?(n=(e+n)%16|0,e=Math.floor(e/16)):(n=(t+n)%16|0,t=Math.floor(t/16)),("x"===r?n:7&n|8).toString(16)}))},t.formatUrl=function(e,t,r){void 0===r&&(r={});var n=/\?/.test(t),o="";return Object.keys(r).forEach((function(e){""===o?!n&&(t+="?"):o+="&",o+="".concat(e,"=").concat(encodeURIComponent(r[e]))})),/^http(s)?:\/\//.test(t+=o)?t:"".concat(e).concat(t)},t.toQueryString=function(e){void 0===e&&(e={});var t=[];return Object.keys(e).forEach((function(r){t.push("".concat(r,"=").concat(encodeURIComponent(e[r])))})),t.join("&")},t.getQuery=function(e,t){if("undefined"==typeof window)return!1;var r=t||decodeURIComponent(window.location.search),n=new RegExp("(^|&)".concat(e,"=([^&]*)(&|$)")),o=r.substr(r.indexOf("?")+1).match(n);return null!=o?o[2]:""};t.getHash=function(e){if("undefined"==typeof window)return"";var t=window.location.hash.match(new RegExp("[#?&/]".concat(e,"=([^&#]*)")));return t?t[1]:""},t.removeParam=function(e,t){var r=t.split("?")[0],n=[],o=-1!==t.indexOf("?")?t.split("?")[1]:"";if(""!==o){for(var i=(n=o.split("&")).length-1;i>=0;i-=1)n[i].split("=")[0]===e&&n.splice(i,1);r="".concat(r,"?").concat(n.join("&"))}return r},t.createPromiseCallback=function(){var e={};if(!Promise){(e=function(){}).promise={};var t=function(){throw new Error('Your Node runtime does support ES6 Promises. Set "global.Promise" to your preferred implementation of promises.')};return Object.defineProperty(e.promise,"then",{get:t}),Object.defineProperty(e.promise,"catch",{get:t}),e}var r=new Promise((function(t,r){e=function(e,n){return e?r(e):t(n)}}));return e.promise=r,e},t.execCallback=function(e,t,r){if(void 0===r&&(r=null),e&&"function"==typeof e)return e(t,r);if(t)throw t;return r},t.printWarn=function(e,t){console.warn("[".concat((0,o.getSdkName)(),"][").concat(e,"]:").concat(t))},t.printError=function(e,t){console.error({code:e,msg:"[".concat((0,o.getSdkName)(),"][").concat(e,"]:").concat(t)})},t.printInfo=function(e,t){console.log("[".concat((0,o.getSdkName)(),"][").concat(e,"]:").concat(t))},t.throwError=function(e,t){throw new Error(JSON.stringify({code:e,msg:"[".concat((0,o.getSdkName)(),"][").concat(e,"]:").concat(t)}))},t.printGroupLog=function(e){var t,r=e.title,n=e.subtitle,o=void 0===n?"":n,i=e.content,a=void 0===i?[]:i,s=e.printTrace,c=void 0!==s&&s,u=e.collapsed;void 0!==u&&u?(console.groupCollapsed||console.error)(r,o):(console.group||console.error)(r,o);for(var l=0,d=a;l<d.length;l++){var f=d[l],p=f.type,h=f.body;switch(p){case"info":console.log(h);break;case"warn":console.warn(h);break;case"error":console.error(h)}}c&&(console.trace||console.log)("stack trace:"),null===(t=console.groupEnd)||void 0===t||t.call(console)};t.sleep=function(e){return void 0===e&&(e=0),new Promise((function(t){return setTimeout(t,e)}))},t.transformPhone=function(e){return"+86".concat(e)};t.parseQueryString=function(e){e=e.replace(/^\?/,"");var t={};return e.split("&").forEach((function(e){var r=e.split("="),n=r[0],o=r[1];n=decodeURIComponent(n),o=decodeURIComponent(o),n&&(t[n]?Array.isArray(t[n])?t[n].push(o):t[n]=[t[n],o]:t[n]=o)})),t},t.parseCaptcha=function(e){var r={},o=e.match(/^(data:.*?)(\?[^#\s]*)?$/);if(o){e=o[1];var i=o[2];i&&(r=(0,t.parseQueryString)(i))}var a=r.token,s=n(r,["token"]);return/^data:/.test(e)&&!a?{error:"invalid_argument",error_description:"invalid captcha data: ".concat(e)}:a?{state:s.state,token:a,captchaData:e}:{error:"unimplemented",error_description:"need to impl captcha data"}}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{r.r(n),r.d(n,{AUTH_API_PREFIX:()=>s,AUTH_STATE_CHANGED_TYPE:()=>l,Auth:()=>Fe,AuthError:()=>Le,CloudbaseOAuth:()=>Qe,DEFAULT_NODE_ACCESS_SCOPE:()=>p,EVENTS:()=>d,LOGIN_STATE_CHANGED_TYPE:()=>u,OAUTH_TYPE:()=>f,authModels:()=>e,weAppJwtDecodeAll:()=>S});var e={};r.r(e);var t,o,i,a,s="/auth";!function(e){e.AUTH_SIGN_UP_URL="/v1/signup",e.AUTH_TOKEN_URL="/v1/token",e.AUTH_REVOKE_URL="/v1/revoke",e.WEDA_USER_URL="/v1/plugin/weda/userinfo",e.AUTH_RESET_PASSWORD="/v1/reset",e.AUTH_GET_DEVICE_CODE="/v1/device/code",e.CHECK_USERNAME="/v1/checkUsername",e.CHECK_IF_USER_EXIST="/v1/checkIfUserExist",e.GET_PROVIDER_TYPE="/v1/mgr/provider/providerSubType",e.AUTH_SIGN_IN_URL="/v1/signin",e.AUTH_SIGN_IN_ANONYMOUSLY_URL="/v1/signin/anonymously",e.AUTH_SIGN_IN_WITH_PROVIDER_URL="/v1/signin/with/provider",e.AUTH_SIGN_IN_WITH_WECHAT_URL="/v1/signin/wechat/noauth",e.AUTH_SIGN_IN_CUSTOM="/v1/signin/custom",e.PROVIDER_TOKEN_URL="/v1/provider/token",e.PROVIDER_URI_URL="/v1/provider/uri",e.USER_ME_URL="/v1/user/me",e.AUTH_SIGNOUT_URL="/v1/user/signout",e.USER_QUERY_URL="/v1/user/query",e.USER_PRIFILE_URL="/v1/user/profile",e.USER_BASIC_EDIT_URL="/v1/user/basic/edit",e.USER_TRANS_BY_PROVIDER_URL="/v1/user/trans/by/provider",e.PROVIDER_LIST="/v1/user/provider",e.PROVIDER_BIND_URL="/v1/user/provider/bind",e.PROVIDER_UNBIND_URL="/v1/user/provider",e.CHECK_PWD_URL="/v1/user/sudo",e.SUDO_URL="/v1/user/sudo",e.BIND_CONTACT_URL="/v1/user/contact",e.AUTH_SET_PASSWORD="/v1/user/password",e.AUTHORIZE_DEVICE_URL="/v1/user/device/authorize",e.AUTHORIZE_URL="/v1/user/authorize",e.AUTHORIZE_INFO_URL="/v1/user/authorize/info",e.AUTHORIZED_DEVICES_DELETE_URL="/v1/user/authorized/devices/",e.AUTH_REVOKE_ALL_URL="/v1/user/revoke/all",e.GET_USER_BEHAVIOR_LOG="/v1/user/security/history",e.VERIFICATION_URL="/v1/verification",e.VERIFY_URL="/v1/verification/verify",e.CAPTCHA_DATA_URL="/v1/captcha/data",e.VERIFY_CAPTCHA_DATA_URL="/v1/captcha/data/verify",e.GET_CAPTCHA_URL="/v1/captcha/init",e.GET_MINIPROGRAM_QRCODE="/v1/qrcode/generate",e.GET_MINIPROGRAM_QRCODE_STATUS="/v1/qrcode/get/status"}(t||(t={})),function(e){e.AUTH_SIGN_IN_URL="/v2/signin/username",e.AUTH_TOKEN_URL="/v2/token",e.USER_ME_URL="/v2/user/me",e.VERIFY_URL="/v2/signin/verificationcode",e.AUTH_SIGN_IN_WITH_PROVIDER_URL="/v2/signin/with/provider",e.AUTH_PUBLIC_KEY="/v2/signin/publichkey",e.AUTH_RESET_PASSWORD="/v2/signin/password/update"}(o||(o={})),function(e){e.REGISTER="REGISTER",e.SIGN_IN="SIGN_IN",e.PASSWORD_RESET="PASSWORD_RESET",e.EMAIL_ADDRESS_CHANGE="EMAIL_ADDRESS_CHANGE",e.PHONE_NUMBER_CHANGE="PHONE_NUMBER_CHANGE"}(i||(i={})),function(e){e.UNREACHABLE="unreachable",e.LOCAL="local",e.CANCELLED="cancelled",e.UNKNOWN="unknown",e.UNAUTHENTICATED="unauthenticated",e.RESOURCE_EXHAUSTED="resource_exhausted",e.FAILED_PRECONDITION="failed_precondition",e.INVALID_ARGUMENT="invalid_argument",e.DEADLINE_EXCEEDED="deadline_exceeded",e.NOT_FOUND="not_found",e.ALREADY_EXISTS="already_exists",e.PERMISSION_DENIED="permission_denied",e.ABORTED="aborted",e.OUT_OF_RANGE="out_of_range",e.UNIMPLEMENTED="unimplemented",e.INTERNAL="internal",e.UNAVAILABLE="unavailable",e.DATA_LOSS="data_loss",e.INVALID_PASSWORD="invalid_password",e.PASSWORD_NOT_SET="password_not_set",e.INVALID_STATUS="invalid_status",e.USER_PENDING="user_pending",e.USER_BLOCKED="user_blocked",e.INVALID_VERIFICATION_CODE="invalid_verification_code",e.TWO_FACTOR_REQUIRED="two_factor_required",e.INVALID_TWO_FACTOR="invalid_two_factor",e.INVALID_TWO_FACTOR_RECOVERY="invalid_two_factor_recovery",e.UNDER_REVIEW="under_review",e.INVALID_REQUEST="invalid_request",e.UNAUTHORIZED_CLIENT="unauthorized_client",e.ACCESS_DENIED="access_denied",e.UNSUPPORTED_RESPONSE_TYPE="unsupported_response_type",e.INVALID_SCOPE="invalid_scope",e.INVALID_GRANT="invalid_grant",e.SERVER_ERROR="server_error",e.TEMPORARILY_UNAVAILABLE="temporarily_unavailable",e.INTERACTION_REQUIRED="interaction_required",e.LOGIN_REQUIRED="login_required",e.ACCOUNT_SELECTION_REQUIRED="account_selection_required",e.CONSENT_REQUIRED="consent_required",e.INVALID_REQUEST_URI="invalid_request_uri",e.INVALID_REQUEST_OBJECT="invalid_request_object",e.REQUEST_NOT_SUPPORTED="request_not_supported",e.REQUEST_URI_NOT_SUPPORTED="request_uri_not_supported",e.REGISTRATION_NOT_SUPPORTED="registration_not_supported",e.CAPTCHA_REQUIRED="captcha_required",e.CAPTCHA_INVALID="captcha_invalid"}(a||(a={}));var c,u={SIGN_OUT:"sign_out",SIGN_IN:"sign_in",CREDENTIALS_ERROR:"credentials_error"},l={SIGNED_OUT:"SIGNED_OUT",SIGNED_IN:"SIGNED_IN",INITIAL_SESSION:"INITIAL_SESSION",PASSWORD_RECOVERY:"PASSWORD_RECOVERY",TOKEN_REFRESHED:"TOKEN_REFRESHED",USER_UPDATED:"USER_UPDATED",BIND_IDENTITY:"BIND_IDENTITY"},d={LOGIN_STATE_CHANGED:"loginStateChanged",AUTH_STATE_CHANGED:"authStateChanged"},f={SIGN_IN:"sign_in",BIND_IDENTITY:"bind_identity"},p="node-sdk-scope";function h(){return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,e=>{var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}!function(e){e.CLIENT_ID="client_id",e.CLIENT_SECRET="client_secret",e.RESPONSE_TYPE="response_type",e.SCOPE="scope",e.STATE="state",e.REDIRECT_URI="redirect_uri",e.ERROR="error",e.ERROR_DESCRIPTION="error_description",e.ERROR_URI="error_uri",e.GRANT_TYPE="grant_type",e.CODE="code",e.ACCESS_TOKEN="access_token",e.TOKEN_TYPE="token_type",e.EXPIRES_IN="expires_in",e.USERNAME="username",e.PASSWORD="password",e.REFRESH_TOKEN="refresh_token"}(c||(c={}));var v=r(912);function y(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function g(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){y(i,n,o,a,s,"next",e)}function s(e){y(i,n,o,a,s,"throw",e)}a(void 0)}))}}var _=new Map;class m{constructor(e){this.clientId=(null==e?void 0:e.clientId)||"",_=_||new Map}run(e,t){var r=this;return g((function*(){e="".concat(r.clientId,"_").concat(e);var n=_.get(e);return n||(n=new Promise((n,o)=>{g((function*(){try{yield r.runIdlePromise();var i=t();n(yield i)}catch(e){o(e)}finally{_.delete(e)}}))()}),_.set(e,n)),n}))()}runIdlePromise(){return Promise.resolve()}}var E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",I=/^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;var b=function(e){if(e=String(e).replace(/[\t\n\f\r ]+/g,""),!I.test(e))throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");var t;e+="==".slice(2-(3&e.length));for(var r,n,o="",i=0;i<e.length;)t=E.indexOf(e.charAt(i++))<<18|E.indexOf(e.charAt(i++))<<12|(r=E.indexOf(e.charAt(i++)))<<6|(n=E.indexOf(e.charAt(i++))),o+=64===r?String.fromCharCode(t>>16&255):64===n?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return o};function O(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw new Error("Illegal base64url string!")}try{return function(e){return decodeURIComponent(b(e).replace(/(.)/g,e=>{var t=e.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t="0".concat(t)),"%".concat(t)}))}(t)}catch(e){return b(t)}}function S(e){if("string"!=typeof e)throw new Error("Invalid token specified");try{var t=e.split(".").map((e,t)=>2===t?e:JSON.parse(O(e)));return{claims:t[1],header:t[0],signature:t[2]}}catch(e){throw new Error("Invalid token specified: ".concat(e)?e.message:0)}}function C(){if("undefined"==typeof globalThis)return!1;var{wx:e}=globalThis;if(void 0===e)return!1;if(void 0===globalThis.Page)return!1;if(!e.getDeviceInfo)return!1;if(!e.getStorageSync)return!1;if(!e.setStorageSync)return!1;if(!e.connectSocket)return!1;if(!e.request)return!1;try{if(!e.getDeviceInfo())return!1;if("qq"===e.getDeviceInfo().platform)return!1}catch(e){return!1}return!0}var R=!1;function T(){R=R||void 0!==typeof window&&"miniprogram"===window.__wxjs_environment}try{C()||(R=R||!!navigator.userAgent.match(/miniprogram/i)||"miniprogram"===window.__wxjs_environment,window&&window.WeixinJSBridge&&window.WeixinJSBridge.invoke?T():"undefined"!=typeof document&&document.addEventListener("WeixinJSBridgeReady",T,!1))}catch($){}var w="@cloudbase/js-sdk";function A(){return w}var P="https:";"undefined"==typeof process||process.env;var U,N="INVALID_PARAMS",D="INVALID_OPERATION",x="OPERATION_FAIL";!function(e){e.local="local",e.none="none",e.session="session"}(U||(U={}));var k=function(){};function L(e,t){console.warn("[".concat(A(),"][").concat(e,"]:").concat(t))}var j,q=(j=function(e,t){return(j=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}j(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),H=function(){return(H=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},G=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},V=function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};!function(e){function t(t){var r=e.call(this)||this,n=t.timeout,o=t.timeoutMsg,i=t.restrictedMethods;return r.timeout=n||0,r.timeoutMsg=o||"请求超时",r.restrictedMethods=i||["get","post","upload","download"],r}q(t,e),t.prototype.get=function(e){return this.request(H(H({},e),{method:"get"}),this.restrictedMethods.includes("get"))},t.prototype.post=function(e){return this.request(H(H({},e),{method:"post"}),this.restrictedMethods.includes("post"))},t.prototype.put=function(e){return this.request(H(H({},e),{method:"put"}))},t.prototype.upload=function(e){var t=e.data,r=e.file,n=e.name,o=e.method,i=e.headers,a=void 0===i?{}:i,s={post:"post",put:"put"}[null==o?void 0:o.toLowerCase()]||"put",c=new FormData;return"post"===s?(Object.keys(t).forEach((function(e){c.append(e,t[e])})),c.append("key",n),c.append("file",r),this.request(H(H({},e),{data:c,method:s}),this.restrictedMethods.includes("upload"))):this.request(H(H({},e),{method:"put",headers:a,body:r}),this.restrictedMethods.includes("upload"))},t.prototype.download=function(e){return G(this,void 0,void 0,(function(){var t,r,n,o;return V(this,(function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this.get(H(H({},e),{headers:{},responseType:"blob"}))];case 1:return t=i.sent().data,r=window.URL.createObjectURL(new Blob([t])),n=decodeURIComponent(new URL(e.url).pathname.split("/").pop()||""),(o=document.createElement("a")).href=r,o.setAttribute("download",n),o.style.display="none",document.body.appendChild(o),o.click(),window.URL.revokeObjectURL(r),document.body.removeChild(o),[3,3];case 2:return i.sent(),[3,3];case 3:return[2,new Promise((function(t){t({statusCode:200,tempFilePath:e.url})}))]}}))}))},t.prototype.fetch=function(e){var t;return G(this,void 0,void 0,(function(){var r,n,o,i,a,s,c,u,l,d,f,p,h,v=this;return V(this,(function(y){switch(y.label){case 0:return r=new AbortController,n=e.url,o=e.enableAbort,i=void 0!==o&&o,a=e.stream,s=void 0!==a&&a,c=e.signal,u=e.timeout,l=e.shouldThrowOnError,d=void 0===l||l,f=null!=u?u:this.timeout,c&&(c.aborted&&r.abort(),c.addEventListener("abort",(function(){return r.abort()}))),p=null,i&&f&&(p=setTimeout((function(){console.warn(v.timeoutMsg),r.abort(new Error(v.timeoutMsg))}),f)),[4,fetch(n,H(H({},e),{signal:r.signal})).then((function(e){return G(v,void 0,void 0,(function(){var t,r,n;return V(this,(function(o){switch(o.label){case 0:return clearTimeout(p),d?e.ok?(t=e,[3,3]):[3,1]:[3,4];case 1:return n=(r=Promise).reject,[4,e.json()];case 2:t=n.apply(r,[o.sent()]),o.label=3;case 3:return[2,t];case 4:return[2,e]}}))}))})).catch((function(e){if(clearTimeout(p),d)return Promise.reject(e)}))];case 1:return h=y.sent(),[2,{data:s?h.body:(null===(t=h.headers.get("content-type"))||void 0===t?void 0:t.includes("application/json"))?h.json():h.text(),statusCode:h.status,header:h.headers}]}}))}))},t.prototype.request=function(e,t){var r=this;void 0===t&&(t=!1);var n=String(e.method).toLowerCase()||"get";return new Promise((function(o){var i,a,s,c=e.url,u=e.headers,l=void 0===u?{}:u,d=e.data,f=e.responseType,p=e.withCredentials,h=e.body,v=e.onUploadProgress,y=function(e,t,r){void 0===r&&(r={});var n=/\?/.test(t),o="";return Object.keys(r).forEach((function(e){""===o?!n&&(t+="?"):o+="&",o+="".concat(e,"=").concat(encodeURIComponent(r[e]))})),/^http(s)?:\/\//.test(t+=o)?t:"".concat(e).concat(t)}(P,c,"get"===n?d:{}),g=new XMLHttpRequest;g.open(n,y),f&&(g.responseType=f),Object.keys(l).forEach((function(e){g.setRequestHeader(e,l[e])})),v&&g.upload.addEventListener("progress",v),g.onreadystatechange=function(){var e={};if(4===g.readyState){var t=g.getAllResponseHeaders().trim().split(/[\r\n]+/),r={};t.forEach((function(e){var t=e.split(": "),n=t.shift().toLowerCase(),o=t.join(": ");r[n]=o})),e.header=r,e.statusCode=g.status;try{e.data="blob"===f?g.response:JSON.parse(g.responseText)}catch(t){e.data="blob"===f?g.response:g.responseText}clearTimeout(i),o(e)}},t&&r.timeout&&(i=setTimeout((function(){console.warn(r.timeoutMsg),g.abort()}),r.timeout)),s=d,a="[object FormData]"===Object.prototype.toString.call(s)?d:"application/x-www-form-urlencoded"===l["content-type"]?function(e){void 0===e&&(e={});var t=[];return Object.keys(e).forEach((function(r){t.push("".concat(r,"=").concat(encodeURIComponent(e[r])))})),t.join("&")}(d):h||(d?JSON.stringify(d):void 0),p&&(g.withCredentials=!0),g.send(a)}))}}((function(){}));var M;!function(e){e.WEB="web",e.WX_MP="wx_mp"}(M||(M={}));var B=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),W=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},F=function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}},K=function(e){function t(t){var r=e.call(this)||this;return r.root=t,t.tcbCacheObject||(t.tcbCacheObject={}),r}return B(t,e),t.prototype.setItem=function(e,t){this.root.tcbCacheObject[e]=t},t.prototype.getItem=function(e){return this.root.tcbCacheObject[e]},t.prototype.removeItem=function(e){delete this.root.tcbCacheObject[e]},t.prototype.clear=function(){delete this.root.tcbCacheObject},t}(k);!function(){function e(e){this.keys={};var t=e.persistence,r=e.platformInfo,n=void 0===r?{}:r,o=e.keys,i=void 0===o?{}:o;this.platformInfo=n,this.storage||(this.persistenceTag=this.platformInfo.adapter.primaryStorage||t,this.storage=function(e,t){switch(e){case"local":return t.localStorage?t.localStorage:(L(N,"localStorage is not supported on current platform"),new K(t.root));case"none":return new K(t.root);default:return t.localStorage?t.localStorage:(L(N,"localStorage is not supported on current platform"),new K(t.root))}}(this.persistenceTag,this.platformInfo.adapter),this.keys=i)}Object.defineProperty(e.prototype,"mode",{get:function(){return this.storage.mode||"sync"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"persistence",{get:function(){return this.persistenceTag},enumerable:!1,configurable:!0}),e.prototype.setStore=function(e,t,r){if("async"!==this.mode){if(this.storage)try{var n={version:r||"localCachev1",content:t};this.storage.setItem(e,JSON.stringify(n))}catch(e){throw new Error(JSON.stringify({code:x,msg:"[".concat(A(),"][").concat(x,"]setStore failed"),info:e}))}}else L(D,"current platform's storage is asynchronous, please use setStoreAsync insteed")},e.prototype.setStoreAsync=function(e,t,r){return W(this,void 0,void 0,(function(){var n;return F(this,(function(o){switch(o.label){case 0:if(!this.storage)return[2];o.label=1;case 1:return o.trys.push([1,3,,4]),n={version:r||"localCachev1",content:t},[4,this.storage.setItem(e,JSON.stringify(n))];case 2:return o.sent(),[3,4];case 3:return o.sent(),[2];case 4:return[2]}}))}))},e.prototype.getStore=function(e,t){var r;if("async"!==this.mode){try{if("undefined"!=typeof process&&(null===(r=process.env)||void 0===r?void 0:r.tcb_token))return process.env.tcb_token;if(!this.storage)return""}catch(e){return""}t=t||"localCachev1";var n=this.storage.getItem(e);return n&&n.indexOf(t)>=0?JSON.parse(n).content:""}L(D,"current platform's storage is asynchronous, please use getStoreAsync insteed")},e.prototype.getStoreAsync=function(e,t){var r;return W(this,void 0,void 0,(function(){var n;return F(this,(function(o){switch(o.label){case 0:try{if("undefined"!=typeof process&&(null===(r=process.env)||void 0===r?void 0:r.tcb_token))return[2,process.env.tcb_token];if(!this.storage)return[2,""]}catch(e){return[2,""]}return t=t||"localCachev1",[4,this.storage.getItem(e)];case 1:return(n=o.sent())&&n.indexOf(t)>=0?[2,JSON.parse(n).content]:[2,""]}}))}))},e.prototype.removeStore=function(e){"async"!==this.mode?this.storage.removeItem(e):L(D,"current platform's storage is asynchronous, please use removeStoreAsync insteed")},e.prototype.removeStoreAsync=function(e){return W(this,void 0,void 0,(function(){return F(this,(function(t){switch(t.label){case 0:return[4,this.storage.removeItem(e)];case 1:return t.sent(),[2]}}))}))}}();var Y=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),z=function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))};var Q=function(e,t){this.data=t||null,this.name=e},J=function(e){function t(t,r){var n=e.call(this,"error",{error:t,data:r})||this;return n.error=t,n}return Y(t,e),t}(Q),Z=function(){function e(){this.listeners={}}return e.prototype.on=function(e,t){return function(e,t,r){r[e]=r[e]||[],r[e].push(t)}(e,t,this.listeners),this},e.prototype.off=function(e,t){return function(e,t,r){if(null==r?void 0:r[e]){var n=r[e].indexOf(t);-1!==n&&r[e].splice(n,1)}}(e,t,this.listeners),this},e.prototype.fire=function(e,t){if(e instanceof J)return console.error(e.error),this;var r="string"==typeof e?new Q(e,t||{}):e,n=r.name;if(this.listens(n)){r.target=this;for(var o=0,i=this.listeners[n]?z([],this.listeners[n],!0):[];o<i.length;o++){i[o].call(this,r)}}return this},e.prototype.listens=function(e){return this.listeners[e]&&this.listeners[e].length>0},e}();new Z;var X=new Z;"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.indexOf("Firefox");!function(){function e(){var e=this;this.listeners=[],this.signal={aborted:!1,addEventListener:function(t,r){"abort"===t&&e.listeners.push(r)}}}e.prototype.abort=function(){this.signal.aborted||(this.signal.aborted=!0,this.listeners.forEach((function(e){return e()})))}}();function $(e){this.message=e}$.prototype=new Error,$.prototype.name="InvalidCharacterError";"undefined"!=typeof window&&window.atob&&window.atob.bind(window);function ee(e){this.message=e}ee.prototype=new Error,ee.prototype.name="InvalidTokenError";function te(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function re(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?te(Object(r),!0).forEach((function(t){ne(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):te(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ne(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function oe(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ie(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){oe(i,n,o,a,s,"next",e)}function s(e){oe(i,n,o,a,s,"throw",e)}a(void 0)}))}}var ae=function(){var e=ie((function*(e,t){var r=null,n=null;try{var o=Object.assign({},t);o.method||(o.method="GET"),o.body&&"string"!=typeof o.body&&(o.body=JSON.stringify(o.body));var i=yield fetch(e,o),s=yield i.json();null!=s&&s.error?(n=s).error_uri=new URL(e).pathname:r=s}catch(t){n={error:a.UNREACHABLE,error_description:t.message,error_uri:new URL(e).pathname}}if(n)throw n;return r}));return function(t,r){return e.apply(this,arguments)}}();var se=new class{constructor(e){this._env=(null==e?void 0:e.env)||""}getItem(e){var t=this;return ie((function*(){return window.localStorage.getItem("".concat(e).concat(t._env))}))()}removeItem(e){var t=this;return ie((function*(){window.localStorage.removeItem("".concat(e).concat(t._env))}))()}setItem(e,t){var r=this;return ie((function*(){window.localStorage.setItem("".concat(e).concat(r._env),t)}))()}getItemSync(e){return window.localStorage.getItem("".concat(e).concat(this._env))}removeItemSync(e){window.localStorage.removeItem("".concat(e).concat(this._env))}setItemSync(e,t){window.localStorage.setItem("".concat(e).concat(this._env),t)}};function ce(e){var t=!0;return null!=e&&e.expires_at&&null!=e&&e.access_token&&(t=e.expires_at<new Date),t}class ue{constructor(e){this.credentials=null,this.accessKeyCredentials=null,this.singlePromise=null,this.tokenSectionName=e.tokenSectionName,this.storage=e.storage,this.clientId=e.clientId,this.singlePromise=new m({clientId:this.clientId}),this.credentials=e.credentials||null}getStorageCredentialsSync(){var e=null,t=this.storage.getItemSync(this.tokenSectionName);if(null!=t)try{var r;null!==(r=e=JSON.parse(t))&&void 0!==r&&r.expires_at&&(e.expires_at=new Date(e.expires_at))}catch(t){this.storage.removeItem(this.tokenSectionName),e=null}return e}setCredentials(e){var t=this;return ie((function*(){if(null!=e&&e.expires_in){if(null!=e&&e.expires_at||(e.expires_at=new Date(Date.now()+1e3*(e.expires_in-30))),t.storage){var r=JSON.stringify(e);yield t.storage.setItem(t.tokenSectionName,r)}t.credentials=e}else t.storage&&(yield t.storage.removeItem(t.tokenSectionName)),t.credentials=null}))()}setAccessKeyCredentials(e){this.accessKeyCredentials=e,e.scope===p&&(this.credentials=e)}getCredentials(){var e=this;return ie((function*(){return e.singlePromise.run("getCredentials",ie((function*(){if(ce(e.credentials)){var{credentials:t,isAccessKeyCredentials:r}=yield e.getStorageCredentials();if(r)return t;e.credentials=t}return e.credentials})))}))()}getStorageCredentials(){var e=this;return ie((function*(){return e.singlePromise.run("_getStorageCredentials",ie((function*(){var t=null,r=!1,n=yield e.storage.getItem(e.tokenSectionName);if(n)try{var o;null!==(o=t=JSON.parse(n))&&void 0!==o&&o.expires_at&&(t.expires_at=new Date(t.expires_at))}catch(r){yield e.storage.removeItem(e.tokenSectionName),t=null}else t=e.accessKeyCredentials||null,r=!0;return{credentials:t,isAccessKeyCredentials:r}})))}))()}}class le{constructor(e){var t;this.initializePromise=null,this.lockAcquired=!1,this.pendingInLock=[],this.singlePromise=null,e.clientSecret||(e.clientSecret=""),!e.clientId&&e.env&&(e.clientId=e.env),this.apiOrigin=e.apiOrigin,this.apiPath=e.apiPath||s,this.clientId=e.clientId,this.i18n=e.i18n,this.eventBus=e.eventBus,this.singlePromise=new m({clientId:this.clientId}),this.retry=this.formatRetry(e.retry,le.defaultRetry),e.baseRequest?this.baseRequest=e.baseRequest:this.baseRequest=ae,this.tokenInURL=e.tokenInURL,this.headers=e.headers,this.storage=e.storage||se,this.localCredentials=new ue({tokenSectionName:"credentials_".concat(e.clientId),storage:this.storage,clientId:e.clientId}),this.clientSecret=e.clientSecret,e.clientId&&(this.basicAuth="Basic ".concat(function(e){for(var t,r,n,o,i="",a=0,s=(e=String(e)).length%3;a<e.length;){if((r=e.charCodeAt(a++))>255||(n=e.charCodeAt(a++))>255||(o=e.charCodeAt(a++))>255)throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");i+=E.charAt((t=r<<16|n<<8|o)>>18&63)+E.charAt(t>>12&63)+E.charAt(t>>6&63)+E.charAt(63&t)}return s?i.slice(0,s-3)+"===".substring(s):i}("".concat(e.clientId,":").concat(this.clientSecret)))),this.wxCloud=e.wxCloud;try{C()&&(this.useWxCloud=e.useWxCloud,void 0===this.wxCloud&&e.env&&(wx.cloud.init({env:e.env}),this.wxCloud=wx.cloud))}catch(e){}this.refreshTokenFunc=e.refreshTokenFunc||this.defaultRefreshTokenFunc,this.anonymousSignInFunc=e.anonymousSignInFunc,this.onCredentialsError=e.onCredentialsError,this.getInitialSession=e.getInitialSession,this.onInitialSessionObtained=e.onInitialSessionObtained,this.logDebugMessages=null!==(t=e.debug)&&void 0!==t&&t,X.on("lang_change",e=>{var t;this.i18n=(null===(t=e.data)||void 0===t?void 0:t.i18n)||this.i18n})}setGetInitialSession(e){this.getInitialSession=e}setOnInitialSessionObtained(e){this.onInitialSessionObtained=e}initialize(e){var t=this;return ie((function*(){return t.initializePromise?yield t.initializePromise:void 0!==e?(t.initializePromise=e,yield t.initializePromise):(t.initializePromise=ie((function*(){return yield t._acquireLock(-1,ie((function*(){return yield t._initialize()})))}))(),yield t.initializePromise)}))()}setCredentials(e){var t=this;return ie((function*(){return yield t.initializePromise,t._acquireLock(-1,ie((function*(){return t.localCredentials.setCredentials(e)})))}))()}setAccessKeyCredentials(e){return this.localCredentials.setAccessKeyCredentials(e)}getAccessToken(){var e=this;return ie((function*(){yield e.initializePromise;var t=yield e.getCredentials();if((null==t?void 0:t.scope)===p)return Promise.resolve(t.access_token);if(null!=t&&t.access_token)return Promise.resolve(t.access_token);var r={error:a.UNAUTHENTICATED};return Promise.reject(r)}))()}request(e,t){var r=this;return ie((function*(){var n,o,i,s;t||(t={});var c=r.formatRetry(t.retry,r.retry);if(t.headers=re(re({},t.headers),{},{[null===(n=r.i18n)||void 0===n?void 0:n.LANG_HEADER_KEY]:null===(o=r.i18n)||void 0===o?void 0:o.lang}),r.headers&&(t.headers=re(re({},r.headers),t.headers)),t.headers["x-request-id"]||(t.headers["x-request-id"]=h()),!t.headers["x-device-id"]){var u=yield r.getDeviceId();t.headers["x-device-id"]=u}if(null!==(i=t)&&void 0!==i&&i.withBasicAuth&&r.basicAuth&&(t.headers.Authorization=r.basicAuth),null!==(s=t)&&void 0!==s&&s.withCredentials){var l=t.getCredentials?yield t.getCredentials():yield r.getCredentials();l&&(r.tokenInURL?(e.indexOf("?")<0&&(e+="?"),e+="access_token=".concat(l.access_token)):t.headers.Authorization="".concat(l.token_type," ").concat(l.access_token))}else r.clientId&&e.indexOf("client_id")<0&&(e+=e.indexOf("?")<0?"?":"&",e+="client_id=".concat(r.clientId));e.startsWith("/")&&(e="".concat(r.apiOrigin).concat(r.apiPath).concat(e));for(var d=null,f=c+1,p=0;p<f;p++){try{var v;if(null!==(v=d=t.useWxCloud||r.useWxCloud?yield r.wxCloudCallFunction(e,t):yield r.baseRequest(e,t))&&void 0!==v&&v.code)throw{error:d.code,error_description:d.message,error_uri:new URL(e).pathname};break}catch(e){if(t.withCredentials&&e&&e.error===a.UNAUTHENTICATED)return yield r.setCredentials(null),Promise.reject(e);if(p===c||!e||"unreachable"!==e.error)return Promise.reject(e)}yield r.sleep(le.retryInterval)}return d}))()}wxCloudCallFunction(e,t){var r=this;return ie((function*(){var n=null,o=null;try{var i,s="";try{s=yield wx.getRendererUserAgent()}catch(e){}var{result:c}=yield r.wxCloud.callFunction({name:"httpOverCallFunction",data:{url:e,method:t.method,headers:re({origin:"https://servicewechat.com","User-Agent":s},t.headers),body:t.body}});null!=c&&null!==(i=c.body)&&void 0!==i&&i.error_code?(o=null==c?void 0:c.body).error_uri=(0,v.y)(e):n=null==c?void 0:c.body}catch(t){o={error:a.UNREACHABLE,error_description:t.message,error_uri:(0,v.y)(e)}}if(o)throw o;return n}))()}getCredentials(){var e=this;return ie((function*(){return yield e.initializePromise,e._acquireLock(-1,ie((function*(){return e._getCredentials()})))}))()}getCredentialsSync(){return this.localCredentials.getStorageCredentialsSync()}getCredentialsAsync(){return this.getCredentials()}getScope(){var e=this;return ie((function*(){var t=yield e.localCredentials.getCredentials();if(!t){var r,n="credentials not found";return null===(r=e.onCredentialsError)||void 0===r||r.call(e,{msg:n}),e.unAuthenticatedError(n)}return t.scope}))()}getGroups(){var e=this;return ie((function*(){var t=yield e.localCredentials.getCredentials();if(!t){var r,n="credentials not found";return null===(r=e.onCredentialsError)||void 0===r||r.call(e,{msg:n}),e.unAuthenticatedError(n)}return t.groups}))()}refreshToken(e,t){var r=this;return ie((function*(){return yield r.initializePromise,r._acquireLock(-1,ie((function*(){return r._refreshToken(e,t)})))}))()}_refreshToken(e,t){var r=this;return ie((function*(){return r.singlePromise.run("_refreshToken",ie((function*(){if((null==e?void 0:e.scope)===p)return e;if(!e||!e.refresh_token){var n,o="no refresh token found in credentials";return null===(n=r.onCredentialsError)||void 0===n||n.call(r,{msg:o}),r.unAuthenticatedError(o)}try{var i,s=yield r.refreshTokenFunc(e.refresh_token,e);return yield r.localCredentials.setCredentials(s),null===(i=r.eventBus)||void 0===i||i.fire(d.AUTH_STATE_CHANGED,{event:l.TOKEN_REFRESHED}),s}catch(e){var c;if(null!=t&&t.throwError)throw e;if(e.error===a.INVALID_GRANT){var u;yield r.localCredentials.setCredentials(null);var f=e.error_description;return null===(u=r.onCredentialsError)||void 0===u||u.call(r,{msg:f}),r.unAuthenticatedError(f)}return null===(c=r.onCredentialsError)||void 0===c||c.call(r,{msg:e.error_description}),Promise.reject(e)}})))}))()}anonymousLogin(e){var t=this;return ie((function*(){return t.singlePromise.run("_anonymousLogin",ie((function*(){if(t.anonymousSignInFunc){var r=yield t.anonymousSignInFunc(e);e=r||(yield t.localCredentials.getCredentials())}else e=yield t.anonymousSignIn(e);return e})))}))()}checkRetry(e){var t=null;if(("number"!=typeof e||e<le.minRetry||e>le.maxRetry)&&(t={error:a.UNREACHABLE,error_description:"wrong options param: retry"}),t)throw t;return e}formatRetry(e,t){return void 0===e?t:this.checkRetry(e)}sleep(e){return ie((function*(){return new Promise(t=>{setTimeout(()=>{t()},e)})}))()}anonymousSignIn(e){var r=this;return ie((function*(){return r.singlePromise.run("_anonymous",ie((function*(){if(!e||"anonymous"!==e.scope)return r.unAuthenticatedError("no anonymous in credentials");try{var n=yield r.request(t.AUTH_SIGN_IN_ANONYMOUSLY_URL,{method:"POST",withBasicAuth:!0,body:{}});return yield r.localCredentials.setCredentials(n),n}catch(e){return e.error===a.INVALID_GRANT?(yield r.localCredentials.setCredentials(null),r.unAuthenticatedError(e.error_description)):Promise.reject(e)}})))}))()}defaultRefreshTokenFunc(e,r){var n=this;return ie((function*(){if(void 0===e||""===e){var i,a="refresh token not found";return null===(i=n.onCredentialsError)||void 0===i||i.call(n,{msg:a}),n.unAuthenticatedError(a)}var s=t.AUTH_TOKEN_URL;return"v2"===(null==r?void 0:r.version)&&(s=o.AUTH_TOKEN_URL),re(re({},yield n.request(s,{method:"POST",body:{client_id:n.clientId,client_secret:n.clientSecret,grant_type:"refresh_token",refresh_token:e}})),{},{version:(null==r?void 0:r.version)||"v1"})}))()}getDeviceId(){var e=this;return ie((function*(){if(e.deviceID)return e.deviceID;var t=yield e.storage.getItem("device_id");return"string"==typeof t&&t.length>=16&&t.length<=48||(t=h(),yield e.storage.setItem("device_id",t)),e.deviceID=t,t}))()}unAuthenticatedError(e){var t={error:a.UNAUTHENTICATED,error_description:e};return Promise.reject(t)}_debug(){if(this.logDebugMessages){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];console.log("[OAuth2Client]",...t)}}_initialize(){var e=this;return ie((function*(){try{if(!e.getInitialSession)return e._debug("#_initialize()","no getInitialSession callback set, skipping"),{error:null};e._debug("#_initialize()","calling getInitialSession callback");try{var{data:t,error:r}=yield e.getInitialSession();if(null!=t&&t.session&&(e._debug("#_initialize()","session obtained from getInitialSession",t.session),yield e.localCredentials.setCredentials(null==t?void 0:t.session)),e.onInitialSessionObtained){e._debug("#_initialize()","calling onInitialSessionObtained callback");try{yield e.onInitialSessionObtained(t,r)}catch(t){e._debug("#_initialize()","error in onInitialSessionObtained",t)}}return r?(e._debug("#_initialize()","error from getInitialSession",r),{error:r}):{error:null}}catch(t){return e._debug("#_initialize()","exception during getInitialSession",t),{error:t instanceof Error?t:new Error(String(t))}}}catch(r){return e._debug("#_initialize()","unexpected error",r),{error:r instanceof Error?r:new Error(String(r))}}finally{e._debug("#_initialize()","end")}}))()}_acquireLock(e,t){var r=this;return ie((function*(){r._debug("#_acquireLock","begin",e);try{if(r.lockAcquired){var n=r.pendingInLock.length?r.pendingInLock[r.pendingInLock.length-1]:Promise.resolve(),o=ie((function*(){return yield n,yield t()}))();return r.pendingInLock.push(ie((function*(){try{yield o}catch(e){}}))()),o}r._debug("#_acquireLock","acquiring lock for client",r.clientId);try{r.lockAcquired=!0;var i=t();for(r.pendingInLock.push(ie((function*(){try{yield i}catch(e){}}))()),yield i;r.pendingInLock.length;){var a=[...r.pendingInLock];yield Promise.all(a),r.pendingInLock.splice(0,a.length)}return yield i}finally{r._debug("#_acquireLock","releasing lock for client",r.clientId),r.lockAcquired=!1}}finally{r._debug("#_acquireLock","end")}}))()}_getCredentials(){var e=this;return ie((function*(){var t=yield e.localCredentials.getCredentials();if(t.scope===p)return t;if(!t){var r,n="credentials not found";return null===(r=e.onCredentialsError)||void 0===r||r.call(e,{msg:n}),e.unAuthenticatedError(n)}if(ce(t))if(t.refresh_token)try{t=yield e._refreshToken(t)}catch(r){var o;if("anonymous"!==t.scope)return null===(o=e.onCredentialsError)||void 0===o||o.call(e,{msg:r.error_description}),Promise.reject(r);t=yield e.anonymousLogin(t)}else{if("anonymous"!==t.scope){var i,a="no refresh token found in credentials";return null===(i=e.onCredentialsError)||void 0===i||i.call(e,{msg:a}),e.unAuthenticatedError(a)}t=yield e.anonymousLogin(t)}return t}))()}}le.defaultRetry=2,le.minRetry=0,le.maxRetry=5,le.retryInterval=1e3;var de=r(689),fe=r(616);function pe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function he(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?pe(Object(r),!0).forEach((function(t){ve(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):pe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ve(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ye(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ge(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){ye(i,n,o,a,s,"next",e)}function s(e){ye(i,n,o,a,s,"throw",e)}a(void 0)}))}}var _e=(e,t)=>{var r;return function(){for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];clearTimeout(r),r=setTimeout(()=>e.apply(null,o),t)}},me=new de.CloudbaseEventEmitter,Ee="resolveCaptchaData",Ie="position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.5);z-index:999",be="position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:320px;padding:20px;background:#fff;border-radius:8px;box-shadow:0 0 10px rgba(0,0,0,0.2);z-index:1000",Oe="margin-bottom:15px",Se="display:flex;align-items:center;justify-content:space-between;margin-bottom:15px",Ce="width:100%;height:auto;border:1px solid #eee",Re="padding:10px 8px;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;flex:1;white-space:nowrap;margin-left:10px",Te="width:100%;padding:14px 16px;margin-bottom:15px;box-sizing:border-box;border:2px solid #e8ecf4;border-radius:10px;font-size:15px",we="width:100%;padding:10px;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer",Ae="background:#6c757d;cursor:not-allowed",Pe=e=>{var{oauthInstance:t,captchaState:r}=e,n=function(){var e=ge((function*(){try{var e=yield t.createCaptchaData({state:r.state});r=he(he({},r),{},{captchaData:e.data,token:e.token}),document.getElementById("captcha-image").src=e.data}catch(e){console.error("刷新图形验证码失败",e)}}));return function(){return e.apply(this,arguments)}}(),o=(e,t,r)=>{var n=document.createElement(e);return t&&(n.style.cssText=t),r&&(n.textContent=r),n},i=o("div",Ie),a=o("div",be);a.appendChild(o("p",Oe,"请输入你看到的字符:"));var s=o("div",Se),c=o("img",Ce);c.id="captcha-image",c.src=r.captchaData,s.appendChild(c);var u=o("button",Re,"刷新");u.onclick=_e(ge((function*(){u.textContent="加载中...",u.disabled=!0,u.style.cssText="".concat(Re,";").concat(Ae);try{yield n()}finally{u.textContent="刷新",u.disabled=!1,u.style.cssText=Re}})),500),s.appendChild(u),a.appendChild(s);var l=o("input",Te);l.type="text",l.placeholder="输入字符",l.maxLength=4,a.appendChild(l);var d=o("div","color:#dc3545;font-size:12px;margin-bottom:10px;display:none;padding:8px;background:#f8d7da;border:1px solid #f5c6cb;border-radius:4px");a.appendChild(d);var f=e=>{d.textContent=e,d.style.display="block"},p=o("button",we,"确定");p.onclick=_e(ge((function*(){var e=l.value.trim();if(e){d.style.display="none",p.textContent="验证中...",p.disabled=!0,p.style.cssText="".concat(we,";").concat(Ae);try{var o=yield t.verifyCaptchaData({token:r.token,key:e});me.fire(Ee,o),console.log("图形验证码校验成功"),document.body.removeChild(i),document.body.removeChild(a)}catch(e){console.error("图形验证码校验失败",e);var s=e.error_description||"图形验证码校验失败";f(s),l.value="",l.focus(),yield n()}finally{p.textContent="确定",p.disabled=!1,p.style.cssText=we}}else f("请输入字符")})),500),a.appendChild(p),document.body.appendChild(i),document.body.appendChild(a)},Ue=function(){var e=ge((function*(e,t){var{captchaData:r,state:n,token:o}=(0,fe.parseCaptcha)(e);return Pe({oauthInstance:t,captchaState:{captchaData:r,state:n,token:o}}),new Promise(e=>{console.log("等待图形验证码校验结果..."),me.on(Ee,t=>{e(null==t?void 0:t.data)})})}));return function(t,r){return e.apply(this,arguments)}}();function Ne(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function De(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){Ne(i,n,o,a,s,"next",e)}function s(e){Ne(i,n,o,a,s,"throw",e)}a(void 0)}))}}class xe{constructor(e){e.openURIWithCallback||(e.openURIWithCallback=this.getDefaultOpenURIWithCallback()),e.storage||(e.storage=se),this.config=e,this.tokenSectionName="captcha_".concat(e.clientId||e.env)}isMatch(){var e,t;return(null===(e=this.config)||void 0===e||null===(e=e.adapter)||void 0===e||null===(t=e.isMatch)||void 0===t?void 0:t.call(e))||C()}request(e,t){var r=this;return De((function*(){t||(t={}),t.method||(t.method="GET");var n,o="".concat(t.method,":").concat(e),i=e;t.withCaptcha&&(i=yield r.appendCaptchaTokenToURL(e,o,!1));try{n=yield r.config.request(i,t)}catch(n){return n.error===a.CAPTCHA_REQUIRED||n.error===a.CAPTCHA_INVALID?(e=yield r.appendCaptchaTokenToURL(e,o,n.error===a.CAPTCHA_INVALID),r.config.request(e,t)):Promise.reject(n)}return n}))()}getDefaultOpenURIWithCallback(){return e=>Ue(e,this.config.oauthInstance)}getCaptchaToken(e,r){var n=this;return De((function*(){if(!e){var o=yield n.findCaptchaToken();if(o)return o}var i=yield n.config.request(t.CAPTCHA_DATA_URL,{method:"POST",body:{state:r,redirect_uri:""},withCredentials:!1}),a="".concat(i.data,"?state=").concat(encodeURIComponent(r),"&token=").concat(encodeURIComponent(i.token)),s=yield n.config.openURIWithCallback(a);return n.saveCaptchaToken(s),s.captcha_token}))()}appendCaptchaTokenToURL(e,t,r){var n=this;return De((function*(){var o=yield n.getCaptchaToken(r,t);return e.indexOf("?")>0?e+="&captcha_token=".concat(o):e+="?captcha_token=".concat(o),e}))()}saveCaptchaToken(e){var t=this;return De((function*(){e.expires_at=new Date(Date.now()+1e3*(e.expires_in-10));var r=JSON.stringify(e);yield t.config.storage.setItem(t.tokenSectionName,r)}))()}findCaptchaToken(){var e=this;return De((function*(){var t=yield e.config.storage.getItem(e.tokenSectionName);if(null!=t)try{var r=JSON.parse(t);return null!=r&&r.expires_at&&(r.expires_at=new Date(r.expires_at)),r.expires_at<new Date?null:r.captcha_token}catch(t){return yield e.config.storage.removeItem(e.tokenSectionName),null}return null}))()}}const ke=class{constructor(e){if(this.params={},"string"==typeof e)this.parse(e);else if(e&&"object"==typeof e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&this.append(t,e[t])}parse(e){e.split("&").forEach(e=>{var[t,r]=e.split("=").map(decodeURIComponent);this.append(t,r)})}append(e,t){this.params[e]?this.params[e]=this.params[e].concat([t]):this.params[e]=[t]}get(e){return this.params[e]?this.params[e][0]:null}getAll(e){return this.params[e]||[]}delete(e){delete this.params[e]}has(e){return Object.prototype.hasOwnProperty.call(this.params,e)}set(e,t){this.params[e]=[t]}toString(){var e=this,t=[],r=function(r){Object.prototype.hasOwnProperty.call(e.params,r)&&e.params[r].forEach(e=>{t.push("".concat(encodeURIComponent(r),"=").concat(encodeURIComponent(e)))})};for(var n in this.params)r(n);return t.join("&")}};class Le extends Error{constructor(e){super(e.error_description||e.message),this.__isAuthError=!0,this.name="AuthError",this.status=e.error,this.code=e.error_code}}var je=["provider_redirect_uri","other_params"];function qe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function He(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?qe(Object(r),!0).forEach((function(t){Ge(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):qe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Ge(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ve(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function Me(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){Ve(i,n,o,a,s,"next",e)}function s(e){Ve(i,n,o,a,s,"throw",e)}a(void 0)}))}}function Be(e,t){return We.apply(this,arguments)}function We(){return(We=Me((function*(e,t){var n=function(){var e=Me((function*(){try{return r(3)}catch(e){try{return yield Promise.resolve().then(r.bind(r,3))}catch(e){return}}}));return function(){return e.apply(this,arguments)}}();try{var o;if(((null==t||null===(o=t.root)||void 0===o?void 0:o.globalThis)||globalThis).IS_MP_BUILD)return;0}catch(t){if(e)return n()}}))).apply(this,arguments)}class Fe{static parseParamsToSearch(e){return Object.keys(e).forEach(t=>{e[t]||delete e[t]}),new ke(e).toString()}constructor(e){var{request:t}=e,r=e.credentialsClient;if(!r){var n={apiOrigin:e.apiOrigin,apiPath:e.apiPath,clientId:e.clientId,storage:e.storage,env:e.env,baseRequest:e.baseRequest,anonymousSignInFunc:e.anonymousSignInFunc,wxCloud:e.wxCloud,onCredentialsError:e.onCredentialsError,headers:e.headers||{},i18n:e.i18n,debug:e.debug};r=new le(n)}if(!t){var o=r.request.bind(r),i=new xe(He({env:e.env,clientId:e.clientId,request:o,storage:e.storage,adapter:e.adapter,oauthInstance:this},e.captchaOptions));t=i.request.bind(i)}this.config={env:e.env,apiOrigin:e.apiOrigin,apiPath:e.apiPath,clientId:e.clientId,request:t,credentialsClient:r,storage:e.storage||se,adapter:e.adapter}}getParamsByVersion(e,r){var n,i=(0,v.I)(e),a=(null===(n={v2:o}[null==i?void 0:i.version])||void 0===n?void 0:n[r])||t[r];return i&&delete i.version,{params:i,url:a}}signIn(e){var t=this;return Me((function*(){var r=e.version||"v1",n=t.getParamsByVersion(e,"AUTH_SIGN_IN_URL");n.params.query&&delete n.params.query;var o=yield t.getEncryptParams(n.params),i=yield t.config.request(n.url,{method:"POST",body:o});return yield t.config.credentialsClient.setCredentials(He(He({},i),{},{version:r})),Promise.resolve(i)}))()}signInAnonymously(){var e=arguments,r=this;return Me((function*(){var n=e.length>0&&void 0!==e[0]?e[0]:{},o=e.length>1&&void 0!==e[1]&&e[1],i=yield r.config.request(t.AUTH_SIGN_IN_ANONYMOUSLY_URL,{method:"POST",body:n,useWxCloud:o});return yield r.config.credentialsClient.setCredentials(i),Promise.resolve(i)}))()}signUp(e){var r=this;return Me((function*(){var n=yield r.config.request(t.AUTH_SIGN_UP_URL,{method:"POST",body:e});return yield r.config.credentialsClient.setCredentials(n),Promise.resolve(n)}))()}signOut(e){var r=this;return Me((function*(){var n={};if(e){try{n=yield r.config.request(t.AUTH_SIGNOUT_URL,{method:"POST",withCredentials:!0,body:e})}catch(e){e.error!==a.UNAUTHENTICATED&&console.log("sign_out_error",e)}return yield r.config.credentialsClient.setCredentials(),n}var o=yield r.config.credentialsClient.getAccessToken(),i=yield r.config.request(t.AUTH_REVOKE_URL,{method:"POST",body:{token:o}});return yield r.config.credentialsClient.setCredentials(),Promise.resolve(i)}))()}revokeAllDevices(){var e=this;return Me((function*(){yield e.config.request(t.AUTH_REVOKE_ALL_URL,{method:"DELETE",withCredentials:!0})}))()}revokeDevice(e){var r=this;return Me((function*(){yield r.config.request(t.AUTHORIZED_DEVICES_DELETE_URL+e.device_id,{method:"DELETE",withCredentials:!0})}))()}getVerification(e,r){var n=this;return Me((function*(){var o=!1;"CUR_USER"===e.target?o=!0:(yield n.hasLoginState())&&(o=!0);var i=(0,v.I)(e);return i.phone_number&&!/^\+\d{1,3}\s+\d+/.test(i.phone_number)&&(i.phone_number="+86 ".concat(i.phone_number)),n.config.request(t.VERIFICATION_URL,{method:"POST",body:i,withCaptcha:(null==r?void 0:r.withCaptcha)||!1,withCredentials:o})}))()}verify(e){var t=this;return Me((function*(){var r=t.getParamsByVersion(e,"VERIFY_URL"),n=yield t.config.request(r.url,{method:"POST",body:r.params});return"v2"===(null==e?void 0:e.version)&&(yield t.config.credentialsClient.setCredentials(He(He({},n),{},{version:"v2"}))),n}))()}genProviderRedirectUri(e){var r=this;return Me((function*(){var{provider_redirect_uri:n,other_params:o={}}=e,i=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.includes(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.includes(r)||{}.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,je);n&&!i.redirect_uri&&(i.redirect_uri=n);var a="".concat(t.PROVIDER_URI_URL,"?").concat(Fe.parseParamsToSearch(i));return Object.keys(o).forEach(e=>{var t=o[e];("sign_out_uri"!==e||(null==t?void 0:t.length)>0)&&(a+="&other_params[".concat(e,"]=").concat(encodeURIComponent(t)))}),r.config.request(a,{method:"GET"})}))()}grantProviderToken(e){var r=arguments,n=this;return Me((function*(){var o=r.length>1&&void 0!==r[1]&&r[1];return n.config.request(t.PROVIDER_TOKEN_URL,{method:"POST",body:e,useWxCloud:o})}))()}patchProviderToken(e){var r=this;return Me((function*(){return r.config.request(t.PROVIDER_TOKEN_URL,{method:"PATCH",body:e})}))()}signInWithProvider(e){var t=arguments,r=this;return Me((function*(){var n=t.length>1&&void 0!==t[1]&&t[1],o=r.getParamsByVersion(e,"AUTH_SIGN_IN_WITH_PROVIDER_URL"),i=yield r.config.request(o.url,{method:"POST",body:o.params,useWxCloud:n});return yield r.config.credentialsClient.setCredentials(He(He({},i),{},{version:(null==e?void 0:e.version)||"v1"})),Promise.resolve(i)}))()}toBindIdentity(e){var t=this;return Me((function*(){var r,n,o,i=e.credentials||(yield t.config.credentialsClient.localCredentials.getCredentials());try{yield t.bindWithProvider({provider_token:e.provider_token},i),r={data:{type:f.BIND_IDENTITY,provider:e.provider},error:null}}catch(e){r={data:{type:f.BIND_IDENTITY},error:new Le(e)}}e.fireEvent&&(null===(n=t.config.eventBus)||void 0===n||null===(o=n.fire)||void 0===o||o.call(n,d.AUTH_STATE_CHANGED,{event:l.BIND_IDENTITY,info:r}));return r}))()}getInitialSession(){var e=this;return Me((function*(){var t={};try{var r,n,o,i,a;if("undefined"==typeof window||"undefined"==typeof document)return{data:null,error:null};var s=new URLSearchParams(null===(r=location)||void 0===r?void 0:r.search),c=s.get("code"),u=s.get("state");if(!c||!u)return{data:null,error:null};var l=null;try{l=JSON.parse(sessionStorage.getItem(u)||"null")}catch(e){}t={type:null===(n=l)||void 0===n?void 0:n.type};var d=s.get("error"),p=s.get("error_description");if(d||p)return{data:t,error:new Le({message:p||d||"Unknown error from OAuth provider"})};var h=(null===(o=l)||void 0===o?void 0:o.provider)||s.get("provider");if(!h)return{data:t,error:new Le({message:"Provider is required for OAuth verification"})};var v,y,g=location.origin+location.pathname,{provider_token:_}=yield e.grantProviderToken({provider_id:h,provider_redirect_uri:g,provider_code:c}),m=null;if(l.type===f.BIND_IDENTITY)v=yield e.config.credentialsClient.localCredentials.getCredentials(),y=yield e.toBindIdentity({provider:h,provider_token:_,credentials:v});else if(l.type===f.SIGN_IN){y=e.getParamsByVersion({provider:h},"AUTH_SIGN_IN_WITH_PROVIDER_URL"),v=yield e.config.request(y.url,{method:"POST",body:{provider_token:_}});try{m=yield e.getUserInfo({credentials:v})}catch(e){console.error("get user info error",e)}y={data:He(He({},t),{},{session:v,user:m}),error:null}}s.delete("code"),s.delete("state"),s.delete("provider"),e.restoreUrlState(void 0===(null===(i=l)||void 0===i?void 0:i.search)?"?".concat(s.toString()):l.search,(null===(a=l)||void 0===a?void 0:a.hash)||location.hash);try{sessionStorage.removeItem(u)}catch(e){}return y}catch(e){return{data:t,error:new Le(e)}}}))()}signInCustom(e){var r=this;return Me((function*(){var n=yield r.config.request(t.AUTH_SIGN_IN_CUSTOM,{method:"POST",body:e});return yield r.config.credentialsClient.setCredentials(n),Promise.resolve(n)}))()}signInWithWechat(){var e=arguments,r=this;return Me((function*(){var n=e.length>0&&void 0!==e[0]?e[0]:{},o=yield r.config.request(t.AUTH_SIGN_IN_WITH_WECHAT_URL,{method:"POST",body:n});return yield r.config.credentialsClient.setCredentials(o),Promise.resolve(o)}))()}bindWithProvider(e,r){var n=this;return Me((function*(){return n.config.request(t.PROVIDER_BIND_URL,{method:"POST",body:e,withCredentials:!0,getCredentials:r?()=>r:void 0})}))()}getUserProfile(e){var t=this;return Me((function*(){return t.getUserInfo(e)}))()}getUserInfo(){var e=arguments,t=this;return Me((function*(){var r,n=e.length>0&&void 0!==e[0]?e[0]:{},o=t.getParamsByVersion(n,"USER_ME_URL");if(null!==(r=o.params)&&void 0!==r&&r.query){var i=new ke(o.params.query);o.url+="?".concat(i.toString())}var a=yield t.config.request(o.url,{method:"GET",withCredentials:!0,getCredentials:n.credentials?()=>n.credentials:void 0});return a.sub&&(a.uid=a.sub),a}))()}getWedaUserInfo(){var e=this;return Me((function*(){return yield e.config.request(t.WEDA_USER_URL,{method:"GET",withCredentials:!0})}))()}deleteMe(e){var t=this;return Me((function*(){var r=t.getParamsByVersion(e,"USER_ME_URL"),n="".concat(r.url,"?").concat(Fe.parseParamsToSearch(r.params));return t.config.request(n,{method:"DELETE",withCredentials:!0})}))()}hasLoginState(){var e=this;return Me((function*(){try{return yield e.config.credentialsClient.getAccessToken(),!0}catch(e){return!1}}))()}hasLoginStateSync(){return this.config.credentialsClient.getCredentialsSync()}getLoginState(){var e=this;return Me((function*(){return e.config.credentialsClient.getCredentialsAsync()}))()}transByProvider(e){var r=this;return Me((function*(){return r.config.request(t.USER_TRANS_BY_PROVIDER_URL,{method:"PATCH",body:e,withCredentials:!0})}))()}grantToken(e){var t=this;return Me((function*(){var r=t.getParamsByVersion(e,"AUTH_TOKEN_URL");return t.config.request(r.url,{method:"POST",body:r.params})}))()}getProviders(){var e=this;return Me((function*(){return e.config.request(t.PROVIDER_LIST,{method:"GET",withCredentials:!0})}))()}unbindProvider(e){var r=this;return Me((function*(){return r.config.request("".concat(t.PROVIDER_UNBIND_URL,"/").concat(e.provider_id),{method:"DELETE",withCredentials:!0})}))()}checkPassword(e){var r=this;return Me((function*(){return r.config.request("".concat(t.CHECK_PWD_URL),{method:"POST",withCredentials:!0,body:e})}))()}editContact(e){var r=this;return Me((function*(){return r.config.request("".concat(t.BIND_CONTACT_URL),{method:"PATCH",withCredentials:!0,body:e})}))()}setPassword(e){var r=this;return Me((function*(){return r.config.request("".concat(t.AUTH_SET_PASSWORD),{method:"PATCH",withCredentials:!0,body:e})}))()}updatePasswordByOld(e){var t=this;return Me((function*(){var r=yield t.sudo({password:e.old_password});return t.setPassword({sudo_token:r.sudo_token,new_password:e.new_password})}))()}sudo(e){var r=this;return Me((function*(){return r.config.request("".concat(t.SUDO_URL),{method:"POST",withCredentials:!0,body:e})}))()}sendVerificationCodeToCurrentUser(e){var r=this;return Me((function*(){return e.target="CUR_USER",r.config.request(t.VERIFICATION_URL,{method:"POST",body:e,withCredentials:!0,withCaptcha:!0})}))()}changeBoundProvider(e){var r=this;return Me((function*(){return r.config.request("".concat(t.PROVIDER_LIST,"/").concat(e.provider_id,"/trans"),{method:"POST",body:{provider_trans_token:e.trans_token},withCredentials:!0})}))()}setUserProfile(e){var r=this;return Me((function*(){return r.config.request(t.USER_PRIFILE_URL,{method:"PATCH",body:e,withCredentials:!0})}))()}updateUserBasicInfo(e){var r=this;return Me((function*(){return r.config.request(t.USER_BASIC_EDIT_URL,{method:"POST",withCredentials:!0,body:e})}))()}queryUserProfile(e){var r=this;return Me((function*(){var n=new ke(e);return r.config.request("".concat(t.USER_QUERY_URL,"?").concat(n.toString()),{method:"GET",withCredentials:!0})}))()}setCustomSignFunc(e){this.getCustomSignTicketFn=e}signInWithCustomTicket(){var e=this;return Me((function*(){var t=e.getCustomSignTicketFn;if(!t)return Promise.reject({error:"failed_precondition",error_description:"please use setCustomSignFunc to set custom sign function"});var r=yield t();return e.signInCustom({provider_id:"custom",ticket:r})}))()}resetPassword(e){var r=this;return Me((function*(){return r.config.request(t.AUTH_RESET_PASSWORD,{method:"POST",body:e})}))()}authorize(e){var r=this;return Me((function*(){return r.config.request(t.AUTHORIZE_URL,{method:"POST",withCredentials:!0,body:e})}))()}authorizeDevice(e){var r=this;return Me((function*(){return r.config.request(t.AUTHORIZE_DEVICE_URL,{method:"POST",withCredentials:!0,body:e})}))()}deviceAuthorize(e){var r=this;return Me((function*(){return r.config.request(t.AUTH_GET_DEVICE_CODE,{method:"POST",body:e,withCredentials:!0})}))()}authorizeInfo(e){var r=this;return Me((function*(){var n="".concat(t.AUTHORIZE_INFO_URL,"?").concat(Fe.parseParamsToSearch(e)),o=!0,i=!1;return(yield r.hasLoginState())&&(i=!0,o=!1),r.config.request(n,{method:"GET",withBasicAuth:o,withCredentials:i})}))()}checkUsername(e){var r=this;return Me((function*(){return r.config.request(t.CHECK_USERNAME,{method:"GET",body:e,withCredentials:!0})}))()}checkIfUserExist(e){var r=this;return Me((function*(){var n=new ke(e);return r.config.request("".concat(t.CHECK_IF_USER_EXIST,"?").concat(n.toString()),{method:"GET"})}))()}loginScope(){var e=this;return Me((function*(){return e.config.credentialsClient.getScope()}))()}loginGroups(){var e=this;return Me((function*(){return e.config.credentialsClient.getGroups()}))()}refreshTokenForce(e){var t=this;return Me((function*(){var r=yield t.config.credentialsClient.getCredentials();return yield t.config.credentialsClient.refreshToken(He(He({},r),{},{version:(null==e?void 0:e.version)||"v1"}))}))()}getCredentials(){var e=this;return Me((function*(){return e.config.credentialsClient.getCredentials()}))()}getPublicKey(){var e=this;return Me((function*(){return e.config.request(o.AUTH_PUBLIC_KEY,{method:"POST",body:{}})}))()}getEncryptParams(e){var t=this;return Me((function*(){var{isEncrypt:r}=e;delete e.isEncrypt;var n=(0,v.I)(e),o=yield Be(r,t.config.adapter);if(!o)return e;var i="",a="";try{var s=yield t.getPublicKey();if(i=s.public_key,a=s.public_key_thumbprint,!i||!a)throw s}catch(e){throw e}return{params:o.getEncryptInfo({publicKey:i,payload:n}),public_key_thumbprint:a}}))()}getProviderSubType(){var e=this;return Me((function*(){return e.config.request(t.GET_PROVIDER_TYPE,{method:"POST",body:{provider_id:"weda"}})}))()}verifyCaptchaData(e){var r=this;return Me((function*(){var{token:n,key:o}=e;return r.config.request(t.VERIFY_CAPTCHA_DATA_URL,{method:"POST",body:{token:n,key:o},withCredentials:!1})}))()}createCaptchaData(e){var r=this;return Me((function*(){var{state:n,redirect_uri:o}=e;return r.config.request(t.CAPTCHA_DATA_URL,{method:"POST",body:{state:n,redirect_uri:o},withCredentials:!1})}))()}getMiniProgramCode(e){var r=this;return Me((function*(){return r.config.request(t.GET_MINIPROGRAM_QRCODE,{method:"POST",body:e})}))()}getMiniProgramQrCodeStatus(e){var r=this;return Me((function*(){return r.config.request(t.GET_MINIPROGRAM_QRCODE_STATUS,{method:"POST",body:e})}))()}getUserBehaviorLog(e){var r=this;return Me((function*(){var n="".concat(t.GET_USER_BEHAVIOR_LOG,"?").concat({LOGIN:"query[action]=USER_LOGIN",MODIFY:"ne_query[action]=USER_LOGIN"}[e.type],"&limit=").concat(e.limit).concat(e.page_token?"&page_token=".concat(e.page_token):"");return r.config.request(n,{method:"GET",withCredentials:!0})}))()}modifyPassword(e){var r=this;return Me((function*(){var n="",o="",i=yield Be(!0,r.config.adapter);if(!i)throw new Error("do not support encrypt, a encrypt util required.");try{var a=yield r.getPublicKey();if(n=a.public_key,o=a.public_key_thumbprint,!n||!o)throw a}catch(e){throw e}var s=e.password?i.getEncryptInfo({publicKey:n,payload:e.password}):"",c=i.getEncryptInfo({publicKey:n,payload:e.new_password});return r.config.request(t.USER_BASIC_EDIT_URL,{method:"POST",withCredentials:!0,body:{user_id:e.user_id,encrypt_password:s,encrypt_new_password:c,public_key_thumbprint:o}})}))()}modifyPasswordWithoutLogin(e){var t=this;return Me((function*(){var r="",n="",i=yield Be(!0,t.config.adapter);if(!i)throw new Error("do not support encrypt, a encrypt util required.");try{var a=yield t.getPublicKey();if(r=a.public_key,n=a.public_key_thumbprint,!r||!n)throw a}catch(e){throw e}var s=e.password?i.getEncryptInfo({publicKey:r,payload:e.password}):"",c=i.getEncryptInfo({publicKey:r,payload:e.new_password});return t.config.request(o.AUTH_RESET_PASSWORD,{method:"POST",body:{username:e.username,password:s,new_password:c,public_key_thumbprint:n}})}))()}restoreUrlState(e,t){if(void 0!==e)try{var r=new URL(window.location.href);r.search=e,r.hash=t||"",window.history.replaceState(null,"",r.toString()),window.location.replace(r.toString())}catch(e){}}}function Ke(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ye(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ke(Object(r),!0).forEach((function(t){ze(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ke(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ze(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class Qe{constructor(e){var{apiOrigin:t,apiPath:r=s,clientId:n,env:o,storage:i,request:a,baseRequest:c,anonymousSignInFunc:u,wxCloud:l,adapter:d,onCredentialsError:f,headers:p,i18n:h,useWxCloud:v,eventBus:y,detectSessionInUrl:g,debug:_}=e;this.detectSessionInUrl=null!=g&&g,this.oauth2client=new le({apiOrigin:t,apiPath:r,clientId:n,env:o,storage:i,baseRequest:c||a,anonymousSignInFunc:u,wxCloud:l,onCredentialsError:f,headers:p||{},i18n:h,useWxCloud:v,eventBus:y,debug:_}),this.authApi=new Fe(Ye(Ye({credentialsClient:this.oauth2client},e),{},{request:a?this.oauth2client.request.bind(this.oauth2client):void 0,adapter:d})),g&&this.oauth2client.setGetInitialSession(this.authApi.getInitialSession.bind(this.authApi))}initializeSession(e){this.detectSessionInUrl?(this.oauth2client.setOnInitialSessionObtained(e),this.oauth2client.initialize()):this.oauth2client.initialize(Promise.resolve({error:null}))}}})(),n})());
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("tcboauth",[],t):"object"==typeof exports?exports.tcboauth=t():e.tcboauth=t()}("undefined"!=typeof window?window:this,()=>(()=>{"use strict";var e={3:(e,t,r)=>{r.r(t),r.d(t,{getEncryptInfo:()=>i});const n=void 0;var o=r(912),i=function(){var{publicKey:e="",payload:t={}}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e)return"";try{var r=(0,o.I)(t),i=new n;i.setPublicKey(e);var a=i.encryptLong("object"==typeof r?JSON.stringify(r):r);return a}catch(e){console.error("encrypt error:",e)}return""}},912:(e,t,r)=>{r.d(t,{I:()=>n,y:()=>o});var n=e=>{var t=t=>{for(var r in e)e.hasOwnProperty(r)&&(t[r]=n(e[r]));return t},r=null==e?"NullOrUndefined":Object.prototype.toString.call(e).slice(8,-1);if(["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"].includes(r))return e.slice();switch(r){case"Object":return t(Object.create(Object.getPrototypeOf(e)));case"Array":return t([]);case"Date":return new Date(e.valueOf());case"RegExp":return new RegExp(e.source,(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.sticky?"y":"")+(e.unicode?"u":""));default:return e}},o=e=>{var t=e.match(/^(?:http(s)?:\/\/[^\/]+)?(\/[^\?#]*)/);return t&&t[2]||""}},946:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.COMMUNITY_SITE_URL=t.IS_DEBUG_MODE=t.getProtocol=t.setProtocol=t.getSdkName=t.setSdkName=void 0;var r="@cloudbase/js-sdk";t.setSdkName=function(e){r=e},t.getSdkName=function(){return r};var n="https:";t.setProtocol=function(e){n=e},t.getProtocol=function(){return n},t.IS_DEBUG_MODE=("undefined"==typeof process||process.env,!1),t.COMMUNITY_SITE_URL="https://support.qq.com/products/148793"},205:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ERRORS=void 0,t.ERRORS={INVALID_PARAMS:"INVALID_PARAMS",INVALID_SYNTAX:"INVALID_SYNTAX",INVALID_OPERATION:"INVALID_OPERATION",OPERATION_FAIL:"OPERATION_FAIL",NETWORK_ERROR:"NETWORK_ERROR",UNKOWN_ERROR:"UNKOWN_ERROR"}},794:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.OATUH_LOGINTYPE=void 0,o(r(946),t),o(r(205),t),t.OATUH_LOGINTYPE="constants"},689:function(e,t,r){var n,o=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),i=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))};Object.defineProperty(t,"__esModule",{value:!0}),t.removeEventListener=t.activateEvent=t.addEventListener=t.CloudbaseEventEmitter=t.IErrorEvent=t.CloudbaseEvent=void 0;var a=r(616);var s=function(e,t){this.data=t||null,this.name=e};t.CloudbaseEvent=s;var c=function(e){function t(t,r){var n=e.call(this,"error",{error:t,data:r})||this;return n.error=t,n}return o(t,e),t}(s);t.IErrorEvent=c;var u=function(){function e(){this.listeners={}}return e.prototype.on=function(e,t){return function(e,t,r){r[e]=r[e]||[],r[e].push(t)}(e,t,this.listeners),this},e.prototype.off=function(e,t){return function(e,t,r){if(null==r?void 0:r[e]){var n=r[e].indexOf(t);-1!==n&&r[e].splice(n,1)}}(e,t,this.listeners),this},e.prototype.fire=function(e,t){if((0,a.isInstanceOf)(e,c))return console.error(e.error),this;var r=(0,a.isString)(e)?new s(e,t||{}):e,n=r.name;if(this.listens(n)){r.target=this;for(var o=0,u=this.listeners[n]?i([],this.listeners[n],!0):[];o<u.length;o++){u[o].call(this,r)}}return this},e.prototype.listens=function(e){return this.listeners[e]&&this.listeners[e].length>0},e}();t.CloudbaseEventEmitter=u;var l=new u;t.addEventListener=function(e,t){l.on(e,t)},t.activateEvent=function(e,t){void 0===t&&(t={}),l.fire(e,t)},t.removeEventListener=function(e,t){l.off(e,t)}},616:function(e,t,r){var n=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.parseCaptcha=t.parseQueryString=t.transformPhone=t.sleep=t.printGroupLog=t.throwError=t.printInfo=t.printError=t.printWarn=t.execCallback=t.createPromiseCallback=t.removeParam=t.getHash=t.getQuery=t.toQueryString=t.formatUrl=t.generateRequestId=t.genSeqId=t.isFormData=t.isInstanceOf=t.isNull=t.isPalinObject=t.isUndefined=t.isString=t.isArray=void 0;var o=r(794);t.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},t.isString=function(e){return"string"==typeof e},t.isUndefined=function(e){return void 0===e},t.isPalinObject=function(e){return"[object Object]"===Object.prototype.toString.call(e)},t.isNull=function(e){return"[object Null]"===Object.prototype.toString.call(e)},t.isInstanceOf=function(e,t){return e instanceof t},t.isFormData=function(e){return"[object FormData]"===Object.prototype.toString.call(e)},t.genSeqId=function(){return Math.random().toString(16).slice(2)},t.generateRequestId=function(){var e=(new Date).getTime(),t=(null===Date||void 0===Date?void 0:Date.now)&&1e3*Date.now()||0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(r){var n=16*Math.random();return e>0?(n=(e+n)%16|0,e=Math.floor(e/16)):(n=(t+n)%16|0,t=Math.floor(t/16)),("x"===r?n:7&n|8).toString(16)}))},t.formatUrl=function(e,t,r){void 0===r&&(r={});var n=/\?/.test(t),o="";return Object.keys(r).forEach((function(e){""===o?!n&&(t+="?"):o+="&",o+="".concat(e,"=").concat(encodeURIComponent(r[e]))})),/^http(s)?:\/\//.test(t+=o)?t:"".concat(e).concat(t)},t.toQueryString=function(e){void 0===e&&(e={});var t=[];return Object.keys(e).forEach((function(r){t.push("".concat(r,"=").concat(encodeURIComponent(e[r])))})),t.join("&")},t.getQuery=function(e,t){if("undefined"==typeof window)return!1;var r=t||decodeURIComponent(window.location.search),n=new RegExp("(^|&)".concat(e,"=([^&]*)(&|$)")),o=r.substr(r.indexOf("?")+1).match(n);return null!=o?o[2]:""};t.getHash=function(e){if("undefined"==typeof window)return"";var t=window.location.hash.match(new RegExp("[#?&/]".concat(e,"=([^&#]*)")));return t?t[1]:""},t.removeParam=function(e,t){var r=t.split("?")[0],n=[],o=-1!==t.indexOf("?")?t.split("?")[1]:"";if(""!==o){for(var i=(n=o.split("&")).length-1;i>=0;i-=1)n[i].split("=")[0]===e&&n.splice(i,1);r="".concat(r,"?").concat(n.join("&"))}return r},t.createPromiseCallback=function(){var e={};if(!Promise){(e=function(){}).promise={};var t=function(){throw new Error('Your Node runtime does support ES6 Promises. Set "global.Promise" to your preferred implementation of promises.')};return Object.defineProperty(e.promise,"then",{get:t}),Object.defineProperty(e.promise,"catch",{get:t}),e}var r=new Promise((function(t,r){e=function(e,n){return e?r(e):t(n)}}));return e.promise=r,e},t.execCallback=function(e,t,r){if(void 0===r&&(r=null),e&&"function"==typeof e)return e(t,r);if(t)throw t;return r},t.printWarn=function(e,t){console.warn("[".concat((0,o.getSdkName)(),"][").concat(e,"]:").concat(t))},t.printError=function(e,t){console.error({code:e,msg:"[".concat((0,o.getSdkName)(),"][").concat(e,"]:").concat(t)})},t.printInfo=function(e,t){console.log("[".concat((0,o.getSdkName)(),"][").concat(e,"]:").concat(t))},t.throwError=function(e,t){throw new Error(JSON.stringify({code:e,msg:"[".concat((0,o.getSdkName)(),"][").concat(e,"]:").concat(t)}))},t.printGroupLog=function(e){var t,r=e.title,n=e.subtitle,o=void 0===n?"":n,i=e.content,a=void 0===i?[]:i,s=e.printTrace,c=void 0!==s&&s,u=e.collapsed;void 0!==u&&u?(console.groupCollapsed||console.error)(r,o):(console.group||console.error)(r,o);for(var l=0,d=a;l<d.length;l++){var f=d[l],p=f.type,h=f.body;switch(p){case"info":console.log(h);break;case"warn":console.warn(h);break;case"error":console.error(h)}}c&&(console.trace||console.log)("stack trace:"),null===(t=console.groupEnd)||void 0===t||t.call(console)};t.sleep=function(e){return void 0===e&&(e=0),new Promise((function(t){return setTimeout(t,e)}))},t.transformPhone=function(e){return"+86".concat(e)};t.parseQueryString=function(e){e=e.replace(/^\?/,"");var t={};return e.split("&").forEach((function(e){var r=e.split("="),n=r[0],o=r[1];n=decodeURIComponent(n),o=decodeURIComponent(o),n&&(t[n]?Array.isArray(t[n])?t[n].push(o):t[n]=[t[n],o]:t[n]=o)})),t},t.parseCaptcha=function(e){var r={},o=e.match(/^(data:.*?)(\?[^#\s]*)?$/);if(o){e=o[1];var i=o[2];i&&(r=(0,t.parseQueryString)(i))}var a=r.token,s=n(r,["token"]);return/^data:/.test(e)&&!a?{error:"invalid_argument",error_description:"invalid captcha data: ".concat(e)}:a?{state:s.state,token:a,captchaData:e}:{error:"unimplemented",error_description:"need to impl captcha data"}}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{r.r(n),r.d(n,{AUTH_API_PREFIX:()=>s,AUTH_STATE_CHANGED_TYPE:()=>l,Auth:()=>Fe,AuthError:()=>ke,CloudbaseOAuth:()=>Qe,DEFAULT_NODE_ACCESS_SCOPE:()=>p,EVENTS:()=>d,LOGIN_STATE_CHANGED_TYPE:()=>u,OAUTH_TYPE:()=>f,authModels:()=>e,weAppJwtDecodeAll:()=>S});var e={};r.r(e);var t,o,i,a,s="/auth";!function(e){e.AUTH_SIGN_UP_URL="/v1/signup",e.AUTH_TOKEN_URL="/v1/token",e.AUTH_REVOKE_URL="/v1/revoke",e.WEDA_USER_URL="/v1/plugin/weda/userinfo",e.AUTH_RESET_PASSWORD="/v1/reset",e.AUTH_GET_DEVICE_CODE="/v1/device/code",e.CHECK_USERNAME="/v1/checkUsername",e.CHECK_IF_USER_EXIST="/v1/checkIfUserExist",e.GET_PROVIDER_TYPE="/v1/mgr/provider/providerSubType",e.AUTH_SIGN_IN_URL="/v1/signin",e.AUTH_SIGN_IN_ANONYMOUSLY_URL="/v1/signin/anonymously",e.AUTH_SIGN_IN_WITH_PROVIDER_URL="/v1/signin/with/provider",e.AUTH_SIGN_IN_WITH_WECHAT_URL="/v1/signin/wechat/noauth",e.AUTH_SIGN_IN_CUSTOM="/v1/signin/custom",e.PROVIDER_TOKEN_URL="/v1/provider/token",e.PROVIDER_URI_URL="/v1/provider/uri",e.USER_ME_URL="/v1/user/me",e.AUTH_SIGNOUT_URL="/v1/user/signout",e.USER_QUERY_URL="/v1/user/query",e.USER_PRIFILE_URL="/v1/user/profile",e.USER_BASIC_EDIT_URL="/v1/user/basic/edit",e.USER_TRANS_BY_PROVIDER_URL="/v1/user/trans/by/provider",e.PROVIDER_LIST="/v1/user/provider",e.PROVIDER_BIND_URL="/v1/user/provider/bind",e.PROVIDER_UNBIND_URL="/v1/user/provider",e.CHECK_PWD_URL="/v1/user/sudo",e.SUDO_URL="/v1/user/sudo",e.BIND_CONTACT_URL="/v1/user/contact",e.AUTH_SET_PASSWORD="/v1/user/password",e.AUTHORIZE_DEVICE_URL="/v1/user/device/authorize",e.AUTHORIZE_URL="/v1/user/authorize",e.AUTHORIZE_INFO_URL="/v1/user/authorize/info",e.AUTHORIZED_DEVICES_DELETE_URL="/v1/user/authorized/devices/",e.AUTH_REVOKE_ALL_URL="/v1/user/revoke/all",e.GET_USER_BEHAVIOR_LOG="/v1/user/security/history",e.VERIFICATION_URL="/v1/verification",e.VERIFY_URL="/v1/verification/verify",e.CAPTCHA_DATA_URL="/v1/captcha/data",e.VERIFY_CAPTCHA_DATA_URL="/v1/captcha/data/verify",e.GET_CAPTCHA_URL="/v1/captcha/init",e.GET_MINIPROGRAM_QRCODE="/v1/qrcode/generate",e.GET_MINIPROGRAM_QRCODE_STATUS="/v1/qrcode/get/status"}(t||(t={})),function(e){e.AUTH_SIGN_IN_URL="/v2/signin/username",e.AUTH_TOKEN_URL="/v2/token",e.USER_ME_URL="/v2/user/me",e.VERIFY_URL="/v2/signin/verificationcode",e.AUTH_SIGN_IN_WITH_PROVIDER_URL="/v2/signin/with/provider",e.AUTH_PUBLIC_KEY="/v2/signin/publichkey",e.AUTH_RESET_PASSWORD="/v2/signin/password/update"}(o||(o={})),function(e){e.REGISTER="REGISTER",e.SIGN_IN="SIGN_IN",e.PASSWORD_RESET="PASSWORD_RESET",e.EMAIL_ADDRESS_CHANGE="EMAIL_ADDRESS_CHANGE",e.PHONE_NUMBER_CHANGE="PHONE_NUMBER_CHANGE"}(i||(i={})),function(e){e.UNREACHABLE="unreachable",e.LOCAL="local",e.CANCELLED="cancelled",e.UNKNOWN="unknown",e.UNAUTHENTICATED="unauthenticated",e.RESOURCE_EXHAUSTED="resource_exhausted",e.FAILED_PRECONDITION="failed_precondition",e.INVALID_ARGUMENT="invalid_argument",e.DEADLINE_EXCEEDED="deadline_exceeded",e.NOT_FOUND="not_found",e.ALREADY_EXISTS="already_exists",e.PERMISSION_DENIED="permission_denied",e.ABORTED="aborted",e.OUT_OF_RANGE="out_of_range",e.UNIMPLEMENTED="unimplemented",e.INTERNAL="internal",e.UNAVAILABLE="unavailable",e.DATA_LOSS="data_loss",e.INVALID_PASSWORD="invalid_password",e.PASSWORD_NOT_SET="password_not_set",e.INVALID_STATUS="invalid_status",e.USER_PENDING="user_pending",e.USER_BLOCKED="user_blocked",e.INVALID_VERIFICATION_CODE="invalid_verification_code",e.TWO_FACTOR_REQUIRED="two_factor_required",e.INVALID_TWO_FACTOR="invalid_two_factor",e.INVALID_TWO_FACTOR_RECOVERY="invalid_two_factor_recovery",e.UNDER_REVIEW="under_review",e.INVALID_REQUEST="invalid_request",e.UNAUTHORIZED_CLIENT="unauthorized_client",e.ACCESS_DENIED="access_denied",e.UNSUPPORTED_RESPONSE_TYPE="unsupported_response_type",e.INVALID_SCOPE="invalid_scope",e.INVALID_GRANT="invalid_grant",e.SERVER_ERROR="server_error",e.TEMPORARILY_UNAVAILABLE="temporarily_unavailable",e.INTERACTION_REQUIRED="interaction_required",e.LOGIN_REQUIRED="login_required",e.ACCOUNT_SELECTION_REQUIRED="account_selection_required",e.CONSENT_REQUIRED="consent_required",e.INVALID_REQUEST_URI="invalid_request_uri",e.INVALID_REQUEST_OBJECT="invalid_request_object",e.REQUEST_NOT_SUPPORTED="request_not_supported",e.REQUEST_URI_NOT_SUPPORTED="request_uri_not_supported",e.REGISTRATION_NOT_SUPPORTED="registration_not_supported",e.CAPTCHA_REQUIRED="captcha_required",e.CAPTCHA_INVALID="captcha_invalid"}(a||(a={}));var c,u={SIGN_OUT:"sign_out",SIGN_IN:"sign_in",CREDENTIALS_ERROR:"credentials_error"},l={SIGNED_OUT:"SIGNED_OUT",SIGNED_IN:"SIGNED_IN",INITIAL_SESSION:"INITIAL_SESSION",PASSWORD_RECOVERY:"PASSWORD_RECOVERY",TOKEN_REFRESHED:"TOKEN_REFRESHED",USER_UPDATED:"USER_UPDATED",BIND_IDENTITY:"BIND_IDENTITY"},d={LOGIN_STATE_CHANGED:"loginStateChanged",AUTH_STATE_CHANGED:"authStateChanged"},f={SIGN_IN:"sign_in",BIND_IDENTITY:"bind_identity"},p="node-sdk-scope";function h(){return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,e=>{var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}!function(e){e.CLIENT_ID="client_id",e.CLIENT_SECRET="client_secret",e.RESPONSE_TYPE="response_type",e.SCOPE="scope",e.STATE="state",e.REDIRECT_URI="redirect_uri",e.ERROR="error",e.ERROR_DESCRIPTION="error_description",e.ERROR_URI="error_uri",e.GRANT_TYPE="grant_type",e.CODE="code",e.ACCESS_TOKEN="access_token",e.TOKEN_TYPE="token_type",e.EXPIRES_IN="expires_in",e.USERNAME="username",e.PASSWORD="password",e.REFRESH_TOKEN="refresh_token"}(c||(c={}));var v=r(912);function y(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function g(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){y(i,n,o,a,s,"next",e)}function s(e){y(i,n,o,a,s,"throw",e)}a(void 0)}))}}var _=new Map;class m{constructor(e){this.clientId=(null==e?void 0:e.clientId)||"",_=_||new Map}run(e,t){var r=this;return g((function*(){e="".concat(r.clientId,"_").concat(e);var n=_.get(e);return n||(n=new Promise((n,o)=>{g((function*(){try{yield r.runIdlePromise();var i=t();n(yield i)}catch(e){o(e)}finally{_.delete(e)}}))()}),_.set(e,n)),n}))()}runIdlePromise(){return Promise.resolve()}}var E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",I=/^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;var b=function(e){if(e=String(e).replace(/[\t\n\f\r ]+/g,""),!I.test(e))throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");var t;e+="==".slice(2-(3&e.length));for(var r,n,o="",i=0;i<e.length;)t=E.indexOf(e.charAt(i++))<<18|E.indexOf(e.charAt(i++))<<12|(r=E.indexOf(e.charAt(i++)))<<6|(n=E.indexOf(e.charAt(i++))),o+=64===r?String.fromCharCode(t>>16&255):64===n?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return o};function O(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw new Error("Illegal base64url string!")}try{return function(e){return decodeURIComponent(b(e).replace(/(.)/g,e=>{var t=e.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t="0".concat(t)),"%".concat(t)}))}(t)}catch(e){return b(t)}}function S(e){if("string"!=typeof e)throw new Error("Invalid token specified");try{var t=e.split(".").map((e,t)=>2===t?e:JSON.parse(O(e)));return{claims:t[1],header:t[0],signature:t[2]}}catch(e){throw new Error("Invalid token specified: ".concat(e)?e.message:0)}}function C(){if("undefined"==typeof globalThis)return!1;var{wx:e}=globalThis;if(void 0===e)return!1;if(void 0===globalThis.Page)return!1;if(!e.getDeviceInfo)return!1;if(!e.getStorageSync)return!1;if(!e.setStorageSync)return!1;if(!e.connectSocket)return!1;if(!e.request)return!1;try{if(!e.getDeviceInfo())return!1;if("qq"===e.getDeviceInfo().platform)return!1}catch(e){return!1}return!0}var R=!1;function T(){R=R||void 0!==typeof window&&"miniprogram"===window.__wxjs_environment}try{C()||(R=R||!!navigator.userAgent.match(/miniprogram/i)||"miniprogram"===window.__wxjs_environment,window&&window.WeixinJSBridge&&window.WeixinJSBridge.invoke?T():"undefined"!=typeof document&&document.addEventListener("WeixinJSBridgeReady",T,!1))}catch($){}var w="@cloudbase/js-sdk";function A(){return w}var P="https:";"undefined"==typeof process||process.env;var U,N="INVALID_PARAMS",D="INVALID_OPERATION",x="OPERATION_FAIL";!function(e){e.local="local",e.none="none",e.session="session"}(U||(U={}));var L=function(){};function k(e,t){console.warn("[".concat(A(),"][").concat(e,"]:").concat(t))}var j,q=(j=function(e,t){return(j=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}j(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),H=function(){return(H=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},G=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},V=function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};!function(e){function t(t){var r=e.call(this)||this,n=t.timeout,o=t.timeoutMsg,i=t.restrictedMethods;return r.timeout=n||0,r.timeoutMsg=o||"请求超时",r.restrictedMethods=i||["get","post","upload","download"],r}q(t,e),t.prototype.get=function(e){return this.request(H(H({},e),{method:"get"}),this.restrictedMethods.includes("get"))},t.prototype.post=function(e){return this.request(H(H({},e),{method:"post"}),this.restrictedMethods.includes("post"))},t.prototype.put=function(e){return this.request(H(H({},e),{method:"put"}))},t.prototype.upload=function(e){var t=e.data,r=e.file,n=e.name,o=e.method,i=e.headers,a=void 0===i?{}:i,s={post:"post",put:"put"}[null==o?void 0:o.toLowerCase()]||"put",c=new FormData;return"post"===s?(Object.keys(t).forEach((function(e){c.append(e,t[e])})),c.append("key",n),c.append("file",r),this.request(H(H({},e),{data:c,method:s}),this.restrictedMethods.includes("upload"))):this.request(H(H({},e),{method:"put",headers:a,body:r}),this.restrictedMethods.includes("upload"))},t.prototype.download=function(e){return G(this,void 0,void 0,(function(){var t,r,n,o;return V(this,(function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this.get(H(H({},e),{headers:{},responseType:"blob"}))];case 1:return t=i.sent().data,r=window.URL.createObjectURL(new Blob([t])),n=decodeURIComponent(new URL(e.url).pathname.split("/").pop()||""),(o=document.createElement("a")).href=r,o.setAttribute("download",n),o.style.display="none",document.body.appendChild(o),o.click(),window.URL.revokeObjectURL(r),document.body.removeChild(o),[3,3];case 2:return i.sent(),[3,3];case 3:return[2,new Promise((function(t){t({statusCode:200,tempFilePath:e.url})}))]}}))}))},t.prototype.fetch=function(e){var t;return G(this,void 0,void 0,(function(){var r,n,o,i,a,s,c,u,l,d,f,p,h,v=this;return V(this,(function(y){switch(y.label){case 0:return r=new AbortController,n=e.url,o=e.enableAbort,i=void 0!==o&&o,a=e.stream,s=void 0!==a&&a,c=e.signal,u=e.timeout,l=e.shouldThrowOnError,d=void 0===l||l,f=null!=u?u:this.timeout,c&&(c.aborted&&r.abort(),c.addEventListener("abort",(function(){return r.abort()}))),p=null,i&&f&&(p=setTimeout((function(){console.warn(v.timeoutMsg),r.abort(new Error(v.timeoutMsg))}),f)),[4,fetch(n,H(H({},e),{signal:r.signal})).then((function(e){return G(v,void 0,void 0,(function(){var t,r,n;return V(this,(function(o){switch(o.label){case 0:return clearTimeout(p),d?e.ok?(t=e,[3,3]):[3,1]:[3,4];case 1:return n=(r=Promise).reject,[4,e.json()];case 2:t=n.apply(r,[o.sent()]),o.label=3;case 3:return[2,t];case 4:return[2,e]}}))}))})).catch((function(e){if(clearTimeout(p),d)return Promise.reject(e)}))];case 1:return h=y.sent(),[2,{data:s?h.body:(null===(t=h.headers.get("content-type"))||void 0===t?void 0:t.includes("application/json"))?h.json():h.text(),statusCode:h.status,header:h.headers}]}}))}))},t.prototype.request=function(e,t){var r=this;void 0===t&&(t=!1);var n=String(e.method).toLowerCase()||"get";return new Promise((function(o){var i,a,s,c=e.url,u=e.headers,l=void 0===u?{}:u,d=e.data,f=e.responseType,p=e.withCredentials,h=e.body,v=e.onUploadProgress,y=function(e,t,r){void 0===r&&(r={});var n=/\?/.test(t),o="";return Object.keys(r).forEach((function(e){""===o?!n&&(t+="?"):o+="&",o+="".concat(e,"=").concat(encodeURIComponent(r[e]))})),/^http(s)?:\/\//.test(t+=o)?t:"".concat(e).concat(t)}(P,c,"get"===n?d:{}),g=new XMLHttpRequest;g.open(n,y),f&&(g.responseType=f),Object.keys(l).forEach((function(e){g.setRequestHeader(e,l[e])})),v&&g.upload.addEventListener("progress",v),g.onreadystatechange=function(){var e={};if(4===g.readyState){var t=g.getAllResponseHeaders().trim().split(/[\r\n]+/),r={};t.forEach((function(e){var t=e.split(": "),n=t.shift().toLowerCase(),o=t.join(": ");r[n]=o})),e.header=r,e.statusCode=g.status;try{e.data="blob"===f?g.response:JSON.parse(g.responseText)}catch(t){e.data="blob"===f?g.response:g.responseText}clearTimeout(i),o(e)}},t&&r.timeout&&(i=setTimeout((function(){console.warn(r.timeoutMsg),g.abort()}),r.timeout)),s=d,a="[object FormData]"===Object.prototype.toString.call(s)?d:"application/x-www-form-urlencoded"===l["content-type"]?function(e){void 0===e&&(e={});var t=[];return Object.keys(e).forEach((function(r){t.push("".concat(r,"=").concat(encodeURIComponent(e[r])))})),t.join("&")}(d):h||(d?JSON.stringify(d):void 0),p&&(g.withCredentials=!0),g.send(a)}))}}((function(){}));var M;!function(e){e.WEB="web",e.WX_MP="wx_mp"}(M||(M={}));var B=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),W=function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},F=function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}},K=function(e){function t(t){var r=e.call(this)||this;return r.root=t,t.tcbCacheObject||(t.tcbCacheObject={}),r}return B(t,e),t.prototype.setItem=function(e,t){this.root.tcbCacheObject[e]=t},t.prototype.getItem=function(e){return this.root.tcbCacheObject[e]},t.prototype.removeItem=function(e){delete this.root.tcbCacheObject[e]},t.prototype.clear=function(){delete this.root.tcbCacheObject},t}(L);!function(){function e(e){this.keys={};var t=e.persistence,r=e.platformInfo,n=void 0===r?{}:r,o=e.keys,i=void 0===o?{}:o;this.platformInfo=n,this.storage||(this.persistenceTag=this.platformInfo.adapter.primaryStorage||t,this.storage=function(e,t){switch(e){case"local":return t.localStorage?t.localStorage:(k(N,"localStorage is not supported on current platform"),new K(t.root));case"none":return new K(t.root);default:return t.localStorage?t.localStorage:(k(N,"localStorage is not supported on current platform"),new K(t.root))}}(this.persistenceTag,this.platformInfo.adapter),this.keys=i)}Object.defineProperty(e.prototype,"mode",{get:function(){return this.storage.mode||"sync"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"persistence",{get:function(){return this.persistenceTag},enumerable:!1,configurable:!0}),e.prototype.setStore=function(e,t,r){if("async"!==this.mode){if(this.storage)try{var n={version:r||"localCachev1",content:t};this.storage.setItem(e,JSON.stringify(n))}catch(e){throw new Error(JSON.stringify({code:x,msg:"[".concat(A(),"][").concat(x,"]setStore failed"),info:e}))}}else k(D,"current platform's storage is asynchronous, please use setStoreAsync insteed")},e.prototype.setStoreAsync=function(e,t,r){return W(this,void 0,void 0,(function(){var n;return F(this,(function(o){switch(o.label){case 0:if(!this.storage)return[2];o.label=1;case 1:return o.trys.push([1,3,,4]),n={version:r||"localCachev1",content:t},[4,this.storage.setItem(e,JSON.stringify(n))];case 2:return o.sent(),[3,4];case 3:return o.sent(),[2];case 4:return[2]}}))}))},e.prototype.getStore=function(e,t){var r;if("async"!==this.mode){try{if("undefined"!=typeof process&&(null===(r=process.env)||void 0===r?void 0:r.tcb_token))return process.env.tcb_token;if(!this.storage)return""}catch(e){return""}t=t||"localCachev1";var n=this.storage.getItem(e);return n&&n.indexOf(t)>=0?JSON.parse(n).content:""}k(D,"current platform's storage is asynchronous, please use getStoreAsync insteed")},e.prototype.getStoreAsync=function(e,t){var r;return W(this,void 0,void 0,(function(){var n;return F(this,(function(o){switch(o.label){case 0:try{if("undefined"!=typeof process&&(null===(r=process.env)||void 0===r?void 0:r.tcb_token))return[2,process.env.tcb_token];if(!this.storage)return[2,""]}catch(e){return[2,""]}return t=t||"localCachev1",[4,this.storage.getItem(e)];case 1:return(n=o.sent())&&n.indexOf(t)>=0?[2,JSON.parse(n).content]:[2,""]}}))}))},e.prototype.removeStore=function(e){"async"!==this.mode?this.storage.removeItem(e):k(D,"current platform's storage is asynchronous, please use removeStoreAsync insteed")},e.prototype.removeStoreAsync=function(e){return W(this,void 0,void 0,(function(){return F(this,(function(t){switch(t.label){case 0:return[4,this.storage.removeItem(e)];case 1:return t.sent(),[2]}}))}))}}();var Y=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(t,r)};return function(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),z=function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))};var Q=function(e,t){this.data=t||null,this.name=e},J=function(e){function t(t,r){var n=e.call(this,"error",{error:t,data:r})||this;return n.error=t,n}return Y(t,e),t}(Q),Z=function(){function e(){this.listeners={}}return e.prototype.on=function(e,t){return function(e,t,r){r[e]=r[e]||[],r[e].push(t)}(e,t,this.listeners),this},e.prototype.off=function(e,t){return function(e,t,r){if(null==r?void 0:r[e]){var n=r[e].indexOf(t);-1!==n&&r[e].splice(n,1)}}(e,t,this.listeners),this},e.prototype.fire=function(e,t){if(e instanceof J)return console.error(e.error),this;var r="string"==typeof e?new Q(e,t||{}):e,n=r.name;if(this.listens(n)){r.target=this;for(var o=0,i=this.listeners[n]?z([],this.listeners[n],!0):[];o<i.length;o++){i[o].call(this,r)}}return this},e.prototype.listens=function(e){return this.listeners[e]&&this.listeners[e].length>0},e}();new Z;var X=new Z;"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.indexOf("Firefox");!function(){function e(){var e=this;this.listeners=[],this.signal={aborted:!1,addEventListener:function(t,r){"abort"===t&&e.listeners.push(r)}}}e.prototype.abort=function(){this.signal.aborted||(this.signal.aborted=!0,this.listeners.forEach((function(e){return e()})))}}();function $(e){this.message=e}$.prototype=new Error,$.prototype.name="InvalidCharacterError";"undefined"!=typeof window&&window.atob&&window.atob.bind(window);function ee(e){this.message=e}ee.prototype=new Error,ee.prototype.name="InvalidTokenError";function te(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function re(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?te(Object(r),!0).forEach((function(t){ne(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):te(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ne(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function oe(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ie(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){oe(i,n,o,a,s,"next",e)}function s(e){oe(i,n,o,a,s,"throw",e)}a(void 0)}))}}var ae=function(){var e=ie((function*(e,t){var r=null,n=null;try{var o=Object.assign({},t);o.method||(o.method="GET"),o.body&&"string"!=typeof o.body&&(o.body=JSON.stringify(o.body));var i=yield fetch(e,o),s=yield i.json();null!=s&&s.error?(n=s).error_uri=new URL(e).pathname:r=s}catch(t){n={error:a.UNREACHABLE,error_description:t.message,error_uri:new URL(e).pathname}}if(n)throw n;return r}));return function(t,r){return e.apply(this,arguments)}}();var se=new class{constructor(e){this._env=(null==e?void 0:e.env)||""}getItem(e){var t=this;return ie((function*(){return window.localStorage.getItem("".concat(e).concat(t._env))}))()}removeItem(e){var t=this;return ie((function*(){window.localStorage.removeItem("".concat(e).concat(t._env))}))()}setItem(e,t){var r=this;return ie((function*(){window.localStorage.setItem("".concat(e).concat(r._env),t)}))()}getItemSync(e){return window.localStorage.getItem("".concat(e).concat(this._env))}removeItemSync(e){window.localStorage.removeItem("".concat(e).concat(this._env))}setItemSync(e,t){window.localStorage.setItem("".concat(e).concat(this._env),t)}};function ce(e){var t=!0;return null!=e&&e.expires_at&&null!=e&&e.access_token&&(t=e.expires_at<new Date),t}class ue{constructor(e){this.credentials=null,this.accessKeyCredentials=null,this.singlePromise=null,this.tokenSectionName=e.tokenSectionName,this.storage=e.storage,this.clientId=e.clientId,this.singlePromise=new m({clientId:this.clientId}),this.credentials=e.credentials||null}getStorageCredentialsSync(){var e=null,t=this.storage.getItemSync(this.tokenSectionName);if(null!=t)try{var r;null!==(r=e=JSON.parse(t))&&void 0!==r&&r.expires_at&&(e.expires_at=new Date(e.expires_at))}catch(t){this.storage.removeItem(this.tokenSectionName),e=null}return e}setCredentials(e){var t=this;return ie((function*(){if(null!=e&&e.expires_in){if(null!=e&&e.expires_at||(e.expires_at=new Date(Date.now()+1e3*(e.expires_in-30))),t.storage){var r=JSON.stringify(e);yield t.storage.setItem(t.tokenSectionName,r)}t.credentials=e}else t.storage&&(yield t.storage.removeItem(t.tokenSectionName)),t.credentials=null}))()}setAccessKeyCredentials(e){this.accessKeyCredentials=e,e.scope===p&&(this.credentials=e)}getCredentials(){var e=this;return ie((function*(){return e.singlePromise.run("getCredentials",ie((function*(){if(ce(e.credentials)){var{credentials:t,isAccessKeyCredentials:r}=yield e.getStorageCredentials();if(r)return t;e.credentials=t}return e.credentials})))}))()}getStorageCredentials(){var e=this;return ie((function*(){return e.singlePromise.run("_getStorageCredentials",ie((function*(){var t=null,r=!1,n=yield e.storage.getItem(e.tokenSectionName);if(n)try{var o;null!==(o=t=JSON.parse(n))&&void 0!==o&&o.expires_at&&(t.expires_at=new Date(t.expires_at))}catch(r){yield e.storage.removeItem(e.tokenSectionName),t=null}else t=e.accessKeyCredentials||null,r=!0;return{credentials:t,isAccessKeyCredentials:r}})))}))()}}class le{constructor(e){var t;this.initializePromise=null,this.lockAcquired=!1,this.pendingInLock=[],this.singlePromise=null,e.clientSecret||(e.clientSecret=""),!e.clientId&&e.env&&(e.clientId=e.env),this.apiOrigin=e.apiOrigin,this.apiPath=e.apiPath||s,this.clientId=e.clientId,this.i18n=e.i18n,this.eventBus=e.eventBus,this.singlePromise=new m({clientId:this.clientId}),this.retry=this.formatRetry(e.retry,le.defaultRetry),e.baseRequest?this.baseRequest=e.baseRequest:this.baseRequest=ae,this.tokenInURL=e.tokenInURL,this.headers=e.headers,this.storage=e.storage||se,this.localCredentials=new ue({tokenSectionName:"credentials_".concat(e.clientId),storage:this.storage,clientId:e.clientId}),this.clientSecret=e.clientSecret,e.clientId&&(this.basicAuth="Basic ".concat(function(e){for(var t,r,n,o,i="",a=0,s=(e=String(e)).length%3;a<e.length;){if((r=e.charCodeAt(a++))>255||(n=e.charCodeAt(a++))>255||(o=e.charCodeAt(a++))>255)throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");i+=E.charAt((t=r<<16|n<<8|o)>>18&63)+E.charAt(t>>12&63)+E.charAt(t>>6&63)+E.charAt(63&t)}return s?i.slice(0,s-3)+"===".substring(s):i}("".concat(e.clientId,":").concat(this.clientSecret)))),this.wxCloud=e.wxCloud;try{C()&&(this.useWxCloud=e.useWxCloud,void 0===this.wxCloud&&e.env&&(wx.cloud.init({env:e.env}),this.wxCloud=wx.cloud))}catch(e){}this.refreshTokenFunc=e.refreshTokenFunc||this.defaultRefreshTokenFunc,this.anonymousSignInFunc=e.anonymousSignInFunc,this.onCredentialsError=e.onCredentialsError,this.getInitialSession=e.getInitialSession,this.onInitialSessionObtained=e.onInitialSessionObtained,this.logDebugMessages=null!==(t=e.debug)&&void 0!==t&&t,X.on("lang_change",e=>{var t;this.i18n=(null===(t=e.data)||void 0===t?void 0:t.i18n)||this.i18n})}setGetInitialSession(e){this.getInitialSession=e}setOnInitialSessionObtained(e){this.onInitialSessionObtained=e}initialize(e){var t=this;return ie((function*(){return t.initializePromise?yield t.initializePromise:void 0!==e?(t.initializePromise=e,yield t.initializePromise):(t.initializePromise=ie((function*(){return yield t._acquireLock(-1,ie((function*(){return yield t._initialize()})))}))(),yield t.initializePromise)}))()}setCredentials(e){var t=this;return ie((function*(){return yield t.initializePromise,t._acquireLock(-1,ie((function*(){return t.localCredentials.setCredentials(e)})))}))()}setAccessKeyCredentials(e){return this.localCredentials.setAccessKeyCredentials(e)}getAccessToken(){var e=this;return ie((function*(){yield e.initializePromise;var t=yield e.getCredentials();if((null==t?void 0:t.scope)===p)return Promise.resolve(t.access_token);if(null!=t&&t.access_token)return Promise.resolve(t.access_token);var r={error:a.UNAUTHENTICATED};return Promise.reject(r)}))()}request(e,t){var r=this;return ie((function*(){var n,o,i,s;t||(t={});var c=r.formatRetry(t.retry,r.retry);if(t.headers=re(re({},t.headers),{},{[null===(n=r.i18n)||void 0===n?void 0:n.LANG_HEADER_KEY]:null===(o=r.i18n)||void 0===o?void 0:o.lang}),r.headers&&(t.headers=re(re({},r.headers),t.headers)),t.headers["x-request-id"]||(t.headers["x-request-id"]=h()),!t.headers["x-device-id"]){var u=yield r.getDeviceId();t.headers["x-device-id"]=u}if(null!==(i=t)&&void 0!==i&&i.withBasicAuth&&r.basicAuth&&(t.headers.Authorization=r.basicAuth),null!==(s=t)&&void 0!==s&&s.withCredentials){var l=t.getCredentials?yield t.getCredentials():yield r.getCredentials();l&&(r.tokenInURL?(e.indexOf("?")<0&&(e+="?"),e+="access_token=".concat(l.access_token)):t.headers.Authorization="".concat(l.token_type," ").concat(l.access_token))}else r.clientId&&e.indexOf("client_id")<0&&(e+=e.indexOf("?")<0?"?":"&",e+="client_id=".concat(r.clientId));e.startsWith("/")&&(e="".concat(r.apiOrigin).concat(r.apiPath).concat(e));for(var d=null,f=c+1,p=0;p<f;p++){try{var v;if(null!==(v=d=t.useWxCloud||r.useWxCloud?yield r.wxCloudCallFunction(e,t):yield r.baseRequest(e,t))&&void 0!==v&&v.code)throw{error:d.code,error_description:d.message,error_uri:new URL(e).pathname};break}catch(e){try{e.requestId=e.requestId||t.headers["x-request-id"]||""}catch(e){}if(t.withCredentials&&e&&e.error===a.UNAUTHENTICATED)return yield r.setCredentials(null),Promise.reject(e);if(p===c||!e||"unreachable"!==e.error)return Promise.reject(e)}yield r.sleep(le.retryInterval)}return d}))()}wxCloudCallFunction(e,t){var r=this;return ie((function*(){var n=null,o=null;try{var i,s="";try{s=yield wx.getRendererUserAgent()}catch(e){}var{result:c}=yield r.wxCloud.callFunction({name:"httpOverCallFunction",data:{url:e,method:t.method,headers:re({origin:"https://servicewechat.com","User-Agent":s},t.headers),body:t.body}});null!=c&&null!==(i=c.body)&&void 0!==i&&i.error_code?(o=null==c?void 0:c.body).error_uri=(0,v.y)(e):n=null==c?void 0:c.body}catch(t){o={error:a.UNREACHABLE,error_description:t.message,error_uri:(0,v.y)(e)}}if(o)throw o;return n}))()}getCredentials(){var e=this;return ie((function*(){return yield e.initializePromise,e._acquireLock(-1,ie((function*(){return e._getCredentials()})))}))()}getCredentialsSync(){return this.localCredentials.getStorageCredentialsSync()}getCredentialsAsync(){return this.getCredentials()}getScope(){var e=this;return ie((function*(){var t=yield e.localCredentials.getCredentials();if(!t){var r,n="credentials not found";return null===(r=e.onCredentialsError)||void 0===r||r.call(e,{msg:n}),e.unAuthenticatedError(n)}return t.scope}))()}getGroups(){var e=this;return ie((function*(){var t=yield e.localCredentials.getCredentials();if(!t){var r,n="credentials not found";return null===(r=e.onCredentialsError)||void 0===r||r.call(e,{msg:n}),e.unAuthenticatedError(n)}return t.groups}))()}refreshToken(e,t){var r=this;return ie((function*(){return yield r.initializePromise,r._acquireLock(-1,ie((function*(){return r._refreshToken(e,t)})))}))()}_refreshToken(e,t){var r=this;return ie((function*(){return r.singlePromise.run("_refreshToken",ie((function*(){if((null==e?void 0:e.scope)===p)return e;if(!e||!e.refresh_token){var n,o="no refresh token found in credentials";return null===(n=r.onCredentialsError)||void 0===n||n.call(r,{msg:o}),r.unAuthenticatedError(o)}try{var i,s=yield r.refreshTokenFunc(e.refresh_token,e);return yield r.localCredentials.setCredentials(s),null===(i=r.eventBus)||void 0===i||i.fire(d.AUTH_STATE_CHANGED,{event:l.TOKEN_REFRESHED}),s}catch(e){var c;if(null!=t&&t.throwError)throw e;if(e.error===a.INVALID_GRANT){var u;yield r.localCredentials.setCredentials(null);var f=e.error_description;return null===(u=r.onCredentialsError)||void 0===u||u.call(r,{msg:f}),r.unAuthenticatedError(f)}return null===(c=r.onCredentialsError)||void 0===c||c.call(r,{msg:e.error_description}),Promise.reject(e)}})))}))()}anonymousLogin(e){var t=this;return ie((function*(){return t.singlePromise.run("_anonymousLogin",ie((function*(){if(t.anonymousSignInFunc){var r=yield t.anonymousSignInFunc(e);e=r||(yield t.localCredentials.getCredentials())}else e=yield t.anonymousSignIn(e);return e})))}))()}checkRetry(e){var t=null;if(("number"!=typeof e||e<le.minRetry||e>le.maxRetry)&&(t={error:a.UNREACHABLE,error_description:"wrong options param: retry"}),t)throw t;return e}formatRetry(e,t){return void 0===e?t:this.checkRetry(e)}sleep(e){return ie((function*(){return new Promise(t=>{setTimeout(()=>{t()},e)})}))()}anonymousSignIn(e){var r=this;return ie((function*(){return r.singlePromise.run("_anonymous",ie((function*(){if(!e||"anonymous"!==e.scope)return r.unAuthenticatedError("no anonymous in credentials");try{var n=yield r.request(t.AUTH_SIGN_IN_ANONYMOUSLY_URL,{method:"POST",withBasicAuth:!0,body:{}});return yield r.localCredentials.setCredentials(n),n}catch(e){return e.error===a.INVALID_GRANT?(yield r.localCredentials.setCredentials(null),r.unAuthenticatedError(e.error_description)):Promise.reject(e)}})))}))()}defaultRefreshTokenFunc(e,r){var n=this;return ie((function*(){if(void 0===e||""===e){var i,a="refresh token not found";return null===(i=n.onCredentialsError)||void 0===i||i.call(n,{msg:a}),n.unAuthenticatedError(a)}var s=t.AUTH_TOKEN_URL;return"v2"===(null==r?void 0:r.version)&&(s=o.AUTH_TOKEN_URL),re(re({},yield n.request(s,{method:"POST",body:{client_id:n.clientId,client_secret:n.clientSecret,grant_type:"refresh_token",refresh_token:e}})),{},{version:(null==r?void 0:r.version)||"v1"})}))()}getDeviceId(){var e=this;return ie((function*(){if(e.deviceID)return e.deviceID;var t=yield e.storage.getItem("device_id");return"string"==typeof t&&t.length>=16&&t.length<=48||(t=h(),yield e.storage.setItem("device_id",t)),e.deviceID=t,t}))()}unAuthenticatedError(e){var t={error:a.UNAUTHENTICATED,error_description:e};return Promise.reject(t)}_debug(){if(this.logDebugMessages){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];console.log("[OAuth2Client]",...t)}}_initialize(){var e=this;return ie((function*(){try{if(!e.getInitialSession)return e._debug("#_initialize()","no getInitialSession callback set, skipping"),{error:null};e._debug("#_initialize()","calling getInitialSession callback");try{var{data:t,error:r}=yield e.getInitialSession();if(null!=t&&t.session&&(e._debug("#_initialize()","session obtained from getInitialSession",t.session),yield e.localCredentials.setCredentials(null==t?void 0:t.session)),e.onInitialSessionObtained){e._debug("#_initialize()","calling onInitialSessionObtained callback");try{yield e.onInitialSessionObtained(t,r)}catch(t){e._debug("#_initialize()","error in onInitialSessionObtained",t)}}return r?(e._debug("#_initialize()","error from getInitialSession",r),{error:r}):{error:null}}catch(t){return e._debug("#_initialize()","exception during getInitialSession",t),{error:t instanceof Error?t:new Error(String(t))}}}catch(r){return e._debug("#_initialize()","unexpected error",r),{error:r instanceof Error?r:new Error(String(r))}}finally{e._debug("#_initialize()","end")}}))()}_acquireLock(e,t){var r=this;return ie((function*(){r._debug("#_acquireLock","begin",e);try{if(r.lockAcquired){var n=r.pendingInLock.length?r.pendingInLock[r.pendingInLock.length-1]:Promise.resolve(),o=ie((function*(){return yield n,yield t()}))();return r.pendingInLock.push(ie((function*(){try{yield o}catch(e){}}))()),o}r._debug("#_acquireLock","acquiring lock for client",r.clientId);try{r.lockAcquired=!0;var i=t();for(r.pendingInLock.push(ie((function*(){try{yield i}catch(e){}}))()),yield i;r.pendingInLock.length;){var a=[...r.pendingInLock];yield Promise.all(a),r.pendingInLock.splice(0,a.length)}return yield i}finally{r._debug("#_acquireLock","releasing lock for client",r.clientId),r.lockAcquired=!1}}finally{r._debug("#_acquireLock","end")}}))()}_getCredentials(){var e=this;return ie((function*(){var t=yield e.localCredentials.getCredentials();if(t.scope===p)return t;if(!t){var r,n="credentials not found";return null===(r=e.onCredentialsError)||void 0===r||r.call(e,{msg:n}),e.unAuthenticatedError(n)}if(ce(t))if(t.refresh_token)try{t=yield e._refreshToken(t)}catch(r){var o;if("anonymous"!==t.scope)return null===(o=e.onCredentialsError)||void 0===o||o.call(e,{msg:r.error_description}),Promise.reject(r);t=yield e.anonymousLogin(t)}else{if("anonymous"!==t.scope){var i,a="no refresh token found in credentials";return null===(i=e.onCredentialsError)||void 0===i||i.call(e,{msg:a}),e.unAuthenticatedError(a)}t=yield e.anonymousLogin(t)}return t}))()}}le.defaultRetry=2,le.minRetry=0,le.maxRetry=5,le.retryInterval=1e3;var de=r(689),fe=r(616);function pe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function he(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?pe(Object(r),!0).forEach((function(t){ve(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):pe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ve(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ye(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function ge(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){ye(i,n,o,a,s,"next",e)}function s(e){ye(i,n,o,a,s,"throw",e)}a(void 0)}))}}var _e=(e,t)=>{var r;return function(){for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];clearTimeout(r),r=setTimeout(()=>e.apply(null,o),t)}},me=new de.CloudbaseEventEmitter,Ee="resolveCaptchaData",Ie="position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.5);z-index:999",be="position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:320px;padding:20px;background:#fff;border-radius:8px;box-shadow:0 0 10px rgba(0,0,0,0.2);z-index:1000",Oe="margin-bottom:15px",Se="display:flex;align-items:center;justify-content:space-between;margin-bottom:15px",Ce="width:100%;height:auto;border:1px solid #eee",Re="padding:10px 8px;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;flex:1;white-space:nowrap;margin-left:10px",Te="width:100%;padding:14px 16px;margin-bottom:15px;box-sizing:border-box;border:2px solid #e8ecf4;border-radius:10px;font-size:15px",we="width:100%;padding:10px;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer",Ae="background:#6c757d;cursor:not-allowed",Pe=e=>{var{oauthInstance:t,captchaState:r}=e,n=function(){var e=ge((function*(){try{var e=yield t.createCaptchaData({state:r.state});r=he(he({},r),{},{captchaData:e.data,token:e.token}),document.getElementById("captcha-image").src=e.data}catch(e){console.error("刷新图形验证码失败",e)}}));return function(){return e.apply(this,arguments)}}(),o=(e,t,r)=>{var n=document.createElement(e);return t&&(n.style.cssText=t),r&&(n.textContent=r),n},i=o("div",Ie),a=o("div",be);a.appendChild(o("p",Oe,"请输入你看到的字符:"));var s=o("div",Se),c=o("img",Ce);c.id="captcha-image",c.src=r.captchaData,s.appendChild(c);var u=o("button",Re,"刷新");u.onclick=_e(ge((function*(){u.textContent="加载中...",u.disabled=!0,u.style.cssText="".concat(Re,";").concat(Ae);try{yield n()}finally{u.textContent="刷新",u.disabled=!1,u.style.cssText=Re}})),500),s.appendChild(u),a.appendChild(s);var l=o("input",Te);l.type="text",l.placeholder="输入字符",l.maxLength=4,a.appendChild(l);var d=o("div","color:#dc3545;font-size:12px;margin-bottom:10px;display:none;padding:8px;background:#f8d7da;border:1px solid #f5c6cb;border-radius:4px");a.appendChild(d);var f=e=>{d.textContent=e,d.style.display="block"},p=o("button",we,"确定");p.onclick=_e(ge((function*(){var e=l.value.trim();if(e){d.style.display="none",p.textContent="验证中...",p.disabled=!0,p.style.cssText="".concat(we,";").concat(Ae);try{var o=yield t.verifyCaptchaData({token:r.token,key:e});me.fire(Ee,o),console.log("图形验证码校验成功"),document.body.removeChild(i),document.body.removeChild(a)}catch(e){console.error("图形验证码校验失败",e);var s=e.error_description||"图形验证码校验失败";f(s),l.value="",l.focus(),yield n()}finally{p.textContent="确定",p.disabled=!1,p.style.cssText=we}}else f("请输入字符")})),500),a.appendChild(p),document.body.appendChild(i),document.body.appendChild(a)},Ue=function(){var e=ge((function*(e,t){var{captchaData:r,state:n,token:o}=(0,fe.parseCaptcha)(e);return Pe({oauthInstance:t,captchaState:{captchaData:r,state:n,token:o}}),new Promise(e=>{console.log("等待图形验证码校验结果..."),me.on(Ee,t=>{e(null==t?void 0:t.data)})})}));return function(t,r){return e.apply(this,arguments)}}();function Ne(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function De(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){Ne(i,n,o,a,s,"next",e)}function s(e){Ne(i,n,o,a,s,"throw",e)}a(void 0)}))}}class xe{constructor(e){e.openURIWithCallback||(e.openURIWithCallback=this.getDefaultOpenURIWithCallback()),e.storage||(e.storage=se),this.config=e,this.tokenSectionName="captcha_".concat(e.clientId||e.env)}isMatch(){var e,t;return(null===(e=this.config)||void 0===e||null===(e=e.adapter)||void 0===e||null===(t=e.isMatch)||void 0===t?void 0:t.call(e))||C()}request(e,t){var r=this;return De((function*(){t||(t={}),t.method||(t.method="GET");var n,o="".concat(t.method,":").concat(e),i=e;t.withCaptcha&&(i=yield r.appendCaptchaTokenToURL(e,o,!1));try{n=yield r.config.request(i,t)}catch(n){return n.error===a.CAPTCHA_REQUIRED||n.error===a.CAPTCHA_INVALID?(e=yield r.appendCaptchaTokenToURL(e,o,n.error===a.CAPTCHA_INVALID),r.config.request(e,t)):Promise.reject(n)}return n}))()}getDefaultOpenURIWithCallback(){return e=>Ue(e,this.config.oauthInstance)}getCaptchaToken(e,r){var n=this;return De((function*(){if(!e){var o=yield n.findCaptchaToken();if(o)return o}var i=yield n.config.request(t.CAPTCHA_DATA_URL,{method:"POST",body:{state:r,redirect_uri:""},withCredentials:!1}),a="".concat(i.data,"?state=").concat(encodeURIComponent(r),"&token=").concat(encodeURIComponent(i.token)),s=yield n.config.openURIWithCallback(a);return n.saveCaptchaToken(s),s.captcha_token}))()}appendCaptchaTokenToURL(e,t,r){var n=this;return De((function*(){var o=yield n.getCaptchaToken(r,t);return e.indexOf("?")>0?e+="&captcha_token=".concat(o):e+="?captcha_token=".concat(o),e}))()}saveCaptchaToken(e){var t=this;return De((function*(){e.expires_at=new Date(Date.now()+1e3*(e.expires_in-10));var r=JSON.stringify(e);yield t.config.storage.setItem(t.tokenSectionName,r)}))()}findCaptchaToken(){var e=this;return De((function*(){var t=yield e.config.storage.getItem(e.tokenSectionName);if(null!=t)try{var r=JSON.parse(t);return null!=r&&r.expires_at&&(r.expires_at=new Date(r.expires_at)),r.expires_at<new Date?null:r.captcha_token}catch(t){return yield e.config.storage.removeItem(e.tokenSectionName),null}return null}))()}}const Le=class{constructor(e){if(this.params={},"string"==typeof e)this.parse(e);else if(e&&"object"==typeof e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&this.append(t,e[t])}parse(e){e.split("&").forEach(e=>{var[t,r]=e.split("=").map(decodeURIComponent);this.append(t,r)})}append(e,t){this.params[e]?this.params[e]=this.params[e].concat([t]):this.params[e]=[t]}get(e){return this.params[e]?this.params[e][0]:null}getAll(e){return this.params[e]||[]}delete(e){delete this.params[e]}has(e){return Object.prototype.hasOwnProperty.call(this.params,e)}set(e,t){this.params[e]=[t]}toString(){var e=this,t=[],r=function(r){Object.prototype.hasOwnProperty.call(e.params,r)&&e.params[r].forEach(e=>{t.push("".concat(encodeURIComponent(r),"=").concat(encodeURIComponent(e)))})};for(var n in this.params)r(n);return t.join("&")}};class ke extends Error{constructor(e){super(e.error_description||e.message),this.__isAuthError=!0,this.name="AuthError",this.status=e.error,this.code=e.error_code,this.requestId=e.requestId}}var je=["provider_redirect_uri","other_params"];function qe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function He(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?qe(Object(r),!0).forEach((function(t){Ge(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):qe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Ge(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ve(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function Me(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){Ve(i,n,o,a,s,"next",e)}function s(e){Ve(i,n,o,a,s,"throw",e)}a(void 0)}))}}function Be(e,t){return We.apply(this,arguments)}function We(){return(We=Me((function*(e,t){var n=function(){var e=Me((function*(){try{return r(3)}catch(e){try{return yield Promise.resolve().then(r.bind(r,3))}catch(e){return}}}));return function(){return e.apply(this,arguments)}}();try{var o;if(((null==t||null===(o=t.root)||void 0===o?void 0:o.globalThis)||globalThis).IS_MP_BUILD)return;0}catch(t){if(e)return n()}}))).apply(this,arguments)}class Fe{static parseParamsToSearch(e){return Object.keys(e).forEach(t=>{e[t]||delete e[t]}),new Le(e).toString()}constructor(e){var{request:t}=e,r=e.credentialsClient;if(!r){var n={apiOrigin:e.apiOrigin,apiPath:e.apiPath,clientId:e.clientId,storage:e.storage,env:e.env,baseRequest:e.baseRequest,anonymousSignInFunc:e.anonymousSignInFunc,wxCloud:e.wxCloud,onCredentialsError:e.onCredentialsError,headers:e.headers||{},i18n:e.i18n,debug:e.debug};r=new le(n)}if(!t){var o=r.request.bind(r),i=new xe(He({env:e.env,clientId:e.clientId,request:o,storage:e.storage,adapter:e.adapter,oauthInstance:this},e.captchaOptions));t=i.request.bind(i)}this.config={env:e.env,apiOrigin:e.apiOrigin,apiPath:e.apiPath,clientId:e.clientId,request:t,credentialsClient:r,storage:e.storage||se,adapter:e.adapter}}getParamsByVersion(e,r){var n,i=(0,v.I)(e),a=(null===(n={v2:o}[null==i?void 0:i.version])||void 0===n?void 0:n[r])||t[r];return i&&delete i.version,{params:i,url:a}}signIn(e){var t=this;return Me((function*(){var r=e.version||"v1",n=t.getParamsByVersion(e,"AUTH_SIGN_IN_URL");n.params.query&&delete n.params.query;var o=yield t.getEncryptParams(n.params),i=yield t.config.request(n.url,{method:"POST",body:o});return yield t.config.credentialsClient.setCredentials(He(He({},i),{},{version:r})),Promise.resolve(i)}))()}signInAnonymously(){var e=arguments,r=this;return Me((function*(){var n=e.length>0&&void 0!==e[0]?e[0]:{},o=e.length>1&&void 0!==e[1]&&e[1],i=yield r.config.request(t.AUTH_SIGN_IN_ANONYMOUSLY_URL,{method:"POST",body:n,useWxCloud:o});return yield r.config.credentialsClient.setCredentials(i),Promise.resolve(i)}))()}signUp(e){var r=this;return Me((function*(){var n=yield r.config.request(t.AUTH_SIGN_UP_URL,{method:"POST",body:e});return yield r.config.credentialsClient.setCredentials(n),Promise.resolve(n)}))()}signOut(e){var r=this;return Me((function*(){var n={};if(e){try{n=yield r.config.request(t.AUTH_SIGNOUT_URL,{method:"POST",withCredentials:!0,body:e})}catch(e){e.error!==a.UNAUTHENTICATED&&console.log("sign_out_error",e)}return yield r.config.credentialsClient.setCredentials(),n}var o=yield r.config.credentialsClient.getAccessToken(),i=yield r.config.request(t.AUTH_REVOKE_URL,{method:"POST",body:{token:o}});return yield r.config.credentialsClient.setCredentials(),Promise.resolve(i)}))()}revokeAllDevices(){var e=this;return Me((function*(){yield e.config.request(t.AUTH_REVOKE_ALL_URL,{method:"DELETE",withCredentials:!0})}))()}revokeDevice(e){var r=this;return Me((function*(){yield r.config.request(t.AUTHORIZED_DEVICES_DELETE_URL+e.device_id,{method:"DELETE",withCredentials:!0})}))()}getVerification(e,r){var n=this;return Me((function*(){var o=!1;"CUR_USER"===e.target?o=!0:(yield n.hasLoginState())&&(o=!0);var i=(0,v.I)(e);return i.phone_number&&!/^\+\d{1,3}\s+\d+/.test(i.phone_number)&&(i.phone_number="+86 ".concat(i.phone_number)),n.config.request(t.VERIFICATION_URL,{method:"POST",body:i,withCaptcha:(null==r?void 0:r.withCaptcha)||!1,withCredentials:o})}))()}verify(e){var t=this;return Me((function*(){var r=t.getParamsByVersion(e,"VERIFY_URL"),n=yield t.config.request(r.url,{method:"POST",body:r.params});return"v2"===(null==e?void 0:e.version)&&(yield t.config.credentialsClient.setCredentials(He(He({},n),{},{version:"v2"}))),n}))()}genProviderRedirectUri(e){var r=this;return Me((function*(){var{provider_redirect_uri:n,other_params:o={}}=e,i=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.includes(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.includes(r)||{}.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,je);n&&!i.redirect_uri&&(i.redirect_uri=n);var a="".concat(t.PROVIDER_URI_URL,"?").concat(Fe.parseParamsToSearch(i));return Object.keys(o).forEach(e=>{var t=o[e];("sign_out_uri"!==e||(null==t?void 0:t.length)>0)&&(a+="&other_params[".concat(e,"]=").concat(encodeURIComponent(t)))}),r.config.request(a,{method:"GET"})}))()}grantProviderToken(e){var r=arguments,n=this;return Me((function*(){var o=r.length>1&&void 0!==r[1]&&r[1];return n.config.request(t.PROVIDER_TOKEN_URL,{method:"POST",body:e,useWxCloud:o})}))()}patchProviderToken(e){var r=this;return Me((function*(){return r.config.request(t.PROVIDER_TOKEN_URL,{method:"PATCH",body:e})}))()}signInWithProvider(e){var t=arguments,r=this;return Me((function*(){var n=t.length>1&&void 0!==t[1]&&t[1],o=r.getParamsByVersion(e,"AUTH_SIGN_IN_WITH_PROVIDER_URL"),i=yield r.config.request(o.url,{method:"POST",body:o.params,useWxCloud:n});return yield r.config.credentialsClient.setCredentials(He(He({},i),{},{version:(null==e?void 0:e.version)||"v1"})),Promise.resolve(i)}))()}toBindIdentity(e){var t=this;return Me((function*(){var r,n,o,i=e.credentials||(yield t.config.credentialsClient.localCredentials.getCredentials());try{yield t.bindWithProvider({provider_token:e.provider_token},i),r={data:{type:f.BIND_IDENTITY,provider:e.provider},error:null}}catch(e){r={data:{type:f.BIND_IDENTITY},error:new ke(e)}}e.fireEvent&&(null===(n=t.config.eventBus)||void 0===n||null===(o=n.fire)||void 0===o||o.call(n,d.AUTH_STATE_CHANGED,{event:l.BIND_IDENTITY,info:r}));return r}))()}getInitialSession(){var e=this;return Me((function*(){var t={};try{var r,n,o,i,a;if("undefined"==typeof window||"undefined"==typeof document)return{data:null,error:null};var s=new URLSearchParams(null===(r=location)||void 0===r?void 0:r.search),c=s.get("code"),u=s.get("state");if(!c||!u)return{data:null,error:null};var l=null;try{l=JSON.parse(sessionStorage.getItem(u)||"null")}catch(e){}t={type:null===(n=l)||void 0===n?void 0:n.type};var d=s.get("error"),p=s.get("error_description");if(d||p)return{data:t,error:new ke({message:p||d||"Unknown error from OAuth provider"})};var h=(null===(o=l)||void 0===o?void 0:o.provider)||s.get("provider");if(!h)return{data:t,error:new ke({message:"Provider is required for OAuth verification"})};var v,y,g=location.origin+location.pathname,{provider_token:_}=yield e.grantProviderToken({provider_id:h,provider_redirect_uri:g,provider_code:c}),m=null;if(l.type===f.BIND_IDENTITY)v=yield e.config.credentialsClient.localCredentials.getCredentials(),y=yield e.toBindIdentity({provider:h,provider_token:_,credentials:v});else if(l.type===f.SIGN_IN){y=e.getParamsByVersion({provider:h},"AUTH_SIGN_IN_WITH_PROVIDER_URL"),v=yield e.config.request(y.url,{method:"POST",body:{provider_token:_}});try{m=yield e.getUserInfo({credentials:v})}catch(e){console.error("get user info error",e)}y={data:He(He({},t),{},{session:v,user:m}),error:null}}s.delete("code"),s.delete("state"),s.delete("provider"),e.restoreUrlState(void 0===(null===(i=l)||void 0===i?void 0:i.search)?"?".concat(s.toString()):l.search,(null===(a=l)||void 0===a?void 0:a.hash)||location.hash);try{sessionStorage.removeItem(u)}catch(e){}return y}catch(e){return{data:t,error:new ke(e)}}}))()}signInCustom(e){var r=this;return Me((function*(){var n=yield r.config.request(t.AUTH_SIGN_IN_CUSTOM,{method:"POST",body:e});return yield r.config.credentialsClient.setCredentials(n),Promise.resolve(n)}))()}signInWithWechat(){var e=arguments,r=this;return Me((function*(){var n=e.length>0&&void 0!==e[0]?e[0]:{},o=yield r.config.request(t.AUTH_SIGN_IN_WITH_WECHAT_URL,{method:"POST",body:n});return yield r.config.credentialsClient.setCredentials(o),Promise.resolve(o)}))()}bindWithProvider(e,r){var n=this;return Me((function*(){return n.config.request(t.PROVIDER_BIND_URL,{method:"POST",body:e,withCredentials:!0,getCredentials:r?()=>r:void 0})}))()}getUserProfile(e){var t=this;return Me((function*(){return t.getUserInfo(e)}))()}getUserInfo(){var e=arguments,t=this;return Me((function*(){var r,n=e.length>0&&void 0!==e[0]?e[0]:{},o=t.getParamsByVersion(n,"USER_ME_URL");if(null!==(r=o.params)&&void 0!==r&&r.query){var i=new Le(o.params.query);o.url+="?".concat(i.toString())}var a=yield t.config.request(o.url,{method:"GET",withCredentials:!0,getCredentials:n.credentials?()=>n.credentials:void 0});return a.sub&&(a.uid=a.sub),a}))()}getWedaUserInfo(){var e=this;return Me((function*(){return yield e.config.request(t.WEDA_USER_URL,{method:"GET",withCredentials:!0})}))()}deleteMe(e){var t=this;return Me((function*(){var r=t.getParamsByVersion(e,"USER_ME_URL"),n="".concat(r.url,"?").concat(Fe.parseParamsToSearch(r.params));return t.config.request(n,{method:"DELETE",withCredentials:!0})}))()}hasLoginState(){var e=this;return Me((function*(){try{return yield e.config.credentialsClient.getAccessToken(),!0}catch(e){return!1}}))()}hasLoginStateSync(){return this.config.credentialsClient.getCredentialsSync()}getLoginState(){var e=this;return Me((function*(){return e.config.credentialsClient.getCredentialsAsync()}))()}transByProvider(e){var r=this;return Me((function*(){return r.config.request(t.USER_TRANS_BY_PROVIDER_URL,{method:"PATCH",body:e,withCredentials:!0})}))()}grantToken(e){var t=this;return Me((function*(){var r=t.getParamsByVersion(e,"AUTH_TOKEN_URL");return t.config.request(r.url,{method:"POST",body:r.params})}))()}getProviders(){var e=this;return Me((function*(){return e.config.request(t.PROVIDER_LIST,{method:"GET",withCredentials:!0})}))()}unbindProvider(e){var r=this;return Me((function*(){return r.config.request("".concat(t.PROVIDER_UNBIND_URL,"/").concat(e.provider_id),{method:"DELETE",withCredentials:!0})}))()}checkPassword(e){var r=this;return Me((function*(){return r.config.request("".concat(t.CHECK_PWD_URL),{method:"POST",withCredentials:!0,body:e})}))()}editContact(e){var r=this;return Me((function*(){return r.config.request("".concat(t.BIND_CONTACT_URL),{method:"PATCH",withCredentials:!0,body:e})}))()}setPassword(e){var r=this;return Me((function*(){return r.config.request("".concat(t.AUTH_SET_PASSWORD),{method:"PATCH",withCredentials:!0,body:e})}))()}updatePasswordByOld(e){var t=this;return Me((function*(){var r=yield t.sudo({password:e.old_password});return t.setPassword({sudo_token:r.sudo_token,new_password:e.new_password})}))()}sudo(e){var r=this;return Me((function*(){return r.config.request("".concat(t.SUDO_URL),{method:"POST",withCredentials:!0,body:e})}))()}sendVerificationCodeToCurrentUser(e){var r=this;return Me((function*(){return e.target="CUR_USER",r.config.request(t.VERIFICATION_URL,{method:"POST",body:e,withCredentials:!0,withCaptcha:!0})}))()}changeBoundProvider(e){var r=this;return Me((function*(){return r.config.request("".concat(t.PROVIDER_LIST,"/").concat(e.provider_id,"/trans"),{method:"POST",body:{provider_trans_token:e.trans_token},withCredentials:!0})}))()}setUserProfile(e){var r=this;return Me((function*(){return r.config.request(t.USER_PRIFILE_URL,{method:"PATCH",body:e,withCredentials:!0})}))()}updateUserBasicInfo(e){var r=this;return Me((function*(){return r.config.request(t.USER_BASIC_EDIT_URL,{method:"POST",withCredentials:!0,body:e})}))()}queryUserProfile(e){var r=this;return Me((function*(){var n=new Le(e);return r.config.request("".concat(t.USER_QUERY_URL,"?").concat(n.toString()),{method:"GET",withCredentials:!0})}))()}setCustomSignFunc(e){this.getCustomSignTicketFn=e}signInWithCustomTicket(){var e=this;return Me((function*(){var t=e.getCustomSignTicketFn;if(!t)return Promise.reject({error:"failed_precondition",error_description:"please use setCustomSignFunc to set custom sign function"});var r=yield t();return e.signInCustom({provider_id:"custom",ticket:r})}))()}resetPassword(e){var r=this;return Me((function*(){return r.config.request(t.AUTH_RESET_PASSWORD,{method:"POST",body:e})}))()}authorize(e){var r=this;return Me((function*(){return r.config.request(t.AUTHORIZE_URL,{method:"POST",withCredentials:!0,body:e})}))()}authorizeDevice(e){var r=this;return Me((function*(){return r.config.request(t.AUTHORIZE_DEVICE_URL,{method:"POST",withCredentials:!0,body:e})}))()}deviceAuthorize(e){var r=this;return Me((function*(){return r.config.request(t.AUTH_GET_DEVICE_CODE,{method:"POST",body:e,withCredentials:!0})}))()}authorizeInfo(e){var r=this;return Me((function*(){var n="".concat(t.AUTHORIZE_INFO_URL,"?").concat(Fe.parseParamsToSearch(e)),o=!0,i=!1;return(yield r.hasLoginState())&&(i=!0,o=!1),r.config.request(n,{method:"GET",withBasicAuth:o,withCredentials:i})}))()}checkUsername(e){var r=this;return Me((function*(){return r.config.request(t.CHECK_USERNAME,{method:"GET",body:e,withCredentials:!0})}))()}checkIfUserExist(e){var r=this;return Me((function*(){var n=new Le(e);return r.config.request("".concat(t.CHECK_IF_USER_EXIST,"?").concat(n.toString()),{method:"GET"})}))()}loginScope(){var e=this;return Me((function*(){return e.config.credentialsClient.getScope()}))()}loginGroups(){var e=this;return Me((function*(){return e.config.credentialsClient.getGroups()}))()}refreshTokenForce(e){var t=this;return Me((function*(){var r=yield t.config.credentialsClient.getCredentials();return yield t.config.credentialsClient.refreshToken(He(He({},r),{},{version:(null==e?void 0:e.version)||"v1"}))}))()}getCredentials(){var e=this;return Me((function*(){return e.config.credentialsClient.getCredentials()}))()}getPublicKey(){var e=this;return Me((function*(){return e.config.request(o.AUTH_PUBLIC_KEY,{method:"POST",body:{}})}))()}getEncryptParams(e){var t=this;return Me((function*(){var{isEncrypt:r}=e;delete e.isEncrypt;var n=(0,v.I)(e),o=yield Be(r,t.config.adapter);if(!o)return e;var i="",a="";try{var s=yield t.getPublicKey();if(i=s.public_key,a=s.public_key_thumbprint,!i||!a)throw s}catch(e){throw e}return{params:o.getEncryptInfo({publicKey:i,payload:n}),public_key_thumbprint:a}}))()}getProviderSubType(){var e=this;return Me((function*(){return e.config.request(t.GET_PROVIDER_TYPE,{method:"POST",body:{provider_id:"weda"}})}))()}verifyCaptchaData(e){var r=this;return Me((function*(){var{token:n,key:o}=e;return r.config.request(t.VERIFY_CAPTCHA_DATA_URL,{method:"POST",body:{token:n,key:o},withCredentials:!1})}))()}createCaptchaData(e){var r=this;return Me((function*(){var{state:n,redirect_uri:o}=e;return r.config.request(t.CAPTCHA_DATA_URL,{method:"POST",body:{state:n,redirect_uri:o},withCredentials:!1})}))()}getMiniProgramCode(e){var r=this;return Me((function*(){return r.config.request(t.GET_MINIPROGRAM_QRCODE,{method:"POST",body:e})}))()}getMiniProgramQrCodeStatus(e){var r=this;return Me((function*(){return r.config.request(t.GET_MINIPROGRAM_QRCODE_STATUS,{method:"POST",body:e})}))()}getUserBehaviorLog(e){var r=this;return Me((function*(){var n="".concat(t.GET_USER_BEHAVIOR_LOG,"?").concat({LOGIN:"query[action]=USER_LOGIN",MODIFY:"ne_query[action]=USER_LOGIN"}[e.type],"&limit=").concat(e.limit).concat(e.page_token?"&page_token=".concat(e.page_token):"");return r.config.request(n,{method:"GET",withCredentials:!0})}))()}modifyPassword(e){var r=this;return Me((function*(){var n="",o="",i=yield Be(!0,r.config.adapter);if(!i)throw new Error("do not support encrypt, a encrypt util required.");try{var a=yield r.getPublicKey();if(n=a.public_key,o=a.public_key_thumbprint,!n||!o)throw a}catch(e){throw e}var s=e.password?i.getEncryptInfo({publicKey:n,payload:e.password}):"",c=i.getEncryptInfo({publicKey:n,payload:e.new_password});return r.config.request(t.USER_BASIC_EDIT_URL,{method:"POST",withCredentials:!0,body:{user_id:e.user_id,encrypt_password:s,encrypt_new_password:c,public_key_thumbprint:o}})}))()}modifyPasswordWithoutLogin(e){var t=this;return Me((function*(){var r="",n="",i=yield Be(!0,t.config.adapter);if(!i)throw new Error("do not support encrypt, a encrypt util required.");try{var a=yield t.getPublicKey();if(r=a.public_key,n=a.public_key_thumbprint,!r||!n)throw a}catch(e){throw e}var s=e.password?i.getEncryptInfo({publicKey:r,payload:e.password}):"",c=i.getEncryptInfo({publicKey:r,payload:e.new_password});return t.config.request(o.AUTH_RESET_PASSWORD,{method:"POST",body:{username:e.username,password:s,new_password:c,public_key_thumbprint:n}})}))()}restoreUrlState(e,t){if(void 0!==e)try{var r=new URL(window.location.href);r.search=e,r.hash=t||"",window.history.replaceState(null,"",r.toString()),window.location.replace(r.toString())}catch(e){}}}function Ke(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ye(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ke(Object(r),!0).forEach((function(t){ze(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ke(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ze(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class Qe{constructor(e){var{apiOrigin:t,apiPath:r=s,clientId:n,env:o,storage:i,request:a,baseRequest:c,anonymousSignInFunc:u,wxCloud:l,adapter:d,onCredentialsError:f,headers:p,i18n:h,useWxCloud:v,eventBus:y,detectSessionInUrl:g,debug:_}=e;if(this.detectSessionInUrl=null!=g&&g,this.oauth2client=new le({apiOrigin:t,apiPath:r,clientId:n,env:o,storage:i,baseRequest:c||a,anonymousSignInFunc:u,wxCloud:l,onCredentialsError:f,headers:p||{},i18n:h,useWxCloud:v,eventBus:y,debug:_}),this.authApi=new Fe(Ye(Ye({credentialsClient:this.oauth2client},e),{},{request:a?this.oauth2client.request.bind(this.oauth2client):void 0,adapter:d})),g)this.oauth2client.setGetInitialSession(this.authApi.getInitialSession.bind(this.authApi));else try{var m=new URL(window.location.href),E=m.searchParams.get("code"),I=m.searchParams.get("state"),b=JSON.parse(sessionStorage.getItem(I)||"null");E&&I&&null!=b&&b.hash&&(m.hash=b.hash,window.history.replaceState(null,"",m.toString()),window.location.replace(m.toString()))}catch(e){}}initializeSession(e){this.detectSessionInUrl?(this.oauth2client.setOnInitialSessionObtained(e),this.oauth2client.initialize()):this.oauth2client.initialize(Promise.resolve({error:null}))}}})(),n})());
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudbase/oauth",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.6",
|
|
4
4
|
"description": "cloudbase javascript sdk auth componets",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
"precommit": "npm run lint"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@cloudbase/utilities": "3.1.
|
|
23
|
+
"@cloudbase/utilities": "3.1.6"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@babel/preset-env": "^7.25.3",
|
|
27
|
-
"@cloudbase/types": "3.1.
|
|
27
|
+
"@cloudbase/types": "3.1.6",
|
|
28
28
|
"@types/node": "^22.5.4",
|
|
29
29
|
"terser-webpack-plugin": "^3.0.2",
|
|
30
30
|
"ts-loader": "^9.5.1",
|
|
@@ -34,5 +34,5 @@
|
|
|
34
34
|
"@cloudbase/utilities": "2.25.0"
|
|
35
35
|
},
|
|
36
36
|
"license": "Apache-2.0",
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "abd1ab7bf498cfc3042606fb92f436b1c5f8b2c3"
|
|
38
38
|
}
|
package/src/auth/auth-error.ts
CHANGED
|
@@ -10,6 +10,9 @@ export class AuthError extends Error {
|
|
|
10
10
|
/** HTTP status code that caused the error. */
|
|
11
11
|
status: number | undefined
|
|
12
12
|
|
|
13
|
+
/** Request ID associated with the error. */
|
|
14
|
+
requestId: string | undefined
|
|
15
|
+
|
|
13
16
|
protected __isAuthError = true
|
|
14
17
|
|
|
15
18
|
constructor(error) {
|
|
@@ -17,5 +20,6 @@ export class AuthError extends Error {
|
|
|
17
20
|
this.name = 'AuthError'
|
|
18
21
|
this.status = error.error
|
|
19
22
|
this.code = error.error_code
|
|
23
|
+
this.requestId = error.requestId
|
|
20
24
|
}
|
|
21
25
|
}
|
package/src/index.ts
CHANGED
|
@@ -67,6 +67,21 @@ export class CloudbaseOAuth {
|
|
|
67
67
|
// This allows Auth.getInitialSession to handle URL detection and OAuth verification
|
|
68
68
|
if (detectSessionInUrl) {
|
|
69
69
|
this.oauth2client.setGetInitialSession(this.authApi.getInitialSession.bind(this.authApi))
|
|
70
|
+
} else {
|
|
71
|
+
// 在授权之前是hash地址的情况下,需要将hash地址替换到url上
|
|
72
|
+
try {
|
|
73
|
+
const url = new URL(window.location.href)
|
|
74
|
+
const code = url.searchParams.get('code')
|
|
75
|
+
const state = url.searchParams.get('state')
|
|
76
|
+
const cacheData = JSON.parse(sessionStorage.getItem(state) || 'null')
|
|
77
|
+
if (code && state && cacheData?.hash) {
|
|
78
|
+
url.hash = cacheData.hash
|
|
79
|
+
window.history.replaceState(null, '', url.toString())
|
|
80
|
+
window.location.replace(url.toString())
|
|
81
|
+
}
|
|
82
|
+
} catch (error) {
|
|
83
|
+
//
|
|
84
|
+
}
|
|
70
85
|
}
|
|
71
86
|
// Note: Do NOT auto-call initialize() here.
|
|
72
87
|
// Upper layer (packages/auth) should call initializeSession() after setting up onInitialSessionObtained callback
|
|
@@ -580,6 +580,9 @@ export class OAuth2Client implements AuthClient {
|
|
|
580
580
|
|
|
581
581
|
break
|
|
582
582
|
} catch (responseError) {
|
|
583
|
+
try {
|
|
584
|
+
responseError.requestId = responseError.requestId || options.headers[RequestIdHeaderName] || ''
|
|
585
|
+
} catch (error) {}
|
|
583
586
|
if (options.withCredentials && responseError && responseError.error === ErrorType.UNAUTHENTICATED) {
|
|
584
587
|
await this.setCredentials(null)
|
|
585
588
|
return Promise.reject(responseError)
|