mirror of
https://github.com/flyer1b/LightRead-master.git
synced 2026-07-22 09:00:26 +00:00
186 lines
21 KiB
JavaScript
186 lines
21 KiB
JavaScript
/*
|
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
if you want to view the source, please visit the github repository of this plugin
|
|
*/
|
|
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// main.ts
|
|
var main_exports = {};
|
|
__export(main_exports, {
|
|
default: () => SyncReadPlugin
|
|
});
|
|
module.exports = __toCommonJS(main_exports);
|
|
var import_obsidian = require("obsidian");
|
|
var DEFAULT_SETTINGS = {
|
|
email: "",
|
|
password: "",
|
|
token: "",
|
|
time: "2020-01-01 00:00:00",
|
|
apiKey: ""
|
|
};
|
|
var isWriting = false;
|
|
var SyncReadPlugin = class extends import_obsidian.Plugin {
|
|
async onload() {
|
|
await this.loadSettings();
|
|
const ribbonIconEl = this.addRibbonIcon("sync", "SyncRead", (evt) => {
|
|
writeAllArticles(this.app.vault, this);
|
|
});
|
|
this.addSettingTab(new SyncReadSettingTab(this.app, this));
|
|
}
|
|
onunload() {
|
|
}
|
|
async loadSettings() {
|
|
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
|
|
}
|
|
async saveSettings() {
|
|
await this.saveData(this.settings);
|
|
}
|
|
};
|
|
var SyncReadSettingTab = class extends import_obsidian.PluginSettingTab {
|
|
constructor(app, plugin) {
|
|
super(app, plugin);
|
|
this.plugin = plugin;
|
|
}
|
|
display() {
|
|
const { containerEl } = this;
|
|
containerEl.empty();
|
|
new import_obsidian.Setting(containerEl).setName("\u7528\u6237\u540D").setDesc("\u8F93\u5165\u4F60\u5728SyncRead\u6CE8\u518C\u7684\u90AE\u7BB1").addText((text) => text.setPlaceholder("\u8BF7\u8F93\u5165\u90AE\u7BB1").setValue(this.plugin.settings.email).onChange(async (value) => {
|
|
this.plugin.settings.email = value;
|
|
await this.plugin.saveSettings();
|
|
}));
|
|
new import_obsidian.Setting(containerEl).setName("\u5BC6\u7801").setDesc("").addText((text) => text.setPlaceholder("\u8BF7\u8F93\u5165\u5BC6\u7801").setValue(this.plugin.settings.password).onChange(async (value) => {
|
|
this.plugin.settings.password = value;
|
|
await this.plugin.saveSettings();
|
|
}));
|
|
new import_obsidian.Setting(containerEl).addButton((button) => {
|
|
button.setButtonText("\u767B\u5F55").onClick(async () => {
|
|
button.disabled = true;
|
|
button.setButtonText("\u767B\u5F55\u4E2D...");
|
|
const { email, password } = this.plugin.settings;
|
|
try {
|
|
const res = await (0, import_obsidian.requestUrl)({
|
|
url: "http://43.138.149.38:5050/login/",
|
|
method: "POST",
|
|
contentType: "application/json",
|
|
body: JSON.stringify({
|
|
"username": email,
|
|
"password": password
|
|
})
|
|
});
|
|
if (res.status !== 200) {
|
|
new import_obsidian.Notice("\u767B\u5F55\u5931\u8D25");
|
|
button.disabled = false;
|
|
button.setButtonText("\u767B\u5F55");
|
|
return;
|
|
}
|
|
const data = await res.json;
|
|
this.plugin.settings.token = data.data.token;
|
|
await this.plugin.saveSettings();
|
|
new import_obsidian.Notice("\u767B\u5F55\u6210\u529F");
|
|
button.setButtonText("\u767B\u5F55\u6210\u529F");
|
|
button.disabled = false;
|
|
} catch (error) {
|
|
new import_obsidian.Notice("\u767B\u5F55\u5931\u8D25: " + error.message);
|
|
button.disabled = false;
|
|
button.setButtonText("\u767B\u5F55");
|
|
return;
|
|
}
|
|
});
|
|
});
|
|
new import_obsidian.Setting(containerEl).setName("api key(\u53EF\u9009)").addText((text) => text.setPlaceholder("\u8BF7\u8F93\u5165api key").setValue(this.plugin.settings.apiKey).onChange(async (value) => {
|
|
this.plugin.settings.apiKey = value;
|
|
await this.plugin.saveSettings();
|
|
}));
|
|
}
|
|
};
|
|
async function fetchArticle(settings, time, page) {
|
|
try {
|
|
const apiKey = settings.apiKey;
|
|
let res;
|
|
if (apiKey === "") {
|
|
res = await (0, import_obsidian.requestUrl)(
|
|
{
|
|
url: `http://43.138.149.38:5050/get_synced_articles?time=${time}&page_number=${page}&page_size=50`,
|
|
method: "GET",
|
|
headers: {
|
|
"Authorization": "Bearer " + settings.token
|
|
}
|
|
}
|
|
);
|
|
} else {
|
|
res = await (0, import_obsidian.requestUrl)(
|
|
{
|
|
url: `http://43.138.149.38:5050/get_synced_articles_by_key?time=${time}&page_number=${page}&page_size=50`,
|
|
method: "GET",
|
|
headers: {
|
|
"api_key": apiKey
|
|
}
|
|
}
|
|
);
|
|
}
|
|
if (res.status !== 200) {
|
|
new import_obsidian.Notice("\u540C\u6B65\u5931\u8D25");
|
|
isWriting = false;
|
|
return;
|
|
}
|
|
const data = await res.json;
|
|
return data.data;
|
|
} catch (error) {
|
|
new import_obsidian.Notice("\u540C\u6B65\u5931\u8D25: " + error.message);
|
|
isWriting = false;
|
|
return;
|
|
}
|
|
}
|
|
async function writeArticle(vault, article) {
|
|
var folder = vault.getAbstractFileByPath("SyncRead\u540C\u6B65\u6587\u4EF6\u5939");
|
|
if (!folder)
|
|
folder = await vault.createFolder("SyncRead\u540C\u6B65\u6587\u4EF6\u5939");
|
|
return vault.create(folder.path + "/" + filterIllegalChars((0, import_obsidian.normalizePath)(article.title)) + ".md", article.content);
|
|
}
|
|
async function writeAllArticles(vault, plugin) {
|
|
new import_obsidian.Notice(isWriting ? "\u6B63\u5728\u540C\u6B65" : "\u5F00\u59CB\u540C\u6B65");
|
|
if (isWriting)
|
|
return;
|
|
isWriting = true;
|
|
var time = plugin.settings.time;
|
|
var page = 1;
|
|
do {
|
|
const articles = await fetchArticle(plugin.settings, time, page);
|
|
if (articles.length === 0) {
|
|
isWriting = false;
|
|
new import_obsidian.Notice("\u540C\u6B65\u5B8C\u6210");
|
|
break;
|
|
}
|
|
try {
|
|
await Promise.all(articles.map((article) => writeArticle(vault, article)));
|
|
} catch (error) {
|
|
}
|
|
plugin.settings.time = articles[articles.length - 1].created_at;
|
|
plugin.saveSettings();
|
|
page++;
|
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
} while (true);
|
|
}
|
|
function filterIllegalChars(title) {
|
|
const illegalChars = /[\\/:*?"<>|]/g;
|
|
const filteredTitle = title.replace(illegalChars, "");
|
|
return filteredTitle;
|
|
}
|
|
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgdGltZSB9IGZyb20gJ2NvbnNvbGUnO1xuaW1wb3J0IHsgQXBwLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyxWYXVsdCxURmlsZSwgbm9ybWFsaXplUGF0aCwgcmVxdWVzdFVybCB9IGZyb20gJ29ic2lkaWFuJztcblxuLy8gUmVtZW1iZXIgdG8gcmVuYW1lIHRoZXNlIGNsYXNzZXMgYW5kIGludGVyZmFjZXMhXG5cbmludGVyZmFjZSBTeW5jUmVhZFBsdWdpblNldHRpbmdzIHtcblx0ZW1haWw6IHN0cmluZztcblx0cGFzc3dvcmQ6IHN0cmluZztcblx0dG9rZW46IHN0cmluZztcblx0dGltZTogc3RyaW5nO1xuXHRhcGlLZXk6IHN0cmluZztcbn1cblxuY29uc3QgREVGQVVMVF9TRVRUSU5HUzogU3luY1JlYWRQbHVnaW5TZXR0aW5ncyA9IHtcblx0ZW1haWw6ICcnLFxuXHRwYXNzd29yZDogJycsXG5cdHRva2VuOiAnJyxcblx0dGltZTogJzIwMjAtMDEtMDEgMDA6MDA6MDAnLFxuXHRhcGlLZXk6ICcnXG59XG5cbnZhciBpc1dyaXRpbmcgPSBmYWxzZTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3luY1JlYWRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXHRzZXR0aW5nczogU3luY1JlYWRQbHVnaW5TZXR0aW5ncztcblxuXHRhc3luYyBvbmxvYWQoKSB7XG5cdFx0YXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcblxuXHRcdC8vIFRoaXMgY3JlYXRlcyBhbiBpY29uIGluIHRoZSBsZWZ0IHJpYmJvbi5cblx0XHRjb25zdCByaWJib25JY29uRWwgPSB0aGlzLmFkZFJpYmJvbkljb24oJ3N5bmMnLCAnU3luY1JlYWQnLCAoZXZ0OiBNb3VzZUV2ZW50KSA9PiB7XG5cdFx0XHQvLyBDYWxsZWQgd2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGljb24uXG5cdFx0XHQvLyBuZXcgTm90aWNlKCdUaGlzIGlzIGEgbm90aWNlIScpO1xuXHRcdFx0Ly8gbmV3IE5vdGljZShgcGF0aDogJHt0aGlzLmFwcC52YXVsdC5nZXRSb290KCkucGF0aH1gKTtcblx0XHRcdC8vIGNyYWV0ZUZpbGUodGhpcy5hcHAudmF1bHQpO1xuXHRcdFx0Ly8gbmV3IE5vdGljZShgdG9rZW46ICR7dGhpcy5zZXR0aW5ncy50b2tlbn1gKTtcblx0XHQgXHR3cml0ZUFsbEFydGljbGVzKHRoaXMuYXBwLnZhdWx0LHRoaXMpO1xuXHRcdH0pO1xuXHRcdFxuXG5cdFx0Ly8gVGhpcyBhZGRzIGEgc2V0dGluZ3MgdGFiIHNvIHRoZSB1c2VyIGNhbiBjb25maWd1cmUgdmFyaW91cyBhc3BlY3RzIG9mIHRoZSBwbHVnaW5cblx0XHQvLyBpZih0aGlzLnNldHRpbmdzLnRva2VuICE9PSAnJyl7XG5cdFx0Ly8gXHR0aGlzLmFkZFNldHRpbmdUYWIobmV3IFNldHRpbmdzVGFiKHRoaXMuYXBwLCB0aGlzKSk7XG5cdFx0Ly8gfWVsc2V7XG5cdFx0Ly8gfVxuXHRcdHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgU3luY1JlYWRTZXR0aW5nVGFiKHRoaXMuYXBwLCB0aGlzKSk7XG5cblx0fVxuXG5cdG9udW5sb2FkKCkge1xuXHR9XG5cblx0YXN5bmMgbG9hZFNldHRpbmdzKCkge1xuXHRcdHRoaXMuc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX1NFVFRJTkdTLCBhd2FpdCB0aGlzLmxvYWREYXRhKCkpO1xuXHRcdC8vIHRoaXMuc2V0dGluZ3MudGltZSA9ICcyMDIwLTAxLTAxIDAwOjAwOjAwJztcblx0fVxuXG5cdGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcblx0XHRhd2FpdCB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xuXHR9XG59XG5cblxuY2xhc3MgU3luY1JlYWRTZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG5cdHBsdWdpbjogU3luY1JlYWRQbHVnaW47XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogU3luY1JlYWRQbHVnaW4pIHtcblx0XHRzdXBlcihhcHAsIHBsdWdpbik7XG5cdFx0dGhpcy5wbHVnaW4gPSBwbHVnaW47XG5cdFx0XG5cdH1cblxuXHRkaXNwbGF5KCk6IHZvaWQge1xuXHRcdGNvbnN0IHtjb250YWluZXJFbH0gPSB0aGlzO1xuXG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcblxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ1x1NzUyOFx1NjIzN1x1NTQwRCcpXG5cdFx0XHQuc2V0RGVzYygnXHU4RjkzXHU1MTY1XHU0RjYwXHU1NzI4U3luY1JlYWRcdTZDRThcdTUxOENcdTc2ODRcdTkwQUVcdTdCQjEnKVxuXHRcdFx0LmFkZFRleHQodGV4dCA9PiB0ZXh0XG5cdFx0XHRcdC5zZXRQbGFjZWhvbGRlcignXHU4QkY3XHU4RjkzXHU1MTY1XHU5MEFFXHU3QkIxJylcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmVtYWlsKVxuXHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuZW1haWwgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSkpO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ1x1NUJDNlx1NzgwMScpXG5cdFx0XHQuc2V0RGVzYygnJylcblx0XHRcdC5hZGRUZXh0KHRleHQgPT4gdGV4dFxuXHRcdFx0XHQuc2V0UGxhY2Vob2xkZXIoJ1x1OEJGN1x1OEY5M1x1NTE2NVx1NUJDNlx1NzgwMScpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5wYXNzd29yZClcblx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnBhc3N3b3JkID0gdmFsdWU7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0pKTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5hZGRCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0YnV0dG9uXG5cdFx0XHRcdFx0LnNldEJ1dHRvblRleHQoJ1x1NzY3Qlx1NUY1NScpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0YnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGJ1dHRvbi5zZXRCdXR0b25UZXh0KCdcdTc2N0JcdTVGNTVcdTRFMkQuLi4nKTtcblx0XHRcdFx0XHRcdGNvbnN0IHtlbWFpbCwgcGFzc3dvcmR9ID0gdGhpcy5wbHVnaW4uc2V0dGluZ3M7XG5cdFx0XHRcdFx0XHQvLyBuZXcgTm90aWNlKGBlbWFpbDogJHtlbWFpbH1gKTtcblx0XHRcdFx0XHRcdHRyeXtcblx0XHRcdFx0XHRcdGNvbnN0IHJlcyA9IGF3YWl0IHJlcXVlc3RVcmwoe1xuXHRcdFx0XHRcdFx0XHR1cmw6J2h0dHA6Ly80My4xMzguMTQ5LjM4OjUwNTAvbG9naW4vJyxcblx0XHRcdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG5cdFx0XHRcdFx0XHRcdGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdFx0XHRcdFx0XHRcdCd1c2VybmFtZSc6ZW1haWwsXG5cdFx0XHRcdFx0XHRcdFx0XHQncGFzc3dvcmQnOnBhc3N3b3JkXG5cdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0fSl9KTtcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzICE9PSAyMDApIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZSgnXHU3NjdCXHU1RjU1XHU1OTMxXHU4RDI1Jyk7XG5cdFx0XHRcdFx0XHRcdGJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRidXR0b24uc2V0QnV0dG9uVGV4dCgnXHU3NjdCXHU1RjU1Jyk7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbjtcblx0XHRcdFx0XHRcdC8vIG5ldyBOb3RpY2UoYHJlczogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKTtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnRva2VuID0gZGF0YS5kYXRhLnRva2VuO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKCdcdTc2N0JcdTVGNTVcdTYyMTBcdTUyOUYnKTtcblx0XHRcdFx0XHRcdGJ1dHRvbi5zZXRCdXR0b25UZXh0KCdcdTc2N0JcdTVGNTVcdTYyMTBcdTUyOUYnKTtcblx0XHRcdFx0XHRcdGJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdH1jYXRjaChlcnJvcil7XG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKCdcdTc2N0JcdTVGNTVcdTU5MzFcdThEMjU6ICcgKyBlcnJvci5tZXNzYWdlKTtcblx0XHRcdFx0XHRcdGJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0YnV0dG9uLnNldEJ1dHRvblRleHQoJ1x1NzY3Qlx1NUY1NScpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdhcGkga2V5KFx1NTNFRlx1OTAwOSknKVxuXHRcdFx0LmFkZFRleHQodGV4dCA9PiB0ZXh0XG5cdFx0XHRcdC5zZXRQbGFjZWhvbGRlcignXHU4QkY3XHU4RjkzXHU1MTY1YXBpIGtleScpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5hcGlLZXkpXG5cdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5hcGlLZXkgPSB2YWx1ZTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0fSkpO1xuXHR9XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBcnRpY2xlKHNldHRpbmdzOiBTeW5jUmVhZFBsdWdpblNldHRpbmdzLHRpbWU6IHN0cmluZyxwYWdlOiBudW1iZXIpe1xuXG5cdHRyeSB7XG5cblx0Y29uc3QgYXBpS2V5ID0gc2V0dGluZ3MuYXBpS2V5O1xuXHRsZXQgcmVzO1xuXHRpZihhcGlLZXkgPT09ICcnKXtcblx0XHRyZXMgPSBhd2FpdCByZXF1ZXN0VXJsKFxuXHRcdHtcblx0XHRcdHVybDpgaHR0cDovLzQzLjEzOC4xNDkuMzg6NTA1MC9nZXRfc3luY2VkX2FydGljbGVzP3RpbWU9JHt0aW1lfSZwYWdlX251bWJlcj0ke3BhZ2V9JnBhZ2Vfc2l6ZT01MGAsIFxuXHRcdFx0bWV0aG9kOiAnR0VUJyxcblx0XHRcdGhlYWRlcnM6IHtcblx0XHRcdFx0J0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBzZXR0aW5ncy50b2tlblxuXHRcdFx0fSxcblx0XHR9XG5cdFx0KTtcblx0fWVsc2V7XG5cdFx0cmVzID0gYXdhaXQgcmVxdWVzdFVybChcblx0XHRcdHtcblx0XHRcdFx0dXJsOmBodHRwOi8vNDMuMTM4LjE0OS4zODo1MDUwL2dldF9zeW5jZWRfYXJ0aWNsZXNfYnlfa2V5P3RpbWU9JHt0aW1lfSZwYWdlX251bWJlcj0ke3BhZ2V9JnBhZ2Vfc2l6ZT01MGAsIFxuXHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRoZWFkZXJzOiB7XG5cdFx0XHRcdFx0J2FwaV9rZXknOiAgYXBpS2V5XG5cdFx0XHRcdH0sXG5cdFx0XHR9XG5cdFx0XHQpO1xuXHR9XG5cdC8vIG5ldyBOb3RpY2UoYHRva2VuOiAke3NldHRpbmdzLnRva2VufWApO1xuXHRpZiAocmVzLnN0YXR1cyAhPT0gMjAwKSB7XG5cdFx0bmV3IE5vdGljZSgnXHU1NDBDXHU2QjY1XHU1OTMxXHU4RDI1Jyk7XG5cdFx0aXNXcml0aW5nID0gZmFsc2U7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbjtcblx0Ly8gbmV3IE5vdGljZShgcmVzOiAke2RhdGEuZGF0YS5sZW5ndGh9YCk7XG5cdHJldHVybiBkYXRhLmRhdGE7XG59IGNhdGNoIChlcnJvcikge1xuXHRuZXcgTm90aWNlKCdcdTU0MENcdTZCNjVcdTU5MzFcdThEMjU6ICcgKyBlcnJvci5tZXNzYWdlKTtcblx0aXNXcml0aW5nID0gZmFsc2U7XG5cdHJldHVybjtcbn1cbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVBcnRpY2xlKHZhdWx0OiBWYXVsdCwgYXJ0aWNsZTogeyB0aXRsZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcgfSk6IFByb21pc2U8VEZpbGU+IHtcblx0dmFyIGZvbGRlciA9IHZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aCgnU3luY1JlYWRcdTU0MENcdTZCNjVcdTY1ODdcdTRFRjZcdTU5MzknKTtcblx0aWYoIWZvbGRlcikgZm9sZGVyID0gYXdhaXQgdmF1bHQuY3JlYXRlRm9sZGVyKCdTeW5jUmVhZFx1NTQwQ1x1NkI2NVx1NjU4N1x1NEVGNlx1NTkzOScpO1xuXHRyZXR1cm4gdmF1bHQuY3JlYXRlKGZvbGRlci5wYXRoKycvJytmaWx0ZXJJbGxlZ2FsQ2hhcnMobm9ybWFsaXplUGF0aChhcnRpY2xlLnRpdGxlKSkgKyBcIi5tZFwiLCBhcnRpY2xlLmNvbnRlbnQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZUFsbEFydGljbGVzKHZhdWx0OiBWYXVsdCxwbHVnaW46IFN5bmNSZWFkUGx1Z2luKXtcblxuXHRuZXcgTm90aWNlKGlzV3JpdGluZyA/ICdcdTZCNjNcdTU3MjhcdTU0MENcdTZCNjUnIDogJ1x1NUYwMFx1NTlDQlx1NTQwQ1x1NkI2NScpO1xuXHRpZihpc1dyaXRpbmcpIHJldHVybjtcblx0XHRpc1dyaXRpbmcgPSB0cnVlO1xuXHR2YXIgdGltZSA9IHBsdWdpbi5zZXR0aW5ncy50aW1lO1xuXHR2YXIgcGFnZSA9IDE7XG5cdC8vIG5ldyBOb3RpY2UoYHRpbWU6ICR7dGltZX1gKTtcblx0ZG97XG5cdFx0XG5cdFx0Y29uc3QgYXJ0aWNsZXMgPSBhd2FpdCBmZXRjaEFydGljbGUocGx1Z2luLnNldHRpbmdzLHRpbWUscGFnZSk7XG5cdFx0aWYgKGFydGljbGVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0aXNXcml0aW5nID0gZmFsc2U7XG5cdFx0XHRuZXcgTm90aWNlKCdcdTU0MENcdTZCNjVcdTVCOENcdTYyMTAnKTtcblx0XHRcdGJyZWFrO1x0XG5cdFx0fVxuXHRcdHRyeXtcblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKGFydGljbGVzLm1hcCgoYXJ0aWNsZTogeyB0aXRsZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmc7IH0pID0+IHdyaXRlQXJ0aWNsZSh2YXVsdCwgYXJ0aWNsZSkpKTtcblx0XHR9Y2F0Y2goZXJyb3Ipe1xuXHRcdFx0Ly8gbmV3IE5vdGljZShlcnJvci5tZXNzYWdlKTtcblx0XHRcdC8vIGlzV3JpdGluZyA9IGZhbHNlO1xuXHRcdFx0Ly8gcmV0dXJuO1xuXHRcdH1cblx0XHQvLyBuZXcgTm90aWNlKGBwYWdlOiAke3BhZ2V9YCk7XG5cdFx0cGx1Z2luLnNldHRpbmdzLnRpbWUgPSBhcnRpY2xlc1thcnRpY2xlcy5sZW5ndGgtMV0uY3JlYXRlZF9hdDtcblx0XHRwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0cGFnZSsrO1xuXHRcdGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTtcblx0XHQvLyBuZXcgTm90aWNlKGBwYWdlOiAke3BhZ2V9YCk7XG5cdH13aGlsZSh0cnVlKTtcblxufVxuXG5mdW5jdGlvbiBmaWx0ZXJJbGxlZ2FsQ2hhcnModGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gXHU1QjlBXHU0RTQ5XHU5NzVFXHU2Q0Q1XHU1QjU3XHU3QjI2XG4gICAgY29uc3QgaWxsZWdhbENoYXJzID0gL1tcXFxcLzoqP1wiPD58XS9nO1xuICAgIC8vIFx1NEY3Rlx1NzUyOFx1NkI2M1x1NTIxOVx1ODg2OFx1OEZCRVx1NUYwRlx1NjZGRlx1NjM2Mlx1OTc1RVx1NkNENVx1NUI1N1x1N0IyNlxuICAgIGNvbnN0IGZpbHRlcmVkVGl0bGUgPSB0aXRsZS5yZXBsYWNlKGlsbGVnYWxDaGFycywgXCJcIik7XG4gICAgcmV0dXJuIGZpbHRlcmVkVGl0bGU7XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBLHNCQUFzRztBQVl0RyxJQUFNLG1CQUEyQztBQUFBLEVBQ2hELE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLFFBQVE7QUFDVDtBQUVBLElBQUksWUFBWTtBQUVoQixJQUFxQixpQkFBckIsY0FBNEMsdUJBQU87QUFBQSxFQUdsRCxNQUFNLFNBQVM7QUFDZCxVQUFNLEtBQUssYUFBYTtBQUd4QixVQUFNLGVBQWUsS0FBSyxjQUFjLFFBQVEsWUFBWSxDQUFDLFFBQW9CO0FBTS9FLHVCQUFpQixLQUFLLElBQUksT0FBTSxJQUFJO0FBQUEsSUFDdEMsQ0FBQztBQVFELFNBQUssY0FBYyxJQUFJLG1CQUFtQixLQUFLLEtBQUssSUFBSSxDQUFDO0FBQUEsRUFFMUQ7QUFBQSxFQUVBLFdBQVc7QUFBQSxFQUNYO0FBQUEsRUFFQSxNQUFNLGVBQWU7QUFDcEIsU0FBSyxXQUFXLE9BQU8sT0FBTyxDQUFDLEdBQUcsa0JBQWtCLE1BQU0sS0FBSyxTQUFTLENBQUM7QUFBQSxFQUUxRTtBQUFBLEVBRUEsTUFBTSxlQUFl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
|