obsidian-dev-utils
Version:
This is the collection of useful functions that you can use for your Obsidian plugin development
67 lines (64 loc) • 13.8 kB
JavaScript
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
(function initCjs(){const globalThisRecord=globalThis;globalThisRecord["__name"]??=name;const originalRequire=require;if(originalRequire&&!originalRequire.__isPatched){require=Object.assign(id=>requirePatched(id),originalRequire,{__isPatched:true})}const newFuncs={__extractDefault(){return extractDefault},process(){const browserProcess={browser:true,cwd(){return"/"},env:{},platform:"android"};return browserProcess}};for(const key of Object.keys(newFuncs)){globalThisRecord[key]??=newFuncs[key]?.()}function name(obj){return obj}__name(name,"name");function extractDefault(module){return module&&module.__esModule&&"default"in module?module.default:module}__name(extractDefault,"extractDefault");function requirePatched(id){const module=originalRequire?.(id);if(module){return extractDefault(module)}if(id==="process"||id==="node:process"){console.error(`Module not found: ${id}. Fake process object is returned instead.`);return globalThis.process}console.error(`Module not found: ${id}. Empty object is returned instead.`);return{}}__name(requirePatched,"requirePatched")})();
;
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);
var Type_exports = {};
__export(Type_exports, {
assertAllTypeKeys: () => assertAllTypeKeys,
assertAllUnionMembers: () => assertAllUnionMembers,
typeToDummyParam: () => typeToDummyParam
});
module.exports = __toCommonJS(Type_exports);
const DUMMY_PROXY = new Proxy(dummyThrow, {
apply: dummyThrow,
construct: dummyThrow,
defineProperty: dummyThrow,
deleteProperty: dummyThrow,
get: dummyThrow,
getOwnPropertyDescriptor: dummyThrow,
getPrototypeOf: dummyThrow,
has: dummyThrow,
isExtensible: dummyThrow,
ownKeys: dummyThrow,
preventExtensions: dummyThrow,
set: dummyThrow,
setPrototypeOf: dummyThrow
});
function assertAllTypeKeys(_type, keys) {
return Object.freeze(keys.slice());
}
function assertAllUnionMembers(_type, keys) {
return Object.freeze(keys.slice());
}
function typeToDummyParam() {
return DUMMY_PROXY;
}
function dummyThrow() {
throw new Error("Dummy parameter should not be accessed directly.");
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
assertAllTypeKeys,
assertAllUnionMembers,
typeToDummyParam
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1R5cGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVHlwZSB1dGlsaXRpZXMuXG4gKi9cblxuLyoqXG4gKiBBIHR5cGUgdGhhdCByZXByZXNlbnRzIHRoZSBrZXlzIG9mIGFuIG9iamVjdCBhcyBzdHJpbmdzIGFuZCBhc3NlcnRzIHRoYXQgYWxsIGtleXMgYXJlIHByZXNlbnQgaW4gYSBsaXN0IG9mIGtleXMuXG4gKlxuICogQHR5cGVQYXJhbSBUeXBlIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEB0eXBlUGFyYW0gS2V5cyAtIFRoZSBsaXN0IG9mIGtleXMgdG8gYXNzZXJ0LlxuICovXG5leHBvcnQgdHlwZSBFeGFjdEtleXM8VHlwZSBleHRlbmRzIG9iamVjdCwgS2V5cyBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdPiA9IEV4YWN0TWVtYmVyczxTdHJpbmdLZXlzPFR5cGU+LCBLZXlzPjtcblxuLyoqXG4gKiBBIHR5cGUgdGhhdCByZXByZXNlbnRzIGEgcmV0dXJuIHZhbHVlIHRoYXQgbWF5IGJlIGB2b2lkYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgdGhhdCBtYXkgYmUgcmV0dXJuZWQuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGVcbmV4cG9ydCB0eXBlIE1heWJlUmV0dXJuPFQ+ID0gVCB8IHZvaWQ7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUgdmFsdWVzIG9mIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBQcm9wZXJ0eVZhbHVlczxUIGV4dGVuZHMgb2JqZWN0PiA9IFRbU3RyaW5nS2V5czxUPl07XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUga2V5cyBvZiBhbiBvYmplY3QgYXMgc3RyaW5ncy5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBTdHJpbmdLZXlzPFQgZXh0ZW5kcyBvYmplY3Q+ID0gRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+O1xuXG50eXBlIExhc3RJblVuaW9uPFVuaW9uPiA9IFVuaW9uVG9JbnRlcnNlY3Rpb248VW5pb24gZXh0ZW5kcyB1bmtub3duID8gKCkgPT4gVW5pb24gOiBuZXZlcj4gZXh0ZW5kcyAoKSA9PiBpbmZlciBMYXN0ID8gTGFzdCA6IG5ldmVyO1xudHlwZSBVbmlvblRvSW50ZXJzZWN0aW9uPFVuaW9uPiA9IChVbmlvbiBleHRlbmRzIHVua25vd24gPyAoa2V5OiBVbmlvbikgPT4gdm9pZCA6IG5ldmVyKSBleHRlbmRzIChrZXk6IGluZmVyIEludGVyc2VjdGlvbikgPT4gdm9pZCA/IEludGVyc2VjdGlvbiA6IG5ldmVyO1xudHlwZSBVbmlvblRvVHVwbGU8VW5pb24sIExhc3QgPSBMYXN0SW5VbmlvbjxVbmlvbj4+ID0gW1VuaW9uXSBleHRlbmRzIFtuZXZlcl0gPyBbXSA6IFsuLi5VbmlvblRvVHVwbGU8RXhjbHVkZTxVbmlvbiwgTGFzdD4+LCBMYXN0XTtcblxuY29uc3QgRFVNTVlfUFJPWFkgPSBuZXcgUHJveHkoZHVtbXlUaHJvdywge1xuICBhcHBseTogZHVtbXlUaHJvdyxcbiAgY29uc3RydWN0OiBkdW1teVRocm93LFxuICBkZWZpbmVQcm9wZXJ0eTogZHVtbXlUaHJvdyxcbiAgZGVsZXRlUHJvcGVydHk6IGR1bW15VGhyb3csXG4gIGdldDogZHVtbXlUaHJvdyxcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiBkdW1teVRocm93LFxuICBnZXRQcm90b3R5cGVPZjogZHVtbXlUaHJvdyxcbiAgaGFzOiBkdW1teVRocm93LFxuICBpc0V4dGVuc2libGU6IGR1bW15VGhyb3csXG4gIG93bktleXM6IGR1bW15VGhyb3csXG4gIHByZXZlbnRFeHRlbnNpb25zOiBkdW1teVRocm93LFxuICBzZXQ6IGR1bW15VGhyb3csXG4gIHNldFByb3RvdHlwZU9mOiBkdW1teVRocm93XG59KTtcblxuLyoqXG4gKiBBIHR5cGUgdGhhdCByZXByZXNlbnRzIHRoZSBtZW1iZXJzIG9mIGEgdHlwZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFR5cGUgLSBUaGUgdHlwZSB0byBhc3NlcnQgdGhlIG1lbWJlcnMgb2YuXG4gKiBAdHlwZVBhcmFtIEtleXMgLSBUaGUgbGlzdCBvZiBtZW1iZXJzIHRvIGFzc2VydC5cbiAqL1xuZXhwb3J0IHR5cGUgRXhhY3RNZW1iZXJzPFxuICBUeXBlIGV4dGVuZHMgTGl0ZXJhbEtleSxcbiAgS2V5cyBleHRlbmRzIHJlYWRvbmx5IExpdGVyYWxLZXlbXVxuPiA9IEV4Y2x1ZGU8S2V5c1tudW1iZXJdLCBUeXBlPiBleHRlbmRzIG5ldmVyID8gRXhjbHVkZTxUeXBlLCBLZXlzW251bWJlcl0+IGV4dGVuZHMgbmV2ZXIgPyBEdXBsaWNhdGVzPEtleXM+IGV4dGVuZHMgW10gPyBLZXlzXG4gICAgOiBgRVJST1I6IER1cGxpY2F0ZSBtZW1iZXJzOiAke1R1cGxlVG9DU1Y8RHVwbGljYXRlczxLZXlzPj59YFxuICA6IGBFUlJPUjogTWlzc2luZyBtZW1iZXJzOiAke1R1cGxlVG9DU1Y8VW5pb25Ub1R1cGxlPEV4Y2x1ZGU8VHlwZSwgS2V5c1tudW1iZXJdPj4+fWBcbiAgOiBgRVJST1I6IEludmFsaWQgbWVtYmVyczogJHtUdXBsZVRvQ1NWPFVuaW9uVG9UdXBsZTxFeGNsdWRlPEtleXNbbnVtYmVyXSwgVHlwZT4+Pn1gO1xuXG50eXBlIER1cGxpY2F0ZXM8XG4gIFQgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10sXG4gIFNlZW4gZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gPSBbXSxcbiAgQWRkZWQgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gPSBbXSxcbiAgT3V0IGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID0gW11cbj4gPSBUIGV4dGVuZHMgcmVhZG9ubHkgW2luZmVyIEZpcnN0LCAuLi5pbmZlciBSZXN0XVxuICA/IEluY2x1ZGVzPFNlZW4sIEZpcnN0PiBleHRlbmRzIHRydWUgPyBJbmNsdWRlczxBZGRlZCwgRmlyc3Q+IGV4dGVuZHMgdHJ1ZSA/IER1cGxpY2F0ZXM8UmVzdCwgU2VlbiwgQWRkZWQsIE91dD5cbiAgICA6IER1cGxpY2F0ZXM8UmVzdCwgU2VlbiwgWy4uLkFkZGVkLCBGaXJzdF0sIFsuLi5PdXQsIEZpcnN0XT5cbiAgOiBEdXBsaWNhdGVzPFJlc3QsIFsuLi5TZWVuLCBGaXJzdF0sIEFkZGVkLCBPdXQ+XG4gIDogT3V0O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyxuby1tYWdpYy1udW1iZXJzXG50eXBlIEVxdWFsPFgsIFk+ID0gKDxUPigpID0+IFQgZXh0ZW5kcyBYID8gMSA6IDIpIGV4dGVuZHMgKDxUPigpID0+IFQgZXh0ZW5kcyBZID8gMSA6IDIpID8gdHJ1ZSA6IGZhbHNlO1xuXG50eXBlIEluY2x1ZGVzPFR5cGUgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10sIE1lbWJlcj4gPSBUeXBlIGV4dGVuZHMgcmVhZG9ubHkgW2luZmVyIEZpcnN0LCAuLi5pbmZlciBSZXN0XVxuICA/IEVxdWFsPEZpcnN0LCBNZW1iZXI+IGV4dGVuZHMgdHJ1ZSA/IHRydWUgOiBJbmNsdWRlczxSZXN0LCBNZW1iZXI+XG4gIDogZmFsc2U7XG5cbnR5cGUgTGl0ZXJhbEtleSA9IG51bWJlciB8IHN0cmluZztcblxudHlwZSBUb1N0cmluZzxUPiA9IFQgZXh0ZW5kcyBudW1iZXIgfCBzdHJpbmcgPyBgJHtUfWAgOiBuZXZlcjtcblxudHlwZSBUdXBsZVRvQ1NWPFR1cGxlIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdPiA9IFR1cGxlIGV4dGVuZHMgcmVhZG9ubHkgW2luZmVyIEZpcnN0LCAuLi5pbmZlciBSZXN0XVxuICA/IEZpcnN0IGV4dGVuZHMgTGl0ZXJhbEtleSA/IFJlc3QgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gPyBSZXN0WydsZW5ndGgnXSBleHRlbmRzIDAgPyBUb1N0cmluZzxGaXJzdD4gOiBgJHtUb1N0cmluZzxGaXJzdD59LCR7VHVwbGVUb0NTVjxSZXN0Pn1gXG4gICAgOiBuZXZlclxuICA6IG5ldmVyXG4gIDogJyc7XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IGFsbCBrZXlzIG9mIGEgdHlwZSBhcmUgcHJlc2VudCBpbiBhIGxpc3Qgb2Yga2V5cy5cbiAqXG4gKiBAdHlwZVBhcmFtIFR5cGUgLSBUaGUgdHlwZSB0byBhc3NlcnQgdGhlIGtleXMgb2YuXG4gKiBAdHlwZVBhcmFtIEtleXMgLSBUaGUgbGlzdCBvZiBrZXlzIHRvIGFzc2VydC5cbiAqIEBwYXJhbSBfdHlwZSAtIFRoZSB0eXBlIHRvIGFzc2VydCB0aGUga2V5cyBvZi5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGxpc3Qgb2Yga2V5cyB0byBhc3NlcnQuXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBrZXlzLlxuICpcbiAqIEByZW1hcmtzIElmIHRoZSBpbmNvcnJlY3Qga2V5cyBhcmUgcHJvdmlkZWQsIHRoZSBmdW5jdGlvbiBoYXMgYSBjb21waWxlLXRpbWUgZXJyb3IuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiB0eXBlIEEgPSB7IGE6IDEsIGI6IDIsIGM6IDMgfTtcbiAqIGFzc2VydEFsbFR5cGVLZXlzPEE+KHR5cGVUb0R1bW15UGFyYW08QT4oKSwgWydhJywgJ2InLCAnYyddKTsgLy8gT0tcbiAqIGFzc2VydEFsbFR5cGVLZXlzPEE+KHR5cGVUb0R1bW15UGFyYW08QT4oKSwgWydjJywgJ2EnLCAnYiddKTsgLy8gT0ssIG9yZGVyIGlzIGlnbm9yZWRcbiAqIGFzc2VydEFsbFR5cGVLZXlzPEE+KHR5cGVUb0R1bW15UGFyYW08QT4oKSwgWydhJywgJ2InLCAnYycsICdkJ10pOyAvLyBFcnJvcjogSW52YWxpZCBtZW1iZXJzOiBkXG4gKiBhc3NlcnRBbGxUeXBlS2V5czxBPih0eXBlVG9EdW1teVBhcmFtPEE+KCksIFsnYScsICdiJ10pOyAvLyBFcnJvcjogTWlzc2luZyBtZW1iZXJzOiBjXG4gKiBhc3NlcnRBbGxUeXBlS2V5czxBPih0eXBlVG9EdW1teVBhcmFtPEE+KCksIFsnYScsICdhJywgJ2InLCAnYycsICdjJ10pOyAvLyBFcnJvcjogRHVwbGljYXRlIG1lbWJlcnM6IGEsY1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRBbGxUeXBlS2V5czxcbiAgVHlwZSBleHRlbmRzIG9iamVjdCxcbiAgY29uc3QgS2V5cyBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdXG4+KF90eXBlOiBUeXBlLCBrZXlzOiBFeGFjdE1lbWJlcnM8U3RyaW5nS2V5czxUeXBlPiwgS2V5cz4pOiByZWFkb25seSAoa2V5b2YgVHlwZSlbXSB7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKGtleXMuc2xpY2UoKSBhcyAoa2V5b2YgVHlwZSlbXSk7XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IGFsbCBtZW1iZXJzIG9mIGEgdW5pb24gYXJlIHByZXNlbnQgaW4gYSBsaXN0IG9mIG1lbWJlcnMuXG4gKlxuICogQHR5cGVQYXJhbSBUeXBlIC0gVGhlIHR5cGUgdG8gYXNzZXJ0IHRoZSBtZW1iZXJzIG9mLlxuICogQHR5cGVQYXJhbSBLZXlzIC0gVGhlIGxpc3Qgb2YgbWVtYmVycyB0byBhc3NlcnQuXG4gKiBAcGFyYW0gX3R5cGUgLSBUaGUgdHlwZSB0byBhc3NlcnQgdGhlIG1lbWJlcnMgb2YuXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBsaXN0IG9mIG1lbWJlcnMgdG8gYXNzZXJ0LlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2YgbWVtYmVycy5cbiAqXG4gKiBAcmVtYXJrcyBJZiB0aGUgaW5jb3JyZWN0IG1lbWJlcnMgYXJlIHByb3ZpZGVkLCB0aGUgZnVuY3Rpb24gaGFzIGEgY29tcGlsZS10aW1lIGVycm9yLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogdHlwZSBBID0gMSB8IDIgfCAzIHwgJ2EnO1xuICpcbiAqIGFzc2VydEFsbFVuaW9uTWVtYmVycyh0eXBlVG9EdW1teVBhcmFtPEE+KCksIFsxLCAyLCAzLCAnYSddKTsgLy8gT0tcbiAqIGFzc2VydEFsbFVuaW9uTWVtYmVycyh0eXBlVG9EdW1teVBhcmFtPEE+KCksIFszLCAyLCAxLCAnYSddKTsgLy8gT0ssIG9yZGVyIGlzIGlnbm9yZWRcbiAqIGFzc2VydEFsbFVuaW9uTWVtYmVycyh0eXBlVG9EdW1teVBhcmFtPEE+KCksIFsxLCAyLCAzLCAnYScsIDRdKTsgLy8gRXJyb3I6IEludmFsaWQgbWVtYmVyczogNFxuICogYXNzZXJ0QWxsVW5pb25NZW1iZXJzKHR5cGVUb0R1bW15UGFyYW08QT4oKSwgWzEsIDIsIDMsXSk7IC8vIEVycm9yOiBNaXNzaW5nIG1lbWJlcnM6IGFcbiAqIGFzc2VydEFsbFVuaW9uTWVtYmVycyh0eXBlVG9EdW1teVBhcmFtPEE+KCksIFsxLCAyLCAzLCAnYScsICdhJ10pOyAvLyBFcnJvcjogRHVwbGljYXRlIG1lbWJlcnM6IDEsYVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRBbGxVbmlvbk1lbWJlcnM8XG4gIGNvbnN0IFR5cGUgZXh0ZW5kcyBMaXRlcmFsS2V5LFxuICBjb25zdCBLZXlzIGV4dGVuZHMgcmVhZG9ubHkgTGl0ZXJhbEtleVtdXG4+KF90eXBlOiBUeXBlLCBrZXlzOiBFeGFjdE1lbWJlcnM8VHlwZSwgS2V5cz4pOiByZWFkb25seSBUeXBlW10ge1xuICByZXR1cm4gT2JqZWN0LmZyZWV6ZShrZXlzLnNsaWNlKCkgYXMgVHlwZVtdKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHR5cGUgdG8gYSBkdW1teSBwYXJhbWV0ZXIuXG4gKlxuICogVGhpcyBoZWxwZXIgZnVuY3Rpb24gaXMgdXNlZnVsIHdoZW4gd2UgbmVlZCB0byBnZXQgdHlwZSBpbmZlcmVuY2Ugd2hlbiB3ZSBjYW5ub3QgdXNlIGdlbmVyaWMgdHlwZSBwYXJhbWV0ZXJzLlxuICpcbiAqIEFuIGV4YW1wbGUgYmVsb3cgc2hvd3Mgc3VjaCBhIHNjZW5hcmlvLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIGR1bW15IHBhcmFtZXRlciBvZiB0aGUgdHlwZS5cbiAqXG4gKiBAcmVtYXJrcyBUaGUgcmVzdWx0IHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIHR5cGUgaW5mZXJlbmNlLiBUaGUgdmFsdWUgc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogdHlwZSBBID0geyBjOiBudW1iZXI7IH07XG4gKiB0eXBlIEIgPSB7IGQ6IHN0cmluZzsgfVxuICpcbiAqIGZ1bmN0aW9uIGc8VCwgVT4odTogVSkge31cbiAqXG4gKiAvLyBXZSBjYW5ub3QgaGF2ZSBwYXJ0aWFsIHR5cGUgaW5mZXJlbmNlLlxuICogZzxBPih7IGQ6ICdmb28nIH0pOyAvLyBFcnJvcjogRXhwZWN0ZWQgMiB0eXBlIGFyZ3VtZW50cywgYnV0IGdvdCAxLiB0cygyNTU4KVxuICpcbiAqIC8vIFdlIGhhdmUgdG8gY2FsbCBpbnN0ZWFkXG4gKiBnPEEsIEI+KHsgZDogJ2ZvbycgfSk7IC8vIE9LLCBidXQgd2UgY291bGQgbm90IHVzZSB0eXBlIGluZmVyZW5jZSBmb3IgYFU9QmAuXG4gKlxuICogZnVuY3Rpb24gZzI8VCwgVT4oX3R5cGU6IFQsIHU6IFUpIHt9XG4gKiBnMih0eXBlVG9EdW1teVBhcmFtPEE+KCksIHsgZDogJ2ZvbycgfSk7IC8vIFdlIGNvdWxkIHVzZSB0eXBlIGluZmVyZW5jZSBmb3IgYFQ9QWAgYW5kIGBVPUJgLlxuICogYGBgXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1wYXJhbWV0ZXJzXG5leHBvcnQgZnVuY3Rpb24gdHlwZVRvRHVtbXlQYXJhbTxUPigpOiBUIHtcbiAgcmV0dXJuIERVTU1ZX1BST1hZIGFzIHVua25vd24gYXMgVDtcbn1cblxuZnVuY3Rpb24gZHVtbXlUaHJvdygpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcignRHVtbXkgcGFyYW1ldGVyIHNob3VsZCBub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuJyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3Q0EsTUFBTSxjQUFjLElBQUksTUFBTSxZQUFZO0FBQUEsRUFDeEMsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsS0FBSztBQUFBLEVBQ0wsMEJBQTBCO0FBQUEsRUFDMUIsZ0JBQWdCO0FBQUEsRUFDaEIsS0FBSztBQUFBLEVBQ0wsY0FBYztBQUFBLEVBQ2QsU0FBUztBQUFBLEVBQ1QsbUJBQW1CO0FBQUEsRUFDbkIsS0FBSztBQUFBLEVBQ0wsZ0JBQWdCO0FBQ2xCLENBQUM7QUFpRU0sU0FBUyxrQkFHZCxPQUFhLE1BQXFFO0FBQ2xGLFNBQU8sT0FBTyxPQUFPLEtBQUssTUFBTSxDQUFtQjtBQUNyRDtBQXdCTyxTQUFTLHNCQUdkLE9BQWEsTUFBaUQ7QUFDOUQsU0FBTyxPQUFPLE9BQU8sS0FBSyxNQUFNLENBQVc7QUFDN0M7QUFnQ08sU0FBUyxtQkFBeUI7QUFDdkMsU0FBTztBQUNUO0FBRUEsU0FBUyxhQUFvQjtBQUMzQixRQUFNLElBQUksTUFBTSxrREFBa0Q7QUFDcEU7IiwKICAibmFtZXMiOiBbXQp9Cg==