experimental-agent 0.1.3 → 0.2.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/dist/agent-workflow.d.mts +2 -1
- package/dist/agent-workflow.d.ts +2 -1
- package/dist/agent-workflow.js +1382 -552
- package/dist/agent-workflow.mjs +3 -2
- package/dist/chunk-FQ67QZOI.mjs +75 -0
- package/dist/{chunk-RXPVLORL.mjs → chunk-GL7Q3MDU.mjs} +3 -7
- package/dist/{chunk-24UDM5XV.mjs → chunk-NXDVNJRS.mjs} +1 -1
- package/dist/chunk-OCF5I43X.mjs +2367 -0
- package/dist/chunk-OZZVS6L5.mjs +139 -0
- package/dist/{chunk-2ZXHR6T6.mjs → chunk-SJVFFE5D.mjs} +18 -17
- package/dist/chunk-TGNVXSMX.mjs +399 -0
- package/dist/chunk-UCVXI7LW.mjs +1287 -0
- package/dist/chunk-ZIAHPXOJ.mjs +595 -0
- package/dist/{client-SNN3XDKO.mjs → client-BKA7XBGW.mjs} +1 -1
- package/dist/{client-Bkuq-Dfa.d.mts → client-CSTexnLF.d.mts} +158 -122
- package/dist/{client-Bkuq-Dfa.d.ts → client-CSTexnLF.d.ts} +158 -122
- package/dist/{sandbox-IFK5MVRM.mjs → docker-FB2MJTHJ.mjs} +6 -4
- package/dist/{handler-WFNQWR6V.mjs → handler-FRUPZ4LX.mjs} +1 -1
- package/dist/index.d.mts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +1555 -596
- package/dist/index.mjs +140 -36
- package/dist/lifecycle-workflow.d.mts +2 -1
- package/dist/lifecycle-workflow.d.ts +2 -1
- package/dist/lifecycle-workflow.js +29 -18
- package/dist/lifecycle-workflow.mjs +1 -1
- package/dist/{local-fs-handlers-ESZBRAWK.mjs → local-fs-handlers-SYOCKTPN.mjs} +10 -2
- package/dist/next/loader.js +16 -12
- package/dist/next/loader.mjs +15 -7
- package/dist/next.d.mts +1 -1
- package/dist/next.d.ts +1 -1
- package/dist/next.js +3 -10
- package/dist/next.mjs +2 -5
- package/dist/{process-manager-ZCET3VD2.mjs → process-manager-JDUJDYGU.mjs} +1 -1
- package/dist/sandbox-HRGGTEHF.mjs +21 -0
- package/dist/{storage-FCSHTDLC.mjs → storage-LSDMRW73.mjs} +2 -2
- package/package.json +2 -6
- package/dist/chunk-4WDKWMVB.mjs +0 -389
- package/dist/chunk-64THY7Y7.mjs +0 -155
- package/dist/chunk-IACG26TC.mjs +0 -2212
- package/dist/chunk-NGLND33F.mjs +0 -1247
|
@@ -379,6 +379,12 @@ function createFilesystemHandlers(basePath) {
|
|
|
379
379
|
const safeName = Buffer.from(key).toString("base64url");
|
|
380
380
|
return await readJson(join(setupDir, `${safeName}.json`));
|
|
381
381
|
},
|
|
382
|
+
"setup.delete": async ({ key }) => {
|
|
383
|
+
await withRecordLock(`setup:${key}`, async () => {
|
|
384
|
+
const safeName = Buffer.from(key).toString("base64url");
|
|
385
|
+
await unlink(join(setupDir, `${safeName}.json`)).catch(() => void 0);
|
|
386
|
+
});
|
|
387
|
+
},
|
|
382
388
|
"setup.set": async (snapshot) => {
|
|
383
389
|
await withRecordLock(`setup:${snapshot.key}`, async () => {
|
|
384
390
|
const safeName = Buffer.from(snapshot.key).toString("base64url");
|
|
@@ -414,9 +420,11 @@ function createFilesystemHandlers(basePath) {
|
|
|
414
420
|
if (existing?.acquiringLockId && existing.acquiringLockAt && Date.now() - existing.acquiringLockAt < lockTimeoutMs) {
|
|
415
421
|
return null;
|
|
416
422
|
}
|
|
423
|
+
const sameSetupKey = existing?.setupKey != null && existing.setupKey === record.setupKey;
|
|
417
424
|
const newRecord = {
|
|
418
425
|
...record,
|
|
419
|
-
tags: record.tags ?? existing?.tags ?? null
|
|
426
|
+
tags: record.tags ?? existing?.tags ?? null,
|
|
427
|
+
setupCompletedAt: sameSetupKey ? existing.setupCompletedAt ?? null : null
|
|
420
428
|
};
|
|
421
429
|
await writeJsonFile(filePath, newRecord);
|
|
422
430
|
return newRecord;
|
|
@@ -436,4 +444,4 @@ function createFilesystemHandlers(basePath) {
|
|
|
436
444
|
export {
|
|
437
445
|
createFilesystemHandlers
|
|
438
446
|
};
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3N0b3JhZ2UvYmluZGluZ3MvbG9jYWwtZnMtaGFuZGxlcnMudHMiLCAiLi4vc3JjL3V0aWxzL3BhZ2luYXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge1xuICBta2RpcixcbiAgcmVhZGRpcixcbiAgcmVhZEZpbGUsXG4gIHJtLFxuICB1bmxpbmssXG4gIHdyaXRlRmlsZSxcbn0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgZXF1YWwgZnJvbSBcImZhc3QtZGVlcC1lcXVhbFwiO1xuaW1wb3J0IHsgU3RvcmFnZUNvbmZsaWN0RXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBwYWdpbmF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9wYWdpbmF0ZVwiO1xuaW1wb3J0IHR5cGUge1xuICBDb21tYW5kLFxuICBIYW5kbGVycyxcbiAgTWVzc2FnZSxcbiAgUGFydCxcbiAgU2FuZGJveFJlY29yZCxcbiAgU2Vzc2lvbixcbiAgU2V0dXBTbmFwc2hvdCxcbn0gZnJvbSBcIi4uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGaWxlc3lzdGVtSGFuZGxlcnMoYmFzZVBhdGg6IHN0cmluZyk6IEhhbmRsZXJzIHtcbiAgY29uc3QgcmVzb2x2ZWRCYXNlID0gcmVzb2x2ZShiYXNlUGF0aCk7XG4gIGNvbnN0IHNlc3Npb25EaXIgPSBqb2luKHJlc29sdmVkQmFzZSwgXCJzZXNzaW9uXCIpO1xuICBjb25zdCBtZXNzYWdlRGlyID0gam9pbihyZXNvbHZlZEJhc2UsIFwibWVzc2FnZVwiKTtcbiAgY29uc3QgcGFydERpciA9IGpvaW4ocmVzb2x2ZWRCYXNlLCBcInBhcnRcIik7XG4gIGNvbnN0IHNhbmRib3hEaXIgPSBqb2luKHJlc29sdmVkQmFzZSwgXCJzYW5kYm94XCIpO1xuICBjb25zdCBjb21tYW5kRGlyID0gam9pbihyZXNvbHZlZEJhc2UsIFwiY29tbWFuZFwiKTtcbiAgY29uc3Qgc2V0dXBEaXIgPSBqb2luKHJlc29sdmVkQmFzZSwgXCJzZXR1cFwiKTtcbiAgY29uc3QgbG9ja0RpciA9IGpvaW4ocmVzb2x2ZWRCYXNlLCBcIi5sb2Nrc1wiKTtcbiAgY29uc3QgTE9DS19TVEFMRV9NUyA9IDMwXzAwMDtcblxuICBhc3luYyBmdW5jdGlvbiBlbnN1cmVEaXIoZGlyOiBzdHJpbmcpIHtcbiAgICBhd2FpdCBta2RpcihkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVhZEpzb248VD4oZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCBcInV0Zi04XCIpO1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoY29udGVudCkgYXMgVDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHdyaXRlSnNvbkZpbGUoZmlsZVBhdGg6IHN0cmluZywgZGF0YTogdW5rbm93bikge1xuICAgIGF3YWl0IGVuc3VyZURpcihkaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKSk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB3aXRoUmVjb3JkTG9jazxUPihcbiAgICBrZXk6IHN0cmluZyxcbiAgICBmbjogKCkgPT4gUHJvbWlzZTxUPlxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBsb2NrTmFtZSA9IEJ1ZmZlci5mcm9tKGtleSkudG9TdHJpbmcoXCJiYXNlNjR1cmxcIik7XG4gICAgY29uc3QgbG9ja1BhdGggPSBqb2luKGxvY2tEaXIsIGAke2xvY2tOYW1lfS5sb2NrYCk7XG4gICAgY29uc3QgbWV0YWRhdGFQYXRoID0gam9pbihsb2NrUGF0aCwgXCJtZXRhZGF0YS5qc29uXCIpO1xuICAgIGF3YWl0IGVuc3VyZURpcihsb2NrRGlyKTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBta2Rpcihsb2NrUGF0aCk7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbkZpbGUobWV0YWRhdGFQYXRoLCB7XG4gICAgICAgICAgcGlkOiBwcm9jZXNzLnBpZCxcbiAgICAgICAgICBjcmVhdGVkQXQ6IERhdGUubm93KCksXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICEoZSBpbnN0YW5jZW9mIEVycm9yKSB8fFxuICAgICAgICAgIChlIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSAhPT0gXCJFRVhJU1RcIlxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgcmVhZEpzb248eyBjcmVhdGVkQXQ/OiBudW1iZXIgfT4obWV0YWRhdGFQYXRoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1ldGFkYXRhPy5jcmVhdGVkQXQgJiZcbiAgICAgICAgICBEYXRlLm5vdygpIC0gbWV0YWRhdGEuY3JlYXRlZEF0ID4gTE9DS19TVEFMRV9NU1xuICAgICAgICApIHtcbiAgICAgICAgICBhd2FpdCBybShsb2NrUGF0aCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmbigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBybShsb2NrUGF0aCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgIGlucHV0OiBUXG4gICk6IFBhcnRpYWw8VD4ge1xuICAgIGNvbnN0IHJlc3VsdDogUGFydGlhbDxUPiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGlucHV0KSkge1xuICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0W2tleSBhcyBrZXlvZiBUXSA9IHZhbHVlIGFzIFRba2V5b2YgVF07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZWFkQWxsRnJvbURpcjxUPihkaXI6IHN0cmluZyk6IFByb21pc2U8VFtdPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpcihkaXIpO1xuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBmaWxlc1xuICAgICAgICAgIC5maWx0ZXIoKGYpID0+IGYuZW5kc1dpdGgoXCIuanNvblwiKSlcbiAgICAgICAgICAubWFwKChmKSA9PiByZWFkSnNvbjxUPihqb2luKGRpciwgZikpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXN1bHRzLmZpbHRlcigocik6IHIgaXMgTm9uTnVsbGFibGU8dHlwZW9mIHI+ID0+IHIgIT09IG51bGwpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgXCJzZXNzaW9uLmdldFwiOiBhc3luYyAoeyBpZCB9KSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uUGF0aCA9IGpvaW4oc2Vzc2lvbkRpciwgYCR7aWR9Lmpzb25gKTtcbiAgICAgIHJldHVybiAoYXdhaXQgcmVhZEpzb248U2Vzc2lvbj4oc2Vzc2lvblBhdGgpKSA/PyBudWxsO1xuICAgIH0sXG5cbiAgICBcInNlc3Npb24uc2V0XCI6IGFzeW5jIChzZXNzaW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgd2l0aFJlY29yZExvY2soYHNlc3Npb246JHtzZXNzaW9uLmlkfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3Qgc2Vzc2lvblBhdGggPSBqb2luKHNlc3Npb25EaXIsIGAke3Nlc3Npb24uaWR9Lmpzb25gKTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkSnNvbjxTZXNzaW9uPihzZXNzaW9uUGF0aCk7XG4gICAgICAgIGNvbnN0IG5ld1Nlc3Npb246IFNlc3Npb24gPSB7XG4gICAgICAgICAgLi4uc2Vzc2lvbixcbiAgICAgICAgICB0YWdzOiBzZXNzaW9uLnRhZ3MgPz8gZXhpc3Rpbmc/LnRhZ3MgPz8ge30sXG4gICAgICAgICAgY3JlYXRlZEF0OiBleGlzdGluZz8uY3JlYXRlZEF0ID8/IHNlc3Npb24uY3JlYXRlZEF0ID8/IG5vdyxcbiAgICAgICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShzZXNzaW9uUGF0aCwgbmV3U2Vzc2lvbik7XG4gICAgICAgIHJldHVybiBuZXdTZXNzaW9uO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIFwic2Vzc2lvbi51cGRhdGVcIjogYXN5bmMgKG9wdHMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCB3aXRoUmVjb3JkTG9jayhgc2Vzc2lvbjoke29wdHMuaWR9YCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzZXNzaW9uUGF0aCA9IGpvaW4oc2Vzc2lvbkRpciwgYCR7b3B0cy5pZH0uanNvbmApO1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHJlYWRKc29uPFNlc3Npb24+KHNlc3Npb25QYXRoKTtcbiAgICAgICAgaWYgKCFleGlzdGluZykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2Vzc2lvbiAke29wdHMuaWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmF3UGF0Y2ggPSByZW1vdmVVbmRlZmluZWQoe1xuICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgaWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhyYXdQYXRjaCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGV4aXN0aW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24ocmF3UGF0Y2gsIFwicnVuSWRcIikpIHtcbiAgICAgICAgICBjb25zdCBuZXh0UnVuSWQgPSByYXdQYXRjaC5ydW5JZCBhcyBTZXNzaW9uW1wicnVuSWRcIl0gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKGV4aXN0aW5nLnJ1bklkICE9PSBudWxsICYmIG5leHRSdW5JZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFN0b3JhZ2VDb25mbGljdEVycm9yKHtcbiAgICAgICAgICAgICAgcmVhc29uOiBcInJ1bklkIGNhbm5vdCBiZSBjbGVhcmVkIG9uY2Ugc2V0XCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGV4aXN0aW5nLnJ1bklkICE9PSBudWxsICYmIG5leHRSdW5JZCAhPT0gZXhpc3RpbmcucnVuSWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBTdG9yYWdlQ29uZmxpY3RFcnJvcih7XG4gICAgICAgICAgICAgIHJlYXNvbjogYHJ1bklkIGlzIGFscmVhZHkgc2V0IHRvICR7ZXhpc3RpbmcucnVuSWR9YCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhdGNoID0gcmF3UGF0Y2ggYXMgUGFydGlhbDxPbWl0PFNlc3Npb24sIFwiaWRcIj4+O1xuICAgICAgICBjb25zdCB1cGRhdGVkQXQgPVxuICAgICAgICAgIHBhdGNoLnVwZGF0ZWRBdCAhPT0gdW5kZWZpbmVkID8gcGF0Y2gudXBkYXRlZEF0IDogRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZFNlc3Npb246IFNlc3Npb24gPSB7XG4gICAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgICAgLi4ucGF0Y2gsXG4gICAgICAgICAgdXBkYXRlZEF0LFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCB3cml0ZUpzb25GaWxlKHNlc3Npb25QYXRoLCB1cGRhdGVkU2Vzc2lvbik7XG4gICAgICAgIHJldHVybiB1cGRhdGVkU2Vzc2lvbjtcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBcInNlc3Npb24uZGVsZXRlXCI6IGFzeW5jICh7IGlkIH0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHVubGluayhqb2luKHNlc3Npb25EaXIsIGAke2lkfS5qc29uYCkpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGlnbm9yZSBpZiBmaWxlIGRvZXNuJ3QgZXhpc3RcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFsbE1lc3NhZ2VzID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8TWVzc2FnZT4obWVzc2FnZURpcik7XG4gICAgICBjb25zdCBzZXNzaW9uTWVzc2FnZXMgPSBhbGxNZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0uc2Vzc2lvbklkID09PSBpZCk7XG4gICAgICBjb25zdCBhbGxQYXJ0cyA9IGF3YWl0IHJlYWRBbGxGcm9tRGlyPFBhcnQ+KHBhcnREaXIpO1xuICAgICAgY29uc3Qgc2Vzc2lvblBhcnRzID0gYWxsUGFydHMuZmlsdGVyKChwKSA9PiBwLnNlc3Npb25JZCA9PT0gaWQpO1xuICAgICAgY29uc3QgYWxsQ29tbWFuZHMgPSBhd2FpdCByZWFkQWxsRnJvbURpcjxDb21tYW5kPihjb21tYW5kRGlyKTtcbiAgICAgIGNvbnN0IHNlc3Npb25Db21tYW5kcyA9IGFsbENvbW1hbmRzLmZpbHRlcigoYykgPT4gYy5zZXNzaW9uSWQgPT09IGlkKTtcbiAgICAgIGNvbnN0IG5vb3AgPSAoKSA9PiB1bmRlZmluZWQ7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIC4uLnNlc3Npb25NZXNzYWdlcy5tYXAoKG0pID0+XG4gICAgICAgICAgdW5saW5rKGpvaW4obWVzc2FnZURpciwgYCR7bS5pZH0uanNvbmApKS5jYXRjaChub29wKVxuICAgICAgICApLFxuICAgICAgICAuLi5zZXNzaW9uUGFydHMubWFwKChwKSA9PlxuICAgICAgICAgIHVubGluayhqb2luKHBhcnREaXIsIGAke3AuaWR9Lmpzb25gKSkuY2F0Y2gobm9vcClcbiAgICAgICAgKSxcbiAgICAgICAgLi4uc2Vzc2lvbkNvbW1hbmRzLm1hcCgoYykgPT5cbiAgICAgICAgICB1bmxpbmsoam9pbihjb21tYW5kRGlyLCBgJHtjLmlkfS5qc29uYCkpLmNhdGNoKG5vb3ApXG4gICAgICAgICksXG4gICAgICBdKTtcbiAgICB9LFxuXG4gICAgXCJzZXNzaW9uLmxpc3RcIjogYXN5bmMgKHsgdGFncywgb3JkZXIsIGN1cnNvciwgbGltaXQgfSkgPT4ge1xuICAgICAgY29uc3QgYWxsU2Vzc2lvbnMgPSBhd2FpdCByZWFkQWxsRnJvbURpcjxTZXNzaW9uPihzZXNzaW9uRGlyKTtcbiAgICAgIGxldCBmaWx0ZXJlZCA9IGFsbFNlc3Npb25zO1xuICAgICAgaWYgKHRhZ3MgJiYgT2JqZWN0LmtleXModGFncykubGVuZ3RoID4gMCkge1xuICAgICAgICBmaWx0ZXJlZCA9IGZpbHRlcmVkLmZpbHRlcigocykgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlc3Npb25UYWdzID0gcy50YWdzID8/IHt9O1xuICAgICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0YWdzKS5ldmVyeSgoW2tleSwgdmFsdWVdKSA9PlxuICAgICAgICAgICAgZXF1YWwoc2Vzc2lvblRhZ3Nba2V5XSwgdmFsdWUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNvbHZlZE9yZGVyID0gb3JkZXIgPz8gXCJ1cGRhdGVkQXRfZGVzY1wiO1xuICAgICAgY29uc3Qgc29ydEZpZWxkID0gcmVzb2x2ZWRPcmRlci5zdGFydHNXaXRoKFwidXBkYXRlZEF0XCIpXG4gICAgICAgID8gXCJ1cGRhdGVkQXRcIlxuICAgICAgICA6IFwiY3JlYXRlZEF0XCI7XG4gICAgICBjb25zdCBzb3J0RGlyID0gcmVzb2x2ZWRPcmRlci5lbmRzV2l0aChcIl9kZXNjXCIpID8gLTEgOiAxO1xuICAgICAgZmlsdGVyZWQuc29ydCgoYSwgYikgPT4gc29ydERpciAqIChhW3NvcnRGaWVsZF0gLSBiW3NvcnRGaWVsZF0pKTtcbiAgICAgIHJldHVybiBwYWdpbmF0ZSh7IGl0ZW1zOiBmaWx0ZXJlZCwgY3Vyc29yLCBsaW1pdCB9KTtcbiAgICB9LFxuXG4gICAgXCJzZXNzaW9uLmxpc3RCeVNhbmRib3hcIjogYXN5bmMgKHtcbiAgICAgIHNhbmRib3hJZCxcbiAgICAgIHRhZ3MsXG4gICAgICBvcmRlcixcbiAgICAgIGN1cnNvcixcbiAgICAgIGxpbWl0LFxuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IGFsbFNlc3Npb25zID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8U2Vzc2lvbj4oc2Vzc2lvbkRpcik7XG4gICAgICBsZXQgZmlsdGVyZWQgPSBhbGxTZXNzaW9ucy5maWx0ZXIoKHMpID0+IHMuc2FuZGJveElkID09PSBzYW5kYm94SWQpO1xuICAgICAgaWYgKHRhZ3MgJiYgT2JqZWN0LmtleXModGFncykubGVuZ3RoID4gMCkge1xuICAgICAgICBmaWx0ZXJlZCA9IGZpbHRlcmVkLmZpbHRlcigocykgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlc3Npb25UYWdzID0gcy50YWdzID8/IHt9O1xuICAgICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0YWdzKS5ldmVyeSgoW2tleSwgdmFsdWVdKSA9PlxuICAgICAgICAgICAgZXF1YWwoc2Vzc2lvblRhZ3Nba2V5XSwgdmFsdWUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNvbHZlZE9yZGVyID0gb3JkZXIgPz8gXCJ1cGRhdGVkQXRfZGVzY1wiO1xuICAgICAgY29uc3Qgc29ydEZpZWxkID0gcmVzb2x2ZWRPcmRlci5zdGFydHNXaXRoKFwidXBkYXRlZEF0XCIpXG4gICAgICAgID8gXCJ1cGRhdGVkQXRcIlxuICAgICAgICA6IFwiY3JlYXRlZEF0XCI7XG4gICAgICBjb25zdCBzb3J0RGlyID0gcmVzb2x2ZWRPcmRlci5lbmRzV2l0aChcIl9kZXNjXCIpID8gLTEgOiAxO1xuICAgICAgZmlsdGVyZWQuc29ydCgoYSwgYikgPT4gc29ydERpciAqIChhW3NvcnRGaWVsZF0gLSBiW3NvcnRGaWVsZF0pKTtcbiAgICAgIHJldHVybiBwYWdpbmF0ZSh7IGl0ZW1zOiBmaWx0ZXJlZCwgY3Vyc29yLCBsaW1pdCB9KTtcbiAgICB9LFxuXG4gICAgXCJzZXNzaW9uLnRhZy5zZXRcIjogYXN5bmMgKHsgc2Vzc2lvbklkLCB0YWdzIH0pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCB3aXRoUmVjb3JkTG9jayhgc2Vzc2lvbjoke3Nlc3Npb25JZH1gLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlc3Npb25QYXRoID0gam9pbihzZXNzaW9uRGlyLCBgJHtzZXNzaW9uSWR9Lmpzb25gKTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkSnNvbjxTZXNzaW9uPihzZXNzaW9uUGF0aCk7XG4gICAgICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlc3Npb24gJHtzZXNzaW9uSWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1lcmdlZFRhZ3MgPSB7IC4uLmV4aXN0aW5nLnRhZ3MsIC4uLnRhZ3MgfTtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZFNlc3Npb246IFNlc3Npb24gPSB7XG4gICAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgICAgdGFnczogbWVyZ2VkVGFncyxcbiAgICAgICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShzZXNzaW9uUGF0aCwgdXBkYXRlZFNlc3Npb24pO1xuICAgICAgICByZXR1cm4gdXBkYXRlZFNlc3Npb247XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJtZXNzYWdlLmdldFwiOiBhc3luYyAoeyBpZCB9KSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVhZEpzb248TWVzc2FnZT4oam9pbihtZXNzYWdlRGlyLCBgJHtpZH0uanNvbmApKTtcbiAgICB9LFxuXG4gICAgXCJtZXNzYWdlLnNldFwiOiBhc3luYyAobWVzc2FnZSkgPT4ge1xuICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShqb2luKG1lc3NhZ2VEaXIsIGAke21lc3NhZ2UuaWR9Lmpzb25gKSwgbWVzc2FnZSk7XG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9LFxuXG4gICAgXCJtZXNzYWdlLmxpc3RcIjogYXN5bmMgKHsgc2Vzc2lvbklkLCBjdXJzb3IsIGxpbWl0IH0pID0+IHtcbiAgICAgIGNvbnN0IGFsbE1lc3NhZ2VzID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8TWVzc2FnZT4obWVzc2FnZURpcik7XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IGFsbE1lc3NhZ2VzXG4gICAgICAgIC5maWx0ZXIoKG0pID0+IG0uc2Vzc2lvbklkID09PSBzZXNzaW9uSWQpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmNyZWF0ZWRBdCAtIGIuY3JlYXRlZEF0KTtcbiAgICAgIHJldHVybiBwYWdpbmF0ZSh7IGl0ZW1zOiBmaWx0ZXJlZCwgY3Vyc29yLCBsaW1pdCB9KTtcbiAgICB9LFxuXG4gICAgXCJwYXJ0Lmxpc3RCeU1lc3NhZ2VcIjogYXN5bmMgKHsgbWVzc2FnZUlkLCBjdXJzb3IsIGxpbWl0IH0pID0+IHtcbiAgICAgIGNvbnN0IGFsbFBhcnRzID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8UGFydD4ocGFydERpcik7XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IGFsbFBhcnRzXG4gICAgICAgIC5maWx0ZXIoKHApID0+IHAubWVzc2FnZUlkID09PSBtZXNzYWdlSWQpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG4gICAgICByZXR1cm4gcGFnaW5hdGUoeyBpdGVtczogZmlsdGVyZWQsIGN1cnNvciwgbGltaXQgfSk7XG4gICAgfSxcblxuICAgIFwicGFydC5saXN0QnlTZXNzaW9uXCI6IGFzeW5jICh7IHNlc3Npb25JZCwgY3Vyc29yLCBsaW1pdCB9KSA9PiB7XG4gICAgICBjb25zdCBhbGxQYXJ0cyA9IGF3YWl0IHJlYWRBbGxGcm9tRGlyPFBhcnQ+KHBhcnREaXIpO1xuICAgICAgY29uc3QgZmlsdGVyZWQgPSBhbGxQYXJ0c1xuICAgICAgICAuZmlsdGVyKChwKSA9PiBwLnNlc3Npb25JZCA9PT0gc2Vzc2lvbklkKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIGlmIChhLm1lc3NhZ2VJZCAhPT0gYi5tZXNzYWdlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBhLm1lc3NhZ2VJZC5sb2NhbGVDb21wYXJlKGIubWVzc2FnZUlkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGEuaW5kZXggLSBiLmluZGV4O1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBwYWdpbmF0ZSh7IGl0ZW1zOiBmaWx0ZXJlZCwgY3Vyc29yLCBsaW1pdCB9KTtcbiAgICB9LFxuXG4gICAgXCJwYXJ0LnNldFwiOiBhc3luYyAocGFydCkgPT4ge1xuICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShqb2luKHBhcnREaXIsIGAke3BhcnQuaWR9Lmpzb25gKSwgcGFydCk7XG4gICAgICByZXR1cm4gcGFydDtcbiAgICB9LFxuXG4gICAgXCJwYXJ0LmRlbGV0ZVwiOiBhc3luYyAoeyBpZCB9KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB1bmxpbmsoam9pbihwYXJ0RGlyLCBgJHtpZH0uanNvbmApKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBJZ25vcmUgaWYgZmlsZSBkb2Vzbid0IGV4aXN0XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwic2FuZGJveC5nZXRcIjogYXN5bmMgKHsga2V5IH0pID0+IHtcbiAgICAgIGNvbnN0IHNhZmVOYW1lID0gQnVmZmVyLmZyb20oa2V5KS50b1N0cmluZyhcImJhc2U2NHVybFwiKTtcbiAgICAgIGNvbnN0IHNhbmRib3hQYXRoID0gam9pbihzYW5kYm94RGlyLCBgJHtzYWZlTmFtZX0uanNvbmApO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlYWRKc29uPFNhbmRib3hSZWNvcmQ+KHNhbmRib3hQYXRoKTtcbiAgICAgIGlmICghZGF0YSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0sXG5cbiAgICBcInNhbmRib3guc2V0XCI6IGFzeW5jIChyZWNvcmQpID0+IHtcbiAgICAgIGF3YWl0IHdpdGhSZWNvcmRMb2NrKGBzYW5kYm94OiR7cmVjb3JkLmlkfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2FmZU5hbWUgPSBCdWZmZXIuZnJvbShyZWNvcmQuaWQpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpO1xuICAgICAgICBjb25zdCBzYW5kYm94UGF0aCA9IGpvaW4oc2FuZGJveERpciwgYCR7c2FmZU5hbWV9Lmpzb25gKTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkSnNvbjxTYW5kYm94UmVjb3JkPihzYW5kYm94UGF0aCk7XG4gICAgICAgIGNvbnN0IG5ld1JlY29yZDogU2FuZGJveFJlY29yZCA9IHtcbiAgICAgICAgICAuLi5yZWNvcmQsXG4gICAgICAgICAgdGFnczogcmVjb3JkLnRhZ3MgPz8gZXhpc3Rpbmc/LnRhZ3MgPz8gbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShzYW5kYm94UGF0aCwgbmV3UmVjb3JkKTtcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBcInNhbmRib3gudXBkYXRlXCI6IGFzeW5jIChvcHRzKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgd2l0aFJlY29yZExvY2soYHNhbmRib3g6JHtvcHRzLmlkfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2FmZU5hbWUgPSBCdWZmZXIuZnJvbShvcHRzLmlkKS50b1N0cmluZyhcImJhc2U2NHVybFwiKTtcbiAgICAgICAgY29uc3Qgc2FuZGJveFBhdGggPSBqb2luKHNhbmRib3hEaXIsIGAke3NhZmVOYW1lfS5qc29uYCk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgcmVhZEpzb248U2FuZGJveFJlY29yZD4oc2FuZGJveFBhdGgpO1xuICAgICAgICBpZiAoIWV4aXN0aW5nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTYW5kYm94ICR7b3B0cy5pZH0gbm90IGZvdW5kYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF0Y2ggPSByZW1vdmVVbmRlZmluZWQoe1xuICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgaWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgfSkgYXMgUGFydGlhbDxPbWl0PFNhbmRib3hSZWNvcmQsIFwiaWRcIj4+O1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocGF0Y2gpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBleGlzdGluZztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cGRhdGVkU2FuZGJveDogU2FuZGJveFJlY29yZCA9IHtcbiAgICAgICAgICAuLi5leGlzdGluZyxcbiAgICAgICAgICAuLi5wYXRjaCxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShzYW5kYm94UGF0aCwgdXBkYXRlZFNhbmRib3gpO1xuICAgICAgICByZXR1cm4gdXBkYXRlZFNhbmRib3g7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJzYW5kYm94Lmxpc3RcIjogYXN5bmMgKHsgdGFncywgb3JkZXIsIGN1cnNvciwgbGltaXQgfSkgPT4ge1xuICAgICAgY29uc3QgYWxsU2FuZGJveGVzID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8U2FuZGJveFJlY29yZD4oc2FuZGJveERpcik7XG4gICAgICBsZXQgZmlsdGVyZWQgPSBhbGxTYW5kYm94ZXM7XG4gICAgICBpZiAodGFncyAmJiBPYmplY3Qua2V5cyh0YWdzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZpbHRlcmVkID0gZmlsdGVyZWQuZmlsdGVyKChzKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2FuZGJveFRhZ3MgPSBzLnRhZ3MgPz8ge307XG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRhZ3MpLmV2ZXJ5KChba2V5LCB2YWx1ZV0pID0+XG4gICAgICAgICAgICBlcXVhbChzYW5kYm94VGFnc1trZXldLCB2YWx1ZSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNvcnRGaWVsZCA9IG9yZGVyPy5zdGFydHNXaXRoKFwibGFzdEFjdGl2aXR5QXRcIilcbiAgICAgICAgPyBcImxhc3RBY3Rpdml0eUF0XCJcbiAgICAgICAgOiBcImNyZWF0ZWRBdFwiO1xuICAgICAgY29uc3Qgc29ydERpciA9IG9yZGVyPy5lbmRzV2l0aChcIl9kZXNjXCIpID8gLTEgOiAxO1xuICAgICAgZmlsdGVyZWQuc29ydChcbiAgICAgICAgKGEsIGIpID0+IHNvcnREaXIgKiAoKGFbc29ydEZpZWxkXSA/PyAwKSAtIChiW3NvcnRGaWVsZF0gPz8gMCkpXG4gICAgICApO1xuICAgICAgcmV0dXJuIHBhZ2luYXRlKHsgaXRlbXM6IGZpbHRlcmVkLCBjdXJzb3IsIGxpbWl0IH0pO1xuICAgIH0sXG5cbiAgICBcInNhbmRib3gudGFnLnNldFwiOiBhc3luYyAoeyBzYW5kYm94SWQsIHRhZ3MgfSkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IHdpdGhSZWNvcmRMb2NrKGBzYW5kYm94OiR7c2FuZGJveElkfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2FmZU5hbWUgPSBCdWZmZXIuZnJvbShzYW5kYm94SWQpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpO1xuICAgICAgICBjb25zdCBzYW5kYm94UGF0aCA9IGpvaW4oc2FuZGJveERpciwgYCR7c2FmZU5hbWV9Lmpzb25gKTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkSnNvbjxTYW5kYm94UmVjb3JkPihzYW5kYm94UGF0aCk7XG4gICAgICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNhbmRib3ggJHtzYW5kYm94SWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1lcmdlZFRhZ3MgPSB7IC4uLmV4aXN0aW5nLnRhZ3MsIC4uLnRhZ3MgfTtcbiAgICAgICAgY29uc3QgdXBkYXRlZFNhbmRib3g6IFNhbmRib3hSZWNvcmQgPSB7XG4gICAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgICAgdGFnczogbWVyZ2VkVGFncyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShzYW5kYm94UGF0aCwgdXBkYXRlZFNhbmRib3gpO1xuICAgICAgICByZXR1cm4gdXBkYXRlZFNhbmRib3g7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJzYW5kYm94LmdldEJ5U2Vzc2lvblwiOiBhc3luYyAoeyBzZXNzaW9uSWQgfSkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvblBhdGggPSBqb2luKHNlc3Npb25EaXIsIGAke3Nlc3Npb25JZH0uanNvbmApO1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IHJlYWRKc29uPFNlc3Npb24+KHNlc3Npb25QYXRoKTtcbiAgICAgIGlmICghc2Vzc2lvbj8uc2FuZGJveElkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzYWZlTmFtZSA9IEJ1ZmZlci5mcm9tKHNlc3Npb24uc2FuZGJveElkKS50b1N0cmluZyhcImJhc2U2NHVybFwiKTtcbiAgICAgIHJldHVybiBhd2FpdCByZWFkSnNvbjxTYW5kYm94UmVjb3JkPihcbiAgICAgICAgam9pbihzYW5kYm94RGlyLCBgJHtzYWZlTmFtZX0uanNvbmApXG4gICAgICApO1xuICAgIH0sXG5cbiAgICBcImNvbW1hbmQuZ2V0XCI6IGFzeW5jICh7IGlkIH0pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCByZWFkSnNvbjxDb21tYW5kPihqb2luKGNvbW1hbmREaXIsIGAke2lkfS5qc29uYCkpO1xuICAgIH0sXG5cbiAgICBcImNvbW1hbmQuc2V0XCI6IGFzeW5jIChjb21tYW5kKSA9PiB7XG4gICAgICBhd2FpdCB3cml0ZUpzb25GaWxlKGpvaW4oY29tbWFuZERpciwgYCR7Y29tbWFuZC5pZH0uanNvbmApLCBjb21tYW5kKTtcbiAgICAgIHJldHVybiBjb21tYW5kO1xuICAgIH0sXG5cbiAgICBcInNldHVwLmdldFwiOiBhc3luYyAoeyBrZXkgfSkgPT4ge1xuICAgICAgY29uc3Qgc2FmZU5hbWUgPSBCdWZmZXIuZnJvbShrZXkpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpO1xuICAgICAgcmV0dXJuIGF3YWl0IHJlYWRKc29uPFNldHVwU25hcHNob3Q+KGpvaW4oc2V0dXBEaXIsIGAke3NhZmVOYW1lfS5qc29uYCkpO1xuICAgIH0sXG5cbiAgICBcInNldHVwLnNldFwiOiBhc3luYyAoc25hcHNob3QpID0+IHtcbiAgICAgIGF3YWl0IHdpdGhSZWNvcmRMb2NrKGBzZXR1cDoke3NuYXBzaG90LmtleX1gLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNhZmVOYW1lID0gQnVmZmVyLmZyb20oc25hcHNob3Qua2V5KS50b1N0cmluZyhcImJhc2U2NHVybFwiKTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShqb2luKHNldHVwRGlyLCBgJHtzYWZlTmFtZX0uanNvbmApLCBzbmFwc2hvdCk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJzZXR1cC5hY3F1aXJlTG9ja1wiOiBhc3luYyAoeyBrZXksIGxvY2tJZCwgbG9ja1RpbWVvdXRNcyB9KSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgd2l0aFJlY29yZExvY2soYHNldHVwOiR7a2V5fWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2FmZU5hbWUgPSBCdWZmZXIuZnJvbShrZXkpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpO1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGpvaW4oc2V0dXBEaXIsIGAke3NhZmVOYW1lfS5qc29uYCk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgcmVhZEpzb248U2V0dXBTbmFwc2hvdD4oZmlsZVBhdGgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXhpc3Rpbmc/LmFjcXVpcmluZ0xvY2tJZCAmJlxuICAgICAgICAgIGV4aXN0aW5nLmFjcXVpcmluZ0xvY2tBdCAmJlxuICAgICAgICAgIERhdGUubm93KCkgLSBleGlzdGluZy5hY3F1aXJpbmdMb2NrQXQgPCBsb2NrVGltZW91dE1zXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHNuYXBzaG90OiBTZXR1cFNuYXBzaG90ID0ge1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBzbmFwc2hvdElkOiBleGlzdGluZz8uc25hcHNob3RJZCA/PyBudWxsLFxuICAgICAgICAgIGNyZWF0ZWRBdDogZXhpc3Rpbmc/LmNyZWF0ZWRBdCA/PyBub3csXG4gICAgICAgICAgbGFzdFVzZWRBdDogZXhpc3Rpbmc/Lmxhc3RVc2VkQXQgPz8gbnVsbCxcbiAgICAgICAgICBhY3F1aXJpbmdMb2NrSWQ6IGxvY2tJZCxcbiAgICAgICAgICBhY3F1aXJpbmdMb2NrQXQ6IG5vdyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShmaWxlUGF0aCwgc25hcHNob3QpO1xuICAgICAgICByZXR1cm4gc25hcHNob3Q7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJzYW5kYm94LmFjcXVpcmVMb2NrXCI6IGFzeW5jICh7IHJlY29yZCwgbG9ja1RpbWVvdXRNcyB9KSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgd2l0aFJlY29yZExvY2soYHNhbmRib3g6JHtyZWNvcmQuaWR9YCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzYWZlTmFtZSA9IEJ1ZmZlci5mcm9tKHJlY29yZC5pZCkudG9TdHJpbmcoXCJiYXNlNjR1cmxcIik7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gam9pbihzYW5kYm94RGlyLCBgJHtzYWZlTmFtZX0uanNvbmApO1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHJlYWRKc29uPFNhbmRib3hSZWNvcmQ+KGZpbGVQYXRoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV4aXN0aW5nPy5hY3F1aXJpbmdMb2NrSWQgJiZcbiAgICAgICAgICBleGlzdGluZy5hY3F1aXJpbmdMb2NrQXQgJiZcbiAgICAgICAgICBEYXRlLm5vdygpIC0gZXhpc3RpbmcuYWNxdWlyaW5nTG9ja0F0IDwgbG9ja1RpbWVvdXRNc1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdSZWNvcmQ6IFNhbmRib3hSZWNvcmQgPSB7XG4gICAgICAgICAgLi4ucmVjb3JkLFxuICAgICAgICAgIHRhZ3M6IHJlY29yZC50YWdzID8/IGV4aXN0aW5nPy50YWdzID8/IG51bGwsXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbkZpbGUoZmlsZVBhdGgsIG5ld1JlY29yZCk7XG4gICAgICAgIHJldHVybiBuZXdSZWNvcmQ7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJjb21tYW5kLmxpc3RcIjogYXN5bmMgKHsgc2Vzc2lvbklkLCBpbmNsdWRlRmluaXNoZWQsIGN1cnNvciwgbGltaXQgfSkgPT4ge1xuICAgICAgY29uc3QgYWxsQ29tbWFuZHMgPSBhd2FpdCByZWFkQWxsRnJvbURpcjxDb21tYW5kPihjb21tYW5kRGlyKTtcbiAgICAgIGxldCBmaWx0ZXJlZCA9IGFsbENvbW1hbmRzLmZpbHRlcigoYykgPT4gYy5zZXNzaW9uSWQgPT09IHNlc3Npb25JZCk7XG4gICAgICBpZiAoIWluY2x1ZGVGaW5pc2hlZCkge1xuICAgICAgICBmaWx0ZXJlZCA9IGZpbHRlcmVkLmZpbHRlcigoYykgPT4gYy5zdGF0dXMgPT09IFwicnVubmluZ1wiKTtcbiAgICAgIH1cbiAgICAgIGZpbHRlcmVkLnNvcnQoKGEsIGIpID0+IGEuc3RhcnRlZEF0IC0gYi5zdGFydGVkQXQpO1xuICAgICAgcmV0dXJuIHBhZ2luYXRlKHsgaXRlbXM6IGZpbHRlcmVkLCBjdXJzb3IsIGxpbWl0IH0pO1xuICAgIH0sXG4gIH07XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBMaXN0UmVzdWx0IH0gZnJvbSBcIi4uL3N0b3JhZ2VcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhZ2luYXRlPFQgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfT4ob3B0czoge1xuICBpdGVtczogVFtdO1xuICBjdXJzb3I/OiBzdHJpbmc7XG4gIGxpbWl0PzogbnVtYmVyO1xufSk6IExpc3RSZXN1bHQ8VD4ge1xuICBjb25zdCB7IGl0ZW1zLCBjdXJzb3IsIGxpbWl0IH0gPSBvcHRzO1xuICBjb25zdCBzdGFydEluZGV4ID0gY3Vyc29yID8gaXRlbXMuZmluZEluZGV4KChtKSA9PiBtLmlkID09PSBjdXJzb3IpICsgMSA6IDA7XG4gIGNvbnN0IHNsaWNlZCA9XG4gICAgbGltaXQgIT09IHVuZGVmaW5lZFxuICAgICAgPyBpdGVtcy5zbGljZShzdGFydEluZGV4LCBzdGFydEluZGV4ICsgbGltaXQpXG4gICAgICA6IGl0ZW1zLnNsaWNlKHN0YXJ0SW5kZXgpO1xuICBjb25zdCBuZXh0Q3Vyc29yID1cbiAgICBsaW1pdCAhPT0gdW5kZWZpbmVkICYmIHN0YXJ0SW5kZXggKyBsaW1pdCA8IGl0ZW1zLmxlbmd0aFxuICAgICAgPyAoc2xpY2VkLmF0KC0xKT8uaWQgPz8gbnVsbClcbiAgICAgIDogbnVsbDtcbiAgcmV0dXJuIHsgaXRlbXM6IHNsaWNlZCwgbmV4dEN1cnNvciB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7O0FBQUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxTQUFTLE1BQU0sZUFBZTtBQUN2QyxPQUFPLFdBQVc7OztBQ1BYLFNBQVMsU0FBbUMsTUFJakM7QUFDaEIsUUFBTSxFQUFFLE9BQU8sUUFBUSxNQUFNLElBQUk7QUFDakMsUUFBTSxhQUFhLFNBQVMsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sTUFBTSxJQUFJLElBQUk7QUFDMUUsUUFBTSxTQUNKLFVBQVUsU0FDTixNQUFNLE1BQU0sWUFBWSxhQUFhLEtBQUssSUFDMUMsTUFBTSxNQUFNLFVBQVU7QUFDNUIsUUFBTSxhQUNKLFVBQVUsVUFBYSxhQUFhLFFBQVEsTUFBTSxTQUM3QyxPQUFPLEdBQUcsRUFBRSxHQUFHLE1BQU0sT0FDdEI7QUFDTixTQUFPLEVBQUUsT0FBTyxRQUFRLFdBQVc7QUFDckM7OztBRElPLFNBQVMseUJBQXlCLFVBQTRCO0FBQ25FLFFBQU0sZUFBZSxRQUFRLFFBQVE7QUFDckMsUUFBTSxh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
|
|
447
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3N0b3JhZ2UvYmluZGluZ3MvbG9jYWwtZnMtaGFuZGxlcnMudHMiLCAiLi4vc3JjL3V0aWxzL3BhZ2luYXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge1xuICBta2RpcixcbiAgcmVhZGRpcixcbiAgcmVhZEZpbGUsXG4gIHJtLFxuICB1bmxpbmssXG4gIHdyaXRlRmlsZSxcbn0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgZXF1YWwgZnJvbSBcImZhc3QtZGVlcC1lcXVhbFwiO1xuaW1wb3J0IHsgU3RvcmFnZUNvbmZsaWN0RXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBwYWdpbmF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9wYWdpbmF0ZVwiO1xuaW1wb3J0IHR5cGUge1xuICBDb21tYW5kLFxuICBIYW5kbGVycyxcbiAgTWVzc2FnZSxcbiAgUGFydCxcbiAgU2FuZGJveFJlY29yZCxcbiAgU2Vzc2lvbixcbiAgU2V0dXBTbmFwc2hvdCxcbn0gZnJvbSBcIi4uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGaWxlc3lzdGVtSGFuZGxlcnMoYmFzZVBhdGg6IHN0cmluZyk6IEhhbmRsZXJzIHtcbiAgY29uc3QgcmVzb2x2ZWRCYXNlID0gcmVzb2x2ZShiYXNlUGF0aCk7XG4gIGNvbnN0IHNlc3Npb25EaXIgPSBqb2luKHJlc29sdmVkQmFzZSwgXCJzZXNzaW9uXCIpO1xuICBjb25zdCBtZXNzYWdlRGlyID0gam9pbihyZXNvbHZlZEJhc2UsIFwibWVzc2FnZVwiKTtcbiAgY29uc3QgcGFydERpciA9IGpvaW4ocmVzb2x2ZWRCYXNlLCBcInBhcnRcIik7XG4gIGNvbnN0IHNhbmRib3hEaXIgPSBqb2luKHJlc29sdmVkQmFzZSwgXCJzYW5kYm94XCIpO1xuICBjb25zdCBjb21tYW5kRGlyID0gam9pbihyZXNvbHZlZEJhc2UsIFwiY29tbWFuZFwiKTtcbiAgY29uc3Qgc2V0dXBEaXIgPSBqb2luKHJlc29sdmVkQmFzZSwgXCJzZXR1cFwiKTtcbiAgY29uc3QgbG9ja0RpciA9IGpvaW4ocmVzb2x2ZWRCYXNlLCBcIi5sb2Nrc1wiKTtcbiAgY29uc3QgTE9DS19TVEFMRV9NUyA9IDMwXzAwMDtcblxuICBhc3luYyBmdW5jdGlvbiBlbnN1cmVEaXIoZGlyOiBzdHJpbmcpIHtcbiAgICBhd2FpdCBta2RpcihkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVhZEpzb248VD4oZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCBcInV0Zi04XCIpO1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoY29udGVudCkgYXMgVDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHdyaXRlSnNvbkZpbGUoZmlsZVBhdGg6IHN0cmluZywgZGF0YTogdW5rbm93bikge1xuICAgIGF3YWl0IGVuc3VyZURpcihkaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKSk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB3aXRoUmVjb3JkTG9jazxUPihcbiAgICBrZXk6IHN0cmluZyxcbiAgICBmbjogKCkgPT4gUHJvbWlzZTxUPlxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBsb2NrTmFtZSA9IEJ1ZmZlci5mcm9tKGtleSkudG9TdHJpbmcoXCJiYXNlNjR1cmxcIik7XG4gICAgY29uc3QgbG9ja1BhdGggPSBqb2luKGxvY2tEaXIsIGAke2xvY2tOYW1lfS5sb2NrYCk7XG4gICAgY29uc3QgbWV0YWRhdGFQYXRoID0gam9pbihsb2NrUGF0aCwgXCJtZXRhZGF0YS5qc29uXCIpO1xuICAgIGF3YWl0IGVuc3VyZURpcihsb2NrRGlyKTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBta2Rpcihsb2NrUGF0aCk7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbkZpbGUobWV0YWRhdGFQYXRoLCB7XG4gICAgICAgICAgcGlkOiBwcm9jZXNzLnBpZCxcbiAgICAgICAgICBjcmVhdGVkQXQ6IERhdGUubm93KCksXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICEoZSBpbnN0YW5jZW9mIEVycm9yKSB8fFxuICAgICAgICAgIChlIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSAhPT0gXCJFRVhJU1RcIlxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgcmVhZEpzb248eyBjcmVhdGVkQXQ/OiBudW1iZXIgfT4obWV0YWRhdGFQYXRoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1ldGFkYXRhPy5jcmVhdGVkQXQgJiZcbiAgICAgICAgICBEYXRlLm5vdygpIC0gbWV0YWRhdGEuY3JlYXRlZEF0ID4gTE9DS19TVEFMRV9NU1xuICAgICAgICApIHtcbiAgICAgICAgICBhd2FpdCBybShsb2NrUGF0aCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmbigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBybShsb2NrUGF0aCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgIGlucHV0OiBUXG4gICk6IFBhcnRpYWw8VD4ge1xuICAgIGNvbnN0IHJlc3VsdDogUGFydGlhbDxUPiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGlucHV0KSkge1xuICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0W2tleSBhcyBrZXlvZiBUXSA9IHZhbHVlIGFzIFRba2V5b2YgVF07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZWFkQWxsRnJvbURpcjxUPihkaXI6IHN0cmluZyk6IFByb21pc2U8VFtdPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpcihkaXIpO1xuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBmaWxlc1xuICAgICAgICAgIC5maWx0ZXIoKGYpID0+IGYuZW5kc1dpdGgoXCIuanNvblwiKSlcbiAgICAgICAgICAubWFwKChmKSA9PiByZWFkSnNvbjxUPihqb2luKGRpciwgZikpKVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXN1bHRzLmZpbHRlcigocik6IHIgaXMgTm9uTnVsbGFibGU8dHlwZW9mIHI+ID0+IHIgIT09IG51bGwpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgXCJzZXNzaW9uLmdldFwiOiBhc3luYyAoeyBpZCB9KSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uUGF0aCA9IGpvaW4oc2Vzc2lvbkRpciwgYCR7aWR9Lmpzb25gKTtcbiAgICAgIHJldHVybiAoYXdhaXQgcmVhZEpzb248U2Vzc2lvbj4oc2Vzc2lvblBhdGgpKSA/PyBudWxsO1xuICAgIH0sXG5cbiAgICBcInNlc3Npb24uc2V0XCI6IGFzeW5jIChzZXNzaW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgd2l0aFJlY29yZExvY2soYHNlc3Npb246JHtzZXNzaW9uLmlkfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3Qgc2Vzc2lvblBhdGggPSBqb2luKHNlc3Npb25EaXIsIGAke3Nlc3Npb24uaWR9Lmpzb25gKTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkSnNvbjxTZXNzaW9uPihzZXNzaW9uUGF0aCk7XG4gICAgICAgIGNvbnN0IG5ld1Nlc3Npb246IFNlc3Npb24gPSB7XG4gICAgICAgICAgLi4uc2Vzc2lvbixcbiAgICAgICAgICB0YWdzOiBzZXNzaW9uLnRhZ3MgPz8gZXhpc3Rpbmc/LnRhZ3MgPz8ge30sXG4gICAgICAgICAgY3JlYXRlZEF0OiBleGlzdGluZz8uY3JlYXRlZEF0ID8/IHNlc3Npb24uY3JlYXRlZEF0ID8/IG5vdyxcbiAgICAgICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShzZXNzaW9uUGF0aCwgbmV3U2Vzc2lvbik7XG4gICAgICAgIHJldHVybiBuZXdTZXNzaW9uO1xuICAgICAgfSk7XG4gICAgfSxcblxuICAgIFwic2Vzc2lvbi51cGRhdGVcIjogYXN5bmMgKG9wdHMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCB3aXRoUmVjb3JkTG9jayhgc2Vzc2lvbjoke29wdHMuaWR9YCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzZXNzaW9uUGF0aCA9IGpvaW4oc2Vzc2lvbkRpciwgYCR7b3B0cy5pZH0uanNvbmApO1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHJlYWRKc29uPFNlc3Npb24+KHNlc3Npb25QYXRoKTtcbiAgICAgICAgaWYgKCFleGlzdGluZykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2Vzc2lvbiAke29wdHMuaWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmF3UGF0Y2ggPSByZW1vdmVVbmRlZmluZWQoe1xuICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgaWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhyYXdQYXRjaCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGV4aXN0aW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24ocmF3UGF0Y2gsIFwicnVuSWRcIikpIHtcbiAgICAgICAgICBjb25zdCBuZXh0UnVuSWQgPSByYXdQYXRjaC5ydW5JZCBhcyBTZXNzaW9uW1wicnVuSWRcIl0gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKGV4aXN0aW5nLnJ1bklkICE9PSBudWxsICYmIG5leHRSdW5JZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFN0b3JhZ2VDb25mbGljdEVycm9yKHtcbiAgICAgICAgICAgICAgcmVhc29uOiBcInJ1bklkIGNhbm5vdCBiZSBjbGVhcmVkIG9uY2Ugc2V0XCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGV4aXN0aW5nLnJ1bklkICE9PSBudWxsICYmIG5leHRSdW5JZCAhPT0gZXhpc3RpbmcucnVuSWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBTdG9yYWdlQ29uZmxpY3RFcnJvcih7XG4gICAgICAgICAgICAgIHJlYXNvbjogYHJ1bklkIGlzIGFscmVhZHkgc2V0IHRvICR7ZXhpc3RpbmcucnVuSWR9YCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhdGNoID0gcmF3UGF0Y2ggYXMgUGFydGlhbDxPbWl0PFNlc3Npb24sIFwiaWRcIj4+O1xuICAgICAgICBjb25zdCB1cGRhdGVkQXQgPVxuICAgICAgICAgIHBhdGNoLnVwZGF0ZWRBdCAhPT0gdW5kZWZpbmVkID8gcGF0Y2gudXBkYXRlZEF0IDogRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZFNlc3Npb246IFNlc3Npb24gPSB7XG4gICAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgICAgLi4ucGF0Y2gsXG4gICAgICAgICAgdXBkYXRlZEF0LFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCB3cml0ZUpzb25GaWxlKHNlc3Npb25QYXRoLCB1cGRhdGVkU2Vzc2lvbik7XG4gICAgICAgIHJldHVybiB1cGRhdGVkU2Vzc2lvbjtcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBcInNlc3Npb24uZGVsZXRlXCI6IGFzeW5jICh7IGlkIH0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHVubGluayhqb2luKHNlc3Npb25EaXIsIGAke2lkfS5qc29uYCkpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGlnbm9yZSBpZiBmaWxlIGRvZXNuJ3QgZXhpc3RcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFsbE1lc3NhZ2VzID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8TWVzc2FnZT4obWVzc2FnZURpcik7XG4gICAgICBjb25zdCBzZXNzaW9uTWVzc2FnZXMgPSBhbGxNZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0uc2Vzc2lvbklkID09PSBpZCk7XG4gICAgICBjb25zdCBhbGxQYXJ0cyA9IGF3YWl0IHJlYWRBbGxGcm9tRGlyPFBhcnQ+KHBhcnREaXIpO1xuICAgICAgY29uc3Qgc2Vzc2lvblBhcnRzID0gYWxsUGFydHMuZmlsdGVyKChwKSA9PiBwLnNlc3Npb25JZCA9PT0gaWQpO1xuICAgICAgY29uc3QgYWxsQ29tbWFuZHMgPSBhd2FpdCByZWFkQWxsRnJvbURpcjxDb21tYW5kPihjb21tYW5kRGlyKTtcbiAgICAgIGNvbnN0IHNlc3Npb25Db21tYW5kcyA9IGFsbENvbW1hbmRzLmZpbHRlcigoYykgPT4gYy5zZXNzaW9uSWQgPT09IGlkKTtcbiAgICAgIGNvbnN0IG5vb3AgPSAoKSA9PiB1bmRlZmluZWQ7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIC4uLnNlc3Npb25NZXNzYWdlcy5tYXAoKG0pID0+XG4gICAgICAgICAgdW5saW5rKGpvaW4obWVzc2FnZURpciwgYCR7bS5pZH0uanNvbmApKS5jYXRjaChub29wKVxuICAgICAgICApLFxuICAgICAgICAuLi5zZXNzaW9uUGFydHMubWFwKChwKSA9PlxuICAgICAgICAgIHVubGluayhqb2luKHBhcnREaXIsIGAke3AuaWR9Lmpzb25gKSkuY2F0Y2gobm9vcClcbiAgICAgICAgKSxcbiAgICAgICAgLi4uc2Vzc2lvbkNvbW1hbmRzLm1hcCgoYykgPT5cbiAgICAgICAgICB1bmxpbmsoam9pbihjb21tYW5kRGlyLCBgJHtjLmlkfS5qc29uYCkpLmNhdGNoKG5vb3ApXG4gICAgICAgICksXG4gICAgICBdKTtcbiAgICB9LFxuXG4gICAgXCJzZXNzaW9uLmxpc3RcIjogYXN5bmMgKHsgdGFncywgb3JkZXIsIGN1cnNvciwgbGltaXQgfSkgPT4ge1xuICAgICAgY29uc3QgYWxsU2Vzc2lvbnMgPSBhd2FpdCByZWFkQWxsRnJvbURpcjxTZXNzaW9uPihzZXNzaW9uRGlyKTtcbiAgICAgIGxldCBmaWx0ZXJlZCA9IGFsbFNlc3Npb25zO1xuICAgICAgaWYgKHRhZ3MgJiYgT2JqZWN0LmtleXModGFncykubGVuZ3RoID4gMCkge1xuICAgICAgICBmaWx0ZXJlZCA9IGZpbHRlcmVkLmZpbHRlcigocykgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlc3Npb25UYWdzID0gcy50YWdzID8/IHt9O1xuICAgICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0YWdzKS5ldmVyeSgoW2tleSwgdmFsdWVdKSA9PlxuICAgICAgICAgICAgZXF1YWwoc2Vzc2lvblRhZ3Nba2V5XSwgdmFsdWUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNvbHZlZE9yZGVyID0gb3JkZXIgPz8gXCJ1cGRhdGVkQXRfZGVzY1wiO1xuICAgICAgY29uc3Qgc29ydEZpZWxkID0gcmVzb2x2ZWRPcmRlci5zdGFydHNXaXRoKFwidXBkYXRlZEF0XCIpXG4gICAgICAgID8gXCJ1cGRhdGVkQXRcIlxuICAgICAgICA6IFwiY3JlYXRlZEF0XCI7XG4gICAgICBjb25zdCBzb3J0RGlyID0gcmVzb2x2ZWRPcmRlci5lbmRzV2l0aChcIl9kZXNjXCIpID8gLTEgOiAxO1xuICAgICAgZmlsdGVyZWQuc29ydCgoYSwgYikgPT4gc29ydERpciAqIChhW3NvcnRGaWVsZF0gLSBiW3NvcnRGaWVsZF0pKTtcbiAgICAgIHJldHVybiBwYWdpbmF0ZSh7IGl0ZW1zOiBmaWx0ZXJlZCwgY3Vyc29yLCBsaW1pdCB9KTtcbiAgICB9LFxuXG4gICAgXCJzZXNzaW9uLmxpc3RCeVNhbmRib3hcIjogYXN5bmMgKHtcbiAgICAgIHNhbmRib3hJZCxcbiAgICAgIHRhZ3MsXG4gICAgICBvcmRlcixcbiAgICAgIGN1cnNvcixcbiAgICAgIGxpbWl0LFxuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IGFsbFNlc3Npb25zID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8U2Vzc2lvbj4oc2Vzc2lvbkRpcik7XG4gICAgICBsZXQgZmlsdGVyZWQgPSBhbGxTZXNzaW9ucy5maWx0ZXIoKHMpID0+IHMuc2FuZGJveElkID09PSBzYW5kYm94SWQpO1xuICAgICAgaWYgKHRhZ3MgJiYgT2JqZWN0LmtleXModGFncykubGVuZ3RoID4gMCkge1xuICAgICAgICBmaWx0ZXJlZCA9IGZpbHRlcmVkLmZpbHRlcigocykgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlc3Npb25UYWdzID0gcy50YWdzID8/IHt9O1xuICAgICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0YWdzKS5ldmVyeSgoW2tleSwgdmFsdWVdKSA9PlxuICAgICAgICAgICAgZXF1YWwoc2Vzc2lvblRhZ3Nba2V5XSwgdmFsdWUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNvbHZlZE9yZGVyID0gb3JkZXIgPz8gXCJ1cGRhdGVkQXRfZGVzY1wiO1xuICAgICAgY29uc3Qgc29ydEZpZWxkID0gcmVzb2x2ZWRPcmRlci5zdGFydHNXaXRoKFwidXBkYXRlZEF0XCIpXG4gICAgICAgID8gXCJ1cGRhdGVkQXRcIlxuICAgICAgICA6IFwiY3JlYXRlZEF0XCI7XG4gICAgICBjb25zdCBzb3J0RGlyID0gcmVzb2x2ZWRPcmRlci5lbmRzV2l0aChcIl9kZXNjXCIpID8gLTEgOiAxO1xuICAgICAgZmlsdGVyZWQuc29ydCgoYSwgYikgPT4gc29ydERpciAqIChhW3NvcnRGaWVsZF0gLSBiW3NvcnRGaWVsZF0pKTtcbiAgICAgIHJldHVybiBwYWdpbmF0ZSh7IGl0ZW1zOiBmaWx0ZXJlZCwgY3Vyc29yLCBsaW1pdCB9KTtcbiAgICB9LFxuXG4gICAgXCJzZXNzaW9uLnRhZy5zZXRcIjogYXN5bmMgKHsgc2Vzc2lvbklkLCB0YWdzIH0pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCB3aXRoUmVjb3JkTG9jayhgc2Vzc2lvbjoke3Nlc3Npb25JZH1gLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlc3Npb25QYXRoID0gam9pbihzZXNzaW9uRGlyLCBgJHtzZXNzaW9uSWR9Lmpzb25gKTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkSnNvbjxTZXNzaW9uPihzZXNzaW9uUGF0aCk7XG4gICAgICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlc3Npb24gJHtzZXNzaW9uSWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1lcmdlZFRhZ3MgPSB7IC4uLmV4aXN0aW5nLnRhZ3MsIC4uLnRhZ3MgfTtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZFNlc3Npb246IFNlc3Npb24gPSB7XG4gICAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgICAgdGFnczogbWVyZ2VkVGFncyxcbiAgICAgICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShzZXNzaW9uUGF0aCwgdXBkYXRlZFNlc3Npb24pO1xuICAgICAgICByZXR1cm4gdXBkYXRlZFNlc3Npb247XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJtZXNzYWdlLmdldFwiOiBhc3luYyAoeyBpZCB9KSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVhZEpzb248TWVzc2FnZT4oam9pbihtZXNzYWdlRGlyLCBgJHtpZH0uanNvbmApKTtcbiAgICB9LFxuXG4gICAgXCJtZXNzYWdlLnNldFwiOiBhc3luYyAobWVzc2FnZSkgPT4ge1xuICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShqb2luKG1lc3NhZ2VEaXIsIGAke21lc3NhZ2UuaWR9Lmpzb25gKSwgbWVzc2FnZSk7XG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9LFxuXG4gICAgXCJtZXNzYWdlLmxpc3RcIjogYXN5bmMgKHsgc2Vzc2lvbklkLCBjdXJzb3IsIGxpbWl0IH0pID0+IHtcbiAgICAgIGNvbnN0IGFsbE1lc3NhZ2VzID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8TWVzc2FnZT4obWVzc2FnZURpcik7XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IGFsbE1lc3NhZ2VzXG4gICAgICAgIC5maWx0ZXIoKG0pID0+IG0uc2Vzc2lvbklkID09PSBzZXNzaW9uSWQpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmNyZWF0ZWRBdCAtIGIuY3JlYXRlZEF0KTtcbiAgICAgIHJldHVybiBwYWdpbmF0ZSh7IGl0ZW1zOiBmaWx0ZXJlZCwgY3Vyc29yLCBsaW1pdCB9KTtcbiAgICB9LFxuXG4gICAgXCJwYXJ0Lmxpc3RCeU1lc3NhZ2VcIjogYXN5bmMgKHsgbWVzc2FnZUlkLCBjdXJzb3IsIGxpbWl0IH0pID0+IHtcbiAgICAgIGNvbnN0IGFsbFBhcnRzID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8UGFydD4ocGFydERpcik7XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IGFsbFBhcnRzXG4gICAgICAgIC5maWx0ZXIoKHApID0+IHAubWVzc2FnZUlkID09PSBtZXNzYWdlSWQpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG4gICAgICByZXR1cm4gcGFnaW5hdGUoeyBpdGVtczogZmlsdGVyZWQsIGN1cnNvciwgbGltaXQgfSk7XG4gICAgfSxcblxuICAgIFwicGFydC5saXN0QnlTZXNzaW9uXCI6IGFzeW5jICh7IHNlc3Npb25JZCwgY3Vyc29yLCBsaW1pdCB9KSA9PiB7XG4gICAgICBjb25zdCBhbGxQYXJ0cyA9IGF3YWl0IHJlYWRBbGxGcm9tRGlyPFBhcnQ+KHBhcnREaXIpO1xuICAgICAgY29uc3QgZmlsdGVyZWQgPSBhbGxQYXJ0c1xuICAgICAgICAuZmlsdGVyKChwKSA9PiBwLnNlc3Npb25JZCA9PT0gc2Vzc2lvbklkKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIGlmIChhLm1lc3NhZ2VJZCAhPT0gYi5tZXNzYWdlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBhLm1lc3NhZ2VJZC5sb2NhbGVDb21wYXJlKGIubWVzc2FnZUlkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGEuaW5kZXggLSBiLmluZGV4O1xuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBwYWdpbmF0ZSh7IGl0ZW1zOiBmaWx0ZXJlZCwgY3Vyc29yLCBsaW1pdCB9KTtcbiAgICB9LFxuXG4gICAgXCJwYXJ0LnNldFwiOiBhc3luYyAocGFydCkgPT4ge1xuICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShqb2luKHBhcnREaXIsIGAke3BhcnQuaWR9Lmpzb25gKSwgcGFydCk7XG4gICAgICByZXR1cm4gcGFydDtcbiAgICB9LFxuXG4gICAgXCJwYXJ0LmRlbGV0ZVwiOiBhc3luYyAoeyBpZCB9KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB1bmxpbmsoam9pbihwYXJ0RGlyLCBgJHtpZH0uanNvbmApKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBJZ25vcmUgaWYgZmlsZSBkb2Vzbid0IGV4aXN0XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwic2FuZGJveC5nZXRcIjogYXN5bmMgKHsga2V5IH0pID0+IHtcbiAgICAgIGNvbnN0IHNhZmVOYW1lID0gQnVmZmVyLmZyb20oa2V5KS50b1N0cmluZyhcImJhc2U2NHVybFwiKTtcbiAgICAgIGNvbnN0IHNhbmRib3hQYXRoID0gam9pbihzYW5kYm94RGlyLCBgJHtzYWZlTmFtZX0uanNvbmApO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlYWRKc29uPFNhbmRib3hSZWNvcmQ+KHNhbmRib3hQYXRoKTtcbiAgICAgIGlmICghZGF0YSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0sXG5cbiAgICBcInNhbmRib3guc2V0XCI6IGFzeW5jIChyZWNvcmQpID0+IHtcbiAgICAgIGF3YWl0IHdpdGhSZWNvcmRMb2NrKGBzYW5kYm94OiR7cmVjb3JkLmlkfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2FmZU5hbWUgPSBCdWZmZXIuZnJvbShyZWNvcmQuaWQpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpO1xuICAgICAgICBjb25zdCBzYW5kYm94UGF0aCA9IGpvaW4oc2FuZGJveERpciwgYCR7c2FmZU5hbWV9Lmpzb25gKTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkSnNvbjxTYW5kYm94UmVjb3JkPihzYW5kYm94UGF0aCk7XG4gICAgICAgIGNvbnN0IG5ld1JlY29yZDogU2FuZGJveFJlY29yZCA9IHtcbiAgICAgICAgICAuLi5yZWNvcmQsXG4gICAgICAgICAgdGFnczogcmVjb3JkLnRhZ3MgPz8gZXhpc3Rpbmc/LnRhZ3MgPz8gbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShzYW5kYm94UGF0aCwgbmV3UmVjb3JkKTtcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBcInNhbmRib3gudXBkYXRlXCI6IGFzeW5jIChvcHRzKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgd2l0aFJlY29yZExvY2soYHNhbmRib3g6JHtvcHRzLmlkfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2FmZU5hbWUgPSBCdWZmZXIuZnJvbShvcHRzLmlkKS50b1N0cmluZyhcImJhc2U2NHVybFwiKTtcbiAgICAgICAgY29uc3Qgc2FuZGJveFBhdGggPSBqb2luKHNhbmRib3hEaXIsIGAke3NhZmVOYW1lfS5qc29uYCk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgcmVhZEpzb248U2FuZGJveFJlY29yZD4oc2FuZGJveFBhdGgpO1xuICAgICAgICBpZiAoIWV4aXN0aW5nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTYW5kYm94ICR7b3B0cy5pZH0gbm90IGZvdW5kYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF0Y2ggPSByZW1vdmVVbmRlZmluZWQoe1xuICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgaWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgfSkgYXMgUGFydGlhbDxPbWl0PFNhbmRib3hSZWNvcmQsIFwiaWRcIj4+O1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocGF0Y2gpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBleGlzdGluZztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cGRhdGVkU2FuZGJveDogU2FuZGJveFJlY29yZCA9IHtcbiAgICAgICAgICAuLi5leGlzdGluZyxcbiAgICAgICAgICAuLi5wYXRjaCxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShzYW5kYm94UGF0aCwgdXBkYXRlZFNhbmRib3gpO1xuICAgICAgICByZXR1cm4gdXBkYXRlZFNhbmRib3g7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJzYW5kYm94Lmxpc3RcIjogYXN5bmMgKHsgdGFncywgb3JkZXIsIGN1cnNvciwgbGltaXQgfSkgPT4ge1xuICAgICAgY29uc3QgYWxsU2FuZGJveGVzID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8U2FuZGJveFJlY29yZD4oc2FuZGJveERpcik7XG4gICAgICBsZXQgZmlsdGVyZWQgPSBhbGxTYW5kYm94ZXM7XG4gICAgICBpZiAodGFncyAmJiBPYmplY3Qua2V5cyh0YWdzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZpbHRlcmVkID0gZmlsdGVyZWQuZmlsdGVyKChzKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2FuZGJveFRhZ3MgPSBzLnRhZ3MgPz8ge307XG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRhZ3MpLmV2ZXJ5KChba2V5LCB2YWx1ZV0pID0+XG4gICAgICAgICAgICBlcXVhbChzYW5kYm94VGFnc1trZXldLCB2YWx1ZSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNvcnRGaWVsZCA9IG9yZGVyPy5zdGFydHNXaXRoKFwibGFzdEFjdGl2aXR5QXRcIilcbiAgICAgICAgPyBcImxhc3RBY3Rpdml0eUF0XCJcbiAgICAgICAgOiBcImNyZWF0ZWRBdFwiO1xuICAgICAgY29uc3Qgc29ydERpciA9IG9yZGVyPy5lbmRzV2l0aChcIl9kZXNjXCIpID8gLTEgOiAxO1xuICAgICAgZmlsdGVyZWQuc29ydChcbiAgICAgICAgKGEsIGIpID0+IHNvcnREaXIgKiAoKGFbc29ydEZpZWxkXSA/PyAwKSAtIChiW3NvcnRGaWVsZF0gPz8gMCkpXG4gICAgICApO1xuICAgICAgcmV0dXJuIHBhZ2luYXRlKHsgaXRlbXM6IGZpbHRlcmVkLCBjdXJzb3IsIGxpbWl0IH0pO1xuICAgIH0sXG5cbiAgICBcInNhbmRib3gudGFnLnNldFwiOiBhc3luYyAoeyBzYW5kYm94SWQsIHRhZ3MgfSkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IHdpdGhSZWNvcmRMb2NrKGBzYW5kYm94OiR7c2FuZGJveElkfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2FmZU5hbWUgPSBCdWZmZXIuZnJvbShzYW5kYm94SWQpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpO1xuICAgICAgICBjb25zdCBzYW5kYm94UGF0aCA9IGpvaW4oc2FuZGJveERpciwgYCR7c2FmZU5hbWV9Lmpzb25gKTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkSnNvbjxTYW5kYm94UmVjb3JkPihzYW5kYm94UGF0aCk7XG4gICAgICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNhbmRib3ggJHtzYW5kYm94SWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1lcmdlZFRhZ3MgPSB7IC4uLmV4aXN0aW5nLnRhZ3MsIC4uLnRhZ3MgfTtcbiAgICAgICAgY29uc3QgdXBkYXRlZFNhbmRib3g6IFNhbmRib3hSZWNvcmQgPSB7XG4gICAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgICAgdGFnczogbWVyZ2VkVGFncyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShzYW5kYm94UGF0aCwgdXBkYXRlZFNhbmRib3gpO1xuICAgICAgICByZXR1cm4gdXBkYXRlZFNhbmRib3g7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJzYW5kYm94LmdldEJ5U2Vzc2lvblwiOiBhc3luYyAoeyBzZXNzaW9uSWQgfSkgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvblBhdGggPSBqb2luKHNlc3Npb25EaXIsIGAke3Nlc3Npb25JZH0uanNvbmApO1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IHJlYWRKc29uPFNlc3Npb24+KHNlc3Npb25QYXRoKTtcbiAgICAgIGlmICghc2Vzc2lvbj8uc2FuZGJveElkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzYWZlTmFtZSA9IEJ1ZmZlci5mcm9tKHNlc3Npb24uc2FuZGJveElkKS50b1N0cmluZyhcImJhc2U2NHVybFwiKTtcbiAgICAgIHJldHVybiBhd2FpdCByZWFkSnNvbjxTYW5kYm94UmVjb3JkPihcbiAgICAgICAgam9pbihzYW5kYm94RGlyLCBgJHtzYWZlTmFtZX0uanNvbmApXG4gICAgICApO1xuICAgIH0sXG5cbiAgICBcImNvbW1hbmQuZ2V0XCI6IGFzeW5jICh7IGlkIH0pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCByZWFkSnNvbjxDb21tYW5kPihqb2luKGNvbW1hbmREaXIsIGAke2lkfS5qc29uYCkpO1xuICAgIH0sXG5cbiAgICBcImNvbW1hbmQuc2V0XCI6IGFzeW5jIChjb21tYW5kKSA9PiB7XG4gICAgICBhd2FpdCB3cml0ZUpzb25GaWxlKGpvaW4oY29tbWFuZERpciwgYCR7Y29tbWFuZC5pZH0uanNvbmApLCBjb21tYW5kKTtcbiAgICAgIHJldHVybiBjb21tYW5kO1xuICAgIH0sXG5cbiAgICBcInNldHVwLmdldFwiOiBhc3luYyAoeyBrZXkgfSkgPT4ge1xuICAgICAgY29uc3Qgc2FmZU5hbWUgPSBCdWZmZXIuZnJvbShrZXkpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpO1xuICAgICAgcmV0dXJuIGF3YWl0IHJlYWRKc29uPFNldHVwU25hcHNob3Q+KGpvaW4oc2V0dXBEaXIsIGAke3NhZmVOYW1lfS5qc29uYCkpO1xuICAgIH0sXG5cbiAgICBcInNldHVwLmRlbGV0ZVwiOiBhc3luYyAoeyBrZXkgfSkgPT4ge1xuICAgICAgYXdhaXQgd2l0aFJlY29yZExvY2soYHNldHVwOiR7a2V5fWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2FmZU5hbWUgPSBCdWZmZXIuZnJvbShrZXkpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpO1xuICAgICAgICBhd2FpdCB1bmxpbmsoam9pbihzZXR1cERpciwgYCR7c2FmZU5hbWV9Lmpzb25gKSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBcInNldHVwLnNldFwiOiBhc3luYyAoc25hcHNob3QpID0+IHtcbiAgICAgIGF3YWl0IHdpdGhSZWNvcmRMb2NrKGBzZXR1cDoke3NuYXBzaG90LmtleX1gLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNhZmVOYW1lID0gQnVmZmVyLmZyb20oc25hcHNob3Qua2V5KS50b1N0cmluZyhcImJhc2U2NHVybFwiKTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShqb2luKHNldHVwRGlyLCBgJHtzYWZlTmFtZX0uanNvbmApLCBzbmFwc2hvdCk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJzZXR1cC5hY3F1aXJlTG9ja1wiOiBhc3luYyAoeyBrZXksIGxvY2tJZCwgbG9ja1RpbWVvdXRNcyB9KSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgd2l0aFJlY29yZExvY2soYHNldHVwOiR7a2V5fWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2FmZU5hbWUgPSBCdWZmZXIuZnJvbShrZXkpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpO1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGpvaW4oc2V0dXBEaXIsIGAke3NhZmVOYW1lfS5qc29uYCk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgcmVhZEpzb248U2V0dXBTbmFwc2hvdD4oZmlsZVBhdGgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXhpc3Rpbmc/LmFjcXVpcmluZ0xvY2tJZCAmJlxuICAgICAgICAgIGV4aXN0aW5nLmFjcXVpcmluZ0xvY2tBdCAmJlxuICAgICAgICAgIERhdGUubm93KCkgLSBleGlzdGluZy5hY3F1aXJpbmdMb2NrQXQgPCBsb2NrVGltZW91dE1zXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHNuYXBzaG90OiBTZXR1cFNuYXBzaG90ID0ge1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBzbmFwc2hvdElkOiBleGlzdGluZz8uc25hcHNob3RJZCA/PyBudWxsLFxuICAgICAgICAgIGNyZWF0ZWRBdDogZXhpc3Rpbmc/LmNyZWF0ZWRBdCA/PyBub3csXG4gICAgICAgICAgbGFzdFVzZWRBdDogZXhpc3Rpbmc/Lmxhc3RVc2VkQXQgPz8gbnVsbCxcbiAgICAgICAgICBhY3F1aXJpbmdMb2NrSWQ6IGxvY2tJZCxcbiAgICAgICAgICBhY3F1aXJpbmdMb2NrQXQ6IG5vdyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShmaWxlUGF0aCwgc25hcHNob3QpO1xuICAgICAgICByZXR1cm4gc25hcHNob3Q7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJzYW5kYm94LmFjcXVpcmVMb2NrXCI6IGFzeW5jICh7IHJlY29yZCwgbG9ja1RpbWVvdXRNcyB9KSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgd2l0aFJlY29yZExvY2soYHNhbmRib3g6JHtyZWNvcmQuaWR9YCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzYWZlTmFtZSA9IEJ1ZmZlci5mcm9tKHJlY29yZC5pZCkudG9TdHJpbmcoXCJiYXNlNjR1cmxcIik7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gam9pbihzYW5kYm94RGlyLCBgJHtzYWZlTmFtZX0uanNvbmApO1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHJlYWRKc29uPFNhbmRib3hSZWNvcmQ+KGZpbGVQYXRoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV4aXN0aW5nPy5hY3F1aXJpbmdMb2NrSWQgJiZcbiAgICAgICAgICBleGlzdGluZy5hY3F1aXJpbmdMb2NrQXQgJiZcbiAgICAgICAgICBEYXRlLm5vdygpIC0gZXhpc3RpbmcuYWNxdWlyaW5nTG9ja0F0IDwgbG9ja1RpbWVvdXRNc1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzYW1lU2V0dXBLZXkgPVxuICAgICAgICAgIGV4aXN0aW5nPy5zZXR1cEtleSAhPSBudWxsICYmIGV4aXN0aW5nLnNldHVwS2V5ID09PSByZWNvcmQuc2V0dXBLZXk7XG4gICAgICAgIGNvbnN0IG5ld1JlY29yZDogU2FuZGJveFJlY29yZCA9IHtcbiAgICAgICAgICAuLi5yZWNvcmQsXG4gICAgICAgICAgdGFnczogcmVjb3JkLnRhZ3MgPz8gZXhpc3Rpbmc/LnRhZ3MgPz8gbnVsbCxcbiAgICAgICAgICBzZXR1cENvbXBsZXRlZEF0OiBzYW1lU2V0dXBLZXlcbiAgICAgICAgICAgID8gKGV4aXN0aW5nLnNldHVwQ29tcGxldGVkQXQgPz8gbnVsbClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uRmlsZShmaWxlUGF0aCwgbmV3UmVjb3JkKTtcbiAgICAgICAgcmV0dXJuIG5ld1JlY29yZDtcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBcImNvbW1hbmQubGlzdFwiOiBhc3luYyAoeyBzZXNzaW9uSWQsIGluY2x1ZGVGaW5pc2hlZCwgY3Vyc29yLCBsaW1pdCB9KSA9PiB7XG4gICAgICBjb25zdCBhbGxDb21tYW5kcyA9IGF3YWl0IHJlYWRBbGxGcm9tRGlyPENvbW1hbmQ+KGNvbW1hbmREaXIpO1xuICAgICAgbGV0IGZpbHRlcmVkID0gYWxsQ29tbWFuZHMuZmlsdGVyKChjKSA9PiBjLnNlc3Npb25JZCA9PT0gc2Vzc2lvbklkKTtcbiAgICAgIGlmICghaW5jbHVkZUZpbmlzaGVkKSB7XG4gICAgICAgIGZpbHRlcmVkID0gZmlsdGVyZWQuZmlsdGVyKChjKSA9PiBjLnN0YXR1cyA9PT0gXCJydW5uaW5nXCIpO1xuICAgICAgfVxuICAgICAgZmlsdGVyZWQuc29ydCgoYSwgYikgPT4gYS5zdGFydGVkQXQgLSBiLnN0YXJ0ZWRBdCk7XG4gICAgICByZXR1cm4gcGFnaW5hdGUoeyBpdGVtczogZmlsdGVyZWQsIGN1cnNvciwgbGltaXQgfSk7XG4gICAgfSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IExpc3RSZXN1bHQgfSBmcm9tIFwiLi4vc3RvcmFnZVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFnaW5hdGU8VCBleHRlbmRzIHsgaWQ6IHN0cmluZyB9PihvcHRzOiB7XG4gIGl0ZW1zOiBUW107XG4gIGN1cnNvcj86IHN0cmluZztcbiAgbGltaXQ/OiBudW1iZXI7XG59KTogTGlzdFJlc3VsdDxUPiB7XG4gIGNvbnN0IHsgaXRlbXMsIGN1cnNvciwgbGltaXQgfSA9IG9wdHM7XG4gIGNvbnN0IHN0YXJ0SW5kZXggPSBjdXJzb3IgPyBpdGVtcy5maW5kSW5kZXgoKG0pID0+IG0uaWQgPT09IGN1cnNvcikgKyAxIDogMDtcbiAgY29uc3Qgc2xpY2VkID1cbiAgICBsaW1pdCAhPT0gdW5kZWZpbmVkXG4gICAgICA/IGl0ZW1zLnNsaWNlKHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyBsaW1pdClcbiAgICAgIDogaXRlbXMuc2xpY2Uoc3RhcnRJbmRleCk7XG4gIGNvbnN0IG5leHRDdXJzb3IgPVxuICAgIGxpbWl0ICE9PSB1bmRlZmluZWQgJiYgc3RhcnRJbmRleCArIGxpbWl0IDwgaXRlbXMubGVuZ3RoXG4gICAgICA/IChzbGljZWQuYXQoLTEpPy5pZCA/PyBudWxsKVxuICAgICAgOiBudWxsO1xuICByZXR1cm4geyBpdGVtczogc2xpY2VkLCBuZXh0Q3Vyc29yIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAi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
|
package/dist/next/loader.js
CHANGED
|
@@ -39,7 +39,7 @@ var import_core = require("@swc/core");
|
|
|
39
39
|
// package.json
|
|
40
40
|
var package_default = {
|
|
41
41
|
name: "experimental-agent",
|
|
42
|
-
version: "0.
|
|
42
|
+
version: "0.2.0",
|
|
43
43
|
main: "./dist/index.js",
|
|
44
44
|
module: "./dist/index.mjs",
|
|
45
45
|
types: "./dist/index.d.ts",
|
|
@@ -80,15 +80,12 @@ var package_default = {
|
|
|
80
80
|
"test:watch": "vitest"
|
|
81
81
|
},
|
|
82
82
|
dependencies: {
|
|
83
|
-
"@hono/node-server": "^1.19.9",
|
|
84
83
|
"@swc/core": "^1.10.0",
|
|
85
84
|
"@vercel/oidc": "^3.1.0",
|
|
86
85
|
"better-all": "^0.0.5",
|
|
87
86
|
errore: "^0.8.2",
|
|
88
87
|
"fast-deep-equal": "^3.1.3",
|
|
89
|
-
|
|
90
|
-
hono: "^4.11.6",
|
|
91
|
-
"@vercel/sandbox": "^1.5.0",
|
|
88
|
+
"@vercel/sandbox": "1.7.1",
|
|
92
89
|
ulid: "^3.0.2",
|
|
93
90
|
zod: "^4.3.6"
|
|
94
91
|
},
|
|
@@ -98,7 +95,6 @@ var package_default = {
|
|
|
98
95
|
dotenv: "^17.2.3",
|
|
99
96
|
next: "^16.0.0",
|
|
100
97
|
tsup: "^8.0.2",
|
|
101
|
-
"type-fest": "^5.4.2",
|
|
102
98
|
typescript: "5.5.4",
|
|
103
99
|
vitest: "^3.0.0"
|
|
104
100
|
},
|
|
@@ -142,13 +138,21 @@ function agentRpcLoader(source) {
|
|
|
142
138
|
}
|
|
143
139
|
log("found agent exports:", agentExports);
|
|
144
140
|
const fileDir = path.dirname(filename);
|
|
141
|
+
let appDir;
|
|
145
142
|
const srcIndex = filename.lastIndexOf(`${path.sep}src${path.sep}`);
|
|
146
|
-
if (srcIndex
|
|
147
|
-
|
|
148
|
-
|
|
143
|
+
if (srcIndex !== -1) {
|
|
144
|
+
const srcDir = filename.substring(0, srcIndex + 4);
|
|
145
|
+
appDir = path.join(srcDir, "app");
|
|
146
|
+
} else {
|
|
147
|
+
const appSep = `${path.sep}app${path.sep}`;
|
|
148
|
+
const appIndex = filename.lastIndexOf(appSep);
|
|
149
|
+
if (appIndex !== -1) {
|
|
150
|
+
appDir = filename.substring(0, appIndex + appSep.length - 1);
|
|
151
|
+
} else {
|
|
152
|
+
log("skipping - no src/ or app/ dir found");
|
|
153
|
+
return source;
|
|
154
|
+
}
|
|
149
155
|
}
|
|
150
|
-
const srcDir = filename.substring(0, srcIndex + 4);
|
|
151
|
-
const appDir = path.join(srcDir, "app");
|
|
152
156
|
const stepsPath = path.join(
|
|
153
157
|
appDir,
|
|
154
158
|
".well-known",
|
|
@@ -203,4 +207,4 @@ function findAgentExports(ast) {
|
|
|
203
207
|
}
|
|
204
208
|
return exports2;
|
|
205
209
|
}
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL25leHQvbG9hZGVyLnRzIiwgIi4uLy4uL3BhY2thZ2UuanNvbiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyB0eXBlIE1vZHVsZSwgcGFyc2VTeW5jIH0gZnJvbSBcIkBzd2MvY29yZVwiO1xuaW1wb3J0IHBrZyBmcm9tIFwiLi4vLi4vcGFja2FnZS5qc29uXCI7XG5cbnR5cGUgTG9hZGVyT3B0aW9ucyA9IHtcbiAgZGVidWc/OiBib29sZWFuO1xufTtcblxudHlwZSBMb2FkZXJDb250ZXh0ID0ge1xuICByZXNvdXJjZVBhdGg6IHN0cmluZztcbiAgZ2V0T3B0aW9ucygpOiBMb2FkZXJPcHRpb25zO1xufTtcblxuY29uc3QgUEFDS0FHRV9OQU1FID0gcGtnLm5hbWU7XG5jb25zdCBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OID0gXCJ2MVwiO1xuY29uc3QgVFlQRVNDUklQVF9FWFRfUkVHRVggPSAvXFwuKHRzfHRzeHxtdHN8Y3RzKSQvO1xuXG4vKipcbiAqIFdlYnBhY2svVHVyYm9wYWNrIGxvYWRlciB0aGF0IHdpcmVzIHVwIGFnZW50LnJwYyBieSByZXF1aXJpbmcgc3RlcHMuanNcbiAqIGF0IHRoZSBFTkQgb2YgdGhlIGZpbGUuIFVzaW5nIHJlcXVpcmUoKSBhdm9pZHMgaW1wb3J0IGhvaXN0aW5nIGlzc3Vlcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWdlbnRScGNMb2FkZXIoXG4gIHRoaXM6IExvYWRlckNvbnRleHQsXG4gIHNvdXJjZTogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBjb25zdCB7IGRlYnVnIH0gPSB0aGlzLmdldE9wdGlvbnMoKTtcbiAgY29uc3QgbG9nID0gZGVidWdcbiAgICA/ICguLi5hcmdzOiB1bmtub3duW10pID0+IGNvbnNvbGUubG9nKFwiW2FnZW50LWxvYWRlcl1cIiwgLi4uYXJncylcbiAgICA6ICgpID0+IHVuZGVmaW5lZDtcblxuICBsb2coXCJwcm9jZXNzaW5nOlwiLCB0aGlzLnJlc291cmNlUGF0aCk7XG5cbiAgaWYgKCFzb3VyY2UuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSkge1xuICAgIGxvZyhcInNraXBwaW5nIC0gbm8gcGFja2FnZSBuYW1lXCIpO1xuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cblxuICBjb25zdCBmaWxlbmFtZSA9IHRoaXMucmVzb3VyY2VQYXRoO1xuICBjb25zdCBpc1R5cGVTY3JpcHQgPSBUWVBFU0NSSVBUX0VYVF9SRUdFWC50ZXN0KGZpbGVuYW1lKTtcblxuICBsZXQgYXN0OiBNb2R1bGU7XG4gIHRyeSB7XG4gICAgYXN0ID0gcGFyc2VTeW5jKHNvdXJjZSwge1xuICAgICAgc3ludGF4OiBpc1R5cGVTY3JpcHQgPyBcInR5cGVzY3JpcHRcIiA6IFwiZWNtYXNjcmlwdFwiLFxuICAgICAgdHN4OiBmaWxlbmFtZS5lbmRzV2l0aChcIi50c3hcIiksXG4gICAgICBqc3g6IGZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzeFwiKSxcbiAgICB9KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGNvbnN0IGFnZW50RXhwb3J0cyA9IGZpbmRBZ2VudEV4cG9ydHMoYXN0KTtcbiAgaWYgKGFnZW50RXhwb3J0cy5sZW5ndGggPT09IDApIHtcbiAgICBsb2coXCJza2lwcGluZyAtIG5vIGFnZW50IGV4cG9ydHNcIik7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGxvZyhcImZvdW5kIGFnZW50IGV4cG9ydHM6XCIsIGFnZW50RXhwb3J0cyk7XG5cbiAgLy8gQ2FsY3VsYXRlIHBhdGggdG8gc3RlcHMuanNcbiAgY29uc3QgZmlsZURpciA9IHBhdGguZGlybmFtZShmaWxlbmFtZSk7XG4gIGNvbnN0IHNyY0luZGV4ID0gZmlsZW5hbWUubGFzdEluZGV4T2YoYCR7cGF0aC5zZXB9c3JjJHtwYXRoLnNlcH1gKTtcbiAgaWYgKHNyY0luZGV4ID09PSAtMSkge1xuICAgIGxvZyhcInNraXBwaW5nIC0gbm8gc3JjIGRpciBmb3VuZFwiKTtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgY29uc3Qgc3JjRGlyID0gZmlsZW5hbWUuc3Vic3RyaW5nKDAsIHNyY0luZGV4ICsgNCk7XG4gIGNvbnN0IGFwcERpciA9IHBhdGguam9pbihzcmNEaXIsIFwiYXBwXCIpO1xuICBjb25zdCBzdGVwc1BhdGggPSBwYXRoLmpvaW4oXG4gICAgYXBwRGlyLFxuICAgIFwiLndlbGwta25vd25cIixcbiAgICBcImFnZW50XCIsXG4gICAgQUdFTlRfUFJPVE9DT0xfVkVSU0lPTixcbiAgICBcInN0ZXBzLmpzXCJcbiAgKTtcbiAgbGV0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUoZmlsZURpciwgc3RlcHNQYXRoKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcblxuICBpZiAoIShyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIi4vXCIpIHx8IHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiLi4vXCIpKSkge1xuICAgIHJlbGF0aXZlUGF0aCA9IGAuLyR7cmVsYXRpdmVQYXRofWA7XG4gIH1cblxuICAvLyBJbXBvcnQgdGhlIGluaXQgZnVuY3Rpb24gZnJvbSBzdGVwcy5qcyBhbmQgY2FsbCBpdCBmb3IgZWFjaCBhZ2VudFxuICAvLyBzdGVwcy5qcyBubyBsb25nZXIgaW1wb3J0cyB0aGUgYWdlbnQsIHNvIG5vIGNpcmN1bGFyIGRlcGVuZGVuY3lcbiAgY29uc3QgaW5pdENhbGxzID0gYWdlbnRFeHBvcnRzXG4gICAgLm1hcCgobmFtZSkgPT4ge1xuICAgICAgY29uc3QgaW5pdE5hbWUgPSBgX19pbml0JHtuYW1lWzBdLnRvVXBwZXJDYXNlKCl9JHtuYW1lLnNsaWNlKDEpfWA7XG4gICAgICByZXR1cm4gYCR7aW5pdE5hbWV9KCR7bmFtZX0pO2A7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICBjb25zdCBpbml0SW1wb3J0cyA9IGFnZW50RXhwb3J0c1xuICAgIC5tYXAoKG5hbWUpID0+IGBfX2luaXQke25hbWVbMF0udG9VcHBlckNhc2UoKX0ke25hbWUuc2xpY2UoMSl9YClcbiAgICAuam9pbihcIiwgXCIpO1xuXG4gIGxvZyhcImluamVjdGluZyBpbml0IGNhbGxzIGZvcjpcIiwgYWdlbnRFeHBvcnRzKTtcbiAgcmV0dXJuIGAke3NvdXJjZX1cbmltcG9ydCB7ICR7aW5pdEltcG9ydHN9IH0gZnJvbSBcIiR7cmVsYXRpdmVQYXRofVwiO1xuJHtpbml0Q2FsbHN9YDtcbn1cblxuZnVuY3Rpb24gZmluZEFnZW50RXhwb3J0cyhhc3Q6IE1vZHVsZSk6IHN0cmluZ1tdIHtcbiAgbGV0IGFnZW50TG9jYWxOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXN0LmJvZHkpIHtcbiAgICBpZiAoXG4gICAgICBpdGVtLnR5cGUgPT09IFwiSW1wb3J0RGVjbGFyYXRpb25cIiAmJlxuICAgICAgaXRlbS5zb3VyY2UudmFsdWUgPT09IFBBQ0tBR0VfTkFNRVxuICAgICkge1xuICAgICAgZm9yIChjb25zdCBzcGVjaWZpZXIgb2YgaXRlbS5zcGVjaWZpZXJzKSB7XG4gICAgICAgIGlmIChzcGVjaWZpZXIudHlwZSA9PT0gXCJJbXBvcnRTcGVjaWZpZXJcIikge1xuICAgICAgICAgIGNvbnN0IGltcG9ydGVkID1cbiAgICAgICAgICAgIHNwZWNpZmllci5pbXBvcnRlZD8udHlwZSA9PT0gXCJJZGVudGlmaWVyXCJcbiAgICAgICAgICAgICAgPyBzcGVjaWZpZXIuaW1wb3J0ZWQudmFsdWVcbiAgICAgICAgICAgICAgOiBzcGVjaWZpZXIubG9jYWwudmFsdWU7XG5cbiAgICAgICAgICBpZiAoaW1wb3J0ZWQgPT09IFwiYWdlbnRcIikge1xuICAgICAgICAgICAgYWdlbnRMb2NhbE5hbWUgPSBzcGVjaWZpZXIubG9jYWwudmFsdWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoIWFnZW50TG9jYWxOYW1lKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgZXhwb3J0czogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXN0LmJvZHkpIHtcbiAgICBpZiAoaXRlbS50eXBlID09PSBcIkV4cG9ydERlY2xhcmF0aW9uXCIgJiYgaXRlbS5kZWNsYXJhdGlvbikge1xuICAgICAgY29uc3QgZGVjbCA9IGl0ZW0uZGVjbGFyYXRpb247XG4gICAgICBpZiAoZGVjbC50eXBlID09PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIikge1xuICAgICAgICBmb3IgKGNvbnN0IGRlY2xhcmF0b3Igb2YgZGVjbC5kZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBkZWNsYXJhdG9yLmlkLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgICAgICAgICBkZWNsYXJhdG9yLmluaXQ/LnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJlxuICAgICAgICAgICAgZGVjbGFyYXRvci5pbml0LmNhbGxlZS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgICAgICAgICAgZGVjbGFyYXRvci5pbml0LmNhbGxlZS52YWx1ZSA9PT0gYWdlbnRMb2NhbE5hbWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGV4cG9ydHMucHVzaChkZWNsYXJhdG9yLmlkLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXhwb3J0cztcbn1cbiIsICJ7XG4gIFwibmFtZVwiOiBcImV4cGVyaW1lbnRhbC1hZ2VudFwiLFxuICBcInZlcnNpb25cIjogXCIwLjEuM1wiLFxuICBcIm1haW5cIjogXCIuL2Rpc3QvaW5kZXguanNcIixcbiAgXCJtb2R1bGVcIjogXCIuL2Rpc3QvaW5kZXgubWpzXCIsXG4gIFwidHlwZXNcIjogXCIuL2Rpc3QvaW5kZXguZC50c1wiLFxuICBcInNpZGVFZmZlY3RzXCI6IHRydWUsXG4gIFwibGljZW5zZVwiOiBcIk1JVFwiLFxuICBcImZpbGVzXCI6IFtcbiAgICBcImRpc3QvKipcIlxuICBdLFxuICBcImV4cG9ydHNcIjoge1xuICAgIFwiLlwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2luZGV4Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L2luZGV4LmpzXCJcbiAgICB9LFxuICAgIFwiLi9uZXh0XCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbmV4dC5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9uZXh0Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L25leHQuanNcIlxuICAgIH0sXG4gICAgXCIuL25leHQvbG9hZGVyXCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIuanNcIlxuICAgIH0sXG4gICAgXCIuL2NsaWVudFwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2NsaWVudC5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9jbGllbnQubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvY2xpZW50LmpzXCJcbiAgICB9XG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJidWlsZFwiOiBcInRzdXBcIixcbiAgICBcImRldlwiOiBcInRzdXAgLS13YXRjaFwiLFxuICAgIFwiY2xlYW5cIjogXCJybSAtcmYgLnR1cmJvICYmIHJtIC1yZiBub2RlX21vZHVsZXMgJiYgcm0gLXJmIGRpc3RcIixcbiAgICBcInJlbGVhc2VcIjogXCJwbnBtIGJ1aWxkICYmIG5wbSBwdWJsaXNoXCIsXG4gICAgXCJ0eXBlY2hlY2tcIjogXCJ0c2MgLS1ub0VtaXRcIixcbiAgICBcInRlc3RcIjogXCJ2aXRlc3QgcnVuXCIsXG4gICAgXCJ0ZXN0OndhdGNoXCI6IFwidml0ZXN0XCJcbiAgfSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGhvbm8vbm9kZS1zZXJ2ZXJcIjogXCJeMS4xOS45XCIsXG4gICAgXCJAc3djL2NvcmVcIjogXCJeMS4xMC4wXCIsXG4gICAgXCJAdmVyY2VsL29pZGNcIjogXCJeMy4xLjBcIixcbiAgICBcImJldHRlci1hbGxcIjogXCJeMC4wLjVcIixcbiAgICBcImVycm9yZVwiOiBcIl4wLjguMlwiLFxuICAgIFwiZmFzdC1kZWVwLWVxdWFsXCI6IFwiXjMuMS4zXCIsXG4gICAgXCJnbG9iXCI6IFwiXjExLjAuMFwiLFxuICAgIFwiaG9ub1wiOiBcIl40LjExLjZcIixcbiAgICBcIkB2ZXJjZWwvc2FuZGJveFwiOiBcIl4xLjUuMFwiLFxuICAgIFwidWxpZFwiOiBcIl4zLjAuMlwiLFxuICAgIFwiem9kXCI6IFwiXjQuMy42XCJcbiAgfSxcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGFnZW50L3RzY29uZmlnXCI6IFwid29ya3NwYWNlOipcIixcbiAgICBcIkB0eXBlcy9ub2RlXCI6IFwiXjIwLjExLjI0XCIsXG4gICAgXCJkb3RlbnZcIjogXCJeMTcuMi4zXCIsXG4gICAgXCJuZXh0XCI6IFwiXjE2LjAuMFwiLFxuICAgIFwidHN1cFwiOiBcIl44LjAuMlwiLFxuICAgIFwidHlwZS1mZXN0XCI6IFwiXjUuNC4yXCIsXG4gICAgXCJ0eXBlc2NyaXB0XCI6IFwiNS41LjRcIixcbiAgICBcInZpdGVzdFwiOiBcIl4zLjAuMFwiXG4gIH0sXG4gIFwicGVlckRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJhaVwiOiBcIl42LjAuMFwiLFxuICAgIFwid29ya2Zsb3dcIjogXCIqXCJcbiAgfSxcbiAgXCJwdWJsaXNoQ29uZmlnXCI6IHtcbiAgICBcImFjY2Vzc1wiOiBcInB1YmxpY1wiXG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUFzQjtBQUN0QixrQkFBdUM7OztBQ0R2QztBQUFBLEVBQ0UsTUFBUTtBQUFBLEVBQ1IsU0FBVztBQUFBLEVBQ1gsTUFBUTtBQUFBLEVBQ1IsUUFBVTtBQUFBLEVBQ1YsT0FBUztBQUFBLEVBQ1QsYUFBZTtBQUFBLEVBQ2YsU0FBVztBQUFBLEVBQ1gsT0FBUztBQUFBLElBQ1A7QUFBQSxFQUNGO0FBQUEsRUFDQSxTQUFXO0FBQUEsSUFDVCxLQUFLO0FBQUEsTUFDSCxPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLGlCQUFpQjtBQUFBLE1BQ2YsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLFlBQVk7QUFBQSxNQUNWLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsRUFDRjtBQUFBLEVBQ0EsU0FBVztBQUFBLElBQ1QsT0FBUztBQUFBLElBQ1QsS0FBTztBQUFBLElBQ1AsT0FBUztBQUFBLElBQ1QsU0FBVztBQUFBLElBQ1gsV0FBYTtBQUFBLElBQ2IsTUFBUTtBQUFBLElBQ1IsY0FBYztBQUFBLEVBQ2hCO0FBQUEsRUFDQSxjQUFnQjtBQUFBLElBQ2QscUJBQXFCO0FBQUEsSUFDckIsYUFBYTtBQUFBLElBQ2IsZ0JBQWdCO0FBQUEsSUFDaEIsY0FBYztBQUFBLElBQ2QsUUFBVTtBQUFBLElBQ1YsbUJBQW1CO0FBQUEsSUFDbkIsTUFBUTtBQUFBLElBQ1IsTUFBUTtB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
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL25leHQvbG9hZGVyLnRzIiwgIi4uLy4uL3BhY2thZ2UuanNvbiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyB0eXBlIE1vZHVsZSwgcGFyc2VTeW5jIH0gZnJvbSBcIkBzd2MvY29yZVwiO1xuaW1wb3J0IHBrZyBmcm9tIFwiLi4vLi4vcGFja2FnZS5qc29uXCI7XG5cbnR5cGUgTG9hZGVyT3B0aW9ucyA9IHtcbiAgZGVidWc/OiBib29sZWFuO1xufTtcblxudHlwZSBMb2FkZXJDb250ZXh0ID0ge1xuICByZXNvdXJjZVBhdGg6IHN0cmluZztcbiAgZ2V0T3B0aW9ucygpOiBMb2FkZXJPcHRpb25zO1xufTtcblxuY29uc3QgUEFDS0FHRV9OQU1FID0gcGtnLm5hbWU7XG5jb25zdCBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OID0gXCJ2MVwiO1xuY29uc3QgVFlQRVNDUklQVF9FWFRfUkVHRVggPSAvXFwuKHRzfHRzeHxtdHN8Y3RzKSQvO1xuXG4vKipcbiAqIFdlYnBhY2svVHVyYm9wYWNrIGxvYWRlciB0aGF0IHdpcmVzIHVwIGFnZW50LnJwYyBieSByZXF1aXJpbmcgc3RlcHMuanNcbiAqIGF0IHRoZSBFTkQgb2YgdGhlIGZpbGUuIFVzaW5nIHJlcXVpcmUoKSBhdm9pZHMgaW1wb3J0IGhvaXN0aW5nIGlzc3Vlcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWdlbnRScGNMb2FkZXIoXG4gIHRoaXM6IExvYWRlckNvbnRleHQsXG4gIHNvdXJjZTogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBjb25zdCB7IGRlYnVnIH0gPSB0aGlzLmdldE9wdGlvbnMoKTtcbiAgY29uc3QgbG9nID0gZGVidWdcbiAgICA/ICguLi5hcmdzOiB1bmtub3duW10pID0+IGNvbnNvbGUubG9nKFwiW2FnZW50LWxvYWRlcl1cIiwgLi4uYXJncylcbiAgICA6ICgpID0+IHVuZGVmaW5lZDtcblxuICBsb2coXCJwcm9jZXNzaW5nOlwiLCB0aGlzLnJlc291cmNlUGF0aCk7XG5cbiAgaWYgKCFzb3VyY2UuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSkge1xuICAgIGxvZyhcInNraXBwaW5nIC0gbm8gcGFja2FnZSBuYW1lXCIpO1xuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cblxuICBjb25zdCBmaWxlbmFtZSA9IHRoaXMucmVzb3VyY2VQYXRoO1xuICBjb25zdCBpc1R5cGVTY3JpcHQgPSBUWVBFU0NSSVBUX0VYVF9SRUdFWC50ZXN0KGZpbGVuYW1lKTtcblxuICBsZXQgYXN0OiBNb2R1bGU7XG4gIHRyeSB7XG4gICAgYXN0ID0gcGFyc2VTeW5jKHNvdXJjZSwge1xuICAgICAgc3ludGF4OiBpc1R5cGVTY3JpcHQgPyBcInR5cGVzY3JpcHRcIiA6IFwiZWNtYXNjcmlwdFwiLFxuICAgICAgdHN4OiBmaWxlbmFtZS5lbmRzV2l0aChcIi50c3hcIiksXG4gICAgICBqc3g6IGZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzeFwiKSxcbiAgICB9KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGNvbnN0IGFnZW50RXhwb3J0cyA9IGZpbmRBZ2VudEV4cG9ydHMoYXN0KTtcbiAgaWYgKGFnZW50RXhwb3J0cy5sZW5ndGggPT09IDApIHtcbiAgICBsb2coXCJza2lwcGluZyAtIG5vIGFnZW50IGV4cG9ydHNcIik7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGxvZyhcImZvdW5kIGFnZW50IGV4cG9ydHM6XCIsIGFnZW50RXhwb3J0cyk7XG5cbiAgLy8gQ2FsY3VsYXRlIHBhdGggdG8gc3RlcHMuanMuXG4gIC8vIFN1cHBvcnQgYm90aCBzcmMvIGxheW91dCAoPHJvb3Q+L3NyYy9hcHApIGFuZCByb290IGFwcC8gbGF5b3V0ICg8cm9vdD4vYXBwKS5cbiAgY29uc3QgZmlsZURpciA9IHBhdGguZGlybmFtZShmaWxlbmFtZSk7XG5cbiAgbGV0IGFwcERpcjogc3RyaW5nO1xuICBjb25zdCBzcmNJbmRleCA9IGZpbGVuYW1lLmxhc3RJbmRleE9mKGAke3BhdGguc2VwfXNyYyR7cGF0aC5zZXB9YCk7XG4gIGlmIChzcmNJbmRleCAhPT0gLTEpIHtcbiAgICAvLyBQcm9qZWN0IHVzZXMgc3JjLyBsYXlvdXQ6IHJlc29sdmUgYXBwLyByZWxhdGl2ZSB0byBzcmMvXG4gICAgY29uc3Qgc3JjRGlyID0gZmlsZW5hbWUuc3Vic3RyaW5nKDAsIHNyY0luZGV4ICsgNCk7XG4gICAgYXBwRGlyID0gcGF0aC5qb2luKHNyY0RpciwgXCJhcHBcIik7XG4gIH0gZWxzZSB7XG4gICAgLy8gUHJvamVjdCB1c2VzIHJvb3QtbGV2ZWwgYXBwLyBsYXlvdXQuXG4gICAgLy8gV2FsayB1cCBmcm9tIHRoZSBmaWxlIHRvIGZpbmQgdGhlIGFwcC8gc2VnbWVudCBpbiB0aGUgcGF0aC5cbiAgICBjb25zdCBhcHBTZXAgPSBgJHtwYXRoLnNlcH1hcHAke3BhdGguc2VwfWA7XG4gICAgY29uc3QgYXBwSW5kZXggPSBmaWxlbmFtZS5sYXN0SW5kZXhPZihhcHBTZXApO1xuICAgIGlmIChhcHBJbmRleCAhPT0gLTEpIHtcbiAgICAgIGFwcERpciA9IGZpbGVuYW1lLnN1YnN0cmluZygwLCBhcHBJbmRleCArIGFwcFNlcC5sZW5ndGggLSAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nKFwic2tpcHBpbmcgLSBubyBzcmMvIG9yIGFwcC8gZGlyIGZvdW5kXCIpO1xuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdGVwc1BhdGggPSBwYXRoLmpvaW4oXG4gICAgYXBwRGlyLFxuICAgIFwiLndlbGwta25vd25cIixcbiAgICBcImFnZW50XCIsXG4gICAgQUdFTlRfUFJPVE9DT0xfVkVSU0lPTixcbiAgICBcInN0ZXBzLmpzXCJcbiAgKTtcbiAgbGV0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUoZmlsZURpciwgc3RlcHNQYXRoKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcblxuICBpZiAoIShyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIi4vXCIpIHx8IHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiLi4vXCIpKSkge1xuICAgIHJlbGF0aXZlUGF0aCA9IGAuLyR7cmVsYXRpdmVQYXRofWA7XG4gIH1cblxuICAvLyBJbXBvcnQgdGhlIGluaXQgZnVuY3Rpb24gZnJvbSBzdGVwcy5qcyBhbmQgY2FsbCBpdCBmb3IgZWFjaCBhZ2VudFxuICAvLyBzdGVwcy5qcyBubyBsb25nZXIgaW1wb3J0cyB0aGUgYWdlbnQsIHNvIG5vIGNpcmN1bGFyIGRlcGVuZGVuY3lcbiAgY29uc3QgaW5pdENhbGxzID0gYWdlbnRFeHBvcnRzXG4gICAgLm1hcCgobmFtZSkgPT4ge1xuICAgICAgY29uc3QgaW5pdE5hbWUgPSBgX19pbml0JHtuYW1lWzBdLnRvVXBwZXJDYXNlKCl9JHtuYW1lLnNsaWNlKDEpfWA7XG4gICAgICByZXR1cm4gYCR7aW5pdE5hbWV9KCR7bmFtZX0pO2A7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICBjb25zdCBpbml0SW1wb3J0cyA9IGFnZW50RXhwb3J0c1xuICAgIC5tYXAoKG5hbWUpID0+IGBfX2luaXQke25hbWVbMF0udG9VcHBlckNhc2UoKX0ke25hbWUuc2xpY2UoMSl9YClcbiAgICAuam9pbihcIiwgXCIpO1xuXG4gIGxvZyhcImluamVjdGluZyBpbml0IGNhbGxzIGZvcjpcIiwgYWdlbnRFeHBvcnRzKTtcbiAgcmV0dXJuIGAke3NvdXJjZX1cbmltcG9ydCB7ICR7aW5pdEltcG9ydHN9IH0gZnJvbSBcIiR7cmVsYXRpdmVQYXRofVwiO1xuJHtpbml0Q2FsbHN9YDtcbn1cblxuZnVuY3Rpb24gZmluZEFnZW50RXhwb3J0cyhhc3Q6IE1vZHVsZSk6IHN0cmluZ1tdIHtcbiAgbGV0IGFnZW50TG9jYWxOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXN0LmJvZHkpIHtcbiAgICBpZiAoXG4gICAgICBpdGVtLnR5cGUgPT09IFwiSW1wb3J0RGVjbGFyYXRpb25cIiAmJlxuICAgICAgaXRlbS5zb3VyY2UudmFsdWUgPT09IFBBQ0tBR0VfTkFNRVxuICAgICkge1xuICAgICAgZm9yIChjb25zdCBzcGVjaWZpZXIgb2YgaXRlbS5zcGVjaWZpZXJzKSB7XG4gICAgICAgIGlmIChzcGVjaWZpZXIudHlwZSA9PT0gXCJJbXBvcnRTcGVjaWZpZXJcIikge1xuICAgICAgICAgIGNvbnN0IGltcG9ydGVkID1cbiAgICAgICAgICAgIHNwZWNpZmllci5pbXBvcnRlZD8udHlwZSA9PT0gXCJJZGVudGlmaWVyXCJcbiAgICAgICAgICAgICAgPyBzcGVjaWZpZXIuaW1wb3J0ZWQudmFsdWVcbiAgICAgICAgICAgICAgOiBzcGVjaWZpZXIubG9jYWwudmFsdWU7XG5cbiAgICAgICAgICBpZiAoaW1wb3J0ZWQgPT09IFwiYWdlbnRcIikge1xuICAgICAgICAgICAgYWdlbnRMb2NhbE5hbWUgPSBzcGVjaWZpZXIubG9jYWwudmFsdWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoIWFnZW50TG9jYWxOYW1lKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgZXhwb3J0czogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXN0LmJvZHkpIHtcbiAgICBpZiAoaXRlbS50eXBlID09PSBcIkV4cG9ydERlY2xhcmF0aW9uXCIgJiYgaXRlbS5kZWNsYXJhdGlvbikge1xuICAgICAgY29uc3QgZGVjbCA9IGl0ZW0uZGVjbGFyYXRpb247XG4gICAgICBpZiAoZGVjbC50eXBlID09PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIikge1xuICAgICAgICBmb3IgKGNvbnN0IGRlY2xhcmF0b3Igb2YgZGVjbC5kZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBkZWNsYXJhdG9yLmlkLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgICAgICAgICBkZWNsYXJhdG9yLmluaXQ/LnR5cGUgPT09IFwiQ2FsbEV4cHJlc3Npb25cIiAmJlxuICAgICAgICAgICAgZGVjbGFyYXRvci5pbml0LmNhbGxlZS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgICAgICAgICAgZGVjbGFyYXRvci5pbml0LmNhbGxlZS52YWx1ZSA9PT0gYWdlbnRMb2NhbE5hbWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGV4cG9ydHMucHVzaChkZWNsYXJhdG9yLmlkLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXhwb3J0cztcbn1cbiIsICJ7XG4gIFwibmFtZVwiOiBcImV4cGVyaW1lbnRhbC1hZ2VudFwiLFxuICBcInZlcnNpb25cIjogXCIwLjIuMFwiLFxuICBcIm1haW5cIjogXCIuL2Rpc3QvaW5kZXguanNcIixcbiAgXCJtb2R1bGVcIjogXCIuL2Rpc3QvaW5kZXgubWpzXCIsXG4gIFwidHlwZXNcIjogXCIuL2Rpc3QvaW5kZXguZC50c1wiLFxuICBcInNpZGVFZmZlY3RzXCI6IHRydWUsXG4gIFwibGljZW5zZVwiOiBcIk1JVFwiLFxuICBcImZpbGVzXCI6IFtcbiAgICBcImRpc3QvKipcIlxuICBdLFxuICBcImV4cG9ydHNcIjoge1xuICAgIFwiLlwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2luZGV4Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L2luZGV4LmpzXCJcbiAgICB9LFxuICAgIFwiLi9uZXh0XCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbmV4dC5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9uZXh0Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L25leHQuanNcIlxuICAgIH0sXG4gICAgXCIuL25leHQvbG9hZGVyXCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIuanNcIlxuICAgIH0sXG4gICAgXCIuL2NsaWVudFwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2NsaWVudC5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9jbGllbnQubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvY2xpZW50LmpzXCJcbiAgICB9XG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJidWlsZFwiOiBcInRzdXBcIixcbiAgICBcImRldlwiOiBcInRzdXAgLS13YXRjaFwiLFxuICAgIFwiY2xlYW5cIjogXCJybSAtcmYgLnR1cmJvICYmIHJtIC1yZiBub2RlX21vZHVsZXMgJiYgcm0gLXJmIGRpc3RcIixcbiAgICBcInJlbGVhc2VcIjogXCJwbnBtIGJ1aWxkICYmIG5wbSBwdWJsaXNoXCIsXG4gICAgXCJ0eXBlY2hlY2tcIjogXCJ0c2MgLS1ub0VtaXRcIixcbiAgICBcInRlc3RcIjogXCJ2aXRlc3QgcnVuXCIsXG4gICAgXCJ0ZXN0OndhdGNoXCI6IFwidml0ZXN0XCJcbiAgfSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQHN3Yy9jb3JlXCI6IFwiXjEuMTAuMFwiLFxuICAgIFwiQHZlcmNlbC9vaWRjXCI6IFwiXjMuMS4wXCIsXG4gICAgXCJiZXR0ZXItYWxsXCI6IFwiXjAuMC41XCIsXG4gICAgXCJlcnJvcmVcIjogXCJeMC44LjJcIixcbiAgICBcImZhc3QtZGVlcC1lcXVhbFwiOiBcIl4zLjEuM1wiLFxuICAgIFwiQHZlcmNlbC9zYW5kYm94XCI6IFwiMS43LjFcIixcbiAgICBcInVsaWRcIjogXCJeMy4wLjJcIixcbiAgICBcInpvZFwiOiBcIl40LjMuNlwiXG4gIH0sXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBhZ2VudC90c2NvbmZpZ1wiOiBcIndvcmtzcGFjZToqXCIsXG4gICAgXCJAdHlwZXMvbm9kZVwiOiBcIl4yMC4xMS4yNFwiLFxuICAgIFwiZG90ZW52XCI6IFwiXjE3LjIuM1wiLFxuICAgIFwibmV4dFwiOiBcIl4xNi4wLjBcIixcbiAgICBcInRzdXBcIjogXCJeOC4wLjJcIixcbiAgICBcInR5cGVzY3JpcHRcIjogXCI1LjUuNFwiLFxuICAgIFwidml0ZXN0XCI6IFwiXjMuMC4wXCJcbiAgfSxcbiAgXCJwZWVyRGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImFpXCI6IFwiXjYuMC4wXCIsXG4gICAgXCJ3b3JrZmxvd1wiOiBcIipcIlxuICB9LFxuICBcInB1Ymxpc2hDb25maWdcIjoge1xuICAgIFwiYWNjZXNzXCI6IFwicHVibGljXCJcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQXNCO0FBQ3RCLGtCQUF1Qzs7O0FDRHZDO0FBQUEsRUFDRSxNQUFRO0FBQUEsRUFDUixTQUFXO0FBQUEsRUFDWCxNQUFRO0FBQUEsRUFDUixRQUFVO0FBQUEsRUFDVixPQUFTO0FBQUEsRUFDVCxhQUFlO0FBQUEsRUFDZixTQUFXO0FBQUEsRUFDWCxPQUFTO0FBQUEsSUFDUDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFNBQVc7QUFBQSxJQUNULEtBQUs7QUFBQSxNQUNILE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLElBQ0EsaUJBQWlCO0FBQUEsTUFDZixPQUFT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RSxNQUFJLEVBQUUsYUFBYSxXQUFXLElBQUksS0FBSyxhQUFhLFdBQVcsS0FBSyxJQUFJO0FBQ3RFLG1CQUFlLEtBQUssWUFBWTtBQUFBLEVBQ2xDO0FBSUEsUUFBTSxZQUFZLGFBQ2YsSUFBSSxDQUFDLFNBQVM7QUFDYixVQUFNLFdBQVcsU0FBUyxLQUFLLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDO0FBQy9ELFdBQU8sR0FBRyxRQUFRLElBQUksSUFBSTtBQUFBLEVBQzVCLENBQUMsRUFDQSxLQUFLLElBQUk7QUFFWixRQUFNLGNBQWMsYUFDakIsSUFBSSxDQUFDLFNBQVMsU0FBUyxLQUFLLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFDOUQsS0FBSyxJQUFJO0FBRVosTUFBSSw2QkFBNkIsWUFBWTtBQUM3QyxTQUFPLEdBQUcsTUFBTTtBQUFBLFdBQ1AsV0FBVyxZQUFZLFlBQVk7QUFBQSxFQUM1QyxTQUFTO0FBQ1g7QUFFQSxTQUFTLGlCQUFpQixLQUF1QjtBQUMvQyxNQUFJLGlCQUFnQztBQUVwQyxhQUFXLFFBQVEsSUFBSSxNQUFNO0FBQzNCLFFBQ0UsS0FBSyxTQUFTLHVCQUNkLEtBQUssT0FBTyxVQUFVLGNBQ3RCO0FBQ0EsaUJBQVcsYUFBYSxLQUFLLFlBQVk7QUFDdkMsWUFBSSxVQUFVLFNBQVMsbUJBQW1CO0FBQ3hDLGdCQUFNLFdBQ0osVUFBVSxVQUFVLFNBQVMsZUFDekIsVUFBVSxTQUFTLFFBQ25CLFVBQVUsTUFBTTtBQUV0QixjQUFJLGFBQWEsU0FBUztBQUN4Qiw2QkFBaUIsVUFBVSxNQUFNO0FBQ2pDO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxNQUFJLENBQUMsZ0JBQWdCO0FBQ25CLFdBQU8sQ0FBQztBQUFBLEVBQ1Y7QUFFQSxRQUFNQSxXQUFvQixDQUFDO0FBRTNCLGFBQVcsUUFBUSxJQUFJLE1BQU07QUFDM0IsUUFBSSxLQUFLLFNBQVMsdUJBQXVCLEtBQUssYUFBYTtBQUN6RCxZQUFNLE9BQU8sS0FBSztBQUNsQixVQUFJLEtBQUssU0FBUyx1QkFBdUI7QUFDdkMsbUJBQVcsY0FBYyxLQUFLLGNBQWM7QUFDMUMsY0FDRSxXQUFXLEdBQUcsU0FBUyxnQkFDdkIsV0FBVyxNQUFNLFNBQVMsb0JBQzFCLFdBQVcsS0FBSyxPQUFPLFNBQVMsZ0JBQ2hDLFdBQVcsS0FBSyxPQUFPLFVBQVUsZ0JBQ2pDO0FBQ0EsWUFBQUEsU0FBUSxLQUFLLFdBQVcsR0FBRyxLQUFLO0FBQUEsVUFDbEM7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsU0FBT0E7QUFDVDsiLAogICJuYW1lcyI6IFsiZXhwb3J0cyJdCn0K
|
package/dist/next/loader.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
package_default
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-GL7Q3MDU.mjs";
|
|
4
4
|
import "../chunk-BJTO5JO5.mjs";
|
|
5
5
|
|
|
6
6
|
// src/next/loader.ts
|
|
@@ -36,13 +36,21 @@ function agentRpcLoader(source) {
|
|
|
36
36
|
}
|
|
37
37
|
log("found agent exports:", agentExports);
|
|
38
38
|
const fileDir = path.dirname(filename);
|
|
39
|
+
let appDir;
|
|
39
40
|
const srcIndex = filename.lastIndexOf(`${path.sep}src${path.sep}`);
|
|
40
|
-
if (srcIndex
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
if (srcIndex !== -1) {
|
|
42
|
+
const srcDir = filename.substring(0, srcIndex + 4);
|
|
43
|
+
appDir = path.join(srcDir, "app");
|
|
44
|
+
} else {
|
|
45
|
+
const appSep = `${path.sep}app${path.sep}`;
|
|
46
|
+
const appIndex = filename.lastIndexOf(appSep);
|
|
47
|
+
if (appIndex !== -1) {
|
|
48
|
+
appDir = filename.substring(0, appIndex + appSep.length - 1);
|
|
49
|
+
} else {
|
|
50
|
+
log("skipping - no src/ or app/ dir found");
|
|
51
|
+
return source;
|
|
52
|
+
}
|
|
43
53
|
}
|
|
44
|
-
const srcDir = filename.substring(0, srcIndex + 4);
|
|
45
|
-
const appDir = path.join(srcDir, "app");
|
|
46
54
|
const stepsPath = path.join(
|
|
47
55
|
appDir,
|
|
48
56
|
".well-known",
|
|
@@ -100,4 +108,4 @@ function findAgentExports(ast) {
|
|
|
100
108
|
export {
|
|
101
109
|
agentRpcLoader as default
|
|
102
110
|
};
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL25leHQvbG9hZGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHR5cGUgTW9kdWxlLCBwYXJzZVN5bmMgfSBmcm9tIFwiQHN3Yy9jb3JlXCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIjtcblxudHlwZSBMb2FkZXJPcHRpb25zID0ge1xuICBkZWJ1Zz86IGJvb2xlYW47XG59O1xuXG50eXBlIExvYWRlckNvbnRleHQgPSB7XG4gIHJlc291cmNlUGF0aDogc3RyaW5nO1xuICBnZXRPcHRpb25zKCk6IExvYWRlck9wdGlvbnM7XG59O1xuXG5jb25zdCBQQUNLQUdFX05BTUUgPSBwa2cubmFtZTtcbmNvbnN0IEFHRU5UX1BST1RPQ09MX1ZFUlNJT04gPSBcInYxXCI7XG5jb25zdCBUWVBFU0NSSVBUX0VYVF9SRUdFWCA9IC9cXC4odHN8dHN4fG10c3xjdHMpJC87XG5cbi8qKlxuICogV2VicGFjay9UdXJib3BhY2sgbG9hZGVyIHRoYXQgd2lyZXMgdXAgYWdlbnQucnBjIGJ5IHJlcXVpcmluZyBzdGVwcy5qc1xuICogYXQgdGhlIEVORCBvZiB0aGUgZmlsZS4gVXNpbmcgcmVxdWlyZSgpIGF2b2lkcyBpbXBvcnQgaG9pc3RpbmcgaXNzdWVzLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZ2VudFJwY0xvYWRlcihcbiAgdGhpczogTG9hZGVyQ29udGV4dCxcbiAgc291cmNlOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGNvbnN0IHsgZGVidWcgfSA9IHRoaXMuZ2V0T3B0aW9ucygpO1xuICBjb25zdCBsb2cgPSBkZWJ1Z1xuICAgID8gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gY29uc29sZS5sb2coXCJbYWdlbnQtbG9hZGVyXVwiLCAuLi5hcmdzKVxuICAgIDogKCkgPT4gdW5kZWZpbmVkO1xuXG4gIGxvZyhcInByb2Nlc3Npbmc6XCIsIHRoaXMucmVzb3VyY2VQYXRoKTtcblxuICBpZiAoIXNvdXJjZS5pbmNsdWRlcyhQQUNLQUdFX05BTUUpKSB7XG4gICAgbG9nKFwic2tpcHBpbmcgLSBubyBwYWNrYWdlIG5hbWVcIik7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGNvbnN0IGZpbGVuYW1lID0gdGhpcy5yZXNvdXJjZVBhdGg7XG4gIGNvbnN0IGlzVHlwZVNjcmlwdCA9IFRZUEVTQ1JJUFRfRVhUX1JFR0VYLnRlc3QoZmlsZW5hbWUpO1xuXG4gIGxldCBhc3Q6IE1vZHVsZTtcbiAgdHJ5IHtcbiAgICBhc3QgPSBwYXJzZVN5bmMoc291cmNlLCB7XG4gICAgICBzeW50YXg6IGlzVHlwZVNjcmlwdCA/
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL25leHQvbG9hZGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHR5cGUgTW9kdWxlLCBwYXJzZVN5bmMgfSBmcm9tIFwiQHN3Yy9jb3JlXCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIjtcblxudHlwZSBMb2FkZXJPcHRpb25zID0ge1xuICBkZWJ1Zz86IGJvb2xlYW47XG59O1xuXG50eXBlIExvYWRlckNvbnRleHQgPSB7XG4gIHJlc291cmNlUGF0aDogc3RyaW5nO1xuICBnZXRPcHRpb25zKCk6IExvYWRlck9wdGlvbnM7XG59O1xuXG5jb25zdCBQQUNLQUdFX05BTUUgPSBwa2cubmFtZTtcbmNvbnN0IEFHRU5UX1BST1RPQ09MX1ZFUlNJT04gPSBcInYxXCI7XG5jb25zdCBUWVBFU0NSSVBUX0VYVF9SRUdFWCA9IC9cXC4odHN8dHN4fG10c3xjdHMpJC87XG5cbi8qKlxuICogV2VicGFjay9UdXJib3BhY2sgbG9hZGVyIHRoYXQgd2lyZXMgdXAgYWdlbnQucnBjIGJ5IHJlcXVpcmluZyBzdGVwcy5qc1xuICogYXQgdGhlIEVORCBvZiB0aGUgZmlsZS4gVXNpbmcgcmVxdWlyZSgpIGF2b2lkcyBpbXBvcnQgaG9pc3RpbmcgaXNzdWVzLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZ2VudFJwY0xvYWRlcihcbiAgdGhpczogTG9hZGVyQ29udGV4dCxcbiAgc291cmNlOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGNvbnN0IHsgZGVidWcgfSA9IHRoaXMuZ2V0T3B0aW9ucygpO1xuICBjb25zdCBsb2cgPSBkZWJ1Z1xuICAgID8gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gY29uc29sZS5sb2coXCJbYWdlbnQtbG9hZGVyXVwiLCAuLi5hcmdzKVxuICAgIDogKCkgPT4gdW5kZWZpbmVkO1xuXG4gIGxvZyhcInByb2Nlc3Npbmc6XCIsIHRoaXMucmVzb3VyY2VQYXRoKTtcblxuICBpZiAoIXNvdXJjZS5pbmNsdWRlcyhQQUNLQUdFX05BTUUpKSB7XG4gICAgbG9nKFwic2tpcHBpbmcgLSBubyBwYWNrYWdlIG5hbWVcIik7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGNvbnN0IGZpbGVuYW1lID0gdGhpcy5yZXNvdXJjZVBhdGg7XG4gIGNvbnN0IGlzVHlwZVNjcmlwdCA9IFRZUEVTQ1JJUFRfRVhUX1JFR0VYLnRlc3QoZmlsZW5hbWUpO1xuXG4gIGxldCBhc3Q6IE1vZHVsZTtcbiAgdHJ5IHtcbiAgICBhc3QgPSBwYXJzZVN5bmMoc291cmNlLCB7XG4gICAgICBzeW50YXg6IGlzVHlwZVNjcmlwdCA/IFwidHlwZXNjcmlwdFwiIDogXCJlY21hc2NyaXB0XCIsXG4gICAgICB0c3g6IGZpbGVuYW1lLmVuZHNXaXRoKFwiLnRzeFwiKSxcbiAgICAgIGpzeDogZmlsZW5hbWUuZW5kc1dpdGgoXCIuanN4XCIpLFxuICAgIH0pO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgY29uc3QgYWdlbnRFeHBvcnRzID0gZmluZEFnZW50RXhwb3J0cyhhc3QpO1xuICBpZiAoYWdlbnRFeHBvcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZyhcInNraXBwaW5nIC0gbm8gYWdlbnQgZXhwb3J0c1wiKTtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgbG9nKFwiZm91bmQgYWdlbnQgZXhwb3J0czpcIiwgYWdlbnRFeHBvcnRzKTtcblxuICAvLyBDYWxjdWxhdGUgcGF0aCB0byBzdGVwcy5qcy5cbiAgLy8gU3VwcG9ydCBib3RoIHNyYy8gbGF5b3V0ICg8cm9vdD4vc3JjL2FwcCkgYW5kIHJvb3QgYXBwLyBsYXlvdXQgKDxyb290Pi9hcHApLlxuICBjb25zdCBmaWxlRGlyID0gcGF0aC5kaXJuYW1lKGZpbGVuYW1lKTtcblxuICBsZXQgYXBwRGlyOiBzdHJpbmc7XG4gIGNvbnN0IHNyY0luZGV4ID0gZmlsZW5hbWUubGFzdEluZGV4T2YoYCR7cGF0aC5zZXB9c3JjJHtwYXRoLnNlcH1gKTtcbiAgaWYgKHNyY0luZGV4ICE9PSAtMSkge1xuICAgIC8vIFByb2plY3QgdXNlcyBzcmMvIGxheW91dDogcmVzb2x2ZSBhcHAvIHJlbGF0aXZlIHRvIHNyYy9cbiAgICBjb25zdCBzcmNEaXIgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgc3JjSW5kZXggKyA0KTtcbiAgICBhcHBEaXIgPSBwYXRoLmpvaW4oc3JjRGlyLCBcImFwcFwiKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBQcm9qZWN0IHVzZXMgcm9vdC1sZXZlbCBhcHAvIGxheW91dC5cbiAgICAvLyBXYWxrIHVwIGZyb20gdGhlIGZpbGUgdG8gZmluZCB0aGUgYXBwLyBzZWdtZW50IGluIHRoZSBwYXRoLlxuICAgIGNvbnN0IGFwcFNlcCA9IGAke3BhdGguc2VwfWFwcCR7cGF0aC5zZXB9YDtcbiAgICBjb25zdCBhcHBJbmRleCA9IGZpbGVuYW1lLmxhc3RJbmRleE9mKGFwcFNlcCk7XG4gICAgaWYgKGFwcEluZGV4ICE9PSAtMSkge1xuICAgICAgYXBwRGlyID0gZmlsZW5hbWUuc3Vic3RyaW5nKDAsIGFwcEluZGV4ICsgYXBwU2VwLmxlbmd0aCAtIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2coXCJza2lwcGluZyAtIG5vIHNyYy8gb3IgYXBwLyBkaXIgZm91bmRcIik7XG4gICAgICByZXR1cm4gc291cmNlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0ZXBzUGF0aCA9IHBhdGguam9pbihcbiAgICBhcHBEaXIsXG4gICAgXCIud2VsbC1rbm93blwiLFxuICAgIFwiYWdlbnRcIixcbiAgICBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OLFxuICAgIFwic3RlcHMuanNcIlxuICApO1xuICBsZXQgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZShmaWxlRGlyLCBzdGVwc1BhdGgpLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuXG4gIGlmICghKHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiLi9cIikgfHwgcmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIuLi9cIikpKSB7XG4gICAgcmVsYXRpdmVQYXRoID0gYC4vJHtyZWxhdGl2ZVBhdGh9YDtcbiAgfVxuXG4gIC8vIEltcG9ydCB0aGUgaW5pdCBmdW5jdGlvbiBmcm9tIHN0ZXBzLmpzIGFuZCBjYWxsIGl0IGZvciBlYWNoIGFnZW50XG4gIC8vIHN0ZXBzLmpzIG5vIGxvbmdlciBpbXBvcnRzIHRoZSBhZ2VudCwgc28gbm8gY2lyY3VsYXIgZGVwZW5kZW5jeVxuICBjb25zdCBpbml0Q2FsbHMgPSBhZ2VudEV4cG9ydHNcbiAgICAubWFwKChuYW1lKSA9PiB7XG4gICAgICBjb25zdCBpbml0TmFtZSA9IGBfX2luaXQke25hbWVbMF0udG9VcHBlckNhc2UoKX0ke25hbWUuc2xpY2UoMSl9YDtcbiAgICAgIHJldHVybiBgJHtpbml0TmFtZX0oJHtuYW1lfSk7YDtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGNvbnN0IGluaXRJbXBvcnRzID0gYWdlbnRFeHBvcnRzXG4gICAgLm1hcCgobmFtZSkgPT4gYF9faW5pdCR7bmFtZVswXS50b1VwcGVyQ2FzZSgpfSR7bmFtZS5zbGljZSgxKX1gKVxuICAgIC5qb2luKFwiLCBcIik7XG5cbiAgbG9nKFwiaW5qZWN0aW5nIGluaXQgY2FsbHMgZm9yOlwiLCBhZ2VudEV4cG9ydHMpO1xuICByZXR1cm4gYCR7c291cmNlfVxuaW1wb3J0IHsgJHtpbml0SW1wb3J0c30gfSBmcm9tIFwiJHtyZWxhdGl2ZVBhdGh9XCI7XG4ke2luaXRDYWxsc31gO1xufVxuXG5mdW5jdGlvbiBmaW5kQWdlbnRFeHBvcnRzKGFzdDogTW9kdWxlKTogc3RyaW5nW10ge1xuICBsZXQgYWdlbnRMb2NhbE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGZvciAoY29uc3QgaXRlbSBvZiBhc3QuYm9keSkge1xuICAgIGlmIChcbiAgICAgIGl0ZW0udHlwZSA9PT0gXCJJbXBvcnREZWNsYXJhdGlvblwiICYmXG4gICAgICBpdGVtLnNvdXJjZS52YWx1ZSA9PT0gUEFDS0FHRV9OQU1FXG4gICAgKSB7XG4gICAgICBmb3IgKGNvbnN0IHNwZWNpZmllciBvZiBpdGVtLnNwZWNpZmllcnMpIHtcbiAgICAgICAgaWYgKHNwZWNpZmllci50eXBlID09PSBcIkltcG9ydFNwZWNpZmllclwiKSB7XG4gICAgICAgICAgY29uc3QgaW1wb3J0ZWQgPVxuICAgICAgICAgICAgc3BlY2lmaWVyLmltcG9ydGVkPy50eXBlID09PSBcIklkZW50aWZpZXJcIlxuICAgICAgICAgICAgICA/IHNwZWNpZmllci5pbXBvcnRlZC52YWx1ZVxuICAgICAgICAgICAgICA6IHNwZWNpZmllci5sb2NhbC52YWx1ZTtcblxuICAgICAgICAgIGlmIChpbXBvcnRlZCA9PT0gXCJhZ2VudFwiKSB7XG4gICAgICAgICAgICBhZ2VudExvY2FsTmFtZSA9IHNwZWNpZmllci5sb2NhbC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghYWdlbnRMb2NhbE5hbWUpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBleHBvcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgaXRlbSBvZiBhc3QuYm9keSkge1xuICAgIGlmIChpdGVtLnR5cGUgPT09IFwiRXhwb3J0RGVjbGFyYXRpb25cIiAmJiBpdGVtLmRlY2xhcmF0aW9uKSB7XG4gICAgICBjb25zdCBkZWNsID0gaXRlbS5kZWNsYXJhdGlvbjtcbiAgICAgIGlmIChkZWNsLnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSB7XG4gICAgICAgIGZvciAoY29uc3QgZGVjbGFyYXRvciBvZiBkZWNsLmRlY2xhcmF0aW9ucykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGRlY2xhcmF0b3IuaWQudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICAgICAgICAgIGRlY2xhcmF0b3IuaW5pdD8udHlwZSA9PT0gXCJDYWxsRXhwcmVzc2lvblwiICYmXG4gICAgICAgICAgICBkZWNsYXJhdG9yLmluaXQuY2FsbGVlLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgICAgICAgICBkZWNsYXJhdG9yLmluaXQuY2FsbGVlLnZhbHVlID09PSBhZ2VudExvY2FsTmFtZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZXhwb3J0cy5wdXNoKGRlY2xhcmF0b3IuaWQudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHBvcnRzO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7O0FBQUEsWUFBWSxVQUFVO0FBQ3RCLFNBQXNCLGlCQUFpQjtBQVl2QyxJQUFNLGVBQWUsZ0JBQUk7QUFDekIsSUFBTSx5QkFBeUI7QUFDL0IsSUFBTSx1QkFBdUI7QUFNZCxTQUFSLGVBRUwsUUFDUTtBQUNSLFFBQU0sRUFBRSxNQUFNLElBQUksS0FBSyxXQUFXO0FBQ2xDLFFBQU0sTUFBTSxRQUNSLElBQUksU0FBb0IsUUFBUSxJQUFJLGtCQUFrQixHQUFHLElBQUksSUFDN0QsTUFBTTtBQUVWLE1BQUksZUFBZSxLQUFLLFlBQVk7QUFFcEMsTUFBSSxDQUFDLE9BQU8sU0FBUyxZQUFZLEdBQUc7QUFDbEMsUUFBSSw0QkFBNEI7QUFDaEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFdBQVcsS0FBSztBQUN0QixRQUFNLGVBQWUscUJBQXFCLEtBQUssUUFBUTtBQUV2RCxNQUFJO0FBQ0osTUFBSTtBQUNGLFVBQU0sVUFBVSxRQUFRO0FBQUEsTUFDdEIsUUFBUSxlQUFlLGVBQWU7QUFBQSxNQUN0QyxLQUFLLFNBQVMsU0FBUyxNQUFNO0FBQUEsTUFDN0IsS0FBSyxTQUFTLFNBQVMsTUFBTTtBQUFBLElBQy9CLENBQUM7QUFBQSxFQUNILFFBQVE7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
|
package/dist/next.d.mts
CHANGED
package/dist/next.d.ts
CHANGED
package/dist/next.js
CHANGED
|
@@ -40,7 +40,7 @@ var path = __toESM(require("path"));
|
|
|
40
40
|
// package.json
|
|
41
41
|
var package_default = {
|
|
42
42
|
name: "experimental-agent",
|
|
43
|
-
version: "0.
|
|
43
|
+
version: "0.2.0",
|
|
44
44
|
main: "./dist/index.js",
|
|
45
45
|
module: "./dist/index.mjs",
|
|
46
46
|
types: "./dist/index.d.ts",
|
|
@@ -81,15 +81,12 @@ var package_default = {
|
|
|
81
81
|
"test:watch": "vitest"
|
|
82
82
|
},
|
|
83
83
|
dependencies: {
|
|
84
|
-
"@hono/node-server": "^1.19.9",
|
|
85
84
|
"@swc/core": "^1.10.0",
|
|
86
85
|
"@vercel/oidc": "^3.1.0",
|
|
87
86
|
"better-all": "^0.0.5",
|
|
88
87
|
errore: "^0.8.2",
|
|
89
88
|
"fast-deep-equal": "^3.1.3",
|
|
90
|
-
|
|
91
|
-
hono: "^4.11.6",
|
|
92
|
-
"@vercel/sandbox": "^1.5.0",
|
|
89
|
+
"@vercel/sandbox": "1.7.1",
|
|
93
90
|
ulid: "^3.0.2",
|
|
94
91
|
zod: "^4.3.6"
|
|
95
92
|
},
|
|
@@ -99,7 +96,6 @@ var package_default = {
|
|
|
99
96
|
dotenv: "^17.2.3",
|
|
100
97
|
next: "^16.0.0",
|
|
101
98
|
tsup: "^8.0.2",
|
|
102
|
-
"type-fest": "^5.4.2",
|
|
103
99
|
typescript: "5.5.4",
|
|
104
100
|
vitest: "^3.0.0"
|
|
105
101
|
},
|
|
@@ -254,9 +250,6 @@ export function GET() {
|
|
|
254
250
|
}
|
|
255
251
|
function withAgent(configOrFn, agentConfig) {
|
|
256
252
|
const debug = agentConfig?.debug ?? false;
|
|
257
|
-
if (debug) {
|
|
258
|
-
process.env.AGENT_DEBUG = "1";
|
|
259
|
-
}
|
|
260
253
|
const cwd = process.cwd();
|
|
261
254
|
const appDir = getAppDir(cwd);
|
|
262
255
|
const agentDir = `${appDir}/.well-known/agent/${AGENT_PROTOCOL_VERSION}`;
|
|
@@ -335,4 +328,4 @@ function withAgent(configOrFn, agentConfig) {
|
|
|
335
328
|
0 && (module.exports = {
|
|
336
329
|
withAgent
|
|
337
330
|
});
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25leHQvaW5kZXgudHMiLCAiLi4vcGFja2FnZS5qc29uIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE5leHRDb25maWcgfSBmcm9tIFwibmV4dFwiO1xuaW1wb3J0IHBrZyBmcm9tIFwiLi4vLi4vcGFja2FnZS5qc29uXCI7XG5cbmV4cG9ydCB0eXBlIFdpdGhBZ2VudENvbmZpZyA9IHtcbiAgLyoqIEVuYWJsZSBkZWJ1ZyBsb2dnaW5nICovXG4gIGRlYnVnPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IFBBQ0tBR0VfTkFNRSA9IHBrZy5uYW1lO1xuY29uc3QgQUdFTlRfUFJPVE9DT0xfVkVSU0lPTiA9IFwidjFcIjtcbmNvbnN0IEZJTEVfRVhUX1JFR0VYID0gL1xcLih0c3x0c3h8anN8anN4KSQvO1xuY29uc3QgQUdFTlRfRVhQT1JUX1JFR0VYID0gL2V4cG9ydFxccytjb25zdFxccysoXFx3KylcXHMqPVxccyphZ2VudFxccypcXCgvZztcbmNvbnN0IERFRkFVTFRfV09SS0ZMT1dfRElSUyA9IFtcInBhZ2VzXCIsIFwiYXBwXCIsIFwic3JjL3BhZ2VzXCIsIFwic3JjL2FwcFwiXTtcblxudHlwZSBEZXRlY3RlZEFnZW50ID0ge1xuICBleHBvcnROYW1lOiBzdHJpbmc7XG4gIGZpbGVQYXRoOiBzdHJpbmc7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllcjogZXhwb3J0TmFtZSBvciBleHBvcnROYW1lX2hhc2ggaWYgZHVwbGljYXRlcyBleGlzdCAqL1xuICB1bmlxdWVJZDogc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gc2hvcnRIYXNoKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IGhhc2ggPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoYXIgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQml0d2lzZU9wZXJhdG9yczogaW50ZW50aW9uYWwgaGFzaCBjb21wdXRhdGlvblxuICAgIGhhc2ggPSAoaGFzaCA8PCA1KSAtIGhhc2ggKyBjaGFyO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9CaXR3aXNlT3BlcmF0b3JzOiBjb252ZXJ0IHRvIDMyLWJpdCBpbnRlZ2VyXG4gICAgaGFzaCAmPSBoYXNoO1xuICB9XG4gIHJldHVybiBNYXRoLmFicyhoYXNoKS50b1N0cmluZygzNikuc2xpY2UoMCwgNik7XG59XG5cbi8qKlxuICogRGV0ZWN0cyB3aGV0aGVyIHRoZSBwcm9qZWN0IHVzZXMgc3JjL2FwcCBvciBhcHAgZGlyZWN0b3J5IHN0cnVjdHVyZS5cbiAqIFJldHVybnMgdGhlIGFwcCBkaXJlY3RvcnkgcGF0aCByZWxhdGl2ZSB0byBjd2QuXG4gKi9cbmZ1bmN0aW9uIGdldEFwcERpcihjd2Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHNyY0FwcERpciA9IHBhdGguam9pbihjd2QsIFwic3JjXCIsIFwiYXBwXCIpO1xuICBpZiAoZnMuZXhpc3RzU3luYyhzcmNBcHBEaXIpKSB7XG4gICAgcmV0dXJuIFwic3JjL2FwcFwiO1xuICB9XG4gIHJldHVybiBcImFwcFwiO1xufVxuXG4vKipcbiAqIFNjYW5zIGZvciBhZ2VudCBleHBvcnRzIGluIHRoZSBwcm9qZWN0LlxuICovXG5mdW5jdGlvbiBkZXRlY3RBZ2VudHMoY3dkOiBzdHJpbmcsIGRlYnVnOiBib29sZWFuKTogRGV0ZWN0ZWRBZ2VudFtdIHtcbiAgY29uc3QgYWdlbnRzOiBEZXRlY3RlZEFnZW50W10gPSBbXTtcblxuICBjb25zdCBkaXJzVG9TY2FuID0gW3BhdGguam9pbihjd2QsIFwic3JjXCIpLCBjd2RdO1xuXG4gIGZ1bmN0aW9uIHNjYW5EaXIoZGlyOiBzdHJpbmcpIHtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZGlyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJpZXMgPSBmcy5yZWFkZGlyU3luYyhkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGRpciwgZW50cnkubmFtZSk7XG4gICAgICBpZiAoXG4gICAgICAgIGVudHJ5LmlzRGlyZWN0b3J5KCkgJiZcbiAgICAgICAgIWVudHJ5Lm5hbWUuc3RhcnRzV2l0aChcIi5cIikgJiZcbiAgICAgICAgZW50cnkubmFtZSAhPT0gXCJub2RlX21vZHVsZXNcIiAmJlxuICAgICAgICBlbnRyeS5uYW1lICE9PSBcInNyY1wiXG4gICAgICApIHtcbiAgICAgICAgc2NhbkRpcihmdWxsUGF0aCk7XG4gICAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRmlsZSgpICYmIEZJTEVfRVhUX1JFR0VYLnRlc3QoZW50cnkubmFtZSkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZ1bGxQYXRoLCBcInV0Zi04XCIpO1xuICAgICAgICAgIGlmIChjb250ZW50LmluY2x1ZGVzKFBBQ0tBR0VfTkFNRSkgJiYgY29udGVudC5pbmNsdWRlcyhcImFnZW50KFwiKSkge1xuICAgICAgICAgICAgLy8gU3RyaXAgc2luZ2xlLWxpbmUgY29tbWVudHMgYW5kIGJsb2NrIGNvbW1lbnRzIHRvIGF2b2lkXG4gICAgICAgICAgICAvLyBtYXRjaGluZyBjb21tZW50ZWQtb3V0IGFnZW50IGV4cG9ydHNcbiAgICAgICAgICAgIGNvbnN0IHN0cmlwcGVkID0gY29udGVudFxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFwvXFwvLiokL2dtLCBcIlwiKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLCBcIlwiKTtcbiAgICAgICAgICAgIGNvbnN0IGV4cG9ydE1hdGNoZXMgPSBzdHJpcHBlZC5tYXRjaEFsbChBR0VOVF9FWFBPUlRfUkVHRVgpO1xuICAgICAgICAgICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBleHBvcnRNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIGlmIChzZWVuLmhhcyhtYXRjaFsxXSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZWVuLmFkZChtYXRjaFsxXSk7XG4gICAgICAgICAgICAgIGFnZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBvcnROYW1lOiBtYXRjaFsxXSxcbiAgICAgICAgICAgICAgICBmaWxlUGF0aDogZnVsbFBhdGgsXG4gICAgICAgICAgICAgICAgdW5pcXVlSWQ6IFwiXCIsIC8vIFdpbGwgYmUgc2V0IGFmdGVyIGFsbCBhZ2VudHMgYXJlIGZvdW5kXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGBbd2l0aEFnZW50XSBGb3VuZCBhZ2VudDogJHttYXRjaFsxXX0gaW4gJHtmdWxsUGF0aH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JlIHJlYWQgZXJyb3JzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IGRpciBvZiBkaXJzVG9TY2FuKSB7XG4gICAgc2NhbkRpcihkaXIpO1xuICB9XG5cbiAgLy8gQXNzaWduIHVuaXF1ZSBJRHMgLSBhZGQgaGFzaCBzdWZmaXggaWYgZHVwbGljYXRlIGV4cG9ydCBuYW1lcyBleGlzdFxuICBjb25zdCBuYW1lQ291bnRzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMpIHtcbiAgICBuYW1lQ291bnRzLnNldChcbiAgICAgIGFnZW50LmV4cG9ydE5hbWUsXG4gICAgICAobmFtZUNvdW50cy5nZXQoYWdlbnQuZXhwb3J0TmFtZSkgfHwgMCkgKyAxXG4gICAgKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgYWdlbnQgb2YgYWdlbnRzKSB7XG4gICAgY29uc3QgY291bnQgPSBuYW1lQ291bnRzLmdldChhZ2VudC5leHBvcnROYW1lKSA/PyAwO1xuICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYCR7YWdlbnQuZXhwb3J0TmFtZX1fJHtzaG9ydEhhc2goYWdlbnQuZmlsZVBhdGgpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYWdlbnQuZXhwb3J0TmFtZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWdlbnRzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhbGwgYWdlbnQgZmlsZXMgaW4gLndlbGwta25vd24vYWdlbnQvdjEvOlxuICogLSBzdGVwcy5qczogUlBDIHN0ZXAgZnVuY3Rpb25zIHdpdGggXCJ1c2Ugc3RlcFwiXG4gKiAtIHJvdXRlLmpzOiB0cmlnZ2VycyB3b3JrZmxvdyBkaXNjb3ZlcnlcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVBZ2VudEZpbGVzKFxuICBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSxcbiAgb3V0cHV0RGlyOiBzdHJpbmcsXG4gIF9jd2Q6IHN0cmluZyxcbiAgZGVidWc6IGJvb2xlYW5cbik6IHZvaWQge1xuICBpZiAoYWdlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBObyBhZ2VudHMgZm91bmQsIHNraXBwaW5nIGdlbmVyYXRpb25cIik7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghZnMuZXhpc3RzU3luYyhvdXRwdXREaXIpKSB7XG4gICAgZnMubWtkaXJTeW5jKG91dHB1dERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgc3RlcCBmdW5jdGlvbnMgdGhhdCB1c2UgZHluYW1pYyBpbXBvcnQuXG4gICAqIER5bmFtaWMgaW1wb3J0IGVuc3VyZXMgdGhlIGFnZW50IG1vZHVsZSBsb2FkcyAoaW5jbHVkaW5nIGxvYWRlci1pbmplY3RlZCBpbml0KVxuICAgKiB3aGVuIHRoZSBzdGVwIHJ1bnMgaW4gd29ya2Zsb3cgY29udGV4dCwgYXZvaWRpbmcgdGhlIFwibm90IGluaXRpYWxpemVkXCIgZXJyb3IuXG4gICAqXG4gICAqIFVzZXMgdW5pcXVlSWQgZm9yIGZ1bmN0aW9uIG5hbWVzIHRvIGhhbmRsZSBkdXBsaWNhdGUgZXhwb3J0IG5hbWVzIGFjcm9zcyBmaWxlcy5cbiAgICovXG4gIGNvbnN0IHJwY0Z1bmN0aW9ucyA9IGFnZW50c1xuICAgIC5tYXAoKGEpID0+IHtcbiAgICAgIC8vIENhbGN1bGF0ZSByZWxhdGl2ZSBwYXRoIGZyb20gc3RlcHMuanMgdG8gdGhlIGFnZW50IGZpbGVcbiAgICAgIGxldCBhZ2VudFJlbFBhdGggPSBwYXRoXG4gICAgICAgIC5yZWxhdGl2ZShvdXRwdXREaXIsIGEuZmlsZVBhdGgpXG4gICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcblxuICAgICAgaWYgKCFhZ2VudFJlbFBhdGguc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgYWdlbnRSZWxQYXRoID0gYC4vJHthZ2VudFJlbFBhdGh9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGBcbmV4cG9ydCBjb25zdCAke2EudW5pcXVlSWR9UnBjID0gYXN5bmMgKHBhcmFtcykgPT4ge1xuICBcInVzZSBzdGVwXCI7XG4gIGNvbnN0IHsgJHthLmV4cG9ydE5hbWV9IH0gPSBhd2FpdCBpbXBvcnQoXCIke2FnZW50UmVsUGF0aH1cIik7XG4gIGNvbnN0IHJlcyA9IGF3YWl0ICR7YS5leHBvcnROYW1lfS5oYW5kbGVyKHBhcmFtcyk7XG4gIGlmIChyZXMgaW5zdGFuY2VvZiBSZXNwb25zZSkge1xuICAgIHJldHVybiByZXMuanNvbigpO1xuICB9XG4gIHJldHVybiByZXM7XG59O2A7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICAvKipcbiAgICogSW5pdCBmdW5jdGlvbnMgd2lyZSB1cCBhZ2VudC5ycGMgaW4gdGhlIG1haW4gYXBwIGNvbnRleHQuXG4gICAqIFVzZXMgZXhwb3J0TmFtZSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgKGxvYWRlciBtYXRjaGVzIGJ5IGV4cG9ydCBuYW1lKSxcbiAgICogYnV0IHJlZmVyZW5jZXMgdW5pcXVlSWQgZm9yIHRoZSBScGMgZnVuY3Rpb24uXG4gICAqL1xuICBjb25zdCBpbml0RnVuY3Rpb25zID0gYWdlbnRzXG4gICAgLm1hcChcbiAgICAgIChhKSA9PiBgXG5leHBvcnQgZnVuY3Rpb24gX19pbml0JHthLmV4cG9ydE5hbWVbMF0udG9VcHBlckNhc2UoKX0ke2EuZXhwb3J0TmFtZS5zbGljZShcbiAgICAgICAgMVxuICAgICAgKX0oYWdlbnQpIHtcbiAgYWdlbnQucnBjID0gJHthLnVuaXF1ZUlkfVJwYztcbn1gXG4gICAgKVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGNvbnN0IHN0ZXBzQ29udGVudCA9IGAvLyBBdXRvLWdlbmVyYXRlZCBieSB3aXRoQWdlbnQgLSBkbyBub3QgZWRpdFxuJHtycGNGdW5jdGlvbnN9XG4ke2luaXRGdW5jdGlvbnN9XG5gO1xuXG4gIGNvbnN0IHN0ZXBzUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwic3RlcHMuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMoc3RlcHNQYXRoLCBzdGVwc0NvbnRlbnQpO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSByb3V0ZS5qcyB0aGF0IGltcG9ydHMgc3RlcHMuanMuXG4gICAqIFRoaXMgZW5zdXJlcyB3b3JrZmxvdyBkaXNjb3ZlcnMgdGhlIFwidXNlIHN0ZXBcIiBmdW5jdGlvbnMuXG4gICAqIE5vIGFjdHVhbCBoYW5kbGVyIG5lZWRlZCAtIHN0b3JhZ2UgUlBDIHVzZXMgdGhlIHN0ZXAgZnVuY3Rpb24gZGlyZWN0bHkuXG4gICAqL1xuICBjb25zdCByb3V0ZUNvbnRlbnQgPSBgLy8gQXV0by1nZW5lcmF0ZWQgYnkgd2l0aEFnZW50IC0gdHJpZ2dlcnMgd29ya2Zsb3cgZGlzY292ZXJ5XG5pbXBvcnQgXCIuL3N0ZXBzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gR0VUKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKFwib2tcIik7XG59XG5gO1xuXG4gIGNvbnN0IHJvdXRlUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwicm91dGUuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMocm91dGVQYXRoLCByb3V0ZUNvbnRlbnQpO1xuXG4gIC8vIEFkZCAuZ2l0aWdub3JlXG4gIGNvbnN0IGdpdGlnbm9yZVBhdGggPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBcIi5naXRpZ25vcmVcIik7XG4gIGlmICghZnMuZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICAgIGZzLndyaXRlRmlsZVN5bmMoZ2l0aWdub3JlUGF0aCwgXCIqXFxuXCIpO1xuICB9XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coYFt3aXRoQWdlbnRdIEdlbmVyYXRlZCBhZ2VudCBmaWxlcyBhdCAke291dHB1dERpcn1gKTtcbiAgfVxufVxuXG50eXBlIFR1cmJvcGFja1J1bGUgPSB7XG4gIGxvYWRlcnM/OiBzdHJpbmdbXTtcbiAgY29uZGl0aW9uPzoge1xuICAgIGFsbD86IHVua25vd25bXTtcbiAgICBhbnk/OiB1bmtub3duW107XG4gICAgcGF0aD86IFJlZ0V4cDtcbiAgICBjb250ZW50PzogUmVnRXhwO1xuICAgIG5vdD86IHVua25vd247XG4gIH07XG59O1xuXG50eXBlIFdvcmtmbG93Q29uZmlnRm4gPSAoXG4gIHBoYXNlOiBzdHJpbmcsXG4gIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbikgPT4gUHJvbWlzZTxOZXh0Q29uZmlnPjtcblxudHlwZSBOZXh0Q29uZmlnSW5wdXQgPVxuICB8IE5leHRDb25maWdcbiAgfCAoKFxuICAgICAgcGhhc2U6IHN0cmluZyxcbiAgICAgIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbiAgICApID0+IFByb21pc2U8TmV4dENvbmZpZz4pO1xuXG4vKipcbiAqIE5leHQuanMgcGx1Z2luIHRoYXQgY29uZmlndXJlcyBhZ2VudCBzdXBwb3J0LlxuICpcbiAqIC0gRGV0ZWN0cyBhZ2VudHMgYW5kIGdlbmVyYXRlcyBSUEMgc3RlcHMgd2l0aCBcInVzZSBzdGVwXCIgaW4gLndlbGwta25vd24vYWdlbnQvdjEvXG4gKiAtIEdlbmVyYXRlcyBBR0VOVF9TRUNSRVQgZm9yIHNlY3VyZSBSUEMgY2FsbHNcbiAqIC0gV3JhcHMgd2l0aFdvcmtmbG93IGZvciB3b3JrZmxvdyBzdXBwb3J0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBuZXh0LmNvbmZpZy50c1xuICogaW1wb3J0IHsgd2l0aEFnZW50IH0gZnJvbSBcImV4cGVyaW1lbnRhbC1hZ2VudC9uZXh0XCI7XG4gKlxuICogLy8gT3B0aW9uIDE6IHdpdGhBZ2VudCBoYW5kbGVzIGV2ZXJ5dGhpbmcgKHJlY29tbWVuZGVkKVxuICogZXhwb3J0IGRlZmF1bHQgd2l0aEFnZW50KHt9KTtcbiAqXG4gKiAvLyBPcHRpb24gMjogQ29tcG9zZSB3aXRoIG90aGVyIHBsdWdpbnNcbiAqIGV4cG9ydCBkZWZhdWx0IHdpdGhBZ2VudCh3aXRoU29tZU90aGVyUGx1Z2luKHt9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBZ2VudChcbiAgY29uZmlnT3JGbjogTmV4dENvbmZpZ0lucHV0LFxuICBhZ2VudENvbmZpZz86IFdpdGhBZ2VudENvbmZpZ1xuKTogV29ya2Zsb3dDb25maWdGbiB7XG4gIGNvbnN0IGRlYnVnID0gYWdlbnRDb25maWc/LmRlYnVnID8/IGZhbHNlO1xuICBpZiAoZGVidWcpIHtcbiAgICBwcm9jZXNzLmVudi5BR0VOVF9ERUJVRyA9IFwiMVwiO1xuICB9XG4gIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gRGV0ZWN0IGFwcCBkaXJlY3Rvcnkgc3RydWN0dXJlIChzcmMvYXBwIHZzIGFwcClcbiAgY29uc3QgYXBwRGlyID0gZ2V0QXBwRGlyKGN3ZCk7XG4gIGNvbnN0IGFnZW50RGlyID0gYCR7YXBwRGlyfS8ud2VsbC1rbm93bi9hZ2VudC8ke0FHRU5UX1BST1RPQ09MX1ZFUlNJT059YDtcblxuICAvLyBEZXRlY3QgYWdlbnRzIGFuZCBnZW5lcmF0ZSBmaWxlcyBGSVJTVCAoYmVmb3JlIHdvcmtmbG93IGRpc2NvdmVycyB0aGVtKVxuICBjb25zdCBhZ2VudHMgPSBkZXRlY3RBZ2VudHMoY3dkLCBkZWJ1Zyk7XG4gIGNvbnN0IG91dHB1dERpciA9IHBhdGguam9pbihjd2QsIGFnZW50RGlyKTtcbiAgZ2VuZXJhdGVBZ2VudEZpbGVzKGFnZW50cywgb3V0cHV0RGlyLCBjd2QsIGRlYnVnKTtcblxuICBjb25zdCBhZ2VudEZpbGVQYXRocyA9IGFnZW50cy5tYXAoKGEpID0+IGEuZmlsZVBhdGgpO1xuICBjb25zdCBsb2FkZXJQYXRoID0gcmVxdWlyZS5yZXNvbHZlKFwiLi9uZXh0L2xvYWRlclwiKTtcblxuICBpZiAoZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGxvYWRlciBwYXRoOlwiLCBsb2FkZXJQYXRoKTtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGFnZW50IGZpbGVzOlwiLCBhZ2VudEZpbGVQYXRocyk7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBhZ2VudCBkaXI6XCIsIGFnZW50RGlyKTtcbiAgfVxuXG4gIC8vIEJ1aWxkIHJlZ2V4IHRvIG1hdGNoIGFnZW50IGZpbGUgcGF0aHNcbiAgY29uc3QgYWdlbnRQYXRoUmVnZXggPVxuICAgIGFnZW50RmlsZVBhdGhzLmxlbmd0aCA+IDBcbiAgICAgID8gbmV3IFJlZ0V4cChcbiAgICAgICAgICBgJHthZ2VudEZpbGVQYXRoc1xuICAgICAgICAgICAgLm1hcCgocCkgPT5cbiAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgIC5yZWxhdGl2ZShjd2QsIHApXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmpvaW4oXCJ8XCIpfSRgXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcblxuICAvKipcbiAgICogQWx3YXlzIHBhc3MgdGhyb3VnaCB3aXRoV29ya2Zsb3cgLSBpdCBoYW5kbGVzIGJvdGggTmV4dENvbmZpZyBhbmQgYXN5bmMgZnVuY3Rpb25zLlxuICAgKiBUaGlzIGVuc3VyZXMgd29ya2Zsb3cgaXMgYWx3YXlzIGNvbmZpZ3VyZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgdXNlciBwYXNzZWQuXG4gICAqL1xuICBsZXQgd2l0aFdvcmtmbG93OiAoXG4gICAgY29uZmlnOiBOZXh0Q29uZmlnSW5wdXQsXG4gICAgb3B0aW9ucz86IHsgd29ya2Zsb3dzPzogeyBkaXJzPzogc3RyaW5nW10gfSB9XG4gICkgPT4gV29ya2Zsb3dDb25maWdGbjtcbiAgdHJ5IHtcbiAgICB3aXRoV29ya2Zsb3cgPSByZXF1aXJlKFwid29ya2Zsb3cvbmV4dFwiKS53aXRoV29ya2Zsb3c7XG4gIH0gY2F0Y2gge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiW3dpdGhBZ2VudF0gd29ya2Zsb3cvbmV4dCBub3QgZm91bmQuIE1ha2Ugc3VyZSB3b3JrZmxvdyBpcyBpbnN0YWxsZWQuXCJcbiAgICApO1xuICAgIHJldHVybiB0eXBlb2YgY29uZmlnT3JGbiA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IGNvbmZpZ09yRm5cbiAgICAgIDogYXN5bmMgKCkgPT4gY29uZmlnT3JGbjtcbiAgfVxuXG4gIGNvbnN0IGJhc2VDb25maWdGbiA9IHdpdGhXb3JrZmxvdyhjb25maWdPckZuLCB7XG4gICAgd29ya2Zsb3dzOiB7XG4gICAgICBkaXJzOiBbLi4uREVGQVVMVF9XT1JLRkxPV19ESVJTLCBhZ2VudERpcl0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHdyYXBwZXIgdGhhdCBydW5zIEFGVEVSIHdvcmtmbG93IHByb2Nlc3NlcywgdGhlbiBhZGRzIG91ciBsb2FkZXIuXG4gICAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd29ya2Zsb3cgb3ZlcndyaXRlcyB0dXJib3BhY2sgcnVsZXMgLSB3ZSBuZWVkIHRvXG4gICAqIG1vZGlmeSB0aGVtIGFmdGVyIHdvcmtmbG93IGlzIGRvbmUuXG4gICAqL1xuICByZXR1cm4gYXN5bmMgKHBoYXNlLCBjdHgpID0+IHtcbiAgICBjb25zdCBuZXh0Q29uZmlnID0gYXdhaXQgYmFzZUNvbmZpZ0ZuKHBoYXNlLCBjdHgpO1xuXG4gICAgLy8gU2V0IHVwIEFHRU5UX1NFQ1JFVCBpZiBub3QgYWxyZWFkeSBzZXRcbiAgICBpZiAoIXByb2Nlc3MuZW52LkFHRU5UX1NFQ1JFVCkge1xuICAgICAgbmV4dENvbmZpZy5lbnYgPSB7XG4gICAgICAgIC4uLm5leHRDb25maWcuZW52LFxuICAgICAgICBBR0VOVF9TRUNSRVQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICB9O1xuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gR2VuZXJhdGVkIEFHRU5UX1NFQ1JFVFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWFnZW50UGF0aFJlZ2V4IHx8IGFnZW50RmlsZVBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5leHRDb25maWc7XG4gICAgfVxuXG4gICAgLy8gTW9kaWZ5IHR1cmJvcGFjayBydWxlcyB0byBpbmNsdWRlIG91ciBsb2FkZXIgZm9yIGFnZW50IGZpbGVzXG4gICAgY29uc3QgcnVsZXMgPSAobmV4dENvbmZpZy50dXJib3BhY2s/LnJ1bGVzIHx8IHt9KSBhcyBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICBUdXJib3BhY2tSdWxlXG4gICAgPjtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIFtcIioudHNcIiwgXCIqLnRzeFwiLCBcIiouanNcIiwgXCIqLmpzeFwiXSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdSdWxlID0gcnVsZXNba2V5XTtcbiAgICAgIGlmICghZXhpc3RpbmdSdWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFdvcmtmbG93J3MgcnVsZSBoYXM6IGNvbmRpdGlvbi5hbGwgPSBbeyBub3Q6IHBhdGggfSwgeyBjb250ZW50OiAvdXNlIHN0ZXB8Li4uLyB9XVxuICAgICAgICogV2Ugd2FudDogcnVuIGxvYWRlciBpZiB3b3JrZmxvdydzIGNvbmRpdGlvbnMgbWF0Y2ggT1IgaXQncyBhbiBhZ2VudCBmaWxlLlxuICAgICAgICogU28gd2Ugd3JhcCBpbjogY29uZGl0aW9uLmFueSA9IFtleGlzdGluZ0NvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XVxuICAgICAgICovXG4gICAgICBydWxlc1trZXldID0ge1xuICAgICAgICAuLi5leGlzdGluZ1J1bGUsXG4gICAgICAgIGxvYWRlcnM6IFtsb2FkZXJQYXRoLCAuLi4oZXhpc3RpbmdSdWxlLmxvYWRlcnMgfHwgW10pXSxcbiAgICAgICAgY29uZGl0aW9uOiB7XG4gICAgICAgICAgYW55OiBbZXhpc3RpbmdSdWxlLmNvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQWxzbyBjb25maWd1cmUgd2VicGFjayBmb3Igbm9uLXR1cmJvcGFjayBidWlsZHNcbiAgICBjb25zdCBleGlzdGluZ1dlYnBhY2sgPSBuZXh0Q29uZmlnLndlYnBhY2s7XG4gICAgbmV4dENvbmZpZy53ZWJwYWNrID0gKHdlYnBhY2tDb25maWcsIGNvbnRleHQpID0+IHtcbiAgICAgIHdlYnBhY2tDb25maWcubW9kdWxlLnJ1bGVzLnB1c2goe1xuICAgICAgICB0ZXN0OiAocmVzb3VyY2VQYXRoOiBzdHJpbmcpID0+IGFnZW50RmlsZVBhdGhzLmluY2x1ZGVzKHJlc291cmNlUGF0aCksXG4gICAgICAgIHVzZTogW3sgbG9hZGVyOiBsb2FkZXJQYXRoIH1dLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZXhpc3RpbmdXZWJwYWNrPy4od2VicGFja0NvbmZpZywgY29udGV4dCkgPz8gd2VicGFja0NvbmZpZztcbiAgICB9O1xuXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIEFkZGVkIGFnZW50IGxvYWRlciB0byB0dXJib3BhY2sgcnVsZXNcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRDb25maWc7XG4gIH07XG59XG4iLCAie1xuICBcIm5hbWVcIjogXCJleHBlcmltZW50YWwtYWdlbnRcIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMC4xLjNcIixcbiAgXCJtYWluXCI6IFwiLi9kaXN0L2luZGV4LmpzXCIsXG4gIFwibW9kdWxlXCI6IFwiLi9kaXN0L2luZGV4Lm1qc1wiLFxuICBcInR5cGVzXCI6IFwiLi9kaXN0L2luZGV4LmQudHNcIixcbiAgXCJzaWRlRWZmZWN0c1wiOiB0cnVlLFxuICBcImxpY2Vuc2VcIjogXCJNSVRcIixcbiAgXCJmaWxlc1wiOiBbXG4gICAgXCJkaXN0LyoqXCJcbiAgXSxcbiAgXCJleHBvcnRzXCI6IHtcbiAgICBcIi5cIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9pbmRleC5qc1wiXG4gICAgfSxcbiAgICBcIi4vbmV4dFwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L25leHQuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvbmV4dC5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9uZXh0LmpzXCJcbiAgICB9LFxuICAgIFwiLi9uZXh0L2xvYWRlclwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L25leHQvbG9hZGVyLmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L25leHQvbG9hZGVyLm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L25leHQvbG9hZGVyLmpzXCJcbiAgICB9LFxuICAgIFwiLi9jbGllbnRcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9jbGllbnQuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvY2xpZW50Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L2NsaWVudC5qc1wiXG4gICAgfVxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwiYnVpbGRcIjogXCJ0c3VwXCIsXG4gICAgXCJkZXZcIjogXCJ0c3VwIC0td2F0Y2hcIixcbiAgICBcImNsZWFuXCI6IFwicm0gLXJmIC50dXJibyAmJiBybSAtcmYgbm9kZV9tb2R1bGVzICYmIHJtIC1yZiBkaXN0XCIsXG4gICAgXCJyZWxlYXNlXCI6IFwicG5wbSBidWlsZCAmJiBucG0gcHVibGlzaFwiLFxuICAgIFwidHlwZWNoZWNrXCI6IFwidHNjIC0tbm9FbWl0XCIsXG4gICAgXCJ0ZXN0XCI6IFwidml0ZXN0IHJ1blwiLFxuICAgIFwidGVzdDp3YXRjaFwiOiBcInZpdGVzdFwiXG4gIH0sXG4gIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBob25vL25vZGUtc2VydmVyXCI6IFwiXjEuMTkuOVwiLFxuICAgIFwiQHN3Yy9jb3JlXCI6IFwiXjEuMTAuMFwiLFxuICAgIFwiQHZlcmNlbC9vaWRjXCI6IFwiXjMuMS4wXCIsXG4gICAgXCJiZXR0ZXItYWxsXCI6IFwiXjAuMC41XCIsXG4gICAgXCJlcnJvcmVcIjogXCJeMC44LjJcIixcbiAgICBcImZhc3QtZGVlcC1lcXVhbFwiOiBcIl4zLjEuM1wiLFxuICAgIFwiZ2xvYlwiOiBcIl4xMS4wLjBcIixcbiAgICBcImhvbm9cIjogXCJeNC4xMS42XCIsXG4gICAgXCJAdmVyY2VsL3NhbmRib3hcIjogXCJeMS41LjBcIixcbiAgICBcInVsaWRcIjogXCJeMy4wLjJcIixcbiAgICBcInpvZFwiOiBcIl40LjMuNlwiXG4gIH0sXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBhZ2VudC90c2NvbmZpZ1wiOiBcIndvcmtzcGFjZToqXCIsXG4gICAgXCJAdHlwZXMvbm9kZVwiOiBcIl4yMC4xMS4yNFwiLFxuICAgIFwiZG90ZW52XCI6IFwiXjE3LjIuM1wiLFxuICAgIFwibmV4dFwiOiBcIl4xNi4wLjBcIixcbiAgICBcInRzdXBcIjogXCJeOC4wLjJcIixcbiAgICBcInR5cGUtZmVzdFwiOiBcIl41LjQuMlwiLFxuICAgIFwidHlwZXNjcmlwdFwiOiBcIjUuNS40XCIsXG4gICAgXCJ2aXRlc3RcIjogXCJeMy4wLjBcIlxuICB9LFxuICBcInBlZXJEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiYWlcIjogXCJeNi4wLjBcIixcbiAgICBcIndvcmtmbG93XCI6IFwiKlwiXG4gIH0sXG4gIFwicHVibGlzaENvbmZpZ1wiOiB7XG4gICAgXCJhY2Nlc3NcIjogXCJwdWJsaWNcIlxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
331
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25leHQvaW5kZXgudHMiLCAiLi4vcGFja2FnZS5qc29uIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE5leHRDb25maWcgfSBmcm9tIFwibmV4dFwiO1xuaW1wb3J0IHBrZyBmcm9tIFwiLi4vLi4vcGFja2FnZS5qc29uXCI7XG5cbmV4cG9ydCB0eXBlIFdpdGhBZ2VudENvbmZpZyA9IHtcbiAgLyoqIEVuYWJsZSBkZWJ1ZyBsb2dnaW5nIGZvciB0aGUgTmV4dC5qcyBsb2FkZXIgKGFnZW50IGRldGVjdGlvbiwgZmlsZSBnZW5lcmF0aW9uKS4gKi9cbiAgZGVidWc/OiBib29sZWFuO1xufTtcblxuY29uc3QgUEFDS0FHRV9OQU1FID0gcGtnLm5hbWU7XG5jb25zdCBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OID0gXCJ2MVwiO1xuY29uc3QgRklMRV9FWFRfUkVHRVggPSAvXFwuKHRzfHRzeHxqc3xqc3gpJC87XG5jb25zdCBBR0VOVF9FWFBPUlRfUkVHRVggPSAvZXhwb3J0XFxzK2NvbnN0XFxzKyhcXHcrKVxccyo9XFxzKmFnZW50XFxzKlxcKC9nO1xuY29uc3QgREVGQVVMVF9XT1JLRkxPV19ESVJTID0gW1wicGFnZXNcIiwgXCJhcHBcIiwgXCJzcmMvcGFnZXNcIiwgXCJzcmMvYXBwXCJdO1xuXG50eXBlIERldGVjdGVkQWdlbnQgPSB7XG4gIGV4cG9ydE5hbWU6IHN0cmluZztcbiAgZmlsZVBhdGg6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyOiBleHBvcnROYW1lIG9yIGV4cG9ydE5hbWVfaGFzaCBpZiBkdXBsaWNhdGVzIGV4aXN0ICovXG4gIHVuaXF1ZUlkOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBzaG9ydEhhc2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgaGFzaCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9CaXR3aXNlT3BlcmF0b3JzOiBpbnRlbnRpb25hbCBoYXNoIGNvbXB1dGF0aW9uXG4gICAgaGFzaCA9IChoYXNoIDw8IDUpIC0gaGFzaCArIGNoYXI7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0JpdHdpc2VPcGVyYXRvcnM6IGNvbnZlcnQgdG8gMzItYml0IGludGVnZXJcbiAgICBoYXNoICY9IGhhc2g7XG4gIH1cbiAgcmV0dXJuIE1hdGguYWJzKGhhc2gpLnRvU3RyaW5nKDM2KS5zbGljZSgwLCA2KTtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgdGhlIHByb2plY3QgdXNlcyBzcmMvYXBwIG9yIGFwcCBkaXJlY3Rvcnkgc3RydWN0dXJlLlxuICogUmV0dXJucyB0aGUgYXBwIGRpcmVjdG9yeSBwYXRoIHJlbGF0aXZlIHRvIGN3ZC5cbiAqL1xuZnVuY3Rpb24gZ2V0QXBwRGlyKGN3ZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3JjQXBwRGlyID0gcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiwgXCJhcHBcIik7XG4gIGlmIChmcy5leGlzdHNTeW5jKHNyY0FwcERpcikpIHtcbiAgICByZXR1cm4gXCJzcmMvYXBwXCI7XG4gIH1cbiAgcmV0dXJuIFwiYXBwXCI7XG59XG5cbi8qKlxuICogU2NhbnMgZm9yIGFnZW50IGV4cG9ydHMgaW4gdGhlIHByb2plY3QuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdEFnZW50cyhjd2Q6IHN0cmluZywgZGVidWc6IGJvb2xlYW4pOiBEZXRlY3RlZEFnZW50W10ge1xuICBjb25zdCBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSA9IFtdO1xuXG4gIGNvbnN0IGRpcnNUb1NjYW4gPSBbcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiksIGN3ZF07XG5cbiAgZnVuY3Rpb24gc2NhbkRpcihkaXI6IHN0cmluZykge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oZGlyLCBlbnRyeS5uYW1lKTtcbiAgICAgIGlmIChcbiAgICAgICAgZW50cnkuaXNEaXJlY3RvcnkoKSAmJlxuICAgICAgICAhZW50cnkubmFtZS5zdGFydHNXaXRoKFwiLlwiKSAmJlxuICAgICAgICBlbnRyeS5uYW1lICE9PSBcIm5vZGVfbW9kdWxlc1wiICYmXG4gICAgICAgIGVudHJ5Lm5hbWUgIT09IFwic3JjXCJcbiAgICAgICkge1xuICAgICAgICBzY2FuRGlyKGZ1bGxQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKCkgJiYgRklMRV9FWFRfUkVHRVgudGVzdChlbnRyeS5uYW1lKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgsIFwidXRmLThcIik7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSAmJiBjb250ZW50LmluY2x1ZGVzKFwiYWdlbnQoXCIpKSB7XG4gICAgICAgICAgICAvLyBTdHJpcCBzaW5nbGUtbGluZSBjb21tZW50cyBhbmQgYmxvY2sgY29tbWVudHMgdG8gYXZvaWRcbiAgICAgICAgICAgIC8vIG1hdGNoaW5nIGNvbW1lbnRlZC1vdXQgYWdlbnQgZXhwb3J0c1xuICAgICAgICAgICAgY29uc3Qgc3RyaXBwZWQgPSBjb250ZW50XG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC9cXC8uKiQvZ20sIFwiXCIpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2csIFwiXCIpO1xuICAgICAgICAgICAgY29uc3QgZXhwb3J0TWF0Y2hlcyA9IHN0cmlwcGVkLm1hdGNoQWxsKEFHRU5UX0VYUE9SVF9SRUdFWCk7XG4gICAgICAgICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIGV4cG9ydE1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgaWYgKHNlZW4uaGFzKG1hdGNoWzFdKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNlZW4uYWRkKG1hdGNoWzFdKTtcbiAgICAgICAgICAgICAgYWdlbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGV4cG9ydE5hbWU6IG1hdGNoWzFdLFxuICAgICAgICAgICAgICAgIGZpbGVQYXRoOiBmdWxsUGF0aCxcbiAgICAgICAgICAgICAgICB1bmlxdWVJZDogXCJcIiwgLy8gV2lsbCBiZSBzZXQgYWZ0ZXIgYWxsIGFnZW50cyBhcmUgZm91bmRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYFt3aXRoQWdlbnRdIEZvdW5kIGFnZW50OiAke21hdGNoWzFdfSBpbiAke2Z1bGxQYXRofWBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJZ25vcmUgcmVhZCBlcnJvcnNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgZGlyIG9mIGRpcnNUb1NjYW4pIHtcbiAgICBzY2FuRGlyKGRpcik7XG4gIH1cblxuICAvLyBBc3NpZ24gdW5pcXVlIElEcyAtIGFkZCBoYXNoIHN1ZmZpeCBpZiBkdXBsaWNhdGUgZXhwb3J0IG5hbWVzIGV4aXN0XG4gIGNvbnN0IG5hbWVDb3VudHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IGFnZW50IG9mIGFnZW50cykge1xuICAgIG5hbWVDb3VudHMuc2V0KFxuICAgICAgYWdlbnQuZXhwb3J0TmFtZSxcbiAgICAgIChuYW1lQ291bnRzLmdldChhZ2VudC5leHBvcnROYW1lKSB8fCAwKSArIDFcbiAgICApO1xuICB9XG5cbiAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMpIHtcbiAgICBjb25zdCBjb3VudCA9IG5hbWVDb3VudHMuZ2V0KGFnZW50LmV4cG9ydE5hbWUpID8/IDA7XG4gICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgYWdlbnQudW5pcXVlSWQgPSBgJHthZ2VudC5leHBvcnROYW1lfV8ke3Nob3J0SGFzaChhZ2VudC5maWxlUGF0aCl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWdlbnQudW5pcXVlSWQgPSBhZ2VudC5leHBvcnROYW1lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhZ2VudHM7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFsbCBhZ2VudCBmaWxlcyBpbiAud2VsbC1rbm93bi9hZ2VudC92MS86XG4gKiAtIHN0ZXBzLmpzOiBSUEMgc3RlcCBmdW5jdGlvbnMgd2l0aCBcInVzZSBzdGVwXCJcbiAqIC0gcm91dGUuanM6IHRyaWdnZXJzIHdvcmtmbG93IGRpc2NvdmVyeVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUFnZW50RmlsZXMoXG4gIGFnZW50czogRGV0ZWN0ZWRBZ2VudFtdLFxuICBvdXRwdXREaXI6IHN0cmluZyxcbiAgX2N3ZDogc3RyaW5nLFxuICBkZWJ1ZzogYm9vbGVhblxuKTogdm9pZCB7XG4gIGlmIChhZ2VudHMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIE5vIGFnZW50cyBmb3VuZCwgc2tpcHBpbmcgZ2VuZXJhdGlvblwiKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKG91dHB1dERpcikpIHtcbiAgICBmcy5ta2RpclN5bmMob3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBzdGVwIGZ1bmN0aW9ucyB0aGF0IHVzZSBkeW5hbWljIGltcG9ydC5cbiAgICogRHluYW1pYyBpbXBvcnQgZW5zdXJlcyB0aGUgYWdlbnQgbW9kdWxlIGxvYWRzIChpbmNsdWRpbmcgbG9hZGVyLWluamVjdGVkIGluaXQpXG4gICAqIHdoZW4gdGhlIHN0ZXAgcnVucyBpbiB3b3JrZmxvdyBjb250ZXh0LCBhdm9pZGluZyB0aGUgXCJub3QgaW5pdGlhbGl6ZWRcIiBlcnJvci5cbiAgICpcbiAgICogVXNlcyB1bmlxdWVJZCBmb3IgZnVuY3Rpb24gbmFtZXMgdG8gaGFuZGxlIGR1cGxpY2F0ZSBleHBvcnQgbmFtZXMgYWNyb3NzIGZpbGVzLlxuICAgKi9cbiAgY29uc3QgcnBjRnVuY3Rpb25zID0gYWdlbnRzXG4gICAgLm1hcCgoYSkgPT4ge1xuICAgICAgLy8gQ2FsY3VsYXRlIHJlbGF0aXZlIHBhdGggZnJvbSBzdGVwcy5qcyB0byB0aGUgYWdlbnQgZmlsZVxuICAgICAgbGV0IGFnZW50UmVsUGF0aCA9IHBhdGhcbiAgICAgICAgLnJlbGF0aXZlKG91dHB1dERpciwgYS5maWxlUGF0aClcbiAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuXG4gICAgICBpZiAoIWFnZW50UmVsUGF0aC5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgICBhZ2VudFJlbFBhdGggPSBgLi8ke2FnZW50UmVsUGF0aH1gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYFxuZXhwb3J0IGNvbnN0ICR7YS51bmlxdWVJZH1ScGMgPSBhc3luYyAocGFyYW1zKSA9PiB7XG4gIFwidXNlIHN0ZXBcIjtcbiAgY29uc3QgeyAke2EuZXhwb3J0TmFtZX0gfSA9IGF3YWl0IGltcG9ydChcIiR7YWdlbnRSZWxQYXRofVwiKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgJHthLmV4cG9ydE5hbWV9LmhhbmRsZXIocGFyYW1zKTtcbiAgaWYgKHJlcyBpbnN0YW5jZW9mIFJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIHJlcy5qc29uKCk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07YDtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIC8qKlxuICAgKiBJbml0IGZ1bmN0aW9ucyB3aXJlIHVwIGFnZW50LnJwYyBpbiB0aGUgbWFpbiBhcHAgY29udGV4dC5cbiAgICogVXNlcyBleHBvcnROYW1lIGZvciB0aGUgZnVuY3Rpb24gbmFtZSAobG9hZGVyIG1hdGNoZXMgYnkgZXhwb3J0IG5hbWUpLFxuICAgKiBidXQgcmVmZXJlbmNlcyB1bmlxdWVJZCBmb3IgdGhlIFJwYyBmdW5jdGlvbi5cbiAgICovXG4gIGNvbnN0IGluaXRGdW5jdGlvbnMgPSBhZ2VudHNcbiAgICAubWFwKFxuICAgICAgKGEpID0+IGBcbmV4cG9ydCBmdW5jdGlvbiBfX2luaXQke2EuZXhwb3J0TmFtZVswXS50b1VwcGVyQ2FzZSgpfSR7YS5leHBvcnROYW1lLnNsaWNlKFxuICAgICAgICAxXG4gICAgICApfShhZ2VudCkge1xuICBhZ2VudC5ycGMgPSAke2EudW5pcXVlSWR9UnBjO1xufWBcbiAgICApXG4gICAgLmpvaW4oXCJcXG5cIik7XG5cbiAgY29uc3Qgc3RlcHNDb250ZW50ID0gYC8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHdpdGhBZ2VudCAtIGRvIG5vdCBlZGl0XG4ke3JwY0Z1bmN0aW9uc31cbiR7aW5pdEZ1bmN0aW9uc31cbmA7XG5cbiAgY29uc3Qgc3RlcHNQYXRoID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJzdGVwcy5qc1wiKTtcbiAgZnMud3JpdGVGaWxlU3luYyhzdGVwc1BhdGgsIHN0ZXBzQ29udGVudCk7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHJvdXRlLmpzIHRoYXQgaW1wb3J0cyBzdGVwcy5qcy5cbiAgICogVGhpcyBlbnN1cmVzIHdvcmtmbG93IGRpc2NvdmVycyB0aGUgXCJ1c2Ugc3RlcFwiIGZ1bmN0aW9ucy5cbiAgICogTm8gYWN0dWFsIGhhbmRsZXIgbmVlZGVkIC0gc3RvcmFnZSBSUEMgdXNlcyB0aGUgc3RlcCBmdW5jdGlvbiBkaXJlY3RseS5cbiAgICovXG4gIGNvbnN0IHJvdXRlQ29udGVudCA9IGAvLyBBdXRvLWdlbmVyYXRlZCBieSB3aXRoQWdlbnQgLSB0cmlnZ2VycyB3b3JrZmxvdyBkaXNjb3ZlcnlcbmltcG9ydCBcIi4vc3RlcHMuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBHRVQoKSB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXCJva1wiKTtcbn1cbmA7XG5cbiAgY29uc3Qgcm91dGVQYXRoID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJyb3V0ZS5qc1wiKTtcbiAgZnMud3JpdGVGaWxlU3luYyhyb3V0ZVBhdGgsIHJvdXRlQ29udGVudCk7XG5cbiAgLy8gQWRkIC5naXRpZ25vcmVcbiAgY29uc3QgZ2l0aWdub3JlUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwiLmdpdGlnbm9yZVwiKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpKSB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhnaXRpZ25vcmVQYXRoLCBcIipcXG5cIik7XG4gIH1cblxuICBpZiAoZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhgW3dpdGhBZ2VudF0gR2VuZXJhdGVkIGFnZW50IGZpbGVzIGF0ICR7b3V0cHV0RGlyfWApO1xuICB9XG59XG5cbnR5cGUgVHVyYm9wYWNrUnVsZSA9IHtcbiAgbG9hZGVycz86IHN0cmluZ1tdO1xuICBjb25kaXRpb24/OiB7XG4gICAgYWxsPzogdW5rbm93bltdO1xuICAgIGFueT86IHVua25vd25bXTtcbiAgICBwYXRoPzogUmVnRXhwO1xuICAgIGNvbnRlbnQ/OiBSZWdFeHA7XG4gICAgbm90PzogdW5rbm93bjtcbiAgfTtcbn07XG5cbnR5cGUgV29ya2Zsb3dDb25maWdGbiA9IChcbiAgcGhhc2U6IHN0cmluZyxcbiAgY3R4OiB7IGRlZmF1bHRDb25maWc6IE5leHRDb25maWcgfVxuKSA9PiBQcm9taXNlPE5leHRDb25maWc+O1xuXG50eXBlIE5leHRDb25maWdJbnB1dCA9XG4gIHwgTmV4dENvbmZpZ1xuICB8ICgoXG4gICAgICBwaGFzZTogc3RyaW5nLFxuICAgICAgY3R4OiB7IGRlZmF1bHRDb25maWc6IE5leHRDb25maWcgfVxuICAgICkgPT4gUHJvbWlzZTxOZXh0Q29uZmlnPik7XG5cbi8qKlxuICogTmV4dC5qcyBwbHVnaW4gdGhhdCBjb25maWd1cmVzIGFnZW50IHN1cHBvcnQuXG4gKlxuICogLSBEZXRlY3RzIGFnZW50cyBhbmQgZ2VuZXJhdGVzIFJQQyBzdGVwcyB3aXRoIFwidXNlIHN0ZXBcIiBpbiAud2VsbC1rbm93bi9hZ2VudC92MS9cbiAqIC0gR2VuZXJhdGVzIEFHRU5UX1NFQ1JFVCBmb3Igc2VjdXJlIFJQQyBjYWxsc1xuICogLSBXcmFwcyB3aXRoV29ya2Zsb3cgZm9yIHdvcmtmbG93IHN1cHBvcnRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIG5leHQuY29uZmlnLnRzXG4gKiBpbXBvcnQgeyB3aXRoQWdlbnQgfSBmcm9tIFwiZXhwZXJpbWVudGFsLWFnZW50L25leHRcIjtcbiAqXG4gKiAvLyBPcHRpb24gMTogd2l0aEFnZW50IGhhbmRsZXMgZXZlcnl0aGluZyAocmVjb21tZW5kZWQpXG4gKiBleHBvcnQgZGVmYXVsdCB3aXRoQWdlbnQoe30pO1xuICpcbiAqIC8vIE9wdGlvbiAyOiBDb21wb3NlIHdpdGggb3RoZXIgcGx1Z2luc1xuICogZXhwb3J0IGRlZmF1bHQgd2l0aEFnZW50KHdpdGhTb21lT3RoZXJQbHVnaW4oe30pKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEFnZW50KFxuICBjb25maWdPckZuOiBOZXh0Q29uZmlnSW5wdXQsXG4gIGFnZW50Q29uZmlnPzogV2l0aEFnZW50Q29uZmlnXG4pOiBXb3JrZmxvd0NvbmZpZ0ZuIHtcbiAgY29uc3QgZGVidWcgPSBhZ2VudENvbmZpZz8uZGVidWcgPz8gZmFsc2U7XG4gIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gRGV0ZWN0IGFwcCBkaXJlY3Rvcnkgc3RydWN0dXJlIChzcmMvYXBwIHZzIGFwcClcbiAgY29uc3QgYXBwRGlyID0gZ2V0QXBwRGlyKGN3ZCk7XG4gIGNvbnN0IGFnZW50RGlyID0gYCR7YXBwRGlyfS8ud2VsbC1rbm93bi9hZ2VudC8ke0FHRU5UX1BST1RPQ09MX1ZFUlNJT059YDtcblxuICAvLyBEZXRlY3QgYWdlbnRzIGFuZCBnZW5lcmF0ZSBmaWxlcyBGSVJTVCAoYmVmb3JlIHdvcmtmbG93IGRpc2NvdmVycyB0aGVtKVxuICBjb25zdCBhZ2VudHMgPSBkZXRlY3RBZ2VudHMoY3dkLCBkZWJ1Zyk7XG4gIGNvbnN0IG91dHB1dERpciA9IHBhdGguam9pbihjd2QsIGFnZW50RGlyKTtcbiAgZ2VuZXJhdGVBZ2VudEZpbGVzKGFnZW50cywgb3V0cHV0RGlyLCBjd2QsIGRlYnVnKTtcblxuICBjb25zdCBhZ2VudEZpbGVQYXRocyA9IGFnZW50cy5tYXAoKGEpID0+IGEuZmlsZVBhdGgpO1xuICBjb25zdCBsb2FkZXJQYXRoID0gcmVxdWlyZS5yZXNvbHZlKFwiLi9uZXh0L2xvYWRlclwiKTtcblxuICBpZiAoZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGxvYWRlciBwYXRoOlwiLCBsb2FkZXJQYXRoKTtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGFnZW50IGZpbGVzOlwiLCBhZ2VudEZpbGVQYXRocyk7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBhZ2VudCBkaXI6XCIsIGFnZW50RGlyKTtcbiAgfVxuXG4gIC8vIEJ1aWxkIHJlZ2V4IHRvIG1hdGNoIGFnZW50IGZpbGUgcGF0aHNcbiAgY29uc3QgYWdlbnRQYXRoUmVnZXggPVxuICAgIGFnZW50RmlsZVBhdGhzLmxlbmd0aCA+IDBcbiAgICAgID8gbmV3IFJlZ0V4cChcbiAgICAgICAgICBgJHthZ2VudEZpbGVQYXRoc1xuICAgICAgICAgICAgLm1hcCgocCkgPT5cbiAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgIC5yZWxhdGl2ZShjd2QsIHApXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmpvaW4oXCJ8XCIpfSRgXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcblxuICAvKipcbiAgICogQWx3YXlzIHBhc3MgdGhyb3VnaCB3aXRoV29ya2Zsb3cgLSBpdCBoYW5kbGVzIGJvdGggTmV4dENvbmZpZyBhbmQgYXN5bmMgZnVuY3Rpb25zLlxuICAgKiBUaGlzIGVuc3VyZXMgd29ya2Zsb3cgaXMgYWx3YXlzIGNvbmZpZ3VyZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgdXNlciBwYXNzZWQuXG4gICAqL1xuICBsZXQgd2l0aFdvcmtmbG93OiAoXG4gICAgY29uZmlnOiBOZXh0Q29uZmlnSW5wdXQsXG4gICAgb3B0aW9ucz86IHsgd29ya2Zsb3dzPzogeyBkaXJzPzogc3RyaW5nW10gfSB9XG4gICkgPT4gV29ya2Zsb3dDb25maWdGbjtcbiAgdHJ5IHtcbiAgICB3aXRoV29ya2Zsb3cgPSByZXF1aXJlKFwid29ya2Zsb3cvbmV4dFwiKS53aXRoV29ya2Zsb3c7XG4gIH0gY2F0Y2gge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiW3dpdGhBZ2VudF0gd29ya2Zsb3cvbmV4dCBub3QgZm91bmQuIE1ha2Ugc3VyZSB3b3JrZmxvdyBpcyBpbnN0YWxsZWQuXCJcbiAgICApO1xuICAgIHJldHVybiB0eXBlb2YgY29uZmlnT3JGbiA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IGNvbmZpZ09yRm5cbiAgICAgIDogYXN5bmMgKCkgPT4gY29uZmlnT3JGbjtcbiAgfVxuXG4gIGNvbnN0IGJhc2VDb25maWdGbiA9IHdpdGhXb3JrZmxvdyhjb25maWdPckZuLCB7XG4gICAgd29ya2Zsb3dzOiB7XG4gICAgICBkaXJzOiBbLi4uREVGQVVMVF9XT1JLRkxPV19ESVJTLCBhZ2VudERpcl0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHdyYXBwZXIgdGhhdCBydW5zIEFGVEVSIHdvcmtmbG93IHByb2Nlc3NlcywgdGhlbiBhZGRzIG91ciBsb2FkZXIuXG4gICAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd29ya2Zsb3cgb3ZlcndyaXRlcyB0dXJib3BhY2sgcnVsZXMgLSB3ZSBuZWVkIHRvXG4gICAqIG1vZGlmeSB0aGVtIGFmdGVyIHdvcmtmbG93IGlzIGRvbmUuXG4gICAqL1xuICByZXR1cm4gYXN5bmMgKHBoYXNlLCBjdHgpID0+IHtcbiAgICBjb25zdCBuZXh0Q29uZmlnID0gYXdhaXQgYmFzZUNvbmZpZ0ZuKHBoYXNlLCBjdHgpO1xuXG4gICAgLy8gU2V0IHVwIEFHRU5UX1NFQ1JFVCBpZiBub3QgYWxyZWFkeSBzZXRcbiAgICBpZiAoIXByb2Nlc3MuZW52LkFHRU5UX1NFQ1JFVCkge1xuICAgICAgbmV4dENvbmZpZy5lbnYgPSB7XG4gICAgICAgIC4uLm5leHRDb25maWcuZW52LFxuICAgICAgICBBR0VOVF9TRUNSRVQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICB9O1xuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gR2VuZXJhdGVkIEFHRU5UX1NFQ1JFVFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWFnZW50UGF0aFJlZ2V4IHx8IGFnZW50RmlsZVBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5leHRDb25maWc7XG4gICAgfVxuXG4gICAgLy8gTW9kaWZ5IHR1cmJvcGFjayBydWxlcyB0byBpbmNsdWRlIG91ciBsb2FkZXIgZm9yIGFnZW50IGZpbGVzXG4gICAgY29uc3QgcnVsZXMgPSAobmV4dENvbmZpZy50dXJib3BhY2s/LnJ1bGVzIHx8IHt9KSBhcyBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICBUdXJib3BhY2tSdWxlXG4gICAgPjtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIFtcIioudHNcIiwgXCIqLnRzeFwiLCBcIiouanNcIiwgXCIqLmpzeFwiXSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdSdWxlID0gcnVsZXNba2V5XTtcbiAgICAgIGlmICghZXhpc3RpbmdSdWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFdvcmtmbG93J3MgcnVsZSBoYXM6IGNvbmRpdGlvbi5hbGwgPSBbeyBub3Q6IHBhdGggfSwgeyBjb250ZW50OiAvdXNlIHN0ZXB8Li4uLyB9XVxuICAgICAgICogV2Ugd2FudDogcnVuIGxvYWRlciBpZiB3b3JrZmxvdydzIGNvbmRpdGlvbnMgbWF0Y2ggT1IgaXQncyBhbiBhZ2VudCBmaWxlLlxuICAgICAgICogU28gd2Ugd3JhcCBpbjogY29uZGl0aW9uLmFueSA9IFtleGlzdGluZ0NvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XVxuICAgICAgICovXG4gICAgICBydWxlc1trZXldID0ge1xuICAgICAgICAuLi5leGlzdGluZ1J1bGUsXG4gICAgICAgIGxvYWRlcnM6IFtsb2FkZXJQYXRoLCAuLi4oZXhpc3RpbmdSdWxlLmxvYWRlcnMgfHwgW10pXSxcbiAgICAgICAgY29uZGl0aW9uOiB7XG4gICAgICAgICAgYW55OiBbZXhpc3RpbmdSdWxlLmNvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQWxzbyBjb25maWd1cmUgd2VicGFjayBmb3Igbm9uLXR1cmJvcGFjayBidWlsZHNcbiAgICBjb25zdCBleGlzdGluZ1dlYnBhY2sgPSBuZXh0Q29uZmlnLndlYnBhY2s7XG4gICAgbmV4dENvbmZpZy53ZWJwYWNrID0gKHdlYnBhY2tDb25maWcsIGNvbnRleHQpID0+IHtcbiAgICAgIHdlYnBhY2tDb25maWcubW9kdWxlLnJ1bGVzLnB1c2goe1xuICAgICAgICB0ZXN0OiAocmVzb3VyY2VQYXRoOiBzdHJpbmcpID0+IGFnZW50RmlsZVBhdGhzLmluY2x1ZGVzKHJlc291cmNlUGF0aCksXG4gICAgICAgIHVzZTogW3sgbG9hZGVyOiBsb2FkZXJQYXRoIH1dLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZXhpc3RpbmdXZWJwYWNrPy4od2VicGFja0NvbmZpZywgY29udGV4dCkgPz8gd2VicGFja0NvbmZpZztcbiAgICB9O1xuXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIEFkZGVkIGFnZW50IGxvYWRlciB0byB0dXJib3BhY2sgcnVsZXNcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRDb25maWc7XG4gIH07XG59XG4iLCAie1xuICBcIm5hbWVcIjogXCJleHBlcmltZW50YWwtYWdlbnRcIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMC4yLjBcIixcbiAgXCJtYWluXCI6IFwiLi9kaXN0L2luZGV4LmpzXCIsXG4gIFwibW9kdWxlXCI6IFwiLi9kaXN0L2luZGV4Lm1qc1wiLFxuICBcInR5cGVzXCI6IFwiLi9kaXN0L2luZGV4LmQudHNcIixcbiAgXCJzaWRlRWZmZWN0c1wiOiB0cnVlLFxuICBcImxpY2Vuc2VcIjogXCJNSVRcIixcbiAgXCJmaWxlc1wiOiBbXG4gICAgXCJkaXN0LyoqXCJcbiAgXSxcbiAgXCJleHBvcnRzXCI6IHtcbiAgICBcIi5cIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9pbmRleC5qc1wiXG4gICAgfSxcbiAgICBcIi4vbmV4dFwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L25leHQuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvbmV4dC5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9uZXh0LmpzXCJcbiAgICB9LFxuICAgIFwiLi9uZXh0L2xvYWRlclwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L25leHQvbG9hZGVyLmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L25leHQvbG9hZGVyLm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L25leHQvbG9hZGVyLmpzXCJcbiAgICB9LFxuICAgIFwiLi9jbGllbnRcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9jbGllbnQuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvY2xpZW50Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L2NsaWVudC5qc1wiXG4gICAgfVxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwiYnVpbGRcIjogXCJ0c3VwXCIsXG4gICAgXCJkZXZcIjogXCJ0c3VwIC0td2F0Y2hcIixcbiAgICBcImNsZWFuXCI6IFwicm0gLXJmIC50dXJibyAmJiBybSAtcmYgbm9kZV9tb2R1bGVzICYmIHJtIC1yZiBkaXN0XCIsXG4gICAgXCJyZWxlYXNlXCI6IFwicG5wbSBidWlsZCAmJiBucG0gcHVibGlzaFwiLFxuICAgIFwidHlwZWNoZWNrXCI6IFwidHNjIC0tbm9FbWl0XCIsXG4gICAgXCJ0ZXN0XCI6IFwidml0ZXN0IHJ1blwiLFxuICAgIFwidGVzdDp3YXRjaFwiOiBcInZpdGVzdFwiXG4gIH0sXG4gIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBzd2MvY29yZVwiOiBcIl4xLjEwLjBcIixcbiAgICBcIkB2ZXJjZWwvb2lkY1wiOiBcIl4zLjEuMFwiLFxuICAgIFwiYmV0dGVyLWFsbFwiOiBcIl4wLjAuNVwiLFxuICAgIFwiZXJyb3JlXCI6IFwiXjAuOC4yXCIsXG4gICAgXCJmYXN0LWRlZXAtZXF1YWxcIjogXCJeMy4xLjNcIixcbiAgICBcIkB2ZXJjZWwvc2FuZGJveFwiOiBcIjEuNy4xXCIsXG4gICAgXCJ1bGlkXCI6IFwiXjMuMC4yXCIsXG4gICAgXCJ6b2RcIjogXCJeNC4zLjZcIlxuICB9LFxuICBcImRldkRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAYWdlbnQvdHNjb25maWdcIjogXCJ3b3Jrc3BhY2U6KlwiLFxuICAgIFwiQHR5cGVzL25vZGVcIjogXCJeMjAuMTEuMjRcIixcbiAgICBcImRvdGVudlwiOiBcIl4xNy4yLjNcIixcbiAgICBcIm5leHRcIjogXCJeMTYuMC4wXCIsXG4gICAgXCJ0c3VwXCI6IFwiXjguMC4yXCIsXG4gICAgXCJ0eXBlc2NyaXB0XCI6IFwiNS41LjRcIixcbiAgICBcInZpdGVzdFwiOiBcIl4zLjAuMFwiXG4gIH0sXG4gIFwicGVlckRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJhaVwiOiBcIl42LjAuMFwiLFxuICAgIFwid29ya2Zsb3dcIjogXCIqXCJcbiAgfSxcbiAgXCJwdWJsaXNoQ29uZmlnXCI6IHtcbiAgICBcImFjY2Vzc1wiOiBcInB1YmxpY1wiXG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUF3QjtBQUN4QixTQUFvQjtBQUNwQixXQUFzQjs7O0FDRnRCO0FBQUEsRUFDRSxNQUFRO0FBQUEsRUFDUixTQUFXO0FBQUEsRUFDWCxNQUFRO0FBQUEsRUFDUixRQUFVO0FB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QUFBQSxFQUMxQyxRQUFRO0FBQ04sWUFBUTtBQUFBLE1BQ047QUFBQSxJQUNGO0FBQ0EsV0FBTyxPQUFPLGVBQWUsYUFDekIsYUFDQSxZQUFZO0FBQUEsRUFDbEI7QUFFQSxRQUFNLGVBQWUsYUFBYSxZQUFZO0FBQUEsSUFDNUMsV0FBVztBQUFBLE1BQ1QsTUFBTSxDQUFDLEdBQUcsdUJBQXVCLFFBQVE7QUFBQSxJQUMzQztBQUFBLEVBQ0YsQ0FBQztBQU9ELFNBQU8sT0FBTyxPQUFPLFFBQVE7QUFDM0IsVUFBTSxhQUFhLE1BQU0sYUFBYSxPQUFPLEdBQUc7QUFHaEQsUUFBSSxDQUFDLFFBQVEsSUFBSSxjQUFjO0FBQzdCLGlCQUFXLE1BQU07QUFBQSxRQUNmLEdBQUcsV0FBVztBQUFBLFFBQ2QsY0FBcUIsa0JBQVc7QUFBQSxNQUNsQztBQUNBLFVBQUksT0FBTztBQUNULGdCQUFRLElBQUksb0NBQW9DO0FBQUEsTUFDbEQ7QUFBQSxJQUNGO0FBRUEsUUFBSSxDQUFDLGtCQUFrQixlQUFlLFdBQVcsR0FBRztBQUNsRCxhQUFPO0FBQUEsSUFDVDtBQUdBLFVBQU0sUUFBUyxXQUFXLFdBQVcsU0FBUyxDQUFDO0FBSy9DLGVBQVcsT0FBTyxDQUFDLFFBQVEsU0FBUyxRQUFRLE9BQU8sR0FBRztBQUNwRCxZQUFNLGVBQWUsTUFBTSxHQUFHO0FBQzlCLFVBQUksQ0FBQyxjQUFjO0FBQ2pCO0FBQUEsTUFDRjtBQU9BLFlBQU0sR0FBRyxJQUFJO0FBQUEsUUFDWCxHQUFHO0FBQUEsUUFDSCxTQUFTLENBQUMsWUFBWSxHQUFJLGFBQWEsV0FBVyxDQUFDLENBQUU7QUFBQSxRQUNyRCxXQUFXO0FBQUEsVUFDVCxLQUFLLENBQUMsYUFBYSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFBQSxRQUN4RDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBR0EsVUFBTSxrQkFBa0IsV0FBVztBQUNuQyxlQUFXLFVBQVUsQ0FBQyxlQUFlLFlBQVk7QUFDL0Msb0JBQWMsT0FBTyxNQUFNLEtBQUs7QUFBQSxRQUM5QixNQUFNLENBQUMsaUJBQXlCLGVBQWUsU0FBUyxZQUFZO0FBQUEsUUFDcEUsS0FBSyxDQUFDLEVBQUUsUUFBUSxXQUFXLENBQUM7QUFBQSxNQUM5QixDQUFDO0FBQ0QsYUFBTyxrQkFBa0IsZUFBZSxPQUFPLEtBQUs7QUFBQSxJQUN0RDtBQUVBLFFBQUksT0FBTztBQUNULGNBQVEsSUFBSSxtREFBbUQ7QUFBQSxJQUNqRTtBQUVBLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|