@aerokit/sdk 12.74.0 → 12.75.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/cjs/db/store.js +3 -57
- package/dist/dts/db/store.d.ts +1 -2
- package/dist/esm/db/store.mjs +3 -57
- package/package.json +1 -1
package/dist/cjs/db/store.js
CHANGED
|
@@ -238,8 +238,7 @@ class Store {
|
|
|
238
238
|
return DataStoreFacade.getIdColumn(name);
|
|
239
239
|
}
|
|
240
240
|
/**
|
|
241
|
-
* Parse a JSON string
|
|
242
|
-
* It handles both full ISO timestamps (with timezone) and date-only strings (YYYY-MM-DD).
|
|
241
|
+
* Parse a JSON string.
|
|
243
242
|
* Returns undefined for null/empty inputs.
|
|
244
243
|
*/
|
|
245
244
|
static parseResult(result) {
|
|
@@ -249,63 +248,10 @@ class Store {
|
|
|
249
248
|
if (typeof result !== "string") {
|
|
250
249
|
return result;
|
|
251
250
|
}
|
|
252
|
-
|
|
253
|
-
const DATE_ONLY = /^\d{4}-\d{2}-\d{2}$/;
|
|
254
|
-
const TZ_NO_COLON = /([+\-]\d{2})(\d{2})$/;
|
|
255
|
-
const SPACE_DATETIME = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+\-]\d{2}:?\d{2})?$/;
|
|
256
|
-
const TIME_ONLY = /^\d{2}:\d{2}:\d{2}(?:\.\d+)?$/;
|
|
257
|
-
const EPOCH_MS = /^[+\-]?\d{13}$/;
|
|
258
|
-
const EPOCH_S = /^[+\-]?\d{10}$/;
|
|
259
|
-
return JSON.parse(result, (key, value) => {
|
|
260
|
-
if (typeof value === "string") {
|
|
261
|
-
const s = value.trim();
|
|
262
|
-
if (EPOCH_MS.test(s)) {
|
|
263
|
-
const ms = parseInt(s, 10);
|
|
264
|
-
return new Date(ms);
|
|
265
|
-
}
|
|
266
|
-
if (EPOCH_S.test(s)) {
|
|
267
|
-
const ms = parseInt(s, 10) * 1e3;
|
|
268
|
-
return new Date(ms);
|
|
269
|
-
}
|
|
270
|
-
if (SPACE_DATETIME.test(s)) {
|
|
271
|
-
let v = s.replace(" ", "T");
|
|
272
|
-
if (TZ_NO_COLON.test(v)) {
|
|
273
|
-
v = v.replace(TZ_NO_COLON, "$1:$2");
|
|
274
|
-
}
|
|
275
|
-
const d = new Date(v);
|
|
276
|
-
if (!isNaN(d.getTime())) {
|
|
277
|
-
return d;
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
if (TIME_ONLY.test(s)) {
|
|
281
|
-
const m = s.match(/(\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?/);
|
|
282
|
-
if (m) {
|
|
283
|
-
const hh = parseInt(m[1], 10);
|
|
284
|
-
const mm = parseInt(m[2], 10);
|
|
285
|
-
const ss = parseInt(m[3], 10);
|
|
286
|
-
const frac = m[4] ? (m[4] + "000").substring(0, 3) : "000";
|
|
287
|
-
const ms = parseInt(frac, 10);
|
|
288
|
-
const now = /* @__PURE__ */ new Date();
|
|
289
|
-
const d = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), hh, mm, ss, ms));
|
|
290
|
-
return d;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
if (ISO_DATETIME.test(s) || DATE_ONLY.test(s)) {
|
|
294
|
-
let v = s;
|
|
295
|
-
if (TZ_NO_COLON.test(v)) {
|
|
296
|
-
v = v.replace(TZ_NO_COLON, "$1:$2");
|
|
297
|
-
}
|
|
298
|
-
const d = new Date(v);
|
|
299
|
-
if (!isNaN(d.getTime())) {
|
|
300
|
-
return d;
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
return value;
|
|
305
|
-
});
|
|
251
|
+
return JSON.parse(result);
|
|
306
252
|
}
|
|
307
253
|
}
|
|
308
254
|
if (typeof module !== "undefined") {
|
|
309
255
|
module.exports = Store;
|
|
310
256
|
}
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3N0b3JlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBEYXRhU3RvcmVGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YVN0b3JlRmFjYWRlXCIpO1xuXG4vKipcbiAqIERlZmluZXMgdGhlIGF2YWlsYWJsZSBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgcXVlcnkgY29uZGl0aW9ucy5cbiAqL1xuZXhwb3J0IGVudW0gT3BlcmF0b3Ige1xuXHRFUSA9IFwiPVwiLCAvLyBFcXVhbHNcblx0TkUgPSBcIjw+XCIsIC8vIE5vdCBFcXVhbHNcblx0R1QgPSBcIj5cIiwgLy8gR3JlYXRlciBUaGFuXG5cdExUID0gXCI8XCIsIC8vIExlc3MgVGhhblxuXHRHRSA9IFwiPj1cIiwgLy8gR3JlYXRlciBUaGFuIG9yIEVxdWFsc1xuXHRMRSA9IFwiPD1cIiwgLy8gTGVzcyBUaGFuIG9yIEVxdWFsc1xuXHRMSUtFID0gXCJMSUtFXCIsIC8vIFNRTCBMSUtFIG9wZXJhdG9yXG5cdEJFVFdFRU4gPSBcIkJFVFdFRU5cIiwgLy8gU1FMIEJFVFdFRU4gb3BlcmF0b3IgKHJlcXVpcmVzIHR3byB2YWx1ZXMpXG5cdElOID0gXCJJTlwiIC8vIFNRTCBJTiBvcGVyYXRvciAocmVxdWlyZXMgYSBMaXN0IG9yIEFycmF5IG9mIHZhbHVlcylcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBkaXJlY3Rpb24gZm9yIHNvcnRpbmcuXG4gKi9cbmV4cG9ydCBlbnVtIERpcmVjdGlvbiB7XG5cdEFTQyA9IFwiQVNDXCIsIC8vIEFzY2VuZGluZ1xuXHRERVNDID0gXCJERVNDXCIgLy8gRGVzY2VuZGluZ1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgY29uZGl0aW9uIGZvciBmaWx0ZXJpbmcgZGF0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb24ge1xuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0b3BlcmF0b3I6IE9wZXJhdG9yLFxuXHR2YWx1ZTogYW55IHwgYW55W11cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIHNvcnRpbmcgaW5zdHJ1Y3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU29ydCB7XG5cdHByb3BlcnR5TmFtZTogc3RyaW5nLFxuXHRkaXJlY3Rpb246IERpcmVjdGlvblxufVxuXG4vKipcbiAqIERlZmluZXMgb3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgbGlzdCBhbmQgY291bnQgb3BlcmF0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcblx0Y29uZGl0aW9ucz86IENvbmRpdGlvbltdLFxuXHRzb3J0cz86IFNvcnRbXSxcblx0bGltaXQ/OiBudW1iZXIsXG5cdG9mZnNldD86IG51bWJlcixcblx0bGFuZ3VhZ2U/OiBzdHJpbmdcbn1cblxuaW1wb3J0IHsgVHlwZWRRdWVyeVBhcmFtZXRlciwgTmFtZWRRdWVyeVBhcmFtZXRlciB9IGZyb20gJy4vcXVlcnknO1xuXG4vKipcbiAqIEZhY2FkZSBjbGFzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgdW5kZXJseWluZyBEaXJpZ2libGUgRGF0YSBTdG9yZS5cbiAqIEFsbCBtZXRob2RzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBKYXZhU2NyaXB0IG9iamVjdHMgdG8vZnJvbSBKU09OIHN0cmluZ3NcbiAqIGJlZm9yZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBuYXRpdmUgSmF2YSBmYWNhZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdG9yZSB7XG5cblx0LyoqXG5cdCAqIFNhdmVzIGEgbmV3IGVudHJ5IHRvIHRoZSBkYXRhIHN0b3JlLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBlbnRyeSBUaGUgSmF2YVNjcmlwdCBvYmplY3QgdG8gc2F2ZS5cblx0ICogQHJldHVybnMgVGhlIElEIG9mIHRoZSBuZXdseSBjcmVhdGVkIGVudHJ5IChzdHJpbmcgb3IgbnVtYmVyKS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgc2F2ZShuYW1lOiBzdHJpbmcsIGVudHJ5OiBhbnkpOiBzdHJpbmcgfCBudW1iZXIge1xuXHRcdHJldHVybiBEYXRhU3RvcmVGYWNhZGUuc2F2ZShuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluc2VydHMgYSBuZXcgZW50cnkgb3IgdXBkYXRlcyBhbiBleGlzdGluZyBvbmUgaWYgdGhlIElEIGlzIHByZXNlbnQuXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBlbnRpdHkvdGFibGUgbmFtZS5cblx0ICogQHBhcmFtIGVudHJ5IFRoZSBKYXZhU2NyaXB0IG9iamVjdCB0byBpbnNlcnQvdXBkYXRlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cHNlcnQobmFtZTogc3RyaW5nLCBlbnRyeTogYW55KTogdm9pZCB7XG5cdFx0RGF0YVN0b3JlRmFjYWRlLnVwc2VydChuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZW50cnkuXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBlbnRpdHkvdGFibGUgbmFtZS5cblx0ICogQHBhcmFtIGVudHJ5IFRoZSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoZSBJRCBhbmQgdXBkYXRlZCBkYXRhLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cGRhdGUobmFtZTogc3RyaW5nLCBlbnRyeTogYW55KTogdm9pZCB7XG5cdFx0RGF0YVN0b3JlRmFjYWRlLnVwZGF0ZShuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExpc3RzIGVudHJpZXMgYmFzZWQgb24gb3B0aW9uYWwgZmlsdGVyaW5nLCBzb3J0aW5nLCBhbmQgcGFnaW5hdGlvbiBvcHRpb25zLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHtAbGluayBPcHRpb25zfSBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGxpc3QobmFtZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUubGlzdChuYW1lLCBvcHRpb25zID8gSlNPTi5zdHJpbmdpZnkob3B0aW9ucykgOiBudWxsKTtcblx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb3VudHMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGJhc2VkIG9uIG9wdGlvbmFsIGZpbHRlcmluZyBvcHRpb25zLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHtAbGluayBPcHRpb25zfSBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgY291bnQgb2YgbWF0Y2hpbmcgZW50cmllcy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY291bnQobmFtZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IG51bWJlciB7XG5cdFx0Y29uc3Qgb3B0aW9uc1N0cmluZyA9IG9wdGlvbnMgPyBKU09OLnN0cmluZ2lmeShvcHRpb25zKSA6IG51bGw7XG5cdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLmNvdW50KG5hbWUsIG9wdGlvbnNTdHJpbmcpO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgc2luZ2xlIGVudHJ5IGJ5IGl0cyBJRC5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRyeS5cblx0ICogQHJldHVybnMgVGhlIGVudHJ5IG9iamVjdCwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0KG5hbWU6IHN0cmluZywgaWQ6IGFueSk6IGFueSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLmdldChuYW1lLCBpZCk7XG5cdFx0Ly8gQXNzdW1pbmcgdGhlIG5hdGl2ZSBBUEkgcmV0dXJucyBudWxsL3VuZGVmaW5lZCBvciBhbiBlbXB0eSBKU09OIHN0cmluZyBpZiBub3QgZm91bmQsIFxuXHRcdC8vIG90aGVyd2lzZSBKU09OLnBhcnNlIGhhbmRsZXMgdGhlIGNvbnZlcnNpb24uXG5cdFx0aWYgKHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IFwiXCIpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGFuIGVudHJ5IGJ5IGl0cyBJRC5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRyeSB0byByZW1vdmUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHJlbW92ZShuYW1lOiBzdHJpbmcsIGlkOiBhbnkpOiB2b2lkIHtcblx0XHREYXRhU3RvcmVGYWNhZGUuZGVsZXRlRW50cnkobmFtZSwgaWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpbmRzIGVudHJpZXMgbWF0Y2hpbmcgYW4gZXhhbXBsZSBvYmplY3QgKHF1ZXJ5LWJ5LWV4YW1wbGUpLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBleGFtcGxlIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgdG8gbWF0Y2guXG5cdCAqIEBwYXJhbSBsaW1pdCBNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzIHRvIHJldHVybi5cblx0ICogQHBhcmFtIG9mZnNldCBOdW1iZXIgb2YgcmVzdWx0cyB0byBza2lwLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBtYXRjaGluZyBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGZpbmQobmFtZTogc3RyaW5nLCBleGFtcGxlOiBhbnksIGxpbWl0OiBudW1iZXIgPSAxMDAsIG9mZnNldDogbnVtYmVyID0gMCk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUuZmluZChuYW1lLCBKU09OLnN0cmluZ2lmeShleGFtcGxlKSwgbGltaXQsIG9mZnNldCk7XG5cdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdH1cblxuXHQvKipcblx0ICogUXVlcmllcyBhbGwgZW50cmllcyBmb3IgYSBnaXZlbiBzY3JpcHQgd2l0aCBwYWdpbmF0aW9uLlxuXHQgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHNjcmlwdC5cblx0ICogQHBhcmFtIGxpbWl0IE1heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgdG8gcmV0dXJuLlxuXHQgKiBAcGFyYW0gb2Zmc2V0IE51bWJlciBvZiByZXN1bHRzIHRvIHNraXAuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIEphdmFTY3JpcHQgb2JqZWN0cy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcXVlcnkocXVlcnk6IHN0cmluZywgcGFyYW1ldGVycz86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSB8IFR5cGVkUXVlcnlQYXJhbWV0ZXIgfCBOYW1lZFF1ZXJ5UGFyYW1ldGVyKVtdLCBsaW1pdDogbnVtYmVyID0gMTAwLCBvZmZzZXQ6IG51bWJlciA9IDApOiBhbnlbXSB7XG5cdFx0bGV0IGFycjogYW55W10gPSBbXTtcblx0XHRpZiAocGFyYW1ldGVycyA9PSBudWxsKSB7XG5cdFx0XHRhcnIgPSBbXTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbWV0ZXJzID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHBhcmFtZXRlcnMpO1xuXHRcdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIklucHV0IHBhcmFtZXRlciBzdHJpbmcgbXVzdCByZXByZXNlbnQgYSBKU09OIGFycmF5XCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFyciA9IHBhcnNlZDtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBKU09OIHBhcmFtZXRlcnM6IFwiICsgZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBhcmFtZXRlcnMpKSB7XG5cdFx0XHRhcnIgPSBwYXJhbWV0ZXJzO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXJzIG11c3QgYmUgZWl0aGVyIGFuIGFycmF5IG9yIGEgSlNPTiBzdHJpbmdcIik7XG5cdFx0fVxuXG5cdFx0aWYgKGFyci5sZW5ndGggPT09IDApIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IERhdGFTdG9yZUZhY2FkZS5xdWVyeShxdWVyeSwgbnVsbCwgbGltaXQsIG9mZnNldCk7XG5cdFx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBmaXJzdCA9IGFyclswXTtcblxuXHRcdC8vIE5hbWVkUXVlcnlQYXJhbWV0ZXIgKGhhcyBuYW1lICsgdHlwZSlcblx0XHRpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwibmFtZVwiIGluIGZpcnN0ICYmIFwidHlwZVwiIGluIGZpcnN0KSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnlOYW1lZChxdWVyeSwgSlNPTi5zdHJpbmdpZnkoYXJyKSwgbGltaXQsIG9mZnNldCk7XG5cdFx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0XHR9XG5cblx0XHQvLyBUeXBlZFF1ZXJ5UGFyYW1ldGVyIChoYXMgdHlwZSwgbm8gbmFtZSlcblx0XHRpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwidHlwZVwiIGluIGZpcnN0ICYmICEoXCJuYW1lXCIgaW4gZmlyc3QpKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnkocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Ly8gUHJpbWl0aXZlIGFycmF5XG5cdFx0aWYgKFxuXHRcdFx0YXJyLmV2ZXJ5KFxuXHRcdFx0XHQodikgPT5cblx0XHRcdFx0XHR0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiB8fFxuXHRcdFx0XHRcdHR5cGVvZiB2ID09PSBcIm51bWJlclwiIHx8XG5cdFx0XHRcdFx0dHlwZW9mIHYgPT09IFwiYm9vbGVhblwiIHx8XG5cdFx0XHRcdFx0diBpbnN0YW5jZW9mIERhdGUgfHxcblx0XHRcdFx0XHRBcnJheS5pc0FycmF5KHYpXG5cdFx0XHQpXG5cdFx0KSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnkocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgcGFyYW1ldGVyIGZvcm1hdDogXCIgKyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSk7XG5cdH1cblxuXHQvKipcblx0ICogUXVlcmllcyBhbGwgZW50cmllcyBmb3IgYSBnaXZlbiBlbnRpdHkgbmFtZSB3aXRob3V0IHBhZ2luYXRpb24uXG5cdCAqIEBwYXJhbSBxdWVyeSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHF1ZXJ5TmF0aXZlKHF1ZXJ5OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBUeXBlZFF1ZXJ5UGFyYW1ldGVyIHwgTmFtZWRRdWVyeVBhcmFtZXRlcilbXSwgbGltaXQ6IG51bWJlciA9IDEwMCwgb2Zmc2V0OiBudW1iZXIgPSAwKTogYW55W10ge1xuXHRcdGxldCBhcnI6IGFueVtdID0gW107XG5cdFx0aWYgKHBhcmFtZXRlcnMgPT0gbnVsbCkge1xuXHRcdFx0YXJyID0gW107XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVycyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXJhbWV0ZXJzKTtcblx0XHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBwYXJhbWV0ZXIgc3RyaW5nIG11c3QgcmVwcmVzZW50IGEgSlNPTiBhcnJheVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhcnIgPSBwYXJzZWQ7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgSlNPTiBwYXJhbWV0ZXJzOiBcIiArIGUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSkge1xuXHRcdFx0YXJyID0gcGFyYW1ldGVycztcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBtdXN0IGJlIGVpdGhlciBhbiBhcnJheSBvciBhIEpTT04gc3RyaW5nXCIpO1xuXHRcdH1cblxuXHRcdGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnlOYXRpdmUocXVlcnksIG51bGwsIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmlyc3QgPSBhcnJbMF07XG5cblx0XHQvLyBOYW1lZFF1ZXJ5UGFyYW1ldGVyIChoYXMgbmFtZSArIHR5cGUpXG5cdFx0aWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcIm5hbWVcIiBpbiBmaXJzdCAmJiBcInR5cGVcIiBpbiBmaXJzdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlTmFtZWQocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Ly8gVHlwZWRRdWVyeVBhcmFtZXRlciAoaGFzIHR5cGUsIG5vIG5hbWUpXG5cdFx0aWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcInR5cGVcIiBpbiBmaXJzdCAmJiAhKFwibmFtZVwiIGluIGZpcnN0KSkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlKHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdC8vIFByaW1pdGl2ZSBhcnJheVxuXHRcdGlmIChcblx0XHRcdGFyci5ldmVyeShcblx0XHRcdFx0KHYpID0+XG5cdFx0XHRcdFx0dHlwZW9mIHYgPT09IFwic3RyaW5nXCIgfHxcblx0XHRcdFx0XHR0eXBlb2YgdiA9PT0gXCJudW1iZXJcIiB8fFxuXHRcdFx0XHRcdHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIiB8fFxuXHRcdFx0XHRcdHYgaW5zdGFuY2VvZiBEYXRlIHx8XG5cdFx0XHRcdFx0QXJyYXkuaXNBcnJheSh2KVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlKHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHBhcmFtZXRlciBmb3JtYXQ6IFwiICsgSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycykpO1xuXHR9XG5cblx0Ly8gLS0tIE1ldGFkYXRhIEdldHRlcnMgLS0tXG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGVudGl0eSBhc3NvY2lhdGVkIHdpdGggdGhlIHN0b3JlIG5hbWUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldEVudGl0eU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldEVudGl0eU5hbWUobmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSB0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRUYWJsZU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldFRhYmxlTmFtZShuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lIHVzZWQgYXMgdGhlIElEIGZpZWxkIGluIHRoZSBlbnRpdHkgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRJZE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldElkTmFtZShuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB1bmRlcmx5aW5nIGRhdGFiYXNlIGNvbHVtbiBuYW1lIHVzZWQgZm9yIHRoZSBJRCBmaWVsZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0SWRDb2x1bW4obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldElkQ29sdW1uKG5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlIGEgSlNPTiBzdHJpbmcgYW5kIHJldml2ZSBJU08gZGF0ZSBzdHJpbmdzIGludG8gSlMgRGF0ZSBvYmplY3RzLlxuXHQgKiBJdCBoYW5kbGVzIGJvdGggZnVsbCBJU08gdGltZXN0YW1wcyAod2l0aCB0aW1lem9uZSkgYW5kIGRhdGUtb25seSBzdHJpbmdzIChZWVlZLU1NLUREKS5cblx0ICogUmV0dXJucyB1bmRlZmluZWQgZm9yIG51bGwvZW1wdHkgaW5wdXRzLlxuXHQgKi9cblx0cHJpdmF0ZSBzdGF0aWMgcGFyc2VSZXN1bHQocmVzdWx0OiBhbnkpOiBhbnkge1xuXHRcdGlmIChyZXN1bHQgPT09IG51bGwgfHwgcmVzdWx0ID09PSB1bmRlZmluZWQgfHwgcmVzdWx0ID09PSAnJykge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiByZXN1bHQgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHQvLyBhbHJlYWR5IGFuIG9iamVjdC9hcnJheVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cblx0XHQvLyBBY2NlcHQgdGltZXpvbmUgb2Zmc2V0cyB3aXRoIG9yIHdpdGhvdXQgY29sb24gKGUuZy4gKzAwOjAwIG9yICswMDAwKVxuXHRcdGNvbnN0IElTT19EQVRFVElNRSA9IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGQrKT8oPzpafFsrXFwtXVxcZHsyfTo/XFxkezJ9KSQvO1xuXHRcdGNvbnN0IERBVEVfT05MWSA9IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLztcblx0XHRjb25zdCBUWl9OT19DT0xPTiA9IC8oWytcXC1dXFxkezJ9KShcXGR7Mn0pJC87XG5cdFx0Ly8gU3BhY2Utc2VwYXJhdGVkIGRhdGV0aW1lOiBcIllZWVktTU0tREQgSEg6TU06U1NcIiAob3B0aW9uYWxseSB3aXRoIGZyYWN0aW9uYWwgc2Vjb25kcyBhbmQgdGltZXpvbmUpXG5cdFx0Y29uc3QgU1BBQ0VfREFURVRJTUUgPSAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9IFxcZHsyfTpcXGR7Mn06XFxkezJ9KD86XFwuXFxkKyk/KD86WnxbK1xcLV1cXGR7Mn06P1xcZHsyfSk/JC87XG5cdFx0Ly8gVGltZS1vbmx5IHN0cmluZ3MgbGlrZSBcIjExOjI5OjMzXCIgb3IgXCIxMToyOTozMy4xMjNcIlxuXHRcdGNvbnN0IFRJTUVfT05MWSA9IC9eXFxkezJ9OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGQrKT8kLztcblx0XHQvLyBFcG9jaCBzdHJpbmdzOiAxMy1kaWdpdCBtcyBvciAxMC1kaWdpdCBzZWNvbmRzXG5cdFx0Y29uc3QgRVBPQ0hfTVMgPSAvXlsrXFwtXT9cXGR7MTN9JC87XG5cdFx0Y29uc3QgRVBPQ0hfUyA9IC9eWytcXC1dP1xcZHsxMH0kLztcblxuXHRcdHJldHVybiBKU09OLnBhcnNlKHJlc3VsdCwgKGtleSwgdmFsdWUpID0+IHtcblx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdGNvbnN0IHMgPSB2YWx1ZS50cmltKCk7XG5cblx0XHRcdFx0Ly8gRXBvY2ggbWlsbGlzZWNvbmQvc2Vjb25kIHN0cmluZ3Ncblx0XHRcdFx0aWYgKEVQT0NIX01TLnRlc3QocykpIHtcblx0XHRcdFx0XHRjb25zdCBtcyA9IHBhcnNlSW50KHMsIDEwKTtcblx0XHRcdFx0XHRyZXR1cm4gbmV3IERhdGUobXMpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChFUE9DSF9TLnRlc3QocykpIHtcblx0XHRcdFx0XHRjb25zdCBtcyA9IHBhcnNlSW50KHMsIDEwKSAqIDEwMDA7XG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBEYXRlKG1zKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFNwYWNlLXNlcGFyYXRlZCBkYXRldGltZXM6IG5vcm1hbGl6ZSB0byBJU08gYW5kIHBhcnNlXG5cdFx0XHRcdGlmIChTUEFDRV9EQVRFVElNRS50ZXN0KHMpKSB7XG5cdFx0XHRcdFx0bGV0IHYgPSBzLnJlcGxhY2UoJyAnLCAnVCcpO1xuXHRcdFx0XHRcdGlmIChUWl9OT19DT0xPTi50ZXN0KHYpKSB7XG5cdFx0XHRcdFx0XHR2ID0gdi5yZXBsYWNlKFRaX05PX0NPTE9OLCAnJDE6JDInKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgZCA9IG5ldyBEYXRlKHYpO1xuXHRcdFx0XHRcdGlmICghaXNOYU4oZC5nZXRUaW1lKCkpKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUaW1lLW9ubHkgc3RyaW5nczogYXR0YWNoIGN1cnJlbnQgVVRDIGRhdGUgYW5kIHBhcnNlIGFzIFVUQ1xuXHRcdFx0XHRpZiAoVElNRV9PTkxZLnRlc3QocykpIHtcblx0XHRcdFx0XHRjb25zdCBtID0gcy5tYXRjaCgvKFxcZHsyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC4oXFxkKykpPy8pO1xuXHRcdFx0XHRcdGlmIChtKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBoaCA9IHBhcnNlSW50KG1bMV0sIDEwKTtcblx0XHRcdFx0XHRcdGNvbnN0IG1tID0gcGFyc2VJbnQobVsyXSwgMTApO1xuXHRcdFx0XHRcdFx0Y29uc3Qgc3MgPSBwYXJzZUludChtWzNdLCAxMCk7XG5cdFx0XHRcdFx0XHRjb25zdCBmcmFjID0gbVs0XSA/IChtWzRdICsgJzAwMCcpLnN1YnN0cmluZygwLCAzKSA6ICcwMDAnO1xuXHRcdFx0XHRcdFx0Y29uc3QgbXMgPSBwYXJzZUludChmcmFjLCAxMCk7XG5cdFx0XHRcdFx0XHRjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRcdFx0Y29uc3QgZCA9IG5ldyBEYXRlKERhdGUuVVRDKG5vdy5nZXRVVENGdWxsWWVhcigpLCBub3cuZ2V0VVRDTW9udGgoKSwgbm93LmdldFVUQ0RhdGUoKSwgaGgsIG1tLCBzcywgbXMpKTtcblx0XHRcdFx0XHRcdHJldHVybiBkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChJU09fREFURVRJTUUudGVzdChzKSB8fCBEQVRFX09OTFkudGVzdChzKSkge1xuXHRcdFx0XHRcdC8vIG5vcm1hbGl6ZSB0aW1lem9uZSB3aXRob3V0IGNvbG9uIChlLmcuICswMDAwIC0+ICswMDowMCkgYmVjYXVzZSBEYXRlIHBhcnNpbmdcblx0XHRcdFx0XHQvLyBwcmVmZXJzIHRoZSBjb2xvbi1zZXBhcmF0ZWQgb2Zmc2V0IGluIG1hbnkgSlMgZW5naW5lc1xuXHRcdFx0XHRcdGxldCB2ID0gcztcblx0XHRcdFx0XHRpZiAoVFpfTk9fQ09MT04udGVzdCh2KSkge1xuXHRcdFx0XHRcdFx0diA9IHYucmVwbGFjZShUWl9OT19DT0xPTiwgJyQxOiQyJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IGQgPSBuZXcgRGF0ZSh2KTtcblx0XHRcdFx0XHRpZiAoIWlzTmFOKGQuZ2V0VGltZSgpKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSk7XG5cdH1cblxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRz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
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3N0b3JlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBEYXRhU3RvcmVGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YVN0b3JlRmFjYWRlXCIpO1xuXG4vKipcbiAqIERlZmluZXMgdGhlIGF2YWlsYWJsZSBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgcXVlcnkgY29uZGl0aW9ucy5cbiAqL1xuZXhwb3J0IGVudW0gT3BlcmF0b3Ige1xuXHRFUSA9IFwiPVwiLCAvLyBFcXVhbHNcblx0TkUgPSBcIjw+XCIsIC8vIE5vdCBFcXVhbHNcblx0R1QgPSBcIj5cIiwgLy8gR3JlYXRlciBUaGFuXG5cdExUID0gXCI8XCIsIC8vIExlc3MgVGhhblxuXHRHRSA9IFwiPj1cIiwgLy8gR3JlYXRlciBUaGFuIG9yIEVxdWFsc1xuXHRMRSA9IFwiPD1cIiwgLy8gTGVzcyBUaGFuIG9yIEVxdWFsc1xuXHRMSUtFID0gXCJMSUtFXCIsIC8vIFNRTCBMSUtFIG9wZXJhdG9yXG5cdEJFVFdFRU4gPSBcIkJFVFdFRU5cIiwgLy8gU1FMIEJFVFdFRU4gb3BlcmF0b3IgKHJlcXVpcmVzIHR3byB2YWx1ZXMpXG5cdElOID0gXCJJTlwiIC8vIFNRTCBJTiBvcGVyYXRvciAocmVxdWlyZXMgYSBMaXN0IG9yIEFycmF5IG9mIHZhbHVlcylcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBkaXJlY3Rpb24gZm9yIHNvcnRpbmcuXG4gKi9cbmV4cG9ydCBlbnVtIERpcmVjdGlvbiB7XG5cdEFTQyA9IFwiQVNDXCIsIC8vIEFzY2VuZGluZ1xuXHRERVNDID0gXCJERVNDXCIgLy8gRGVzY2VuZGluZ1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgY29uZGl0aW9uIGZvciBmaWx0ZXJpbmcgZGF0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb24ge1xuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0b3BlcmF0b3I6IE9wZXJhdG9yLFxuXHR2YWx1ZTogYW55IHwgYW55W11cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIHNvcnRpbmcgaW5zdHJ1Y3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU29ydCB7XG5cdHByb3BlcnR5TmFtZTogc3RyaW5nLFxuXHRkaXJlY3Rpb246IERpcmVjdGlvblxufVxuXG4vKipcbiAqIERlZmluZXMgb3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgbGlzdCBhbmQgY291bnQgb3BlcmF0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcblx0Y29uZGl0aW9ucz86IENvbmRpdGlvbltdLFxuXHRzb3J0cz86IFNvcnRbXSxcblx0bGltaXQ/OiBudW1iZXIsXG5cdG9mZnNldD86IG51bWJlcixcblx0bGFuZ3VhZ2U/OiBzdHJpbmdcbn1cblxuaW1wb3J0IHsgVHlwZWRRdWVyeVBhcmFtZXRlciwgTmFtZWRRdWVyeVBhcmFtZXRlciB9IGZyb20gJy4vcXVlcnknO1xuXG4vKipcbiAqIEZhY2FkZSBjbGFzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgdW5kZXJseWluZyBEaXJpZ2libGUgRGF0YSBTdG9yZS5cbiAqIEFsbCBtZXRob2RzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBKYXZhU2NyaXB0IG9iamVjdHMgdG8vZnJvbSBKU09OIHN0cmluZ3NcbiAqIGJlZm9yZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBuYXRpdmUgSmF2YSBmYWNhZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdG9yZSB7XG5cblx0LyoqXG5cdCAqIFNhdmVzIGEgbmV3IGVudHJ5IHRvIHRoZSBkYXRhIHN0b3JlLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBlbnRyeSBUaGUgSmF2YVNjcmlwdCBvYmplY3QgdG8gc2F2ZS5cblx0ICogQHJldHVybnMgVGhlIElEIG9mIHRoZSBuZXdseSBjcmVhdGVkIGVudHJ5IChzdHJpbmcgb3IgbnVtYmVyKS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgc2F2ZShuYW1lOiBzdHJpbmcsIGVudHJ5OiBhbnkpOiBzdHJpbmcgfCBudW1iZXIge1xuXHRcdHJldHVybiBEYXRhU3RvcmVGYWNhZGUuc2F2ZShuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluc2VydHMgYSBuZXcgZW50cnkgb3IgdXBkYXRlcyBhbiBleGlzdGluZyBvbmUgaWYgdGhlIElEIGlzIHByZXNlbnQuXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBlbnRpdHkvdGFibGUgbmFtZS5cblx0ICogQHBhcmFtIGVudHJ5IFRoZSBKYXZhU2NyaXB0IG9iamVjdCB0byBpbnNlcnQvdXBkYXRlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cHNlcnQobmFtZTogc3RyaW5nLCBlbnRyeTogYW55KTogdm9pZCB7XG5cdFx0RGF0YVN0b3JlRmFjYWRlLnVwc2VydChuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZW50cnkuXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBlbnRpdHkvdGFibGUgbmFtZS5cblx0ICogQHBhcmFtIGVudHJ5IFRoZSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoZSBJRCBhbmQgdXBkYXRlZCBkYXRhLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cGRhdGUobmFtZTogc3RyaW5nLCBlbnRyeTogYW55KTogdm9pZCB7XG5cdFx0RGF0YVN0b3JlRmFjYWRlLnVwZGF0ZShuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExpc3RzIGVudHJpZXMgYmFzZWQgb24gb3B0aW9uYWwgZmlsdGVyaW5nLCBzb3J0aW5nLCBhbmQgcGFnaW5hdGlvbiBvcHRpb25zLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHtAbGluayBPcHRpb25zfSBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGxpc3QobmFtZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUubGlzdChuYW1lLCBvcHRpb25zID8gSlNPTi5zdHJpbmdpZnkob3B0aW9ucykgOiBudWxsKTtcblx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb3VudHMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGJhc2VkIG9uIG9wdGlvbmFsIGZpbHRlcmluZyBvcHRpb25zLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHtAbGluayBPcHRpb25zfSBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgY291bnQgb2YgbWF0Y2hpbmcgZW50cmllcy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY291bnQobmFtZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IG51bWJlciB7XG5cdFx0Y29uc3Qgb3B0aW9uc1N0cmluZyA9IG9wdGlvbnMgPyBKU09OLnN0cmluZ2lmeShvcHRpb25zKSA6IG51bGw7XG5cdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLmNvdW50KG5hbWUsIG9wdGlvbnNTdHJpbmcpO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgc2luZ2xlIGVudHJ5IGJ5IGl0cyBJRC5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRyeS5cblx0ICogQHJldHVybnMgVGhlIGVudHJ5IG9iamVjdCwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0KG5hbWU6IHN0cmluZywgaWQ6IGFueSk6IGFueSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLmdldChuYW1lLCBpZCk7XG5cdFx0Ly8gQXNzdW1pbmcgdGhlIG5hdGl2ZSBBUEkgcmV0dXJucyBudWxsL3VuZGVmaW5lZCBvciBhbiBlbXB0eSBKU09OIHN0cmluZyBpZiBub3QgZm91bmQsIFxuXHRcdC8vIG90aGVyd2lzZSBKU09OLnBhcnNlIGhhbmRsZXMgdGhlIGNvbnZlcnNpb24uXG5cdFx0aWYgKHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IFwiXCIpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGFuIGVudHJ5IGJ5IGl0cyBJRC5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRyeSB0byByZW1vdmUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHJlbW92ZShuYW1lOiBzdHJpbmcsIGlkOiBhbnkpOiB2b2lkIHtcblx0XHREYXRhU3RvcmVGYWNhZGUuZGVsZXRlRW50cnkobmFtZSwgaWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpbmRzIGVudHJpZXMgbWF0Y2hpbmcgYW4gZXhhbXBsZSBvYmplY3QgKHF1ZXJ5LWJ5LWV4YW1wbGUpLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBleGFtcGxlIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgdG8gbWF0Y2guXG5cdCAqIEBwYXJhbSBsaW1pdCBNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzIHRvIHJldHVybi5cblx0ICogQHBhcmFtIG9mZnNldCBOdW1iZXIgb2YgcmVzdWx0cyB0byBza2lwLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBtYXRjaGluZyBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGZpbmQobmFtZTogc3RyaW5nLCBleGFtcGxlOiBhbnksIGxpbWl0OiBudW1iZXIgPSAxMDAsIG9mZnNldDogbnVtYmVyID0gMCk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUuZmluZChuYW1lLCBKU09OLnN0cmluZ2lmeShleGFtcGxlKSwgbGltaXQsIG9mZnNldCk7XG5cdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdH1cblxuXHQvKipcblx0ICogUXVlcmllcyBhbGwgZW50cmllcyBmb3IgYSBnaXZlbiBzY3JpcHQgd2l0aCBwYWdpbmF0aW9uLlxuXHQgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHNjcmlwdC5cblx0ICogQHBhcmFtIGxpbWl0IE1heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgdG8gcmV0dXJuLlxuXHQgKiBAcGFyYW0gb2Zmc2V0IE51bWJlciBvZiByZXN1bHRzIHRvIHNraXAuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIEphdmFTY3JpcHQgb2JqZWN0cy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcXVlcnkocXVlcnk6IHN0cmluZywgcGFyYW1ldGVycz86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSB8IFR5cGVkUXVlcnlQYXJhbWV0ZXIgfCBOYW1lZFF1ZXJ5UGFyYW1ldGVyKVtdLCBsaW1pdDogbnVtYmVyID0gMTAwLCBvZmZzZXQ6IG51bWJlciA9IDApOiBhbnlbXSB7XG5cdFx0bGV0IGFycjogYW55W10gPSBbXTtcblx0XHRpZiAocGFyYW1ldGVycyA9PSBudWxsKSB7XG5cdFx0XHRhcnIgPSBbXTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbWV0ZXJzID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHBhcmFtZXRlcnMpO1xuXHRcdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIklucHV0IHBhcmFtZXRlciBzdHJpbmcgbXVzdCByZXByZXNlbnQgYSBKU09OIGFycmF5XCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFyciA9IHBhcnNlZDtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBKU09OIHBhcmFtZXRlcnM6IFwiICsgZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBhcmFtZXRlcnMpKSB7XG5cdFx0XHRhcnIgPSBwYXJhbWV0ZXJzO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXJzIG11c3QgYmUgZWl0aGVyIGFuIGFycmF5IG9yIGEgSlNPTiBzdHJpbmdcIik7XG5cdFx0fVxuXG5cdFx0aWYgKGFyci5sZW5ndGggPT09IDApIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IERhdGFTdG9yZUZhY2FkZS5xdWVyeShxdWVyeSwgbnVsbCwgbGltaXQsIG9mZnNldCk7XG5cdFx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBmaXJzdCA9IGFyclswXTtcblxuXHRcdC8vIE5hbWVkUXVlcnlQYXJhbWV0ZXIgKGhhcyBuYW1lICsgdHlwZSlcblx0XHRpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwibmFtZVwiIGluIGZpcnN0ICYmIFwidHlwZVwiIGluIGZpcnN0KSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnlOYW1lZChxdWVyeSwgSlNPTi5zdHJpbmdpZnkoYXJyKSwgbGltaXQsIG9mZnNldCk7XG5cdFx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0XHR9XG5cblx0XHQvLyBUeXBlZFF1ZXJ5UGFyYW1ldGVyIChoYXMgdHlwZSwgbm8gbmFtZSlcblx0XHRpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwidHlwZVwiIGluIGZpcnN0ICYmICEoXCJuYW1lXCIgaW4gZmlyc3QpKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnkocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Ly8gUHJpbWl0aXZlIGFycmF5XG5cdFx0aWYgKFxuXHRcdFx0YXJyLmV2ZXJ5KFxuXHRcdFx0XHQodikgPT5cblx0XHRcdFx0XHR0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiB8fFxuXHRcdFx0XHRcdHR5cGVvZiB2ID09PSBcIm51bWJlclwiIHx8XG5cdFx0XHRcdFx0dHlwZW9mIHYgPT09IFwiYm9vbGVhblwiIHx8XG5cdFx0XHRcdFx0diBpbnN0YW5jZW9mIERhdGUgfHxcblx0XHRcdFx0XHRBcnJheS5pc0FycmF5KHYpXG5cdFx0XHQpXG5cdFx0KSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnkocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgcGFyYW1ldGVyIGZvcm1hdDogXCIgKyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSk7XG5cdH1cblxuXHQvKipcblx0ICogUXVlcmllcyBhbGwgZW50cmllcyBmb3IgYSBnaXZlbiBlbnRpdHkgbmFtZSB3aXRob3V0IHBhZ2luYXRpb24uXG5cdCAqIEBwYXJhbSBxdWVyeSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHF1ZXJ5TmF0aXZlKHF1ZXJ5OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBUeXBlZFF1ZXJ5UGFyYW1ldGVyIHwgTmFtZWRRdWVyeVBhcmFtZXRlcilbXSwgbGltaXQ6IG51bWJlciA9IDEwMCwgb2Zmc2V0OiBudW1iZXIgPSAwKTogYW55W10ge1xuXHRcdGxldCBhcnI6IGFueVtdID0gW107XG5cdFx0aWYgKHBhcmFtZXRlcnMgPT0gbnVsbCkge1xuXHRcdFx0YXJyID0gW107XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVycyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXJhbWV0ZXJzKTtcblx0XHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBwYXJhbWV0ZXIgc3RyaW5nIG11c3QgcmVwcmVzZW50IGEgSlNPTiBhcnJheVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhcnIgPSBwYXJzZWQ7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgSlNPTiBwYXJhbWV0ZXJzOiBcIiArIGUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSkge1xuXHRcdFx0YXJyID0gcGFyYW1ldGVycztcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBtdXN0IGJlIGVpdGhlciBhbiBhcnJheSBvciBhIEpTT04gc3RyaW5nXCIpO1xuXHRcdH1cblxuXHRcdGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnlOYXRpdmUocXVlcnksIG51bGwsIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmlyc3QgPSBhcnJbMF07XG5cblx0XHQvLyBOYW1lZFF1ZXJ5UGFyYW1ldGVyIChoYXMgbmFtZSArIHR5cGUpXG5cdFx0aWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcIm5hbWVcIiBpbiBmaXJzdCAmJiBcInR5cGVcIiBpbiBmaXJzdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlTmFtZWQocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Ly8gVHlwZWRRdWVyeVBhcmFtZXRlciAoaGFzIHR5cGUsIG5vIG5hbWUpXG5cdFx0aWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcInR5cGVcIiBpbiBmaXJzdCAmJiAhKFwibmFtZVwiIGluIGZpcnN0KSkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlKHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdC8vIFByaW1pdGl2ZSBhcnJheVxuXHRcdGlmIChcblx0XHRcdGFyci5ldmVyeShcblx0XHRcdFx0KHYpID0+XG5cdFx0XHRcdFx0dHlwZW9mIHYgPT09IFwic3RyaW5nXCIgfHxcblx0XHRcdFx0XHR0eXBlb2YgdiA9PT0gXCJudW1iZXJcIiB8fFxuXHRcdFx0XHRcdHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIiB8fFxuXHRcdFx0XHRcdHYgaW5zdGFuY2VvZiBEYXRlIHx8XG5cdFx0XHRcdFx0QXJyYXkuaXNBcnJheSh2KVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlKHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHBhcmFtZXRlciBmb3JtYXQ6IFwiICsgSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycykpO1xuXHR9XG5cblx0Ly8gLS0tIE1ldGFkYXRhIEdldHRlcnMgLS0tXG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGVudGl0eSBhc3NvY2lhdGVkIHdpdGggdGhlIHN0b3JlIG5hbWUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldEVudGl0eU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldEVudGl0eU5hbWUobmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSB0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRUYWJsZU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldFRhYmxlTmFtZShuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lIHVzZWQgYXMgdGhlIElEIGZpZWxkIGluIHRoZSBlbnRpdHkgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRJZE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldElkTmFtZShuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB1bmRlcmx5aW5nIGRhdGFiYXNlIGNvbHVtbiBuYW1lIHVzZWQgZm9yIHRoZSBJRCBmaWVsZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0SWRDb2x1bW4obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldElkQ29sdW1uKG5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlIGEgSlNPTiBzdHJpbmcuXG5cdCAqIFJldHVybnMgdW5kZWZpbmVkIGZvciBudWxsL2VtcHR5IGlucHV0cy5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIHBhcnNlUmVzdWx0KHJlc3VsdDogYW55KTogYW55IHtcblx0XHRpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gJycpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgcmVzdWx0ICE9PSAnc3RyaW5nJykge1xuXHRcdFx0Ly8gYWxyZWFkeSBhbiBvYmplY3QvYXJyYXlcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIEpTT04ucGFyc2UocmVzdWx0KTtcblx0fVxuXG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gU3RvcmU7XG59Il0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFB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
|
package/dist/dts/db/store.d.ts
CHANGED
|
@@ -137,8 +137,7 @@ export declare class Store {
|
|
|
137
137
|
*/
|
|
138
138
|
static getIdColumn(name: string): string;
|
|
139
139
|
/**
|
|
140
|
-
* Parse a JSON string
|
|
141
|
-
* It handles both full ISO timestamps (with timezone) and date-only strings (YYYY-MM-DD).
|
|
140
|
+
* Parse a JSON string.
|
|
142
141
|
* Returns undefined for null/empty inputs.
|
|
143
142
|
*/
|
|
144
143
|
private static parseResult;
|
package/dist/esm/db/store.mjs
CHANGED
|
@@ -214,8 +214,7 @@ class Store {
|
|
|
214
214
|
return DataStoreFacade.getIdColumn(name);
|
|
215
215
|
}
|
|
216
216
|
/**
|
|
217
|
-
* Parse a JSON string
|
|
218
|
-
* It handles both full ISO timestamps (with timezone) and date-only strings (YYYY-MM-DD).
|
|
217
|
+
* Parse a JSON string.
|
|
219
218
|
* Returns undefined for null/empty inputs.
|
|
220
219
|
*/
|
|
221
220
|
static parseResult(result) {
|
|
@@ -225,60 +224,7 @@ class Store {
|
|
|
225
224
|
if (typeof result !== "string") {
|
|
226
225
|
return result;
|
|
227
226
|
}
|
|
228
|
-
|
|
229
|
-
const DATE_ONLY = /^\d{4}-\d{2}-\d{2}$/;
|
|
230
|
-
const TZ_NO_COLON = /([+\-]\d{2})(\d{2})$/;
|
|
231
|
-
const SPACE_DATETIME = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+\-]\d{2}:?\d{2})?$/;
|
|
232
|
-
const TIME_ONLY = /^\d{2}:\d{2}:\d{2}(?:\.\d+)?$/;
|
|
233
|
-
const EPOCH_MS = /^[+\-]?\d{13}$/;
|
|
234
|
-
const EPOCH_S = /^[+\-]?\d{10}$/;
|
|
235
|
-
return JSON.parse(result, (key, value) => {
|
|
236
|
-
if (typeof value === "string") {
|
|
237
|
-
const s = value.trim();
|
|
238
|
-
if (EPOCH_MS.test(s)) {
|
|
239
|
-
const ms = parseInt(s, 10);
|
|
240
|
-
return new Date(ms);
|
|
241
|
-
}
|
|
242
|
-
if (EPOCH_S.test(s)) {
|
|
243
|
-
const ms = parseInt(s, 10) * 1e3;
|
|
244
|
-
return new Date(ms);
|
|
245
|
-
}
|
|
246
|
-
if (SPACE_DATETIME.test(s)) {
|
|
247
|
-
let v = s.replace(" ", "T");
|
|
248
|
-
if (TZ_NO_COLON.test(v)) {
|
|
249
|
-
v = v.replace(TZ_NO_COLON, "$1:$2");
|
|
250
|
-
}
|
|
251
|
-
const d = new Date(v);
|
|
252
|
-
if (!isNaN(d.getTime())) {
|
|
253
|
-
return d;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
if (TIME_ONLY.test(s)) {
|
|
257
|
-
const m = s.match(/(\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?/);
|
|
258
|
-
if (m) {
|
|
259
|
-
const hh = parseInt(m[1], 10);
|
|
260
|
-
const mm = parseInt(m[2], 10);
|
|
261
|
-
const ss = parseInt(m[3], 10);
|
|
262
|
-
const frac = m[4] ? (m[4] + "000").substring(0, 3) : "000";
|
|
263
|
-
const ms = parseInt(frac, 10);
|
|
264
|
-
const now = /* @__PURE__ */ new Date();
|
|
265
|
-
const d = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), hh, mm, ss, ms));
|
|
266
|
-
return d;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
if (ISO_DATETIME.test(s) || DATE_ONLY.test(s)) {
|
|
270
|
-
let v = s;
|
|
271
|
-
if (TZ_NO_COLON.test(v)) {
|
|
272
|
-
v = v.replace(TZ_NO_COLON, "$1:$2");
|
|
273
|
-
}
|
|
274
|
-
const d = new Date(v);
|
|
275
|
-
if (!isNaN(d.getTime())) {
|
|
276
|
-
return d;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
return value;
|
|
281
|
-
});
|
|
227
|
+
return JSON.parse(result);
|
|
282
228
|
}
|
|
283
229
|
}
|
|
284
230
|
if (typeof module !== "undefined") {
|
|
@@ -289,4 +235,4 @@ export {
|
|
|
289
235
|
Operator,
|
|
290
236
|
Store
|
|
291
237
|
};
|
|
292
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3N0b3JlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBEYXRhU3RvcmVGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YVN0b3JlRmFjYWRlXCIpO1xuXG4vKipcbiAqIERlZmluZXMgdGhlIGF2YWlsYWJsZSBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgcXVlcnkgY29uZGl0aW9ucy5cbiAqL1xuZXhwb3J0IGVudW0gT3BlcmF0b3Ige1xuXHRFUSA9IFwiPVwiLCAvLyBFcXVhbHNcblx0TkUgPSBcIjw+XCIsIC8vIE5vdCBFcXVhbHNcblx0R1QgPSBcIj5cIiwgLy8gR3JlYXRlciBUaGFuXG5cdExUID0gXCI8XCIsIC8vIExlc3MgVGhhblxuXHRHRSA9IFwiPj1cIiwgLy8gR3JlYXRlciBUaGFuIG9yIEVxdWFsc1xuXHRMRSA9IFwiPD1cIiwgLy8gTGVzcyBUaGFuIG9yIEVxdWFsc1xuXHRMSUtFID0gXCJMSUtFXCIsIC8vIFNRTCBMSUtFIG9wZXJhdG9yXG5cdEJFVFdFRU4gPSBcIkJFVFdFRU5cIiwgLy8gU1FMIEJFVFdFRU4gb3BlcmF0b3IgKHJlcXVpcmVzIHR3byB2YWx1ZXMpXG5cdElOID0gXCJJTlwiIC8vIFNRTCBJTiBvcGVyYXRvciAocmVxdWlyZXMgYSBMaXN0IG9yIEFycmF5IG9mIHZhbHVlcylcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBkaXJlY3Rpb24gZm9yIHNvcnRpbmcuXG4gKi9cbmV4cG9ydCBlbnVtIERpcmVjdGlvbiB7XG5cdEFTQyA9IFwiQVNDXCIsIC8vIEFzY2VuZGluZ1xuXHRERVNDID0gXCJERVNDXCIgLy8gRGVzY2VuZGluZ1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgY29uZGl0aW9uIGZvciBmaWx0ZXJpbmcgZGF0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb24ge1xuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0b3BlcmF0b3I6IE9wZXJhdG9yLFxuXHR2YWx1ZTogYW55IHwgYW55W11cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIHNvcnRpbmcgaW5zdHJ1Y3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU29ydCB7XG5cdHByb3BlcnR5TmFtZTogc3RyaW5nLFxuXHRkaXJlY3Rpb246IERpcmVjdGlvblxufVxuXG4vKipcbiAqIERlZmluZXMgb3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgbGlzdCBhbmQgY291bnQgb3BlcmF0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcblx0Y29uZGl0aW9ucz86IENvbmRpdGlvbltdLFxuXHRzb3J0cz86IFNvcnRbXSxcblx0bGltaXQ/OiBudW1iZXIsXG5cdG9mZnNldD86IG51bWJlcixcblx0bGFuZ3VhZ2U/OiBzdHJpbmdcbn1cblxuaW1wb3J0IHsgVHlwZWRRdWVyeVBhcmFtZXRlciwgTmFtZWRRdWVyeVBhcmFtZXRlciB9IGZyb20gJy4vcXVlcnknO1xuXG4vKipcbiAqIEZhY2FkZSBjbGFzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgdW5kZXJseWluZyBEaXJpZ2libGUgRGF0YSBTdG9yZS5cbiAqIEFsbCBtZXRob2RzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBKYXZhU2NyaXB0IG9iamVjdHMgdG8vZnJvbSBKU09OIHN0cmluZ3NcbiAqIGJlZm9yZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBuYXRpdmUgSmF2YSBmYWNhZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdG9yZSB7XG5cblx0LyoqXG5cdCAqIFNhdmVzIGEgbmV3IGVudHJ5IHRvIHRoZSBkYXRhIHN0b3JlLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBlbnRyeSBUaGUgSmF2YVNjcmlwdCBvYmplY3QgdG8gc2F2ZS5cblx0ICogQHJldHVybnMgVGhlIElEIG9mIHRoZSBuZXdseSBjcmVhdGVkIGVudHJ5IChzdHJpbmcgb3IgbnVtYmVyKS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgc2F2ZShuYW1lOiBzdHJpbmcsIGVudHJ5OiBhbnkpOiBzdHJpbmcgfCBudW1iZXIge1xuXHRcdHJldHVybiBEYXRhU3RvcmVGYWNhZGUuc2F2ZShuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluc2VydHMgYSBuZXcgZW50cnkgb3IgdXBkYXRlcyBhbiBleGlzdGluZyBvbmUgaWYgdGhlIElEIGlzIHByZXNlbnQuXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBlbnRpdHkvdGFibGUgbmFtZS5cblx0ICogQHBhcmFtIGVudHJ5IFRoZSBKYXZhU2NyaXB0IG9iamVjdCB0byBpbnNlcnQvdXBkYXRlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cHNlcnQobmFtZTogc3RyaW5nLCBlbnRyeTogYW55KTogdm9pZCB7XG5cdFx0RGF0YVN0b3JlRmFjYWRlLnVwc2VydChuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZW50cnkuXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBlbnRpdHkvdGFibGUgbmFtZS5cblx0ICogQHBhcmFtIGVudHJ5IFRoZSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoZSBJRCBhbmQgdXBkYXRlZCBkYXRhLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cGRhdGUobmFtZTogc3RyaW5nLCBlbnRyeTogYW55KTogdm9pZCB7XG5cdFx0RGF0YVN0b3JlRmFjYWRlLnVwZGF0ZShuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExpc3RzIGVudHJpZXMgYmFzZWQgb24gb3B0aW9uYWwgZmlsdGVyaW5nLCBzb3J0aW5nLCBhbmQgcGFnaW5hdGlvbiBvcHRpb25zLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHtAbGluayBPcHRpb25zfSBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGxpc3QobmFtZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUubGlzdChuYW1lLCBvcHRpb25zID8gSlNPTi5zdHJpbmdpZnkob3B0aW9ucykgOiBudWxsKTtcblx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb3VudHMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGJhc2VkIG9uIG9wdGlvbmFsIGZpbHRlcmluZyBvcHRpb25zLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHtAbGluayBPcHRpb25zfSBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgY291bnQgb2YgbWF0Y2hpbmcgZW50cmllcy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY291bnQobmFtZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IG51bWJlciB7XG5cdFx0Y29uc3Qgb3B0aW9uc1N0cmluZyA9IG9wdGlvbnMgPyBKU09OLnN0cmluZ2lmeShvcHRpb25zKSA6IG51bGw7XG5cdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLmNvdW50KG5hbWUsIG9wdGlvbnNTdHJpbmcpO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgc2luZ2xlIGVudHJ5IGJ5IGl0cyBJRC5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRyeS5cblx0ICogQHJldHVybnMgVGhlIGVudHJ5IG9iamVjdCwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0KG5hbWU6IHN0cmluZywgaWQ6IGFueSk6IGFueSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLmdldChuYW1lLCBpZCk7XG5cdFx0Ly8gQXNzdW1pbmcgdGhlIG5hdGl2ZSBBUEkgcmV0dXJucyBudWxsL3VuZGVmaW5lZCBvciBhbiBlbXB0eSBKU09OIHN0cmluZyBpZiBub3QgZm91bmQsIFxuXHRcdC8vIG90aGVyd2lzZSBKU09OLnBhcnNlIGhhbmRsZXMgdGhlIGNvbnZlcnNpb24uXG5cdFx0aWYgKHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IFwiXCIpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGFuIGVudHJ5IGJ5IGl0cyBJRC5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRyeSB0byByZW1vdmUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHJlbW92ZShuYW1lOiBzdHJpbmcsIGlkOiBhbnkpOiB2b2lkIHtcblx0XHREYXRhU3RvcmVGYWNhZGUuZGVsZXRlRW50cnkobmFtZSwgaWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpbmRzIGVudHJpZXMgbWF0Y2hpbmcgYW4gZXhhbXBsZSBvYmplY3QgKHF1ZXJ5LWJ5LWV4YW1wbGUpLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBleGFtcGxlIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgdG8gbWF0Y2guXG5cdCAqIEBwYXJhbSBsaW1pdCBNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzIHRvIHJldHVybi5cblx0ICogQHBhcmFtIG9mZnNldCBOdW1iZXIgb2YgcmVzdWx0cyB0byBza2lwLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBtYXRjaGluZyBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGZpbmQobmFtZTogc3RyaW5nLCBleGFtcGxlOiBhbnksIGxpbWl0OiBudW1iZXIgPSAxMDAsIG9mZnNldDogbnVtYmVyID0gMCk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUuZmluZChuYW1lLCBKU09OLnN0cmluZ2lmeShleGFtcGxlKSwgbGltaXQsIG9mZnNldCk7XG5cdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdH1cblxuXHQvKipcblx0ICogUXVlcmllcyBhbGwgZW50cmllcyBmb3IgYSBnaXZlbiBzY3JpcHQgd2l0aCBwYWdpbmF0aW9uLlxuXHQgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHNjcmlwdC5cblx0ICogQHBhcmFtIGxpbWl0IE1heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgdG8gcmV0dXJuLlxuXHQgKiBAcGFyYW0gb2Zmc2V0IE51bWJlciBvZiByZXN1bHRzIHRvIHNraXAuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIEphdmFTY3JpcHQgb2JqZWN0cy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcXVlcnkocXVlcnk6IHN0cmluZywgcGFyYW1ldGVycz86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSB8IFR5cGVkUXVlcnlQYXJhbWV0ZXIgfCBOYW1lZFF1ZXJ5UGFyYW1ldGVyKVtdLCBsaW1pdDogbnVtYmVyID0gMTAwLCBvZmZzZXQ6IG51bWJlciA9IDApOiBhbnlbXSB7XG5cdFx0bGV0IGFycjogYW55W10gPSBbXTtcblx0XHRpZiAocGFyYW1ldGVycyA9PSBudWxsKSB7XG5cdFx0XHRhcnIgPSBbXTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbWV0ZXJzID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHBhcmFtZXRlcnMpO1xuXHRcdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIklucHV0IHBhcmFtZXRlciBzdHJpbmcgbXVzdCByZXByZXNlbnQgYSBKU09OIGFycmF5XCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFyciA9IHBhcnNlZDtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBKU09OIHBhcmFtZXRlcnM6IFwiICsgZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBhcmFtZXRlcnMpKSB7XG5cdFx0XHRhcnIgPSBwYXJhbWV0ZXJzO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXJzIG11c3QgYmUgZWl0aGVyIGFuIGFycmF5IG9yIGEgSlNPTiBzdHJpbmdcIik7XG5cdFx0fVxuXG5cdFx0aWYgKGFyci5sZW5ndGggPT09IDApIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IERhdGFTdG9yZUZhY2FkZS5xdWVyeShxdWVyeSwgbnVsbCwgbGltaXQsIG9mZnNldCk7XG5cdFx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBmaXJzdCA9IGFyclswXTtcblxuXHRcdC8vIE5hbWVkUXVlcnlQYXJhbWV0ZXIgKGhhcyBuYW1lICsgdHlwZSlcblx0XHRpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwibmFtZVwiIGluIGZpcnN0ICYmIFwidHlwZVwiIGluIGZpcnN0KSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnlOYW1lZChxdWVyeSwgSlNPTi5zdHJpbmdpZnkoYXJyKSwgbGltaXQsIG9mZnNldCk7XG5cdFx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0XHR9XG5cblx0XHQvLyBUeXBlZFF1ZXJ5UGFyYW1ldGVyIChoYXMgdHlwZSwgbm8gbmFtZSlcblx0XHRpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwidHlwZVwiIGluIGZpcnN0ICYmICEoXCJuYW1lXCIgaW4gZmlyc3QpKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnkocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Ly8gUHJpbWl0aXZlIGFycmF5XG5cdFx0aWYgKFxuXHRcdFx0YXJyLmV2ZXJ5KFxuXHRcdFx0XHQodikgPT5cblx0XHRcdFx0XHR0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiB8fFxuXHRcdFx0XHRcdHR5cGVvZiB2ID09PSBcIm51bWJlclwiIHx8XG5cdFx0XHRcdFx0dHlwZW9mIHYgPT09IFwiYm9vbGVhblwiIHx8XG5cdFx0XHRcdFx0diBpbnN0YW5jZW9mIERhdGUgfHxcblx0XHRcdFx0XHRBcnJheS5pc0FycmF5KHYpXG5cdFx0XHQpXG5cdFx0KSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnkocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgcGFyYW1ldGVyIGZvcm1hdDogXCIgKyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSk7XG5cdH1cblxuXHQvKipcblx0ICogUXVlcmllcyBhbGwgZW50cmllcyBmb3IgYSBnaXZlbiBlbnRpdHkgbmFtZSB3aXRob3V0IHBhZ2luYXRpb24uXG5cdCAqIEBwYXJhbSBxdWVyeSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHF1ZXJ5TmF0aXZlKHF1ZXJ5OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBUeXBlZFF1ZXJ5UGFyYW1ldGVyIHwgTmFtZWRRdWVyeVBhcmFtZXRlcilbXSwgbGltaXQ6IG51bWJlciA9IDEwMCwgb2Zmc2V0OiBudW1iZXIgPSAwKTogYW55W10ge1xuXHRcdGxldCBhcnI6IGFueVtdID0gW107XG5cdFx0aWYgKHBhcmFtZXRlcnMgPT0gbnVsbCkge1xuXHRcdFx0YXJyID0gW107XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVycyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXJhbWV0ZXJzKTtcblx0XHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBwYXJhbWV0ZXIgc3RyaW5nIG11c3QgcmVwcmVzZW50IGEgSlNPTiBhcnJheVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhcnIgPSBwYXJzZWQ7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgSlNPTiBwYXJhbWV0ZXJzOiBcIiArIGUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSkge1xuXHRcdFx0YXJyID0gcGFyYW1ldGVycztcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBtdXN0IGJlIGVpdGhlciBhbiBhcnJheSBvciBhIEpTT04gc3RyaW5nXCIpO1xuXHRcdH1cblxuXHRcdGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnlOYXRpdmUocXVlcnksIG51bGwsIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmlyc3QgPSBhcnJbMF07XG5cblx0XHQvLyBOYW1lZFF1ZXJ5UGFyYW1ldGVyIChoYXMgbmFtZSArIHR5cGUpXG5cdFx0aWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcIm5hbWVcIiBpbiBmaXJzdCAmJiBcInR5cGVcIiBpbiBmaXJzdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlTmFtZWQocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Ly8gVHlwZWRRdWVyeVBhcmFtZXRlciAoaGFzIHR5cGUsIG5vIG5hbWUpXG5cdFx0aWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcInR5cGVcIiBpbiBmaXJzdCAmJiAhKFwibmFtZVwiIGluIGZpcnN0KSkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlKHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdC8vIFByaW1pdGl2ZSBhcnJheVxuXHRcdGlmIChcblx0XHRcdGFyci5ldmVyeShcblx0XHRcdFx0KHYpID0+XG5cdFx0XHRcdFx0dHlwZW9mIHYgPT09IFwic3RyaW5nXCIgfHxcblx0XHRcdFx0XHR0eXBlb2YgdiA9PT0gXCJudW1iZXJcIiB8fFxuXHRcdFx0XHRcdHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIiB8fFxuXHRcdFx0XHRcdHYgaW5zdGFuY2VvZiBEYXRlIHx8XG5cdFx0XHRcdFx0QXJyYXkuaXNBcnJheSh2KVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlKHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHBhcmFtZXRlciBmb3JtYXQ6IFwiICsgSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycykpO1xuXHR9XG5cblx0Ly8gLS0tIE1ldGFkYXRhIEdldHRlcnMgLS0tXG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGVudGl0eSBhc3NvY2lhdGVkIHdpdGggdGhlIHN0b3JlIG5hbWUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldEVudGl0eU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldEVudGl0eU5hbWUobmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSB0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRUYWJsZU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldFRhYmxlTmFtZShuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lIHVzZWQgYXMgdGhlIElEIGZpZWxkIGluIHRoZSBlbnRpdHkgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRJZE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldElkTmFtZShuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB1bmRlcmx5aW5nIGRhdGFiYXNlIGNvbHVtbiBuYW1lIHVzZWQgZm9yIHRoZSBJRCBmaWVsZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0SWRDb2x1bW4obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldElkQ29sdW1uKG5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlIGEgSlNPTiBzdHJpbmcgYW5kIHJldml2ZSBJU08gZGF0ZSBzdHJpbmdzIGludG8gSlMgRGF0ZSBvYmplY3RzLlxuXHQgKiBJdCBoYW5kbGVzIGJvdGggZnVsbCBJU08gdGltZXN0YW1wcyAod2l0aCB0aW1lem9uZSkgYW5kIGRhdGUtb25seSBzdHJpbmdzIChZWVlZLU1NLUREKS5cblx0ICogUmV0dXJucyB1bmRlZmluZWQgZm9yIG51bGwvZW1wdHkgaW5wdXRzLlxuXHQgKi9cblx0cHJpdmF0ZSBzdGF0aWMgcGFyc2VSZXN1bHQocmVzdWx0OiBhbnkpOiBhbnkge1xuXHRcdGlmIChyZXN1bHQgPT09IG51bGwgfHwgcmVzdWx0ID09PSB1bmRlZmluZWQgfHwgcmVzdWx0ID09PSAnJykge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiByZXN1bHQgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHQvLyBhbHJlYWR5IGFuIG9iamVjdC9hcnJheVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cblx0XHQvLyBBY2NlcHQgdGltZXpvbmUgb2Zmc2V0cyB3aXRoIG9yIHdpdGhvdXQgY29sb24gKGUuZy4gKzAwOjAwIG9yICswMDAwKVxuXHRcdGNvbnN0IElTT19EQVRFVElNRSA9IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGQrKT8oPzpafFsrXFwtXVxcZHsyfTo/XFxkezJ9KSQvO1xuXHRcdGNvbnN0IERBVEVfT05MWSA9IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLztcblx0XHRjb25zdCBUWl9OT19DT0xPTiA9IC8oWytcXC1dXFxkezJ9KShcXGR7Mn0pJC87XG5cdFx0Ly8gU3BhY2Utc2VwYXJhdGVkIGRhdGV0aW1lOiBcIllZWVktTU0tREQgSEg6TU06U1NcIiAob3B0aW9uYWxseSB3aXRoIGZyYWN0aW9uYWwgc2Vjb25kcyBhbmQgdGltZXpvbmUpXG5cdFx0Y29uc3QgU1BBQ0VfREFURVRJTUUgPSAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9IFxcZHsyfTpcXGR7Mn06XFxkezJ9KD86XFwuXFxkKyk/KD86WnxbK1xcLV1cXGR7Mn06P1xcZHsyfSk/JC87XG5cdFx0Ly8gVGltZS1vbmx5IHN0cmluZ3MgbGlrZSBcIjExOjI5OjMzXCIgb3IgXCIxMToyOTozMy4xMjNcIlxuXHRcdGNvbnN0IFRJTUVfT05MWSA9IC9eXFxkezJ9OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGQrKT8kLztcblx0XHQvLyBFcG9jaCBzdHJpbmdzOiAxMy1kaWdpdCBtcyBvciAxMC1kaWdpdCBzZWNvbmRzXG5cdFx0Y29uc3QgRVBPQ0hfTVMgPSAvXlsrXFwtXT9cXGR7MTN9JC87XG5cdFx0Y29uc3QgRVBPQ0hfUyA9IC9eWytcXC1dP1xcZHsxMH0kLztcblxuXHRcdHJldHVybiBKU09OLnBhcnNlKHJlc3VsdCwgKGtleSwgdmFsdWUpID0+IHtcblx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdGNvbnN0IHMgPSB2YWx1ZS50cmltKCk7XG5cblx0XHRcdFx0Ly8gRXBvY2ggbWlsbGlzZWNvbmQvc2Vjb25kIHN0cmluZ3Ncblx0XHRcdFx0aWYgKEVQT0NIX01TLnRlc3QocykpIHtcblx0XHRcdFx0XHRjb25zdCBtcyA9IHBhcnNlSW50KHMsIDEwKTtcblx0XHRcdFx0XHRyZXR1cm4gbmV3IERhdGUobXMpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChFUE9DSF9TLnRlc3QocykpIHtcblx0XHRcdFx0XHRjb25zdCBtcyA9IHBhcnNlSW50KHMsIDEwKSAqIDEwMDA7XG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBEYXRlKG1zKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFNwYWNlLXNlcGFyYXRlZCBkYXRldGltZXM6IG5vcm1hbGl6ZSB0byBJU08gYW5kIHBhcnNlXG5cdFx0XHRcdGlmIChTUEFDRV9EQVRFVElNRS50ZXN0KHMpKSB7XG5cdFx0XHRcdFx0bGV0IHYgPSBzLnJlcGxhY2UoJyAnLCAnVCcpO1xuXHRcdFx0XHRcdGlmIChUWl9OT19DT0xPTi50ZXN0KHYpKSB7XG5cdFx0XHRcdFx0XHR2ID0gdi5yZXBsYWNlKFRaX05PX0NPTE9OLCAnJDE6JDInKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgZCA9IG5ldyBEYXRlKHYpO1xuXHRcdFx0XHRcdGlmICghaXNOYU4oZC5nZXRUaW1lKCkpKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUaW1lLW9ubHkgc3RyaW5nczogYXR0YWNoIGN1cnJlbnQgVVRDIGRhdGUgYW5kIHBhcnNlIGFzIFVUQ1xuXHRcdFx0XHRpZiAoVElNRV9PTkxZLnRlc3QocykpIHtcblx0XHRcdFx0XHRjb25zdCBtID0gcy5tYXRjaCgvKFxcZHsyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC4oXFxkKykpPy8pO1xuXHRcdFx0XHRcdGlmIChtKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBoaCA9IHBhcnNlSW50KG1bMV0sIDEwKTtcblx0XHRcdFx0XHRcdGNvbnN0IG1tID0gcGFyc2VJbnQobVsyXSwgMTApO1xuXHRcdFx0XHRcdFx0Y29uc3Qgc3MgPSBwYXJzZUludChtWzNdLCAxMCk7XG5cdFx0XHRcdFx0XHRjb25zdCBmcmFjID0gbVs0XSA/IChtWzRdICsgJzAwMCcpLnN1YnN0cmluZygwLCAzKSA6ICcwMDAnO1xuXHRcdFx0XHRcdFx0Y29uc3QgbXMgPSBwYXJzZUludChmcmFjLCAxMCk7XG5cdFx0XHRcdFx0XHRjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRcdFx0Y29uc3QgZCA9IG5ldyBEYXRlKERhdGUuVVRDKG5vdy5nZXRVVENGdWxsWWVhcigpLCBub3cuZ2V0VVRDTW9udGgoKSwgbm93LmdldFVUQ0RhdGUoKSwgaGgsIG1tLCBzcywgbXMpKTtcblx0XHRcdFx0XHRcdHJldHVybiBkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChJU09fREFURVRJTUUudGVzdChzKSB8fCBEQVRFX09OTFkudGVzdChzKSkge1xuXHRcdFx0XHRcdC8vIG5vcm1hbGl6ZSB0aW1lem9uZSB3aXRob3V0IGNvbG9uIChlLmcuICswMDAwIC0+ICswMDowMCkgYmVjYXVzZSBEYXRlIHBhcnNpbmdcblx0XHRcdFx0XHQvLyBwcmVmZXJzIHRoZSBjb2xvbi1zZXBhcmF0ZWQgb2Zmc2V0IGluIG1hbnkgSlMgZW5naW5lc1xuXHRcdFx0XHRcdGxldCB2ID0gcztcblx0XHRcdFx0XHRpZiAoVFpfTk9fQ09MT04udGVzdCh2KSkge1xuXHRcdFx0XHRcdFx0diA9IHYucmVwbGFjZShUWl9OT19DT0xPTiwgJyQxOiQyJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IGQgPSBuZXcgRGF0ZSh2KTtcblx0XHRcdFx0XHRpZiAoIWlzTmFOKGQuZ2V0VGltZSgpKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSk7XG5cdH1cblxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IFN0b3JlO1xufSJdLAogICJtYXBwaW5ncyI6ICJBQUFBLE1BQU0sa0JBQWtCLEtBQUssS0FBSyx5REFBeUQ7QUFLcEYsSUFBSyxXQUFMLGtCQUFLQSxjQUFMO0FBQ04sRUFBQUEsVUFBQSxRQUFLO0FBQ0wsRUFBQUEsVUFBQSxRQUFLO0FBQ0wsRUFBQUEsVUFBQSxRQUFLO0FBQ0wsRUFBQUEsVUFBQSxRQUFLO0FBQ0wsRUFBQUEsVUFBQSxRQUFLO0FBQ0wsRUFBQUEsVUFBQSxRQUFLO0FBQ0wsRUFBQUEsVUFBQSxVQUFPO0FBQ1AsRUFBQUEsVUFBQSxhQUFVO0FBQ1YsRUFBQUEsVUFBQSxRQUFLO0FBVE0sU0FBQUE7QUFBQSxHQUFBO0FBZUwsSUFBSyxZQUFMLGtCQUFLQyxlQUFMO0FBQ04sRUFBQUEsV0FBQSxTQUFNO0FBQ04sRUFBQUEsV0FBQSxVQUFPO0FBRkksU0FBQUE7QUFBQSxHQUFBO0FBd0NMLE1BQU0sTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWxCLE9BQWMsS0FBSyxNQUFjLE9BQTZCO0FBQzdELFdBQU8sZ0JBQWdCLEtBQUssTUFBTSxLQUFLLFVBQVUsS0FBSyxDQUFDO0FBQUEsRUFDeEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxPQUFjLE9BQU8sTUFBYyxPQUFrQjtBQUNwRCxvQkFBZ0IsT0FBTyxNQUFNLEtBQUssVUFBVSxLQUFLLENBQUM7QUFBQSxFQUNuRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE9BQWMsT0FBTyxNQUFjLE9BQWtCO0FBQ3BELG9CQUFnQixPQUFPLE1BQU0sS0FBSyxVQUFVLEtBQUssQ0FBQztBQUFBLEVBQ25EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxPQUFjLEtBQUssTUFBYyxTQUEwQjtBQUMxRCxVQUFNLFNBQVMsZ0JBQWdCLEtBQUssTUFBTSxVQUFVLEtBQUssVUFBVSxPQUFPLElBQUksSUFBSTtBQUNsRixXQUFPLE1BQU0sWUFBWSxNQUFNO0FBQUEsRUFDaEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE9BQWMsTUFBTSxNQUFjLFNBQTJCO0FBQzVELFVBQU0sZ0JBQWdCLFVBQVUsS0FBSyxVQUFVLE9BQU8sSUFBSTtBQUMxRCxVQUFNLFNBQVMsZ0JBQWdCLE1BQU0sTUFBTSxhQUFhO0FBQ3hELFdBQU87QUFBQSxFQUNSO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxPQUFjLElBQUksTUFBYyxJQUEwQjtBQUN6RCxVQUFNLFNBQVMsZ0JBQWdCLElBQUksTUFBTSxFQUFFO0FBRzNDLFFBQUksV0FBVyxRQUFRLFdBQVcsVUFBYSxXQUFXLElBQUk7QUFDN0QsYUFBTztBQUFBLElBQ1I7QUFDQSxXQUFPLE1BQU0sWUFBWSxNQUFNO0FBQUEsRUFDaEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxPQUFjLE9BQU8sTUFBYyxJQUFlO0FBQ2pELG9CQUFnQixZQUFZLE1BQU0sRUFBRTtBQUFBLEVBQ3JDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVUEsT0FBYyxLQUFLLE1BQWMsU0FBYyxRQUFnQixLQUFLLFNBQWlCLEdBQVU7QUFDOUYsVUFBTSxTQUFTLGdCQUFnQixLQUFLLE1BQU0sS0FBSyxVQUFVLE9BQU8sR0FBRyxPQUFPLE1BQU07QUFDaEYsV0FBTyxNQUFNLFlBQVksTUFBTTtBQUFBLEVBQ2hDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLE9BQWMsTUFBTSxPQUFlLFlBQStGLFFBQWdCLEtBQUssU0FBaUIsR0FBVTtBQUNqTCxRQUFJLE1BQWEsQ0FBQztBQUNsQixRQUFJLGNBQWMsTUFBTTtBQUN2QixZQUFNLENBQUM7QUFBQSxJQUNSLFdBQVcsT0FBTyxlQUFlLFVBQVU7QUFDMUMsVUFBSTtBQUNILGNBQU0sU0FBUyxLQUFLLE1BQU0sVUFBVTtBQUNwQyxZQUFJLENBQUMsTUFBTSxRQUFRLE1BQU0sR0FBRztBQUMzQixnQkFBTSxJQUFJLE1BQU0sb0RBQW9EO0FBQUEsUUFDckU7QUFDQSxjQUFNO0FBQUEsTUFDUCxTQUFTLEdBQUc7QUFDWCxjQUFNLElBQUksTUFBTSw4QkFBOEIsQ0FBQztBQUFBLE1BQ2hEO0FBQUEsSUFDRCxXQUFXLE1BQU0sUUFBUSxVQUFVLEdBQUc7QUFDckMsWUFBTTtBQUFBLElBQ1AsT0FBTztBQUNOLFlBQU0sSUFBSSxNQUFNLHFEQUFxRDtBQUFBLElBQ3RFO0FBRUEsUUFBSSxJQUFJLFdBQVcsR0FBRztBQUNyQixZQUFNLFNBQVMsZ0JBQWdCLE1BQU0sT0FBTyxNQUFNLE9BQU8sTUFBTTtBQUMvRCxhQUFPLE1BQU0sWUFBWSxNQUFNO0FBQUEsSUFDaEM7QUFFQSxVQUFNLFFBQVEsSUFBSSxDQUFDO0FBR25CLFFBQUksU0FBUyxPQUFPLFVBQVUsWUFBWSxVQUFVLFNBQVMsVUFBVSxPQUFPO0FBQzdFLFlBQU0sU0FBUyxnQkFBZ0IsV0FBVyxPQUFPLEtBQUssVUFBVSxHQUFHLEdBQUcsT0FBTyxNQUFNO0FBQ25GLGFBQU8sTUFBTSxZQUFZLE1BQU07QUFBQSxJQUNoQztBQUdBLFFBQUksU0FBUyxPQUFPLFVBQVUsWUFBWSxVQUFVLFNBQVMsRUFBRSxVQUFVLFFBQVE7QUFDaEYsWUFBTSxTQUFTLGdCQUFnQixNQUFNLE9BQU8sS0FBSyxVQUFVLEdBQUcsR0FBRyxPQUFPLE1BQU07QUFDOUUsYUFBTyxNQUFNLFlBQVksTUFBTTtBQUFBLElBQ2hDO0FBR0EsUUFDQyxJQUFJO0FBQUEsTUFDSCxDQUFDLE1BQ0EsT0FBTyxNQUFNLFlBQ2IsT0FBTyxNQUFNLFlBQ2IsT0FBTyxNQUFNLGFBQ2IsYUFBYSxRQUNiLE1BQU0sUUFBUSxDQUFDO0FBQUEsSUFDakIsR0FDQztBQUNELFlBQU0sU0FBUyxnQkFBZ0IsTUFBTSxPQUFPLEtBQUssVUFBVSxHQUFHLEdBQUcsT0FBTyxNQUFNO0FBQzlFLGFBQU8sTUFBTSxZQUFZLE1BQU07QUFBQSxJQUNoQztBQUVBLFVBQU0sSUFBSSxNQUFNLG1DQUFtQyxLQUFLLFVBQVUsVUFBVSxDQUFDO0FBQUEsRUFDOUU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxPQUFjLFlBQVksT0FBZSxZQUErRixRQUFnQixLQUFLLFNBQWlCLEdBQVU7QUFDdkwsUUFBSSxNQUFhLENBQUM7QUFDbEIsUUFBSSxjQUFjLE1BQU07QUFDdkIsWUFBTSxDQUFDO0FBQUEsSUFDUixXQUFXLE9BQU8sZUFBZSxVQUFVO0FBQzFDLFVBQUk7QUFDSCxjQUFNLFNBQVMsS0FBSyxNQUFNLFVBQVU7QUFDcEMsWUFBSSxDQUFDLE1BQU0sUUFBUSxNQUFNLEdBQUc7QUFDM0IsZ0JBQU0sSUFBSSxNQUFNLG9EQUFvRDtBQUFBLFFBQ3JFO0FBQ0EsY0FBTTtBQUFBLE1BQ1AsU0FBUyxHQUFHO0FBQ1gsY0FBTSxJQUFJLE1BQU0sOEJBQThCLENBQUM7QUFBQSxNQUNoRDtBQUFBLElBQ0QsV0FBVyxNQUFNLFFBQVEsVUFBVSxHQUFHO0FBQ3JDLFlBQU07QUFBQSxJQUNQLE9BQU87QUFDTixZQUFNLElBQUksTUFBTSxxREFBcUQ7QUFBQSxJQUN0RTtBQUVBLFFBQUksSUFBSSxXQUFXLEdBQUc7QUFDckIsWUFBTSxTQUFTLGdCQUFnQixZQUFZLE9BQU8sTUFBTSxPQUFPLE1BQU07QUFDckUsYUFBTyxNQUFNLFlBQVksTUFBTTtBQUFBLElBQ2hDO0FBRUEsVUFBTSxRQUFRLElBQUksQ0FBQztBQUduQixRQUFJLFNBQVMsT0FBTyxVQUFVLFlBQVksVUFBVSxTQUFTLFVBQVUsT0FBTztBQUM3RSxZQUFNLFNBQVMsZ0JBQWdCLGlCQUFpQixPQUFPLEtBQUssVUFBVSxHQUFHLEdBQUcsT0FBTyxNQUFNO0FBQ3pGLGFBQU8sTUFBTSxZQUFZLE1BQU07QUFBQSxJQUNoQztBQUdBLFFBQUksU0FBUyxPQUFPLFVBQVUsWUFBWSxVQUFVLFNBQVMsRUFBRSxVQUFVLFFBQVE7QUFDaEYsWUFBTSxTQUFTLGdCQUFnQixZQUFZLE9BQU8sS0FBSyxVQUFVLEdBQUcsR0FBRyxPQUFPLE1BQU07QUFDcEYsYUFBTyxNQUFNLFlBQVksTUFBTTtBQUFBLElBQ2hDO0FBR0EsUUFDQyxJQUFJO0FBQUEsTUFDSCxDQUFDLE1BQ0EsT0FBTyxNQUFNLFlBQ2IsT0FBTyxNQUFNLFlBQ2IsT0FBTyxNQUFNLGFBQ2IsYUFBYSxRQUNiLE1BQU0sUUFBUSxDQUFDO0FBQUEsSUFDakIsR0FDQztBQUNELFlBQU0sU0FBUyxnQkFBZ0IsWUFBWSxPQUFPLEtBQUssVUFBVSxHQUFHLEdBQUcsT0FBTyxNQUFNO0FBQ3BGLGFBQU8sTUFBTSxZQUFZLE1BQU07QUFBQSxJQUNoQztBQUVBLFVBQU0sSUFBSSxNQUFNLG1DQUFtQyxLQUFLLFVBQVUsVUFBVSxDQUFDO0FBQUEsRUFDOUU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsT0FBYyxjQUFjLE1BQXNCO0FBQ2pELFdBQU8sZ0JBQWdCLGNBQWMsSUFBSTtBQUFBLEVBQzFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxPQUFjLGFBQWEsTUFBc0I7QUFDaEQsV0FBTyxnQkFBZ0IsYUFBYSxJQUFJO0FBQUEsRUFDekM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE9BQWMsVUFBVSxNQUFzQjtBQUM3QyxXQUFPLGdCQUFnQixVQUFVLElBQUk7QUFBQSxFQUN0QztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsT0FBYyxZQUFZLE1BQXNCO0FBQy9DLFdBQU8sZ0JBQWdCLFlBQVksSUFBSTtBQUFBLEVBQ3hDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsT0FBZSxZQUFZLFFBQWtCO0FBQzVDLFFBQUksV0FBVyxRQUFRLFdBQVcsVUFBYSxXQUFXLElBQUk7QUFDN0QsYUFBTztBQUFBLElBQ1I7QUFDQSxRQUFJLE9BQU8sV0FBVyxVQUFVO0FBRS9CLGFBQU87QUFBQSxJQUNSO0FBR0EsVUFBTSxlQUFlO0FBQ3JCLFVBQU0sWUFBWTtBQUNsQixVQUFNLGNBQWM7QUFFcEIsVUFBTSxpQkFBaUI7QUFFdkIsVUFBTSxZQUFZO0FBRWxCLFVBQU0sV0FBVztBQUNqQixVQUFNLFVBQVU7QUFFaEIsV0FBTyxLQUFLLE1BQU0sUUFBUSxDQUFDLEtBQUssVUFBVTtBQUN6QyxVQUFJLE9BQU8sVUFBVSxVQUFVO0FBQzlCLGNBQU0sSUFBSSxNQUFNLEtBQUs7QUFHckIsWUFBSSxTQUFTLEtBQUssQ0FBQyxHQUFHO0FBQ3JCLGdCQUFNLEtBQUssU0FBUyxHQUFHLEVBQUU7QUFDekIsaUJBQU8sSUFBSSxLQUFLLEVBQUU7QUFBQSxRQUNuQjtBQUNBLFlBQUksUUFBUSxLQUFLLENBQUMsR0FBRztBQUNwQixnQkFBTSxLQUFLLFNBQVMsR0FBRyxFQUFFLElBQUk7QUFDN0IsaUJBQU8sSUFBSSxLQUFLLEVBQUU7QUFBQSxRQUNuQjtBQUdBLFlBQUksZUFBZSxLQUFLLENBQUMsR0FBRztBQUMzQixjQUFJLElBQUksRUFBRSxRQUFRLEtBQUssR0FBRztBQUMxQixjQUFJLFlBQVksS0FBSyxDQUFDLEdBQUc7QUFDeEIsZ0JBQUksRUFBRSxRQUFRLGFBQWEsT0FBTztBQUFBLFVBQ25DO0FBQ0EsZ0JBQU0sSUFBSSxJQUFJLEtBQUssQ0FBQztBQUNwQixjQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHO0FBQ3hCLG1CQUFPO0FBQUEsVUFDUjtBQUFBLFFBQ0Q7QUFHQSxZQUFJLFVBQVUsS0FBSyxDQUFDLEdBQUc7QUFDdEIsZ0JBQU0sSUFBSSxFQUFFLE1BQU0scUNBQXFDO0FBQ3ZELGNBQUksR0FBRztBQUNOLGtCQUFNLEtBQUssU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFO0FBQzVCLGtCQUFNLEtBQUssU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFO0FBQzVCLGtCQUFNLEtBQUssU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFO0FBQzVCLGtCQUFNLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksT0FBTyxVQUFVLEdBQUcsQ0FBQyxJQUFJO0FBQ3JELGtCQUFNLEtBQUssU0FBUyxNQUFNLEVBQUU7QUFDNUIsa0JBQU0sTUFBTSxvQkFBSSxLQUFLO0FBQ3JCLGtCQUFNLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLGVBQWUsR0FBRyxJQUFJLFlBQVksR0FBRyxJQUFJLFdBQVcsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7QUFDdEcsbUJBQU87QUFBQSxVQUNSO0FBQUEsUUFDRDtBQUVBLFlBQUksYUFBYSxLQUFLLENBQUMsS0FBSyxVQUFVLEtBQUssQ0FBQyxHQUFHO0FBRzlDLGNBQUksSUFBSTtBQUNSLGNBQUksWUFBWSxLQUFLLENBQUMsR0FBRztBQUN4QixnQkFBSSxFQUFFLFFBQVEsYUFBYSxPQUFPO0FBQUEsVUFDbkM7QUFDQSxnQkFBTSxJQUFJLElBQUksS0FBSyxDQUFDO0FBQ3BCLGNBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUc7QUFDeEIsbUJBQU87QUFBQSxVQUNSO0FBQUEsUUFDRDtBQUFBLE1BQ0Q7QUFDQSxhQUFPO0FBQUEsSUFDUixDQUFDO0FBQUEsRUFDRjtBQUVEO0FBR0EsSUFBSSxPQUFPLFdBQVcsYUFBYTtBQUVsQyxTQUFPLFVBQVU7QUFDbEI7IiwKICAibmFtZXMiOiBbIk9wZXJhdG9yIiwgIkRpcmVjdGlvbiJdCn0K
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3N0b3JlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBEYXRhU3RvcmVGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YVN0b3JlRmFjYWRlXCIpO1xuXG4vKipcbiAqIERlZmluZXMgdGhlIGF2YWlsYWJsZSBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgcXVlcnkgY29uZGl0aW9ucy5cbiAqL1xuZXhwb3J0IGVudW0gT3BlcmF0b3Ige1xuXHRFUSA9IFwiPVwiLCAvLyBFcXVhbHNcblx0TkUgPSBcIjw+XCIsIC8vIE5vdCBFcXVhbHNcblx0R1QgPSBcIj5cIiwgLy8gR3JlYXRlciBUaGFuXG5cdExUID0gXCI8XCIsIC8vIExlc3MgVGhhblxuXHRHRSA9IFwiPj1cIiwgLy8gR3JlYXRlciBUaGFuIG9yIEVxdWFsc1xuXHRMRSA9IFwiPD1cIiwgLy8gTGVzcyBUaGFuIG9yIEVxdWFsc1xuXHRMSUtFID0gXCJMSUtFXCIsIC8vIFNRTCBMSUtFIG9wZXJhdG9yXG5cdEJFVFdFRU4gPSBcIkJFVFdFRU5cIiwgLy8gU1FMIEJFVFdFRU4gb3BlcmF0b3IgKHJlcXVpcmVzIHR3byB2YWx1ZXMpXG5cdElOID0gXCJJTlwiIC8vIFNRTCBJTiBvcGVyYXRvciAocmVxdWlyZXMgYSBMaXN0IG9yIEFycmF5IG9mIHZhbHVlcylcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBkaXJlY3Rpb24gZm9yIHNvcnRpbmcuXG4gKi9cbmV4cG9ydCBlbnVtIERpcmVjdGlvbiB7XG5cdEFTQyA9IFwiQVNDXCIsIC8vIEFzY2VuZGluZ1xuXHRERVNDID0gXCJERVNDXCIgLy8gRGVzY2VuZGluZ1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgY29uZGl0aW9uIGZvciBmaWx0ZXJpbmcgZGF0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb24ge1xuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0b3BlcmF0b3I6IE9wZXJhdG9yLFxuXHR2YWx1ZTogYW55IHwgYW55W11cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIHNvcnRpbmcgaW5zdHJ1Y3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU29ydCB7XG5cdHByb3BlcnR5TmFtZTogc3RyaW5nLFxuXHRkaXJlY3Rpb246IERpcmVjdGlvblxufVxuXG4vKipcbiAqIERlZmluZXMgb3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgbGlzdCBhbmQgY291bnQgb3BlcmF0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcblx0Y29uZGl0aW9ucz86IENvbmRpdGlvbltdLFxuXHRzb3J0cz86IFNvcnRbXSxcblx0bGltaXQ/OiBudW1iZXIsXG5cdG9mZnNldD86IG51bWJlcixcblx0bGFuZ3VhZ2U/OiBzdHJpbmdcbn1cblxuaW1wb3J0IHsgVHlwZWRRdWVyeVBhcmFtZXRlciwgTmFtZWRRdWVyeVBhcmFtZXRlciB9IGZyb20gJy4vcXVlcnknO1xuXG4vKipcbiAqIEZhY2FkZSBjbGFzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgdW5kZXJseWluZyBEaXJpZ2libGUgRGF0YSBTdG9yZS5cbiAqIEFsbCBtZXRob2RzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBKYXZhU2NyaXB0IG9iamVjdHMgdG8vZnJvbSBKU09OIHN0cmluZ3NcbiAqIGJlZm9yZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBuYXRpdmUgSmF2YSBmYWNhZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdG9yZSB7XG5cblx0LyoqXG5cdCAqIFNhdmVzIGEgbmV3IGVudHJ5IHRvIHRoZSBkYXRhIHN0b3JlLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBlbnRyeSBUaGUgSmF2YVNjcmlwdCBvYmplY3QgdG8gc2F2ZS5cblx0ICogQHJldHVybnMgVGhlIElEIG9mIHRoZSBuZXdseSBjcmVhdGVkIGVudHJ5IChzdHJpbmcgb3IgbnVtYmVyKS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgc2F2ZShuYW1lOiBzdHJpbmcsIGVudHJ5OiBhbnkpOiBzdHJpbmcgfCBudW1iZXIge1xuXHRcdHJldHVybiBEYXRhU3RvcmVGYWNhZGUuc2F2ZShuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluc2VydHMgYSBuZXcgZW50cnkgb3IgdXBkYXRlcyBhbiBleGlzdGluZyBvbmUgaWYgdGhlIElEIGlzIHByZXNlbnQuXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBlbnRpdHkvdGFibGUgbmFtZS5cblx0ICogQHBhcmFtIGVudHJ5IFRoZSBKYXZhU2NyaXB0IG9iamVjdCB0byBpbnNlcnQvdXBkYXRlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cHNlcnQobmFtZTogc3RyaW5nLCBlbnRyeTogYW55KTogdm9pZCB7XG5cdFx0RGF0YVN0b3JlRmFjYWRlLnVwc2VydChuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZW50cnkuXG5cdCAqIEBwYXJhbSBuYW1lIFRoZSBlbnRpdHkvdGFibGUgbmFtZS5cblx0ICogQHBhcmFtIGVudHJ5IFRoZSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoZSBJRCBhbmQgdXBkYXRlZCBkYXRhLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyB1cGRhdGUobmFtZTogc3RyaW5nLCBlbnRyeTogYW55KTogdm9pZCB7XG5cdFx0RGF0YVN0b3JlRmFjYWRlLnVwZGF0ZShuYW1lLCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExpc3RzIGVudHJpZXMgYmFzZWQgb24gb3B0aW9uYWwgZmlsdGVyaW5nLCBzb3J0aW5nLCBhbmQgcGFnaW5hdGlvbiBvcHRpb25zLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHtAbGluayBPcHRpb25zfSBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGxpc3QobmFtZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUubGlzdChuYW1lLCBvcHRpb25zID8gSlNPTi5zdHJpbmdpZnkob3B0aW9ucykgOiBudWxsKTtcblx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb3VudHMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGJhc2VkIG9uIG9wdGlvbmFsIGZpbHRlcmluZyBvcHRpb25zLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHtAbGluayBPcHRpb25zfSBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgY291bnQgb2YgbWF0Y2hpbmcgZW50cmllcy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgY291bnQobmFtZTogc3RyaW5nLCBvcHRpb25zPzogT3B0aW9ucyk6IG51bWJlciB7XG5cdFx0Y29uc3Qgb3B0aW9uc1N0cmluZyA9IG9wdGlvbnMgPyBKU09OLnN0cmluZ2lmeShvcHRpb25zKSA6IG51bGw7XG5cdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLmNvdW50KG5hbWUsIG9wdGlvbnNTdHJpbmcpO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgc2luZ2xlIGVudHJ5IGJ5IGl0cyBJRC5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRyeS5cblx0ICogQHJldHVybnMgVGhlIGVudHJ5IG9iamVjdCwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0KG5hbWU6IHN0cmluZywgaWQ6IGFueSk6IGFueSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLmdldChuYW1lLCBpZCk7XG5cdFx0Ly8gQXNzdW1pbmcgdGhlIG5hdGl2ZSBBUEkgcmV0dXJucyBudWxsL3VuZGVmaW5lZCBvciBhbiBlbXB0eSBKU09OIHN0cmluZyBpZiBub3QgZm91bmQsIFxuXHRcdC8vIG90aGVyd2lzZSBKU09OLnBhcnNlIGhhbmRsZXMgdGhlIGNvbnZlcnNpb24uXG5cdFx0aWYgKHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IFwiXCIpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGFuIGVudHJ5IGJ5IGl0cyBJRC5cblx0ICogQHBhcmFtIG5hbWUgVGhlIGVudGl0eS90YWJsZSBuYW1lLlxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRyeSB0byByZW1vdmUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHJlbW92ZShuYW1lOiBzdHJpbmcsIGlkOiBhbnkpOiB2b2lkIHtcblx0XHREYXRhU3RvcmVGYWNhZGUuZGVsZXRlRW50cnkobmFtZSwgaWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpbmRzIGVudHJpZXMgbWF0Y2hpbmcgYW4gZXhhbXBsZSBvYmplY3QgKHF1ZXJ5LWJ5LWV4YW1wbGUpLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEBwYXJhbSBleGFtcGxlIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgdG8gbWF0Y2guXG5cdCAqIEBwYXJhbSBsaW1pdCBNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzIHRvIHJldHVybi5cblx0ICogQHBhcmFtIG9mZnNldCBOdW1iZXIgb2YgcmVzdWx0cyB0byBza2lwLlxuXHQgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBtYXRjaGluZyBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGZpbmQobmFtZTogc3RyaW5nLCBleGFtcGxlOiBhbnksIGxpbWl0OiBudW1iZXIgPSAxMDAsIG9mZnNldDogbnVtYmVyID0gMCk6IGFueVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUuZmluZChuYW1lLCBKU09OLnN0cmluZ2lmeShleGFtcGxlKSwgbGltaXQsIG9mZnNldCk7XG5cdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdH1cblxuXHQvKipcblx0ICogUXVlcmllcyBhbGwgZW50cmllcyBmb3IgYSBnaXZlbiBzY3JpcHQgd2l0aCBwYWdpbmF0aW9uLlxuXHQgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHNjcmlwdC5cblx0ICogQHBhcmFtIGxpbWl0IE1heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgdG8gcmV0dXJuLlxuXHQgKiBAcGFyYW0gb2Zmc2V0IE51bWJlciBvZiByZXN1bHRzIHRvIHNraXAuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIEphdmFTY3JpcHQgb2JqZWN0cy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcXVlcnkocXVlcnk6IHN0cmluZywgcGFyYW1ldGVycz86IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSB8IFR5cGVkUXVlcnlQYXJhbWV0ZXIgfCBOYW1lZFF1ZXJ5UGFyYW1ldGVyKVtdLCBsaW1pdDogbnVtYmVyID0gMTAwLCBvZmZzZXQ6IG51bWJlciA9IDApOiBhbnlbXSB7XG5cdFx0bGV0IGFycjogYW55W10gPSBbXTtcblx0XHRpZiAocGFyYW1ldGVycyA9PSBudWxsKSB7XG5cdFx0XHRhcnIgPSBbXTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbWV0ZXJzID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHBhcmFtZXRlcnMpO1xuXHRcdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIklucHV0IHBhcmFtZXRlciBzdHJpbmcgbXVzdCByZXByZXNlbnQgYSBKU09OIGFycmF5XCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFyciA9IHBhcnNlZDtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBKU09OIHBhcmFtZXRlcnM6IFwiICsgZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBhcmFtZXRlcnMpKSB7XG5cdFx0XHRhcnIgPSBwYXJhbWV0ZXJzO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXJzIG11c3QgYmUgZWl0aGVyIGFuIGFycmF5IG9yIGEgSlNPTiBzdHJpbmdcIik7XG5cdFx0fVxuXG5cdFx0aWYgKGFyci5sZW5ndGggPT09IDApIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IERhdGFTdG9yZUZhY2FkZS5xdWVyeShxdWVyeSwgbnVsbCwgbGltaXQsIG9mZnNldCk7XG5cdFx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBmaXJzdCA9IGFyclswXTtcblxuXHRcdC8vIE5hbWVkUXVlcnlQYXJhbWV0ZXIgKGhhcyBuYW1lICsgdHlwZSlcblx0XHRpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwibmFtZVwiIGluIGZpcnN0ICYmIFwidHlwZVwiIGluIGZpcnN0KSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnlOYW1lZChxdWVyeSwgSlNPTi5zdHJpbmdpZnkoYXJyKSwgbGltaXQsIG9mZnNldCk7XG5cdFx0XHRyZXR1cm4gU3RvcmUucGFyc2VSZXN1bHQocmVzdWx0KTtcblx0XHR9XG5cblx0XHQvLyBUeXBlZFF1ZXJ5UGFyYW1ldGVyIChoYXMgdHlwZSwgbm8gbmFtZSlcblx0XHRpZiAoZmlyc3QgJiYgdHlwZW9mIGZpcnN0ID09PSBcIm9iamVjdFwiICYmIFwidHlwZVwiIGluIGZpcnN0ICYmICEoXCJuYW1lXCIgaW4gZmlyc3QpKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnkocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Ly8gUHJpbWl0aXZlIGFycmF5XG5cdFx0aWYgKFxuXHRcdFx0YXJyLmV2ZXJ5KFxuXHRcdFx0XHQodikgPT5cblx0XHRcdFx0XHR0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiB8fFxuXHRcdFx0XHRcdHR5cGVvZiB2ID09PSBcIm51bWJlclwiIHx8XG5cdFx0XHRcdFx0dHlwZW9mIHYgPT09IFwiYm9vbGVhblwiIHx8XG5cdFx0XHRcdFx0diBpbnN0YW5jZW9mIERhdGUgfHxcblx0XHRcdFx0XHRBcnJheS5pc0FycmF5KHYpXG5cdFx0XHQpXG5cdFx0KSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnkocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgcGFyYW1ldGVyIGZvcm1hdDogXCIgKyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSk7XG5cdH1cblxuXHQvKipcblx0ICogUXVlcmllcyBhbGwgZW50cmllcyBmb3IgYSBnaXZlbiBlbnRpdHkgbmFtZSB3aXRob3V0IHBhZ2luYXRpb24uXG5cdCAqIEBwYXJhbSBxdWVyeSBUaGUgZW50aXR5L3RhYmxlIG5hbWUuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBKYXZhU2NyaXB0IG9iamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHF1ZXJ5TmF0aXZlKHF1ZXJ5OiBzdHJpbmcsIHBhcmFtZXRlcnM/OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBUeXBlZFF1ZXJ5UGFyYW1ldGVyIHwgTmFtZWRRdWVyeVBhcmFtZXRlcilbXSwgbGltaXQ6IG51bWJlciA9IDEwMCwgb2Zmc2V0OiBudW1iZXIgPSAwKTogYW55W10ge1xuXHRcdGxldCBhcnI6IGFueVtdID0gW107XG5cdFx0aWYgKHBhcmFtZXRlcnMgPT0gbnVsbCkge1xuXHRcdFx0YXJyID0gW107XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW1ldGVycyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXJhbWV0ZXJzKTtcblx0XHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBwYXJhbWV0ZXIgc3RyaW5nIG11c3QgcmVwcmVzZW50IGEgSlNPTiBhcnJheVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhcnIgPSBwYXJzZWQ7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgSlNPTiBwYXJhbWV0ZXJzOiBcIiArIGUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXJhbWV0ZXJzKSkge1xuXHRcdFx0YXJyID0gcGFyYW1ldGVycztcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBtdXN0IGJlIGVpdGhlciBhbiBhcnJheSBvciBhIEpTT04gc3RyaW5nXCIpO1xuXHRcdH1cblxuXHRcdGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBEYXRhU3RvcmVGYWNhZGUucXVlcnlOYXRpdmUocXVlcnksIG51bGwsIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmlyc3QgPSBhcnJbMF07XG5cblx0XHQvLyBOYW1lZFF1ZXJ5UGFyYW1ldGVyIChoYXMgbmFtZSArIHR5cGUpXG5cdFx0aWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcIm5hbWVcIiBpbiBmaXJzdCAmJiBcInR5cGVcIiBpbiBmaXJzdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlTmFtZWQocXVlcnksIEpTT04uc3RyaW5naWZ5KGFyciksIGxpbWl0LCBvZmZzZXQpO1xuXHRcdFx0cmV0dXJuIFN0b3JlLnBhcnNlUmVzdWx0KHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0Ly8gVHlwZWRRdWVyeVBhcmFtZXRlciAoaGFzIHR5cGUsIG5vIG5hbWUpXG5cdFx0aWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIiAmJiBcInR5cGVcIiBpbiBmaXJzdCAmJiAhKFwibmFtZVwiIGluIGZpcnN0KSkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlKHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdC8vIFByaW1pdGl2ZSBhcnJheVxuXHRcdGlmIChcblx0XHRcdGFyci5ldmVyeShcblx0XHRcdFx0KHYpID0+XG5cdFx0XHRcdFx0dHlwZW9mIHYgPT09IFwic3RyaW5nXCIgfHxcblx0XHRcdFx0XHR0eXBlb2YgdiA9PT0gXCJudW1iZXJcIiB8fFxuXHRcdFx0XHRcdHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIiB8fFxuXHRcdFx0XHRcdHYgaW5zdGFuY2VvZiBEYXRlIHx8XG5cdFx0XHRcdFx0QXJyYXkuaXNBcnJheSh2KVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gRGF0YVN0b3JlRmFjYWRlLnF1ZXJ5TmF0aXZlKHF1ZXJ5LCBKU09OLnN0cmluZ2lmeShhcnIpLCBsaW1pdCwgb2Zmc2V0KTtcblx0XHRcdHJldHVybiBTdG9yZS5wYXJzZVJlc3VsdChyZXN1bHQpO1xuXHRcdH1cblxuXHRcdHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHBhcmFtZXRlciBmb3JtYXQ6IFwiICsgSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycykpO1xuXHR9XG5cblx0Ly8gLS0tIE1ldGFkYXRhIEdldHRlcnMgLS0tXG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGVudGl0eSBhc3NvY2lhdGVkIHdpdGggdGhlIHN0b3JlIG5hbWUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldEVudGl0eU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldEVudGl0eU5hbWUobmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSB0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRUYWJsZU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldFRhYmxlTmFtZShuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lIHVzZWQgYXMgdGhlIElEIGZpZWxkIGluIHRoZSBlbnRpdHkgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRJZE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldElkTmFtZShuYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB1bmRlcmx5aW5nIGRhdGFiYXNlIGNvbHVtbiBuYW1lIHVzZWQgZm9yIHRoZSBJRCBmaWVsZC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0SWRDb2x1bW4obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gRGF0YVN0b3JlRmFjYWRlLmdldElkQ29sdW1uKG5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlIGEgSlNPTiBzdHJpbmcuXG5cdCAqIFJldHVybnMgdW5kZWZpbmVkIGZvciBudWxsL2VtcHR5IGlucHV0cy5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIHBhcnNlUmVzdWx0KHJlc3VsdDogYW55KTogYW55IHtcblx0XHRpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gJycpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgcmVzdWx0ICE9PSAnc3RyaW5nJykge1xuXHRcdFx0Ly8gYWxyZWFkeSBhbiBvYmplY3QvYXJyYXlcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIEpTT04ucGFyc2UocmVzdWx0KTtcblx0fVxuXG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gU3RvcmU7XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsTUFBTSxrQkFBa0IsS0FBSyxLQUFLLHlEQUF5RDtBQUtwRixJQUFLLFdBQUwsa0JBQUtB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
|