UNPKG

@cloudbase/app

Version:
124 lines 14.4 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createWebStreamFromNodeReadableStream = exports.parseQueryString = exports.NodeRequest = void 0; var adapter_interface_1 = require("@cloudbase/adapter-interface"); var request_1 = require("./request"); var tool_1 = require("./tool"); var context_1 = require("./context"); var utils_1 = require("./utils"); var _WS = null; function getWS() { if (!_WS) { try { _WS = require('ws'); } catch (e) { console.error('缺少依赖 ws,请执行以下命令安装:\n\n' + ' npm install ws\n\n' + '该依赖用于 Node 环境下的 WebSocket 连接。'); } } return _WS; } var request_2 = require("./request"); Object.defineProperty(exports, "NodeRequest", { enumerable: true, get: function () { return request_2.NodeRequest; } }); var utils_2 = require("./utils"); Object.defineProperty(exports, "parseQueryString", { enumerable: true, get: function () { return utils_2.parseQueryString; } }); Object.defineProperty(exports, "createWebStreamFromNodeReadableStream", { enumerable: true, get: function () { return utils_2.createWebStreamFromNodeReadableStream; } }); function isMatch() { return typeof process !== 'undefined' && process.versions != null && process.versions.node != null; } var storage = (function () { var db = new Map(); return { mode: 'sync', setItem: function (key, value) { db.set(key, value); }, getItem: function (key) { return db.get(key); }, removeItem: function (key) { db.delete(key); }, clear: function () { db.clear(); }, }; })(); function genAdapter(options) { var adapter = { nodeTool: tool_1.nodeTool, getSecretInfo: context_1.getSecretInfo, root: { globalThis: {} }, reqClass: request_1.NodeRequest, wsClass: getWS(), sessionStorage: storage, localStorage: storage, primaryStorage: adapter_interface_1.StorageType.session, captchaOptions: { openURIWithCallback: function (_url) { var EventBus = options.EventBus; var queryObj = {}; var url = _url; var matched = _url.match(/^(data:.*?)(\?[^#\s]*)?$/); if (matched) { url = matched[1]; var search = matched[2]; if (search) { queryObj = (0, utils_1.parseQueryString)(search); } } var token = queryObj.token, restQueryObj = __rest(queryObj, ["token"]); if (/^data:/.test(url) && !token) { return Promise.reject({ error: 'invalid_argument', error_description: "invalie captcha data: ".concat(_url), }); } if (!token) { return Promise.reject({ error: 'unimplemented', error_description: 'need to impl captcha data', }); } return new Promise(function (resolve) { EventBus.$emit('CAPTCHA_DATA_CHANGE', __assign(__assign({}, restQueryObj), { token: token, url: url })); EventBus.$once('RESOLVE_CAPTCHA_DATA', function (res) { resolve(res); }); }); }, }, }; return adapter; } var adapter = { genAdapter: genAdapter, isMatch: isMatch, runtime: 'node-adapter', }; exports.default = adapter; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGlicy9hZGFwdGVyLW5vZGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLGtFQUtxQztBQUVyQyxxQ0FBdUM7QUFDdkMsK0JBQWlDO0FBQ2pDLHFDQUF5QztBQUN6QyxpQ0FBMEM7QUFJMUMsSUFBSSxHQUFHLEdBQVEsSUFBSSxDQUFBO0FBQ25CLFNBQVMsS0FBSztJQUNaLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDUixJQUFJO1lBRUYsR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNwQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0I7a0JBQ2xDLHNCQUFzQjtrQkFDdEIsK0JBQStCLENBQUUsQ0FBQTtTQUN0QztLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBR0QscUNBQXVDO0FBQTlCLHNHQUFBLFdBQVcsT0FBQTtBQUNwQixpQ0FBaUY7QUFBeEUseUdBQUEsZ0JBQWdCLE9BQUE7QUFBRSw4SEFBQSxxQ0FBcUMsT0FBQTtBQWNoRSxTQUFTLE9BQU87SUFFZCxPQUFPLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUE7QUFDcEcsQ0FBQztBQU1ELElBQU0sT0FBTyxHQUFxQixDQUFDO0lBQ2pDLElBQU0sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7SUFDcEIsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNO1FBQ1osT0FBTyxZQUFDLEdBQUcsRUFBRSxLQUFLO1lBQ2hCLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxPQUFPLFlBQUMsR0FBRztZQUNULE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNwQixDQUFDO1FBQ0QsVUFBVSxZQUFDLEdBQUc7WUFDWixFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2hCLENBQUM7UUFDRCxLQUFLO1lBQ0gsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ1osQ0FBQztLQUNGLENBQUE7QUFDSCxDQUFDLENBQUMsRUFBRSxDQUFBO0FBU0osU0FBUyxVQUFVLENBQUMsT0FBWTtJQUM5QixJQUFNLE9BQU8sR0FVVDtRQUNGLFFBQVEsaUJBQUE7UUFDUixhQUFhLHlCQUFBO1FBQ2IsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTtRQUN4QixRQUFRLEVBQUUscUJBQVc7UUFDckIsT0FBTyxFQUFFLEtBQUssRUFBMEI7UUFDeEMsY0FBYyxFQUFFLE9BQU87UUFDdkIsWUFBWSxFQUFFLE9BQU87UUFDckIsY0FBYyxFQUFFLCtCQUFXLENBQUMsT0FBTztRQUNuQyxjQUFjLEVBQUU7WUFNZCxtQkFBbUIsRUFBRSxVQUFDLElBQVk7Z0JBQ3hCLElBQUEsUUFBUSxHQUFLLE9BQU8sU0FBWixDQUFZO2dCQUM1QixJQUFJLFFBQVEsR0FBc0MsRUFBRSxDQUFBO2dCQUNwRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUE7Z0JBR2QsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO2dCQUN0RCxJQUFJLE9BQU8sRUFBRTtvQkFDWCxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUNoQixJQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQ3pCLElBQUksTUFBTSxFQUFFO3dCQUNWLFFBQVEsR0FBRyxJQUFBLHdCQUFnQixFQUFDLE1BQU0sQ0FBQyxDQUFBO3FCQUNwQztpQkFDRjtnQkFFTyxJQUFBLEtBQUssR0FBc0IsUUFBUSxNQUE5QixFQUFLLFlBQVksVUFBSyxRQUFRLEVBQXJDLFNBQTBCLENBQUYsQ0FBYTtnQkFHM0MsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNoQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ3BCLEtBQUssRUFBRSxrQkFBa0I7d0JBQ3pCLGlCQUFpQixFQUFFLGdDQUF5QixJQUFJLENBQUU7cUJBQ25ELENBQUMsQ0FBQTtpQkFDSDtnQkFDRCxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNWLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDcEIsS0FBSyxFQUFFLGVBQWU7d0JBQ3RCLGlCQUFpQixFQUFFLDJCQUEyQjtxQkFDL0MsQ0FBQyxDQUFBO2lCQUNIO2dCQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPO29CQUV6QixRQUFRLENBQUMsS0FBSyxDQUFDLHFCQUFxQix3QkFDL0IsWUFBWSxLQUNmLEtBQUssT0FBQSxFQUNMLEdBQUcsS0FBQSxJQUNILENBQUE7b0JBR0YsUUFBUSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxVQUFDLEdBQWtEO3dCQUN4RixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7b0JBQ2QsQ0FBQyxDQUFDLENBQUE7Z0JBQ0osQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDO1NBQ0Y7S0FDRixDQUFBO0lBQ0QsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQztBQUdELElBQU0sT0FBTyxHQUFHO0lBQ2QsVUFBVSxZQUFBO0lBQ1YsT0FBTyxTQUFBO0lBQ1AsT0FBTyxFQUFFLGNBQWM7Q0FDeEIsQ0FBQTtBQUVELGtCQUFlLE9BQU8sQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbmltcG9ydCB7XG4gIFNES0FkYXB0ZXJJbnRlcmZhY2UsXG4gIFN0b3JhZ2VJbnRlcmZhY2UsXG4gIFN0b3JhZ2VUeXBlLFxuICBXZWJTb2NrZXRDb250cnVjdG9yIGFzIFdlYlNvY2tldENvbnN0cnVjdG9yLFxufSBmcm9tICdAY2xvdWRiYXNlL2FkYXB0ZXItaW50ZXJmYWNlJ1xuXG5pbXBvcnQgeyBOb2RlUmVxdWVzdCB9IGZyb20gJy4vcmVxdWVzdCdcbmltcG9ydCB7IG5vZGVUb29sIH0gZnJvbSAnLi90b29sJ1xuaW1wb3J0IHsgZ2V0U2VjcmV0SW5mbyB9IGZyb20gJy4vY29udGV4dCdcbmltcG9ydCB7IHBhcnNlUXVlcnlTdHJpbmcgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMnXG5cbi8vIHdzIOW7tui/n+WKoOi9ve+8jOmBv+WFjemdniBOb2RlIOeOr+Wig+aJk+WMheaXtuW8leWFpVxubGV0IF9XUzogYW55ID0gbnVsbFxuZnVuY3Rpb24gZ2V0V1MoKSB7XG4gIGlmICghX1dTKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICBfV1MgPSByZXF1aXJlKCd3cycpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcign57y65bCR5L6d6LWWIHdz77yM6K+35omn6KGM5Lul5LiL5ZG95Luk5a6J6KOF77yaXFxuXFxuJ1xuICAgICAgICArICcgIG5wbSBpbnN0YWxsIHdzXFxuXFxuJ1xuICAgICAgICArICfor6Xkvp3otZbnlKjkuo4gTm9kZSDnjq/looPkuIvnmoQgV2ViU29ja2V0IOi/nuaOpeOAgicsKVxuICAgIH1cbiAgfVxuICByZXR1cm4gX1dTXG59XG5cbi8vIFJlLWV4cG9ydCBmb3IgZXh0ZXJuYWwgY29uc3VtZXJzXG5leHBvcnQgeyBOb2RlUmVxdWVzdCB9IGZyb20gJy4vcmVxdWVzdCdcbmV4cG9ydCB7IHBhcnNlUXVlcnlTdHJpbmcsIGNyZWF0ZVdlYlN0cmVhbUZyb21Ob2RlUmVhZGFibGVTdHJlYW0gfSBmcm9tICcuL3V0aWxzJ1xuZXhwb3J0IHR5cGUge1xuICBJQ3JlYXRlVGlja2V0T3B0cyxcbiAgSUdldFVzZXJJbmZvUmVzdWx0LFxuICBJR2V0RW5kVXNlckluZm9SZXN1bHQsXG4gIElVc2VySW5mb1F1ZXJ5LFxuICBJQ29udGV4dFBhcmFtLFxuICBJQ29tcGxldGVDbG91ZGJhc2VDb250ZXh0LFxufSBmcm9tICcuL3R5cGVzJ1xuXG4vKipcbiAqIOeOr+Wig+WMuemFjeajgOa1i++8muWIpOaWreW9k+WJjei/kOihjOeOr+Wig+aYr+WQpuS4uiBOb2RlLmpzXG4gKiBTREsg6YCa6L+H5q2k5pa55rOV5Yaz5a6a5piv5ZCm5L2/55So5b2T5YmNIGFkYXB0ZXJcbiAqL1xuZnVuY3Rpb24gaXNNYXRjaCgpOiBib29sZWFuIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuICByZXR1cm4gdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MudmVyc2lvbnMgIT0gbnVsbCAmJiBwcm9jZXNzLnZlcnNpb25zLm5vZGUgIT0gbnVsbFxufVxuXG4vKipcbiAqIOWfuuS6jiBNYXAg55qE5YaF5a2Y5a2Y5YKo5a6e546wXG4gKiBOb2RlLmpzIOeOr+Wig+S4i+aXoOa1j+iniOWZqCBTdG9yYWdlIEFQSe+8jOS9v+eUqOWGheWtmCBNYXAg5qih5oufXG4gKi9cbmNvbnN0IHN0b3JhZ2U6IFN0b3JhZ2VJbnRlcmZhY2UgPSAoKCkgPT4ge1xuICBjb25zdCBkYiA9IG5ldyBNYXAoKVxuICByZXR1cm4ge1xuICAgIG1vZGU6ICdzeW5jJyxcbiAgICBzZXRJdGVtKGtleSwgdmFsdWUpIHtcbiAgICAgIGRiLnNldChrZXksIHZhbHVlKVxuICAgIH0sXG4gICAgZ2V0SXRlbShrZXkpIHtcbiAgICAgIHJldHVybiBkYi5nZXQoa2V5KVxuICAgIH0sXG4gICAgcmVtb3ZlSXRlbShrZXkpIHtcbiAgICAgIGRiLmRlbGV0ZShrZXkpXG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIGRiLmNsZWFyKClcbiAgICB9LFxuICB9XG59KSgpXG5cbi8qKlxuICog55Sf5oiQIE5vZGUuanMg546v5aKD55qEIFNESyBBZGFwdGVyXG4gKiDnu4Too4Xor7fmsYLnsbvjgIHlrZjlgqjjgIFXZWJTb2NrZXTjgIHorqTor4HnrYnog73liptcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIOmFjee9rumhue+8jOWMheWQqyBFdmVudEJ1c++8iOeUqOS6jumqjOivgeeggeWbnuiwg++8iVxuICogQHJldHVybnMgU0RLIEFkYXB0ZXIg5a6e5L6LXG4gKi9cbmZ1bmN0aW9uIGdlbkFkYXB0ZXIob3B0aW9uczogYW55KSB7XG4gIGNvbnN0IGFkYXB0ZXI6IFNES0FkYXB0ZXJJbnRlcmZhY2UgJiB7XG4gICAgZ2V0U2VjcmV0SW5mbzogKGNvbmZpZz86IElDbG91ZGJhc2VDb25maWcpID0+IHtcbiAgICAgIGVudjogc3RyaW5nXG4gICAgICBzZWNyZXRJZDogc3RyaW5nXG4gICAgICBzZWNyZXRLZXk6IHN0cmluZ1xuICAgICAgc2Vzc2lvblRva2VuOiBzdHJpbmdcbiAgICAgIGFjY2Vzc0tleTogc3RyaW5nXG4gICAgICBzZWNyZXRUeXBlOiBzdHJpbmdcbiAgICB9XG4gICAgbm9kZVRvb2w6IChhcHA6IGFueSwgY29uZmlnOiBJQ2xvdWRiYXNlQ29uZmlnKSA9PiB2b2lkXG4gIH0gPSB7XG4gICAgbm9kZVRvb2wsXG4gICAgZ2V0U2VjcmV0SW5mbyxcbiAgICByb290OiB7IGdsb2JhbFRoaXM6IHt9IH0sXG4gICAgcmVxQ2xhc3M6IE5vZGVSZXF1ZXN0LFxuICAgIHdzQ2xhc3M6IGdldFdTKCkgYXMgV2ViU29ja2V0Q29uc3RydWN0b3IsXG4gICAgc2Vzc2lvblN0b3JhZ2U6IHN0b3JhZ2UsXG4gICAgbG9jYWxTdG9yYWdlOiBzdG9yYWdlLFxuICAgIHByaW1hcnlTdG9yYWdlOiBTdG9yYWdlVHlwZS5zZXNzaW9uLFxuICAgIGNhcHRjaGFPcHRpb25zOiB7XG4gICAgICAvKipcbiAgICAgICAqIOmqjOivgeeggeWkhOeQhuWbnuiwg1xuICAgICAgICog6Kej5p6QIGRhdGE6IFVSSSDkuK3nmoTpqozor4HnoIHlj4LmlbDvvIzpgJrov4cgRXZlbnRCdXMg6YCa55+l5Lia5Yqh5bGCXG4gICAgICAgKiDnrYnlvoXkuJrliqHlsYLov5Tlm57pqozor4Hnu5PmnpzlkI4gcmVzb2x2ZVxuICAgICAgICovXG4gICAgICBvcGVuVVJJV2l0aENhbGxiYWNrOiAoX3VybDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgRXZlbnRCdXMgfSA9IG9wdGlvbnNcbiAgICAgICAgbGV0IHF1ZXJ5T2JqOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT4gPSB7fVxuICAgICAgICBsZXQgdXJsID0gX3VybFxuXG4gICAgICAgIC8vIOS7jiBkYXRhOiBVUkkg5Lit5o+Q5Y+W5p+l6K+i5Y+C5pWwXG4gICAgICAgIGNvbnN0IG1hdGNoZWQgPSBfdXJsLm1hdGNoKC9eKGRhdGE6Lio/KShcXD9bXiNcXHNdKik/JC8pXG4gICAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgICAgdXJsID0gbWF0Y2hlZFsxXVxuICAgICAgICAgIGNvbnN0IHNlYXJjaCA9IG1hdGNoZWRbMl1cbiAgICAgICAgICBpZiAoc2VhcmNoKSB7XG4gICAgICAgICAgICBxdWVyeU9iaiA9IHBhcnNlUXVlcnlTdHJpbmcoc2VhcmNoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgdG9rZW4sIC4uLnJlc3RRdWVyeU9iaiB9ID0gcXVlcnlPYmpcblxuICAgICAgICAvLyBkYXRhOiDljY/orq7kvYbml6AgdG9rZW7vvIzop4bkuLrml6DmlYjpqozor4HnoIHmlbDmja5cbiAgICAgICAgaWYgKC9eZGF0YTovLnRlc3QodXJsKSAmJiAhdG9rZW4pIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoe1xuICAgICAgICAgICAgZXJyb3I6ICdpbnZhbGlkX2FyZ3VtZW50JyxcbiAgICAgICAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiBgaW52YWxpZSBjYXB0Y2hhIGRhdGE6ICR7X3VybH1gLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7XG4gICAgICAgICAgICBlcnJvcjogJ3VuaW1wbGVtZW50ZWQnLFxuICAgICAgICAgICAgZXJyb3JfZGVzY3JpcHRpb246ICduZWVkIHRvIGltcGwgY2FwdGNoYSBkYXRhJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgLy8g6YCa55+l5Lia5Yqh5bGC5bGV56S66aqM6K+B56CBXG4gICAgICAgICAgRXZlbnRCdXMuJGVtaXQoJ0NBUFRDSEFfREFUQV9DSEFOR0UnLCB7XG4gICAgICAgICAgICAuLi5yZXN0UXVlcnlPYmosXG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgLy8g562J5b6F5Lia5Yqh5bGC6L+U5Zue6aqM6K+B57uT5p6cXG4gICAgICAgICAgRXZlbnRCdXMuJG9uY2UoJ1JFU09MVkVfQ0FQVENIQV9EQVRBJywgKHJlczogeyBjYXB0Y2hhX3Rva2VuOiBzdHJpbmc7IGV4cGlyZXNfaW46IG51bWJlciB9KSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHJlcylcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICB9LFxuICB9XG4gIHJldHVybiBhZGFwdGVyXG59XG5cbi8qKiBOb2RlLmpzIEFkYXB0ZXIg5YWl5Y+j5a+85Ye6ICovXG5jb25zdCBhZGFwdGVyID0ge1xuICBnZW5BZGFwdGVyLFxuICBpc01hdGNoLFxuICBydW50aW1lOiAnbm9kZS1hZGFwdGVyJyxcbn1cblxuZXhwb3J0IGRlZmF1bHQgYWRhcHRlclxuIl19