obsidian-dev-utils 101.8.0 → 102.0.0
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/CHANGELOG.md +4 -0
- package/dist/lib/cjs/desktop-zip-extractor.cjs +1 -1
- package/dist/lib/cjs/desktop-zip-extractor.d.cts +4 -3
- package/dist/lib/cjs/generated-during-build.cjs +1 -1
- package/dist/lib/cjs/script-utils/demo-vault-app-json.cjs +1 -1
- package/dist/lib/cjs/script-utils/demo-vault-app-json.d.cts +1 -1
- package/dist/lib/cjs/script-utils/demo-vault.cjs +50 -29
- package/dist/lib/esm/desktop-zip-extractor.d.mts +4 -3
- package/dist/lib/esm/desktop-zip-extractor.mjs +1 -1
- package/dist/lib/esm/generated-during-build.mjs +1 -1
- package/dist/lib/esm/script-utils/demo-vault-app-json.d.mts +1 -1
- package/dist/lib/esm/script-utils/demo-vault-app-json.mjs +1 -1
- package/dist/lib/esm/script-utils/demo-vault.mjs +52 -20
- package/package.json +3 -4
package/CHANGELOG.md
CHANGED
|
@@ -273,4 +273,4 @@ function readEntryData(archive, entry) {
|
|
|
273
273
|
0 && (module.exports = {
|
|
274
274
|
extractZipArchive
|
|
275
275
|
});
|
|
276
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Rlc2t0b3AtemlwLWV4dHJhY3Rvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEV4dHJhY3RzIGEgWklQIGFyY2hpdmUgdG8gZGlzayB1c2luZyBvbmx5IE5vZGUncyBgemxpYmAgXHUyMDE0IHdpdGggbm8gdGhpcmQtcGFydHkgdW56aXAgZGVwZW5kZW5jeS5cbiAqXG4gKiBJdCBleGlzdHMgZm9yIG9uZSBtZWFzdXJlZCByZWFzb24uIFRoZSBkZXBlbmRlbmN5IGl0IHJlcGxhY2VkIG9uIHRoaXMgcGF0aCwgYGFkbS16aXBgLCBidW5kbGVkXG4gKiByb3VnaGx5IDM0IEtCIG9mIG1pbmlmaWVkIEphdmFTY3JpcHQgaW50byBFVkVSWSBPYnNpZGlhbiBwbHVnaW4gYnVpbHQgd2l0aCB0aGlzIGxpYnJhcnk6IGEgcGx1Z2luXG4gKiBzaGlwcyBhIHNpbmdsZSBDSlMgYG1haW4uanNgLCBlc2J1aWxkIGhhcyBubyBjb2RlIHNwbGl0dGluZyB0byBwdXQgYSBkZXBlbmRlbmN5IGJlaGluZCwgYW5kIGFcbiAqIGBhd2FpdCBpbXBvcnQoKWAgb25seSBkZWZlcnMgZXZhbHVhdGlvbiBcdTIwMTQgdGhlIG1vZHVsZSBib2R5IGlzIGlubGluZWQgZWl0aGVyIHdheS4gYG5vZGU6emxpYmAgaXNcbiAqIGFscmVhZHkgYW4gZXNidWlsZCBleHRlcm5hbCwgc28gdGhlIHNhbWUgd29yayBub3cgY29zdHMgYSBwbHVnaW4gYnVuZGxlIG5vdGhpbmcgYXQgYWxsLiBBcmNoaXZlc1xuICogYXJlIHN0aWxsIFdSSVRURU4gd2l0aCBgYWRtLXppcGAgYXQgcmVsZWFzZSB0aW1lIChgc2NyaXB0LXV0aWxzL2RlbW8tdmF1bHQudHNgKSwgd2hpY2ggaXMgTm9kZS1zaWRlXG4gKiB0b29saW5nIGFuZCBuZXZlciByZWFjaGVzIGEgcGx1Z2luIGJ1bmRsZS5cbiAqXG4gKiBEZWxpYmVyYXRlbHkgbmFycm93OiBpdCByZWFkcyBleGFjdGx5IHdoYXQgdGhhdCB3cml0ZXIgcHJvZHVjZXMgXHUyMDE0IHN0b3JlZCBhbmQgZGVmbGF0ZWQgZW50cmllcyBpbiBhblxuICogdW5lbmNyeXB0ZWQgYXJjaGl2ZSBiZWxvdyB0aGUgNCBHQiAvIDY1NTM1LWVudHJ5IFpJUDY0IHRocmVzaG9sZCBcdTIwMTQgYW5kIHJhaXNlcyBhIG5hbWVkIGVycm9yIGZvclxuICogYW55dGhpbmcgZWxzZSByYXRoZXIgdGhhbiBndWVzc2luZyBhdCBpdC4gU2l6ZXMgYW5kIG9mZnNldHMgYXJlIHRha2VuIGZyb20gdGhlIGNlbnRyYWwgZGlyZWN0b3J5LFxuICogd2hpY2ggaXMgYXV0aG9yaXRhdGl2ZSBldmVuIGZvciBhcmNoaXZlcyB3cml0dGVuIHdpdGggZGF0YSBkZXNjcmlwdG9ycy5cbiAqXG4gKiBUaGUgYG5vZGU6YCBpbXBvcnRzIGJlbG93IGFyZSBzYWZlIHRvIG1lcmVseSBFVkFMVUFURSBvbiBtb2JpbGUgXHUyMDE0IGByZXF1aXJlYCBoYW5kcyBiYWNrIGB1bmRlZmluZWRgXG4gKiB0aGVyZSBhbmQgbm90aGluZyByZWFkcyBpdCBhdCBsb2FkIHRpbWUgXHUyMDE0IHNvIHRoaXMgbW9kdWxlIGNhbiBzaXQgaW4gdGhlIGdlbmVyYXRlZCBiYXJyZWxzIHdpdGhvdXRcbiAqIGJyZWFraW5nIHRoZSBsaWJyYXJ5J3MgbG9hZCBvbiBBbmRyb2lkLiBPbmx5IHRoZSBjYWxscyBhcmUgZGVza3RvcC1vbmx5LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQnVmZmVyIH0gZnJvbSAnbm9kZTpidWZmZXInO1xuXG5pbXBvcnQgeyBpbmZsYXRlUmF3U3luYyB9IGZyb20gJ25vZGU6emxpYic7XG5cbmltcG9ydCB7XG4gIGRpcm5hbWUsXG4gIGpvaW5cbn0gZnJvbSAnLi9wYXRoLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZXh0cmFjdFppcEFyY2hpdmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dHJhY3RaaXBBcmNoaXZlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSByYXcgWklQIGFyY2hpdmUgYnl0ZXMuXG4gICAqL1xuICByZWFkb25seSBhcmNoaXZlOiBCdWZmZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBmaWxlLXN5c3RlbSBpbXBsZW1lbnRhdGlvbiB0aGUgZXh0cmFjdGVkIGVudHJpZXMgYXJlIHdyaXR0ZW4gd2l0aC5cbiAgICpcbiAgICogSW5qZWN0ZWQgcmF0aGVyIHRoYW4gaW1wb3J0ZWQgc28gdGhlIGNhbGxlciBjaG9vc2VzIHdoaWNoIGBmc2Agd3JpdGVzIHRoZSBmaWxlcy4gVGhlIGRlbW8tdmF1bHRcbiAgICogb3BlbmVyIGhhbmRzIG92ZXIgRWxlY3Ryb24ncyBgb3JpZ2luYWwtZnNgIChzZWUge0BsaW5rIFppcEV4dHJhY3Rpb25GaWxlU3lzdGVtfSkuXG4gICAqL1xuICByZWFkb25seSBmaWxlU3lzdGVtOiBaaXBFeHRyYWN0aW9uRmlsZVN5c3RlbTtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSB0byBleHRyYWN0IGludG8uIENyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXREaXJlY3Rvcnk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgc2xpY2Ugb2YgYG5vZGU6ZnNgIGV4dHJhY3Rpb24gbmVlZHMuXG4gKlxuICogT25seSB0aGUgdHdvIFdSSVRJTkcgY2FsbHMgYXJlIHJlcXVpcmVkLCBhbmQgdGhhdCBpcyBkZWxpYmVyYXRlOiBFbGVjdHJvbidzIGFzYXIgbGF5ZXIgaW50ZXJjZXB0c1xuICogYGZzYCBSRUFEUyAoYW5kIGBleGlzdHNTeW5jYCkgb24gYW55IHBhdGggY29udGFpbmluZyBgLmFzYXJgLCB3aGljaCBhIGRlbW8gdmF1bHQgbWF5IGxlZ2l0aW1hdGVseVxuICogc2hpcCBhcyBhIHBsYWluIGZpbGUuIE5ldmVyIHByb2JpbmcgdGhlIHRhcmdldCB3aXRoIGEgcmVhZCBrZWVwcyB0aGF0IGludGVyY2VwdGlvbiBvdXQgb2YgdGhlXG4gKiBwaWN0dXJlIGVudGlyZWx5LCBhbmQgYSBjYWxsZXIgdGhhdCBoYW5kcyBvdmVyIEVsZWN0cm9uJ3MgYG9yaWdpbmFsLWZzYCBpcyBzYWZlIGV2ZW4gZnJvbSB0aGVcbiAqIHdyaXRlIHNpZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgWmlwRXh0cmFjdGlvbkZpbGVTeXN0ZW0ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIGFueSBtaXNzaW5nIHBhcmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gVGhlIGRpcmVjdG9yeSB0byBjcmVhdGUuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBaaXBFeHRyYWN0aW9uTWtkaXJPcHRpb25zfS5cbiAgICogQHJldHVybnMgVGhlIGZpcnN0IGRpcmVjdG9yeSBjcmVhdGVkLCBpZiBhbnkuXG4gICAqL1xuICBta2RpclN5bmMocGF0aDogc3RyaW5nLCBvcHRpb25zOiBaaXBFeHRyYWN0aW9uTWtkaXJPcHRpb25zKTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXcml0ZXMgYSBmaWxlLCBvdmVyd3JpdGluZyBpdCBpZiBpdCBleGlzdHMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gVGhlIGZpbGUgdG8gd3JpdGUuXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIGJ5dGVzIHRvIHdyaXRlLlxuICAgKi9cbiAgd3JpdGVGaWxlU3luYyhwYXRoOiBzdHJpbmcsIGRhdGE6IEJ1ZmZlcik6IHZvaWQ7XG59XG5cbi8qKlxuICogVGhlIG9wdGlvbnMge0BsaW5rIFppcEV4dHJhY3Rpb25GaWxlU3lzdGVtLm1rZGlyU3luY30gaXMgYWx3YXlzIGNhbGxlZCB3aXRoLlxuICpcbiAqIEV4dHJhY3Rpb24gbmV2ZXIgcHJvYmVzIGZvciBhbiBleGlzdGluZyBkaXJlY3RvcnksIHNvIGV2ZXJ5IGNhbGwgaGFzIHRvIGNyZWF0ZSB0aGUgbWlzc2luZyBwYXJlbnRzXG4gKiBpdHNlbGYgYW5kIHRvbGVyYXRlIGEgZGlyZWN0b3J5IHRoYXQgaXMgYWxyZWFkeSB0aGVyZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBaaXBFeHRyYWN0aW9uTWtkaXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsd2F5cyBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSByZWN1cnNpdmU6IHRydWU7XG59XG5cbmludGVyZmFjZSBaaXBFbnRyeSB7XG4gIHJlYWRvbmx5IGNvbXByZXNzZWRTaXplOiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvbXByZXNzaW9uTWV0aG9kOiBudW1iZXI7XG4gIHJlYWRvbmx5IGxvY2FsSGVhZGVyT2Zmc2V0OiBudW1iZXI7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuY29uc3QgRU5EX09GX0NFTlRSQUxfRElSRUNUT1JZX1NJR05BVFVSRSA9IDB4MDZfMDVfNEJfNTA7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9IRUFERVJfU0lHTkFUVVJFID0gMHgwMl8wMV80Ql81MDtcbmNvbnN0IExPQ0FMX0ZJTEVfSEVBREVSX1NJR05BVFVSRSA9IDB4MDRfMDNfNEJfNTA7XG5cbmNvbnN0IEVORF9PRl9DRU5UUkFMX0RJUkVDVE9SWV9TSVpFID0gMjI7XG5jb25zdCBNQVhfQVJDSElWRV9DT01NRU5UX0xFTkdUSCA9IDY1XzUzNTtcblxuLy8gQSBjb3VudCBvciBvZmZzZXQgc2F0dXJhdGVkIHRvIGFsbC1vbmVzIG1lYW5zIHRoZSByZWFsIHZhbHVlIGxpdmVzIGluIGEgWklQNjQgcmVjb3JkIHRoaXMgcmVhZGVyXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQsIHNvIHRoZSBmaWVsZCBtdXN0IG5ldmVyIGJlIHJlYWQgYXQgZmFjZSB2YWx1ZS5cbmNvbnN0IFNBVFVSQVRFRF9VSU5UXzE2ID0gNjVfNTM1O1xuY29uc3QgU0FUVVJBVEVEX1VJTlRfMzIgPSA0XzI5NF85NjdfMjk1O1xuXG4vLyBGaWVsZCBvZmZzZXRzIHdpdGhpbiB0aGUgZW5kLW9mLWNlbnRyYWwtZGlyZWN0b3J5IHJlY29yZC5cbmNvbnN0IEFSQ0hJVkVfRU5UUllfQ09VTlRfT0ZGU0VUID0gMTA7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9TVEFSVF9PRkZTRVQgPSAxNjtcblxuLy8gRmllbGQgb2Zmc2V0cyB3aXRoaW4gYSBjZW50cmFsLWRpcmVjdG9yeSBoZWFkZXIuXG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9GTEFHU19PRkZTRVQgPSA4O1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfQ09NUFJFU1NJT05fTUVUSE9EX09GRlNFVCA9IDEwO1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfQ09NUFJFU1NFRF9TSVpFX09GRlNFVCA9IDIwO1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfTkFNRV9MRU5HVEhfT0ZGU0VUID0gMjg7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9FWFRSQV9MRU5HVEhfT0ZGU0VUID0gMzA7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9DT01NRU5UX0xFTkdUSF9PRkZTRVQgPSAzMjtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0xPQ0FMX0hFQURFUl9PRkZTRVRfT0ZGU0VUID0gNDI7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9IRUFERVJfU0laRSA9IDQ2O1xuXG4vLyBGaWVsZCBvZmZzZXRzIHdpdGhpbiBhIGxvY2FsIGZpbGUgaGVhZGVyLlxuY29uc3QgTE9DQUxfSEVBREVSX05BTUVfTEVOR1RIX09GRlNFVCA9IDI2O1xuY29uc3QgTE9DQUxfSEVBREVSX0VYVFJBX0xFTkdUSF9PRkZTRVQgPSAyODtcbmNvbnN0IExPQ0FMX0hFQURFUl9TSVpFID0gMzA7XG5cbmNvbnN0IENPTVBSRVNTSU9OX01FVEhPRF9TVE9SRUQgPSAwO1xuY29uc3QgQ09NUFJFU1NJT05fTUVUSE9EX0RFRkxBVEVEID0gODtcblxuLy8gQml0IDAgb2YgdGhlIGdlbmVyYWwtcHVycG9zZSBmbGFncyBtYXJrcyBhbiBlbmNyeXB0ZWQgZW50cnksIGFuZCBpdCBpcyB0aGUgbG93ZXN0IGJpdCBcdTIwMTQgc28gdGhlXG4vLyBSZW1haW5kZXIgdGVzdHMgaXQgd2l0aG91dCByZWFjaGluZyBmb3IgYSBiaXR3aXNlIG9wZXJhdG9yLlxuY29uc3QgRU5DUllQVEVEX0ZMQUdfRElWSVNPUiA9IDI7XG5cbmNvbnN0IEVOVFJZX05BTUVfU0VQQVJBVE9SID0gJy8nO1xuY29uc3QgV0lORE9XU19EUklWRV9QUkVGSVhfUkVHX0VYUCA9IC9eW0EtWmEtel06LztcblxuLyoqXG4gKiBFeHRyYWN0cyBldmVyeSBlbnRyeSBvZiBhIFpJUCBhcmNoaXZlIGludG8gYSBkaXJlY3RvcnkuXG4gKlxuICogRGlyZWN0b3J5IGVudHJpZXMgYmVjb21lIGRpcmVjdG9yaWVzOyBhIGZpbGUgZW50cnkncyBwYXJlbnRzIGFyZSBjcmVhdGVkIHdoZXRoZXIgb3Igbm90IHRoZSBhcmNoaXZlXG4gKiBkZWNsYXJlZCB0aGVtLiBBbiBlbnRyeSB3aG9zZSBuYW1lIHdvdWxkIGVzY2FwZSB7QGxpbmsgRXh0cmFjdFppcEFyY2hpdmVQYXJhbXMudGFyZ2V0RGlyZWN0b3J5fSBpc1xuICogcmVmdXNlZCByYXRoZXIgdGhhbiB3cml0dGVuICh0aGUgXCJ6aXAgc2xpcFwiIHRyYXZlcnNhbCksIGFzIGlzIGFuIGVuY3J5cHRlZCwgWklQNjQsIG9yXG4gKiB1bmtub3duLWNvbXByZXNzaW9uIGFyY2hpdmUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgRXh0cmFjdFppcEFyY2hpdmVQYXJhbXN9LlxuICogQHRocm93cyBBbiB7QGxpbmsgRXJyb3J9IG5hbWluZyB0aGUgcmVhc29uIHdoZW4gdGhlIGFyY2hpdmUgY2Fubm90IGJlIHJlYWQgYXMgd3JpdHRlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RaaXBBcmNoaXZlKHBhcmFtczogRXh0cmFjdFppcEFyY2hpdmVQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGFyY2hpdmUsXG4gICAgZmlsZVN5c3RlbSxcbiAgICB0YXJnZXREaXJlY3RvcnlcbiAgfSA9IHBhcmFtcztcblxuICBmaWxlU3lzdGVtLm1rZGlyU3luYyh0YXJnZXREaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgcmVhZENlbnRyYWxEaXJlY3RvcnkoYXJjaGl2ZSkpIHtcbiAgICBhc3NlcnRTYWZlRW50cnlOYW1lKGVudHJ5Lm5hbWUpO1xuXG4gICAgaWYgKGVudHJ5Lm5hbWUuZW5kc1dpdGgoRU5UUllfTkFNRV9TRVBBUkFUT1IpKSB7XG4gICAgICAvLyBOYW1lZCB3aXRob3V0IGl0cyB0cmFpbGluZyBzZXBhcmF0b3IsIHNvIHRoZSBjcmVhdGVkIHBhdGggcmVhZHMgdGhlIHNhbWUgYXMgZXZlcnkgb3RoZXIgb25lLlxuICAgICAgZmlsZVN5c3RlbS5ta2RpclN5bmMoam9pbih0YXJnZXREaXJlY3RvcnksIGVudHJ5Lm5hbWUuc2xpY2UoMCwgLTEpKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyeVBhdGggPSBqb2luKHRhcmdldERpcmVjdG9yeSwgZW50cnkubmFtZSk7XG4gICAgZmlsZVN5c3RlbS5ta2RpclN5bmMoZGlybmFtZShlbnRyeVBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBmaWxlU3lzdGVtLndyaXRlRmlsZVN5bmMoZW50cnlQYXRoLCByZWFkRW50cnlEYXRhKGFyY2hpdmUsIGVudHJ5KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWZ1c2VzIGFuIGVudHJ5IG5hbWUgdGhhdCB3b3VsZCBwbGFjZSB0aGUgZXh0cmFjdGVkIGZpbGUgb3V0c2lkZSB0aGUgdGFyZ2V0IGRpcmVjdG9yeS5cbiAqXG4gKiBBbiBhcmNoaXZlIGlzIHVudHJ1c3RlZCBpbnB1dCBldmVuIHdoZW4gd2UgcHVibGlzaGVkIGl0IG91cnNlbHZlcywgYW5kIGV2ZXJ5IG9uZSBvZiB0aGVzZSBzaGFwZXNcbiAqIGVzY2FwZXMgdGhlIHRhcmdldDogYW4gYWJzb2x1dGUgUE9TSVggcGF0aCwgYSBXaW5kb3dzIGRyaXZlLXF1YWxpZmllZCBwYXRoLCBhIGJhY2tzbGFzaCAod2hpY2ggdGhlXG4gKiBaSVAgc3BlY2lmaWNhdGlvbiBmb3JiaWRzIGFzIGEgc2VwYXJhdG9yLCBzbyBpdHMgb25seSB1c2UgaGVyZSBpcyB0byBzbXVnZ2xlIG9uZSBwYXN0IGFcbiAqIGZvcndhcmQtc2xhc2ggY2hlY2spLCBhbmQgYSBgLi5gIHNlZ21lbnQuXG4gKlxuICogQHBhcmFtIGVudHJ5TmFtZSAtIFRoZSBlbnRyeSBuYW1lIGFzIHJlY29yZGVkIGluIHRoZSBhcmNoaXZlLlxuICovXG5mdW5jdGlvbiBhc3NlcnRTYWZlRW50cnlOYW1lKGVudHJ5TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChlbnRyeU5hbWUuc3RhcnRzV2l0aChFTlRSWV9OQU1FX1NFUEFSQVRPUikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJlZnVzaW5nIHRvIGV4dHJhY3QgdGhlIGFic29sdXRlIGFyY2hpdmUgZW50cnkgJyR7ZW50cnlOYW1lfScuYCk7XG4gIH1cblxuICBpZiAoV0lORE9XU19EUklWRV9QUkVGSVhfUkVHX0VYUC50ZXN0KGVudHJ5TmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJlZnVzaW5nIHRvIGV4dHJhY3QgdGhlIGRyaXZlLXF1YWxpZmllZCBhcmNoaXZlIGVudHJ5ICcke2VudHJ5TmFtZX0nLmApO1xuICB9XG5cbiAgaWYgKGVudHJ5TmFtZS5pbmNsdWRlcygnXFxcXCcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZWZ1c2luZyB0byBleHRyYWN0IHRoZSBhcmNoaXZlIGVudHJ5ICcke2VudHJ5TmFtZX0nLCB3aGljaCB1c2VzIGEgYmFja3NsYXNoIHNlcGFyYXRvci5gKTtcbiAgfVxuXG4gIGlmIChlbnRyeU5hbWUuc3BsaXQoRU5UUllfTkFNRV9TRVBBUkFUT1IpLmluY2x1ZGVzKCcuLicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZWZ1c2luZyB0byBleHRyYWN0IHRoZSBhcmNoaXZlIGVudHJ5ICcke2VudHJ5TmFtZX0nLCB3aGljaCBwb2ludHMgb3V0c2lkZSB0aGUgdGFyZ2V0IGRpcmVjdG9yeS5gKTtcbiAgfVxufVxuXG4vKipcbiAqIExvY2F0ZXMgdGhlIGVuZC1vZi1jZW50cmFsLWRpcmVjdG9yeSByZWNvcmQgYW5kIHJldHVybnMgaXRzIG9mZnNldC5cbiAqXG4gKiBUaGUgcmVjb3JkIHNpdHMgYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBhcmNoaXZlIHVubGVzcyBhIHRyYWlsaW5nIGNvbW1lbnQgZm9sbG93cyBpdCwgc28gaXQgaXMgZm91bmRcbiAqIGJ5IHNjYW5uaW5nIGJhY2t3YXJkcyBvdmVyIHRoZSBjb21tZW50J3MgbWF4aW11bSBsZW5ndGggcmF0aGVyIHRoYW4gYXNzdW1lZCB0byBiZSBhdCBhIGZpeGVkIHBsYWNlLlxuICpcbiAqIEBwYXJhbSBhcmNoaXZlIC0gVGhlIHJhdyBaSVAgYXJjaGl2ZSBieXRlcy5cbiAqIEByZXR1cm5zIFRoZSByZWNvcmQncyBvZmZzZXQuXG4gKi9cbmZ1bmN0aW9uIGZpbmRFbmRPZkNlbnRyYWxEaXJlY3RvcnlPZmZzZXQoYXJjaGl2ZTogQnVmZmVyKTogbnVtYmVyIHtcbiAgY29uc3QgbGFzdFBvc3NpYmxlT2Zmc2V0ID0gYXJjaGl2ZS5sZW5ndGggLSBFTkRfT0ZfQ0VOVFJBTF9ESVJFQ1RPUllfU0laRTtcbiAgY29uc3QgZmlyc3RQb3NzaWJsZU9mZnNldCA9IE1hdGgubWF4KDAsIGxhc3RQb3NzaWJsZU9mZnNldCAtIE1BWF9BUkNISVZFX0NPTU1FTlRfTEVOR1RIKTtcblxuICBmb3IgKGxldCBvZmZzZXQgPSBsYXN0UG9zc2libGVPZmZzZXQ7IG9mZnNldCA+PSBmaXJzdFBvc3NpYmxlT2Zmc2V0OyBvZmZzZXQtLSkge1xuICAgIGlmIChhcmNoaXZlLnJlYWRVSW50MzJMRShvZmZzZXQpID09PSBFTkRfT0ZfQ0VOVFJBTF9ESVJFQ1RPUllfU0lHTkFUVVJFKSB7XG4gICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignVGhlIGFyY2hpdmUgaXMgbm90IGEgWklQIGZpbGU6IGl0cyBlbmQtb2YtY2VudHJhbC1kaXJlY3RvcnkgcmVjb3JkIGlzIG1pc3NpbmcuJyk7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGNlbnRyYWwgZGlyZWN0b3J5LCB3aGljaCBpcyB0aGUgYXJjaGl2ZSdzIGF1dGhvcml0YXRpdmUgaW5kZXggb2YgaXRzIGVudHJpZXMuXG4gKlxuICogQHBhcmFtIGFyY2hpdmUgLSBUaGUgcmF3IFpJUCBhcmNoaXZlIGJ5dGVzLlxuICogQHJldHVybnMgT25lIHtAbGluayBaaXBFbnRyeX0gcGVyIGVudHJ5LCBpbiB0aGUgb3JkZXIgdGhlIGFyY2hpdmUgbGlzdHMgdGhlbS5cbiAqL1xuZnVuY3Rpb24gcmVhZENlbnRyYWxEaXJlY3RvcnkoYXJjaGl2ZTogQnVmZmVyKTogWmlwRW50cnlbXSB7XG4gIGNvbnN0IGVuZE9mQ2VudHJhbERpcmVjdG9yeU9mZnNldCA9IGZpbmRFbmRPZkNlbnRyYWxEaXJlY3RvcnlPZmZzZXQoYXJjaGl2ZSk7XG4gIGNvbnN0IGVudHJ5Q291bnQgPSBhcmNoaXZlLnJlYWRVSW50MTZMRShlbmRPZkNlbnRyYWxEaXJlY3RvcnlPZmZzZXQgKyBBUkNISVZFX0VOVFJZX0NPVU5UX09GRlNFVCk7XG4gIGxldCBlbnRyeU9mZnNldCA9IGFyY2hpdmUucmVhZFVJbnQzMkxFKGVuZE9mQ2VudHJhbERpcmVjdG9yeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX1NUQVJUX09GRlNFVCk7XG5cbiAgaWYgKGVudHJ5Q291bnQgPT09IFNBVFVSQVRFRF9VSU5UXzE2IHx8IGVudHJ5T2Zmc2V0ID09PSBTQVRVUkFURURfVUlOVF8zMikge1xuICAgIHRocm93IG5ldyBFcnJvcignWklQNjQgYXJjaGl2ZXMgYXJlIG5vdCBzdXBwb3J0ZWQuJyk7XG4gIH1cblxuICBjb25zdCBlbnRyaWVzOiBaaXBFbnRyeVtdID0gW107XG4gIGZvciAobGV0IGVudHJ5SW5kZXggPSAwOyBlbnRyeUluZGV4IDwgZW50cnlDb3VudDsgZW50cnlJbmRleCsrKSB7XG4gICAgaWYgKGFyY2hpdmUucmVhZFVJbnQzMkxFKGVudHJ5T2Zmc2V0KSAhPT0gQ0VOVFJBTF9ESVJFQ1RPUllfSEVBREVSX1NJR05BVFVSRSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgYXJjaGl2ZSdzIGNlbnRyYWwgZGlyZWN0b3J5IGlzIGNvcnJ1cHQgYXQgZW50cnkgJHtTdHJpbmcoZW50cnlJbmRleCl9LmApO1xuICAgIH1cblxuICAgIGNvbnN0IGZsYWdzID0gYXJjaGl2ZS5yZWFkVUludDE2TEUoZW50cnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9GTEFHU19PRkZTRVQpO1xuICAgIGlmIChmbGFncyAlIEVOQ1JZUFRFRF9GTEFHX0RJVklTT1IgPT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGVkIFpJUCBhcmNoaXZlcyBhcmUgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wcmVzc2VkU2l6ZSA9IGFyY2hpdmUucmVhZFVJbnQzMkxFKGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfQ09NUFJFU1NFRF9TSVpFX09GRlNFVCk7XG4gICAgY29uc3QgbG9jYWxIZWFkZXJPZmZzZXQgPSBhcmNoaXZlLnJlYWRVSW50MzJMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0xPQ0FMX0hFQURFUl9PRkZTRVRfT0ZGU0VUKTtcbiAgICBpZiAoY29tcHJlc3NlZFNpemUgPT09IFNBVFVSQVRFRF9VSU5UXzMyIHx8IGxvY2FsSGVhZGVyT2Zmc2V0ID09PSBTQVRVUkFURURfVUlOVF8zMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdaSVA2NCBhcmNoaXZlcyBhcmUgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lTGVuZ3RoID0gYXJjaGl2ZS5yZWFkVUludDE2TEUoZW50cnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9OQU1FX0xFTkdUSF9PRkZTRVQpO1xuICAgIGNvbnN0IG5hbWVPZmZzZXQgPSBlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0hFQURFUl9TSVpFO1xuICAgIGVudHJpZXMucHVzaCh7XG4gICAgICBjb21wcmVzc2VkU2l6ZSxcbiAgICAgIGNvbXByZXNzaW9uTWV0aG9kOiBhcmNoaXZlLnJlYWRVSW50MTZMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0NPTVBSRVNTSU9OX01FVEhPRF9PRkZTRVQpLFxuICAgICAgbG9jYWxIZWFkZXJPZmZzZXQsXG4gICAgICBuYW1lOiBhcmNoaXZlLnRvU3RyaW5nKCd1dGYtOCcsIG5hbWVPZmZzZXQsIG5hbWVPZmZzZXQgKyBuYW1lTGVuZ3RoKVxuICAgIH0pO1xuXG4gICAgZW50cnlPZmZzZXQgPSBuYW1lT2Zmc2V0XG4gICAgICArIG5hbWVMZW5ndGhcbiAgICAgICsgYXJjaGl2ZS5yZWFkVUludDE2TEUoZW50cnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9FWFRSQV9MRU5HVEhfT0ZGU0VUKVxuICAgICAgKyBhcmNoaXZlLnJlYWRVSW50MTZMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0NPTU1FTlRfTEVOR1RIX09GRlNFVCk7XG4gIH1cblxuICByZXR1cm4gZW50cmllcztcbn1cblxuLyoqXG4gKiBSZWFkcyBhbmQgZGVjb21wcmVzc2VzIG9uZSBlbnRyeSdzIGJ5dGVzLlxuICpcbiAqIFRoZSBkYXRhJ3Mgc3RhcnQgaXMgY29tcHV0ZWQgZnJvbSB0aGUgTE9DQUwgaGVhZGVyIHJhdGhlciB0aGFuIHRoZSBjZW50cmFsIG9uZTogdGhlIHR3byBjYXJyeVxuICogaW5kZXBlbmRlbnQgbmFtZSBhbmQgZXh0cmEtZmllbGQgbGVuZ3RocywgYW5kIG9ubHkgdGhlIGxvY2FsIHBhaXIgZGVzY3JpYmVzIHdoZXJlIHRoZSBieXRlc1xuICogYWN0dWFsbHkgYmVnaW4uXG4gKlxuICogQHBhcmFtIGFyY2hpdmUgLSBUaGUgcmF3IFpJUCBhcmNoaXZlIGJ5dGVzLlxuICogQHBhcmFtIGVudHJ5IC0gVGhlIGVudHJ5LCBhcyByZWFkIGZyb20gdGhlIGNlbnRyYWwgZGlyZWN0b3J5LlxuICogQHJldHVybnMgVGhlIGVudHJ5J3MgdW5jb21wcmVzc2VkIGNvbnRlbnQuXG4gKi9cbmZ1bmN0aW9uIHJlYWRFbnRyeURhdGEoYXJjaGl2ZTogQnVmZmVyLCBlbnRyeTogWmlwRW50cnkpOiBCdWZmZXIge1xuICBpZiAoYXJjaGl2ZS5yZWFkVUludDMyTEUoZW50cnkubG9jYWxIZWFkZXJPZmZzZXQpICE9PSBMT0NBTF9GSUxFX0hFQURFUl9TSUdOQVRVUkUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBhcmNoaXZlIGVudHJ5ICcke2VudHJ5Lm5hbWV9JyBoYXMgYSBjb3JydXB0IGxvY2FsIGhlYWRlci5gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGFPZmZzZXQgPSBlbnRyeS5sb2NhbEhlYWRlck9mZnNldFxuICAgICsgTE9DQUxfSEVBREVSX1NJWkVcbiAgICArIGFyY2hpdmUucmVhZFVJbnQxNkxFKGVudHJ5LmxvY2FsSGVhZGVyT2Zmc2V0ICsgTE9DQUxfSEVBREVSX05BTUVfTEVOR1RIX09GRlNFVClcbiAgICArIGFyY2hpdmUucmVhZFVJbnQxNkxFKGVudHJ5LmxvY2FsSGVhZGVyT2Zmc2V0ICsgTE9DQUxfSEVBREVSX0VYVFJBX0xFTkdUSF9PRkZTRVQpO1xuICBjb25zdCBkYXRhRW5kID0gZGF0YU9mZnNldCArIGVudHJ5LmNvbXByZXNzZWRTaXplO1xuICBpZiAoZGF0YUVuZCA+IGFyY2hpdmUubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgYXJjaGl2ZSBpcyB0cnVuY2F0ZWQ6IGVudHJ5ICcke2VudHJ5Lm5hbWV9JyBydW5zIHBhc3QgaXRzIGVuZC5gKTtcbiAgfVxuXG4gIGNvbnN0IGNvbXByZXNzZWREYXRhID0gYXJjaGl2ZS5zdWJhcnJheShkYXRhT2Zmc2V0LCBkYXRhRW5kKTtcbiAgc3dpdGNoIChlbnRyeS5jb21wcmVzc2lvbk1ldGhvZCkge1xuICAgIGNhc2UgQ09NUFJFU1NJT05fTUVUSE9EX0RFRkxBVEVEOiB7XG4gICAgICByZXR1cm4gaW5mbGF0ZVJhd1N5bmMoY29tcHJlc3NlZERhdGEpO1xuICAgIH1cbiAgICBjYXNlIENPTVBSRVNTSU9OX01FVEhPRF9TVE9SRUQ6IHtcbiAgICAgIHJldHVybiBjb21wcmVzc2VkRGF0YTtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgYXJjaGl2ZSBlbnRyeSAnJHtlbnRyeS5uYW1lfScgdXNlcyB1bnN1cHBvcnRlZCBjb21wcmVzc2lvbiBtZXRob2QgJHtTdHJpbmcoZW50cnkuY29tcHJlc3Npb25NZXRob2QpfS5gKTtcbiAgICB9XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBeUJBLHVCQUErQjtBQUUvQixrQkFHTztBQXlFUCxNQUFNLHFDQUFxQztBQUMzQyxNQUFNLHFDQUFxQztBQUMzQyxNQUFNLDhCQUE4QjtBQUVwQyxNQUFNLGdDQUFnQztBQUN0QyxNQUFNLDZCQUE2QjtBQUluQyxNQUFNLG9CQUFvQjtBQUMxQixNQUFNLG9CQUFvQjtBQUcxQixNQUFNLDZCQUE2QjtBQUNuQyxNQUFNLGlDQUFpQztBQUd2QyxNQUFNLGlDQUFpQztBQUN2QyxNQUFNLDhDQUE4QztBQUNwRCxNQUFNLDJDQUEyQztBQUNqRCxNQUFNLHVDQUF1QztBQUM3QyxNQUFNLHdDQUF3QztBQUM5QyxNQUFNLDBDQUEwQztBQUNo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
|
|
276
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Rlc2t0b3AtemlwLWV4dHJhY3Rvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEV4dHJhY3RzIGEgWklQIGFyY2hpdmUgdG8gZGlzayB1c2luZyBvbmx5IE5vZGUncyBgemxpYmAgXHUyMDE0IHdpdGggbm8gdGhpcmQtcGFydHkgdW56aXAgZGVwZW5kZW5jeS5cbiAqXG4gKiBJdCBleGlzdHMgZm9yIG9uZSBtZWFzdXJlZCByZWFzb24uIFRoZSBkZXBlbmRlbmN5IGl0IHJlcGxhY2VkIG9uIHRoaXMgcGF0aCwgYGFkbS16aXBgLCBidW5kbGVkXG4gKiByb3VnaGx5IDM0IEtCIG9mIG1pbmlmaWVkIEphdmFTY3JpcHQgaW50byBFVkVSWSBPYnNpZGlhbiBwbHVnaW4gYnVpbHQgd2l0aCB0aGlzIGxpYnJhcnk6IGEgcGx1Z2luXG4gKiBzaGlwcyBhIHNpbmdsZSBDSlMgYG1haW4uanNgLCBlc2J1aWxkIGhhcyBubyBjb2RlIHNwbGl0dGluZyB0byBwdXQgYSBkZXBlbmRlbmN5IGJlaGluZCwgYW5kIGFcbiAqIGBhd2FpdCBpbXBvcnQoKWAgb25seSBkZWZlcnMgZXZhbHVhdGlvbiBcdTIwMTQgdGhlIG1vZHVsZSBib2R5IGlzIGlubGluZWQgZWl0aGVyIHdheS4gYG5vZGU6emxpYmAgaXNcbiAqIGFscmVhZHkgYW4gZXNidWlsZCBleHRlcm5hbCwgc28gdGhlIHNhbWUgd29yayBub3cgY29zdHMgYSBwbHVnaW4gYnVuZGxlIG5vdGhpbmcgYXQgYWxsLiBBcmNoaXZlcyBhcmVcbiAqIFdSSVRURU4gd2l0aCBgZmZsYXRlYCBhdCByZWxlYXNlIHRpbWUgKGBzY3JpcHQtdXRpbHMvZGVtby12YXVsdC50c2ApLCB3aGljaCBpcyBOb2RlLXNpZGUgdG9vbGluZyBhbmRcbiAqIG5ldmVyIHJlYWNoZXMgYSBwbHVnaW4gYnVuZGxlIFx1MjAxNCBhIHRoaXJkLXBhcnR5IHdyaXRlciB0aGVyZSBpcyBhbHNvIHdoYXQga2VlcHMgdGhpcyByZWFkZXIgY2hlY2tlZFxuICogYWdhaW5zdCBhbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIG5vdCBpdHMgb3duLlxuICpcbiAqIERlbGliZXJhdGVseSBuYXJyb3c6IGl0IHJlYWRzIGV4YWN0bHkgd2hhdCB0aGF0IHdyaXRlciBwcm9kdWNlcyBcdTIwMTQgc3RvcmVkIGFuZCBkZWZsYXRlZCBlbnRyaWVzIGluIGFuXG4gKiB1bmVuY3J5cHRlZCBhcmNoaXZlIGJlbG93IHRoZSA0IEdCIC8gNjU1MzUtZW50cnkgWklQNjQgdGhyZXNob2xkIFx1MjAxNCBhbmQgcmFpc2VzIGEgbmFtZWQgZXJyb3IgZm9yXG4gKiBhbnl0aGluZyBlbHNlIHJhdGhlciB0aGFuIGd1ZXNzaW5nIGF0IGl0LiBTaXplcyBhbmQgb2Zmc2V0cyBhcmUgdGFrZW4gZnJvbSB0aGUgY2VudHJhbCBkaXJlY3RvcnksXG4gKiB3aGljaCBpcyBhdXRob3JpdGF0aXZlIGV2ZW4gZm9yIGFyY2hpdmVzIHdyaXR0ZW4gd2l0aCBkYXRhIGRlc2NyaXB0b3JzLlxuICpcbiAqIFRoZSBgbm9kZTpgIGltcG9ydHMgYmVsb3cgYXJlIHNhZmUgdG8gbWVyZWx5IEVWQUxVQVRFIG9uIG1vYmlsZSBcdTIwMTQgYHJlcXVpcmVgIGhhbmRzIGJhY2sgYHVuZGVmaW5lZGBcbiAqIHRoZXJlIGFuZCBub3RoaW5nIHJlYWRzIGl0IGF0IGxvYWQgdGltZSBcdTIwMTQgc28gdGhpcyBtb2R1bGUgY2FuIHNpdCBpbiB0aGUgZ2VuZXJhdGVkIGJhcnJlbHMgd2l0aG91dFxuICogYnJlYWtpbmcgdGhlIGxpYnJhcnkncyBsb2FkIG9uIEFuZHJvaWQuIE9ubHkgdGhlIGNhbGxzIGFyZSBkZXNrdG9wLW9ubHkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBCdWZmZXIgfSBmcm9tICdub2RlOmJ1ZmZlcic7XG5cbmltcG9ydCB7IGluZmxhdGVSYXdTeW5jIH0gZnJvbSAnbm9kZTp6bGliJztcblxuaW1wb3J0IHtcbiAgZGlybmFtZSxcbiAgam9pblxufSBmcm9tICcuL3BhdGgudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBleHRyYWN0WmlwQXJjaGl2ZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXh0cmFjdFppcEFyY2hpdmVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHJhdyBaSVAgYXJjaGl2ZSBieXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFyY2hpdmU6IEJ1ZmZlcjtcblxuICAvKipcbiAgICogVGhlIGZpbGUtc3lzdGVtIGltcGxlbWVudGF0aW9uIHRoZSBleHRyYWN0ZWQgZW50cmllcyBhcmUgd3JpdHRlbiB3aXRoLlxuICAgKlxuICAgKiBJbmplY3RlZCByYXRoZXIgdGhhbiBpbXBvcnRlZCBzbyB0aGUgY2FsbGVyIGNob29zZXMgd2hpY2ggYGZzYCB3cml0ZXMgdGhlIGZpbGVzLiBUaGUgZGVtby12YXVsdFxuICAgKiBvcGVuZXIgaGFuZHMgb3ZlciBFbGVjdHJvbidzIGBvcmlnaW5hbC1mc2AgKHNlZSB7QGxpbmsgWmlwRXh0cmFjdGlvbkZpbGVTeXN0ZW19KS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVTeXN0ZW06IFppcEV4dHJhY3Rpb25GaWxlU3lzdGVtO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHRvIGV4dHJhY3QgaW50by4gQ3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldERpcmVjdG9yeTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBzbGljZSBvZiBgbm9kZTpmc2AgZXh0cmFjdGlvbiBuZWVkcy5cbiAqXG4gKiBPbmx5IHRoZSB0d28gV1JJVElORyBjYWxscyBhcmUgcmVxdWlyZWQsIGFuZCB0aGF0IGlzIGRlbGliZXJhdGU6IEVsZWN0cm9uJ3MgYXNhciBsYXllciBpbnRlcmNlcHRzXG4gKiBgZnNgIFJFQURTIChhbmQgYGV4aXN0c1N5bmNgKSBvbiBhbnkgcGF0aCBjb250YWluaW5nIGAuYXNhcmAsIHdoaWNoIGEgZGVtbyB2YXVsdCBtYXkgbGVnaXRpbWF0ZWx5XG4gKiBzaGlwIGFzIGEgcGxhaW4gZmlsZS4gTmV2ZXIgcHJvYmluZyB0aGUgdGFyZ2V0IHdpdGggYSByZWFkIGtlZXBzIHRoYXQgaW50ZXJjZXB0aW9uIG91dCBvZiB0aGVcbiAqIHBpY3R1cmUgZW50aXJlbHksIGFuZCBhIGNhbGxlciB0aGF0IGhhbmRzIG92ZXIgRWxlY3Ryb24ncyBgb3JpZ2luYWwtZnNgIGlzIHNhZmUgZXZlbiBmcm9tIHRoZVxuICogd3JpdGUgc2lkZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBaaXBFeHRyYWN0aW9uRmlsZVN5c3RlbSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGlyZWN0b3J5LCBpbmNsdWRpbmcgYW55IG1pc3NpbmcgcGFyZW50cy5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBUaGUgZGlyZWN0b3J5IHRvIGNyZWF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIFppcEV4dHJhY3Rpb25Na2Rpck9wdGlvbnN9LlxuICAgKiBAcmV0dXJucyBUaGUgZmlyc3QgZGlyZWN0b3J5IGNyZWF0ZWQsIGlmIGFueS5cbiAgICovXG4gIG1rZGlyU3luYyhwYXRoOiBzdHJpbmcsIG9wdGlvbnM6IFppcEV4dHJhY3Rpb25Na2Rpck9wdGlvbnMpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdyaXRlcyBhIGZpbGUsIG92ZXJ3cml0aW5nIGl0IGlmIGl0IGV4aXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBUaGUgZmlsZSB0byB3cml0ZS5cbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgYnl0ZXMgdG8gd3JpdGUuXG4gICAqL1xuICB3cml0ZUZpbGVTeW5jKHBhdGg6IHN0cmluZywgZGF0YTogQnVmZmVyKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgb3B0aW9ucyB7QGxpbmsgWmlwRXh0cmFjdGlvbkZpbGVTeXN0ZW0ubWtkaXJTeW5jfSBpcyBhbHdheXMgY2FsbGVkIHdpdGguXG4gKlxuICogRXh0cmFjdGlvbiBuZXZlciBwcm9iZXMgZm9yIGFuIGV4aXN0aW5nIGRpcmVjdG9yeSwgc28gZXZlcnkgY2FsbCBoYXMgdG8gY3JlYXRlIHRoZSBtaXNzaW5nIHBhcmVudHNcbiAqIGl0c2VsZiBhbmQgdG9sZXJhdGUgYSBkaXJlY3RvcnkgdGhhdCBpcyBhbHJlYWR5IHRoZXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFppcEV4dHJhY3Rpb25Na2Rpck9wdGlvbnMge1xuICAvKipcbiAgICogQWx3YXlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHJlY3Vyc2l2ZTogdHJ1ZTtcbn1cblxuaW50ZXJmYWNlIFppcEVudHJ5IHtcbiAgcmVhZG9ubHkgY29tcHJlc3NlZFNpemU6IG51bWJlcjtcbiAgcmVhZG9ubHkgY29tcHJlc3Npb25NZXRob2Q6IG51bWJlcjtcbiAgcmVhZG9ubHkgbG9jYWxIZWFkZXJPZmZzZXQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufVxuXG5jb25zdCBFTkRfT0ZfQ0VOVFJBTF9ESVJFQ1RPUllfU0lHTkFUVVJFID0gMHgwNl8wNV80Ql81MDtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0hFQURFUl9TSUdOQVRVUkUgPSAweDAyXzAxXzRCXzUwO1xuY29uc3QgTE9DQUxfRklMRV9IRUFERVJfU0lHTkFUVVJFID0gMHgwNF8wM180Ql81MDtcblxuY29uc3QgRU5EX09GX0NFTlRSQUxfRElSRUNUT1JZX1NJWkUgPSAyMjtcbmNvbnN0IE1BWF9BUkNISVZFX0NPTU1FTlRfTEVOR1RIID0gNjVfNTM1O1xuXG4vLyBBIGNvdW50IG9yIG9mZnNldCBzYXR1cmF0ZWQgdG8gYWxsLW9uZXMgbWVhbnMgdGhlIHJlYWwgdmFsdWUgbGl2ZXMgaW4gYSBaSVA2NCByZWNvcmQgdGhpcyByZWFkZXJcbi8vIERvZXMgbm90IGltcGxlbWVudCwgc28gdGhlIGZpZWxkIG11c3QgbmV2ZXIgYmUgcmVhZCBhdCBmYWNlIHZhbHVlLlxuY29uc3QgU0FUVVJBVEVEX1VJTlRfMTYgPSA2NV81MzU7XG5jb25zdCBTQVRVUkFURURfVUlOVF8zMiA9IDRfMjk0Xzk2N18yOTU7XG5cbi8vIEZpZWxkIG9mZnNldHMgd2l0aGluIHRoZSBlbmQtb2YtY2VudHJhbC1kaXJlY3RvcnkgcmVjb3JkLlxuY29uc3QgQVJDSElWRV9FTlRSWV9DT1VOVF9PRkZTRVQgPSAxMDtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX1NUQVJUX09GRlNFVCA9IDE2O1xuXG4vLyBGaWVsZCBvZmZzZXRzIHdpdGhpbiBhIGNlbnRyYWwtZGlyZWN0b3J5IGhlYWRlci5cbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0ZMQUdTX09GRlNFVCA9IDg7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9DT01QUkVTU0lPTl9NRVRIT0RfT0ZGU0VUID0gMTA7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9DT01QUkVTU0VEX1NJWkVfT0ZGU0VUID0gMjA7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9OQU1FX0xFTkdUSF9PRkZTRVQgPSAyODtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0VYVFJBX0xFTkdUSF9PRkZTRVQgPSAzMDtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0NPTU1FTlRfTEVOR1RIX09GRlNFVCA9IDMyO1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQUxfSEVBREVSX09GRlNFVF9PRkZTRVQgPSA0MjtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0hFQURFUl9TSVpFID0gNDY7XG5cbi8vIEZpZWxkIG9mZnNldHMgd2l0aGluIGEgbG9jYWwgZmlsZSBoZWFkZXIuXG5jb25zdCBMT0NBTF9IRUFERVJfTkFNRV9MRU5HVEhfT0ZGU0VUID0gMjY7XG5jb25zdCBMT0NBTF9IRUFERVJfRVhUUkFfTEVOR1RIX09GRlNFVCA9IDI4O1xuY29uc3QgTE9DQUxfSEVBREVSX1NJWkUgPSAzMDtcblxuY29uc3QgQ09NUFJFU1NJT05fTUVUSE9EX1NUT1JFRCA9IDA7XG5jb25zdCBDT01QUkVTU0lPTl9NRVRIT0RfREVGTEFURUQgPSA4O1xuXG4vLyBCaXQgMCBvZiB0aGUgZ2VuZXJhbC1wdXJwb3NlIGZsYWdzIG1hcmtzIGFuIGVuY3J5cHRlZCBlbnRyeSwgYW5kIGl0IGlzIHRoZSBsb3dlc3QgYml0IFx1MjAxNCBzbyB0aGVcbi8vIFJlbWFpbmRlciB0ZXN0cyBpdCB3aXRob3V0IHJlYWNoaW5nIGZvciBhIGJpdHdpc2Ugb3BlcmF0b3IuXG5jb25zdCBFTkNSWVBURURfRkxBR19ESVZJU09SID0gMjtcblxuY29uc3QgRU5UUllfTkFNRV9TRVBBUkFUT1IgPSAnLyc7XG5jb25zdCBXSU5ET1dTX0RSSVZFX1BSRUZJWF9SRUdfRVhQID0gL15bQS1aYS16XTovO1xuXG4vKipcbiAqIEV4dHJhY3RzIGV2ZXJ5IGVudHJ5IG9mIGEgWklQIGFyY2hpdmUgaW50byBhIGRpcmVjdG9yeS5cbiAqXG4gKiBEaXJlY3RvcnkgZW50cmllcyBiZWNvbWUgZGlyZWN0b3JpZXM7IGEgZmlsZSBlbnRyeSdzIHBhcmVudHMgYXJlIGNyZWF0ZWQgd2hldGhlciBvciBub3QgdGhlIGFyY2hpdmVcbiAqIGRlY2xhcmVkIHRoZW0uIEFuIGVudHJ5IHdob3NlIG5hbWUgd291bGQgZXNjYXBlIHtAbGluayBFeHRyYWN0WmlwQXJjaGl2ZVBhcmFtcy50YXJnZXREaXJlY3Rvcnl9IGlzXG4gKiByZWZ1c2VkIHJhdGhlciB0aGFuIHdyaXR0ZW4gKHRoZSBcInppcCBzbGlwXCIgdHJhdmVyc2FsKSwgYXMgaXMgYW4gZW5jcnlwdGVkLCBaSVA2NCwgb3JcbiAqIHVua25vd24tY29tcHJlc3Npb24gYXJjaGl2ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBFeHRyYWN0WmlwQXJjaGl2ZVBhcmFtc30uXG4gKiBAdGhyb3dzIEFuIHtAbGluayBFcnJvcn0gbmFtaW5nIHRoZSByZWFzb24gd2hlbiB0aGUgYXJjaGl2ZSBjYW5ub3QgYmUgcmVhZCBhcyB3cml0dGVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFppcEFyY2hpdmUocGFyYW1zOiBFeHRyYWN0WmlwQXJjaGl2ZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgYXJjaGl2ZSxcbiAgICBmaWxlU3lzdGVtLFxuICAgIHRhcmdldERpcmVjdG9yeVxuICB9ID0gcGFyYW1zO1xuXG4gIGZpbGVTeXN0ZW0ubWtkaXJTeW5jKHRhcmdldERpcmVjdG9yeSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiByZWFkQ2VudHJhbERpcmVjdG9yeShhcmNoaXZlKSkge1xuICAgIGFzc2VydFNhZmVFbnRyeU5hbWUoZW50cnkubmFtZSk7XG5cbiAgICBpZiAoZW50cnkubmFtZS5lbmRzV2l0aChFTlRSWV9OQU1FX1NFUEFSQVRPUikpIHtcbiAgICAgIC8vIE5hbWVkIHdpdGhvdXQgaXRzIHRyYWlsaW5nIHNlcGFyYXRvciwgc28gdGhlIGNyZWF0ZWQgcGF0aCByZWFkcyB0aGUgc2FtZSBhcyBldmVyeSBvdGhlciBvbmUuXG4gICAgICBmaWxlU3lzdGVtLm1rZGlyU3luYyhqb2luKHRhcmdldERpcmVjdG9yeSwgZW50cnkubmFtZS5zbGljZSgwLCAtMSkpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5UGF0aCA9IGpvaW4odGFyZ2V0RGlyZWN0b3J5LCBlbnRyeS5uYW1lKTtcbiAgICBmaWxlU3lzdGVtLm1rZGlyU3luYyhkaXJuYW1lKGVudHJ5UGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGZpbGVTeXN0ZW0ud3JpdGVGaWxlU3luYyhlbnRyeVBhdGgsIHJlYWRFbnRyeURhdGEoYXJjaGl2ZSwgZW50cnkpKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZnVzZXMgYW4gZW50cnkgbmFtZSB0aGF0IHdvdWxkIHBsYWNlIHRoZSBleHRyYWN0ZWQgZmlsZSBvdXRzaWRlIHRoZSB0YXJnZXQgZGlyZWN0b3J5LlxuICpcbiAqIEFuIGFyY2hpdmUgaXMgdW50cnVzdGVkIGlucHV0IGV2ZW4gd2hlbiB3ZSBwdWJsaXNoZWQgaXQgb3Vyc2VsdmVzLCBhbmQgZXZlcnkgb25lIG9mIHRoZXNlIHNoYXBlc1xuICogZXNjYXBlcyB0aGUgdGFyZ2V0OiBhbiBhYnNvbHV0ZSBQT1NJWCBwYXRoLCBhIFdpbmRvd3MgZHJpdmUtcXVhbGlmaWVkIHBhdGgsIGEgYmFja3NsYXNoICh3aGljaCB0aGVcbiAqIFpJUCBzcGVjaWZpY2F0aW9uIGZvcmJpZHMgYXMgYSBzZXBhcmF0b3IsIHNvIGl0cyBvbmx5IHVzZSBoZXJlIGlzIHRvIHNtdWdnbGUgb25lIHBhc3QgYVxuICogZm9yd2FyZC1zbGFzaCBjaGVjayksIGFuZCBhIGAuLmAgc2VnbWVudC5cbiAqXG4gKiBAcGFyYW0gZW50cnlOYW1lIC0gVGhlIGVudHJ5IG5hbWUgYXMgcmVjb3JkZWQgaW4gdGhlIGFyY2hpdmUuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFNhZmVFbnRyeU5hbWUoZW50cnlOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGVudHJ5TmFtZS5zdGFydHNXaXRoKEVOVFJZX05BTUVfU0VQQVJBVE9SKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUmVmdXNpbmcgdG8gZXh0cmFjdCB0aGUgYWJzb2x1dGUgYXJjaGl2ZSBlbnRyeSAnJHtlbnRyeU5hbWV9Jy5gKTtcbiAgfVxuXG4gIGlmIChXSU5ET1dTX0RSSVZFX1BSRUZJWF9SRUdfRVhQLnRlc3QoZW50cnlOYW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUmVmdXNpbmcgdG8gZXh0cmFjdCB0aGUgZHJpdmUtcXVhbGlmaWVkIGFyY2hpdmUgZW50cnkgJyR7ZW50cnlOYW1lfScuYCk7XG4gIH1cblxuICBpZiAoZW50cnlOYW1lLmluY2x1ZGVzKCdcXFxcJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJlZnVzaW5nIHRvIGV4dHJhY3QgdGhlIGFyY2hpdmUgZW50cnkgJyR7ZW50cnlOYW1lfScsIHdoaWNoIHVzZXMgYSBiYWNrc2xhc2ggc2VwYXJhdG9yLmApO1xuICB9XG5cbiAgaWYgKGVudHJ5TmFtZS5zcGxpdChFTlRSWV9OQU1FX1NFUEFSQVRPUikuaW5jbHVkZXMoJy4uJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJlZnVzaW5nIHRvIGV4dHJhY3QgdGhlIGFyY2hpdmUgZW50cnkgJyR7ZW50cnlOYW1lfScsIHdoaWNoIHBvaW50cyBvdXRzaWRlIHRoZSB0YXJnZXQgZGlyZWN0b3J5LmApO1xuICB9XG59XG5cbi8qKlxuICogTG9jYXRlcyB0aGUgZW5kLW9mLWNlbnRyYWwtZGlyZWN0b3J5IHJlY29yZCBhbmQgcmV0dXJucyBpdHMgb2Zmc2V0LlxuICpcbiAqIFRoZSByZWNvcmQgc2l0cyBhdCB0aGUgdmVyeSBlbmQgb2YgdGhlIGFyY2hpdmUgdW5sZXNzIGEgdHJhaWxpbmcgY29tbWVudCBmb2xsb3dzIGl0LCBzbyBpdCBpcyBmb3VuZFxuICogYnkgc2Nhbm5pbmcgYmFja3dhcmRzIG92ZXIgdGhlIGNvbW1lbnQncyBtYXhpbXVtIGxlbmd0aCByYXRoZXIgdGhhbiBhc3N1bWVkIHRvIGJlIGF0IGEgZml4ZWQgcGxhY2UuXG4gKlxuICogQHBhcmFtIGFyY2hpdmUgLSBUaGUgcmF3IFpJUCBhcmNoaXZlIGJ5dGVzLlxuICogQHJldHVybnMgVGhlIHJlY29yZCdzIG9mZnNldC5cbiAqL1xuZnVuY3Rpb24gZmluZEVuZE9mQ2VudHJhbERpcmVjdG9yeU9mZnNldChhcmNoaXZlOiBCdWZmZXIpOiBudW1iZXIge1xuICBjb25zdCBsYXN0UG9zc2libGVPZmZzZXQgPSBhcmNoaXZlLmxlbmd0aCAtIEVORF9PRl9DRU5UUkFMX0RJUkVDVE9SWV9TSVpFO1xuICBjb25zdCBmaXJzdFBvc3NpYmxlT2Zmc2V0ID0gTWF0aC5tYXgoMCwgbGFzdFBvc3NpYmxlT2Zmc2V0IC0gTUFYX0FSQ0hJVkVfQ09NTUVOVF9MRU5HVEgpO1xuXG4gIGZvciAobGV0IG9mZnNldCA9IGxhc3RQb3NzaWJsZU9mZnNldDsgb2Zmc2V0ID49IGZpcnN0UG9zc2libGVPZmZzZXQ7IG9mZnNldC0tKSB7XG4gICAgaWYgKGFyY2hpdmUucmVhZFVJbnQzMkxFKG9mZnNldCkgPT09IEVORF9PRl9DRU5UUkFMX0RJUkVDVE9SWV9TSUdOQVRVUkUpIHtcbiAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYXJjaGl2ZSBpcyBub3QgYSBaSVAgZmlsZTogaXRzIGVuZC1vZi1jZW50cmFsLWRpcmVjdG9yeSByZWNvcmQgaXMgbWlzc2luZy4nKTtcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgY2VudHJhbCBkaXJlY3RvcnksIHdoaWNoIGlzIHRoZSBhcmNoaXZlJ3MgYXV0aG9yaXRhdGl2ZSBpbmRleCBvZiBpdHMgZW50cmllcy5cbiAqXG4gKiBAcGFyYW0gYXJjaGl2ZSAtIFRoZSByYXcgWklQIGFyY2hpdmUgYnl0ZXMuXG4gKiBAcmV0dXJucyBPbmUge0BsaW5rIFppcEVudHJ5fSBwZXIgZW50cnksIGluIHRoZSBvcmRlciB0aGUgYXJjaGl2ZSBsaXN0cyB0aGVtLlxuICovXG5mdW5jdGlvbiByZWFkQ2VudHJhbERpcmVjdG9yeShhcmNoaXZlOiBCdWZmZXIpOiBaaXBFbnRyeVtdIHtcbiAgY29uc3QgZW5kT2ZDZW50cmFsRGlyZWN0b3J5T2Zmc2V0ID0gZmluZEVuZE9mQ2VudHJhbERpcmVjdG9yeU9mZnNldChhcmNoaXZlKTtcbiAgY29uc3QgZW50cnlDb3VudCA9IGFyY2hpdmUucmVhZFVJbnQxNkxFKGVuZE9mQ2VudHJhbERpcmVjdG9yeU9mZnNldCArIEFSQ0hJVkVfRU5UUllfQ09VTlRfT0ZGU0VUKTtcbiAgbGV0IGVudHJ5T2Zmc2V0ID0gYXJjaGl2ZS5yZWFkVUludDMyTEUoZW5kT2ZDZW50cmFsRGlyZWN0b3J5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfU1RBUlRfT0ZGU0VUKTtcblxuICBpZiAoZW50cnlDb3VudCA9PT0gU0FUVVJBVEVEX1VJTlRfMTYgfHwgZW50cnlPZmZzZXQgPT09IFNBVFVSQVRFRF9VSU5UXzMyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdaSVA2NCBhcmNoaXZlcyBhcmUgbm90IHN1cHBvcnRlZC4nKTtcbiAgfVxuXG4gIGNvbnN0IGVudHJpZXM6IFppcEVudHJ5W10gPSBbXTtcbiAgZm9yIChsZXQgZW50cnlJbmRleCA9IDA7IGVudHJ5SW5kZXggPCBlbnRyeUNvdW50OyBlbnRyeUluZGV4KyspIHtcbiAgICBpZiAoYXJjaGl2ZS5yZWFkVUludDMyTEUoZW50cnlPZmZzZXQpICE9PSBDRU5UUkFMX0RJUkVDVE9SWV9IRUFERVJfU0lHTkFUVVJFKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBhcmNoaXZlJ3MgY2VudHJhbCBkaXJlY3RvcnkgaXMgY29ycnVwdCBhdCBlbnRyeSAke1N0cmluZyhlbnRyeUluZGV4KX0uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZmxhZ3MgPSBhcmNoaXZlLnJlYWRVSW50MTZMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0ZMQUdTX09GRlNFVCk7XG4gICAgaWYgKGZsYWdzICUgRU5DUllQVEVEX0ZMQUdfRElWSVNPUiA9PT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbmNyeXB0ZWQgWklQIGFyY2hpdmVzIGFyZSBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXByZXNzZWRTaXplID0gYXJjaGl2ZS5yZWFkVUludDMyTEUoZW50cnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9DT01QUkVTU0VEX1NJWkVfT0ZGU0VUKTtcbiAgICBjb25zdCBsb2NhbEhlYWRlck9mZnNldCA9IGFyY2hpdmUucmVhZFVJbnQzMkxFKGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQUxfSEVBREVSX09GRlNFVF9PRkZTRVQpO1xuICAgIGlmIChjb21wcmVzc2VkU2l6ZSA9PT0gU0FUVVJBVEVEX1VJTlRfMzIgfHwgbG9jYWxIZWFkZXJPZmZzZXQgPT09IFNBVFVSQVRFRF9VSU5UXzMyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1pJUDY0IGFyY2hpdmVzIGFyZSBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWVMZW5ndGggPSBhcmNoaXZlLnJlYWRVSW50MTZMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX05BTUVfTEVOR1RIX09GRlNFVCk7XG4gICAgY29uc3QgbmFtZU9mZnNldCA9IGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfSEVBREVSX1NJWkU7XG4gICAgZW50cmllcy5wdXNoKHtcbiAgICAgIGNvbXByZXNzZWRTaXplLFxuICAgICAgY29tcHJlc3Npb25NZXRob2Q6IGFyY2hpdmUucmVhZFVJbnQxNkxFKGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfQ09NUFJFU1NJT05fTUVUSE9EX09GRlNFVCksXG4gICAgICBsb2NhbEhlYWRlck9mZnNldCxcbiAgICAgIG5hbWU6IGFyY2hpdmUudG9TdHJpbmcoJ3V0Zi04JywgbmFtZU9mZnNldCwgbmFtZU9mZnNldCArIG5hbWVMZW5ndGgpXG4gICAgfSk7XG5cbiAgICBlbnRyeU9mZnNldCA9IG5hbWVPZmZzZXRcbiAgICAgICsgbmFtZUxlbmd0aFxuICAgICAgKyBhcmNoaXZlLnJlYWRVSW50MTZMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0VYVFJBX0xFTkdUSF9PRkZTRVQpXG4gICAgICArIGFyY2hpdmUucmVhZFVJbnQxNkxFKGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfQ09NTUVOVF9MRU5HVEhfT0ZGU0VUKTtcbiAgfVxuXG4gIHJldHVybiBlbnRyaWVzO1xufVxuXG4vKipcbiAqIFJlYWRzIGFuZCBkZWNvbXByZXNzZXMgb25lIGVudHJ5J3MgYnl0ZXMuXG4gKlxuICogVGhlIGRhdGEncyBzdGFydCBpcyBjb21wdXRlZCBmcm9tIHRoZSBMT0NBTCBoZWFkZXIgcmF0aGVyIHRoYW4gdGhlIGNlbnRyYWwgb25lOiB0aGUgdHdvIGNhcnJ5XG4gKiBpbmRlcGVuZGVudCBuYW1lIGFuZCBleHRyYS1maWVsZCBsZW5ndGhzLCBhbmQgb25seSB0aGUgbG9jYWwgcGFpciBkZXNjcmliZXMgd2hlcmUgdGhlIGJ5dGVzXG4gKiBhY3R1YWxseSBiZWdpbi5cbiAqXG4gKiBAcGFyYW0gYXJjaGl2ZSAtIFRoZSByYXcgWklQIGFyY2hpdmUgYnl0ZXMuXG4gKiBAcGFyYW0gZW50cnkgLSBUaGUgZW50cnksIGFzIHJlYWQgZnJvbSB0aGUgY2VudHJhbCBkaXJlY3RvcnkuXG4gKiBAcmV0dXJucyBUaGUgZW50cnkncyB1bmNvbXByZXNzZWQgY29udGVudC5cbiAqL1xuZnVuY3Rpb24gcmVhZEVudHJ5RGF0YShhcmNoaXZlOiBCdWZmZXIsIGVudHJ5OiBaaXBFbnRyeSk6IEJ1ZmZlciB7XG4gIGlmIChhcmNoaXZlLnJlYWRVSW50MzJMRShlbnRyeS5sb2NhbEhlYWRlck9mZnNldCkgIT09IExPQ0FMX0ZJTEVfSEVBREVSX1NJR05BVFVSRSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGFyY2hpdmUgZW50cnkgJyR7ZW50cnkubmFtZX0nIGhhcyBhIGNvcnJ1cHQgbG9jYWwgaGVhZGVyLmApO1xuICB9XG5cbiAgY29uc3QgZGF0YU9mZnNldCA9IGVudHJ5LmxvY2FsSGVhZGVyT2Zmc2V0XG4gICAgKyBMT0NBTF9IRUFERVJfU0laRVxuICAgICsgYXJjaGl2ZS5yZWFkVUludDE2TEUoZW50cnkubG9jYWxIZWFkZXJPZmZzZXQgKyBMT0NBTF9IRUFERVJfTkFNRV9MRU5HVEhfT0ZGU0VUKVxuICAgICsgYXJjaGl2ZS5yZWFkVUludDE2TEUoZW50cnkubG9jYWxIZWFkZXJPZmZzZXQgKyBMT0NBTF9IRUFERVJfRVhUUkFfTEVOR1RIX09GRlNFVCk7XG4gIGNvbnN0IGRhdGFFbmQgPSBkYXRhT2Zmc2V0ICsgZW50cnkuY29tcHJlc3NlZFNpemU7XG4gIGlmIChkYXRhRW5kID4gYXJjaGl2ZS5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBhcmNoaXZlIGlzIHRydW5jYXRlZDogZW50cnkgJyR7ZW50cnkubmFtZX0nIHJ1bnMgcGFzdCBpdHMgZW5kLmApO1xuICB9XG5cbiAgY29uc3QgY29tcHJlc3NlZERhdGEgPSBhcmNoaXZlLnN1YmFycmF5KGRhdGFPZmZzZXQsIGRhdGFFbmQpO1xuICBzd2l0Y2ggKGVudHJ5LmNvbXByZXNzaW9uTWV0aG9kKSB7XG4gICAgY2FzZSBDT01QUkVTU0lPTl9NRVRIT0RfREVGTEFURUQ6IHtcbiAgICAgIHJldHVybiBpbmZsYXRlUmF3U3luYyhjb21wcmVzc2VkRGF0YSk7XG4gICAgfVxuICAgIGNhc2UgQ09NUFJFU1NJT05fTUVUSE9EX1NUT1JFRDoge1xuICAgICAgcmV0dXJuIGNvbXByZXNzZWREYXRhO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBhcmNoaXZlIGVudHJ5ICcke2VudHJ5Lm5hbWV9JyB1c2VzIHVuc3VwcG9ydGVkIGNvbXByZXNzaW9uIG1ldGhvZCAke1N0cmluZyhlbnRyeS5jb21wcmVzc2lvbk1ldGhvZCl9LmApO1xuICAgIH1cbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwQkEsdUJBQStCO0FBRS9CLGtCQUdPO0FBeUVQLE1BQU0scUNBQXFDO0FBQzNDLE1BQU0scUNBQXFDO0FBQzNDLE1BQU0sOEJBQThCO0FBRXBDLE1BQU0sZ0NBQWdDO0FBQ3RDLE1BQU0sNkJBQTZCO0FBSW5DLE1BQU0sb0JBQW9CO0FBQzFCLE1BQU0sb0JBQW9CO0FBRzFCLE1BQU0sNkJBQTZCO0FBQ25DLE1BQU0saUNB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LFlBQU0sSUFBSSxNQUFNLDJDQUEyQztBQUFBLElBQzdEO0FBRUEsVUFBTSxpQkFBaUIsUUFBUSxhQUFhLGNBQWMsd0NBQXdDO0FBQ2xHLFVBQU0sb0JBQW9CLFFBQVEsYUFBYSxjQUFjLDRDQUE0QztBQUN6RyxRQUFJLG1CQUFtQixxQkFBcUIsc0JBQXNCLG1CQUFtQjtBQUNuRixZQUFNLElBQUksTUFBTSxtQ0FBbUM7QUFBQSxJQUNyRDtBQUVBLFVBQU0sYUFBYSxRQUFRLGFBQWEsY0FBYyxvQ0FBb0M7QUFDMUYsVUFBTSxhQUFhLGNBQWM7QUFDakMsWUFBUSxLQUFLO0FBQUEsTUFDWDtBQUFBLE1BQ0EsbUJBQW1CLFFBQVEsYUFBYSxjQUFjLDJDQUEyQztBQUFBLE1BQ2pHO0FBQUEsTUFDQSxNQUFNLFFBQVEsU0FBUyxTQUFTLFlBQVksYUFBYSxVQUFVO0FBQUEsSUFDckUsQ0FBQztBQUVELGtCQUFjLGFBQ1YsYUFDQSxRQUFRLGFBQWEsY0FBYyxxQ0FBcUMsSUFDeEUsUUFBUSxhQUFhLGNBQWMsdUNBQXVDO0FBQUEsRUFDaEY7QUFFQSxTQUFPO0FBQ1Q7QUFhQSxTQUFTLGNBQWMsU0FBaUIsT0FBeUI7QUFDL0QsTUFBSSxRQUFRLGFBQWEsTUFBTSxpQkFBaUIsTUFBTSw2QkFBNkI7QUFDakYsVUFBTSxJQUFJLE1BQU0sc0JBQXNCLE1BQU0sSUFBSSwrQkFBK0I7QUFBQSxFQUNqRjtBQUVBLFFBQU0sYUFBYSxNQUFNLG9CQUNyQixvQkFDQSxRQUFRLGFBQWEsTUFBTSxvQkFBb0IsK0JBQStCLElBQzlFLFFBQVEsYUFBYSxNQUFNLG9CQUFvQixnQ0FBZ0M7QUFDbkYsUUFBTSxVQUFVLGFBQWEsTUFBTTtBQUNuQyxNQUFJLFVBQVUsUUFBUSxRQUFRO0FBQzVCLFVBQU0sSUFBSSxNQUFNLG9DQUFvQyxNQUFNLElBQUksc0JBQXNCO0FBQUEsRUFDdEY7QUFFQSxRQUFNLGlCQUFpQixRQUFRLFNBQVMsWUFBWSxPQUFPO0FBQzNELFVBQVEsTUFBTSxtQkFBbUI7QUFBQSxJQUMvQixLQUFLLDZCQUE2QjtBQUNoQyxpQkFBTyxpQ0FBZSxjQUFjO0FBQUEsSUFDdEM7QUFBQSxJQUNBLEtBQUssMkJBQTJCO0FBQzlCLGFBQU87QUFBQSxJQUNUO0FBQUEsSUFDQSxTQUFTO0FBQ1AsWUFBTSxJQUFJLE1BQU0sc0JBQXNCLE1BQU0sSUFBSSx5Q0FBeUMsT0FBTyxNQUFNLGlCQUFpQixDQUFDLEdBQUc7QUFBQSxJQUM3SDtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
* roughly 34 KB of minified JavaScript into EVERY Obsidian plugin built with this library: a plugin
|
|
9
9
|
* ships a single CJS `main.js`, esbuild has no code splitting to put a dependency behind, and a
|
|
10
10
|
* `await import()` only defers evaluation — the module body is inlined either way. `node:zlib` is
|
|
11
|
-
* already an esbuild external, so the same work now costs a plugin bundle nothing at all. Archives
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* already an esbuild external, so the same work now costs a plugin bundle nothing at all. Archives are
|
|
12
|
+
* WRITTEN with `fflate` at release time (`script-utils/demo-vault.ts`), which is Node-side tooling and
|
|
13
|
+
* never reaches a plugin bundle — a third-party writer there is also what keeps this reader checked
|
|
14
|
+
* against an implementation that is not its own.
|
|
14
15
|
*
|
|
15
16
|
* Deliberately narrow: it reads exactly what that writer produces — stored and deflated entries in an
|
|
16
17
|
* unencrypted archive below the 4 GB / 65535-entry ZIP64 threshold — and raises a named error for
|
|
@@ -146,7 +146,7 @@ __export(generated_during_build_exports, {
|
|
|
146
146
|
LIBRARY_VERSION: () => LIBRARY_VERSION
|
|
147
147
|
});
|
|
148
148
|
module.exports = __toCommonJS(generated_during_build_exports);
|
|
149
|
-
const LIBRARY_VERSION = "
|
|
149
|
+
const LIBRARY_VERSION = "102.0.0";
|
|
150
150
|
const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-dev-utils.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils-lock-indicator {\n display: inline-flex;\n align-items: center;\n color: var(--text-muted);\n}\n.obsidian-dev-utils-lock-indicator .svg-icon {\n width: var(--icon-s);\n height: var(--icon-s);\n}\n\n@keyframes obsidian-dev-utils-lock-indicator-flash {\n 40% {\n color: var(--text-error);\n transform: scale(1.4);\n }\n}\n.obsidian-dev-utils-lock-indicator-flash {\n animation: obsidian-dev-utils-lock-indicator-flash 0.35s ease-in-out;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utilsprogress.loop {\n min-width: 200px;\n}\n\n@keyframes obsidian-dev-utils-minimized-modal-bar-pulse {\n 0%, 100% {\n box-shadow: var(--shadow-s);\n }\n 50% {\n box-shadow: 0 0 0 2px var(--interactive-accent);\n }\n}\n@keyframes obsidian-dev-utils-minimized-modal-bar-attention {\n 0% {\n box-shadow: 0 0 0 0 var(--interactive-accent);\n }\n 40% {\n box-shadow: 0 0 0 4px var(--interactive-accent);\n }\n 100% {\n box-shadow: var(--shadow-s);\n }\n}\n.obsidian-dev-utils.minimizable-modal .minimize-button {\n position: absolute;\n top: var(--size-4-2);\n right: calc(var(--size-4-2) + var(--size-4-9));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-dev-utils.minimizable-modal .minimize-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n.obsidian-dev-utils.minimized-modal-bar {\n position: fixed;\n right: var(--size-4-4);\n bottom: calc(var(--size-4-4) + var(--size-4-8));\n z-index: var(--layer-modal);\n display: flex;\n align-items: center;\n gap: var(--size-4-2);\n padding: var(--size-4-2) var(--size-4-3);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-m);\n background: var(--background-secondary);\n box-shadow: var(--shadow-s);\n cursor: pointer;\n animation: obsidian-dev-utils-minimized-modal-bar-pulse 2s ease-in-out infinite;\n}\n.obsidian-dev-utils.minimized-modal-bar:hover {\n background-image: linear-gradient(var(--background-modifier-hover), var(--background-modifier-hover));\n}\n.obsidian-dev-utils.minimized-modal-bar.minimized-modal-bar-attention {\n animation: obsidian-dev-utils-minimized-modal-bar-attention 0.35s ease-out;\n}\n.obsidian-dev-utils.minimized-modal-bar .minimized-modal-bar-title {\n font-weight: var(--font-medium);\n}\n.obsidian-dev-utils.minimized-modal-bar .restore-button,\n.obsidian-dev-utils.minimized-modal-bar .cancel-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-dev-utils.minimized-modal-bar .restore-button:hover,\n.obsidian-dev-utils.minimized-modal-bar .cancel-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n\n.obsidian-dev-utils.modal-commands {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2-2);\n padding: var(--size-4-2) var(--size-4-3);\n border-top: 1px solid var(--background-modifier-border);\n}\n.obsidian-dev-utils.modal-command-control {\n margin-inline-start: var(--size-2-2);\n vertical-align: middle;\n}\n.obsidian-dev-utils.modal-command {\n display: inline-flex;\n align-items: baseline;\n gap: var(--size-2-2);\n min-height: var(--size-4-8);\n padding: var(--size-2-1) var(--size-4-2);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-s);\n background-color: var(--background-secondary);\n color: var(--text-muted);\n font-size: var(--font-ui-smaller);\n white-space: nowrap;\n cursor: pointer;\n}\n.obsidian-dev-utils.modal-command:hover:not(:disabled) {\n background-color: var(--background-modifier-hover);\n color: var(--text-normal);\n}\n.obsidian-dev-utils.modal-command.is-active {\n border-color: var(--interactive-accent);\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n.obsidian-dev-utils.modal-command:disabled {\n opacity: 0.5;\n cursor: default;\n}\n.obsidian-dev-utils.modal-command-hotkey {\n color: var(--text-faint);\n font-size: var(--font-smallest);\n}\n.modal-command.is-active .obsidian-dev-utils.modal-command-hotkey {\n opacity: 0.7;\n color: var(--text-on-accent);\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.plugin-notice-name {\n color: var(--text-accent);\n display: inline-block;\n font-weight: var(--font-bold);\n margin-bottom: var(--size-4-2);\n}\n.obsidian-dev-utils.plugin-notice-content {\n padding-right: var(--size-4-5);\n position: relative;\n}\n.obsidian-dev-utils.plugin-notice-content .obsidian-dev-utils.cancel-button {\n display: block;\n margin-top: var(--size-4-2);\n width: fit-content;\n}\n.obsidian-dev-utils.plugin-notice-content .obsidian-dev-utils.plugin-notice-close-button {\n position: absolute;\n right: var(--size-4-3);\n top: var(--size-4-3);\n}\n.obsidian-dev-utils.plugin-notice-requires-explicit-close.notice {\n padding: 0;\n}\n.obsidian-dev-utils.plugin-notice-requires-explicit-close.notice .obsidian-dev-utils.plugin-notice-content {\n padding: var(--size-4-3) var(--size-4-4);\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.plugin-suggestion-banner {\n background-color: var(--background-secondary);\n border-left: var(--size-2-1) solid var(--text-accent);\n border-radius: var(--radius-s);\n display: flex;\n flex-direction: column;\n gap: var(--size-4-2);\n margin-bottom: var(--size-4-4);\n padding: var(--size-4-3) var(--size-4-4);\n}\n.obsidian-dev-utils.plugin-suggestion-banner button {\n width: fit-content;\n}\n\n.obsidian-dev-utils.popover {\n max-width: min(420px, 90vw);\n min-width: 320px;\n padding: var(--size-4-2) var(--size-4-3);\n position: absolute;\n z-index: var(--layer-menu);\n}\n.obsidian-dev-utils.popover .setting-item {\n align-items: center;\n border-top: none;\n gap: var(--size-4-2);\n padding: var(--size-2-1) 0;\n}\n.obsidian-dev-utils.popover .setting-item-info {\n margin-right: 0;\n}\n.obsidian-dev-utils.popover .setting-item-control {\n flex-grow: 1;\n justify-content: flex-end;\n}\n.obsidian-dev-utils.popover input[type=text] {\n width: 100%;\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\nbody button:not(.clickable-icon) {\n color: var(--text-color);\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid:not(.untouched), .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid:not(.untouched), .obsidian-dev-utils input.metadata-input-text:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:focus:invalid:not(.untouched),\n.obsidian-dev-utils textarea:active:invalid:not(.untouched),\n.obsidian-dev-utils textarea:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils textarea:focus:invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/editor-lock.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/minimizable-modal.scss%22,%22../src/styles/modal-commands.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-notice.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/plugin-suggestion.scss%22,%22../src/styles/popover.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tldraw-button-color-workaround.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACvCN;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAMJ;EACE;IACE;IACA;;;AAIJ;EACE;;;ACvBA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;ACjDJ;EACE;;;ACFJ;EACE;IAEE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;;AAOA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AASN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOA;EACE;;AAOF;EACE;;AAGF;EACE;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;;;ACpGN;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;;AAMF;EACE;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAKF;EACE;EACA;;AAIJ;EACE;EACA;;AAGA;EACE;EACA;;;ACpEF;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACTN;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAKF;EACE;EACA;EACA;;AAOJ;EACE;;AAEA;EACE;;;AChCF;EACE;;;ACFJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;ACRJ;EAIE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AC9BF;EACE;;;ACON;EACE;;;ACTE;EACE;;;ACKJ;EAPA;;AAuBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAvBJ;;AA6BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20Lock%20indicators%20shown%20in%20the%20tab%20header%20and%20the%20status%20bar%20while%20a%20note%20is%20locked.%20These%20live%20in%5Cn//%20global%20Obsidian%20DOM%20(tab%20header%20/%20status%20bar),%20so%20they%20are%20styled%20with%20a%20global%20class%20rather%20than%5Cn//%20scoped%20under%20%60.obsidian-dev-utils%60.%5Cn.obsidian-dev-utils-lock-indicator%20%7B%5Cn%20%20display:%20inline-flex;%5Cn%20%20align-items:%20center;%5Cn%20%20color:%20var(--text-muted);%5Cn%5Cn%20%20.svg-icon%20%7B%5Cn%20%20%20%20width:%20var(--icon-s);%5Cn%20%20%20%20height:%20var(--icon-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn//%20Flashed%20on%20every%20lock%20indicator%20(tab%20header,%20view%20action,%20status%20bar)%20when%20the%20user%20attempts%20to%5Cn//%20type%20in%20a%20locked%20note,%20to%20make%20clear%20the%20note%20is%20read-only.%20Re-added%20per%20rejected%20keystroke.%5Cn@keyframes%20obsidian-dev-utils-lock-indicator-flash%20%7B%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20color:%20var(--text-error);%5Cn%20%20%20%20transform:%20scale(1.4);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-dev-utils-lock-indicator-flash%20%7B%5Cn%20%20animation:%20obsidian-dev-utils-lock-indicator-flash%200.35s%20ease-in-out;%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&progress.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@keyframes%20obsidian-dev-utils-minimized-modal-bar-pulse%20%7B%5Cn%20%200%25,%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%5Cn%20%2050%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%202px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn@keyframes%20obsidian-dev-utils-minimized-modal-bar-attention%20%7B%5Cn%20%200%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%200%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%204px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20//%20The%20minimize%20button%20lives%20inside%20the%20modal%20container,%20left%20of%20Obsidian's%20close%20button.%5Cn%20%20&.minimizable-modal%20%7B%5Cn%20%20%20%20.minimize-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20right:%20calc(var(--size-4-2)%20+%20var(--size-4-9));%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20The%20minimized%20bar%20is%20appended%20to%20document.body.%20It%20floats%20at%20the%20bottom-right%20while%20minimized,%5Cn%20%20//%20and%20gently%20pulses%20an%20accent%20ring%20so%20the%20user%20does%20not%20forget%20about%20the%20minimized%20operation.%5Cn%20%20//%20It%20floats%20a%20status-bar's%20height%20above%20the%20bottom%20edge%20so%20it%20never%20covers%20the%20bottom-right%5Cn%20%20//%20status-bar%20items%20(e.g.%20the%20editor-lock%20unlock%20indicator,%20which%20lives%20in%20the%20same%20corner).%5Cn%20%20&.minimized-modal-bar%20%7B%5Cn%20%20%20%20position:%20fixed;%5Cn%20%20%20%20right:%20var(--size-4-4);%5Cn%20%20%20%20bottom:%20calc(var(--size-4-4)%20+%20var(--size-4-8));%5Cn%20%20%20%20z-index:%20var(--layer-modal);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20align-items:%20center;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-m);%5Cn%20%20%20%20background:%20var(--background-secondary);%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20animation:%20obsidian-dev-utils-minimized-modal-bar-pulse%202s%20ease-in-out%20infinite;%5Cn%5Cn%20%20%20%20//%20Layer%20the%20translucent%20hover%20tint%20over%20the%20opaque%20%60background%60%20(%60--background-secondary%60)%20via%5Cn%20%20%20%20//%20%60background-image%60%20instead%20of%20replacing%20the%20background-color.%20%60--background-modifier-hover%60%20is%5Cn%20%20%20%20//%20translucent,%20so%20setting%20it%20as%20%60background%60%20would%20let%20the%20editor%20content%20behind%20the%20floating%20bar%5Cn%20%20%20%20//%20bleed%20through%20and%20make%20the%20title%20unreadable.%20A%20gradient%20of%20the%20tint%20composited%20over%20the%20opaque%5Cn%20%20%20%20//%20base%20keeps%20the%20bar%20opaque%20while%20preserving%20the%20subtle%20hover%20highlight.%5Cn%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20background-image:%20linear-gradient(var(--background-modifier-hover),%20var(--background-modifier-hover));%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20one-shot,%20more%20pronounced%20flash%20played%20when%20the%20user%20attempts%20a%20blocked%20action%20(a%20keystroke,%5Cn%20%20%20%20//%20right-click,%20or%20opening%20another%20modal)%20while%20this%20modal%20is%20minimized,%20so%20the%20block%20is%20not%5Cn%20%20%20%20//%20silent.%20Its%20higher%20specificity%20overrides%20the%20gentle%20infinite%20idle%20pulse%20while%20it%20plays;%20the%5Cn%20%20%20%20//%20class%20is%20removed%20on%20%60animationend%60,%20restoring%20the%20idle%20pulse.%5Cn%20%20%20%20&.minimized-modal-bar-attention%20%7B%5Cn%20%20%20%20%20%20animation:%20obsidian-dev-utils-minimized-modal-bar-attention%200.35s%20ease-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.minimized-modal-bar-title%20%7B%5Cn%20%20%20%20%20%20font-weight:%20var(--font-medium);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.restore-button,%5Cn%20%20%20%20.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20//%20The%20strip%20of%20commands%20along%20the%20bottom%20of%20a%20modal.%5Cn%20%20//%5Cn%20%20//%20In%20%60Instructions%60%20render%20mode%20it%20also%20carries%20Obsidian's%20own%20%60.prompt-instructions%60%20%E2%80%94%20whose%20rule%20is%5Cn%20%20//%20unscoped,%20so%20it%20applies%20to%20a%20plain%20%60Modal%60%20too%20%E2%80%94%20and%20this%20one%20only%20re-tunes%20that%20rule's%20%60gap%60%20and%5Cn%20%20//%20%60padding%60%20and%20adds%20the%20separator;%20in%20%60Buttons%60%20mode%20it%20is%20the%20whole%20strip.%5Cn%20%20&.modal-commands%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border-top:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%7D%5Cn%5Cn%20%20//%20A%20control%20the%20%60Instructions%60%20renderer%20injects%20into%20an%20instruction's%20purpose%20text%20%E2%80%94%20a%20checkbox,%20a%5Cn%20%20//%20dropdown.%20Obsidian%20styles%20the%20instruction%20bar%20itself,%20but%20its%20own%20bar%20never%20contains%20a%20control,%20so%5Cn%20%20//%20nothing%20upstream%20separates%20one%20from%20the%20label%20it%20belongs%20to.%20Sits%20on%20the%20control%20rather%20than%20on%20the%5Cn%20%20//%20strip,%20so%20it%20reaches%20a%20%60SuggestModal%60's%20native%20bar%20as%20well%20as%20a%20self-created%20one.%5Cn%20%20&.modal-command-control%20%7B%5Cn%20%20%20%20margin-inline-start:%20var(--size-2-2);%5Cn%20%20%20%20vertical-align:%20middle;%5Cn%20%20%7D%5Cn%5Cn%20%20//%20One%20command%20button.%20Replaces%20the%20instruction%20bar%20rather%20than%20supplementing%20it:%20the%20bar%20can%20only%20ever%5Cn%20%20//%20say%20which%20key%20to%20press,%20and%20on%20a%20phone%20there%20is%20no%20modifier%20key%20to%20press,%20so%20every%20control%20it%20names%5Cn%20%20//%20is%20unreachable%20there.%5Cn%20%20&.modal-command%20%7B%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%20%20align-items:%20baseline;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%5Cn%20%20%20%20//%20Comfortably%20tappable%20on%20a%20phone,%20where%20this%20strip%20is%20the%20only%20way%20in.%5Cn%20%20%20%20min-height:%20var(--size-4-8);%5Cn%20%20%20%20padding:%20var(--size-2-1)%20var(--size-4-2);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20color:%20var(--text-muted);%5Cn%20%20%20%20font-size:%20var(--font-ui-smaller);%5Cn%20%20%20%20white-space:%20nowrap;%5Cn%20%20%20%20cursor:%20pointer;%5Cn%5Cn%20%20%20%20&:hover:not(:disabled)%20%7B%5Cn%20%20%20%20%20%20background-color:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20toggle%20that%20is%20ON.%20An%20action%20never%20carries%20it%20%E2%80%94%20it%20does%20something%20and%20is%20done,%20so%20there%20is%20no%5Cn%20%20%20%20//%20state%20for%20it%20to%20show.%5Cn%20%20%20%20&.is-active%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20Disabled%20rather%20than%20removed:%20a%20strip%20that%20lost%20buttons%20as%20modes%20change%20would%20reflow%20under%20the%5Cn%20%20%20%20//%20pointer,%20which%20on%20a%20phone%20means%20a%20mis-tap.%5Cn%20%20%20%20&:disabled%20%7B%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%20%20cursor:%20default;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.modal-command-hotkey%20%7B%5Cn%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20font-size:%20var(--font-smallest);%5Cn%5Cn%20%20%20%20//%20Faint%20against%20the%20surface%20is%20right;%20faint%20against%20the%20accent%20fill%20is%20invisible.%5Cn%20%20%20%20.modal-command.is-active%20&%20%7B%5Cn%20%20%20%20%20%20opacity:%200.7;%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-notice-name%20%7B%5Cn%20%20%20%20color:%20var(--text-accent);%5Cn%20%20%20%20display:%20inline-block;%5Cn%20%20%20%20font-weight:%20var(--font-bold);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-2);%5Cn%20%20%7D%5Cn%5Cn%20%20&.plugin-notice-content%20%7B%5Cn%20%20%20%20padding-right:%20var(--size-4-5);%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20.obsidian-dev-utils.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20The%20close%20button%20reuses%20Obsidian's%20%60modal-header-button%60%20+%20%60clickable-icon%60%20classes%20so%20it%20matches%5Cn%20%20%20%20//%20The%20native%20modal%20close%20button%20(box%20+%20hover);%20only%20its%20corner%20position%20is%20set%20here.%5Cn%20%20%20%20.obsidian-dev-utils.plugin-notice-close-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20right:%20var(--size-4-3);%5Cn%20%20%20%20%20%20top:%20var(--size-4-3);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20Move%20the%20notice's%20own%20padding%20onto%20the%20content%20wrapper%20so%20the%20wrapper%20covers%20the%20whole%20clickable%5Cn%20%20//%20Area%20%E2%80%94%20otherwise%20a%20click%20landing%20on%20the%20notice's%20bare%20padding%20(outside%20the%20wrapper)%20would%20bypass%20the%5Cn%20%20//%20Stop-propagation%20guard%20and%20dismiss%20the%20hard-to-close%20notice.%5Cn%20%20&.plugin-notice-requires-explicit-close.notice%20%7B%5Cn%20%20%20%20padding:%200;%5Cn%5Cn%20%20%20%20.obsidian-dev-utils.plugin-notice-content%20%7B%5Cn%20%20%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-suggestion-banner%20%7B%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20border-left:%20var(--size-2-1)%20solid%20var(--text-accent);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-direction:%20column;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-4);%5Cn%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%5Cn%20%20%20%20button%20%7B%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20A%20popover%20is%20anchored%20at%20a%20point%20and%20appended%20to%20the%20document%20body,%20outside%20any%20plugin-scoped%5Cn//%20container,%20so%20it%20is%20positioned%20absolutely%20at%20the%20top%20level.%20It%20borrows%20Obsidian's%20%60.menu%60%20look,%5Cn//%20which%20already%20carries%20the%20popup%20background,%20border%20and%20shadow%20%E2%80%94%20only%20layout%20is%20set%20here.%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20&.popover%20%7B%5Cn%20%20%20%20//%20Deliberately%20not%20%60calc(100vw%20-%2016px)%60:%20the%20SCSS%20compiler%20strips%20the%20%60calc(%60%20wrapper%20inside%5Cn%20%20%20%20//%20%60min()%60,%20which%20yields%20invalid%20CSS.%20A%20viewport%20percentage%20keeps%20a%20narrow%20window's%20popover%20on%5Cn%20%20%20%20//%20screen.%5Cn%20%20%20%20max-width:%20min(420px,%2090vw);%5Cn%20%20%20%20min-width:%20320px;%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20z-index:%20var(--layer-menu);%5Cn%5Cn%20%20%20%20//%20Setting%20rows%20are%20built%20for%20a%20full-width%20settings%20tab;%20compact%20them%20for%20a%20popover.%5Cn%20%20%20%20.setting-item%20%7B%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20border-top:%20none;%5Cn%20%20%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20%20%20padding:%20var(--size-2-1)%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-info%20%7B%5Cn%20%20%20%20%20%20margin-right:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-control%20%7B%5Cn%20%20%20%20%20%20flex-grow:%201;%5Cn%20%20%20%20%20%20justify-content:%20flex-end;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20input%5Btype='text'%5D%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20The%20tldraw%20Obsidian%20plugin%20(tldraw/obsidian-plugin)%20ships%20an%20unscoped%20global%20rule%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20currentColor%20%7D%60%20that%20overrides%20Obsidian's%20own%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20var(--text-color)%20%7D%60%20app-wide.%20Obsidian%20sets%5Cn//%20%60--text-color%60%20contextually%20per%20button%20variant%20(%60--text-normal%60%20by%20default,%5Cn//%20%60--text-on-accent%60%20for%20%60.mod-cta%60,%20%60--text-error%60%20for%20%60.mod-warning%60),%20so%20tldraw's%5Cn//%20%60currentColor%60%20discards%20that%20and%20breaks%20button%20contrast%20outside%20tldraw%20%E2%80%94%20e.g.%5Cn//%20White-on-white%20action%20buttons%20inside%20a%20Notice.%20Re-assert%20Obsidian's%20own%20value%20with%20a%5Cn//%20%60body%60-prefixed%20selector%20(specificity%200,1,2)%20so%20it%20wins%20over%20tldraw's%20(0,1,1)%20while%5Cn//%20Staying%20correct%20for%20every%20button%20variant%20(it%20reuses%20the%20same%20contextual%20%60--text-color%60).%5Cn//%20Defensive%20workaround%20%E2%80%94%20remove%20once%20the%20upstream%20fix%20ships%20(tldraw/obsidian-plugin%23210).%5Cnbody%20button:not(.clickable-icon)%20%7B%5Cn%20%20color:%20var(--text-color);%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn//%20An%20input%20the%20user%20has%20not%20interacted%20with%20yet%20carries%20%60.untouched%60%20(set%20by%20%60PromptModal%60),%20so%20a%20modal%20that%5Cn//%20opens%20invalid%20by%20design%20does%20not%20greet%20the%20user%20in%20red.%20Both%20blocks%20below%20must%20be%20gated:%20the%20input%20is%5Cn//%20focused%20on%20open,%20so%20the%20focus%20block%20alone%20would%20keep%20painting%20it.%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
|
|
151
151
|
// Annotate the CommonJS export names for ESM import in node:
|
|
152
152
|
0 && (module.exports = {
|
|
@@ -182,4 +182,4 @@ function parseDemoVaultAppJson(params) {
|
|
|
182
182
|
findOwnedDemoVaultAppJsonSettings,
|
|
183
183
|
parseDemoVaultAppJson
|
|
184
184
|
});
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9kZW1vLXZhdWx0LWFwcC1qc29uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIGAub2JzaWRpYW4vYXBwLmpzb25gIHNldHRpbmdzIGBvYnNpZGlhbi1kZXYtdXRpbHNgIG93bnMgaW4gZXZlcnkgZGVtbyB2YXVsdC5cbiAqXG4gKiBBIGRlbW8gdmF1bHQgaXMgZG9jdW1lbnRhdGlvbiBmaXJzdCBhbmQgYW4gZWRpdGluZyBzdXJmYWNlIHNlY29uZCwgc28gZm91ciBPYnNpZGlhbiBzZXR0aW5ncyBoYXZlIHRvIGJlXG4gKiB0aGUgc2FtZSBpbiBldmVyeSBvbmUgb2YgdGhlbS4gVGhleSBhcmUgKipub3QqKiBjb21taXR0ZWQ6IGEgdmF1bHQgdGhhdCB3cm90ZSB0aGVtIGl0c2VsZiB3b3VsZCBkcmlmdFxuICogKG1lYXN1cmVkIDIwMjYtMDgtMTMsIG9ubHkgMyBvZiAyMyB2YXVsdHMgaGFkIHRoZSBmaXJzdCBwYWlyIGFuZCAxIG9mIDIzIHRoZSBzZWNvbmQpLCBzbyB0aGlzIHBhY2thZ2VcbiAqIG93bnMgdGhlbSBpbnN0ZWFkIFx1MjAxNCB7QGxpbmsgYXJjaGl2ZVBsdWdpbkRlbW9WYXVsdH0gbWVyZ2VzIHRoZW0gaW50byB0aGUgYGFwcC5qc29uYCBvZiB0aGUgYXJjaGl2ZWQgY29weVxuICogYXQgcmVsZWFzZSB0aW1lLCBhbmQgdGhlIGRlbW8tdmF1bHQgY292ZXJhZ2Ugc3VpdGUgZmFpbHMgYSB2YXVsdCB0aGF0IGNvbW1pdHMgYW55IG9mIHRoZW0uXG4gKlxuICogLSBgZGVmYXVsdFZpZXdNb2RlOiAncHJldmlldydgICsgYGxpdmVQcmV2aWV3OiBmYWxzZWAgXHUyMDE0IGEgbm90ZSBvcGVucyBhcyBhIHJlYWRlciBzZWVzIGl0IHJhdGhlciB0aGFuIGFzXG4gKiAgIHJhdyBtYXJrdXAuIE9ic2lkaWFuLW9ubHk6IEdpdEh1YiBuZXZlciByZWFkcyBgYXBwLmpzb25gIGFuZCByZW5kZXJzIGV2ZXJ5IG5vdGUgYXMgSFRNTCByZWdhcmRsZXNzLlxuICogLSBgdXNlTWFya2Rvd25MaW5rczogdHJ1ZWAgKyBgbmV3TGlua0Zvcm1hdDogJ3JlbGF0aXZlJ2AgXHUyMDE0IHdoYXQgT2JzaWRpYW4gd3JpdGVzIHdoZW4gYSBsaW5rIGlzIGNyZWF0ZWRcbiAqICAgaW5zaWRlIHRoZSB2YXVsdC4gTGVmdCBhdCBPYnNpZGlhbidzIGRlZmF1bHRzIChgZmFsc2VgIC8gYCdzaG9ydGVzdCdgKSBldmVyeSBuZXcgbGluayBjb21lcyBvdXQgYXMgYVxuICogICBzaG9ydGVzdC1wYXRoIGBbW3dpa2lsaW5rXV1gLCB0aGUgZm9ybSB0aGUgY292ZXJhZ2Ugc3VpdGUgcmVqZWN0cyBhbmQgR2l0SHViIHJlbmRlcnMgYXMgbGl0ZXJhbFxuICogICBicmFja2V0cy4gYHJlbGF0aXZlYCByYXRoZXIgdGhhbiBgYWJzb2x1dGVgIHNvIG5vdGVzIGtlZXAgcmVzb2x2aW5nIG9uY2UgdGhlIHZhdWx0IGlzIGV4dHJhY3RlZCB0byBhblxuICogICBhcmJpdHJhcnkgZm9sZGVyLlxuICpcbiAqIEFsbCBmb3VyIGFyZSB3cml0dGVuIGV4cGxpY2l0bHksIG5ldmVyIGxlZnQgdG8gYW4gT2JzaWRpYW4gZGVmYXVsdDogYSB2YXVsdCBsZWFuaW5nIG9uIGEgZGVmYXVsdCBjaGFuZ2VzXG4gKiBiZWhhdmlvciB3aGVuIHRoYXQgZGVmYXVsdCBkb2VzLlxuICpcbiAqIEtlcHQgZnJlZSBvZiBib3RoIGB2aXRlc3RgIGFuZCBgZmZsYXRlYCBvbiBwdXJwb3NlIFx1MjAxNCB0aGUgY292ZXJhZ2Ugc3VpdGUgcHVsbHMgaW4gdGhlIGZvcm1lciBhbmQgdGhlXG4gKiBhcmNoaXZlciB0aGUgbGF0dGVyLCBhbmQgbmVpdGhlciBtYXkgcmVhY2ggdGhlIG90aGVyJ3MgZW52aXJvbm1lbnQuXG4gKi9cblxuaW1wb3J0IHsgdG9Kc29uIH0gZnJvbSAnLi4vb2JqZWN0LXV0aWxzLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGRBcmNoaXZlZERlbW9WYXVsdEFwcEpzb25Db250ZW50fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZEFyY2hpdmVkRGVtb1ZhdWx0QXBwSnNvbkNvbnRlbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGRlbW8gdmF1bHQncyBjb21taXR0ZWQgYGFwcC5qc29uYCwgcGFyc2VkIGJ5IHtAbGluayBwYXJzZURlbW9WYXVsdEFwcEpzb259LlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSnNvbjogRGVtb1ZhdWx0QXBwSnNvbjtcbn1cblxuLyoqXG4gKiBBIHBhcnNlZCBgLm9ic2lkaWFuL2FwcC5qc29uYC4gT25seSB0aGUgc2V0dGluZ3MgaW4ge0BsaW5rIERFTU9fVkFVTFRfQVBQX0pTT05fU0VUVElOR1N9IGFyZSBpbnRlcnByZXRlZDtcbiAqIGV2ZXJ5IG90aGVyIHNldHRpbmcgaXMgY2FycmllZCB0aHJvdWdoIHVudG91Y2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgRGVtb1ZhdWx0QXBwSnNvbiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kT3duZWREZW1vVmF1bHRBcHBKc29uU2V0dGluZ3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbmRPd25lZERlbW9WYXVsdEFwcEpzb25TZXR0aW5nc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZGVtbyB2YXVsdCdzIGNvbW1pdHRlZCBgYXBwLmpzb25gLCBwYXJzZWQgYnkge0BsaW5rIHBhcnNlRGVtb1ZhdWx0QXBwSnNvbn0uXG4gICAqL1xuICByZWFkb25seSBhcHBKc29uOiBEZW1vVmF1bHRBcHBKc29uO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBwYXJzZURlbW9WYXVsdEFwcEpzb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlRGVtb1ZhdWx0QXBwSnNvblBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgcmF3IGZpbGUgY29udGVudCwgb3IgYG51bGxgIHdoZW4gdGhlIHZhdWx0IGNvbW1pdHMgbm8gYGFwcC5qc29uYCBhdCBhbGwgXHUyMDE0IHdoaWNoIGlzIHRoZSBleHBlY3RlZFxuICAgKiBzdGF0ZSBmb3IgYSB2YXVsdCB0aGF0IGhhcyBub3RoaW5nIGVsc2UgdG8gY29uZmlndXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogbnVsbCB8IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdGhlIGNvbnRlbnQgd2FzIHJlYWQgZnJvbSwgbmFtZWQgaW4gdGhlIGVycm9yIHdoZW4gaXQgZG9lcyBub3QgcGFyc2UuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGAub2JzaWRpYW4vYXBwLmpzb25gIHNldHRpbmdzIHRoaXMgcGFja2FnZSB3cml0ZXMgaW50byBldmVyeSBhcmNoaXZlZCBkZW1vIHZhdWx0LCBhbmQgdGhhdCBhIGRlbW9cbiAqIHZhdWx0IG11c3QgdGhlcmVmb3JlIG5ldmVyIGNvbW1pdC4gU2VlIHRoZSBmaWxlIG92ZXJ2aWV3IGZvciB3aGF0IGVhY2ggb25lIGJ1eXMuXG4gKi9cbmV4cG9ydCBjb25zdCBERU1PX1ZBVUxUX0FQUF9KU09OX1NFVFRJTkdTOiBEZW1vVmF1bHRBcHBKc29uID0ge1xuICBkZWZhdWx0Vmlld01vZGU6ICdwcmV2aWV3JyxcbiAgbGl2ZVByZXZpZXc6IGZhbHNlLFxuICBuZXdMaW5rRm9ybWF0OiAncmVsYXRpdmUnLFxuICB1c2VNYXJrZG93bkxpbmtzOiB0cnVlXG59O1xuXG4vKipcbiAqIEJ1aWxkcyB0aGUgYGFwcC5qc29uYCBjb250ZW50IGZvciB0aGUgYXJjaGl2ZWQgY29weSBvZiBhIGRlbW8gdmF1bHQ6IHRoZSBjb21taXR0ZWQgc2V0dGluZ3Mgd2l0aCB0aGVcbiAqIG93bmVkIG9uZXMgbWVyZ2VkIG92ZXIgdGhlbS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZC5cbiAqIEByZXR1cm5zIFRoZSBKU09OIHRleHQgdG8gc3RvcmUgYXMgdGhlIGFyY2hpdmUncyBgLm9ic2lkaWFuL2FwcC5qc29uYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQXJjaGl2ZWREZW1vVmF1bHRBcHBKc29uQ29udGVudChwYXJhbXM6IEJ1aWxkQXJjaGl2ZWREZW1vVmF1bHRBcHBKc29uQ29udGVudFBhcmFtcyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtcbiAgICB0b0pzb24oe1xuICAgICAgLi4ucGFyYW1zLmFwcEpzb24sXG4gICAgICAuLi5ERU1PX1ZBVUxUX0FQUF9KU09OX1NFVFRJTkdTXG4gICAgfSlcbiAgfVxcbmA7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIG93bmVkIHNldHRpbmdzIGEgZGVtbyB2YXVsdCBoYXMgY29tbWl0dGVkLiBUaGV5IGJlbG9uZyB0byB0aGlzIHBhY2thZ2UsIHdoaWNoIGluamVjdHMgdGhlbSBhdFxuICogcmVsZWFzZSB0aW1lLCBzbyBhIGNvbW1pdHRlZCBvbmUgaXMgZHJpZnQgd2FpdGluZyB0byBoYXBwZW4gcmF0aGVyIHRoYW4gYSBsb2NhbCBwcmVmZXJlbmNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGxvb2t1cC5cbiAqIEByZXR1cm5zIFRoZSBuYW1lcyBvZiB0aGUgb3duZWQgc2V0dGluZ3MgcHJlc2VudCBpbiB0aGUgY29tbWl0dGVkIGBhcHAuanNvbmAsIGluIHRoZSBvcmRlciB0aGV5IGFyZVxuICogZGVjbGFyZWQgaW4ge0BsaW5rIERFTU9fVkFVTFRfQVBQX0pTT05fU0VUVElOR1N9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE93bmVkRGVtb1ZhdWx0QXBwSnNvblNldHRpbmdzKHBhcmFtczogRmluZE93bmVkRGVtb1ZhdWx0QXBwSnNvblNldHRpbmdzUGFyYW1zKTogc3RyaW5nW10ge1xuICByZXR1cm4gT2JqZWN0LmtleXMoREVNT19WQVVMVF9BUFBfSlNPTl9TRVRUSU5HUykuZmlsdGVyKChzZXR0aW5nKSA9PiBPYmplY3QuaGFzT3duKHBhcmFtcy5hcHBKc29uLCBzZXR0aW5nKSk7XG59XG5cbi8qKlxuICogUGFyc2VzIGEgZGVtbyB2YXVsdCdzIGNvbW1pdHRlZCBgYXBwLmpzb25gLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHBhcnNlLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBzZXR0aW5ncywgb3IgYW4gZW1wdHkgb2JqZWN0IHdoZW4gdGhlIHZhdWx0IGNvbW1pdHMgbm8gYGFwcC5qc29uYC5cbiAqIEB0aHJvd3MgV2hlbiB0aGUgY29udGVudCBpcyBub3QgdmFsaWQgSlNPTiwgbmFtaW5nIHRoZSBmaWxlIGl0IGNhbWUgZnJvbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGVtb1ZhdWx0QXBwSnNvbihwYXJhbXM6IFBhcnNlRGVtb1ZhdWx0QXBwSnNvblBhcmFtcyk6IERlbW9WYXVsdEFwcEpzb24ge1xuICBpZiAocGFyYW1zLmNvbnRlbnQgPT09IG51bGwpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHBhcmFtcy5jb250ZW50KSBhcyBEZW1vVmF1bHRBcHBKc29uO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHBhcnNlICR7cGFyYW1zLnBhdGh9LmAsIHsgY2F1c2U6IGVycm9yIH0pO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBCQSwwQkFBdUI7QUFnRGhCLE1BQU0sK0JBQWlEO0FBQUEsRUFDNUQsaUJBQWlCO0FBQUEsRUFDakIsYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2Ysa0JBQWtCO0FBQ3BCO0FBU08sU0FBUyxxQ0FBcUMsUUFBNEQ7QUFDL0csU0FBTyxPQUNMLDRCQUFPO0FBQUEsSUFDTCxHQUFHLE9BQU87QUFBQSxJQUNWLEdBQUc7QUFBQSxFQUNMLENBQUMsQ0FDSDtBQUFBO0FBQ0Y7QUFVTyxTQUFTLGtDQUFrQyxRQUEyRDtBQUMzRyxTQUFPLE9BQU8sS0FBSyw0QkFBNEIsRUFBRSxPQUFPLENBQUMsWUFBWSxPQUFPLE9BQU8sT0FBTyxTQUFTLE9BQU8sQ0FBQztBQUM3RztBQVNPLFNBQVMsc0JBQXNCLFFBQXVEO0FBQzNGLE1BQUksT0FBTyxZQUFZLE1BQU07QUFDM0IsV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUVBLE1BQUk7QUFDRixXQUFPLEtBQUssTUFBTSxPQUFPLE9BQU87QUFBQSxFQUNsQyxTQUFTLE9BQU87QUFDZCxVQUFNLElBQUksTUFBTSxtQkFBbUIsT0FBTyxJQUFJLEtBQUssRUFBRSxPQUFPLE1BQU0sQ0FBQztBQUFBLEVBQ3JFO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* All four are written explicitly, never left to an Obsidian default: a vault leaning on a default changes
|
|
22
22
|
* behavior when that default does.
|
|
23
23
|
*
|
|
24
|
-
* Kept free of both `vitest` and `
|
|
24
|
+
* Kept free of both `vitest` and `fflate` on purpose — the coverage suite pulls in the former and the
|
|
25
25
|
* archiver the latter, and neither may reach the other's environment.
|
|
26
26
|
*/
|
|
27
27
|
/**
|
|
@@ -123,11 +123,9 @@ function keepName($unknown) {
|
|
|
123
123
|
})();
|
|
124
124
|
|
|
125
125
|
"use strict";
|
|
126
|
-
var __create = Object.create;
|
|
127
126
|
var __defProp = Object.defineProperty;
|
|
128
127
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
129
128
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
130
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
131
129
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
132
130
|
var __export = (target, all) => {
|
|
133
131
|
for (var name in all)
|
|
@@ -141,27 +139,20 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
141
139
|
}
|
|
142
140
|
return to;
|
|
143
141
|
};
|
|
144
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
145
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
146
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
147
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
148
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
149
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
150
|
-
mod
|
|
151
|
-
));
|
|
152
142
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
153
143
|
var demo_vault_exports = {};
|
|
154
144
|
__export(demo_vault_exports, {
|
|
155
145
|
archivePluginDemoVault: () => archivePluginDemoVault
|
|
156
146
|
});
|
|
157
147
|
module.exports = __toCommonJS(demo_vault_exports);
|
|
158
|
-
var
|
|
148
|
+
var import_fflate = require('fflate');
|
|
159
149
|
var import_node_fs = require('node:fs');
|
|
160
150
|
var import_promises = require('node:fs/promises');
|
|
161
151
|
var import_demo_vault_naming = require('../obsidian/demo-vault-naming.cjs');
|
|
162
152
|
var import_obsidian_plugin_repo_paths = require('../obsidian/plugin/obsidian-plugin-repo-paths.cjs');
|
|
163
153
|
var import_path = require('../path.cjs');
|
|
164
154
|
var import_demo_vault_app_json = require('./demo-vault-app-json.cjs');
|
|
155
|
+
var import_fs = require('./fs.cjs');
|
|
165
156
|
var import_obsidian_dev_utils_repo_paths = require('./obsidian-dev-utils-repo-paths.cjs');
|
|
166
157
|
var import_root = require('./root.cjs');
|
|
167
158
|
var __import_meta_url = globalThis["import.meta.url"] ?? (() => {
|
|
@@ -208,22 +199,31 @@ async function archivePluginDemoVault() {
|
|
|
208
199
|
pluginId: manifest.id,
|
|
209
200
|
version: manifest.version
|
|
210
201
|
});
|
|
211
|
-
const
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
202
|
+
const entries = await readDemoVaultEntries({
|
|
203
|
+
demoVaultPath,
|
|
204
|
+
rootFolderName
|
|
205
|
+
});
|
|
206
|
+
injectAppJson({
|
|
207
|
+
appJson: await readCommittedAppJson(),
|
|
208
|
+
entries,
|
|
209
|
+
rootFolderName
|
|
210
|
+
});
|
|
211
|
+
injectReadmeVersion({
|
|
212
|
+
entries,
|
|
213
|
+
rootFolderName,
|
|
214
|
+
version: manifest.version
|
|
215
|
+
});
|
|
216
|
+
await (0, import_promises.writeFile)(zipPath, (0, import_fflate.zipSync)(Object.fromEntries(entries)));
|
|
216
217
|
return zipPath;
|
|
217
218
|
}
|
|
218
|
-
function injectAppJson(
|
|
219
|
+
function injectAppJson(params) {
|
|
220
|
+
const {
|
|
221
|
+
appJson,
|
|
222
|
+
entries,
|
|
223
|
+
rootFolderName
|
|
224
|
+
} = params;
|
|
219
225
|
const entryName = (0, import_path.join)(rootFolderName, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DotObsidian, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.AppJson);
|
|
220
|
-
|
|
221
|
-
const entry = zip.getEntry(entryName);
|
|
222
|
-
if (entry) {
|
|
223
|
-
zip.updateFile(entry, content);
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
zip.addFile(entryName, content);
|
|
226
|
+
entries.set(entryName, Buffer.from((0, import_demo_vault_app_json.buildArchivedDemoVaultAppJsonContent)({ appJson }), "utf-8"));
|
|
227
227
|
}
|
|
228
228
|
async function injectDemoVaultHelper(demoedPluginId) {
|
|
229
229
|
const packageFolder = (0, import_root.getRootFolder)((0, import_path.getFolderName)(__import_meta_url));
|
|
@@ -245,17 +245,23 @@ async function injectDemoVaultHelper(demoedPluginId) {
|
|
|
245
245
|
await (0, import_promises.writeFile)((0, import_path.join)(helperFolder, DATA_JSON_FILE_NAME), `${JSON.stringify(settings, null, DATA_JSON_INDENT)}
|
|
246
246
|
`, "utf-8");
|
|
247
247
|
}
|
|
248
|
-
function injectReadmeVersion(
|
|
249
|
-
const
|
|
248
|
+
function injectReadmeVersion(params) {
|
|
249
|
+
const {
|
|
250
|
+
entries,
|
|
251
|
+
rootFolderName,
|
|
252
|
+
version
|
|
253
|
+
} = params;
|
|
254
|
+
const entryName = (0, import_path.join)(rootFolderName, README_FILE_NAME);
|
|
255
|
+
const entry = entries.get(entryName);
|
|
250
256
|
if (!entry) {
|
|
251
257
|
return;
|
|
252
258
|
}
|
|
253
|
-
const content = entry.
|
|
259
|
+
const content = entry.toString("utf-8");
|
|
254
260
|
const versionedContent = content.replace(OPENING_HEADING_REG_EXP, (heading) => `${heading} v${version}`);
|
|
255
261
|
if (versionedContent === content) {
|
|
256
262
|
return;
|
|
257
263
|
}
|
|
258
|
-
|
|
264
|
+
entries.set(entryName, Buffer.from(versionedContent, "utf-8"));
|
|
259
265
|
}
|
|
260
266
|
async function readCommittedAppJson() {
|
|
261
267
|
const appJsonPath = (0, import_root.resolvePathFromRootSafe)({
|
|
@@ -271,8 +277,23 @@ async function readCommittedAppJson() {
|
|
|
271
277
|
}
|
|
272
278
|
return appJson;
|
|
273
279
|
}
|
|
280
|
+
async function readDemoVaultEntries(params) {
|
|
281
|
+
const {
|
|
282
|
+
demoVaultPath,
|
|
283
|
+
rootFolderName
|
|
284
|
+
} = params;
|
|
285
|
+
const entries = /* @__PURE__ */ new Map();
|
|
286
|
+
for (const dirent of await (0, import_fs.readdirPosix)(demoVaultPath, { recursive: true, withFileTypes: true })) {
|
|
287
|
+
if (!dirent.isFile()) {
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
const path = (0, import_path.join)(dirent.parentPath, dirent.name);
|
|
291
|
+
entries.set((0, import_path.join)(rootFolderName, (0, import_path.relative)(demoVaultPath, path)), await (0, import_promises.readFile)(path));
|
|
292
|
+
}
|
|
293
|
+
return entries;
|
|
294
|
+
}
|
|
274
295
|
// Annotate the CommonJS export names for ESM import in node:
|
|
275
296
|
0 && (module.exports = {
|
|
276
297
|
archivePluginDemoVault
|
|
277
298
|
});
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9kZW1vLXZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzWydpbXBvcnQubWV0YS51cmwnXSA/PyAoKCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBfX2ZpbGVuYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBsb2NhbFJlcXVpcmUgPSByZXF1aXJlO1xuICAgICAgICBjb25zdCB1cmwgPSBsb2NhbFJlcXVpcmUoJ25vZGU6dXJsJyk7XG4gICAgICAgIGlmICh0eXBlb2YgdXJsLnBhdGhUb0ZpbGVVUkwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gdXJsLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSkuaHJlZjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGFjdGl2ZVdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgfVxuXG4gICAgICAvLyBGYWxsYmFjayB0byBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGVudmlyb25tZW50IGlzIHVua25vd25cbiAgICAgIHJldHVybiAnJztcbiAgICB9KSgpO1xuLyoqXG4gKiBAZmlsZVxuICpcbiAqIEFyY2hpdmVzIGEgcGx1Z2luJ3MgZGVtbyB2YXVsdCBhcyBhIHJlbGVhc2UgYXJ0aWZhY3QuXG4gKlxuICogQSBwbHVnaW4gY2FuIHNoaXAgYSBjdXJhdGVkIGRlbW8gdmF1bHQgYXQgYGRlbW8tdmF1bHQvYCBpbiBpdHMgcmVwbyByb290LiBBdCByZWxlYXNlIHRpbWUgdGhpc1xuICogbW9kdWxlIGluc3RhbGxzIHRoZSBmcmVzaGx5IGJ1aWx0IHBsdWdpbiBpbnRvIHRoYXQgdmF1bHQncyBgLm9ic2lkaWFuL3BsdWdpbnMvPGlkPi9gIGZvbGRlciBhbmRcbiAqIHppcHMgdGhlIHdob2xlIHZhdWx0IGludG8gYGRpc3QvYnVpbGQvPHBsdWdpbi1pZD4tZGVtby12YXVsdC56aXBgLCBzbyB0aGUgZXhpc3RpbmcgR2l0SHViLXJlbGVhc2VcbiAqIHN0ZXAgKHdoaWNoIHVwbG9hZHMgZXZlcnkgZmlsZSBpbiBgZGlzdC9idWlsZC9gKSBhdHRhY2hlcyBpdCBhdXRvbWF0aWNhbGx5LlxuICpcbiAqIFRoZSB2ZXJzaW9uIGlzIGRlbGliZXJhdGVseSBhYnNlbnQgZnJvbSB0aGF0IG5hbWUgYW5kIGxpdmVzIElOU0lERSB0aGUgYXJjaGl2ZSBpbnN0ZWFkIFx1MjAxNCBzZWVcbiAqIGBvYnNpZGlhbi9kZW1vLXZhdWx0LW5hbWluZy50c2AgZm9yIHdoeSBcdTIwMTQgaW4gdGhlIHR3byBwbGFjZXMgYSBwZXJzb24gYWN0dWFsbHkgbWVldHMgaXQ6IHRoZSB2YXVsdFxuICogc2l0cyB1bmRlciBhIHNpbmdsZSBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj4vYCBmb2xkZXIsIHNvIHVuemlwcGluZyBzZXZlcmFsIHJlbGVhc2VzIGJ5IGhhbmRcbiAqIGludG8gb25lIGZvbGRlciBuZWl0aGVyIGNvbGxpZGVzIG5vciBwcm9kdWNlcyBhbm9ueW1vdXMgZGlyZWN0b3JpZXMsIGFuZCB0aGUgdmF1bHQncyBgUkVBRE1FLm1kYFxuICogaGVhZGluZyBnYWlucyB0aGUgdmVyc2lvbiBpdCBkZW1vbnN0cmF0ZXMuXG4gKlxuICogVGhlIGFyY2hpdmVkIGNvcHkgYWxzbyBjYXJyaWVzIHRoZSBgLm9ic2lkaWFuL2FwcC5qc29uYCBzZXR0aW5ncyB0aGlzIHBhY2thZ2Ugb3ducyAoc2VlXG4gKiBgZGVtby12YXVsdC1hcHAtanNvbi50c2ApLiBUaG9zZSBzZXR0aW5ncyBhbmQgdGhlIFJFQURNRSBoZWFkaW5nIGFyZSB3cml0dGVuIGludG8gdGhlIFpJUCBFTlRSWSBhbmRcbiAqIG5ldmVyIGludG8gdGhlIHJlcG8gZm9sZGVyOiBib3RoIGZpbGVzIGFyZSB0cmFja2VkLCBhbmQgYHVwZGF0ZVZlcnNpb25gIGFyY2hpdmVzIGFmdGVyIGl0IGhhcyBhbHJlYWR5XG4gKiBwdXNoZWQsIHNvIGFuIGluLXBsYWNlIHdyaXRlIHdvdWxkIGxlYXZlIGFuIHVuY29tbWl0dGVkIGNoYW5nZSBiZWhpbmQgYSBwdWJsaXNoZWQgcmVsZWFzZS5cbiAqL1xuXG5pbXBvcnQgQWRtWmlwIGZyb20gJ2FkbS16aXAnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuXG5pbXBvcnQgdHlwZSB7IERlbW9WYXVsdEhlbHBlclNldHRpbmdzIH0gZnJvbSAnLi4vb2JzaWRpYW4vZGVtby12YXVsdC1oZWxwZXItc2V0dGluZ3MudHMnO1xuaW1wb3J0IHR5cGUgeyBEZW1vVmF1bHRBcHBKc29uIH0gZnJvbSAnLi9kZW1vLXZhdWx0LWFwcC1qc29uLnRzJztcblxuaW1wb3J0IHtcbiAgZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lLFxuICBnZXREZW1vVmF1bHRGb2xkZXJOYW1lXG59IGZyb20gJy4uL29ic2lkaWFuL2RlbW8tdmF1bHQtbmFtaW5nLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vb2JzaWRpYW4vcGx1Z2luL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGdldEZvbGRlck5hbWUsXG4gIGpvaW5cbn0gZnJvbSAnLi4vcGF0aC50cyc7XG5pbXBvcnQge1xuICBidWlsZEFyY2hpdmVkRGVtb1ZhdWx0QXBwSnNvbkNvbnRlbnQsXG4gIGZpbmRPd25lZERlbW9WYXVsdEFwcEpzb25TZXR0aW5ncyxcbiAgcGFyc2VEZW1vVmF1bHRBcHBKc29uXG59IGZyb20gJy4vZGVtby12YXVsdC1hcHAtanNvbi50cyc7XG5pbXBvcnQgeyBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzIH0gZnJvbSAnLi9vYnNpZGlhbi1kZXYtdXRpbHMtcmVwby1wYXRocy50cyc7XG5pbXBvcnQge1xuICBnZXRSb290Rm9sZGVyLFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuL3Jvb3QudHMnO1xuXG5jb25zdCBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSUQgPSAnZGVtby12YXVsdC1oZWxwZXInO1xuY29uc3QgREFUQV9KU09OX0ZJTEVfTkFNRSA9ICdkYXRhLmpzb24nO1xuY29uc3QgREFUQV9KU09OX0lOREVOVCA9IDI7XG5jb25zdCBSRUFETUVfRklMRV9OQU1FID0gJ1JFQURNRS5tZCc7XG5cbi8vIFRoZSBSRUFETUUncyBvcGVuaW5nIGAjIEgxYCwgYW5kIG9ubHkgdGhhdCBvbmU6IHdpdGhvdXQgdGhlIGBtYCBmbGFnIHRoZSBtYXRjaCBpcyBhbmNob3JlZCB0byB0aGUgc3RhcnRcbi8vIE9mIHRoZSBmaWxlLCBhbmQgYC5gIHN0b3BzIGF0IHRoZSBuZXdsaW5lIHRoYXQgZW5kcyB0aGUgbGluZS5cbmNvbnN0IE9QRU5JTkdfSEVBRElOR19SRUdfRVhQID0gL14jIC4qLztcblxuLyoqXG4gKiBUaGUgbWluaW1hbCBzaGFwZSBvZiBhIHBsdWdpbiBgbWFuaWZlc3QuanNvbmAgcmVhZCBieSB7QGxpbmsgYXJjaGl2ZVBsdWdpbkRlbW9WYXVsdH0uXG4gKi9cbmludGVyZmFjZSBQbHVnaW5NYW5pZmVzdCB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGlkLCB1c2VkIGFzIHRoZSBmb2xkZXIgbmFtZSB1bmRlciBgZGVtby12YXVsdC8ub2JzaWRpYW4vcGx1Z2lucy9gLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiB2ZXJzaW9uLCBlbWJlZGRlZCBpbiB0aGUgYXJjaGl2ZSdzIHRvcC1sZXZlbCBmb2xkZXIgbmFtZSBhbmQgaXRzIFJFQURNRSBoZWFkaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFyY2hpdmVzIHRoZSBwbHVnaW4ncyBkZW1vIHZhdWx0IChgZGVtby12YXVsdC9gIGluIHRoZSByZXBvIHJvb3QpIGFzIGEgcmVsZWFzZSBhcnRpZmFjdC5cbiAqXG4gKiBJbnN0YWxscyB0aGUgZnJlc2hseSBidWlsdCBwbHVnaW4gZnJvbSBgZGlzdC9idWlsZC9gIGludG8gdGhlIHZhdWx0J3NcbiAqIGAub2JzaWRpYW4vcGx1Z2lucy88aWQ+L2AgZm9sZGVyLCB0aGVuIHppcHMgdGhlIHdob2xlIHZhdWx0IHRvXG4gKiBgZGlzdC9idWlsZC88cGx1Z2luLWlkPi1kZW1vLXZhdWx0LnppcGAsIHVuZGVyIGEgc2luZ2xlIGA8cGx1Z2luLWlkPi1kZW1vLXZhdWx0LTx2ZXJzaW9uPi9gIGZvbGRlci5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBjcmVhdGVkIHppcCBhcmNoaXZlLCBvclxuICogYG51bGxgIGlmIHRoZSByZXBvIGhhcyBubyBgZGVtby12YXVsdC9gIGZvbGRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFyY2hpdmVQbHVnaW5EZW1vVmF1bHQoKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGNvbnN0IGRlbW9WYXVsdFBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRlbW9WYXVsdCB9KTtcbiAgaWYgKCFleGlzdHNTeW5jKGRlbW9WYXVsdFBhdGgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBtYW5pZmVzdFBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiB9KTtcbiAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKG1hbmlmZXN0UGF0aCwgJ3V0Zi04JykpIGFzIFBsdWdpbk1hbmlmZXN0O1xuXG4gIGNvbnN0IHBsdWdpbkZvbGRlciA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHtcbiAgICBwYXRoOiBqb2luKFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0LFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRG90T2JzaWRpYW4sXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5QbHVnaW5zLFxuICAgICAgbWFuaWZlc3QuaWRcbiAgICApXG4gIH0pO1xuICBhd2FpdCBta2RpcihwbHVnaW5Gb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGRpc3RCdWlsZFBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCB9KTtcbiAgYXdhaXQgY3AoZGlzdEJ1aWxkUGF0aCwgcGx1Z2luRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBhd2FpdCBpbmplY3REZW1vVmF1bHRIZWxwZXIobWFuaWZlc3QuaWQpO1xuXG4gIGNvbnN0IHppcFBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7XG4gICAgcGF0aDogam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQsIGdldERlbW9WYXVsdEFyY2hpdmVGaWxlTmFtZShtYW5pZmVzdC5pZCkpXG4gIH0pO1xuICBjb25zdCByb290Rm9sZGVyTmFtZSA9IGdldERlbW9WYXVsdEZvbGRlck5hbWUoe1xuICAgIHBsdWdpbklkOiBtYW5pZmVzdC5pZCxcbiAgICB2ZXJzaW9uOiBtYW5pZmVzdC52ZXJzaW9uXG4gIH0pO1xuICBjb25zdCB6aXAgPSBuZXcgQWRtWmlwKCk7XG4gIHppcC5hZGRMb2NhbEZvbGRlcihkZW1vVmF1bHRQYXRoLCByb290Rm9sZGVyTmFtZSk7XG4gIGluamVjdEFwcEpzb24oemlwLCBhd2FpdCByZWFkQ29tbWl0dGVkQXBwSnNvbigpLCByb290Rm9sZGVyTmFtZSk7XG4gIGluamVjdFJlYWRtZVZlcnNpb24oemlwLCByb290Rm9sZGVyTmFtZSwgbWFuaWZlc3QudmVyc2lvbik7XG4gIGF3YWl0IHppcC53cml0ZVppcFByb21pc2UoemlwUGF0aCk7XG4gIHJldHVybiB6aXBQYXRoO1xufVxuXG4vLyBTdG9yZXMgdGhlIGFyY2hpdmVkIHZhdWx0J3MgYC5vYnNpZGlhbi9hcHAuanNvbmAgXHUyMDE0IHRoZSBjb21taXR0ZWQgc2V0dGluZ3Mgd2l0aCB0aGUgb3duZWQgb25lcyBtZXJnZWRcbi8vIE92ZXIgdGhlbS4gVGhlIGVudHJ5IGlzIHJlcGxhY2VkIHJhdGhlciB0aGFuIHRoZSBmaWxlLCBzbyB0aGUgcmVwbyBmb2xkZXIgaXMgbGVmdCBleGFjdGx5IGFzIGl0IHdhcy5cbmZ1bmN0aW9uIGluamVjdEFwcEpzb24oemlwOiBBZG1aaXAsIGFwcEpzb246IERlbW9WYXVsdEFwcEpzb24sIHJvb3RGb2xkZXJOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgZW50cnlOYW1lID0gam9pbihyb290Rm9sZGVyTmFtZSwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRG90T2JzaWRpYW4sIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFwcEpzb24pO1xuICBjb25zdCBjb250ZW50ID0gQnVmZmVyLmZyb20oYnVpbGRBcmNoaXZlZERlbW9WYXVsdEFwcEpzb25Db250ZW50KHsgYXBwSnNvbiB9KSwgJ3V0Zi04Jyk7XG4gIGNvbnN0IGVudHJ5ID0gemlwLmdldEVudHJ5KGVudHJ5TmFtZSk7XG4gIGlmIChlbnRyeSkge1xuICAgIHppcC51cGRhdGVGaWxlKGVudHJ5LCBjb250ZW50KTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBBIHZhdWx0IHdpdGggbm90aGluZyBlbHNlIHRvIGNvbmZpZ3VyZSBjb21taXRzIG5vIGBhcHAuanNvbmAgYXQgYWxsLCB3aGljaCBpcyB0aGUgZXhwZWN0ZWQgc3RhdGUuXG4gIHppcC5hZGRGaWxlKGVudHJ5TmFtZSwgY29udGVudCk7XG59XG5cbi8vIEluamVjdHMgdGhlIGJ1aWx0LCBgb2JzaWRpYW4tZGV2LXV0aWxzYC1vd25lZCBgZGVtby12YXVsdC1oZWxwZXJgIGJvb3RzdHJhcCBwbHVnaW4gKHNoaXBwZWQgaW4gdGhpcyBwYWNrYWdlKSBpbnRvIHRoZSBkZW1vIHZhdWx0LCBzbyBubyBwZXItdmF1bHQgY29weSBpcyBjb21taXR0ZWQgYW5kIGFuIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGJ1bXAgcHJvcGFnYXRlcyBmaXhlcy5cbi8vXG4vLyBBbG9uZ3NpZGUgdGhlIGJpbmFyaWVzIGl0IHdyaXRlcyB0aGUgaGVscGVyJ3Mgb3duIGBkYXRhLmpzb25gIG5hbWluZyB0aGUgZGVtb25zdHJhdGVkIHBsdWdpbi4gVGhhdCBpc1xuLy8gVGhlIG9uZSBtb21lbnQgdGhlIGlkIGlzIGtub3duIGZvciBjZXJ0YWluIFx1MjAxNCBpdCBjb21lcyBmcm9tIHRoZSBwbHVnaW4ncyBvd24gbWFuaWZlc3QgXHUyMDE0IHdoZXJlYXMgdGhlXG4vLyBPcGVuZWQgdmF1bHQgb25seSBvZmZlcnMgcGx1Z2luIGZvbGRlcnMgdG8gY291bnQsIHdoaWNoIHRoZSBib290c3RyYXAgaXRzZWxmIGFkZHMgdG8gKHNlZVxuLy8gYERlbW9WYXVsdEhlbHBlclNldHRpbmdzYCkuXG5hc3luYyBmdW5jdGlvbiBpbmplY3REZW1vVmF1bHRIZWxwZXIoZGVtb2VkUGx1Z2luSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwYWNrYWdlRm9sZGVyID0gZ2V0Um9vdEZvbGRlcihnZXRGb2xkZXJOYW1lKGltcG9ydC5tZXRhLnVybCkpO1xuICBpZiAoIXBhY2thZ2VGb2xkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCByZXNvbHZlIHRoZSBvYnNpZGlhbi1kZXYtdXRpbHMgcGFja2FnZSBmb2xkZXIgdG8gaW5qZWN0IHRoZSBkZW1vLXZhdWx0LWhlbHBlciBwbHVnaW4uJyk7XG4gIH1cblxuICBjb25zdCBoZWxwZXJTb3VyY2VQYXRoID0gam9pbihwYWNrYWdlRm9sZGVyLCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRpc3REZW1vVmF1bHRIZWxwZXIpO1xuICBjb25zdCBoZWxwZXJGb2xkZXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7XG4gICAgcGF0aDogam9pbihcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRlbW9WYXVsdCxcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRvdE9ic2lkaWFuLFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuUGx1Z2lucyxcbiAgICAgIERFTU9fVkFVTFRfSEVMUEVSX1BMVUdJTl9JRFxuICAgIClcbiAgfSk7XG4gIGF3YWl0IG1rZGlyKGhlbHBlckZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGF3YWl0IGNwKGhlbHBlclNvdXJjZVBhdGgsIGhlbHBlckZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgY29uc3Qgc2V0dGluZ3M6IERlbW9WYXVsdEhlbHBlclNldHRpbmdzID0geyBkZW1vZWRQbHVnaW5JZCB9O1xuICBhd2FpdCB3cml0ZUZpbGUoam9pbihoZWxwZXJGb2xkZXIsIERBVEFfSlNPTl9GSUxFX05BTUUpLCBgJHtKU09OLnN0cmluZ2lmeShzZXR0aW5ncywgbnVsbCwgREFUQV9KU09OX0lOREVOVCl9XFxuYCwgJ3V0Zi04Jyk7XG59XG5cbi8vIE5hbWVzIHRoZSB2ZXJzaW9uIG9uIHRoZSBhcmNoaXZlZCBgUkVBRE1FLm1kYCdzIGhlYWRpbmcsIHNvIHRoZSB2YXVsdCBzYXlzIHdoaWNoIHJlbGVhc2UgaXQgZGVtb25zdHJhdGVzXG4vLyBIb3dldmVyIGZhciBpdCB0cmF2ZWxzIGZyb20gdGhlIHJlbGVhc2UgcGFnZSBpdCB3YXMgZG93bmxvYWRlZCBmcm9tLlxuLy9cbi8vIEVudHJ5LW9ubHksIGZvciB0aGUgc2FtZSByZWFzb24gYGluamVjdEFwcEpzb25gIGlzOiB0aGUgY29tbWl0dGVkIFJFQURNRSBpcyBhIHRyYWNrZWQsIGhhbmQtYXV0aG9yZWRcbi8vIEZpbGUgYW5kIGB1cGRhdGVWZXJzaW9uYCBhcmNoaXZlcyBhZnRlciBpdCBoYXMgYWxyZWFkeSBwdXNoZWQuXG4vL1xuLy8gQSB2YXVsdCB0aGF0IHNoaXBzIG5vIFJFQURNRSwgb3Igb25lIG9wZW5pbmcgb24gc29tZXRoaW5nIG90aGVyIHRoYW4gYW4gYCMgSDFgLCBpcyBsZWZ0IGFsb25lIHJhdGhlclxuLy8gVGhhbiBjb3JyZWN0ZWQuIFRoZSBkZW1vLXZhdWx0IGNvdmVyYWdlIHN1aXRlIGV4ZW1wdHMgYFJFQURNRS5tZGAgZnJvbSBpdHMgSDEgY2hlY2ssIHNvIG5laXRoZXIgc2hhcGVcbi8vIElzIGEgZGVmZWN0IFx1MjAxNCBhbmQgYSByZWxlYXNlIGlzIHRoZSB3cm9uZyBtb21lbnQgdG8gc3RhcnQgZmFpbGluZyBvbiBvbmUuXG5mdW5jdGlvbiBpbmplY3RSZWFkbWVWZXJzaW9uKHppcDogQWRtWmlwLCByb290Rm9sZGVyTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgZW50cnkgPSB6aXAuZ2V0RW50cnkoam9pbihyb290Rm9sZGVyTmFtZSwgUkVBRE1FX0ZJTEVfTkFNRSkpO1xuICBpZiAoIWVudHJ5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY29udGVudCA9IGVudHJ5LmdldERhdGEoKS50b1N0cmluZygndXRmLTgnKTtcbiAgY29uc3QgdmVyc2lvbmVkQ29udGVudCA9IGNvbnRlbnQucmVwbGFjZShPUEVOSU5HX0hFQURJTkdfUkVHX0VYUCwgKGhlYWRpbmcpID0+IGAke2hlYWRpbmd9IHYke3ZlcnNpb259YCk7XG4gIGlmICh2ZXJzaW9uZWRDb250ZW50ID09PSBjb250ZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgemlwLnVwZGF0ZUZpbGUoZW50cnksIEJ1ZmZlci5mcm9tKHZlcnNpb25lZENvbnRlbnQsICd1dGYtOCcpKTtcbn1cblxuLy8gUmVhZHMgdGhlIGRlbW8gdmF1bHQncyBjb21taXR0ZWQgYC5vYnNpZGlhbi9hcHAuanNvbmAsIHJlZnVzaW5nIHRoZSBzZXR0aW5ncyB0aGlzIHBhY2thZ2Ugb3ducy5cbi8vXG4vLyBUaG9zZSBzZXR0aW5ncyBhcmUgaW5qZWN0ZWQgaW50byB0aGUgYXJjaGl2ZSwgc28gYSBjb21taXR0ZWQgb25lIGlzIGEgc2Vjb25kIHNvdXJjZSBvZiB0cnV0aCB0aGF0XG4vLyBOb3RoaW5nIGtlZXBzIGluIHN0ZXAuIFRoZSBkZW1vLXZhdWx0IGNvdmVyYWdlIHN1aXRlIGFscmVhZHkgZmFpbHMgb24gaXQsIHdoaWNoIG1lYW5zIHJlYWNoaW5nIGhlcmVcbi8vIE1lYW5zIHRoYXQgZ2F0ZSB3YXMgc2tpcHBlZCBcdTIwMTQgc28gdGhpcyByZWZ1c2VzIHJhdGhlciB0aGFuIG92ZXJ3cml0aW5nIGEgdmFsdWUgc29tZWJvZHkgY2hvc2Ugb24gcHVycG9zZS5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDb21taXR0ZWRBcHBKc29uKCk6IFByb21pc2U8RGVtb1ZhdWx0QXBwSnNvbj4ge1xuICBjb25zdCBhcHBKc29uUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHtcbiAgICBwYXRoOiBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRlbW9WYXVsdCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRG90T2JzaWRpYW4sIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFwcEpzb24pXG4gIH0pO1xuICBjb25zdCBjb250ZW50ID0gZXhpc3RzU3luYyhhcHBKc29uUGF0aCkgPyBhd2FpdCByZWFkRmlsZShhcHBKc29uUGF0aCwgJ3V0Zi04JykgOiBudWxsO1xuICBjb25zdCBhcHBKc29uID0gcGFyc2VEZW1vVmF1bHRBcHBKc29uKHsgY29udGVudCwgcGF0aDogYXBwSnNvblBhdGggfSk7XG5cbiAgY29uc3Qgb3duZWRTZXR0aW5ncyA9IGZpbmRPd25lZERlbW9WYXVsdEFwcEpzb25TZXR0aW5ncyh7IGFwcEpzb24gfSk7XG4gIGlmIChvd25lZFNldHRpbmdzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHthcHBKc29uUGF0aH0gc2V0cyAke293bmVkU2V0dGluZ3Muam9pbignLCAnKX0sIHdoaWNoIG9ic2lkaWFuLWRldi11dGlscyBvd25zIGFuZCB3cml0ZXMgaW50byB0aGUgYXJjaGl2ZWQgZGVtbyB2YXVsdC4gU2V0dGluZ3MgaXQgb3ducyBtdXN0IG5vdCBiZSBjb21taXR0ZWQuYFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gYXBwSnNvbjtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNDQSxxQkFBbUI7QUFDbkIscUJBQTJCO0FBQzNCLHNCQUtPO0FBS1AsK0JBR087QUFDUCx3Q0FBd0M7QUFDeEMsa0JBR087QUFDUCxpQ0FJTztBQUNQLDJDQUEwQztBQUMxQyxrQkFHTztBQXBFUCxJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLE1BQU07QUFDMUQsTUFBSSxPQUFPLGVBQWUsVUFBVTtBQUNsQyxVQUFNLGVBQWU7QUFDckIsVUFBTSxNQUFNLGFBQWEsVUFBVTtBQUNuQyxRQUFJLE9BQU8sSUFBSSxrQkFBa0IsWUFBWTtBQUMzQyxhQUFPLElBQUksY0FBYyxVQUFVLEVBQUU7QUFBQSxJQUN2QztBQUFBLEVBQ0Y7QUFFQSxNQUFJLE9BQU8sV0FBVyxhQUFhO0FBQ2pDLFdBQU8sYUFBYSxTQUFTO0FBQUEsRUFDL0I7QUFHQSxTQUFPO0FBQ1QsR0FBRztBQXVEUCxNQUFNLDhCQUE4QjtB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
|
|
299
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9kZW1vLXZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzWydpbXBvcnQubWV0YS51cmwnXSA/PyAoKCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBfX2ZpbGVuYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBsb2NhbFJlcXVpcmUgPSByZXF1aXJlO1xuICAgICAgICBjb25zdCB1cmwgPSBsb2NhbFJlcXVpcmUoJ25vZGU6dXJsJyk7XG4gICAgICAgIGlmICh0eXBlb2YgdXJsLnBhdGhUb0ZpbGVVUkwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gdXJsLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSkuaHJlZjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGFjdGl2ZVdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgfVxuXG4gICAgICAvLyBGYWxsYmFjayB0byBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGVudmlyb25tZW50IGlzIHVua25vd25cbiAgICAgIHJldHVybiAnJztcbiAgICB9KSgpO1xuLyoqXG4gKiBAZmlsZVxuICpcbiAqIEFyY2hpdmVzIGEgcGx1Z2luJ3MgZGVtbyB2YXVsdCBhcyBhIHJlbGVhc2UgYXJ0aWZhY3QuXG4gKlxuICogQSBwbHVnaW4gY2FuIHNoaXAgYSBjdXJhdGVkIGRlbW8gdmF1bHQgYXQgYGRlbW8tdmF1bHQvYCBpbiBpdHMgcmVwbyByb290LiBBdCByZWxlYXNlIHRpbWUgdGhpc1xuICogbW9kdWxlIGluc3RhbGxzIHRoZSBmcmVzaGx5IGJ1aWx0IHBsdWdpbiBpbnRvIHRoYXQgdmF1bHQncyBgLm9ic2lkaWFuL3BsdWdpbnMvPGlkPi9gIGZvbGRlciBhbmRcbiAqIHppcHMgdGhlIHdob2xlIHZhdWx0IGludG8gYGRpc3QvYnVpbGQvPHBsdWdpbi1pZD4tZGVtby12YXVsdC56aXBgLCBzbyB0aGUgZXhpc3RpbmcgR2l0SHViLXJlbGVhc2VcbiAqIHN0ZXAgKHdoaWNoIHVwbG9hZHMgZXZlcnkgZmlsZSBpbiBgZGlzdC9idWlsZC9gKSBhdHRhY2hlcyBpdCBhdXRvbWF0aWNhbGx5LlxuICpcbiAqIFRoZSB2ZXJzaW9uIGlzIGRlbGliZXJhdGVseSBhYnNlbnQgZnJvbSB0aGF0IG5hbWUgYW5kIGxpdmVzIElOU0lERSB0aGUgYXJjaGl2ZSBpbnN0ZWFkIFx1MjAxNCBzZWVcbiAqIGBvYnNpZGlhbi9kZW1vLXZhdWx0LW5hbWluZy50c2AgZm9yIHdoeSBcdTIwMTQgaW4gdGhlIHR3byBwbGFjZXMgYSBwZXJzb24gYWN0dWFsbHkgbWVldHMgaXQ6IHRoZSB2YXVsdFxuICogc2l0cyB1bmRlciBhIHNpbmdsZSBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj4vYCBmb2xkZXIsIHNvIHVuemlwcGluZyBzZXZlcmFsIHJlbGVhc2VzIGJ5IGhhbmRcbiAqIGludG8gb25lIGZvbGRlciBuZWl0aGVyIGNvbGxpZGVzIG5vciBwcm9kdWNlcyBhbm9ueW1vdXMgZGlyZWN0b3JpZXMsIGFuZCB0aGUgdmF1bHQncyBgUkVBRE1FLm1kYFxuICogaGVhZGluZyBnYWlucyB0aGUgdmVyc2lvbiBpdCBkZW1vbnN0cmF0ZXMuXG4gKlxuICogVGhlIGFyY2hpdmVkIGNvcHkgYWxzbyBjYXJyaWVzIHRoZSBgLm9ic2lkaWFuL2FwcC5qc29uYCBzZXR0aW5ncyB0aGlzIHBhY2thZ2Ugb3ducyAoc2VlXG4gKiBgZGVtby12YXVsdC1hcHAtanNvbi50c2ApLiBUaG9zZSBzZXR0aW5ncyBhbmQgdGhlIFJFQURNRSBoZWFkaW5nIGFyZSB3cml0dGVuIGludG8gdGhlIFpJUCBFTlRSWSBhbmRcbiAqIG5ldmVyIGludG8gdGhlIHJlcG8gZm9sZGVyOiBib3RoIGZpbGVzIGFyZSB0cmFja2VkLCBhbmQgYHVwZGF0ZVZlcnNpb25gIGFyY2hpdmVzIGFmdGVyIGl0IGhhcyBhbHJlYWR5XG4gKiBwdXNoZWQsIHNvIGFuIGluLXBsYWNlIHdyaXRlIHdvdWxkIGxlYXZlIGFuIHVuY29tbWl0dGVkIGNoYW5nZSBiZWhpbmQgYSBwdWJsaXNoZWQgcmVsZWFzZS5cbiAqL1xuXG5pbXBvcnQgeyB6aXBTeW5jIH0gZnJvbSAnZmZsYXRlJztcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7XG4gIGNwLFxuICBta2RpcixcbiAgcmVhZEZpbGUsXG4gIHdyaXRlRmlsZVxufSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcblxuaW1wb3J0IHR5cGUgeyBEZW1vVmF1bHRIZWxwZXJTZXR0aW5ncyB9IGZyb20gJy4uL29ic2lkaWFuL2RlbW8tdmF1bHQtaGVscGVyLXNldHRpbmdzLnRzJztcbmltcG9ydCB0eXBlIHsgRGVtb1ZhdWx0QXBwSnNvbiB9IGZyb20gJy4vZGVtby12YXVsdC1hcHAtanNvbi50cyc7XG5cbmltcG9ydCB7XG4gIGdldERlbW9WYXVsdEFyY2hpdmVGaWxlTmFtZSxcbiAgZ2V0RGVtb1ZhdWx0Rm9sZGVyTmFtZVxufSBmcm9tICcuLi9vYnNpZGlhbi9kZW1vLXZhdWx0LW5hbWluZy50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5pbXBvcnQge1xuICBnZXRGb2xkZXJOYW1lLFxuICBqb2luLFxuICByZWxhdGl2ZVxufSBmcm9tICcuLi9wYXRoLnRzJztcbmltcG9ydCB7XG4gIGJ1aWxkQXJjaGl2ZWREZW1vVmF1bHRBcHBKc29uQ29udGVudCxcbiAgZmluZE93bmVkRGVtb1ZhdWx0QXBwSnNvblNldHRpbmdzLFxuICBwYXJzZURlbW9WYXVsdEFwcEpzb25cbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWFwcC1qc29uLnRzJztcbmltcG9ydCB7IHJlYWRkaXJQb3NpeCB9IGZyb20gJy4vZnMudHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocyB9IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXJlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZ2V0Um9vdEZvbGRlcixcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnLi9yb290LnRzJztcblxuY29uc3QgREVNT19WQVVMVF9IRUxQRVJfUExVR0lOX0lEID0gJ2RlbW8tdmF1bHQtaGVscGVyJztcbmNvbnN0IERBVEFfSlNPTl9GSUxFX05BTUUgPSAnZGF0YS5qc29uJztcbmNvbnN0IERBVEFfSlNPTl9JTkRFTlQgPSAyO1xuY29uc3QgUkVBRE1FX0ZJTEVfTkFNRSA9ICdSRUFETUUubWQnO1xuXG4vLyBUaGUgUkVBRE1FJ3Mgb3BlbmluZyBgIyBIMWAsIGFuZCBvbmx5IHRoYXQgb25lOiB3aXRob3V0IHRoZSBgbWAgZmxhZyB0aGUgbWF0Y2ggaXMgYW5jaG9yZWQgdG8gdGhlIHN0YXJ0XG4vLyBPZiB0aGUgZmlsZSwgYW5kIGAuYCBzdG9wcyBhdCB0aGUgbmV3bGluZSB0aGF0IGVuZHMgdGhlIGxpbmUuXG5jb25zdCBPUEVOSU5HX0hFQURJTkdfUkVHX0VYUCA9IC9eIyAuKi87XG5cbi8qKlxuICogVGhlIGFyY2hpdmUncyBlbnRyaWVzLCBrZXllZCBieSB0aGUgbmFtZSBlYWNoIG9uZSB0YWtlcyBpbnNpZGUgdGhlIFpJUC5cbiAqXG4gKiBUaGUgd2hvbGUgYXJjaGl2ZSBpcyBhc3NlbWJsZWQgYXMgdGhpcyBtYXAgYW5kIHNlcmlhbGl6ZWQgb25jZSwgc28gaW5qZWN0aW5nIGFuIGVudHJ5IGlzIGFuIG9yZGluYXJ5XG4gKiBgc2V0YCByYXRoZXIgdGhhbiBhIG11dGF0aW9uIG9mIGEgaGFsZi1idWlsdCBhcmNoaXZlIG9iamVjdC5cbiAqL1xudHlwZSBEZW1vVmF1bHRaaXBFbnRyaWVzID0gTWFwPHN0cmluZywgQnVmZmVyPjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5qZWN0QXBwSnNvbn0uXG4gKi9cbmludGVyZmFjZSBJbmplY3RBcHBKc29uUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb21taXR0ZWQgc2V0dGluZ3MgdGhlIG93bmVkIG9uZXMgYXJlIG1lcmdlZCBvdmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSnNvbjogRGVtb1ZhdWx0QXBwSnNvbjtcblxuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBlbnRyaWVzLCBlZGl0ZWQgaW4gcGxhY2UuXG4gICAqL1xuICByZWFkb25seSBlbnRyaWVzOiBEZW1vVmF1bHRaaXBFbnRyaWVzO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIHNpbmdsZSB0b3AtbGV2ZWwgZm9sZGVyLCB3aGljaCBldmVyeSBlbnRyeSBuYW1lIGlzIHJlbGF0aXZlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdEZvbGRlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5qZWN0UmVhZG1lVmVyc2lvbn0uXG4gKi9cbmludGVyZmFjZSBJbmplY3RSZWFkbWVWZXJzaW9uUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBhcmNoaXZlJ3MgZW50cmllcywgZWRpdGVkIGluIHBsYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cmllczogRGVtb1ZhdWx0WmlwRW50cmllcztcblxuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBzaW5nbGUgdG9wLWxldmVsIGZvbGRlciwgd2hpY2ggZXZlcnkgZW50cnkgbmFtZSBpcyByZWxhdGl2ZSB0by5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RGb2xkZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gdmVyc2lvbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBtaW5pbWFsIHNoYXBlIG9mIGEgcGx1Z2luIGBtYW5pZmVzdC5qc29uYCByZWFkIGJ5IHtAbGluayBhcmNoaXZlUGx1Z2luRGVtb1ZhdWx0fS5cbiAqL1xuaW50ZXJmYWNlIFBsdWdpbk1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQsIHVzZWQgYXMgdGhlIGZvbGRlciBuYW1lIHVuZGVyIGBkZW1vLXZhdWx0Ly5vYnNpZGlhbi9wbHVnaW5zL2AuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIHZlcnNpb24sIGVtYmVkZGVkIGluIHRoZSBhcmNoaXZlJ3MgdG9wLWxldmVsIGZvbGRlciBuYW1lIGFuZCBpdHMgUkVBRE1FIGhlYWRpbmcuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlYWREZW1vVmF1bHRFbnRyaWVzfS5cbiAqL1xuaW50ZXJmYWNlIFJlYWREZW1vVmF1bHRFbnRyaWVzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB2YXVsdCBmb2xkZXIgdG8gcmVhZCwgYXMgYW4gYWJzb2x1dGUgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IGRlbW9WYXVsdFBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBzaW5nbGUgdG9wLWxldmVsIGZvbGRlciwgd2hpY2ggZXZlcnkgZW50cnkgbmFtZSBpcyByZWxhdGl2ZSB0by5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RGb2xkZXJOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXJjaGl2ZXMgdGhlIHBsdWdpbidzIGRlbW8gdmF1bHQgKGBkZW1vLXZhdWx0L2AgaW4gdGhlIHJlcG8gcm9vdCkgYXMgYSByZWxlYXNlIGFydGlmYWN0LlxuICpcbiAqIEluc3RhbGxzIHRoZSBmcmVzaGx5IGJ1aWx0IHBsdWdpbiBmcm9tIGBkaXN0L2J1aWxkL2AgaW50byB0aGUgdmF1bHQnc1xuICogYC5vYnNpZGlhbi9wbHVnaW5zLzxpZD4vYCBmb2xkZXIsIHRoZW4gemlwcyB0aGUgd2hvbGUgdmF1bHQgdG9cbiAqIGBkaXN0L2J1aWxkLzxwbHVnaW4taWQ+LWRlbW8tdmF1bHQuemlwYCwgdW5kZXIgYSBzaW5nbGUgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQtPHZlcnNpb24+L2AgZm9sZGVyLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGNyZWF0ZWQgemlwIGFyY2hpdmUsIG9yXG4gKiBgbnVsbGAgaWYgdGhlIHJlcG8gaGFzIG5vIGBkZW1vLXZhdWx0L2AgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXJjaGl2ZVBsdWdpbkRlbW9WYXVsdCgpOiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHtcbiAgY29uc3QgZGVtb1ZhdWx0UGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0IH0pO1xuICBpZiAoIWV4aXN0c1N5bmMoZGVtb1ZhdWx0UGF0aCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG1hbmlmZXN0UGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uIH0pO1xuICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUobWFuaWZlc3RQYXRoLCAndXRmLTgnKSkgYXMgUGx1Z2luTWFuaWZlc3Q7XG5cbiAgY29uc3QgcGx1Z2luRm9sZGVyID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQsXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbixcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlBsdWdpbnMsXG4gICAgICBtYW5pZmVzdC5pZFxuICAgIClcbiAgfSk7XG4gIGF3YWl0IG1rZGlyKHBsdWdpbkZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgY29uc3QgZGlzdEJ1aWxkUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEJ1aWxkIH0pO1xuICBhd2FpdCBjcChkaXN0QnVpbGRQYXRoLCBwbHVnaW5Gb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGF3YWl0IGluamVjdERlbW9WYXVsdEhlbHBlcihtYW5pZmVzdC5pZCk7XG5cbiAgY29uc3QgemlwUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHtcbiAgICBwYXRoOiBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCwgZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lKG1hbmlmZXN0LmlkKSlcbiAgfSk7XG4gIGNvbnN0IHJvb3RGb2xkZXJOYW1lID0gZ2V0RGVtb1ZhdWx0Rm9sZGVyTmFtZSh7XG4gICAgcGx1Z2luSWQ6IG1hbmlmZXN0LmlkLFxuICAgIHZlcnNpb246IG1hbmlmZXN0LnZlcnNpb25cbiAgfSk7XG4gIGNvbnN0IGVudHJpZXMgPSBhd2FpdCByZWFkRGVtb1ZhdWx0RW50cmllcyh7XG4gICAgZGVtb1ZhdWx0UGF0aCxcbiAgICByb290Rm9sZGVyTmFtZVxuICB9KTtcbiAgaW5qZWN0QXBwSnNvbih7XG4gICAgYXBwSnNvbjogYXdhaXQgcmVhZENvbW1pdHRlZEFwcEpzb24oKSxcbiAgICBlbnRyaWVzLFxuICAgIHJvb3RGb2xkZXJOYW1lXG4gIH0pO1xuICBpbmplY3RSZWFkbWVWZXJzaW9uKHtcbiAgICBlbnRyaWVzLFxuICAgIHJvb3RGb2xkZXJOYW1lLFxuICAgIHZlcnNpb246IG1hbmlmZXN0LnZlcnNpb25cbiAgfSk7XG4gIC8vIEV2ZXJ5IGVudHJ5IGlzIHN0YW1wZWQgd2l0aCB0aGUgbW9tZW50IHRoZSBhcmNoaXZlIGlzIGJ1aWx0IHJhdGhlciB0aGFuIHRoZSBmaWxlJ3Mgb3duIG10aW1lLCB3aGljaCBpc1xuICAvLyBXaGF0IHRoZSBwcmV2aW91cyBhcmNoaXZlciB3cm90ZS4gQSBkZW1vIHZhdWx0J3MgY29tbWl0dGVkIHRpbWVzdGFtcHMgYXJlIGNoZWNrb3V0IGFydGlmYWN0cyBvZiB3aG9ldmVyXG4gIC8vIFJhbiB0aGUgcmVsZWFzZSwgc28gdGhleSBjYXJyeSBub3RoaW5nIGEgcmVhZGVyIGNvdWxkIHVzZTsgdGhlIGJ1aWxkIHRpbWUgYXQgbGVhc3QgZGVzY3JpYmVzIHRoZVxuICAvLyBBcmNoaXZlLlxuICBhd2FpdCB3cml0ZUZpbGUoemlwUGF0aCwgemlwU3luYyhPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcykpKTtcbiAgcmV0dXJuIHppcFBhdGg7XG59XG5cbi8vIFN0b3JlcyB0aGUgYXJjaGl2ZWQgdmF1bHQncyBgLm9ic2lkaWFuL2FwcC5qc29uYCBcdTIwMTQgdGhlIGNvbW1pdHRlZCBzZXR0aW5ncyB3aXRoIHRoZSBvd25lZCBvbmVzIG1lcmdlZFxuLy8gT3ZlciB0aGVtLiBUaGUgRU5UUlkgaXMgd3JpdHRlbiByYXRoZXIgdGhhbiB0aGUgZmlsZSwgc28gdGhlIHJlcG8gZm9sZGVyIGlzIGxlZnQgZXhhY3RseSBhcyBpdCB3YXMsIGFuZFxuLy8gQSB2YXVsdCB3aXRoIG5vdGhpbmcgZWxzZSB0byBjb25maWd1cmUgXHUyMDE0IHdoaWNoIGNvbW1pdHMgbm8gYGFwcC5qc29uYCBhdCBhbGwgXHUyMDE0IGdldHMgb25lIGhlcmUgcmVnYXJkbGVzcy5cbmZ1bmN0aW9uIGluamVjdEFwcEpzb24ocGFyYW1zOiBJbmplY3RBcHBKc29uUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBhcHBKc29uLFxuICAgIGVudHJpZXMsXG4gICAgcm9vdEZvbGRlck5hbWVcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBlbnRyeU5hbWUgPSBqb2luKHJvb3RGb2xkZXJOYW1lLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbiwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQXBwSnNvbik7XG4gIGVudHJpZXMuc2V0KGVudHJ5TmFtZSwgQnVmZmVyLmZyb20oYnVpbGRBcmNoaXZlZERlbW9WYXVsdEFwcEpzb25Db250ZW50KHsgYXBwSnNvbiB9KSwgJ3V0Zi04JykpO1xufVxuXG4vLyBJbmplY3RzIHRoZSBidWlsdCwgYG9ic2lkaWFuLWRldi11dGlsc2Atb3duZWQgYGRlbW8tdmF1bHQtaGVscGVyYCBib290c3RyYXAgcGx1Z2luIChzaGlwcGVkIGluIHRoaXMgcGFja2FnZSkgaW50byB0aGUgZGVtbyB2YXVsdCwgc28gbm8gcGVyLXZhdWx0IGNvcHkgaXMgY29tbWl0dGVkIGFuZCBhbiBgb2JzaWRpYW4tZGV2LXV0aWxzYCBidW1wIHByb3BhZ2F0ZXMgZml4ZXMuXG4vL1xuLy8gQWxvbmdzaWRlIHRoZSBiaW5hcmllcyBpdCB3cml0ZXMgdGhlIGhlbHBlcidzIG93biBgZGF0YS5qc29uYCBuYW1pbmcgdGhlIGRlbW9uc3RyYXRlZCBwbHVnaW4uIFRoYXQgaXNcbi8vIFRoZSBvbmUgbW9tZW50IHRoZSBpZCBpcyBrbm93biBmb3IgY2VydGFpbiBcdTIwMTQgaXQgY29tZXMgZnJvbSB0aGUgcGx1Z2luJ3Mgb3duIG1hbmlmZXN0IFx1MjAxNCB3aGVyZWFzIHRoZVxuLy8gT3BlbmVkIHZhdWx0IG9ubHkgb2ZmZXJzIHBsdWdpbiBmb2xkZXJzIHRvIGNvdW50LCB3aGljaCB0aGUgYm9vdHN0cmFwIGl0c2VsZiBhZGRzIHRvIChzZWVcbi8vIGBEZW1vVmF1bHRIZWxwZXJTZXR0aW5nc2ApLlxuYXN5bmMgZnVuY3Rpb24gaW5qZWN0RGVtb1ZhdWx0SGVscGVyKGRlbW9lZFBsdWdpbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcGFja2FnZUZvbGRlciA9IGdldFJvb3RGb2xkZXIoZ2V0Rm9sZGVyTmFtZShpbXBvcnQubWV0YS51cmwpKTtcbiAgaWYgKCFwYWNrYWdlRm9sZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcmVzb2x2ZSB0aGUgb2JzaWRpYW4tZGV2LXV0aWxzIHBhY2thZ2UgZm9sZGVyIHRvIGluamVjdCB0aGUgZGVtby12YXVsdC1oZWxwZXIgcGx1Z2luLicpO1xuICB9XG5cbiAgY29uc3QgaGVscGVyU291cmNlUGF0aCA9IGpvaW4ocGFja2FnZUZvbGRlciwgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0RGVtb1ZhdWx0SGVscGVyKTtcbiAgY29uc3QgaGVscGVyRm9sZGVyID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQsXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbixcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlBsdWdpbnMsXG4gICAgICBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSURcbiAgICApXG4gIH0pO1xuICBhd2FpdCBta2RpcihoZWxwZXJGb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBhd2FpdCBjcChoZWxwZXJTb3VyY2VQYXRoLCBoZWxwZXJGb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHNldHRpbmdzOiBEZW1vVmF1bHRIZWxwZXJTZXR0aW5ncyA9IHsgZGVtb2VkUGx1Z2luSWQgfTtcbiAgYXdhaXQgd3JpdGVGaWxlKGpvaW4oaGVscGVyRm9sZGVyLCBEQVRBX0pTT05fRklMRV9OQU1FKSwgYCR7SlNPTi5zdHJpbmdpZnkoc2V0dGluZ3MsIG51bGwsIERBVEFfSlNPTl9JTkRFTlQpfVxcbmAsICd1dGYtOCcpO1xufVxuXG4vLyBOYW1lcyB0aGUgdmVyc2lvbiBvbiB0aGUgYXJjaGl2ZWQgYFJFQURNRS5tZGAncyBoZWFkaW5nLCBzbyB0aGUgdmF1bHQgc2F5cyB3aGljaCByZWxlYXNlIGl0IGRlbW9uc3RyYXRlc1xuLy8gSG93ZXZlciBmYXIgaXQgdHJhdmVscyBmcm9tIHRoZSByZWxlYXNlIHBhZ2UgaXQgd2FzIGRvd25sb2FkZWQgZnJvbS5cbi8vXG4vLyBFbnRyeS1vbmx5LCBmb3IgdGhlIHNhbWUgcmVhc29uIGBpbmplY3RBcHBKc29uYCBpczogdGhlIGNvbW1pdHRlZCBSRUFETUUgaXMgYSB0cmFja2VkLCBoYW5kLWF1dGhvcmVkXG4vLyBGaWxlIGFuZCBgdXBkYXRlVmVyc2lvbmAgYXJjaGl2ZXMgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgcHVzaGVkLlxuLy9cbi8vIEEgdmF1bHQgdGhhdCBzaGlwcyBubyBSRUFETUUsIG9yIG9uZSBvcGVuaW5nIG9uIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIGAjIEgxYCwgaXMgbGVmdCBhbG9uZSByYXRoZXJcbi8vIFRoYW4gY29ycmVjdGVkLiBUaGUgZGVtby12YXVsdCBjb3ZlcmFnZSBzdWl0ZSBleGVtcHRzIGBSRUFETUUubWRgIGZyb20gaXRzIEgxIGNoZWNrLCBzbyBuZWl0aGVyIHNoYXBlXG4vLyBJcyBhIGRlZmVjdCBcdTIwMTQgYW5kIGEgcmVsZWFzZSBpcyB0aGUgd3JvbmcgbW9tZW50IHRvIHN0YXJ0IGZhaWxpbmcgb24gb25lLlxuZnVuY3Rpb24gaW5qZWN0UmVhZG1lVmVyc2lvbihwYXJhbXM6IEluamVjdFJlYWRtZVZlcnNpb25QYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGVudHJpZXMsXG4gICAgcm9vdEZvbGRlck5hbWUsXG4gICAgdmVyc2lvblxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGVudHJ5TmFtZSA9IGpvaW4ocm9vdEZvbGRlck5hbWUsIFJFQURNRV9GSUxFX05BTUUpO1xuICBjb25zdCBlbnRyeSA9IGVudHJpZXMuZ2V0KGVudHJ5TmFtZSk7XG4gIGlmICghZW50cnkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb250ZW50ID0gZW50cnkudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIGNvbnN0IHZlcnNpb25lZENvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoT1BFTklOR19IRUFESU5HX1JFR19FWFAsIChoZWFkaW5nKSA9PiBgJHtoZWFkaW5nfSB2JHt2ZXJzaW9ufWApO1xuICBpZiAodmVyc2lvbmVkQ29udGVudCA9PT0gY29udGVudCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGVudHJpZXMuc2V0KGVudHJ5TmFtZSwgQnVmZmVyLmZyb20odmVyc2lvbmVkQ29udGVudCwgJ3V0Zi04JykpO1xufVxuXG4vLyBSZWFkcyB0aGUgZGVtbyB2YXVsdCdzIGNvbW1pdHRlZCBgLm9ic2lkaWFuL2FwcC5qc29uYCwgcmVmdXNpbmcgdGhlIHNldHRpbmdzIHRoaXMgcGFja2FnZSBvd25zLlxuLy9cbi8vIFRob3NlIHNldHRpbmdzIGFyZSBpbmplY3RlZCBpbnRvIHRoZSBhcmNoaXZlLCBzbyBhIGNvbW1pdHRlZCBvbmUgaXMgYSBzZWNvbmQgc291cmNlIG9mIHRydXRoIHRoYXRcbi8vIE5vdGhpbmcga2VlcHMgaW4gc3RlcC4gVGhlIGRlbW8tdmF1bHQgY292ZXJhZ2Ugc3VpdGUgYWxyZWFkeSBmYWlscyBvbiBpdCwgd2hpY2ggbWVhbnMgcmVhY2hpbmcgaGVyZVxuLy8gTWVhbnMgdGhhdCBnYXRlIHdhcyBza2lwcGVkIFx1MjAxNCBzbyB0aGlzIHJlZnVzZXMgcmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgYSB2YWx1ZSBzb21lYm9keSBjaG9zZSBvbiBwdXJwb3NlLlxuYXN5bmMgZnVuY3Rpb24gcmVhZENvbW1pdHRlZEFwcEpzb24oKTogUHJvbWlzZTxEZW1vVmF1bHRBcHBKc29uPiB7XG4gIGNvbnN0IGFwcEpzb25QYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0LCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbiwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQXBwSnNvbilcbiAgfSk7XG4gIGNvbnN0IGNvbnRlbnQgPSBleGlzdHNTeW5jKGFwcEpzb25QYXRoKSA/IGF3YWl0IHJlYWRGaWxlKGFwcEpzb25QYXRoLCAndXRmLTgnKSA6IG51bGw7XG4gIGNvbnN0IGFwcEpzb24gPSBwYXJzZURlbW9WYXVsdEFwcEpzb24oeyBjb250ZW50LCBwYXRoOiBhcHBKc29uUGF0aCB9KTtcblxuICBjb25zdCBvd25lZFNldHRpbmdzID0gZmluZE93bmVkRGVtb1ZhdWx0QXBwSnNvblNldHRpbmdzKHsgYXBwSnNvbiB9KTtcbiAgaWYgKG93bmVkU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke2FwcEpzb25QYXRofSBzZXRzICR7b3duZWRTZXR0aW5ncy5qb2luKCcsICcpfSwgd2hpY2ggb2JzaWRpYW4tZGV2LXV0aWxzIG93bnMgYW5kIHdyaXRlcyBpbnRvIHRoZSBhcmNoaXZlZCBkZW1vIHZhdWx0LiBTZXR0aW5ncyBpdCBvd25zIG11c3Qgbm90IGJlIGNvbW1pdHRlZC5gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBhcHBKc29uO1xufVxuXG4vLyBSZWFkcyBldmVyeSBmaWxlIGluIHRoZSBkZW1vIHZhdWx0IGFzIGFuIGFyY2hpdmUgZW50cnksIHVuZGVyIHRoZSBzaW5nbGUgdG9wLWxldmVsIGZvbGRlciB0aGUgYXJjaGl2ZVxuLy8gU2l0cyBpbi5cbi8vXG4vLyBPbmx5IEZJTEVTIGJlY29tZSBlbnRyaWVzLiBHaXQgY2Fubm90IHRyYWNrIGFuIGVtcHR5IGZvbGRlciwgc28gYSBjb21taXR0ZWQgZGVtbyB2YXVsdCBoYXMgbm9uZSBcdTIwMTQgYW5kXG4vLyBgZXh0cmFjdFppcEFyY2hpdmVgIGNyZWF0ZXMgYW4gZW50cnkncyBwYXJlbnQgZm9sZGVycyB3aGV0aGVyIG9yIG5vdCB0aGUgYXJjaGl2ZSBkZWNsYXJlZCB0aGVtLCBzbyBhXG4vLyBGb2xkZXIgZW50cnkgd291bGQgZWFybiBub3RoaW5nIGV2ZW4gaWYgb25lIGNvdWxkIGV4aXN0LlxuYXN5bmMgZnVuY3Rpb24gcmVhZERlbW9WYXVsdEVudHJpZXMocGFyYW1zOiBSZWFkRGVtb1ZhdWx0RW50cmllc1BhcmFtcyk6IFByb21pc2U8RGVtb1ZhdWx0WmlwRW50cmllcz4ge1xuICBjb25zdCB7XG4gICAgZGVtb1ZhdWx0UGF0aCxcbiAgICByb290Rm9sZGVyTmFtZVxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGVudHJpZXM6IERlbW9WYXVsdFppcEVudHJpZXMgPSBuZXcgTWFwPHN0cmluZywgQnVmZmVyPigpO1xuICBmb3IgKGNvbnN0IGRpcmVudCBvZiBhd2FpdCByZWFkZGlyUG9zaXgoZGVtb1ZhdWx0UGF0aCwgeyByZWN1cnNpdmU6IHRydWUsIHdpdGhGaWxlVHlwZXM6IHRydWUgfSkpIHtcbiAgICBpZiAoIWRpcmVudC5pc0ZpbGUoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aCA9IGpvaW4oZGlyZW50LnBhcmVudFBhdGgsIGRpcmVudC5uYW1lKTtcbiAgICBlbnRyaWVzLnNldChqb2luKHJvb3RGb2xkZXJOYW1lLCByZWxhdGl2ZShkZW1vVmF1bHRQYXRoLCBwYXRoKSksIGF3YWl0IHJlYWRGaWxlKHBhdGgpKTtcbiAgfVxuXG4gIHJldHVybiBlbnRyaWVzO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQ0Esb0JBQXdCO0FBQ3hCLHFCQUEyQjtBQUMzQixzQkFLTztBQUtQLCtCQUdPO0FBQ1Asd0NBQXdDO0FBQ3hDLGtCQUlPO0FBQ1AsaUNBSU87QUFDUCxnQkFBNkI7QUFD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
|
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
* roughly 34 KB of minified JavaScript into EVERY Obsidian plugin built with this library: a plugin
|
|
9
9
|
* ships a single CJS `main.js`, esbuild has no code splitting to put a dependency behind, and a
|
|
10
10
|
* `await import()` only defers evaluation — the module body is inlined either way. `node:zlib` is
|
|
11
|
-
* already an esbuild external, so the same work now costs a plugin bundle nothing at all. Archives
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* already an esbuild external, so the same work now costs a plugin bundle nothing at all. Archives are
|
|
12
|
+
* WRITTEN with `fflate` at release time (`script-utils/demo-vault.ts`), which is Node-side tooling and
|
|
13
|
+
* never reaches a plugin bundle — a third-party writer there is also what keeps this reader checked
|
|
14
|
+
* against an implementation that is not its own.
|
|
14
15
|
*
|
|
15
16
|
* Deliberately narrow: it reads exactly what that writer produces — stored and deflated entries in an
|
|
16
17
|
* unencrypted archive below the 4 GB / 65535-entry ZIP64 threshold — and raises a named error for
|
|
@@ -171,4 +171,4 @@ function readEntryData(archive, entry) {
|
|
|
171
171
|
export {
|
|
172
172
|
extractZipArchive
|
|
173
173
|
};
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Rlc2t0b3AtemlwLWV4dHJhY3Rvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEV4dHJhY3RzIGEgWklQIGFyY2hpdmUgdG8gZGlzayB1c2luZyBvbmx5IE5vZGUncyBgemxpYmAgXHUyMDE0IHdpdGggbm8gdGhpcmQtcGFydHkgdW56aXAgZGVwZW5kZW5jeS5cbiAqXG4gKiBJdCBleGlzdHMgZm9yIG9uZSBtZWFzdXJlZCByZWFzb24uIFRoZSBkZXBlbmRlbmN5IGl0IHJlcGxhY2VkIG9uIHRoaXMgcGF0aCwgYGFkbS16aXBgLCBidW5kbGVkXG4gKiByb3VnaGx5IDM0IEtCIG9mIG1pbmlmaWVkIEphdmFTY3JpcHQgaW50byBFVkVSWSBPYnNpZGlhbiBwbHVnaW4gYnVpbHQgd2l0aCB0aGlzIGxpYnJhcnk6IGEgcGx1Z2luXG4gKiBzaGlwcyBhIHNpbmdsZSBDSlMgYG1haW4uanNgLCBlc2J1aWxkIGhhcyBubyBjb2RlIHNwbGl0dGluZyB0byBwdXQgYSBkZXBlbmRlbmN5IGJlaGluZCwgYW5kIGFcbiAqIGBhd2FpdCBpbXBvcnQoKWAgb25seSBkZWZlcnMgZXZhbHVhdGlvbiBcdTIwMTQgdGhlIG1vZHVsZSBib2R5IGlzIGlubGluZWQgZWl0aGVyIHdheS4gYG5vZGU6emxpYmAgaXNcbiAqIGFscmVhZHkgYW4gZXNidWlsZCBleHRlcm5hbCwgc28gdGhlIHNhbWUgd29yayBub3cgY29zdHMgYSBwbHVnaW4gYnVuZGxlIG5vdGhpbmcgYXQgYWxsLiBBcmNoaXZlc1xuICogYXJlIHN0aWxsIFdSSVRURU4gd2l0aCBgYWRtLXppcGAgYXQgcmVsZWFzZSB0aW1lIChgc2NyaXB0LXV0aWxzL2RlbW8tdmF1bHQudHNgKSwgd2hpY2ggaXMgTm9kZS1zaWRlXG4gKiB0b29saW5nIGFuZCBuZXZlciByZWFjaGVzIGEgcGx1Z2luIGJ1bmRsZS5cbiAqXG4gKiBEZWxpYmVyYXRlbHkgbmFycm93OiBpdCByZWFkcyBleGFjdGx5IHdoYXQgdGhhdCB3cml0ZXIgcHJvZHVjZXMgXHUyMDE0IHN0b3JlZCBhbmQgZGVmbGF0ZWQgZW50cmllcyBpbiBhblxuICogdW5lbmNyeXB0ZWQgYXJjaGl2ZSBiZWxvdyB0aGUgNCBHQiAvIDY1NTM1LWVudHJ5IFpJUDY0IHRocmVzaG9sZCBcdTIwMTQgYW5kIHJhaXNlcyBhIG5hbWVkIGVycm9yIGZvclxuICogYW55dGhpbmcgZWxzZSByYXRoZXIgdGhhbiBndWVzc2luZyBhdCBpdC4gU2l6ZXMgYW5kIG9mZnNldHMgYXJlIHRha2VuIGZyb20gdGhlIGNlbnRyYWwgZGlyZWN0b3J5LFxuICogd2hpY2ggaXMgYXV0aG9yaXRhdGl2ZSBldmVuIGZvciBhcmNoaXZlcyB3cml0dGVuIHdpdGggZGF0YSBkZXNjcmlwdG9ycy5cbiAqXG4gKiBUaGUgYG5vZGU6YCBpbXBvcnRzIGJlbG93IGFyZSBzYWZlIHRvIG1lcmVseSBFVkFMVUFURSBvbiBtb2JpbGUgXHUyMDE0IGByZXF1aXJlYCBoYW5kcyBiYWNrIGB1bmRlZmluZWRgXG4gKiB0aGVyZSBhbmQgbm90aGluZyByZWFkcyBpdCBhdCBsb2FkIHRpbWUgXHUyMDE0IHNvIHRoaXMgbW9kdWxlIGNhbiBzaXQgaW4gdGhlIGdlbmVyYXRlZCBiYXJyZWxzIHdpdGhvdXRcbiAqIGJyZWFraW5nIHRoZSBsaWJyYXJ5J3MgbG9hZCBvbiBBbmRyb2lkLiBPbmx5IHRoZSBjYWxscyBhcmUgZGVza3RvcC1vbmx5LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQnVmZmVyIH0gZnJvbSAnbm9kZTpidWZmZXInO1xuXG5pbXBvcnQgeyBpbmZsYXRlUmF3U3luYyB9IGZyb20gJ25vZGU6emxpYic7XG5cbmltcG9ydCB7XG4gIGRpcm5hbWUsXG4gIGpvaW5cbn0gZnJvbSAnLi9wYXRoLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZXh0cmFjdFppcEFyY2hpdmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dHJhY3RaaXBBcmNoaXZlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSByYXcgWklQIGFyY2hpdmUgYnl0ZXMuXG4gICAqL1xuICByZWFkb25seSBhcmNoaXZlOiBCdWZmZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBmaWxlLXN5c3RlbSBpbXBsZW1lbnRhdGlvbiB0aGUgZXh0cmFjdGVkIGVudHJpZXMgYXJlIHdyaXR0ZW4gd2l0aC5cbiAgICpcbiAgICogSW5qZWN0ZWQgcmF0aGVyIHRoYW4gaW1wb3J0ZWQgc28gdGhlIGNhbGxlciBjaG9vc2VzIHdoaWNoIGBmc2Agd3JpdGVzIHRoZSBmaWxlcy4gVGhlIGRlbW8tdmF1bHRcbiAgICogb3BlbmVyIGhhbmRzIG92ZXIgRWxlY3Ryb24ncyBgb3JpZ2luYWwtZnNgIChzZWUge0BsaW5rIFppcEV4dHJhY3Rpb25GaWxlU3lzdGVtfSkuXG4gICAqL1xuICByZWFkb25seSBmaWxlU3lzdGVtOiBaaXBFeHRyYWN0aW9uRmlsZVN5c3RlbTtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSB0byBleHRyYWN0IGludG8uIENyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXREaXJlY3Rvcnk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgc2xpY2Ugb2YgYG5vZGU6ZnNgIGV4dHJhY3Rpb24gbmVlZHMuXG4gKlxuICogT25seSB0aGUgdHdvIFdSSVRJTkcgY2FsbHMgYXJlIHJlcXVpcmVkLCBhbmQgdGhhdCBpcyBkZWxpYmVyYXRlOiBFbGVjdHJvbidzIGFzYXIgbGF5ZXIgaW50ZXJjZXB0c1xuICogYGZzYCBSRUFEUyAoYW5kIGBleGlzdHNTeW5jYCkgb24gYW55IHBhdGggY29udGFpbmluZyBgLmFzYXJgLCB3aGljaCBhIGRlbW8gdmF1bHQgbWF5IGxlZ2l0aW1hdGVseVxuICogc2hpcCBhcyBhIHBsYWluIGZpbGUuIE5ldmVyIHByb2JpbmcgdGhlIHRhcmdldCB3aXRoIGEgcmVhZCBrZWVwcyB0aGF0IGludGVyY2VwdGlvbiBvdXQgb2YgdGhlXG4gKiBwaWN0dXJlIGVudGlyZWx5LCBhbmQgYSBjYWxsZXIgdGhhdCBoYW5kcyBvdmVyIEVsZWN0cm9uJ3MgYG9yaWdpbmFsLWZzYCBpcyBzYWZlIGV2ZW4gZnJvbSB0aGVcbiAqIHdyaXRlIHNpZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgWmlwRXh0cmFjdGlvbkZpbGVTeXN0ZW0ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIGFueSBtaXNzaW5nIHBhcmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gVGhlIGRpcmVjdG9yeSB0byBjcmVhdGUuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBaaXBFeHRyYWN0aW9uTWtkaXJPcHRpb25zfS5cbiAgICogQHJldHVybnMgVGhlIGZpcnN0IGRpcmVjdG9yeSBjcmVhdGVkLCBpZiBhbnkuXG4gICAqL1xuICBta2RpclN5bmMocGF0aDogc3RyaW5nLCBvcHRpb25zOiBaaXBFeHRyYWN0aW9uTWtkaXJPcHRpb25zKTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXcml0ZXMgYSBmaWxlLCBvdmVyd3JpdGluZyBpdCBpZiBpdCBleGlzdHMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gVGhlIGZpbGUgdG8gd3JpdGUuXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIGJ5dGVzIHRvIHdyaXRlLlxuICAgKi9cbiAgd3JpdGVGaWxlU3luYyhwYXRoOiBzdHJpbmcsIGRhdGE6IEJ1ZmZlcik6IHZvaWQ7XG59XG5cbi8qKlxuICogVGhlIG9wdGlvbnMge0BsaW5rIFppcEV4dHJhY3Rpb25GaWxlU3lzdGVtLm1rZGlyU3luY30gaXMgYWx3YXlzIGNhbGxlZCB3aXRoLlxuICpcbiAqIEV4dHJhY3Rpb24gbmV2ZXIgcHJvYmVzIGZvciBhbiBleGlzdGluZyBkaXJlY3RvcnksIHNvIGV2ZXJ5IGNhbGwgaGFzIHRvIGNyZWF0ZSB0aGUgbWlzc2luZyBwYXJlbnRzXG4gKiBpdHNlbGYgYW5kIHRvbGVyYXRlIGEgZGlyZWN0b3J5IHRoYXQgaXMgYWxyZWFkeSB0aGVyZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBaaXBFeHRyYWN0aW9uTWtkaXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFsd2F5cyBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSByZWN1cnNpdmU6IHRydWU7XG59XG5cbmludGVyZmFjZSBaaXBFbnRyeSB7XG4gIHJlYWRvbmx5IGNvbXByZXNzZWRTaXplOiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvbXByZXNzaW9uTWV0aG9kOiBudW1iZXI7XG4gIHJlYWRvbmx5IGxvY2FsSGVhZGVyT2Zmc2V0OiBudW1iZXI7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuY29uc3QgRU5EX09GX0NFTlRSQUxfRElSRUNUT1JZX1NJR05BVFVSRSA9IDB4MDZfMDVfNEJfNTA7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9IRUFERVJfU0lHTkFUVVJFID0gMHgwMl8wMV80Ql81MDtcbmNvbnN0IExPQ0FMX0ZJTEVfSEVBREVSX1NJR05BVFVSRSA9IDB4MDRfMDNfNEJfNTA7XG5cbmNvbnN0IEVORF9PRl9DRU5UUkFMX0RJUkVDVE9SWV9TSVpFID0gMjI7XG5jb25zdCBNQVhfQVJDSElWRV9DT01NRU5UX0xFTkdUSCA9IDY1XzUzNTtcblxuLy8gQSBjb3VudCBvciBvZmZzZXQgc2F0dXJhdGVkIHRvIGFsbC1vbmVzIG1lYW5zIHRoZSByZWFsIHZhbHVlIGxpdmVzIGluIGEgWklQNjQgcmVjb3JkIHRoaXMgcmVhZGVyXG4vLyBEb2VzIG5vdCBpbXBsZW1lbnQsIHNvIHRoZSBmaWVsZCBtdXN0IG5ldmVyIGJlIHJlYWQgYXQgZmFjZSB2YWx1ZS5cbmNvbnN0IFNBVFVSQVRFRF9VSU5UXzE2ID0gNjVfNTM1O1xuY29uc3QgU0FUVVJBVEVEX1VJTlRfMzIgPSA0XzI5NF85NjdfMjk1O1xuXG4vLyBGaWVsZCBvZmZzZXRzIHdpdGhpbiB0aGUgZW5kLW9mLWNlbnRyYWwtZGlyZWN0b3J5IHJlY29yZC5cbmNvbnN0IEFSQ0hJVkVfRU5UUllfQ09VTlRfT0ZGU0VUID0gMTA7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9TVEFSVF9PRkZTRVQgPSAxNjtcblxuLy8gRmllbGQgb2Zmc2V0cyB3aXRoaW4gYSBjZW50cmFsLWRpcmVjdG9yeSBoZWFkZXIuXG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9GTEFHU19PRkZTRVQgPSA4O1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfQ09NUFJFU1NJT05fTUVUSE9EX09GRlNFVCA9IDEwO1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfQ09NUFJFU1NFRF9TSVpFX09GRlNFVCA9IDIwO1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfTkFNRV9MRU5HVEhfT0ZGU0VUID0gMjg7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9FWFRSQV9MRU5HVEhfT0ZGU0VUID0gMzA7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9DT01NRU5UX0xFTkdUSF9PRkZTRVQgPSAzMjtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0xPQ0FMX0hFQURFUl9PRkZTRVRfT0ZGU0VUID0gNDI7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9IRUFERVJfU0laRSA9IDQ2O1xuXG4vLyBGaWVsZCBvZmZzZXRzIHdpdGhpbiBhIGxvY2FsIGZpbGUgaGVhZGVyLlxuY29uc3QgTE9DQUxfSEVBREVSX05BTUVfTEVOR1RIX09GRlNFVCA9IDI2O1xuY29uc3QgTE9DQUxfSEVBREVSX0VYVFJBX0xFTkdUSF9PRkZTRVQgPSAyODtcbmNvbnN0IExPQ0FMX0hFQURFUl9TSVpFID0gMzA7XG5cbmNvbnN0IENPTVBSRVNTSU9OX01FVEhPRF9TVE9SRUQgPSAwO1xuY29uc3QgQ09NUFJFU1NJT05fTUVUSE9EX0RFRkxBVEVEID0gODtcblxuLy8gQml0IDAgb2YgdGhlIGdlbmVyYWwtcHVycG9zZSBmbGFncyBtYXJrcyBhbiBlbmNyeXB0ZWQgZW50cnksIGFuZCBpdCBpcyB0aGUgbG93ZXN0IGJpdCBcdTIwMTQgc28gdGhlXG4vLyBSZW1haW5kZXIgdGVzdHMgaXQgd2l0aG91dCByZWFjaGluZyBmb3IgYSBiaXR3aXNlIG9wZXJhdG9yLlxuY29uc3QgRU5DUllQVEVEX0ZMQUdfRElWSVNPUiA9IDI7XG5cbmNvbnN0IEVOVFJZX05BTUVfU0VQQVJBVE9SID0gJy8nO1xuY29uc3QgV0lORE9XU19EUklWRV9QUkVGSVhfUkVHX0VYUCA9IC9eW0EtWmEtel06LztcblxuLyoqXG4gKiBFeHRyYWN0cyBldmVyeSBlbnRyeSBvZiBhIFpJUCBhcmNoaXZlIGludG8gYSBkaXJlY3RvcnkuXG4gKlxuICogRGlyZWN0b3J5IGVudHJpZXMgYmVjb21lIGRpcmVjdG9yaWVzOyBhIGZpbGUgZW50cnkncyBwYXJlbnRzIGFyZSBjcmVhdGVkIHdoZXRoZXIgb3Igbm90IHRoZSBhcmNoaXZlXG4gKiBkZWNsYXJlZCB0aGVtLiBBbiBlbnRyeSB3aG9zZSBuYW1lIHdvdWxkIGVzY2FwZSB7QGxpbmsgRXh0cmFjdFppcEFyY2hpdmVQYXJhbXMudGFyZ2V0RGlyZWN0b3J5fSBpc1xuICogcmVmdXNlZCByYXRoZXIgdGhhbiB3cml0dGVuICh0aGUgXCJ6aXAgc2xpcFwiIHRyYXZlcnNhbCksIGFzIGlzIGFuIGVuY3J5cHRlZCwgWklQNjQsIG9yXG4gKiB1bmtub3duLWNvbXByZXNzaW9uIGFyY2hpdmUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgRXh0cmFjdFppcEFyY2hpdmVQYXJhbXN9LlxuICogQHRocm93cyBBbiB7QGxpbmsgRXJyb3J9IG5hbWluZyB0aGUgcmVhc29uIHdoZW4gdGhlIGFyY2hpdmUgY2Fubm90IGJlIHJlYWQgYXMgd3JpdHRlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RaaXBBcmNoaXZlKHBhcmFtczogRXh0cmFjdFppcEFyY2hpdmVQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGFyY2hpdmUsXG4gICAgZmlsZVN5c3RlbSxcbiAgICB0YXJnZXREaXJlY3RvcnlcbiAgfSA9IHBhcmFtcztcblxuICBmaWxlU3lzdGVtLm1rZGlyU3luYyh0YXJnZXREaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgcmVhZENlbnRyYWxEaXJlY3RvcnkoYXJjaGl2ZSkpIHtcbiAgICBhc3NlcnRTYWZlRW50cnlOYW1lKGVudHJ5Lm5hbWUpO1xuXG4gICAgaWYgKGVudHJ5Lm5hbWUuZW5kc1dpdGgoRU5UUllfTkFNRV9TRVBBUkFUT1IpKSB7XG4gICAgICAvLyBOYW1lZCB3aXRob3V0IGl0cyB0cmFpbGluZyBzZXBhcmF0b3IsIHNvIHRoZSBjcmVhdGVkIHBhdGggcmVhZHMgdGhlIHNhbWUgYXMgZXZlcnkgb3RoZXIgb25lLlxuICAgICAgZmlsZVN5c3RlbS5ta2RpclN5bmMoam9pbih0YXJnZXREaXJlY3RvcnksIGVudHJ5Lm5hbWUuc2xpY2UoMCwgLTEpKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyeVBhdGggPSBqb2luKHRhcmdldERpcmVjdG9yeSwgZW50cnkubmFtZSk7XG4gICAgZmlsZVN5c3RlbS5ta2RpclN5bmMoZGlybmFtZShlbnRyeVBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBmaWxlU3lzdGVtLndyaXRlRmlsZVN5bmMoZW50cnlQYXRoLCByZWFkRW50cnlEYXRhKGFyY2hpdmUsIGVudHJ5KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWZ1c2VzIGFuIGVudHJ5IG5hbWUgdGhhdCB3b3VsZCBwbGFjZSB0aGUgZXh0cmFjdGVkIGZpbGUgb3V0c2lkZSB0aGUgdGFyZ2V0IGRpcmVjdG9yeS5cbiAqXG4gKiBBbiBhcmNoaXZlIGlzIHVudHJ1c3RlZCBpbnB1dCBldmVuIHdoZW4gd2UgcHVibGlzaGVkIGl0IG91cnNlbHZlcywgYW5kIGV2ZXJ5IG9uZSBvZiB0aGVzZSBzaGFwZXNcbiAqIGVzY2FwZXMgdGhlIHRhcmdldDogYW4gYWJzb2x1dGUgUE9TSVggcGF0aCwgYSBXaW5kb3dzIGRyaXZlLXF1YWxpZmllZCBwYXRoLCBhIGJhY2tzbGFzaCAod2hpY2ggdGhlXG4gKiBaSVAgc3BlY2lmaWNhdGlvbiBmb3JiaWRzIGFzIGEgc2VwYXJhdG9yLCBzbyBpdHMgb25seSB1c2UgaGVyZSBpcyB0byBzbXVnZ2xlIG9uZSBwYXN0IGFcbiAqIGZvcndhcmQtc2xhc2ggY2hlY2spLCBhbmQgYSBgLi5gIHNlZ21lbnQuXG4gKlxuICogQHBhcmFtIGVudHJ5TmFtZSAtIFRoZSBlbnRyeSBuYW1lIGFzIHJlY29yZGVkIGluIHRoZSBhcmNoaXZlLlxuICovXG5mdW5jdGlvbiBhc3NlcnRTYWZlRW50cnlOYW1lKGVudHJ5TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChlbnRyeU5hbWUuc3RhcnRzV2l0aChFTlRSWV9OQU1FX1NFUEFSQVRPUikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJlZnVzaW5nIHRvIGV4dHJhY3QgdGhlIGFic29sdXRlIGFyY2hpdmUgZW50cnkgJyR7ZW50cnlOYW1lfScuYCk7XG4gIH1cblxuICBpZiAoV0lORE9XU19EUklWRV9QUkVGSVhfUkVHX0VYUC50ZXN0KGVudHJ5TmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJlZnVzaW5nIHRvIGV4dHJhY3QgdGhlIGRyaXZlLXF1YWxpZmllZCBhcmNoaXZlIGVudHJ5ICcke2VudHJ5TmFtZX0nLmApO1xuICB9XG5cbiAgaWYgKGVudHJ5TmFtZS5pbmNsdWRlcygnXFxcXCcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZWZ1c2luZyB0byBleHRyYWN0IHRoZSBhcmNoaXZlIGVudHJ5ICcke2VudHJ5TmFtZX0nLCB3aGljaCB1c2VzIGEgYmFja3NsYXNoIHNlcGFyYXRvci5gKTtcbiAgfVxuXG4gIGlmIChlbnRyeU5hbWUuc3BsaXQoRU5UUllfTkFNRV9TRVBBUkFUT1IpLmluY2x1ZGVzKCcuLicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZWZ1c2luZyB0byBleHRyYWN0IHRoZSBhcmNoaXZlIGVudHJ5ICcke2VudHJ5TmFtZX0nLCB3aGljaCBwb2ludHMgb3V0c2lkZSB0aGUgdGFyZ2V0IGRpcmVjdG9yeS5gKTtcbiAgfVxufVxuXG4vKipcbiAqIExvY2F0ZXMgdGhlIGVuZC1vZi1jZW50cmFsLWRpcmVjdG9yeSByZWNvcmQgYW5kIHJldHVybnMgaXRzIG9mZnNldC5cbiAqXG4gKiBUaGUgcmVjb3JkIHNpdHMgYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBhcmNoaXZlIHVubGVzcyBhIHRyYWlsaW5nIGNvbW1lbnQgZm9sbG93cyBpdCwgc28gaXQgaXMgZm91bmRcbiAqIGJ5IHNjYW5uaW5nIGJhY2t3YXJkcyBvdmVyIHRoZSBjb21tZW50J3MgbWF4aW11bSBsZW5ndGggcmF0aGVyIHRoYW4gYXNzdW1lZCB0byBiZSBhdCBhIGZpeGVkIHBsYWNlLlxuICpcbiAqIEBwYXJhbSBhcmNoaXZlIC0gVGhlIHJhdyBaSVAgYXJjaGl2ZSBieXRlcy5cbiAqIEByZXR1cm5zIFRoZSByZWNvcmQncyBvZmZzZXQuXG4gKi9cbmZ1bmN0aW9uIGZpbmRFbmRPZkNlbnRyYWxEaXJlY3RvcnlPZmZzZXQoYXJjaGl2ZTogQnVmZmVyKTogbnVtYmVyIHtcbiAgY29uc3QgbGFzdFBvc3NpYmxlT2Zmc2V0ID0gYXJjaGl2ZS5sZW5ndGggLSBFTkRfT0ZfQ0VOVFJBTF9ESVJFQ1RPUllfU0laRTtcbiAgY29uc3QgZmlyc3RQb3NzaWJsZU9mZnNldCA9IE1hdGgubWF4KDAsIGxhc3RQb3NzaWJsZU9mZnNldCAtIE1BWF9BUkNISVZFX0NPTU1FTlRfTEVOR1RIKTtcblxuICBmb3IgKGxldCBvZmZzZXQgPSBsYXN0UG9zc2libGVPZmZzZXQ7IG9mZnNldCA+PSBmaXJzdFBvc3NpYmxlT2Zmc2V0OyBvZmZzZXQtLSkge1xuICAgIGlmIChhcmNoaXZlLnJlYWRVSW50MzJMRShvZmZzZXQpID09PSBFTkRfT0ZfQ0VOVFJBTF9ESVJFQ1RPUllfU0lHTkFUVVJFKSB7XG4gICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignVGhlIGFyY2hpdmUgaXMgbm90IGEgWklQIGZpbGU6IGl0cyBlbmQtb2YtY2VudHJhbC1kaXJlY3RvcnkgcmVjb3JkIGlzIG1pc3NpbmcuJyk7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGNlbnRyYWwgZGlyZWN0b3J5LCB3aGljaCBpcyB0aGUgYXJjaGl2ZSdzIGF1dGhvcml0YXRpdmUgaW5kZXggb2YgaXRzIGVudHJpZXMuXG4gKlxuICogQHBhcmFtIGFyY2hpdmUgLSBUaGUgcmF3IFpJUCBhcmNoaXZlIGJ5dGVzLlxuICogQHJldHVybnMgT25lIHtAbGluayBaaXBFbnRyeX0gcGVyIGVudHJ5LCBpbiB0aGUgb3JkZXIgdGhlIGFyY2hpdmUgbGlzdHMgdGhlbS5cbiAqL1xuZnVuY3Rpb24gcmVhZENlbnRyYWxEaXJlY3RvcnkoYXJjaGl2ZTogQnVmZmVyKTogWmlwRW50cnlbXSB7XG4gIGNvbnN0IGVuZE9mQ2VudHJhbERpcmVjdG9yeU9mZnNldCA9IGZpbmRFbmRPZkNlbnRyYWxEaXJlY3RvcnlPZmZzZXQoYXJjaGl2ZSk7XG4gIGNvbnN0IGVudHJ5Q291bnQgPSBhcmNoaXZlLnJlYWRVSW50MTZMRShlbmRPZkNlbnRyYWxEaXJlY3RvcnlPZmZzZXQgKyBBUkNISVZFX0VOVFJZX0NPVU5UX09GRlNFVCk7XG4gIGxldCBlbnRyeU9mZnNldCA9IGFyY2hpdmUucmVhZFVJbnQzMkxFKGVuZE9mQ2VudHJhbERpcmVjdG9yeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX1NUQVJUX09GRlNFVCk7XG5cbiAgaWYgKGVudHJ5Q291bnQgPT09IFNBVFVSQVRFRF9VSU5UXzE2IHx8IGVudHJ5T2Zmc2V0ID09PSBTQVRVUkFURURfVUlOVF8zMikge1xuICAgIHRocm93IG5ldyBFcnJvcignWklQNjQgYXJjaGl2ZXMgYXJlIG5vdCBzdXBwb3J0ZWQuJyk7XG4gIH1cblxuICBjb25zdCBlbnRyaWVzOiBaaXBFbnRyeVtdID0gW107XG4gIGZvciAobGV0IGVudHJ5SW5kZXggPSAwOyBlbnRyeUluZGV4IDwgZW50cnlDb3VudDsgZW50cnlJbmRleCsrKSB7XG4gICAgaWYgKGFyY2hpdmUucmVhZFVJbnQzMkxFKGVudHJ5T2Zmc2V0KSAhPT0gQ0VOVFJBTF9ESVJFQ1RPUllfSEVBREVSX1NJR05BVFVSRSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgYXJjaGl2ZSdzIGNlbnRyYWwgZGlyZWN0b3J5IGlzIGNvcnJ1cHQgYXQgZW50cnkgJHtTdHJpbmcoZW50cnlJbmRleCl9LmApO1xuICAgIH1cblxuICAgIGNvbnN0IGZsYWdzID0gYXJjaGl2ZS5yZWFkVUludDE2TEUoZW50cnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9GTEFHU19PRkZTRVQpO1xuICAgIGlmIChmbGFncyAlIEVOQ1JZUFRFRF9GTEFHX0RJVklTT1IgPT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGVkIFpJUCBhcmNoaXZlcyBhcmUgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wcmVzc2VkU2l6ZSA9IGFyY2hpdmUucmVhZFVJbnQzMkxFKGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfQ09NUFJFU1NFRF9TSVpFX09GRlNFVCk7XG4gICAgY29uc3QgbG9jYWxIZWFkZXJPZmZzZXQgPSBhcmNoaXZlLnJlYWRVSW50MzJMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0xPQ0FMX0hFQURFUl9PRkZTRVRfT0ZGU0VUKTtcbiAgICBpZiAoY29tcHJlc3NlZFNpemUgPT09IFNBVFVSQVRFRF9VSU5UXzMyIHx8IGxvY2FsSGVhZGVyT2Zmc2V0ID09PSBTQVRVUkFURURfVUlOVF8zMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdaSVA2NCBhcmNoaXZlcyBhcmUgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lTGVuZ3RoID0gYXJjaGl2ZS5yZWFkVUludDE2TEUoZW50cnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9OQU1FX0xFTkdUSF9PRkZTRVQpO1xuICAgIGNvbnN0IG5hbWVPZmZzZXQgPSBlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0hFQURFUl9TSVpFO1xuICAgIGVudHJpZXMucHVzaCh7XG4gICAgICBjb21wcmVzc2VkU2l6ZSxcbiAgICAgIGNvbXByZXNzaW9uTWV0aG9kOiBhcmNoaXZlLnJlYWRVSW50MTZMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0NPTVBSRVNTSU9OX01FVEhPRF9PRkZTRVQpLFxuICAgICAgbG9jYWxIZWFkZXJPZmZzZXQsXG4gICAgICBuYW1lOiBhcmNoaXZlLnRvU3RyaW5nKCd1dGYtOCcsIG5hbWVPZmZzZXQsIG5hbWVPZmZzZXQgKyBuYW1lTGVuZ3RoKVxuICAgIH0pO1xuXG4gICAgZW50cnlPZmZzZXQgPSBuYW1lT2Zmc2V0XG4gICAgICArIG5hbWVMZW5ndGhcbiAgICAgICsgYXJjaGl2ZS5yZWFkVUludDE2TEUoZW50cnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9FWFRSQV9MRU5HVEhfT0ZGU0VUKVxuICAgICAgKyBhcmNoaXZlLnJlYWRVSW50MTZMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0NPTU1FTlRfTEVOR1RIX09GRlNFVCk7XG4gIH1cblxuICByZXR1cm4gZW50cmllcztcbn1cblxuLyoqXG4gKiBSZWFkcyBhbmQgZGVjb21wcmVzc2VzIG9uZSBlbnRyeSdzIGJ5dGVzLlxuICpcbiAqIFRoZSBkYXRhJ3Mgc3RhcnQgaXMgY29tcHV0ZWQgZnJvbSB0aGUgTE9DQUwgaGVhZGVyIHJhdGhlciB0aGFuIHRoZSBjZW50cmFsIG9uZTogdGhlIHR3byBjYXJyeVxuICogaW5kZXBlbmRlbnQgbmFtZSBhbmQgZXh0cmEtZmllbGQgbGVuZ3RocywgYW5kIG9ubHkgdGhlIGxvY2FsIHBhaXIgZGVzY3JpYmVzIHdoZXJlIHRoZSBieXRlc1xuICogYWN0dWFsbHkgYmVnaW4uXG4gKlxuICogQHBhcmFtIGFyY2hpdmUgLSBUaGUgcmF3IFpJUCBhcmNoaXZlIGJ5dGVzLlxuICogQHBhcmFtIGVudHJ5IC0gVGhlIGVudHJ5LCBhcyByZWFkIGZyb20gdGhlIGNlbnRyYWwgZGlyZWN0b3J5LlxuICogQHJldHVybnMgVGhlIGVudHJ5J3MgdW5jb21wcmVzc2VkIGNvbnRlbnQuXG4gKi9cbmZ1bmN0aW9uIHJlYWRFbnRyeURhdGEoYXJjaGl2ZTogQnVmZmVyLCBlbnRyeTogWmlwRW50cnkpOiBCdWZmZXIge1xuICBpZiAoYXJjaGl2ZS5yZWFkVUludDMyTEUoZW50cnkubG9jYWxIZWFkZXJPZmZzZXQpICE9PSBMT0NBTF9GSUxFX0hFQURFUl9TSUdOQVRVUkUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBhcmNoaXZlIGVudHJ5ICcke2VudHJ5Lm5hbWV9JyBoYXMgYSBjb3JydXB0IGxvY2FsIGhlYWRlci5gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGFPZmZzZXQgPSBlbnRyeS5sb2NhbEhlYWRlck9mZnNldFxuICAgICsgTE9DQUxfSEVBREVSX1NJWkVcbiAgICArIGFyY2hpdmUucmVhZFVJbnQxNkxFKGVudHJ5LmxvY2FsSGVhZGVyT2Zmc2V0ICsgTE9DQUxfSEVBREVSX05BTUVfTEVOR1RIX09GRlNFVClcbiAgICArIGFyY2hpdmUucmVhZFVJbnQxNkxFKGVudHJ5LmxvY2FsSGVhZGVyT2Zmc2V0ICsgTE9DQUxfSEVBREVSX0VYVFJBX0xFTkdUSF9PRkZTRVQpO1xuICBjb25zdCBkYXRhRW5kID0gZGF0YU9mZnNldCArIGVudHJ5LmNvbXByZXNzZWRTaXplO1xuICBpZiAoZGF0YUVuZCA+IGFyY2hpdmUubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgYXJjaGl2ZSBpcyB0cnVuY2F0ZWQ6IGVudHJ5ICcke2VudHJ5Lm5hbWV9JyBydW5zIHBhc3QgaXRzIGVuZC5gKTtcbiAgfVxuXG4gIGNvbnN0IGNvbXByZXNzZWREYXRhID0gYXJjaGl2ZS5zdWJhcnJheShkYXRhT2Zmc2V0LCBkYXRhRW5kKTtcbiAgc3dpdGNoIChlbnRyeS5jb21wcmVzc2lvbk1ldGhvZCkge1xuICAgIGNhc2UgQ09NUFJFU1NJT05fTUVUSE9EX0RFRkxBVEVEOiB7XG4gICAgICByZXR1cm4gaW5mbGF0ZVJhd1N5bmMoY29tcHJlc3NlZERhdGEpO1xuICAgIH1cbiAgICBjYXNlIENPTVBSRVNTSU9OX01FVEhPRF9TVE9SRUQ6IHtcbiAgICAgIHJldHVybiBjb21wcmVzc2VkRGF0YTtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgYXJjaGl2ZSBlbnRyeSAnJHtlbnRyeS5uYW1lfScgdXNlcyB1bnN1cHBvcnRlZCBjb21wcmVzc2lvbiBtZXRob2QgJHtTdHJpbmcoZW50cnkuY29tcHJlc3Npb25NZXRob2QpfS5gKTtcbiAgICB9XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkEsU0FBUyxzQkFBc0I7QUFFL0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUF5RVAsTUFBTSxxQ0FBcUM7QUFDM0MsTUFBTSxxQ0FBcUM7QUFDM0MsTUFBTSw4QkFBOEI7QUFFcEMsTUFBTSxnQ0FBZ0M7QUFDdEMsTUFBTSw2QkFBNkI7QUFJbkMsTUFBTSxvQkFBb0I7QUFDMUIsTUFBTSxvQkFBb0I7QUFHMUIsTUFBTSw2QkFBNkI7QUFDbkMsTUFBTSxpQ0FBaUM7QUFHdkMsTUFBTSxpQ0FBaUM7QUFDdkMsTUFBTSw4Q0FBOEM7QUFDcEQsTUFBTSwyQ0FBMkM7QUFDakQsTUFBTSx1Q0FBdUM7QUFDN0MsTUFBTSx3Q0FBd0M7QUFDOUMsTUFBTSwwQ0FBMEM7QUFDaEQsTUFBTSwrQ0FBK0M7QUFDckQsTUFBTSxnQ0FBZ0M7QUFHdEMsTUFBTSxrQ0FBa0M7QUFDeEMsTUFBTSxtQ0FBbUM7QUFDekMsTUFBTSxvQkFBb0I7QUFFMUIsTUFB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
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Rlc2t0b3AtemlwLWV4dHJhY3Rvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEV4dHJhY3RzIGEgWklQIGFyY2hpdmUgdG8gZGlzayB1c2luZyBvbmx5IE5vZGUncyBgemxpYmAgXHUyMDE0IHdpdGggbm8gdGhpcmQtcGFydHkgdW56aXAgZGVwZW5kZW5jeS5cbiAqXG4gKiBJdCBleGlzdHMgZm9yIG9uZSBtZWFzdXJlZCByZWFzb24uIFRoZSBkZXBlbmRlbmN5IGl0IHJlcGxhY2VkIG9uIHRoaXMgcGF0aCwgYGFkbS16aXBgLCBidW5kbGVkXG4gKiByb3VnaGx5IDM0IEtCIG9mIG1pbmlmaWVkIEphdmFTY3JpcHQgaW50byBFVkVSWSBPYnNpZGlhbiBwbHVnaW4gYnVpbHQgd2l0aCB0aGlzIGxpYnJhcnk6IGEgcGx1Z2luXG4gKiBzaGlwcyBhIHNpbmdsZSBDSlMgYG1haW4uanNgLCBlc2J1aWxkIGhhcyBubyBjb2RlIHNwbGl0dGluZyB0byBwdXQgYSBkZXBlbmRlbmN5IGJlaGluZCwgYW5kIGFcbiAqIGBhd2FpdCBpbXBvcnQoKWAgb25seSBkZWZlcnMgZXZhbHVhdGlvbiBcdTIwMTQgdGhlIG1vZHVsZSBib2R5IGlzIGlubGluZWQgZWl0aGVyIHdheS4gYG5vZGU6emxpYmAgaXNcbiAqIGFscmVhZHkgYW4gZXNidWlsZCBleHRlcm5hbCwgc28gdGhlIHNhbWUgd29yayBub3cgY29zdHMgYSBwbHVnaW4gYnVuZGxlIG5vdGhpbmcgYXQgYWxsLiBBcmNoaXZlcyBhcmVcbiAqIFdSSVRURU4gd2l0aCBgZmZsYXRlYCBhdCByZWxlYXNlIHRpbWUgKGBzY3JpcHQtdXRpbHMvZGVtby12YXVsdC50c2ApLCB3aGljaCBpcyBOb2RlLXNpZGUgdG9vbGluZyBhbmRcbiAqIG5ldmVyIHJlYWNoZXMgYSBwbHVnaW4gYnVuZGxlIFx1MjAxNCBhIHRoaXJkLXBhcnR5IHdyaXRlciB0aGVyZSBpcyBhbHNvIHdoYXQga2VlcHMgdGhpcyByZWFkZXIgY2hlY2tlZFxuICogYWdhaW5zdCBhbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIG5vdCBpdHMgb3duLlxuICpcbiAqIERlbGliZXJhdGVseSBuYXJyb3c6IGl0IHJlYWRzIGV4YWN0bHkgd2hhdCB0aGF0IHdyaXRlciBwcm9kdWNlcyBcdTIwMTQgc3RvcmVkIGFuZCBkZWZsYXRlZCBlbnRyaWVzIGluIGFuXG4gKiB1bmVuY3J5cHRlZCBhcmNoaXZlIGJlbG93IHRoZSA0IEdCIC8gNjU1MzUtZW50cnkgWklQNjQgdGhyZXNob2xkIFx1MjAxNCBhbmQgcmFpc2VzIGEgbmFtZWQgZXJyb3IgZm9yXG4gKiBhbnl0aGluZyBlbHNlIHJhdGhlciB0aGFuIGd1ZXNzaW5nIGF0IGl0LiBTaXplcyBhbmQgb2Zmc2V0cyBhcmUgdGFrZW4gZnJvbSB0aGUgY2VudHJhbCBkaXJlY3RvcnksXG4gKiB3aGljaCBpcyBhdXRob3JpdGF0aXZlIGV2ZW4gZm9yIGFyY2hpdmVzIHdyaXR0ZW4gd2l0aCBkYXRhIGRlc2NyaXB0b3JzLlxuICpcbiAqIFRoZSBgbm9kZTpgIGltcG9ydHMgYmVsb3cgYXJlIHNhZmUgdG8gbWVyZWx5IEVWQUxVQVRFIG9uIG1vYmlsZSBcdTIwMTQgYHJlcXVpcmVgIGhhbmRzIGJhY2sgYHVuZGVmaW5lZGBcbiAqIHRoZXJlIGFuZCBub3RoaW5nIHJlYWRzIGl0IGF0IGxvYWQgdGltZSBcdTIwMTQgc28gdGhpcyBtb2R1bGUgY2FuIHNpdCBpbiB0aGUgZ2VuZXJhdGVkIGJhcnJlbHMgd2l0aG91dFxuICogYnJlYWtpbmcgdGhlIGxpYnJhcnkncyBsb2FkIG9uIEFuZHJvaWQuIE9ubHkgdGhlIGNhbGxzIGFyZSBkZXNrdG9wLW9ubHkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBCdWZmZXIgfSBmcm9tICdub2RlOmJ1ZmZlcic7XG5cbmltcG9ydCB7IGluZmxhdGVSYXdTeW5jIH0gZnJvbSAnbm9kZTp6bGliJztcblxuaW1wb3J0IHtcbiAgZGlybmFtZSxcbiAgam9pblxufSBmcm9tICcuL3BhdGgudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBleHRyYWN0WmlwQXJjaGl2ZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXh0cmFjdFppcEFyY2hpdmVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHJhdyBaSVAgYXJjaGl2ZSBieXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFyY2hpdmU6IEJ1ZmZlcjtcblxuICAvKipcbiAgICogVGhlIGZpbGUtc3lzdGVtIGltcGxlbWVudGF0aW9uIHRoZSBleHRyYWN0ZWQgZW50cmllcyBhcmUgd3JpdHRlbiB3aXRoLlxuICAgKlxuICAgKiBJbmplY3RlZCByYXRoZXIgdGhhbiBpbXBvcnRlZCBzbyB0aGUgY2FsbGVyIGNob29zZXMgd2hpY2ggYGZzYCB3cml0ZXMgdGhlIGZpbGVzLiBUaGUgZGVtby12YXVsdFxuICAgKiBvcGVuZXIgaGFuZHMgb3ZlciBFbGVjdHJvbidzIGBvcmlnaW5hbC1mc2AgKHNlZSB7QGxpbmsgWmlwRXh0cmFjdGlvbkZpbGVTeXN0ZW19KS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVTeXN0ZW06IFppcEV4dHJhY3Rpb25GaWxlU3lzdGVtO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHRvIGV4dHJhY3QgaW50by4gQ3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldERpcmVjdG9yeTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBzbGljZSBvZiBgbm9kZTpmc2AgZXh0cmFjdGlvbiBuZWVkcy5cbiAqXG4gKiBPbmx5IHRoZSB0d28gV1JJVElORyBjYWxscyBhcmUgcmVxdWlyZWQsIGFuZCB0aGF0IGlzIGRlbGliZXJhdGU6IEVsZWN0cm9uJ3MgYXNhciBsYXllciBpbnRlcmNlcHRzXG4gKiBgZnNgIFJFQURTIChhbmQgYGV4aXN0c1N5bmNgKSBvbiBhbnkgcGF0aCBjb250YWluaW5nIGAuYXNhcmAsIHdoaWNoIGEgZGVtbyB2YXVsdCBtYXkgbGVnaXRpbWF0ZWx5XG4gKiBzaGlwIGFzIGEgcGxhaW4gZmlsZS4gTmV2ZXIgcHJvYmluZyB0aGUgdGFyZ2V0IHdpdGggYSByZWFkIGtlZXBzIHRoYXQgaW50ZXJjZXB0aW9uIG91dCBvZiB0aGVcbiAqIHBpY3R1cmUgZW50aXJlbHksIGFuZCBhIGNhbGxlciB0aGF0IGhhbmRzIG92ZXIgRWxlY3Ryb24ncyBgb3JpZ2luYWwtZnNgIGlzIHNhZmUgZXZlbiBmcm9tIHRoZVxuICogd3JpdGUgc2lkZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBaaXBFeHRyYWN0aW9uRmlsZVN5c3RlbSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGlyZWN0b3J5LCBpbmNsdWRpbmcgYW55IG1pc3NpbmcgcGFyZW50cy5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBUaGUgZGlyZWN0b3J5IHRvIGNyZWF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIFppcEV4dHJhY3Rpb25Na2Rpck9wdGlvbnN9LlxuICAgKiBAcmV0dXJucyBUaGUgZmlyc3QgZGlyZWN0b3J5IGNyZWF0ZWQsIGlmIGFueS5cbiAgICovXG4gIG1rZGlyU3luYyhwYXRoOiBzdHJpbmcsIG9wdGlvbnM6IFppcEV4dHJhY3Rpb25Na2Rpck9wdGlvbnMpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdyaXRlcyBhIGZpbGUsIG92ZXJ3cml0aW5nIGl0IGlmIGl0IGV4aXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBUaGUgZmlsZSB0byB3cml0ZS5cbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgYnl0ZXMgdG8gd3JpdGUuXG4gICAqL1xuICB3cml0ZUZpbGVTeW5jKHBhdGg6IHN0cmluZywgZGF0YTogQnVmZmVyKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgb3B0aW9ucyB7QGxpbmsgWmlwRXh0cmFjdGlvbkZpbGVTeXN0ZW0ubWtkaXJTeW5jfSBpcyBhbHdheXMgY2FsbGVkIHdpdGguXG4gKlxuICogRXh0cmFjdGlvbiBuZXZlciBwcm9iZXMgZm9yIGFuIGV4aXN0aW5nIGRpcmVjdG9yeSwgc28gZXZlcnkgY2FsbCBoYXMgdG8gY3JlYXRlIHRoZSBtaXNzaW5nIHBhcmVudHNcbiAqIGl0c2VsZiBhbmQgdG9sZXJhdGUgYSBkaXJlY3RvcnkgdGhhdCBpcyBhbHJlYWR5IHRoZXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFppcEV4dHJhY3Rpb25Na2Rpck9wdGlvbnMge1xuICAvKipcbiAgICogQWx3YXlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHJlY3Vyc2l2ZTogdHJ1ZTtcbn1cblxuaW50ZXJmYWNlIFppcEVudHJ5IHtcbiAgcmVhZG9ubHkgY29tcHJlc3NlZFNpemU6IG51bWJlcjtcbiAgcmVhZG9ubHkgY29tcHJlc3Npb25NZXRob2Q6IG51bWJlcjtcbiAgcmVhZG9ubHkgbG9jYWxIZWFkZXJPZmZzZXQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufVxuXG5jb25zdCBFTkRfT0ZfQ0VOVFJBTF9ESVJFQ1RPUllfU0lHTkFUVVJFID0gMHgwNl8wNV80Ql81MDtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0hFQURFUl9TSUdOQVRVUkUgPSAweDAyXzAxXzRCXzUwO1xuY29uc3QgTE9DQUxfRklMRV9IRUFERVJfU0lHTkFUVVJFID0gMHgwNF8wM180Ql81MDtcblxuY29uc3QgRU5EX09GX0NFTlRSQUxfRElSRUNUT1JZX1NJWkUgPSAyMjtcbmNvbnN0IE1BWF9BUkNISVZFX0NPTU1FTlRfTEVOR1RIID0gNjVfNTM1O1xuXG4vLyBBIGNvdW50IG9yIG9mZnNldCBzYXR1cmF0ZWQgdG8gYWxsLW9uZXMgbWVhbnMgdGhlIHJlYWwgdmFsdWUgbGl2ZXMgaW4gYSBaSVA2NCByZWNvcmQgdGhpcyByZWFkZXJcbi8vIERvZXMgbm90IGltcGxlbWVudCwgc28gdGhlIGZpZWxkIG11c3QgbmV2ZXIgYmUgcmVhZCBhdCBmYWNlIHZhbHVlLlxuY29uc3QgU0FUVVJBVEVEX1VJTlRfMTYgPSA2NV81MzU7XG5jb25zdCBTQVRVUkFURURfVUlOVF8zMiA9IDRfMjk0Xzk2N18yOTU7XG5cbi8vIEZpZWxkIG9mZnNldHMgd2l0aGluIHRoZSBlbmQtb2YtY2VudHJhbC1kaXJlY3RvcnkgcmVjb3JkLlxuY29uc3QgQVJDSElWRV9FTlRSWV9DT1VOVF9PRkZTRVQgPSAxMDtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX1NUQVJUX09GRlNFVCA9IDE2O1xuXG4vLyBGaWVsZCBvZmZzZXRzIHdpdGhpbiBhIGNlbnRyYWwtZGlyZWN0b3J5IGhlYWRlci5cbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0ZMQUdTX09GRlNFVCA9IDg7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9DT01QUkVTU0lPTl9NRVRIT0RfT0ZGU0VUID0gMTA7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9DT01QUkVTU0VEX1NJWkVfT0ZGU0VUID0gMjA7XG5jb25zdCBDRU5UUkFMX0RJUkVDVE9SWV9OQU1FX0xFTkdUSF9PRkZTRVQgPSAyODtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0VYVFJBX0xFTkdUSF9PRkZTRVQgPSAzMDtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0NPTU1FTlRfTEVOR1RIX09GRlNFVCA9IDMyO1xuY29uc3QgQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQUxfSEVBREVSX09GRlNFVF9PRkZTRVQgPSA0MjtcbmNvbnN0IENFTlRSQUxfRElSRUNUT1JZX0hFQURFUl9TSVpFID0gNDY7XG5cbi8vIEZpZWxkIG9mZnNldHMgd2l0aGluIGEgbG9jYWwgZmlsZSBoZWFkZXIuXG5jb25zdCBMT0NBTF9IRUFERVJfTkFNRV9MRU5HVEhfT0ZGU0VUID0gMjY7XG5jb25zdCBMT0NBTF9IRUFERVJfRVhUUkFfTEVOR1RIX09GRlNFVCA9IDI4O1xuY29uc3QgTE9DQUxfSEVBREVSX1NJWkUgPSAzMDtcblxuY29uc3QgQ09NUFJFU1NJT05fTUVUSE9EX1NUT1JFRCA9IDA7XG5jb25zdCBDT01QUkVTU0lPTl9NRVRIT0RfREVGTEFURUQgPSA4O1xuXG4vLyBCaXQgMCBvZiB0aGUgZ2VuZXJhbC1wdXJwb3NlIGZsYWdzIG1hcmtzIGFuIGVuY3J5cHRlZCBlbnRyeSwgYW5kIGl0IGlzIHRoZSBsb3dlc3QgYml0IFx1MjAxNCBzbyB0aGVcbi8vIFJlbWFpbmRlciB0ZXN0cyBpdCB3aXRob3V0IHJlYWNoaW5nIGZvciBhIGJpdHdpc2Ugb3BlcmF0b3IuXG5jb25zdCBFTkNSWVBURURfRkxBR19ESVZJU09SID0gMjtcblxuY29uc3QgRU5UUllfTkFNRV9TRVBBUkFUT1IgPSAnLyc7XG5jb25zdCBXSU5ET1dTX0RSSVZFX1BSRUZJWF9SRUdfRVhQID0gL15bQS1aYS16XTovO1xuXG4vKipcbiAqIEV4dHJhY3RzIGV2ZXJ5IGVudHJ5IG9mIGEgWklQIGFyY2hpdmUgaW50byBhIGRpcmVjdG9yeS5cbiAqXG4gKiBEaXJlY3RvcnkgZW50cmllcyBiZWNvbWUgZGlyZWN0b3JpZXM7IGEgZmlsZSBlbnRyeSdzIHBhcmVudHMgYXJlIGNyZWF0ZWQgd2hldGhlciBvciBub3QgdGhlIGFyY2hpdmVcbiAqIGRlY2xhcmVkIHRoZW0uIEFuIGVudHJ5IHdob3NlIG5hbWUgd291bGQgZXNjYXBlIHtAbGluayBFeHRyYWN0WmlwQXJjaGl2ZVBhcmFtcy50YXJnZXREaXJlY3Rvcnl9IGlzXG4gKiByZWZ1c2VkIHJhdGhlciB0aGFuIHdyaXR0ZW4gKHRoZSBcInppcCBzbGlwXCIgdHJhdmVyc2FsKSwgYXMgaXMgYW4gZW5jcnlwdGVkLCBaSVA2NCwgb3JcbiAqIHVua25vd24tY29tcHJlc3Npb24gYXJjaGl2ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBFeHRyYWN0WmlwQXJjaGl2ZVBhcmFtc30uXG4gKiBAdGhyb3dzIEFuIHtAbGluayBFcnJvcn0gbmFtaW5nIHRoZSByZWFzb24gd2hlbiB0aGUgYXJjaGl2ZSBjYW5ub3QgYmUgcmVhZCBhcyB3cml0dGVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFppcEFyY2hpdmUocGFyYW1zOiBFeHRyYWN0WmlwQXJjaGl2ZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgYXJjaGl2ZSxcbiAgICBmaWxlU3lzdGVtLFxuICAgIHRhcmdldERpcmVjdG9yeVxuICB9ID0gcGFyYW1zO1xuXG4gIGZpbGVTeXN0ZW0ubWtkaXJTeW5jKHRhcmdldERpcmVjdG9yeSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiByZWFkQ2VudHJhbERpcmVjdG9yeShhcmNoaXZlKSkge1xuICAgIGFzc2VydFNhZmVFbnRyeU5hbWUoZW50cnkubmFtZSk7XG5cbiAgICBpZiAoZW50cnkubmFtZS5lbmRzV2l0aChFTlRSWV9OQU1FX1NFUEFSQVRPUikpIHtcbiAgICAgIC8vIE5hbWVkIHdpdGhvdXQgaXRzIHRyYWlsaW5nIHNlcGFyYXRvciwgc28gdGhlIGNyZWF0ZWQgcGF0aCByZWFkcyB0aGUgc2FtZSBhcyBldmVyeSBvdGhlciBvbmUuXG4gICAgICBmaWxlU3lzdGVtLm1rZGlyU3luYyhqb2luKHRhcmdldERpcmVjdG9yeSwgZW50cnkubmFtZS5zbGljZSgwLCAtMSkpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5UGF0aCA9IGpvaW4odGFyZ2V0RGlyZWN0b3J5LCBlbnRyeS5uYW1lKTtcbiAgICBmaWxlU3lzdGVtLm1rZGlyU3luYyhkaXJuYW1lKGVudHJ5UGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGZpbGVTeXN0ZW0ud3JpdGVGaWxlU3luYyhlbnRyeVBhdGgsIHJlYWRFbnRyeURhdGEoYXJjaGl2ZSwgZW50cnkpKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZnVzZXMgYW4gZW50cnkgbmFtZSB0aGF0IHdvdWxkIHBsYWNlIHRoZSBleHRyYWN0ZWQgZmlsZSBvdXRzaWRlIHRoZSB0YXJnZXQgZGlyZWN0b3J5LlxuICpcbiAqIEFuIGFyY2hpdmUgaXMgdW50cnVzdGVkIGlucHV0IGV2ZW4gd2hlbiB3ZSBwdWJsaXNoZWQgaXQgb3Vyc2VsdmVzLCBhbmQgZXZlcnkgb25lIG9mIHRoZXNlIHNoYXBlc1xuICogZXNjYXBlcyB0aGUgdGFyZ2V0OiBhbiBhYnNvbHV0ZSBQT1NJWCBwYXRoLCBhIFdpbmRvd3MgZHJpdmUtcXVhbGlmaWVkIHBhdGgsIGEgYmFja3NsYXNoICh3aGljaCB0aGVcbiAqIFpJUCBzcGVjaWZpY2F0aW9uIGZvcmJpZHMgYXMgYSBzZXBhcmF0b3IsIHNvIGl0cyBvbmx5IHVzZSBoZXJlIGlzIHRvIHNtdWdnbGUgb25lIHBhc3QgYVxuICogZm9yd2FyZC1zbGFzaCBjaGVjayksIGFuZCBhIGAuLmAgc2VnbWVudC5cbiAqXG4gKiBAcGFyYW0gZW50cnlOYW1lIC0gVGhlIGVudHJ5IG5hbWUgYXMgcmVjb3JkZWQgaW4gdGhlIGFyY2hpdmUuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFNhZmVFbnRyeU5hbWUoZW50cnlOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGVudHJ5TmFtZS5zdGFydHNXaXRoKEVOVFJZX05BTUVfU0VQQVJBVE9SKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUmVmdXNpbmcgdG8gZXh0cmFjdCB0aGUgYWJzb2x1dGUgYXJjaGl2ZSBlbnRyeSAnJHtlbnRyeU5hbWV9Jy5gKTtcbiAgfVxuXG4gIGlmIChXSU5ET1dTX0RSSVZFX1BSRUZJWF9SRUdfRVhQLnRlc3QoZW50cnlOYW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUmVmdXNpbmcgdG8gZXh0cmFjdCB0aGUgZHJpdmUtcXVhbGlmaWVkIGFyY2hpdmUgZW50cnkgJyR7ZW50cnlOYW1lfScuYCk7XG4gIH1cblxuICBpZiAoZW50cnlOYW1lLmluY2x1ZGVzKCdcXFxcJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJlZnVzaW5nIHRvIGV4dHJhY3QgdGhlIGFyY2hpdmUgZW50cnkgJyR7ZW50cnlOYW1lfScsIHdoaWNoIHVzZXMgYSBiYWNrc2xhc2ggc2VwYXJhdG9yLmApO1xuICB9XG5cbiAgaWYgKGVudHJ5TmFtZS5zcGxpdChFTlRSWV9OQU1FX1NFUEFSQVRPUikuaW5jbHVkZXMoJy4uJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJlZnVzaW5nIHRvIGV4dHJhY3QgdGhlIGFyY2hpdmUgZW50cnkgJyR7ZW50cnlOYW1lfScsIHdoaWNoIHBvaW50cyBvdXRzaWRlIHRoZSB0YXJnZXQgZGlyZWN0b3J5LmApO1xuICB9XG59XG5cbi8qKlxuICogTG9jYXRlcyB0aGUgZW5kLW9mLWNlbnRyYWwtZGlyZWN0b3J5IHJlY29yZCBhbmQgcmV0dXJucyBpdHMgb2Zmc2V0LlxuICpcbiAqIFRoZSByZWNvcmQgc2l0cyBhdCB0aGUgdmVyeSBlbmQgb2YgdGhlIGFyY2hpdmUgdW5sZXNzIGEgdHJhaWxpbmcgY29tbWVudCBmb2xsb3dzIGl0LCBzbyBpdCBpcyBmb3VuZFxuICogYnkgc2Nhbm5pbmcgYmFja3dhcmRzIG92ZXIgdGhlIGNvbW1lbnQncyBtYXhpbXVtIGxlbmd0aCByYXRoZXIgdGhhbiBhc3N1bWVkIHRvIGJlIGF0IGEgZml4ZWQgcGxhY2UuXG4gKlxuICogQHBhcmFtIGFyY2hpdmUgLSBUaGUgcmF3IFpJUCBhcmNoaXZlIGJ5dGVzLlxuICogQHJldHVybnMgVGhlIHJlY29yZCdzIG9mZnNldC5cbiAqL1xuZnVuY3Rpb24gZmluZEVuZE9mQ2VudHJhbERpcmVjdG9yeU9mZnNldChhcmNoaXZlOiBCdWZmZXIpOiBudW1iZXIge1xuICBjb25zdCBsYXN0UG9zc2libGVPZmZzZXQgPSBhcmNoaXZlLmxlbmd0aCAtIEVORF9PRl9DRU5UUkFMX0RJUkVDVE9SWV9TSVpFO1xuICBjb25zdCBmaXJzdFBvc3NpYmxlT2Zmc2V0ID0gTWF0aC5tYXgoMCwgbGFzdFBvc3NpYmxlT2Zmc2V0IC0gTUFYX0FSQ0hJVkVfQ09NTUVOVF9MRU5HVEgpO1xuXG4gIGZvciAobGV0IG9mZnNldCA9IGxhc3RQb3NzaWJsZU9mZnNldDsgb2Zmc2V0ID49IGZpcnN0UG9zc2libGVPZmZzZXQ7IG9mZnNldC0tKSB7XG4gICAgaWYgKGFyY2hpdmUucmVhZFVJbnQzMkxFKG9mZnNldCkgPT09IEVORF9PRl9DRU5UUkFMX0RJUkVDVE9SWV9TSUdOQVRVUkUpIHtcbiAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYXJjaGl2ZSBpcyBub3QgYSBaSVAgZmlsZTogaXRzIGVuZC1vZi1jZW50cmFsLWRpcmVjdG9yeSByZWNvcmQgaXMgbWlzc2luZy4nKTtcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgY2VudHJhbCBkaXJlY3RvcnksIHdoaWNoIGlzIHRoZSBhcmNoaXZlJ3MgYXV0aG9yaXRhdGl2ZSBpbmRleCBvZiBpdHMgZW50cmllcy5cbiAqXG4gKiBAcGFyYW0gYXJjaGl2ZSAtIFRoZSByYXcgWklQIGFyY2hpdmUgYnl0ZXMuXG4gKiBAcmV0dXJucyBPbmUge0BsaW5rIFppcEVudHJ5fSBwZXIgZW50cnksIGluIHRoZSBvcmRlciB0aGUgYXJjaGl2ZSBsaXN0cyB0aGVtLlxuICovXG5mdW5jdGlvbiByZWFkQ2VudHJhbERpcmVjdG9yeShhcmNoaXZlOiBCdWZmZXIpOiBaaXBFbnRyeVtdIHtcbiAgY29uc3QgZW5kT2ZDZW50cmFsRGlyZWN0b3J5T2Zmc2V0ID0gZmluZEVuZE9mQ2VudHJhbERpcmVjdG9yeU9mZnNldChhcmNoaXZlKTtcbiAgY29uc3QgZW50cnlDb3VudCA9IGFyY2hpdmUucmVhZFVJbnQxNkxFKGVuZE9mQ2VudHJhbERpcmVjdG9yeU9mZnNldCArIEFSQ0hJVkVfRU5UUllfQ09VTlRfT0ZGU0VUKTtcbiAgbGV0IGVudHJ5T2Zmc2V0ID0gYXJjaGl2ZS5yZWFkVUludDMyTEUoZW5kT2ZDZW50cmFsRGlyZWN0b3J5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfU1RBUlRfT0ZGU0VUKTtcblxuICBpZiAoZW50cnlDb3VudCA9PT0gU0FUVVJBVEVEX1VJTlRfMTYgfHwgZW50cnlPZmZzZXQgPT09IFNBVFVSQVRFRF9VSU5UXzMyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdaSVA2NCBhcmNoaXZlcyBhcmUgbm90IHN1cHBvcnRlZC4nKTtcbiAgfVxuXG4gIGNvbnN0IGVudHJpZXM6IFppcEVudHJ5W10gPSBbXTtcbiAgZm9yIChsZXQgZW50cnlJbmRleCA9IDA7IGVudHJ5SW5kZXggPCBlbnRyeUNvdW50OyBlbnRyeUluZGV4KyspIHtcbiAgICBpZiAoYXJjaGl2ZS5yZWFkVUludDMyTEUoZW50cnlPZmZzZXQpICE9PSBDRU5UUkFMX0RJUkVDVE9SWV9IRUFERVJfU0lHTkFUVVJFKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBhcmNoaXZlJ3MgY2VudHJhbCBkaXJlY3RvcnkgaXMgY29ycnVwdCBhdCBlbnRyeSAke1N0cmluZyhlbnRyeUluZGV4KX0uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZmxhZ3MgPSBhcmNoaXZlLnJlYWRVSW50MTZMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0ZMQUdTX09GRlNFVCk7XG4gICAgaWYgKGZsYWdzICUgRU5DUllQVEVEX0ZMQUdfRElWSVNPUiA9PT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbmNyeXB0ZWQgWklQIGFyY2hpdmVzIGFyZSBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXByZXNzZWRTaXplID0gYXJjaGl2ZS5yZWFkVUludDMyTEUoZW50cnlPZmZzZXQgKyBDRU5UUkFMX0RJUkVDVE9SWV9DT01QUkVTU0VEX1NJWkVfT0ZGU0VUKTtcbiAgICBjb25zdCBsb2NhbEhlYWRlck9mZnNldCA9IGFyY2hpdmUucmVhZFVJbnQzMkxFKGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQUxfSEVBREVSX09GRlNFVF9PRkZTRVQpO1xuICAgIGlmIChjb21wcmVzc2VkU2l6ZSA9PT0gU0FUVVJBVEVEX1VJTlRfMzIgfHwgbG9jYWxIZWFkZXJPZmZzZXQgPT09IFNBVFVSQVRFRF9VSU5UXzMyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1pJUDY0IGFyY2hpdmVzIGFyZSBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWVMZW5ndGggPSBhcmNoaXZlLnJlYWRVSW50MTZMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX05BTUVfTEVOR1RIX09GRlNFVCk7XG4gICAgY29uc3QgbmFtZU9mZnNldCA9IGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfSEVBREVSX1NJWkU7XG4gICAgZW50cmllcy5wdXNoKHtcbiAgICAgIGNvbXByZXNzZWRTaXplLFxuICAgICAgY29tcHJlc3Npb25NZXRob2Q6IGFyY2hpdmUucmVhZFVJbnQxNkxFKGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfQ09NUFJFU1NJT05fTUVUSE9EX09GRlNFVCksXG4gICAgICBsb2NhbEhlYWRlck9mZnNldCxcbiAgICAgIG5hbWU6IGFyY2hpdmUudG9TdHJpbmcoJ3V0Zi04JywgbmFtZU9mZnNldCwgbmFtZU9mZnNldCArIG5hbWVMZW5ndGgpXG4gICAgfSk7XG5cbiAgICBlbnRyeU9mZnNldCA9IG5hbWVPZmZzZXRcbiAgICAgICsgbmFtZUxlbmd0aFxuICAgICAgKyBhcmNoaXZlLnJlYWRVSW50MTZMRShlbnRyeU9mZnNldCArIENFTlRSQUxfRElSRUNUT1JZX0VYVFJBX0xFTkdUSF9PRkZTRVQpXG4gICAgICArIGFyY2hpdmUucmVhZFVJbnQxNkxFKGVudHJ5T2Zmc2V0ICsgQ0VOVFJBTF9ESVJFQ1RPUllfQ09NTUVOVF9MRU5HVEhfT0ZGU0VUKTtcbiAgfVxuXG4gIHJldHVybiBlbnRyaWVzO1xufVxuXG4vKipcbiAqIFJlYWRzIGFuZCBkZWNvbXByZXNzZXMgb25lIGVudHJ5J3MgYnl0ZXMuXG4gKlxuICogVGhlIGRhdGEncyBzdGFydCBpcyBjb21wdXRlZCBmcm9tIHRoZSBMT0NBTCBoZWFkZXIgcmF0aGVyIHRoYW4gdGhlIGNlbnRyYWwgb25lOiB0aGUgdHdvIGNhcnJ5XG4gKiBpbmRlcGVuZGVudCBuYW1lIGFuZCBleHRyYS1maWVsZCBsZW5ndGhzLCBhbmQgb25seSB0aGUgbG9jYWwgcGFpciBkZXNjcmliZXMgd2hlcmUgdGhlIGJ5dGVzXG4gKiBhY3R1YWxseSBiZWdpbi5cbiAqXG4gKiBAcGFyYW0gYXJjaGl2ZSAtIFRoZSByYXcgWklQIGFyY2hpdmUgYnl0ZXMuXG4gKiBAcGFyYW0gZW50cnkgLSBUaGUgZW50cnksIGFzIHJlYWQgZnJvbSB0aGUgY2VudHJhbCBkaXJlY3RvcnkuXG4gKiBAcmV0dXJucyBUaGUgZW50cnkncyB1bmNvbXByZXNzZWQgY29udGVudC5cbiAqL1xuZnVuY3Rpb24gcmVhZEVudHJ5RGF0YShhcmNoaXZlOiBCdWZmZXIsIGVudHJ5OiBaaXBFbnRyeSk6IEJ1ZmZlciB7XG4gIGlmIChhcmNoaXZlLnJlYWRVSW50MzJMRShlbnRyeS5sb2NhbEhlYWRlck9mZnNldCkgIT09IExPQ0FMX0ZJTEVfSEVBREVSX1NJR05BVFVSRSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGFyY2hpdmUgZW50cnkgJyR7ZW50cnkubmFtZX0nIGhhcyBhIGNvcnJ1cHQgbG9jYWwgaGVhZGVyLmApO1xuICB9XG5cbiAgY29uc3QgZGF0YU9mZnNldCA9IGVudHJ5LmxvY2FsSGVhZGVyT2Zmc2V0XG4gICAgKyBMT0NBTF9IRUFERVJfU0laRVxuICAgICsgYXJjaGl2ZS5yZWFkVUludDE2TEUoZW50cnkubG9jYWxIZWFkZXJPZmZzZXQgKyBMT0NBTF9IRUFERVJfTkFNRV9MRU5HVEhfT0ZGU0VUKVxuICAgICsgYXJjaGl2ZS5yZWFkVUludDE2TEUoZW50cnkubG9jYWxIZWFkZXJPZmZzZXQgKyBMT0NBTF9IRUFERVJfRVhUUkFfTEVOR1RIX09GRlNFVCk7XG4gIGNvbnN0IGRhdGFFbmQgPSBkYXRhT2Zmc2V0ICsgZW50cnkuY29tcHJlc3NlZFNpemU7XG4gIGlmIChkYXRhRW5kID4gYXJjaGl2ZS5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBhcmNoaXZlIGlzIHRydW5jYXRlZDogZW50cnkgJyR7ZW50cnkubmFtZX0nIHJ1bnMgcGFzdCBpdHMgZW5kLmApO1xuICB9XG5cbiAgY29uc3QgY29tcHJlc3NlZERhdGEgPSBhcmNoaXZlLnN1YmFycmF5KGRhdGFPZmZzZXQsIGRhdGFFbmQpO1xuICBzd2l0Y2ggKGVudHJ5LmNvbXByZXNzaW9uTWV0aG9kKSB7XG4gICAgY2FzZSBDT01QUkVTU0lPTl9NRVRIT0RfREVGTEFURUQ6IHtcbiAgICAgIHJldHVybiBpbmZsYXRlUmF3U3luYyhjb21wcmVzc2VkRGF0YSk7XG4gICAgfVxuICAgIGNhc2UgQ09NUFJFU1NJT05fTUVUSE9EX1NUT1JFRDoge1xuICAgICAgcmV0dXJuIGNvbXByZXNzZWREYXRhO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBhcmNoaXZlIGVudHJ5ICcke2VudHJ5Lm5hbWV9JyB1c2VzIHVuc3VwcG9ydGVkIGNvbXByZXNzaW9uIG1ldGhvZCAke1N0cmluZyhlbnRyeS5jb21wcmVzc2lvbk1ldGhvZCl9LmApO1xuICAgIH1cbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCQSxTQUFTLHNCQUFzQjtBQUUvQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQXlFUCxNQUFNLHFDQUFxQztBQUMzQyxNQUFNLHFDQUFxQztBQUMzQyxNQUFNLDhCQUE4QjtBQUVwQyxNQUFNLGdDQUFnQztBQUN0QyxNQUFNLDZCQUE2QjtBQUluQyxNQUFNLG9CQUFvQjtBQUMxQixNQUFNLG9CQUFvQjtBQUcxQixNQUFNLDZCQUE2QjtBQUNuQyxNQUFNLGlDQUFpQztBQUd2QyxNQUFNLGlDQUFpQztBQUN2QyxNQUFNLDhDQUE4QztBQUNwRCxNQUFNLDJDQUEyQztBQUNqRCxNQUFNLHVDQUF1QztBQUM3QyxNQUFNLHdDQUF3QztB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
|
|
@@ -41,7 +41,7 @@ function ensureBrowserProcess() {
|
|
|
41
41
|
})();
|
|
42
42
|
})();
|
|
43
43
|
|
|
44
|
-
const LIBRARY_VERSION = "
|
|
44
|
+
const LIBRARY_VERSION = "102.0.0";
|
|
45
45
|
const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-dev-utils.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils-lock-indicator {\n display: inline-flex;\n align-items: center;\n color: var(--text-muted);\n}\n.obsidian-dev-utils-lock-indicator .svg-icon {\n width: var(--icon-s);\n height: var(--icon-s);\n}\n\n@keyframes obsidian-dev-utils-lock-indicator-flash {\n 40% {\n color: var(--text-error);\n transform: scale(1.4);\n }\n}\n.obsidian-dev-utils-lock-indicator-flash {\n animation: obsidian-dev-utils-lock-indicator-flash 0.35s ease-in-out;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utilsprogress.loop {\n min-width: 200px;\n}\n\n@keyframes obsidian-dev-utils-minimized-modal-bar-pulse {\n 0%, 100% {\n box-shadow: var(--shadow-s);\n }\n 50% {\n box-shadow: 0 0 0 2px var(--interactive-accent);\n }\n}\n@keyframes obsidian-dev-utils-minimized-modal-bar-attention {\n 0% {\n box-shadow: 0 0 0 0 var(--interactive-accent);\n }\n 40% {\n box-shadow: 0 0 0 4px var(--interactive-accent);\n }\n 100% {\n box-shadow: var(--shadow-s);\n }\n}\n.obsidian-dev-utils.minimizable-modal .minimize-button {\n position: absolute;\n top: var(--size-4-2);\n right: calc(var(--size-4-2) + var(--size-4-9));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-dev-utils.minimizable-modal .minimize-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n.obsidian-dev-utils.minimized-modal-bar {\n position: fixed;\n right: var(--size-4-4);\n bottom: calc(var(--size-4-4) + var(--size-4-8));\n z-index: var(--layer-modal);\n display: flex;\n align-items: center;\n gap: var(--size-4-2);\n padding: var(--size-4-2) var(--size-4-3);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-m);\n background: var(--background-secondary);\n box-shadow: var(--shadow-s);\n cursor: pointer;\n animation: obsidian-dev-utils-minimized-modal-bar-pulse 2s ease-in-out infinite;\n}\n.obsidian-dev-utils.minimized-modal-bar:hover {\n background-image: linear-gradient(var(--background-modifier-hover), var(--background-modifier-hover));\n}\n.obsidian-dev-utils.minimized-modal-bar.minimized-modal-bar-attention {\n animation: obsidian-dev-utils-minimized-modal-bar-attention 0.35s ease-out;\n}\n.obsidian-dev-utils.minimized-modal-bar .minimized-modal-bar-title {\n font-weight: var(--font-medium);\n}\n.obsidian-dev-utils.minimized-modal-bar .restore-button,\n.obsidian-dev-utils.minimized-modal-bar .cancel-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-dev-utils.minimized-modal-bar .restore-button:hover,\n.obsidian-dev-utils.minimized-modal-bar .cancel-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n\n.obsidian-dev-utils.modal-commands {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2-2);\n padding: var(--size-4-2) var(--size-4-3);\n border-top: 1px solid var(--background-modifier-border);\n}\n.obsidian-dev-utils.modal-command-control {\n margin-inline-start: var(--size-2-2);\n vertical-align: middle;\n}\n.obsidian-dev-utils.modal-command {\n display: inline-flex;\n align-items: baseline;\n gap: var(--size-2-2);\n min-height: var(--size-4-8);\n padding: var(--size-2-1) var(--size-4-2);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-s);\n background-color: var(--background-secondary);\n color: var(--text-muted);\n font-size: var(--font-ui-smaller);\n white-space: nowrap;\n cursor: pointer;\n}\n.obsidian-dev-utils.modal-command:hover:not(:disabled) {\n background-color: var(--background-modifier-hover);\n color: var(--text-normal);\n}\n.obsidian-dev-utils.modal-command.is-active {\n border-color: var(--interactive-accent);\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n.obsidian-dev-utils.modal-command:disabled {\n opacity: 0.5;\n cursor: default;\n}\n.obsidian-dev-utils.modal-command-hotkey {\n color: var(--text-faint);\n font-size: var(--font-smallest);\n}\n.modal-command.is-active .obsidian-dev-utils.modal-command-hotkey {\n opacity: 0.7;\n color: var(--text-on-accent);\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.plugin-notice-name {\n color: var(--text-accent);\n display: inline-block;\n font-weight: var(--font-bold);\n margin-bottom: var(--size-4-2);\n}\n.obsidian-dev-utils.plugin-notice-content {\n padding-right: var(--size-4-5);\n position: relative;\n}\n.obsidian-dev-utils.plugin-notice-content .obsidian-dev-utils.cancel-button {\n display: block;\n margin-top: var(--size-4-2);\n width: fit-content;\n}\n.obsidian-dev-utils.plugin-notice-content .obsidian-dev-utils.plugin-notice-close-button {\n position: absolute;\n right: var(--size-4-3);\n top: var(--size-4-3);\n}\n.obsidian-dev-utils.plugin-notice-requires-explicit-close.notice {\n padding: 0;\n}\n.obsidian-dev-utils.plugin-notice-requires-explicit-close.notice .obsidian-dev-utils.plugin-notice-content {\n padding: var(--size-4-3) var(--size-4-4);\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.plugin-suggestion-banner {\n background-color: var(--background-secondary);\n border-left: var(--size-2-1) solid var(--text-accent);\n border-radius: var(--radius-s);\n display: flex;\n flex-direction: column;\n gap: var(--size-4-2);\n margin-bottom: var(--size-4-4);\n padding: var(--size-4-3) var(--size-4-4);\n}\n.obsidian-dev-utils.plugin-suggestion-banner button {\n width: fit-content;\n}\n\n.obsidian-dev-utils.popover {\n max-width: min(420px, 90vw);\n min-width: 320px;\n padding: var(--size-4-2) var(--size-4-3);\n position: absolute;\n z-index: var(--layer-menu);\n}\n.obsidian-dev-utils.popover .setting-item {\n align-items: center;\n border-top: none;\n gap: var(--size-4-2);\n padding: var(--size-2-1) 0;\n}\n.obsidian-dev-utils.popover .setting-item-info {\n margin-right: 0;\n}\n.obsidian-dev-utils.popover .setting-item-control {\n flex-grow: 1;\n justify-content: flex-end;\n}\n.obsidian-dev-utils.popover input[type=text] {\n width: 100%;\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\nbody button:not(.clickable-icon) {\n color: var(--text-color);\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid:not(.untouched), .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid:not(.untouched), .obsidian-dev-utils input.metadata-input-text:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=date]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=email]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=number]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=password]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=search]:focus:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:active:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils input[type=text]:focus:invalid:not(.untouched),\n.obsidian-dev-utils textarea:active:invalid:not(.untouched),\n.obsidian-dev-utils textarea:focus-visible:invalid:not(.untouched),\n.obsidian-dev-utils textarea:focus:invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/editor-lock.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/minimizable-modal.scss%22,%22../src/styles/modal-commands.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-notice.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/plugin-suggestion.scss%22,%22../src/styles/popover.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tldraw-button-color-workaround.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACvCN;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAMJ;EACE;IACE;IACA;;;AAIJ;EACE;;;ACvBA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;ACjDJ;EACE;;;ACFJ;EACE;IAEE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;;AAOA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AASN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOA;EACE;;AAOF;EACE;;AAGF;EACE;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;;;ACpGN;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;;AAMF;EACE;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAKF;EACE;EACA;;AAIJ;EACE;EACA;;AAGA;EACE;EACA;;;ACpEF;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACTN;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAKF;EACE;EACA;EACA;;AAOJ;EACE;;AAEA;EACE;;;AChCF;EACE;;;ACFJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;ACRJ;EAIE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AC9BF;EACE;;;ACON;EACE;;;ACTE;EACE;;;ACKJ;EAPA;;AAuBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAvBJ;;AA6BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20Lock%20indicators%20shown%20in%20the%20tab%20header%20and%20the%20status%20bar%20while%20a%20note%20is%20locked.%20These%20live%20in%5Cn//%20global%20Obsidian%20DOM%20(tab%20header%20/%20status%20bar),%20so%20they%20are%20styled%20with%20a%20global%20class%20rather%20than%5Cn//%20scoped%20under%20%60.obsidian-dev-utils%60.%5Cn.obsidian-dev-utils-lock-indicator%20%7B%5Cn%20%20display:%20inline-flex;%5Cn%20%20align-items:%20center;%5Cn%20%20color:%20var(--text-muted);%5Cn%5Cn%20%20.svg-icon%20%7B%5Cn%20%20%20%20width:%20var(--icon-s);%5Cn%20%20%20%20height:%20var(--icon-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn//%20Flashed%20on%20every%20lock%20indicator%20(tab%20header,%20view%20action,%20status%20bar)%20when%20the%20user%20attempts%20to%5Cn//%20type%20in%20a%20locked%20note,%20to%20make%20clear%20the%20note%20is%20read-only.%20Re-added%20per%20rejected%20keystroke.%5Cn@keyframes%20obsidian-dev-utils-lock-indicator-flash%20%7B%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20color:%20var(--text-error);%5Cn%20%20%20%20transform:%20scale(1.4);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-dev-utils-lock-indicator-flash%20%7B%5Cn%20%20animation:%20obsidian-dev-utils-lock-indicator-flash%200.35s%20ease-in-out;%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&progress.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@keyframes%20obsidian-dev-utils-minimized-modal-bar-pulse%20%7B%5Cn%20%200%25,%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%5Cn%20%2050%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%202px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn@keyframes%20obsidian-dev-utils-minimized-modal-bar-attention%20%7B%5Cn%20%200%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%200%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%204px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20//%20The%20minimize%20button%20lives%20inside%20the%20modal%20container,%20left%20of%20Obsidian's%20close%20button.%5Cn%20%20&.minimizable-modal%20%7B%5Cn%20%20%20%20.minimize-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20right:%20calc(var(--size-4-2)%20+%20var(--size-4-9));%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20The%20minimized%20bar%20is%20appended%20to%20document.body.%20It%20floats%20at%20the%20bottom-right%20while%20minimized,%5Cn%20%20//%20and%20gently%20pulses%20an%20accent%20ring%20so%20the%20user%20does%20not%20forget%20about%20the%20minimized%20operation.%5Cn%20%20//%20It%20floats%20a%20status-bar's%20height%20above%20the%20bottom%20edge%20so%20it%20never%20covers%20the%20bottom-right%5Cn%20%20//%20status-bar%20items%20(e.g.%20the%20editor-lock%20unlock%20indicator,%20which%20lives%20in%20the%20same%20corner).%5Cn%20%20&.minimized-modal-bar%20%7B%5Cn%20%20%20%20position:%20fixed;%5Cn%20%20%20%20right:%20var(--size-4-4);%5Cn%20%20%20%20bottom:%20calc(var(--size-4-4)%20+%20var(--size-4-8));%5Cn%20%20%20%20z-index:%20var(--layer-modal);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20align-items:%20center;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-m);%5Cn%20%20%20%20background:%20var(--background-secondary);%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20animation:%20obsidian-dev-utils-minimized-modal-bar-pulse%202s%20ease-in-out%20infinite;%5Cn%5Cn%20%20%20%20//%20Layer%20the%20translucent%20hover%20tint%20over%20the%20opaque%20%60background%60%20(%60--background-secondary%60)%20via%5Cn%20%20%20%20//%20%60background-image%60%20instead%20of%20replacing%20the%20background-color.%20%60--background-modifier-hover%60%20is%5Cn%20%20%20%20//%20translucent,%20so%20setting%20it%20as%20%60background%60%20would%20let%20the%20editor%20content%20behind%20the%20floating%20bar%5Cn%20%20%20%20//%20bleed%20through%20and%20make%20the%20title%20unreadable.%20A%20gradient%20of%20the%20tint%20composited%20over%20the%20opaque%5Cn%20%20%20%20//%20base%20keeps%20the%20bar%20opaque%20while%20preserving%20the%20subtle%20hover%20highlight.%5Cn%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20background-image:%20linear-gradient(var(--background-modifier-hover),%20var(--background-modifier-hover));%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20one-shot,%20more%20pronounced%20flash%20played%20when%20the%20user%20attempts%20a%20blocked%20action%20(a%20keystroke,%5Cn%20%20%20%20//%20right-click,%20or%20opening%20another%20modal)%20while%20this%20modal%20is%20minimized,%20so%20the%20block%20is%20not%5Cn%20%20%20%20//%20silent.%20Its%20higher%20specificity%20overrides%20the%20gentle%20infinite%20idle%20pulse%20while%20it%20plays;%20the%5Cn%20%20%20%20//%20class%20is%20removed%20on%20%60animationend%60,%20restoring%20the%20idle%20pulse.%5Cn%20%20%20%20&.minimized-modal-bar-attention%20%7B%5Cn%20%20%20%20%20%20animation:%20obsidian-dev-utils-minimized-modal-bar-attention%200.35s%20ease-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.minimized-modal-bar-title%20%7B%5Cn%20%20%20%20%20%20font-weight:%20var(--font-medium);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.restore-button,%5Cn%20%20%20%20.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20//%20The%20strip%20of%20commands%20along%20the%20bottom%20of%20a%20modal.%5Cn%20%20//%5Cn%20%20//%20In%20%60Instructions%60%20render%20mode%20it%20also%20carries%20Obsidian's%20own%20%60.prompt-instructions%60%20%E2%80%94%20whose%20rule%20is%5Cn%20%20//%20unscoped,%20so%20it%20applies%20to%20a%20plain%20%60Modal%60%20too%20%E2%80%94%20and%20this%20one%20only%20re-tunes%20that%20rule's%20%60gap%60%20and%5Cn%20%20//%20%60padding%60%20and%20adds%20the%20separator;%20in%20%60Buttons%60%20mode%20it%20is%20the%20whole%20strip.%5Cn%20%20&.modal-commands%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border-top:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%7D%5Cn%5Cn%20%20//%20A%20control%20the%20%60Instructions%60%20renderer%20injects%20into%20an%20instruction's%20purpose%20text%20%E2%80%94%20a%20checkbox,%20a%5Cn%20%20//%20dropdown.%20Obsidian%20styles%20the%20instruction%20bar%20itself,%20but%20its%20own%20bar%20never%20contains%20a%20control,%20so%5Cn%20%20//%20nothing%20upstream%20separates%20one%20from%20the%20label%20it%20belongs%20to.%20Sits%20on%20the%20control%20rather%20than%20on%20the%5Cn%20%20//%20strip,%20so%20it%20reaches%20a%20%60SuggestModal%60's%20native%20bar%20as%20well%20as%20a%20self-created%20one.%5Cn%20%20&.modal-command-control%20%7B%5Cn%20%20%20%20margin-inline-start:%20var(--size-2-2);%5Cn%20%20%20%20vertical-align:%20middle;%5Cn%20%20%7D%5Cn%5Cn%20%20//%20One%20command%20button.%20Replaces%20the%20instruction%20bar%20rather%20than%20supplementing%20it:%20the%20bar%20can%20only%20ever%5Cn%20%20//%20say%20which%20key%20to%20press,%20and%20on%20a%20phone%20there%20is%20no%20modifier%20key%20to%20press,%20so%20every%20control%20it%20names%5Cn%20%20//%20is%20unreachable%20there.%5Cn%20%20&.modal-command%20%7B%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%20%20align-items:%20baseline;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%5Cn%20%20%20%20//%20Comfortably%20tappable%20on%20a%20phone,%20where%20this%20strip%20is%20the%20only%20way%20in.%5Cn%20%20%20%20min-height:%20var(--size-4-8);%5Cn%20%20%20%20padding:%20var(--size-2-1)%20var(--size-4-2);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20color:%20var(--text-muted);%5Cn%20%20%20%20font-size:%20var(--font-ui-smaller);%5Cn%20%20%20%20white-space:%20nowrap;%5Cn%20%20%20%20cursor:%20pointer;%5Cn%5Cn%20%20%20%20&:hover:not(:disabled)%20%7B%5Cn%20%20%20%20%20%20background-color:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20toggle%20that%20is%20ON.%20An%20action%20never%20carries%20it%20%E2%80%94%20it%20does%20something%20and%20is%20done,%20so%20there%20is%20no%5Cn%20%20%20%20//%20state%20for%20it%20to%20show.%5Cn%20%20%20%20&.is-active%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20Disabled%20rather%20than%20removed:%20a%20strip%20that%20lost%20buttons%20as%20modes%20change%20would%20reflow%20under%20the%5Cn%20%20%20%20//%20pointer,%20which%20on%20a%20phone%20means%20a%20mis-tap.%5Cn%20%20%20%20&:disabled%20%7B%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%20%20cursor:%20default;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.modal-command-hotkey%20%7B%5Cn%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20font-size:%20var(--font-smallest);%5Cn%5Cn%20%20%20%20//%20Faint%20against%20the%20surface%20is%20right;%20faint%20against%20the%20accent%20fill%20is%20invisible.%5Cn%20%20%20%20.modal-command.is-active%20&%20%7B%5Cn%20%20%20%20%20%20opacity:%200.7;%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-notice-name%20%7B%5Cn%20%20%20%20color:%20var(--text-accent);%5Cn%20%20%20%20display:%20inline-block;%5Cn%20%20%20%20font-weight:%20var(--font-bold);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-2);%5Cn%20%20%7D%5Cn%5Cn%20%20&.plugin-notice-content%20%7B%5Cn%20%20%20%20padding-right:%20var(--size-4-5);%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20.obsidian-dev-utils.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20The%20close%20button%20reuses%20Obsidian's%20%60modal-header-button%60%20+%20%60clickable-icon%60%20classes%20so%20it%20matches%5Cn%20%20%20%20//%20The%20native%20modal%20close%20button%20(box%20+%20hover);%20only%20its%20corner%20position%20is%20set%20here.%5Cn%20%20%20%20.obsidian-dev-utils.plugin-notice-close-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20right:%20var(--size-4-3);%5Cn%20%20%20%20%20%20top:%20var(--size-4-3);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20Move%20the%20notice's%20own%20padding%20onto%20the%20content%20wrapper%20so%20the%20wrapper%20covers%20the%20whole%20clickable%5Cn%20%20//%20Area%20%E2%80%94%20otherwise%20a%20click%20landing%20on%20the%20notice's%20bare%20padding%20(outside%20the%20wrapper)%20would%20bypass%20the%5Cn%20%20//%20Stop-propagation%20guard%20and%20dismiss%20the%20hard-to-close%20notice.%5Cn%20%20&.plugin-notice-requires-explicit-close.notice%20%7B%5Cn%20%20%20%20padding:%200;%5Cn%5Cn%20%20%20%20.obsidian-dev-utils.plugin-notice-content%20%7B%5Cn%20%20%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-suggestion-banner%20%7B%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20border-left:%20var(--size-2-1)%20solid%20var(--text-accent);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-direction:%20column;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-4);%5Cn%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%5Cn%20%20%20%20button%20%7B%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20A%20popover%20is%20anchored%20at%20a%20point%20and%20appended%20to%20the%20document%20body,%20outside%20any%20plugin-scoped%5Cn//%20container,%20so%20it%20is%20positioned%20absolutely%20at%20the%20top%20level.%20It%20borrows%20Obsidian's%20%60.menu%60%20look,%5Cn//%20which%20already%20carries%20the%20popup%20background,%20border%20and%20shadow%20%E2%80%94%20only%20layout%20is%20set%20here.%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20&.popover%20%7B%5Cn%20%20%20%20//%20Deliberately%20not%20%60calc(100vw%20-%2016px)%60:%20the%20SCSS%20compiler%20strips%20the%20%60calc(%60%20wrapper%20inside%5Cn%20%20%20%20//%20%60min()%60,%20which%20yields%20invalid%20CSS.%20A%20viewport%20percentage%20keeps%20a%20narrow%20window's%20popover%20on%5Cn%20%20%20%20//%20screen.%5Cn%20%20%20%20max-width:%20min(420px,%2090vw);%5Cn%20%20%20%20min-width:%20320px;%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20z-index:%20var(--layer-menu);%5Cn%5Cn%20%20%20%20//%20Setting%20rows%20are%20built%20for%20a%20full-width%20settings%20tab;%20compact%20them%20for%20a%20popover.%5Cn%20%20%20%20.setting-item%20%7B%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20border-top:%20none;%5Cn%20%20%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20%20%20padding:%20var(--size-2-1)%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-info%20%7B%5Cn%20%20%20%20%20%20margin-right:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-control%20%7B%5Cn%20%20%20%20%20%20flex-grow:%201;%5Cn%20%20%20%20%20%20justify-content:%20flex-end;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20input%5Btype='text'%5D%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20The%20tldraw%20Obsidian%20plugin%20(tldraw/obsidian-plugin)%20ships%20an%20unscoped%20global%20rule%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20currentColor%20%7D%60%20that%20overrides%20Obsidian's%20own%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20var(--text-color)%20%7D%60%20app-wide.%20Obsidian%20sets%5Cn//%20%60--text-color%60%20contextually%20per%20button%20variant%20(%60--text-normal%60%20by%20default,%5Cn//%20%60--text-on-accent%60%20for%20%60.mod-cta%60,%20%60--text-error%60%20for%20%60.mod-warning%60),%20so%20tldraw's%5Cn//%20%60currentColor%60%20discards%20that%20and%20breaks%20button%20contrast%20outside%20tldraw%20%E2%80%94%20e.g.%5Cn//%20White-on-white%20action%20buttons%20inside%20a%20Notice.%20Re-assert%20Obsidian's%20own%20value%20with%20a%5Cn//%20%60body%60-prefixed%20selector%20(specificity%200,1,2)%20so%20it%20wins%20over%20tldraw's%20(0,1,1)%20while%5Cn//%20Staying%20correct%20for%20every%20button%20variant%20(it%20reuses%20the%20same%20contextual%20%60--text-color%60).%5Cn//%20Defensive%20workaround%20%E2%80%94%20remove%20once%20the%20upstream%20fix%20ships%20(tldraw/obsidian-plugin%23210).%5Cnbody%20button:not(.clickable-icon)%20%7B%5Cn%20%20color:%20var(--text-color);%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn//%20An%20input%20the%20user%20has%20not%20interacted%20with%20yet%20carries%20%60.untouched%60%20(set%20by%20%60PromptModal%60),%20so%20a%20modal%20that%5Cn//%20opens%20invalid%20by%20design%20does%20not%20greet%20the%20user%20in%20red.%20Both%20blocks%20below%20must%20be%20gated:%20the%20input%20is%5Cn//%20focused%20on%20open,%20so%20the%20focus%20block%20alone%20would%20keep%20painting%20it.%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
|
|
46
46
|
export {
|
|
47
47
|
LIBRARY_STYLES,
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* All four are written explicitly, never left to an Obsidian default: a vault leaning on a default changes
|
|
22
22
|
* behavior when that default does.
|
|
23
23
|
*
|
|
24
|
-
* Kept free of both `vitest` and `
|
|
24
|
+
* Kept free of both `vitest` and `fflate` on purpose — the coverage suite pulls in the former and the
|
|
25
25
|
* archiver the latter, and neither may reach the other's environment.
|
|
26
26
|
*/
|
|
27
27
|
/**
|
|
@@ -74,4 +74,4 @@ export {
|
|
|
74
74
|
findOwnedDemoVaultAppJsonSettings,
|
|
75
75
|
parseDemoVaultAppJson
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9kZW1vLXZhdWx0LWFwcC1qc29uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIGAub2JzaWRpYW4vYXBwLmpzb25gIHNldHRpbmdzIGBvYnNpZGlhbi1kZXYtdXRpbHNgIG93bnMgaW4gZXZlcnkgZGVtbyB2YXVsdC5cbiAqXG4gKiBBIGRlbW8gdmF1bHQgaXMgZG9jdW1lbnRhdGlvbiBmaXJzdCBhbmQgYW4gZWRpdGluZyBzdXJmYWNlIHNlY29uZCwgc28gZm91ciBPYnNpZGlhbiBzZXR0aW5ncyBoYXZlIHRvIGJlXG4gKiB0aGUgc2FtZSBpbiBldmVyeSBvbmUgb2YgdGhlbS4gVGhleSBhcmUgKipub3QqKiBjb21taXR0ZWQ6IGEgdmF1bHQgdGhhdCB3cm90ZSB0aGVtIGl0c2VsZiB3b3VsZCBkcmlmdFxuICogKG1lYXN1cmVkIDIwMjYtMDgtMTMsIG9ubHkgMyBvZiAyMyB2YXVsdHMgaGFkIHRoZSBmaXJzdCBwYWlyIGFuZCAxIG9mIDIzIHRoZSBzZWNvbmQpLCBzbyB0aGlzIHBhY2thZ2VcbiAqIG93bnMgdGhlbSBpbnN0ZWFkIFx1MjAxNCB7QGxpbmsgYXJjaGl2ZVBsdWdpbkRlbW9WYXVsdH0gbWVyZ2VzIHRoZW0gaW50byB0aGUgYGFwcC5qc29uYCBvZiB0aGUgYXJjaGl2ZWQgY29weVxuICogYXQgcmVsZWFzZSB0aW1lLCBhbmQgdGhlIGRlbW8tdmF1bHQgY292ZXJhZ2Ugc3VpdGUgZmFpbHMgYSB2YXVsdCB0aGF0IGNvbW1pdHMgYW55IG9mIHRoZW0uXG4gKlxuICogLSBgZGVmYXVsdFZpZXdNb2RlOiAncHJldmlldydgICsgYGxpdmVQcmV2aWV3OiBmYWxzZWAgXHUyMDE0IGEgbm90ZSBvcGVucyBhcyBhIHJlYWRlciBzZWVzIGl0IHJhdGhlciB0aGFuIGFzXG4gKiAgIHJhdyBtYXJrdXAuIE9ic2lkaWFuLW9ubHk6IEdpdEh1YiBuZXZlciByZWFkcyBgYXBwLmpzb25gIGFuZCByZW5kZXJzIGV2ZXJ5IG5vdGUgYXMgSFRNTCByZWdhcmRsZXNzLlxuICogLSBgdXNlTWFya2Rvd25MaW5rczogdHJ1ZWAgKyBgbmV3TGlua0Zvcm1hdDogJ3JlbGF0aXZlJ2AgXHUyMDE0IHdoYXQgT2JzaWRpYW4gd3JpdGVzIHdoZW4gYSBsaW5rIGlzIGNyZWF0ZWRcbiAqICAgaW5zaWRlIHRoZSB2YXVsdC4gTGVmdCBhdCBPYnNpZGlhbidzIGRlZmF1bHRzIChgZmFsc2VgIC8gYCdzaG9ydGVzdCdgKSBldmVyeSBuZXcgbGluayBjb21lcyBvdXQgYXMgYVxuICogICBzaG9ydGVzdC1wYXRoIGBbW3dpa2lsaW5rXV1gLCB0aGUgZm9ybSB0aGUgY292ZXJhZ2Ugc3VpdGUgcmVqZWN0cyBhbmQgR2l0SHViIHJlbmRlcnMgYXMgbGl0ZXJhbFxuICogICBicmFja2V0cy4gYHJlbGF0aXZlYCByYXRoZXIgdGhhbiBgYWJzb2x1dGVgIHNvIG5vdGVzIGtlZXAgcmVzb2x2aW5nIG9uY2UgdGhlIHZhdWx0IGlzIGV4dHJhY3RlZCB0byBhblxuICogICBhcmJpdHJhcnkgZm9sZGVyLlxuICpcbiAqIEFsbCBmb3VyIGFyZSB3cml0dGVuIGV4cGxpY2l0bHksIG5ldmVyIGxlZnQgdG8gYW4gT2JzaWRpYW4gZGVmYXVsdDogYSB2YXVsdCBsZWFuaW5nIG9uIGEgZGVmYXVsdCBjaGFuZ2VzXG4gKiBiZWhhdmlvciB3aGVuIHRoYXQgZGVmYXVsdCBkb2VzLlxuICpcbiAqIEtlcHQgZnJlZSBvZiBib3RoIGB2aXRlc3RgIGFuZCBgZmZsYXRlYCBvbiBwdXJwb3NlIFx1MjAxNCB0aGUgY292ZXJhZ2Ugc3VpdGUgcHVsbHMgaW4gdGhlIGZvcm1lciBhbmQgdGhlXG4gKiBhcmNoaXZlciB0aGUgbGF0dGVyLCBhbmQgbmVpdGhlciBtYXkgcmVhY2ggdGhlIG90aGVyJ3MgZW52aXJvbm1lbnQuXG4gKi9cblxuaW1wb3J0IHsgdG9Kc29uIH0gZnJvbSAnLi4vb2JqZWN0LXV0aWxzLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGRBcmNoaXZlZERlbW9WYXVsdEFwcEpzb25Db250ZW50fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZEFyY2hpdmVkRGVtb1ZhdWx0QXBwSnNvbkNvbnRlbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGRlbW8gdmF1bHQncyBjb21taXR0ZWQgYGFwcC5qc29uYCwgcGFyc2VkIGJ5IHtAbGluayBwYXJzZURlbW9WYXVsdEFwcEpzb259LlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSnNvbjogRGVtb1ZhdWx0QXBwSnNvbjtcbn1cblxuLyoqXG4gKiBBIHBhcnNlZCBgLm9ic2lkaWFuL2FwcC5qc29uYC4gT25seSB0aGUgc2V0dGluZ3MgaW4ge0BsaW5rIERFTU9fVkFVTFRfQVBQX0pTT05fU0VUVElOR1N9IGFyZSBpbnRlcnByZXRlZDtcbiAqIGV2ZXJ5IG90aGVyIHNldHRpbmcgaXMgY2FycmllZCB0aHJvdWdoIHVudG91Y2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgRGVtb1ZhdWx0QXBwSnNvbiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kT3duZWREZW1vVmF1bHRBcHBKc29uU2V0dGluZ3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbmRPd25lZERlbW9WYXVsdEFwcEpzb25TZXR0aW5nc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZGVtbyB2YXVsdCdzIGNvbW1pdHRlZCBgYXBwLmpzb25gLCBwYXJzZWQgYnkge0BsaW5rIHBhcnNlRGVtb1ZhdWx0QXBwSnNvbn0uXG4gICAqL1xuICByZWFkb25seSBhcHBKc29uOiBEZW1vVmF1bHRBcHBKc29uO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBwYXJzZURlbW9WYXVsdEFwcEpzb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlRGVtb1ZhdWx0QXBwSnNvblBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgcmF3IGZpbGUgY29udGVudCwgb3IgYG51bGxgIHdoZW4gdGhlIHZhdWx0IGNvbW1pdHMgbm8gYGFwcC5qc29uYCBhdCBhbGwgXHUyMDE0IHdoaWNoIGlzIHRoZSBleHBlY3RlZFxuICAgKiBzdGF0ZSBmb3IgYSB2YXVsdCB0aGF0IGhhcyBub3RoaW5nIGVsc2UgdG8gY29uZmlndXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogbnVsbCB8IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdGhlIGNvbnRlbnQgd2FzIHJlYWQgZnJvbSwgbmFtZWQgaW4gdGhlIGVycm9yIHdoZW4gaXQgZG9lcyBub3QgcGFyc2UuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGAub2JzaWRpYW4vYXBwLmpzb25gIHNldHRpbmdzIHRoaXMgcGFja2FnZSB3cml0ZXMgaW50byBldmVyeSBhcmNoaXZlZCBkZW1vIHZhdWx0LCBhbmQgdGhhdCBhIGRlbW9cbiAqIHZhdWx0IG11c3QgdGhlcmVmb3JlIG5ldmVyIGNvbW1pdC4gU2VlIHRoZSBmaWxlIG92ZXJ2aWV3IGZvciB3aGF0IGVhY2ggb25lIGJ1eXMuXG4gKi9cbmV4cG9ydCBjb25zdCBERU1PX1ZBVUxUX0FQUF9KU09OX1NFVFRJTkdTOiBEZW1vVmF1bHRBcHBKc29uID0ge1xuICBkZWZhdWx0Vmlld01vZGU6ICdwcmV2aWV3JyxcbiAgbGl2ZVByZXZpZXc6IGZhbHNlLFxuICBuZXdMaW5rRm9ybWF0OiAncmVsYXRpdmUnLFxuICB1c2VNYXJrZG93bkxpbmtzOiB0cnVlXG59O1xuXG4vKipcbiAqIEJ1aWxkcyB0aGUgYGFwcC5qc29uYCBjb250ZW50IGZvciB0aGUgYXJjaGl2ZWQgY29weSBvZiBhIGRlbW8gdmF1bHQ6IHRoZSBjb21taXR0ZWQgc2V0dGluZ3Mgd2l0aCB0aGVcbiAqIG93bmVkIG9uZXMgbWVyZ2VkIG92ZXIgdGhlbS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZC5cbiAqIEByZXR1cm5zIFRoZSBKU09OIHRleHQgdG8gc3RvcmUgYXMgdGhlIGFyY2hpdmUncyBgLm9ic2lkaWFuL2FwcC5qc29uYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQXJjaGl2ZWREZW1vVmF1bHRBcHBKc29uQ29udGVudChwYXJhbXM6IEJ1aWxkQXJjaGl2ZWREZW1vVmF1bHRBcHBKc29uQ29udGVudFBhcmFtcyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtcbiAgICB0b0pzb24oe1xuICAgICAgLi4ucGFyYW1zLmFwcEpzb24sXG4gICAgICAuLi5ERU1PX1ZBVUxUX0FQUF9KU09OX1NFVFRJTkdTXG4gICAgfSlcbiAgfVxcbmA7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIG93bmVkIHNldHRpbmdzIGEgZGVtbyB2YXVsdCBoYXMgY29tbWl0dGVkLiBUaGV5IGJlbG9uZyB0byB0aGlzIHBhY2thZ2UsIHdoaWNoIGluamVjdHMgdGhlbSBhdFxuICogcmVsZWFzZSB0aW1lLCBzbyBhIGNvbW1pdHRlZCBvbmUgaXMgZHJpZnQgd2FpdGluZyB0byBoYXBwZW4gcmF0aGVyIHRoYW4gYSBsb2NhbCBwcmVmZXJlbmNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGxvb2t1cC5cbiAqIEByZXR1cm5zIFRoZSBuYW1lcyBvZiB0aGUgb3duZWQgc2V0dGluZ3MgcHJlc2VudCBpbiB0aGUgY29tbWl0dGVkIGBhcHAuanNvbmAsIGluIHRoZSBvcmRlciB0aGV5IGFyZVxuICogZGVjbGFyZWQgaW4ge0BsaW5rIERFTU9fVkFVTFRfQVBQX0pTT05fU0VUVElOR1N9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE93bmVkRGVtb1ZhdWx0QXBwSnNvblNldHRpbmdzKHBhcmFtczogRmluZE93bmVkRGVtb1ZhdWx0QXBwSnNvblNldHRpbmdzUGFyYW1zKTogc3RyaW5nW10ge1xuICByZXR1cm4gT2JqZWN0LmtleXMoREVNT19WQVVMVF9BUFBfSlNPTl9TRVRUSU5HUykuZmlsdGVyKChzZXR0aW5nKSA9PiBPYmplY3QuaGFzT3duKHBhcmFtcy5hcHBKc29uLCBzZXR0aW5nKSk7XG59XG5cbi8qKlxuICogUGFyc2VzIGEgZGVtbyB2YXVsdCdzIGNvbW1pdHRlZCBgYXBwLmpzb25gLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHBhcnNlLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBzZXR0aW5ncywgb3IgYW4gZW1wdHkgb2JqZWN0IHdoZW4gdGhlIHZhdWx0IGNvbW1pdHMgbm8gYGFwcC5qc29uYC5cbiAqIEB0aHJvd3MgV2hlbiB0aGUgY29udGVudCBpcyBub3QgdmFsaWQgSlNPTiwgbmFtaW5nIHRoZSBmaWxlIGl0IGNhbWUgZnJvbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGVtb1ZhdWx0QXBwSnNvbihwYXJhbXM6IFBhcnNlRGVtb1ZhdWx0QXBwSnNvblBhcmFtcyk6IERlbW9WYXVsdEFwcEpzb24ge1xuICBpZiAocGFyYW1zLmNvbnRlbnQgPT09IG51bGwpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHBhcmFtcy5jb250ZW50KSBhcyBEZW1vVmF1bHRBcHBKc29uO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHBhcnNlICR7cGFyYW1zLnBhdGh9LmAsIHsgY2F1c2U6IGVycm9yIH0pO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBLFNBQVMsY0FBYztBQWdEaEIsTUFBTSwrQkFBaUQ7QUFBQSxFQUM1RCxpQkFBaUI7QUFBQSxFQUNqQixhQUFhO0FBQUEsRUFDYixlQUFlO0FBQUEsRUFDZixrQkFBa0I7QUFDcEI7QUFTTyxTQUFTLHFDQUFxQyxRQUE0RDtBQUMvRyxTQUFPLEdBQ0wsT0FBTztBQUFBLElBQ0wsR0FBRyxPQUFPO0FBQUEsSUFDVixHQUFHO0FBQUEsRUFDTCxDQUFDLENBQ0g7QUFBQTtBQUNGO0FBVU8sU0FBUyxrQ0FBa0MsUUFBMkQ7QUFDM0csU0FBTyxPQUFPLEtBQUssNEJBQTRCLEVBQUUsT0FBTyxDQUFDLFlBQVksT0FBTyxPQUFPLE9BQU8sU0FBUyxPQUFPLENBQUM7QUFDN0c7QUFTTyxTQUFTLHNCQUFzQixRQUF1RDtBQUMzRixNQUFJLE9BQU8sWUFBWSxNQUFNO0FBQzNCLFdBQU8sQ0FBQztBQUFBLEVBQ1Y7QUFFQSxNQUFJO0FBQ0YsV0FBTyxLQUFLLE1BQU0sT0FBTyxPQUFPO0FBQUEsRUFDbEMsU0FBUyxPQUFPO0FBQ2QsVUFBTSxJQUFJLE1BQU0sbUJBQW1CLE9BQU8sSUFBSSxLQUFLLEVBQUUsT0FBTyxNQUFNLENBQUM7QUFBQSxFQUNyRTtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -41,7 +41,7 @@ function ensureBrowserProcess() {
|
|
|
41
41
|
})();
|
|
42
42
|
})();
|
|
43
43
|
|
|
44
|
-
import
|
|
44
|
+
import { zipSync } from "fflate";
|
|
45
45
|
import { existsSync } from "node:fs";
|
|
46
46
|
import {
|
|
47
47
|
cp,
|
|
@@ -56,13 +56,15 @@ import {
|
|
|
56
56
|
import { ObsidianPluginRepoPaths } from "../obsidian/plugin/obsidian-plugin-repo-paths.mjs";
|
|
57
57
|
import {
|
|
58
58
|
getFolderName,
|
|
59
|
-
join
|
|
59
|
+
join,
|
|
60
|
+
relative
|
|
60
61
|
} from "../path.mjs";
|
|
61
62
|
import {
|
|
62
63
|
buildArchivedDemoVaultAppJsonContent,
|
|
63
64
|
findOwnedDemoVaultAppJsonSettings,
|
|
64
65
|
parseDemoVaultAppJson
|
|
65
66
|
} from "./demo-vault-app-json.mjs";
|
|
67
|
+
import { readdirPosix } from "./fs.mjs";
|
|
66
68
|
import { ObsidianDevUtilsRepoPaths } from "./obsidian-dev-utils-repo-paths.mjs";
|
|
67
69
|
import {
|
|
68
70
|
getRootFolder,
|
|
@@ -99,22 +101,31 @@ async function archivePluginDemoVault() {
|
|
|
99
101
|
pluginId: manifest.id,
|
|
100
102
|
version: manifest.version
|
|
101
103
|
});
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
const entries = await readDemoVaultEntries({
|
|
105
|
+
demoVaultPath,
|
|
106
|
+
rootFolderName
|
|
107
|
+
});
|
|
108
|
+
injectAppJson({
|
|
109
|
+
appJson: await readCommittedAppJson(),
|
|
110
|
+
entries,
|
|
111
|
+
rootFolderName
|
|
112
|
+
});
|
|
113
|
+
injectReadmeVersion({
|
|
114
|
+
entries,
|
|
115
|
+
rootFolderName,
|
|
116
|
+
version: manifest.version
|
|
117
|
+
});
|
|
118
|
+
await writeFile(zipPath, zipSync(Object.fromEntries(entries)));
|
|
107
119
|
return zipPath;
|
|
108
120
|
}
|
|
109
|
-
function injectAppJson(
|
|
121
|
+
function injectAppJson(params) {
|
|
122
|
+
const {
|
|
123
|
+
appJson,
|
|
124
|
+
entries,
|
|
125
|
+
rootFolderName
|
|
126
|
+
} = params;
|
|
110
127
|
const entryName = join(rootFolderName, ObsidianPluginRepoPaths.DotObsidian, ObsidianPluginRepoPaths.AppJson);
|
|
111
|
-
|
|
112
|
-
const entry = zip.getEntry(entryName);
|
|
113
|
-
if (entry) {
|
|
114
|
-
zip.updateFile(entry, content);
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
zip.addFile(entryName, content);
|
|
128
|
+
entries.set(entryName, Buffer.from(buildArchivedDemoVaultAppJsonContent({ appJson }), "utf-8"));
|
|
118
129
|
}
|
|
119
130
|
async function injectDemoVaultHelper(demoedPluginId) {
|
|
120
131
|
const packageFolder = getRootFolder(getFolderName(import.meta.url));
|
|
@@ -136,17 +147,23 @@ async function injectDemoVaultHelper(demoedPluginId) {
|
|
|
136
147
|
await writeFile(join(helperFolder, DATA_JSON_FILE_NAME), `${JSON.stringify(settings, null, DATA_JSON_INDENT)}
|
|
137
148
|
`, "utf-8");
|
|
138
149
|
}
|
|
139
|
-
function injectReadmeVersion(
|
|
140
|
-
const
|
|
150
|
+
function injectReadmeVersion(params) {
|
|
151
|
+
const {
|
|
152
|
+
entries,
|
|
153
|
+
rootFolderName,
|
|
154
|
+
version
|
|
155
|
+
} = params;
|
|
156
|
+
const entryName = join(rootFolderName, README_FILE_NAME);
|
|
157
|
+
const entry = entries.get(entryName);
|
|
141
158
|
if (!entry) {
|
|
142
159
|
return;
|
|
143
160
|
}
|
|
144
|
-
const content = entry.
|
|
161
|
+
const content = entry.toString("utf-8");
|
|
145
162
|
const versionedContent = content.replace(OPENING_HEADING_REG_EXP, (heading) => `${heading} v${version}`);
|
|
146
163
|
if (versionedContent === content) {
|
|
147
164
|
return;
|
|
148
165
|
}
|
|
149
|
-
|
|
166
|
+
entries.set(entryName, Buffer.from(versionedContent, "utf-8"));
|
|
150
167
|
}
|
|
151
168
|
async function readCommittedAppJson() {
|
|
152
169
|
const appJsonPath = resolvePathFromRootSafe({
|
|
@@ -162,7 +179,22 @@ async function readCommittedAppJson() {
|
|
|
162
179
|
}
|
|
163
180
|
return appJson;
|
|
164
181
|
}
|
|
182
|
+
async function readDemoVaultEntries(params) {
|
|
183
|
+
const {
|
|
184
|
+
demoVaultPath,
|
|
185
|
+
rootFolderName
|
|
186
|
+
} = params;
|
|
187
|
+
const entries = /* @__PURE__ */ new Map();
|
|
188
|
+
for (const dirent of await readdirPosix(demoVaultPath, { recursive: true, withFileTypes: true })) {
|
|
189
|
+
if (!dirent.isFile()) {
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
const path = join(dirent.parentPath, dirent.name);
|
|
193
|
+
entries.set(join(rootFolderName, relative(demoVaultPath, path)), await readFile(path));
|
|
194
|
+
}
|
|
195
|
+
return entries;
|
|
196
|
+
}
|
|
165
197
|
export {
|
|
166
198
|
archivePluginDemoVault
|
|
167
199
|
};
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9kZW1vLXZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQXJjaGl2ZXMgYSBwbHVnaW4ncyBkZW1vIHZhdWx0IGFzIGEgcmVsZWFzZSBhcnRpZmFjdC5cbiAqXG4gKiBBIHBsdWdpbiBjYW4gc2hpcCBhIGN1cmF0ZWQgZGVtbyB2YXVsdCBhdCBgZGVtby12YXVsdC9gIGluIGl0cyByZXBvIHJvb3QuIEF0IHJlbGVhc2UgdGltZSB0aGlzXG4gKiBtb2R1bGUgaW5zdGFsbHMgdGhlIGZyZXNobHkgYnVpbHQgcGx1Z2luIGludG8gdGhhdCB2YXVsdCdzIGAub2JzaWRpYW4vcGx1Z2lucy88aWQ+L2AgZm9sZGVyIGFuZFxuICogemlwcyB0aGUgd2hvbGUgdmF1bHQgaW50byBgZGlzdC9idWlsZC88cGx1Z2luLWlkPi1kZW1vLXZhdWx0LnppcGAsIHNvIHRoZSBleGlzdGluZyBHaXRIdWItcmVsZWFzZVxuICogc3RlcCAod2hpY2ggdXBsb2FkcyBldmVyeSBmaWxlIGluIGBkaXN0L2J1aWxkL2ApIGF0dGFjaGVzIGl0IGF1dG9tYXRpY2FsbHkuXG4gKlxuICogVGhlIHZlcnNpb24gaXMgZGVsaWJlcmF0ZWx5IGFic2VudCBmcm9tIHRoYXQgbmFtZSBhbmQgbGl2ZXMgSU5TSURFIHRoZSBhcmNoaXZlIGluc3RlYWQgXHUyMDE0IHNlZVxuICogYG9ic2lkaWFuL2RlbW8tdmF1bHQtbmFtaW5nLnRzYCBmb3Igd2h5IFx1MjAxNCBpbiB0aGUgdHdvIHBsYWNlcyBhIHBlcnNvbiBhY3R1YWxseSBtZWV0cyBpdDogdGhlIHZhdWx0XG4gKiBzaXRzIHVuZGVyIGEgc2luZ2xlIGA8cGx1Z2luLWlkPi1kZW1vLXZhdWx0LTx2ZXJzaW9uPi9gIGZvbGRlciwgc28gdW56aXBwaW5nIHNldmVyYWwgcmVsZWFzZXMgYnkgaGFuZFxuICogaW50byBvbmUgZm9sZGVyIG5laXRoZXIgY29sbGlkZXMgbm9yIHByb2R1Y2VzIGFub255bW91cyBkaXJlY3RvcmllcywgYW5kIHRoZSB2YXVsdCdzIGBSRUFETUUubWRgXG4gKiBoZWFkaW5nIGdhaW5zIHRoZSB2ZXJzaW9uIGl0IGRlbW9uc3RyYXRlcy5cbiAqXG4gKiBUaGUgYXJjaGl2ZWQgY29weSBhbHNvIGNhcnJpZXMgdGhlIGAub2JzaWRpYW4vYXBwLmpzb25gIHNldHRpbmdzIHRoaXMgcGFja2FnZSBvd25zIChzZWVcbiAqIGBkZW1vLXZhdWx0LWFwcC1qc29uLnRzYCkuIFRob3NlIHNldHRpbmdzIGFuZCB0aGUgUkVBRE1FIGhlYWRpbmcgYXJlIHdyaXR0ZW4gaW50byB0aGUgWklQIEVOVFJZIGFuZFxuICogbmV2ZXIgaW50byB0aGUgcmVwbyBmb2xkZXI6IGJvdGggZmlsZXMgYXJlIHRyYWNrZWQsIGFuZCBgdXBkYXRlVmVyc2lvbmAgYXJjaGl2ZXMgYWZ0ZXIgaXQgaGFzIGFscmVhZHlcbiAqIHB1c2hlZCwgc28gYW4gaW4tcGxhY2Ugd3JpdGUgd291bGQgbGVhdmUgYW4gdW5jb21taXR0ZWQgY2hhbmdlIGJlaGluZCBhIHB1Ymxpc2hlZCByZWxlYXNlLlxuICovXG5cbmltcG9ydCBBZG1aaXAgZnJvbSAnYWRtLXppcCc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBjcCxcbiAgbWtkaXIsXG4gIHJlYWRGaWxlLFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5cbmltcG9ydCB0eXBlIHsgRGVtb1ZhdWx0SGVscGVyU2V0dGluZ3MgfSBmcm9tICcuLi9vYnNpZGlhbi9kZW1vLXZhdWx0LWhlbHBlci1zZXR0aW5ncy50cyc7XG5pbXBvcnQgdHlwZSB7IERlbW9WYXVsdEFwcEpzb24gfSBmcm9tICcuL2RlbW8tdmF1bHQtYXBwLWpzb24udHMnO1xuXG5pbXBvcnQge1xuICBnZXREZW1vVmF1bHRBcmNoaXZlRmlsZU5hbWUsXG4gIGdldERlbW9WYXVsdEZvbGRlck5hbWVcbn0gZnJvbSAnLi4vb2JzaWRpYW4vZGVtby12YXVsdC1uYW1pbmcudHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuLi9vYnNpZGlhbi9wbHVnaW4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZ2V0Rm9sZGVyTmFtZSxcbiAgam9pblxufSBmcm9tICcuLi9wYXRoLnRzJztcbmltcG9ydCB7XG4gIGJ1aWxkQXJjaGl2ZWREZW1vVmF1bHRBcHBKc29uQ29udGVudCxcbiAgZmluZE93bmVkRGVtb1ZhdWx0QXBwSnNvblNldHRpbmdzLFxuICBwYXJzZURlbW9WYXVsdEFwcEpzb25cbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWFwcC1qc29uLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMgfSBmcm9tICcuL29ic2lkaWFuLWRldi11dGlscy1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGdldFJvb3RGb2xkZXIsXG4gIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlXG59IGZyb20gJy4vcm9vdC50cyc7XG5cbmNvbnN0IERFTU9fVkFVTFRfSEVMUEVSX1BMVUdJTl9JRCA9ICdkZW1vLXZhdWx0LWhlbHBlcic7XG5jb25zdCBEQVRBX0pTT05fRklMRV9OQU1FID0gJ2RhdGEuanNvbic7XG5jb25zdCBEQVRBX0pTT05fSU5ERU5UID0gMjtcbmNvbnN0IFJFQURNRV9GSUxFX05BTUUgPSAnUkVBRE1FLm1kJztcblxuLy8gVGhlIFJFQURNRSdzIG9wZW5pbmcgYCMgSDFgLCBhbmQgb25seSB0aGF0IG9uZTogd2l0aG91dCB0aGUgYG1gIGZsYWcgdGhlIG1hdGNoIGlzIGFuY2hvcmVkIHRvIHRoZSBzdGFydFxuLy8gT2YgdGhlIGZpbGUsIGFuZCBgLmAgc3RvcHMgYXQgdGhlIG5ld2xpbmUgdGhhdCBlbmRzIHRoZSBsaW5lLlxuY29uc3QgT1BFTklOR19IRUFESU5HX1JFR19FWFAgPSAvXiMgLiovO1xuXG4vKipcbiAqIFRoZSBtaW5pbWFsIHNoYXBlIG9mIGEgcGx1Z2luIGBtYW5pZmVzdC5qc29uYCByZWFkIGJ5IHtAbGluayBhcmNoaXZlUGx1Z2luRGVtb1ZhdWx0fS5cbiAqL1xuaW50ZXJmYWNlIFBsdWdpbk1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQsIHVzZWQgYXMgdGhlIGZvbGRlciBuYW1lIHVuZGVyIGBkZW1vLXZhdWx0Ly5vYnNpZGlhbi9wbHVnaW5zL2AuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIHZlcnNpb24sIGVtYmVkZGVkIGluIHRoZSBhcmNoaXZlJ3MgdG9wLWxldmVsIGZvbGRlciBuYW1lIGFuZCBpdHMgUkVBRE1FIGhlYWRpbmcuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXJjaGl2ZXMgdGhlIHBsdWdpbidzIGRlbW8gdmF1bHQgKGBkZW1vLXZhdWx0L2AgaW4gdGhlIHJlcG8gcm9vdCkgYXMgYSByZWxlYXNlIGFydGlmYWN0LlxuICpcbiAqIEluc3RhbGxzIHRoZSBmcmVzaGx5IGJ1aWx0IHBsdWdpbiBmcm9tIGBkaXN0L2J1aWxkL2AgaW50byB0aGUgdmF1bHQnc1xuICogYC5vYnNpZGlhbi9wbHVnaW5zLzxpZD4vYCBmb2xkZXIsIHRoZW4gemlwcyB0aGUgd2hvbGUgdmF1bHQgdG9cbiAqIGBkaXN0L2J1aWxkLzxwbHVnaW4taWQ+LWRlbW8tdmF1bHQuemlwYCwgdW5kZXIgYSBzaW5nbGUgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQtPHZlcnNpb24+L2AgZm9sZGVyLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGNyZWF0ZWQgemlwIGFyY2hpdmUsIG9yXG4gKiBgbnVsbGAgaWYgdGhlIHJlcG8gaGFzIG5vIGBkZW1vLXZhdWx0L2AgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXJjaGl2ZVBsdWdpbkRlbW9WYXVsdCgpOiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHtcbiAgY29uc3QgZGVtb1ZhdWx0UGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0IH0pO1xuICBpZiAoIWV4aXN0c1N5bmMoZGVtb1ZhdWx0UGF0aCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG1hbmlmZXN0UGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uIH0pO1xuICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUobWFuaWZlc3RQYXRoLCAndXRmLTgnKSkgYXMgUGx1Z2luTWFuaWZlc3Q7XG5cbiAgY29uc3QgcGx1Z2luRm9sZGVyID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQsXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbixcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlBsdWdpbnMsXG4gICAgICBtYW5pZmVzdC5pZFxuICAgIClcbiAgfSk7XG4gIGF3YWl0IG1rZGlyKHBsdWdpbkZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgY29uc3QgZGlzdEJ1aWxkUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEJ1aWxkIH0pO1xuICBhd2FpdCBjcChkaXN0QnVpbGRQYXRoLCBwbHVnaW5Gb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGF3YWl0IGluamVjdERlbW9WYXVsdEhlbHBlcihtYW5pZmVzdC5pZCk7XG5cbiAgY29uc3QgemlwUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHtcbiAgICBwYXRoOiBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCwgZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lKG1hbmlmZXN0LmlkKSlcbiAgfSk7XG4gIGNvbnN0IHJvb3RGb2xkZXJOYW1lID0gZ2V0RGVtb1ZhdWx0Rm9sZGVyTmFtZSh7XG4gICAgcGx1Z2luSWQ6IG1hbmlmZXN0LmlkLFxuICAgIHZlcnNpb246IG1hbmlmZXN0LnZlcnNpb25cbiAgfSk7XG4gIGNvbnN0IHppcCA9IG5ldyBBZG1aaXAoKTtcbiAgemlwLmFkZExvY2FsRm9sZGVyKGRlbW9WYXVsdFBhdGgsIHJvb3RGb2xkZXJOYW1lKTtcbiAgaW5qZWN0QXBwSnNvbih6aXAsIGF3YWl0IHJlYWRDb21taXR0ZWRBcHBKc29uKCksIHJvb3RGb2xkZXJOYW1lKTtcbiAgaW5qZWN0UmVhZG1lVmVyc2lvbih6aXAsIHJvb3RGb2xkZXJOYW1lLCBtYW5pZmVzdC52ZXJzaW9uKTtcbiAgYXdhaXQgemlwLndyaXRlWmlwUHJvbWlzZSh6aXBQYXRoKTtcbiAgcmV0dXJuIHppcFBhdGg7XG59XG5cbi8vIFN0b3JlcyB0aGUgYXJjaGl2ZWQgdmF1bHQncyBgLm9ic2lkaWFuL2FwcC5qc29uYCBcdTIwMTQgdGhlIGNvbW1pdHRlZCBzZXR0aW5ncyB3aXRoIHRoZSBvd25lZCBvbmVzIG1lcmdlZFxuLy8gT3ZlciB0aGVtLiBUaGUgZW50cnkgaXMgcmVwbGFjZWQgcmF0aGVyIHRoYW4gdGhlIGZpbGUsIHNvIHRoZSByZXBvIGZvbGRlciBpcyBsZWZ0IGV4YWN0bHkgYXMgaXQgd2FzLlxuZnVuY3Rpb24gaW5qZWN0QXBwSnNvbih6aXA6IEFkbVppcCwgYXBwSnNvbjogRGVtb1ZhdWx0QXBwSnNvbiwgcm9vdEZvbGRlck5hbWU6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBlbnRyeU5hbWUgPSBqb2luKHJvb3RGb2xkZXJOYW1lLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbiwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQXBwSnNvbik7XG4gIGNvbnN0IGNvbnRlbnQgPSBCdWZmZXIuZnJvbShidWlsZEFyY2hpdmVkRGVtb1ZhdWx0QXBwSnNvbkNvbnRlbnQoeyBhcHBKc29uIH0pLCAndXRmLTgnKTtcbiAgY29uc3QgZW50cnkgPSB6aXAuZ2V0RW50cnkoZW50cnlOYW1lKTtcbiAgaWYgKGVudHJ5KSB7XG4gICAgemlwLnVwZGF0ZUZpbGUoZW50cnksIGNvbnRlbnQpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEEgdmF1bHQgd2l0aCBub3RoaW5nIGVsc2UgdG8gY29uZmlndXJlIGNvbW1pdHMgbm8gYGFwcC5qc29uYCBhdCBhbGwsIHdoaWNoIGlzIHRoZSBleHBlY3RlZCBzdGF0ZS5cbiAgemlwLmFkZEZpbGUoZW50cnlOYW1lLCBjb250ZW50KTtcbn1cblxuLy8gSW5qZWN0cyB0aGUgYnVpbHQsIGBvYnNpZGlhbi1kZXYtdXRpbHNgLW93bmVkIGBkZW1vLXZhdWx0LWhlbHBlcmAgYm9vdHN0cmFwIHBsdWdpbiAoc2hpcHBlZCBpbiB0aGlzIHBhY2thZ2UpIGludG8gdGhlIGRlbW8gdmF1bHQsIHNvIG5vIHBlci12YXVsdCBjb3B5IGlzIGNvbW1pdHRlZCBhbmQgYW4gYG9ic2lkaWFuLWRldi11dGlsc2AgYnVtcCBwcm9wYWdhdGVzIGZpeGVzLlxuLy9cbi8vIEFsb25nc2lkZSB0aGUgYmluYXJpZXMgaXQgd3JpdGVzIHRoZSBoZWxwZXIncyBvd24gYGRhdGEuanNvbmAgbmFtaW5nIHRoZSBkZW1vbnN0cmF0ZWQgcGx1Z2luLiBUaGF0IGlzXG4vLyBUaGUgb25lIG1vbWVudCB0aGUgaWQgaXMga25vd24gZm9yIGNlcnRhaW4gXHUyMDE0IGl0IGNvbWVzIGZyb20gdGhlIHBsdWdpbidzIG93biBtYW5pZmVzdCBcdTIwMTQgd2hlcmVhcyB0aGVcbi8vIE9wZW5lZCB2YXVsdCBvbmx5IG9mZmVycyBwbHVnaW4gZm9sZGVycyB0byBjb3VudCwgd2hpY2ggdGhlIGJvb3RzdHJhcCBpdHNlbGYgYWRkcyB0byAoc2VlXG4vLyBgRGVtb1ZhdWx0SGVscGVyU2V0dGluZ3NgKS5cbmFzeW5jIGZ1bmN0aW9uIGluamVjdERlbW9WYXVsdEhlbHBlcihkZW1vZWRQbHVnaW5JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHBhY2thZ2VGb2xkZXIgPSBnZXRSb290Rm9sZGVyKGdldEZvbGRlck5hbWUoaW1wb3J0Lm1ldGEudXJsKSk7XG4gIGlmICghcGFja2FnZUZvbGRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHJlc29sdmUgdGhlIG9ic2lkaWFuLWRldi11dGlscyBwYWNrYWdlIGZvbGRlciB0byBpbmplY3QgdGhlIGRlbW8tdmF1bHQtaGVscGVyIHBsdWdpbi4nKTtcbiAgfVxuXG4gIGNvbnN0IGhlbHBlclNvdXJjZVBhdGggPSBqb2luKHBhY2thZ2VGb2xkZXIsIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdERlbW9WYXVsdEhlbHBlcik7XG4gIGNvbnN0IGhlbHBlckZvbGRlciA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHtcbiAgICBwYXRoOiBqb2luKFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0LFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRG90T2JzaWRpYW4sXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5QbHVnaW5zLFxuICAgICAgREVNT19WQVVMVF9IRUxQRVJfUExVR0lOX0lEXG4gICAgKVxuICB9KTtcbiAgYXdhaXQgbWtkaXIoaGVscGVyRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgYXdhaXQgY3AoaGVscGVyU291cmNlUGF0aCwgaGVscGVyRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCBzZXR0aW5nczogRGVtb1ZhdWx0SGVscGVyU2V0dGluZ3MgPSB7IGRlbW9lZFBsdWdpbklkIH07XG4gIGF3YWl0IHdyaXRlRmlsZShqb2luKGhlbHBlckZvbGRlciwgREFUQV9KU09OX0ZJTEVfTkFNRSksIGAke0pTT04uc3RyaW5naWZ5KHNldHRpbmdzLCBudWxsLCBEQVRBX0pTT05fSU5ERU5UKX1cXG5gLCAndXRmLTgnKTtcbn1cblxuLy8gTmFtZXMgdGhlIHZlcnNpb24gb24gdGhlIGFyY2hpdmVkIGBSRUFETUUubWRgJ3MgaGVhZGluZywgc28gdGhlIHZhdWx0IHNheXMgd2hpY2ggcmVsZWFzZSBpdCBkZW1vbnN0cmF0ZXNcbi8vIEhvd2V2ZXIgZmFyIGl0IHRyYXZlbHMgZnJvbSB0aGUgcmVsZWFzZSBwYWdlIGl0IHdhcyBkb3dubG9hZGVkIGZyb20uXG4vL1xuLy8gRW50cnktb25seSwgZm9yIHRoZSBzYW1lIHJlYXNvbiBgaW5qZWN0QXBwSnNvbmAgaXM6IHRoZSBjb21taXR0ZWQgUkVBRE1FIGlzIGEgdHJhY2tlZCwgaGFuZC1hdXRob3JlZFxuLy8gRmlsZSBhbmQgYHVwZGF0ZVZlcnNpb25gIGFyY2hpdmVzIGFmdGVyIGl0IGhhcyBhbHJlYWR5IHB1c2hlZC5cbi8vXG4vLyBBIHZhdWx0IHRoYXQgc2hpcHMgbm8gUkVBRE1FLCBvciBvbmUgb3BlbmluZyBvbiBzb21ldGhpbmcgb3RoZXIgdGhhbiBhbiBgIyBIMWAsIGlzIGxlZnQgYWxvbmUgcmF0aGVyXG4vLyBUaGFuIGNvcnJlY3RlZC4gVGhlIGRlbW8tdmF1bHQgY292ZXJhZ2Ugc3VpdGUgZXhlbXB0cyBgUkVBRE1FLm1kYCBmcm9tIGl0cyBIMSBjaGVjaywgc28gbmVpdGhlciBzaGFwZVxuLy8gSXMgYSBkZWZlY3QgXHUyMDE0IGFuZCBhIHJlbGVhc2UgaXMgdGhlIHdyb25nIG1vbWVudCB0byBzdGFydCBmYWlsaW5nIG9uIG9uZS5cbmZ1bmN0aW9uIGluamVjdFJlYWRtZVZlcnNpb24oemlwOiBBZG1aaXAsIHJvb3RGb2xkZXJOYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBlbnRyeSA9IHppcC5nZXRFbnRyeShqb2luKHJvb3RGb2xkZXJOYW1lLCBSRUFETUVfRklMRV9OQU1FKSk7XG4gIGlmICghZW50cnkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb250ZW50ID0gZW50cnkuZ2V0RGF0YSgpLnRvU3RyaW5nKCd1dGYtOCcpO1xuICBjb25zdCB2ZXJzaW9uZWRDb250ZW50ID0gY29udGVudC5yZXBsYWNlKE9QRU5JTkdfSEVBRElOR19SRUdfRVhQLCAoaGVhZGluZykgPT4gYCR7aGVhZGluZ30gdiR7dmVyc2lvbn1gKTtcbiAgaWYgKHZlcnNpb25lZENvbnRlbnQgPT09IGNvbnRlbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB6aXAudXBkYXRlRmlsZShlbnRyeSwgQnVmZmVyLmZyb20odmVyc2lvbmVkQ29udGVudCwgJ3V0Zi04JykpO1xufVxuXG4vLyBSZWFkcyB0aGUgZGVtbyB2YXVsdCdzIGNvbW1pdHRlZCBgLm9ic2lkaWFuL2FwcC5qc29uYCwgcmVmdXNpbmcgdGhlIHNldHRpbmdzIHRoaXMgcGFja2FnZSBvd25zLlxuLy9cbi8vIFRob3NlIHNldHRpbmdzIGFyZSBpbmplY3RlZCBpbnRvIHRoZSBhcmNoaXZlLCBzbyBhIGNvbW1pdHRlZCBvbmUgaXMgYSBzZWNvbmQgc291cmNlIG9mIHRydXRoIHRoYXRcbi8vIE5vdGhpbmcga2VlcHMgaW4gc3RlcC4gVGhlIGRlbW8tdmF1bHQgY292ZXJhZ2Ugc3VpdGUgYWxyZWFkeSBmYWlscyBvbiBpdCwgd2hpY2ggbWVhbnMgcmVhY2hpbmcgaGVyZVxuLy8gTWVhbnMgdGhhdCBnYXRlIHdhcyBza2lwcGVkIFx1MjAxNCBzbyB0aGlzIHJlZnVzZXMgcmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgYSB2YWx1ZSBzb21lYm9keSBjaG9zZSBvbiBwdXJwb3NlLlxuYXN5bmMgZnVuY3Rpb24gcmVhZENvbW1pdHRlZEFwcEpzb24oKTogUHJvbWlzZTxEZW1vVmF1bHRBcHBKc29uPiB7XG4gIGNvbnN0IGFwcEpzb25QYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0LCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbiwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQXBwSnNvbilcbiAgfSk7XG4gIGNvbnN0IGNvbnRlbnQgPSBleGlzdHNTeW5jKGFwcEpzb25QYXRoKSA/IGF3YWl0IHJlYWRGaWxlKGFwcEpzb25QYXRoLCAndXRmLTgnKSA6IG51bGw7XG4gIGNvbnN0IGFwcEpzb24gPSBwYXJzZURlbW9WYXVsdEFwcEpzb24oeyBjb250ZW50LCBwYXRoOiBhcHBKc29uUGF0aCB9KTtcblxuICBjb25zdCBvd25lZFNldHRpbmdzID0gZmluZE93bmVkRGVtb1ZhdWx0QXBwSnNvblNldHRpbmdzKHsgYXBwSnNvbiB9KTtcbiAgaWYgKG93bmVkU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke2FwcEpzb25QYXRofSBzZXRzICR7b3duZWRTZXR0aW5ncy5qb2luKCcsICcpfSwgd2hpY2ggb2JzaWRpYW4tZGV2LXV0aWxzIG93bnMgYW5kIHdyaXRlcyBpbnRvIHRoZSBhcmNoaXZlZCBkZW1vIHZhdWx0LiBTZXR0aW5ncyBpdCBvd25zIG11c3Qgbm90IGJlIGNvbW1pdHRlZC5gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBhcHBKc29uO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQSxPQUFPLFlBQVk7QUFDbkIsU0FBUyxrQkFBa0I7QUFDM0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUtQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUywrQkFBK0I7QUFDeEM7QUFBQSxFQUNF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
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9kZW1vLXZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQXJjaGl2ZXMgYSBwbHVnaW4ncyBkZW1vIHZhdWx0IGFzIGEgcmVsZWFzZSBhcnRpZmFjdC5cbiAqXG4gKiBBIHBsdWdpbiBjYW4gc2hpcCBhIGN1cmF0ZWQgZGVtbyB2YXVsdCBhdCBgZGVtby12YXVsdC9gIGluIGl0cyByZXBvIHJvb3QuIEF0IHJlbGVhc2UgdGltZSB0aGlzXG4gKiBtb2R1bGUgaW5zdGFsbHMgdGhlIGZyZXNobHkgYnVpbHQgcGx1Z2luIGludG8gdGhhdCB2YXVsdCdzIGAub2JzaWRpYW4vcGx1Z2lucy88aWQ+L2AgZm9sZGVyIGFuZFxuICogemlwcyB0aGUgd2hvbGUgdmF1bHQgaW50byBgZGlzdC9idWlsZC88cGx1Z2luLWlkPi1kZW1vLXZhdWx0LnppcGAsIHNvIHRoZSBleGlzdGluZyBHaXRIdWItcmVsZWFzZVxuICogc3RlcCAod2hpY2ggdXBsb2FkcyBldmVyeSBmaWxlIGluIGBkaXN0L2J1aWxkL2ApIGF0dGFjaGVzIGl0IGF1dG9tYXRpY2FsbHkuXG4gKlxuICogVGhlIHZlcnNpb24gaXMgZGVsaWJlcmF0ZWx5IGFic2VudCBmcm9tIHRoYXQgbmFtZSBhbmQgbGl2ZXMgSU5TSURFIHRoZSBhcmNoaXZlIGluc3RlYWQgXHUyMDE0IHNlZVxuICogYG9ic2lkaWFuL2RlbW8tdmF1bHQtbmFtaW5nLnRzYCBmb3Igd2h5IFx1MjAxNCBpbiB0aGUgdHdvIHBsYWNlcyBhIHBlcnNvbiBhY3R1YWxseSBtZWV0cyBpdDogdGhlIHZhdWx0XG4gKiBzaXRzIHVuZGVyIGEgc2luZ2xlIGA8cGx1Z2luLWlkPi1kZW1vLXZhdWx0LTx2ZXJzaW9uPi9gIGZvbGRlciwgc28gdW56aXBwaW5nIHNldmVyYWwgcmVsZWFzZXMgYnkgaGFuZFxuICogaW50byBvbmUgZm9sZGVyIG5laXRoZXIgY29sbGlkZXMgbm9yIHByb2R1Y2VzIGFub255bW91cyBkaXJlY3RvcmllcywgYW5kIHRoZSB2YXVsdCdzIGBSRUFETUUubWRgXG4gKiBoZWFkaW5nIGdhaW5zIHRoZSB2ZXJzaW9uIGl0IGRlbW9uc3RyYXRlcy5cbiAqXG4gKiBUaGUgYXJjaGl2ZWQgY29weSBhbHNvIGNhcnJpZXMgdGhlIGAub2JzaWRpYW4vYXBwLmpzb25gIHNldHRpbmdzIHRoaXMgcGFja2FnZSBvd25zIChzZWVcbiAqIGBkZW1vLXZhdWx0LWFwcC1qc29uLnRzYCkuIFRob3NlIHNldHRpbmdzIGFuZCB0aGUgUkVBRE1FIGhlYWRpbmcgYXJlIHdyaXR0ZW4gaW50byB0aGUgWklQIEVOVFJZIGFuZFxuICogbmV2ZXIgaW50byB0aGUgcmVwbyBmb2xkZXI6IGJvdGggZmlsZXMgYXJlIHRyYWNrZWQsIGFuZCBgdXBkYXRlVmVyc2lvbmAgYXJjaGl2ZXMgYWZ0ZXIgaXQgaGFzIGFscmVhZHlcbiAqIHB1c2hlZCwgc28gYW4gaW4tcGxhY2Ugd3JpdGUgd291bGQgbGVhdmUgYW4gdW5jb21taXR0ZWQgY2hhbmdlIGJlaGluZCBhIHB1Ymxpc2hlZCByZWxlYXNlLlxuICovXG5cbmltcG9ydCB7IHppcFN5bmMgfSBmcm9tICdmZmxhdGUnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuXG5pbXBvcnQgdHlwZSB7IERlbW9WYXVsdEhlbHBlclNldHRpbmdzIH0gZnJvbSAnLi4vb2JzaWRpYW4vZGVtby12YXVsdC1oZWxwZXItc2V0dGluZ3MudHMnO1xuaW1wb3J0IHR5cGUgeyBEZW1vVmF1bHRBcHBKc29uIH0gZnJvbSAnLi9kZW1vLXZhdWx0LWFwcC1qc29uLnRzJztcblxuaW1wb3J0IHtcbiAgZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lLFxuICBnZXREZW1vVmF1bHRGb2xkZXJOYW1lXG59IGZyb20gJy4uL29ic2lkaWFuL2RlbW8tdmF1bHQtbmFtaW5nLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vb2JzaWRpYW4vcGx1Z2luL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGdldEZvbGRlck5hbWUsXG4gIGpvaW4sXG4gIHJlbGF0aXZlXG59IGZyb20gJy4uL3BhdGgudHMnO1xuaW1wb3J0IHtcbiAgYnVpbGRBcmNoaXZlZERlbW9WYXVsdEFwcEpzb25Db250ZW50LFxuICBmaW5kT3duZWREZW1vVmF1bHRBcHBKc29uU2V0dGluZ3MsXG4gIHBhcnNlRGVtb1ZhdWx0QXBwSnNvblxufSBmcm9tICcuL2RlbW8tdmF1bHQtYXBwLWpzb24udHMnO1xuaW1wb3J0IHsgcmVhZGRpclBvc2l4IH0gZnJvbSAnLi9mcy50cyc7XG5pbXBvcnQgeyBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzIH0gZnJvbSAnLi9vYnNpZGlhbi1kZXYtdXRpbHMtcmVwby1wYXRocy50cyc7XG5pbXBvcnQge1xuICBnZXRSb290Rm9sZGVyLFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuL3Jvb3QudHMnO1xuXG5jb25zdCBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSUQgPSAnZGVtby12YXVsdC1oZWxwZXInO1xuY29uc3QgREFUQV9KU09OX0ZJTEVfTkFNRSA9ICdkYXRhLmpzb24nO1xuY29uc3QgREFUQV9KU09OX0lOREVOVCA9IDI7XG5jb25zdCBSRUFETUVfRklMRV9OQU1FID0gJ1JFQURNRS5tZCc7XG5cbi8vIFRoZSBSRUFETUUncyBvcGVuaW5nIGAjIEgxYCwgYW5kIG9ubHkgdGhhdCBvbmU6IHdpdGhvdXQgdGhlIGBtYCBmbGFnIHRoZSBtYXRjaCBpcyBhbmNob3JlZCB0byB0aGUgc3RhcnRcbi8vIE9mIHRoZSBmaWxlLCBhbmQgYC5gIHN0b3BzIGF0IHRoZSBuZXdsaW5lIHRoYXQgZW5kcyB0aGUgbGluZS5cbmNvbnN0IE9QRU5JTkdfSEVBRElOR19SRUdfRVhQID0gL14jIC4qLztcblxuLyoqXG4gKiBUaGUgYXJjaGl2ZSdzIGVudHJpZXMsIGtleWVkIGJ5IHRoZSBuYW1lIGVhY2ggb25lIHRha2VzIGluc2lkZSB0aGUgWklQLlxuICpcbiAqIFRoZSB3aG9sZSBhcmNoaXZlIGlzIGFzc2VtYmxlZCBhcyB0aGlzIG1hcCBhbmQgc2VyaWFsaXplZCBvbmNlLCBzbyBpbmplY3RpbmcgYW4gZW50cnkgaXMgYW4gb3JkaW5hcnlcbiAqIGBzZXRgIHJhdGhlciB0aGFuIGEgbXV0YXRpb24gb2YgYSBoYWxmLWJ1aWx0IGFyY2hpdmUgb2JqZWN0LlxuICovXG50eXBlIERlbW9WYXVsdFppcEVudHJpZXMgPSBNYXA8c3RyaW5nLCBCdWZmZXI+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbmplY3RBcHBKc29ufS5cbiAqL1xuaW50ZXJmYWNlIEluamVjdEFwcEpzb25QYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvbW1pdHRlZCBzZXR0aW5ncyB0aGUgb3duZWQgb25lcyBhcmUgbWVyZ2VkIG92ZXIuXG4gICAqL1xuICByZWFkb25seSBhcHBKc29uOiBEZW1vVmF1bHRBcHBKc29uO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIGVudHJpZXMsIGVkaXRlZCBpbiBwbGFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IERlbW9WYXVsdFppcEVudHJpZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBhcmNoaXZlJ3Mgc2luZ2xlIHRvcC1sZXZlbCBmb2xkZXIsIHdoaWNoIGV2ZXJ5IGVudHJ5IG5hbWUgaXMgcmVsYXRpdmUgdG8uXG4gICAqL1xuICByZWFkb25seSByb290Rm9sZGVyTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbmplY3RSZWFkbWVWZXJzaW9ufS5cbiAqL1xuaW50ZXJmYWNlIEluamVjdFJlYWRtZVZlcnNpb25QYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBlbnRyaWVzLCBlZGl0ZWQgaW4gcGxhY2UuXG4gICAqL1xuICByZWFkb25seSBlbnRyaWVzOiBEZW1vVmF1bHRaaXBFbnRyaWVzO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIHNpbmdsZSB0b3AtbGV2ZWwgZm9sZGVyLCB3aGljaCBldmVyeSBlbnRyeSBuYW1lIGlzIHJlbGF0aXZlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdEZvbGRlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiB2ZXJzaW9uIHRoZSB2YXVsdCBkZW1vbnN0cmF0ZXMuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIG1pbmltYWwgc2hhcGUgb2YgYSBwbHVnaW4gYG1hbmlmZXN0Lmpzb25gIHJlYWQgYnkge0BsaW5rIGFyY2hpdmVQbHVnaW5EZW1vVmF1bHR9LlxuICovXG5pbnRlcmZhY2UgUGx1Z2luTWFuaWZlc3Qge1xuICAvKipcbiAgICogVGhlIHBsdWdpbiBpZCwgdXNlZCBhcyB0aGUgZm9sZGVyIG5hbWUgdW5kZXIgYGRlbW8tdmF1bHQvLm9ic2lkaWFuL3BsdWdpbnMvYC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gdmVyc2lvbiwgZW1iZWRkZWQgaW4gdGhlIGFyY2hpdmUncyB0b3AtbGV2ZWwgZm9sZGVyIG5hbWUgYW5kIGl0cyBSRUFETUUgaGVhZGluZy5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVhZERlbW9WYXVsdEVudHJpZXN9LlxuICovXG5pbnRlcmZhY2UgUmVhZERlbW9WYXVsdEVudHJpZXNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhdWx0IGZvbGRlciB0byByZWFkLCBhcyBhbiBhYnNvbHV0ZSBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVtb1ZhdWx0UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIHNpbmdsZSB0b3AtbGV2ZWwgZm9sZGVyLCB3aGljaCBldmVyeSBlbnRyeSBuYW1lIGlzIHJlbGF0aXZlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdEZvbGRlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcmNoaXZlcyB0aGUgcGx1Z2luJ3MgZGVtbyB2YXVsdCAoYGRlbW8tdmF1bHQvYCBpbiB0aGUgcmVwbyByb290KSBhcyBhIHJlbGVhc2UgYXJ0aWZhY3QuXG4gKlxuICogSW5zdGFsbHMgdGhlIGZyZXNobHkgYnVpbHQgcGx1Z2luIGZyb20gYGRpc3QvYnVpbGQvYCBpbnRvIHRoZSB2YXVsdCdzXG4gKiBgLm9ic2lkaWFuL3BsdWdpbnMvPGlkPi9gIGZvbGRlciwgdGhlbiB6aXBzIHRoZSB3aG9sZSB2YXVsdCB0b1xuICogYGRpc3QvYnVpbGQvPHBsdWdpbi1pZD4tZGVtby12YXVsdC56aXBgLCB1bmRlciBhIHNpbmdsZSBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj4vYCBmb2xkZXIuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgY3JlYXRlZCB6aXAgYXJjaGl2ZSwgb3JcbiAqIGBudWxsYCBpZiB0aGUgcmVwbyBoYXMgbm8gYGRlbW8tdmF1bHQvYCBmb2xkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcmNoaXZlUGx1Z2luRGVtb1ZhdWx0KCk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBjb25zdCBkZW1vVmF1bHRQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQgfSk7XG4gIGlmICghZXhpc3RzU3luYyhkZW1vVmF1bHRQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgbWFuaWZlc3RQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24gfSk7XG4gIGNvbnN0IG1hbmlmZXN0ID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShtYW5pZmVzdFBhdGgsICd1dGYtOCcpKSBhcyBQbHVnaW5NYW5pZmVzdDtcblxuICBjb25zdCBwbHVnaW5Gb2xkZXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7XG4gICAgcGF0aDogam9pbihcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRlbW9WYXVsdCxcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRvdE9ic2lkaWFuLFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuUGx1Z2lucyxcbiAgICAgIG1hbmlmZXN0LmlkXG4gICAgKVxuICB9KTtcbiAgYXdhaXQgbWtkaXIocGx1Z2luRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCBkaXN0QnVpbGRQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQgfSk7XG4gIGF3YWl0IGNwKGRpc3RCdWlsZFBhdGgsIHBsdWdpbkZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgYXdhaXQgaW5qZWN0RGVtb1ZhdWx0SGVscGVyKG1hbmlmZXN0LmlkKTtcblxuICBjb25zdCB6aXBQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEJ1aWxkLCBnZXREZW1vVmF1bHRBcmNoaXZlRmlsZU5hbWUobWFuaWZlc3QuaWQpKVxuICB9KTtcbiAgY29uc3Qgcm9vdEZvbGRlck5hbWUgPSBnZXREZW1vVmF1bHRGb2xkZXJOYW1lKHtcbiAgICBwbHVnaW5JZDogbWFuaWZlc3QuaWQsXG4gICAgdmVyc2lvbjogbWFuaWZlc3QudmVyc2lvblxuICB9KTtcbiAgY29uc3QgZW50cmllcyA9IGF3YWl0IHJlYWREZW1vVmF1bHRFbnRyaWVzKHtcbiAgICBkZW1vVmF1bHRQYXRoLFxuICAgIHJvb3RGb2xkZXJOYW1lXG4gIH0pO1xuICBpbmplY3RBcHBKc29uKHtcbiAgICBhcHBKc29uOiBhd2FpdCByZWFkQ29tbWl0dGVkQXBwSnNvbigpLFxuICAgIGVudHJpZXMsXG4gICAgcm9vdEZvbGRlck5hbWVcbiAgfSk7XG4gIGluamVjdFJlYWRtZVZlcnNpb24oe1xuICAgIGVudHJpZXMsXG4gICAgcm9vdEZvbGRlck5hbWUsXG4gICAgdmVyc2lvbjogbWFuaWZlc3QudmVyc2lvblxuICB9KTtcbiAgLy8gRXZlcnkgZW50cnkgaXMgc3RhbXBlZCB3aXRoIHRoZSBtb21lbnQgdGhlIGFyY2hpdmUgaXMgYnVpbHQgcmF0aGVyIHRoYW4gdGhlIGZpbGUncyBvd24gbXRpbWUsIHdoaWNoIGlzXG4gIC8vIFdoYXQgdGhlIHByZXZpb3VzIGFyY2hpdmVyIHdyb3RlLiBBIGRlbW8gdmF1bHQncyBjb21taXR0ZWQgdGltZXN0YW1wcyBhcmUgY2hlY2tvdXQgYXJ0aWZhY3RzIG9mIHdob2V2ZXJcbiAgLy8gUmFuIHRoZSByZWxlYXNlLCBzbyB0aGV5IGNhcnJ5IG5vdGhpbmcgYSByZWFkZXIgY291bGQgdXNlOyB0aGUgYnVpbGQgdGltZSBhdCBsZWFzdCBkZXNjcmliZXMgdGhlXG4gIC8vIEFyY2hpdmUuXG4gIGF3YWl0IHdyaXRlRmlsZSh6aXBQYXRoLCB6aXBTeW5jKE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKSkpO1xuICByZXR1cm4gemlwUGF0aDtcbn1cblxuLy8gU3RvcmVzIHRoZSBhcmNoaXZlZCB2YXVsdCdzIGAub2JzaWRpYW4vYXBwLmpzb25gIFx1MjAxNCB0aGUgY29tbWl0dGVkIHNldHRpbmdzIHdpdGggdGhlIG93bmVkIG9uZXMgbWVyZ2VkXG4vLyBPdmVyIHRoZW0uIFRoZSBFTlRSWSBpcyB3cml0dGVuIHJhdGhlciB0aGFuIHRoZSBmaWxlLCBzbyB0aGUgcmVwbyBmb2xkZXIgaXMgbGVmdCBleGFjdGx5IGFzIGl0IHdhcywgYW5kXG4vLyBBIHZhdWx0IHdpdGggbm90aGluZyBlbHNlIHRvIGNvbmZpZ3VyZSBcdTIwMTQgd2hpY2ggY29tbWl0cyBubyBgYXBwLmpzb25gIGF0IGFsbCBcdTIwMTQgZ2V0cyBvbmUgaGVyZSByZWdhcmRsZXNzLlxuZnVuY3Rpb24gaW5qZWN0QXBwSnNvbihwYXJhbXM6IEluamVjdEFwcEpzb25QYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGFwcEpzb24sXG4gICAgZW50cmllcyxcbiAgICByb290Rm9sZGVyTmFtZVxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGVudHJ5TmFtZSA9IGpvaW4ocm9vdEZvbGRlck5hbWUsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRvdE9ic2lkaWFuLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BcHBKc29uKTtcbiAgZW50cmllcy5zZXQoZW50cnlOYW1lLCBCdWZmZXIuZnJvbShidWlsZEFyY2hpdmVkRGVtb1ZhdWx0QXBwSnNvbkNvbnRlbnQoeyBhcHBKc29uIH0pLCAndXRmLTgnKSk7XG59XG5cbi8vIEluamVjdHMgdGhlIGJ1aWx0LCBgb2JzaWRpYW4tZGV2LXV0aWxzYC1vd25lZCBgZGVtby12YXVsdC1oZWxwZXJgIGJvb3RzdHJhcCBwbHVnaW4gKHNoaXBwZWQgaW4gdGhpcyBwYWNrYWdlKSBpbnRvIHRoZSBkZW1vIHZhdWx0LCBzbyBubyBwZXItdmF1bHQgY29weSBpcyBjb21taXR0ZWQgYW5kIGFuIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGJ1bXAgcHJvcGFnYXRlcyBmaXhlcy5cbi8vXG4vLyBBbG9uZ3NpZGUgdGhlIGJpbmFyaWVzIGl0IHdyaXRlcyB0aGUgaGVscGVyJ3Mgb3duIGBkYXRhLmpzb25gIG5hbWluZyB0aGUgZGVtb25zdHJhdGVkIHBsdWdpbi4gVGhhdCBpc1xuLy8gVGhlIG9uZSBtb21lbnQgdGhlIGlkIGlzIGtub3duIGZvciBjZXJ0YWluIFx1MjAxNCBpdCBjb21lcyBmcm9tIHRoZSBwbHVnaW4ncyBvd24gbWFuaWZlc3QgXHUyMDE0IHdoZXJlYXMgdGhlXG4vLyBPcGVuZWQgdmF1bHQgb25seSBvZmZlcnMgcGx1Z2luIGZvbGRlcnMgdG8gY291bnQsIHdoaWNoIHRoZSBib290c3RyYXAgaXRzZWxmIGFkZHMgdG8gKHNlZVxuLy8gYERlbW9WYXVsdEhlbHBlclNldHRpbmdzYCkuXG5hc3luYyBmdW5jdGlvbiBpbmplY3REZW1vVmF1bHRIZWxwZXIoZGVtb2VkUGx1Z2luSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwYWNrYWdlRm9sZGVyID0gZ2V0Um9vdEZvbGRlcihnZXRGb2xkZXJOYW1lKGltcG9ydC5tZXRhLnVybCkpO1xuICBpZiAoIXBhY2thZ2VGb2xkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCByZXNvbHZlIHRoZSBvYnNpZGlhbi1kZXYtdXRpbHMgcGFja2FnZSBmb2xkZXIgdG8gaW5qZWN0IHRoZSBkZW1vLXZhdWx0LWhlbHBlciBwbHVnaW4uJyk7XG4gIH1cblxuICBjb25zdCBoZWxwZXJTb3VyY2VQYXRoID0gam9pbihwYWNrYWdlRm9sZGVyLCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRpc3REZW1vVmF1bHRIZWxwZXIpO1xuICBjb25zdCBoZWxwZXJGb2xkZXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7XG4gICAgcGF0aDogam9pbihcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRlbW9WYXVsdCxcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRvdE9ic2lkaWFuLFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuUGx1Z2lucyxcbiAgICAgIERFTU9fVkFVTFRfSEVMUEVSX1BMVUdJTl9JRFxuICAgIClcbiAgfSk7XG4gIGF3YWl0IG1rZGlyKGhlbHBlckZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGF3YWl0IGNwKGhlbHBlclNvdXJjZVBhdGgsIGhlbHBlckZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgY29uc3Qgc2V0dGluZ3M6IERlbW9WYXVsdEhlbHBlclNldHRpbmdzID0geyBkZW1vZWRQbHVnaW5JZCB9O1xuICBhd2FpdCB3cml0ZUZpbGUoam9pbihoZWxwZXJGb2xkZXIsIERBVEFfSlNPTl9GSUxFX05BTUUpLCBgJHtKU09OLnN0cmluZ2lmeShzZXR0aW5ncywgbnVsbCwgREFUQV9KU09OX0lOREVOVCl9XFxuYCwgJ3V0Zi04Jyk7XG59XG5cbi8vIE5hbWVzIHRoZSB2ZXJzaW9uIG9uIHRoZSBhcmNoaXZlZCBgUkVBRE1FLm1kYCdzIGhlYWRpbmcsIHNvIHRoZSB2YXVsdCBzYXlzIHdoaWNoIHJlbGVhc2UgaXQgZGVtb25zdHJhdGVzXG4vLyBIb3dldmVyIGZhciBpdCB0cmF2ZWxzIGZyb20gdGhlIHJlbGVhc2UgcGFnZSBpdCB3YXMgZG93bmxvYWRlZCBmcm9tLlxuLy9cbi8vIEVudHJ5LW9ubHksIGZvciB0aGUgc2FtZSByZWFzb24gYGluamVjdEFwcEpzb25gIGlzOiB0aGUgY29tbWl0dGVkIFJFQURNRSBpcyBhIHRyYWNrZWQsIGhhbmQtYXV0aG9yZWRcbi8vIEZpbGUgYW5kIGB1cGRhdGVWZXJzaW9uYCBhcmNoaXZlcyBhZnRlciBpdCBoYXMgYWxyZWFkeSBwdXNoZWQuXG4vL1xuLy8gQSB2YXVsdCB0aGF0IHNoaXBzIG5vIFJFQURNRSwgb3Igb25lIG9wZW5pbmcgb24gc29tZXRoaW5nIG90aGVyIHRoYW4gYW4gYCMgSDFgLCBpcyBsZWZ0IGFsb25lIHJhdGhlclxuLy8gVGhhbiBjb3JyZWN0ZWQuIFRoZSBkZW1vLXZhdWx0IGNvdmVyYWdlIHN1aXRlIGV4ZW1wdHMgYFJFQURNRS5tZGAgZnJvbSBpdHMgSDEgY2hlY2ssIHNvIG5laXRoZXIgc2hhcGVcbi8vIElzIGEgZGVmZWN0IFx1MjAxNCBhbmQgYSByZWxlYXNlIGlzIHRoZSB3cm9uZyBtb21lbnQgdG8gc3RhcnQgZmFpbGluZyBvbiBvbmUuXG5mdW5jdGlvbiBpbmplY3RSZWFkbWVWZXJzaW9uKHBhcmFtczogSW5qZWN0UmVhZG1lVmVyc2lvblBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZW50cmllcyxcbiAgICByb290Rm9sZGVyTmFtZSxcbiAgICB2ZXJzaW9uXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgZW50cnlOYW1lID0gam9pbihyb290Rm9sZGVyTmFtZSwgUkVBRE1FX0ZJTEVfTkFNRSk7XG4gIGNvbnN0IGVudHJ5ID0gZW50cmllcy5nZXQoZW50cnlOYW1lKTtcbiAgaWYgKCFlbnRyeSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnQgPSBlbnRyeS50b1N0cmluZygndXRmLTgnKTtcbiAgY29uc3QgdmVyc2lvbmVkQ29udGVudCA9IGNvbnRlbnQucmVwbGFjZShPUEVOSU5HX0hFQURJTkdfUkVHX0VYUCwgKGhlYWRpbmcpID0+IGAke2hlYWRpbmd9IHYke3ZlcnNpb259YCk7XG4gIGlmICh2ZXJzaW9uZWRDb250ZW50ID09PSBjb250ZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZW50cmllcy5zZXQoZW50cnlOYW1lLCBCdWZmZXIuZnJvbSh2ZXJzaW9uZWRDb250ZW50LCAndXRmLTgnKSk7XG59XG5cbi8vIFJlYWRzIHRoZSBkZW1vIHZhdWx0J3MgY29tbWl0dGVkIGAub2JzaWRpYW4vYXBwLmpzb25gLCByZWZ1c2luZyB0aGUgc2V0dGluZ3MgdGhpcyBwYWNrYWdlIG93bnMuXG4vL1xuLy8gVGhvc2Ugc2V0dGluZ3MgYXJlIGluamVjdGVkIGludG8gdGhlIGFyY2hpdmUsIHNvIGEgY29tbWl0dGVkIG9uZSBpcyBhIHNlY29uZCBzb3VyY2Ugb2YgdHJ1dGggdGhhdFxuLy8gTm90aGluZyBrZWVwcyBpbiBzdGVwLiBUaGUgZGVtby12YXVsdCBjb3ZlcmFnZSBzdWl0ZSBhbHJlYWR5IGZhaWxzIG9uIGl0LCB3aGljaCBtZWFucyByZWFjaGluZyBoZXJlXG4vLyBNZWFucyB0aGF0IGdhdGUgd2FzIHNraXBwZWQgXHUyMDE0IHNvIHRoaXMgcmVmdXNlcyByYXRoZXIgdGhhbiBvdmVyd3JpdGluZyBhIHZhbHVlIHNvbWVib2R5IGNob3NlIG9uIHB1cnBvc2UuXG5hc3luYyBmdW5jdGlvbiByZWFkQ29tbWl0dGVkQXBwSnNvbigpOiBQcm9taXNlPERlbW9WYXVsdEFwcEpzb24+IHtcbiAgY29uc3QgYXBwSnNvblBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7XG4gICAgcGF0aDogam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRvdE9ic2lkaWFuLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BcHBKc29uKVxuICB9KTtcbiAgY29uc3QgY29udGVudCA9IGV4aXN0c1N5bmMoYXBwSnNvblBhdGgpID8gYXdhaXQgcmVhZEZpbGUoYXBwSnNvblBhdGgsICd1dGYtOCcpIDogbnVsbDtcbiAgY29uc3QgYXBwSnNvbiA9IHBhcnNlRGVtb1ZhdWx0QXBwSnNvbih7IGNvbnRlbnQsIHBhdGg6IGFwcEpzb25QYXRoIH0pO1xuXG4gIGNvbnN0IG93bmVkU2V0dGluZ3MgPSBmaW5kT3duZWREZW1vVmF1bHRBcHBKc29uU2V0dGluZ3MoeyBhcHBKc29uIH0pO1xuICBpZiAob3duZWRTZXR0aW5ncy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7YXBwSnNvblBhdGh9IHNldHMgJHtvd25lZFNldHRpbmdzLmpvaW4oJywgJyl9LCB3aGljaCBvYnNpZGlhbi1kZXYtdXRpbHMgb3ducyBhbmQgd3JpdGVzIGludG8gdGhlIGFyY2hpdmVkIGRlbW8gdmF1bHQuIFNldHRpbmdzIGl0IG93bnMgbXVzdCBub3QgYmUgY29tbWl0dGVkLmBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGFwcEpzb247XG59XG5cbi8vIFJlYWRzIGV2ZXJ5IGZpbGUgaW4gdGhlIGRlbW8gdmF1bHQgYXMgYW4gYXJjaGl2ZSBlbnRyeSwgdW5kZXIgdGhlIHNpbmdsZSB0b3AtbGV2ZWwgZm9sZGVyIHRoZSBhcmNoaXZlXG4vLyBTaXRzIGluLlxuLy9cbi8vIE9ubHkgRklMRVMgYmVjb21lIGVudHJpZXMuIEdpdCBjYW5ub3QgdHJhY2sgYW4gZW1wdHkgZm9sZGVyLCBzbyBhIGNvbW1pdHRlZCBkZW1vIHZhdWx0IGhhcyBub25lIFx1MjAxNCBhbmRcbi8vIGBleHRyYWN0WmlwQXJjaGl2ZWAgY3JlYXRlcyBhbiBlbnRyeSdzIHBhcmVudCBmb2xkZXJzIHdoZXRoZXIgb3Igbm90IHRoZSBhcmNoaXZlIGRlY2xhcmVkIHRoZW0sIHNvIGFcbi8vIEZvbGRlciBlbnRyeSB3b3VsZCBlYXJuIG5vdGhpbmcgZXZlbiBpZiBvbmUgY291bGQgZXhpc3QuXG5hc3luYyBmdW5jdGlvbiByZWFkRGVtb1ZhdWx0RW50cmllcyhwYXJhbXM6IFJlYWREZW1vVmF1bHRFbnRyaWVzUGFyYW1zKTogUHJvbWlzZTxEZW1vVmF1bHRaaXBFbnRyaWVzPiB7XG4gIGNvbnN0IHtcbiAgICBkZW1vVmF1bHRQYXRoLFxuICAgIHJvb3RGb2xkZXJOYW1lXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgZW50cmllczogRGVtb1ZhdWx0WmlwRW50cmllcyA9IG5ldyBNYXA8c3RyaW5nLCBCdWZmZXI+KCk7XG4gIGZvciAoY29uc3QgZGlyZW50IG9mIGF3YWl0IHJlYWRkaXJQb3NpeChkZW1vVmF1bHRQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KSkge1xuICAgIGlmICghZGlyZW50LmlzRmlsZSgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXRoID0gam9pbihkaXJlbnQucGFyZW50UGF0aCwgZGlyZW50Lm5hbWUpO1xuICAgIGVudHJpZXMuc2V0KGpvaW4ocm9vdEZvbGRlck5hbWUsIHJlbGF0aXZlKGRlbW9WYXVsdFBhdGgsIHBhdGgpKSwgYXdhaXQgcmVhZEZpbGUocGF0aCkpO1xuICB9XG5cbiAgcmV0dXJuIGVudHJpZXM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JBLFNBQVMsZUFBZTtBQUN4QixTQUFTLGtCQUFrQjtBQUMzQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLCtCQUErQjtBQUN4QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLG9CQUFvQjtBQUM3QixTQUFTLGlDQUFpQztBQUMxQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLE1BQU0sOEJBQThCO0FBQ3BDLE1BQU0sc0JBQXNCO0FBQzVCLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU0sbUJBQW1CO0FBSXpCLE1BQU0sMEJBQTBCO0FBMEZoQyxlQUFzQix5QkFBaUQ7QUFDckUsUUFBTSxnQkFBZ0Isd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsVUFBVSxDQUFDO0FBQ3pGLE1BQUksQ0FBQyxXQUFXLGFBQWEsR0FBRztBQUM5QixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sZUFBZSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixhQUFhLENBQUM7QUFDM0YsUUFBTSxXQUFXLEtBQUssTUFBTSxNQUFNLFNBQVMsY0FBYyxPQUFPLENBQUM7QUFFakUsUUFBTSxlQUFlLHdCQUF3QjtBQUFBLElBQzNDLE1BQU07QUFBQSxNQUNKLHdCQUF3QjtBQUFBLE1BQ3hCLHdCQUF3QjtBQUFBLE1BQ3hCLHdCQUF3QjtBQUFBLE1BQ3hCLFNBQVM7QUFBQSxJQUNYO0FBQUEsRUFDRixDQUFD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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "obsidian-dev-utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "102.0.0",
|
|
4
4
|
"description": "This is the collection of useful functions that you can use for your Obsidian plugin development.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"obsidian"
|
|
@@ -680,7 +680,7 @@
|
|
|
680
680
|
"eslint-plugin-import": "npm:eslint-plugin-import-x@^4.17.1",
|
|
681
681
|
"eslint-plugin-json-schema-validator": "^6.3.1",
|
|
682
682
|
"eslint-plugin-n": "$eslint-plugin-n",
|
|
683
|
-
"fflate": "
|
|
683
|
+
"fflate": "$fflate",
|
|
684
684
|
"glob": "^13.0.6",
|
|
685
685
|
"js-yaml": "4.3.1",
|
|
686
686
|
"markdown-it": "^15.0.1",
|
|
@@ -711,7 +711,6 @@
|
|
|
711
711
|
"@types/semver": "^7.8.0",
|
|
712
712
|
"@typescript-eslint/eslint-plugin": "^8.70.0",
|
|
713
713
|
"@typescript-eslint/parser": "^8.70.0",
|
|
714
|
-
"adm-zip": "^0.6.0",
|
|
715
714
|
"compare-versions": "^6.1.1",
|
|
716
715
|
"cspell": "^10.3.0",
|
|
717
716
|
"debug": "^4.4.3",
|
|
@@ -727,6 +726,7 @@
|
|
|
727
726
|
"eslint-plugin-perfectionist": "^5.11.0",
|
|
728
727
|
"eslint-plugin-tsdoc": "^0.5.2",
|
|
729
728
|
"eslint-plugin-unicorn": "^74.0.0",
|
|
729
|
+
"fflate": "^0.8.3",
|
|
730
730
|
"i18next": "^26.4.2",
|
|
731
731
|
"jiti": "^2.7.0",
|
|
732
732
|
"localforage": "^1.10.0",
|
|
@@ -760,7 +760,6 @@
|
|
|
760
760
|
"@jest/globals": "^30.5.1",
|
|
761
761
|
"@resvg/resvg-js": "^2.6.2",
|
|
762
762
|
"@total-typescript/ts-reset": "^0.6.1",
|
|
763
|
-
"@types/adm-zip": "^0.5.8",
|
|
764
763
|
"@typescript-eslint/rule-tester": "^8.70.0",
|
|
765
764
|
"@vitest/coverage-v8": "^5.0.0",
|
|
766
765
|
"astro": "^7.3.2",
|