@po-ui/ng-components 6.12.1 → 6.13.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/esm2020/lib/components/po-button/po-button-base.component.mjs +4 -7
- package/esm2020/lib/components/po-field/index.mjs +2 -1
- package/esm2020/lib/components/po-field/po-datepicker/po-datepicker-base.component.mjs +8 -3
- package/esm2020/lib/components/po-field/po-field.module.mjs +8 -3
- package/esm2020/lib/components/po-field/po-radio/po-radio-base.component.mjs +104 -0
- package/esm2020/lib/components/po-field/po-radio/po-radio-size.enum.mjs +6 -0
- package/esm2020/lib/components/po-field/po-radio/po-radio.component.mjs +100 -0
- package/esm2020/lib/components/po-list-view/po-list-view.component.mjs +77 -82
- package/esm2020/lib/components/po-list-view/po-list-view.module.mjs +6 -4
- package/esm2020/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.mjs +80 -23
- package/esm2020/lib/components/po-table/po-table.component.mjs +487 -466
- package/esm2020/lib/utils/util.mjs +9 -1
- package/fesm2015/po-ui-ng-components.mjs +1079 -781
- package/fesm2015/po-ui-ng-components.mjs.map +1 -1
- package/fesm2020/po-ui-ng-components.mjs +1063 -781
- package/fesm2020/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-button/po-button-base.component.d.ts +1 -1
- package/lib/components/po-field/index.d.ts +1 -0
- package/lib/components/po-field/po-field.module.d.ts +23 -22
- package/lib/components/po-field/po-radio/po-radio-base.component.d.ts +58 -0
- package/lib/components/po-field/po-radio/po-radio-size.enum.d.ts +4 -0
- package/lib/components/po-field/po-radio/po-radio.component.d.ts +38 -0
- package/lib/components/po-list-view/po-list-view.module.d.ts +6 -4
- package/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.d.ts +13 -1
- package/lib/components/po-table/po-table.component.d.ts +4 -0
- package/lib/utils/util.d.ts +1 -0
- package/package.json +4 -4
- package/po-ui-ng-components-6.13.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-6.12.1.tgz +0 -0
|
@@ -125,6 +125,14 @@ export function convertIsoToDate(value, start, end) {
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
|
+
export function convertIsoToDateNoTimezone(value) {
|
|
129
|
+
if (value) {
|
|
130
|
+
const day = parseInt(value.substring(8, 10), 10);
|
|
131
|
+
const month = parseInt(value.substring(5, 7), 10);
|
|
132
|
+
const year = parseInt(value.substring(0, 4), 10);
|
|
133
|
+
return new Date(year, month - 1, day);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
128
136
|
export function convertDateToISODate(date) {
|
|
129
137
|
if (date) {
|
|
130
138
|
const getMonth = date.getMonth() + 1;
|
|
@@ -508,4 +516,4 @@ export function getFocusableElements(parentElement) {
|
|
|
508
516
|
const focusableElements = 'button:not([disabled]), [href], input, select, textarea, [tabindex]:not([tabindex="-1"]';
|
|
509
517
|
return parentElement.querySelectorAll(focusableElements);
|
|
510
518
|
}
|
|
511
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvdXRpbHMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTFGOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sdUJBQXVCLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBYSxFQUFFLFFBQVEsR0FBRyxDQUFDO0lBQ3JELElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQztJQUN4QixNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNsRSxRQUFRLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFdkMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ3BHLENBQUM7QUFFRDs7R0FFRztBQUNI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QzdDLElBQUksSUFBSSxFQUFFO1FBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEUsTUFBTSxLQUFLLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3hELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUU1QyxPQUFPLElBQUksR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7S0FDdkM7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLElBQVUsRUFBRSxJQUFhO0lBQ2hFLElBQUksSUFBSSxFQUFFO1FBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEUsTUFBTSxLQUFLLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3hELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUU1QyxNQUFNLFVBQVUsR0FBRyxJQUFJ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QUFzQjtJQUN6RCxNQUFNLGlCQUFpQixHQUFHLHlGQUF5RixDQUFDO0lBQ3BILE9BQU8sYUFBYSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHBvTG9jYWxlcywgcG9Mb2NhbGVEZWZhdWx0IH0gZnJvbSAnLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UuY29uc3RhbnQnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBVdGlsaXplIG8gbcOpdG9kbyBgZ2V0U2hvcnRCcm93c2VyTGFuZ3VhZ2VgLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0b3JuYSBpZGlvbWEgZG8gYnJvd3NlciBvdSBvIGlkaW9tYSBwYWRyw6NvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnJvd3Nlckxhbmd1YWdlKCkge1xuICByZXR1cm4gZ2V0U2hvcnRCcm93c2VyTGFuZ3VhZ2UoKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0ZSBlIGZvcm1hdGEgb3MgYnl0ZXMgZW0gZm9ybWF0byBtYWlzIGxlZ8OtdmVsIHBhcmEgbyB1c3XDoXJpby5cbiAqXG4gKiBQb3IgZXhlbXBsbzpcbiAqIC0gMzE0NTcyODAgZW0gMzAgTUIuXG4gKiAtIDIxNDc0ODM2NDgwIGVtIDIwIEdCLlxuICogLSAxMi41NjY2NjY2IGVtIDEyLjU3IEJ5dGVzIChkdWFzIGNhc2FzIGRlY2ltYWlzKS5cbiAqXG4gKiBAcGFyYW0gYnl0ZXMge251bWJlcn0gVmFsb3IgZW0gYnl0ZXNcbiAqIEBwYXJhbSBkZWNpbWFscyB7bnVtYmVyfSBRdWFudGlkYWRlIGRlIGNhc2FzIGRlY2ltYWlzIHF1ZSB0ZXLDoSBhcMOzcyBhIGNvbnZlcnPDo28uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRCeXRlcyhieXRlczogbnVtYmVyLCBkZWNpbWFscyA9IDIpOiBzdHJpbmcge1xuICBpZiAoIWJ5dGVzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IG11bHRpcGxpZXIgPSAxMDI0O1xuICBjb25zdCBzaXplcyA9IFsnQnl0ZXMnLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXTtcbiAgY29uc3QgcmVzdWx0ID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhtdWx0aXBsaWVyKSk7XG4gIGRlY2ltYWxzID0gZGVjaW1hbHMgPCAwID8gMCA6IGRlY2ltYWxzO1xuXG4gIHJldHVybiBgJHtwYXJzZUZsb2F0KChieXRlcyAvIE1hdGgucG93KG11bHRpcGxpZXIsIHJlc3VsdCkpLnRvRml4ZWQoZGVjaW1hbHMpKX0gJHtzaXplc1tyZXN1bHRdfWA7XG59XG5cbi8qKlxuICogUmV0b3JuYSBvIGlkaW9tYSBhdHVhbCBkbyBuYXZlZ2Fkb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJyb3dzZXJMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAvLyBuYXZpZ2F0b3IudXNlckxhbmd1YWdlIGlzIHRoZSB2YWx1ZSBmb3IgSUUxMFxuICBjb25zdCBsYW5ndWFnZSA9IG5hdmlnYXRvci5sYW5ndWFnZSB8fCBuYXZpZ2F0b3JbJ3VzZXJMYW5ndWFnZSddO1xuICBjb25zdCBzaG9ydExhbmd1YWdlID0gZ2V0U2hvcnRMYW5ndWFnZShsYW5ndWFnZSk7XG5cbiAgcmV0dXJuIHBvTG9jYWxlcy5pbmNsdWRlcyhzaG9ydExhbmd1YWdlKSA/IGxhbmd1YWdlIDogcG9Mb2NhbGVEZWZhdWx0O1xufVxuXG4vKipcbiAqIFJldG9ybmEgbyBpZGlvbWEgZG8gbmF2ZWdhZG9yLCBjb20gc29tZW50ZSBhcyBkdWFzIHByaW1laXJhcyBsZXRyYXMuIFBvciBleGVtcGxvOiBcInB0XCIgb3UgXCJlc1wiLlxuICpcbiAqIENhc28gbyB2YWxvciByZXRvcm5hZG8gcGVsbyBuYXZlZ2Fkb3IgbsOjbyBlc3RpdmVyIGRlbnRybyBkb3MgaWRpb21hcyBzdXBvcnRhZG9zIHBlbG8gUE8sXG4gKiBzZXLDoSByZXRvcm5hZG8gYSBsaW5ndWFnZW0gcGFkcsOjbyAocG9Mb2NhbGVEZWZhdWx0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNob3J0QnJvd3Nlckxhbmd1YWdlKCk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRTaG9ydExhbmd1YWdlKGdldEJyb3dzZXJMYW5ndWFnZSgpKTtcbn1cblxuLyoqXG4gKiBSZXRvcm5hIG8gaWRpb21hIGNvbSBzb21lbnRlIGEgYWJyZXZpYcOnw6NvIGRvIGlkaW9tYSAoZHVhcyBwcmltZWlyYXMgbGV0cmFzKS5cbiAqIFBvciBleGVtcGxvOiBcInB0XCIgb3UgXCJlc1wiLlxuICpcbiAqIEBwYXJhbSBsYW5ndWFnZSB7c3RyaW5nfSBsaW5ndWFnZW0uXG4gKlxuICogQHJldHVybnMgc2lnbGEgZG8gaWRpb21hIHBhZHLDo28ge3N0cmluZ30uXG4gKlxuICogQGRlZmF1bHQgcHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNob3J0TGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiAobGFuZ3VhZ2UgfHwgcG9Mb2NhbGVEZWZhdWx0KS50b0xvd2VyQ2FzZSgpLnN1YnN0cmluZygwLCAyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGFuZ3VhZ2UodmFsdWUpIHtcbiAgY29uc3QgbGFuZ3VhZ2VSZWdleCA9IG5ldyBSZWdFeHAoJ15bYS16XXsyfSgtW2Etel17Mn0pPyQnLCAnaScpO1xuXG4gIHJldHVybiBsYW5ndWFnZVJlZ2V4LnRlc3QodmFsdWUpO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbG9hZEN1cnJlbnRQYWdlKCkge1xuICB3aW5kb3cubG9jYXRpb24uYXNzaWduKGxvY2F0aW9uLmhyZWYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvQm9vbGVhbih2YWw6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSB2YWwudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgcmV0dXJuIHZhbCA9PT0gJ3RydWUnIHx8IHZhbCA9PT0gJ29uJyB8fCB2YWwgPT09ICcnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbCA9PT0gMTtcbiAgfVxuXG4gIHJldHVybiAhIXZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0ludCh2YWx1ZTogYW55LCB2YWx1ZURlZmF1bHQ/OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCB2YWxpZE51bWJlciA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gIGNvbnN0IHZhbGlkRGVmYXVsdFZhbHVlID0gcGFyc2VJbnQodmFsdWVEZWZhdWx0LCAxMCk7XG4gIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHZhbGlkRGVmYXVsdFZhbHVlIHx8IHZhbGlkRGVmYXVsdFZhbHVlID09PSAwID8gdmFsaWREZWZhdWx0VmFsdWUgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHZhbGlkTnVtYmVyIHx8IHZhbGlkTnVtYmVyID09PSAwID8gdmFsaWROdW1iZXIgOiBkZWZhdWx0VmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVvZihvYmplY3Q6IGFueSwgdHlwZTogYW55KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSB0eXBlO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gZm4gRnVuw6fDo28gcXVlIHNlcsOhIGV4ZWN1dGFkYSBkZW50cm8gZG8gY29udGV4dG8uIFBvZGVuZG8gc2VyIG8gbm9tZSBkYSBmdW7Dp8Ojb1xuICogb3UgYSByZWZlcsOqbmNpYSBkYSBtZXNtYS5cbiAqXG4gKiBAcGFyYW0gY29udGV4dCBDb250ZXh0byBkbyBxdWFsIGEgZnVuw6fDo28gc2Vyw6EgZXhlY3V0YWRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsbEZ1bmN0aW9uKGZuOiBhbnksIGNvbnRleHQ6IGFueSwgcGFyYW0/KTogdm9pZCB7XG4gIGlmIChpc1R5cGVvZihmbiwgJ2Z1bmN0aW9uJykpIHtcbiAgICBmbi5jYWxsKGNvbnRleHQsIHBhcmFtKTtcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0W2ZuXShwYXJhbSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRJc29Ub0RhdGUodmFsdWU6IHN0cmluZywgc3RhcnQ6IGJvb2xlYW4sIGVuZDogYm9vbGVhbikge1xuICBpZiAodmFsdWUpIHtcbiAgICBjb25zdCBkYXkgPSBwYXJzZUludCh2YWx1ZS5zdWJzdHJpbmcoOCwgMTApLCAxMCk7XG4gICAgY29uc3QgbW9udGggPSBwYXJzZUludCh2YWx1ZS5zdWJzdHJpbmcoNSwgNyksIDEwKTtcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQodmFsdWUuc3Vic3RyaW5nKDAsIDQpLCAxMCk7XG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIDAsIDAsIDApO1xuXG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfSBlbHNlIGlmIChlbmQpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSwgMjMsIDU5LCA1OSk7XG5cbiAgICAgIHNldFllYXJGcm9tMFRvMTAwKGRhdGUsIHllYXIpO1xuXG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWlsbGlzZWNvbmRzID0gRGF0ZS5wYXJzZSh2YWx1ZSk7XG4gICAgICBjb25zdCB0aW1lem9uZSA9IG5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKG1pbGxpc2Vjb25kcyArIHRpbWV6b25lKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnREYXRlVG9JU09EYXRlKGRhdGU6IERhdGUpIHtcbiAgaWYgKGRhdGUpIHtcbiAgICBjb25zdCBnZXRNb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0RGF0ZSgpIDogZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGggPSBnZXRNb250aCA8IDEwID8gJzAnICsgZ2V0TW9udGggOiBnZXRNb250aDtcbiAgICBjb25zdCB5ZWFyID0gZm9ybWF0WWVhcihkYXRlLmdldEZ1bGxZZWFyKCkpO1xuXG4gICAgcmV0dXJuIHllYXIgKyAnLScgKyBtb250aCArICctJyArIGRheTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERhdGVUb0lTT0V4dGVuZGVkKGRhdGU6IERhdGUsIHRpbWU/OiBzdHJpbmcpIHtcbiAgaWYgKGRhdGUpIHtcbiAgICBjb25zdCBnZXRNb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0RGF0ZSgpIDogZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGggPSBnZXRNb250aCA8IDEwID8gJzAnICsgZ2V0TW9udGggOiBnZXRNb250aDtcbiAgICBjb25zdCB5ZWFyID0gZm9ybWF0WWVhcihkYXRlLmdldEZ1bGxZZWFyKCkpO1xuXG4gICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTtcblxuICAgIGlmICh0aW1lICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4geWVhciArICctJyArIG1vbnRoICsgJy0nICsgZGF5ICsgdGltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgeWVhciArXG4gICAgICAgICctJyArXG4gICAgICAgIG1vbnRoICtcbiAgICAgICAgJy0nICtcbiAgICAgICAgZGF5ICtcbiAgICAgICAgJ1QnICtcbiAgICAgICAgZGF0ZVN0cmluZy5zdWJzdHJpbmcoMTYsIDI0KSArXG4gICAgICAgIGRhdGVTdHJpbmcuc3Vic3RyaW5nKDI4LCAzMSkgK1xuICAgICAgICAnOicgK1xuICAgICAgICBkYXRlU3RyaW5nLnN1YnN0cmluZygzMSwgMzMpXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIFRyYW5zZm9ybWEgbyBhbm8gZW0gdW1hIHN0cmluZyBubyBmb3JtYXRvIHl5eXkgZSBjYXNvIG8gYW5vIHNlamEgbWVub3IgcXVlIDEwMDAgcHJlZW5jaGUgY29tIHplcm9zIGEgZXNxdWVyZGEuXG4gKlxuICogQHBhcmFtIHllYXIgQW5vXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRZZWFyKHllYXI6IG51bWJlcikge1xuICBpZiAoeWVhciA+PSAxMDAwKSB7XG4gICAgcmV0dXJuIHllYXIudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGlmICh5ZWFyID4gOTkgJiYgeWVhciA8IDEwMDApIHtcbiAgICByZXR1cm4gYDAke3llYXJ9YDtcbiAgfVxuXG4gIGlmICh5ZWFyID4gOSAmJiB5ZWFyIDwgMTAwKSB7XG4gICAgcmV0dXJuIGAwMCR7eWVhcn1gO1xuICB9XG5cbiAgaWYgKHllYXIgPj0gMCAmJiB5ZWFyIDwgMTApIHtcbiAgICByZXR1cm4gYDAwMCR7eWVhcn1gO1xuICB9XG59XG4vLyBWZXJpZmljYSBzZSBvIG5hdmVnYWRvciBlbSBxdWUgZXN0w6Egc2VuZG8gdXNhZG8gw6kgSW50ZXJuZXQgRXhwbG9yZXIgb3UgRWRnZVxuZXhwb3J0IGZ1bmN0aW9uIGlzSUVPckVkZ2UoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuXG4gIHJldHVybiAvbXNpZVxcc3x0cmlkZW50XFwvfGVkZ2VcXC8vaS50ZXN0KHVzZXJBZ2VudCk7XG59XG5cbi8vIFZlcmlmaWNhIHNlIG8gbmF2ZWdhZG9yIGVtIHF1ZSBlc3TDoSBzZW5kbyB1c2FkbyDDqSBJbnRlcm5ldCBFeHBsb3JlclxuZXhwb3J0IGZ1bmN0aW9uIGlzSUUoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuXG4gIHJldHVybiAvbXNpZVxcc3x0cmlkZW50L2kudGVzdCh1c2VyQWdlbnQpO1xufVxuXG4vLyBWZXJpZmljYSBzZSBvIG5hdmVnYWRvciBlbSBxdWUgZXN0w6Egc2VuZG8gdXNhZG8gw6kgRmlyZWZveFxuZXhwb3J0IGZ1bmN0aW9uIGlzRmlyZWZveCgpIHtcbiAgY29uc3QgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbiAgcmV0dXJuIHVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2ZpcmVmb3gnKSA+IC0xO1xufVxuXG4vLyBWZXJpZmljYSBxdWFsIG8gZGlzcG9zaXRpdm8gcXVlIGVzdMOhIHNlbmRvIHVzYWRvXG5leHBvcnQgZnVuY3Rpb24gaXNNb2JpbGUoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuXG4gIHJldHVybiB1c2VyQWdlbnQubWF0Y2goL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fFdpbmRvd3MgUGhvbmUvaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VxdWFscyh2YWx1ZSwgY29tcGFyZWRWYWx1ZSkge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpID09PSBKU09OLnN0cmluZ2lmeShjb21wYXJlZFZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzS2V5Q29kZUVudGVyKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIGV2ZW50LmtleUNvZGUgPT09IDEzIHx8IGV2ZW50LndoaWNoID09PSAxMztcbn1cblxuLyoqXG4gKiBDYXNvIG8gYW5vIG9yaWdpbmFsIGRhIGRhdGEgc2VqYSBlbnRyZSAwIGUgMTAwIGF0cmlidWkgZXNzZSB2YWxvciBhbyBhbm8sIHBvaXMgbyBgbmV3IERhdGVgIGRvIGphdmFzY3JpcHQgdHJhbnNmb3JtYSBvIGFubyBwYXJhIDE5MFguXG4gKlxuICogQHBhcmFtIGRhdGUgRGF0YVxuICogQHBhcmFtIHllYXIgQW5vIG9yaWdpbmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRZZWFyRnJvbTBUbzEwMChkYXRlOiBEYXRlLCB5ZWFyOiBudW1iZXIpIHtcbiAgaWYgKHllYXIgPj0gMCAmJiB5ZWFyIDwgMTAwKSB7XG4gICAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydE9wdGlvbnNCeVByb3BlcnR5KG9wdGlvbnM6IEFycmF5PGFueT4sIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgb3B0aW9ucy5zb3J0KChvcHRpb25BLCBvcHRpb25CKSA9PiB7XG4gICAgb3B0aW9uQSA9IG9wdGlvbkFbcHJvcGVydHldLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICBvcHRpb25CID0gb3B0aW9uQltwcm9wZXJ0eV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKG9wdGlvbkEgPCBvcHRpb25CKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChvcHRpb25BID4gb3B0aW9uQikge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9KTtcbn1cblxuLyoqXG4gKiBPcmRlbmEgbyBjYW1wb3MgYmFzZWFkbyBubyB2YWxvciBkYSBwcm9wcmllZGFkZSBgb3JkZXJgLlxuICpcbiAqIFPDsyBzZXLDo28gYWNlaXRvcyB2YWxvcmVzIGNvbSBuw7ptZXJvcyBpbnRlaXJvcyBtYWlvcmVzIGRvIHF1ZSB6ZXJvIHBhcmEgYSBvcmRlbmHDp8Ojby5cbiAqXG4gKiBDYW1wb3Mgc2VtIGBvcmRlcmAgb3UgY29tIHZhbG9yZXMgbmVnYXRpdm9zLCB6ZXJhZG9zIG91IGludsOhbGlkb3NcbiAqIHJlY2ViZXLDo28gbyB2YWxvciBkZWZhdWx0IGUgc2VndWlyw6NvIG8gcG9zaWNpb25hbWVudG8gZGVudHJvIGRvXG4gKiBhcnJheS5cbiAqXG4gKiBAcGFyYW0gZmllbGRzIGNhbXBvIHF1ZSBzZSBkZXNlamEgb3JkZW5hci5cbiAqIEBwYXJhbSBkZWZhdWx0T3JkZXJpbmcgdmFsb3IgcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIG1hbnRlciBuYSBwb3Npw6fDo28gZG8gYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0RmllbGRzKGZpZWxkcyA9IFtdLCBkZWZhdWx0T3JkZXJpbmcgPSAtMSkge1xuICBjb25zdCByZXN1bHRDbGFzc2lmaWNhdGlvbiA9IHsgZmllbGRBQ29tZXNGaXJzdDogLTEsIGZpZWxkQUNvbWVzQWZ0ZXI6IDEsIGtlZXBQb3NpdGlvbnM6IDAgfTtcblxuICBjb25zdCBpc09yZGVyVmFsaWQgPSAob3JkZXI6IG51bWJlcikgPT4gaXNUeXBlb2Yob3JkZXIsICdudW1iZXInKSAmJiBvcmRlciA+IDA7XG4gIGNvbnN0IGFwcGx5RGVmYXVsdE9yZGVyaW5nID0gKG9yZGVyOiBudW1iZXIpID0+IChpc09yZGVyVmFsaWQob3JkZXIpID8gb3JkZXIgOiBkZWZhdWx0T3JkZXJpbmcpO1xuXG4gIHJldHVybiBmaWVsZHMuc29ydCgoZmllbGRBLCBmaWVsZEIpID0+IHtcbiAgICBjb25zdCBvcmRlckEgPSBhcHBseURlZmF1bHRPcmRlcmluZyhmaWVsZEEub3JkZXIpO1xuICAgIGNvbnN0IG9yZGVyQiA9IGFwcGx5RGVmYXVsdE9yZGVyaW5nKGZpZWxkQi5vcmRlcik7XG5cbiAgICBpZiAob3JkZXJBID09PSBvcmRlckIpIHtcbiAgICAgIHJldHVybiByZXN1bHRDbGFzc2lmaWNhdGlvbi5rZWVwUG9zaXRpb25zO1xuICAgIH1cblxuICAgIGlmIChvcmRlckEgPT09IGRlZmF1bHRPcmRlcmluZykge1xuICAgICAgcmV0dXJuIHJlc3VsdENsYXNzaWZpY2F0aW9uLmZpZWxkQUNvbWVzQWZ0ZXI7XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyQiA9PT0gZGVmYXVsdE9yZGVyaW5nKSB7XG4gICAgICByZXR1cm4gcmVzdWx0Q2xhc3NpZmljYXRpb24uZmllbGRBQ29tZXNGaXJzdDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JkZXJBIC0gb3JkZXJCO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUR1cGxpY2F0ZWRPcHRpb25zKGxpc3Q6IEFycmF5PGFueT4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChsaXN0LmZpbmRJbmRleChvcCA9PiBvcC52YWx1ZSA9PT0gbGlzdFtpXS52YWx1ZSkgIT09IGkpIHtcbiAgICAgIGxpc3Quc3BsaWNlKGksIDEpO1xuICAgICAgaS0tO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbE9wdGlvbnMobGlzdDogQXJyYXk8YW55Pikge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobGlzdFtpXS52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGxpc3RbaV0udmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGxpc3Quc3BsaWNlKGksIDEpO1xuICAgICAgaS0tO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gIHJldHVybiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycpIHx8IHZhbHVlID09PSBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZXJuYWxMaW5rKHVybCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdXJsID8gdXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSA6IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlbkV4dGVybmFsTGluayh1cmwpOiB2b2lkIHtcbiAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZWRMaW5rKGxpbms6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBmb3JtYXR0ZWRMaW5rID0gJyc7XG4gIC8vIFJldGlyYSB0b2RvcyBvcyBwb250b3Mgbm8gY29tZcOnbyBkYSBVUkwuXG4gIGlmIChsaW5rKSB7XG4gICAgZm9ybWF0dGVkTGluayA9IGxpbmsucmVwbGFjZSgvXihcXC4pKy9nLCAnJyk7XG4gIH1cbiAgLy8gVmVyaWZpY2Egc2UgZm9pIHV0aWxpemFkbyB1bWEgcm90YSBxdWUgbsOjbyBjb21lY2UgY29tIGJhcnJhLlxuICBpZiAoIWZvcm1hdHRlZExpbmsuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgZm9ybWF0dGVkTGluayA9ICcvJy5jb25jYXQoZm9ybWF0dGVkTGluayk7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdHRlZExpbms7XG59XG5cbi8qKlxuICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIG9yZGVuYXIgZG9pcyB2YWxvcmVzLlxuICpcbiAqIEBwYXJhbSBsZWZ0U2lkZSBQcmltZWlybyB2YWxvciBhIHNlciBjb21wYXJhZG8uXG4gKiBAcGFyYW0gcmlnaHRTaWRlIFNlZ3VuZG8gdmFsb3IgYSBzZXIgY29tcGFyYWRvLlxuICogQHBhcmFtIGFzY2VuZGluZyBEZXRlcm1pbmEgc2Ugc2Vyw6EgZW0gb3JkZW0gYXNjZW5kZW50ZSBvdSBkZXNjZW5kZW50ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRWYWx1ZXMobGVmdFNpZGU6IHN0cmluZyB8IERhdGUsIHJpZ2h0U2lkZTogc3RyaW5nIHwgRGF0ZSwgYXNjZW5kaW5nOiBib29sZWFuID0gdHJ1ZSk6IG51bWJlciB7XG4gIGNvbnN0IGxlZnQgPSBpc1R5cGVvZihsZWZ0U2lkZSwgJ3N0cmluZycpID8gKGxlZnRTaWRlIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKSA6IGxlZnRTaWRlO1xuICBjb25zdCByaWdodCA9IGlzVHlwZW9mKHJpZ2h0U2lkZSwgJ3N0cmluZycpID8gKHJpZ2h0U2lkZSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkgOiByaWdodFNpZGU7XG5cbiAgY29uc3QgbGVmdElzSW52YWxpZCA9IGxlZnQgPT09IG51bGwgfHwgbGVmdCA9PT0gdW5kZWZpbmVkIHx8IE51bWJlci5pc05hTihsZWZ0KTtcbiAgY29uc3QgcmlnaHRJc0ludmFsaWQgPSByaWdodCA9PT0gbnVsbCB8fCByaWdodCA9PT0gdW5kZWZpbmVkIHx8IE51bWJlci5pc05hTihyaWdodCk7XG5cbiAgaWYgKGFzY2VuZGluZykge1xuICAgIGlmIChsZWZ0IDwgcmlnaHQgfHwgbGVmdElzSW52YWxpZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSBpZiAobGVmdCA+IHJpZ2h0IHx8IHJpZ2h0SXNJbnZhbGlkKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXNjZW5kaW5nID09PSBmYWxzZSkge1xuICAgIGlmIChsZWZ0IDwgcmlnaHQgfHwgbGVmdElzSW52YWxpZCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmIChsZWZ0ID4gcmlnaHQgfHwgcmlnaHRJc0ludmFsaWQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURhdGVSYW5nZShkYXRlOiBEYXRlLCBkYXRlU3RhcnQ6IERhdGUsIGRhdGVFbmQ6IERhdGUpIHtcbiAgaWYgKGRhdGVTdGFydCAmJiBkYXRlRW5kKSB7XG4gICAgcmV0dXJuIGRhdGUgPj0gZGF0ZVN0YXJ0ICYmIGRhdGUgPD0gZGF0ZUVuZDtcbiAgfSBlbHNlIGlmIChkYXRlU3RhcnQgJiYgIWRhdGVFbmQpIHtcbiAgICByZXR1cm4gZGF0ZSA+PSBkYXRlU3RhcnQ7XG4gIH0gZWxzZSBpZiAoIWRhdGVTdGFydCAmJiBkYXRlRW5kKSB7XG4gICAgcmV0dXJuIGRhdGUgPD0gZGF0ZUVuZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXVpZCgpIHtcbiAgZnVuY3Rpb24gaGV4NCgpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcigoMSArIE1hdGgucmFuZG9tKCkpICogMHgxMDAwMClcbiAgICAgIC50b1N0cmluZygxNilcbiAgICAgIC5zdWJzdHJpbmcoMSk7XG4gIH1cblxuICByZXR1cm4gaGV4NCgpICsgaGV4NCgpICsgJy0nICsgaGV4NCgpICsgJy0nICsgaGV4NCgpICsgJy0nICsgaGV4NCgpICsgJy0nICsgaGV4NCgpICsgaGV4NCgpICsgaGV4NCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHt0ZXh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7dGV4dC5zbGljZSgxKX1gO1xufVxuXG4vKipcbiAqIE1hcGVpYSB1bSBub3ZvIGFycmF5IGFwZW5hcyBjb20gYXMgcHJvcHJpZWRhZGVzIGRlZmluaWRhcyBwZWxvIGRlc2Vudm9sdmVkb3IgYmFzZWFkbyBlbSB1bSBhcnJheSBkZVxuICogb3JpZ2VtLlxuICpcbiAqIEV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiBjb25zdCBwZW9wbGUgPSBbXG4gKiAgeyBpZDogMSwgbmFtZTogJ0Z1bGFubycsIGJpcnRoZGF0ZTogJzE5ODAtMTEtMDEnLCBnZW5yZTogJ01hbGUnLCBjaXR5OiAnU8OjbyBQYXVsbycsIGRlcGVuZGVudHM6IDIgfSxcbiAqICB7IGlkOiAyLCBuYW1lOiAnQmVsdHJhbm8nLCBiaXJ0aGRhdGU6ICcxOTk3LTAxLTIxJywgZ2VucmU6ICdGZW1hbGUnLCBjaXR5OiAnSm9pbnZpbGxlJywgZGVwZW5kZW50czogMCB9LFxuICogIHsgaWQ6IDMsIG5hbWU6ICdTaWNsYW5vJywgYmlydGhkYXRlOiAnMTk5NS0wNy0xNScsIGdlbnJlOiAnTWFsZScsIGNpdHk6ICdKb2ludmlsbGUnLCBkZXBlbmRlbnRzOiAwIH1cbiAqIF07XG4gKlxuICogY29uc3QgcHJvcGVydGllcyA9IFsnaWQnLCAnbmFtZSddO1xuICpcbiAqIGNvbnN0IGlkQW5kTmFtZSA9IG1hcEFycmF5QnlQcm9wZXJ0aWVzKHBlb3BsZSwgcHJvcGVydGllcyk7XG4gKlxuICogY29uc29sZS5sb2coaWRBbmROYW1lKTsgLy8gW3sgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nIH0sIHsgaWQ6IDIsIG5hbWU6ICdCZWx0cmFubycgfSwgeyBpZDogMywgbmFtZTogJ1NpY2xhbm8nIH1dXG4gKiBgYGBcbiAqXG4gKiBVbSBvdXRybyB1c28gcGFyYSBvIG3DqXRvZG8gw6kgXCJwYXJlYXJcIiB0b2RvcyBvcyBvYmpldG9zIGRvIGFycmF5IGNvbSBhcyBtZXNtYXMgcHJvcHJpZWRhZGVzLlxuICpcbiAqIGBgYFxuICogY29uc3QgY3VzdG9tZXJzID0gW1xuICogIHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nLCBjaXR5OiAnU8OjbyBQYXVsbycsIGRlcGVuZGVudHM6IDIgfSwgLy8gc2VtIGdlbnJlXG4gKiAgeyBpZDogMiwgbmFtZTogJ0JlbHRyYW5vJywgZ2VucmU6ICdGZW1hbGUnLCBjaXR5OiAnSm9pbnZpbGxlJyB9LCAvLyBzZW0gZGVwZW5kZW50c1xuICogIHsgaWQ6IDMsIG5hbWU6ICdTaWNsYW5vJywgZ2VucmU6ICdNYWxlJywgY2l0eTogJ0pvaW52aWxsZScsIGRlcGVuZGVudHM6IDAgfVxuICogXTtcbiAqIGNvbnN0IHByb3BlcnRpZXMgPSBbJ2lkJywgJ25hbWUnLCAnY2l0eScsICdnZW5yZScsICdkZXBlbmRlbnRzJ107XG4gKlxuICogY29uc3QgcGF0dGVybiA9IG1hcEFycmF5QnlQcm9wZXJ0aWVzKGN1c3RvbWVycywgcHJvcGVydGllcyk7XG4gKiBjb25zb2xlLmxvZyhwYXR0ZXJuKTtcbiAqXG4gKiAvLyBbXG4gKiAvLyAgIHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nLCBjaXR5OiAnU8OjbyBQYXVsbycsIGdlbnJlOiB1bmRlZmluZWQsIGRlcGVuZGVudHM6IDIgfSxcbiAqIC8vICAgeyBpZDogMiwgbmFtZTogJ0JlbHRyYW5vJywgY2l0eTogJ0pvaW52aWxsZScsIGdlbnJlOiAnRmVtYWxlJywgZGVwZW5kZW50czogdW5kZWZpbmVkIH0sXG4gKiAvLyAgIHsgaWQ6IDMsIG5hbWU6ICdTaWNsYW5vJywgY2l0eTogJ0pvaW52aWxsZScsIGdlbnJlOiAnTWFsZScsIGRlcGVuZGVudHM6IDAgfVxuICogLy8gXVxuICogYGBgXG4gKlxuICogQHBhcmFtIGl0ZW1zIHtBcnJheTxhbnk+fSBBcnJheSBkZSBpdGVtcyBvcmlnaW5hbC5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIHtBcnJheTxzdHJpbmc+fSBBcnJheSBkZSBzdHJpbmcgY29tIGEgbGlzdGEgZGUgcHJvcHJpZWRhZGVzIHF1ZSBkZXZlbSBzZXIgcmV0b3JuYWRhcy5cbiAqXG4gKiBAcmV0dXJucyBBcnJheTxhbnk+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBBcnJheUJ5UHJvcGVydGllcyhpdGVtczogQXJyYXk8YW55PiA9IFtdLCBwcm9wZXJ0aWVzOiBBcnJheTxzdHJpbmc+ID0gW10pOiBBcnJheTxhbnk+IHtcbiAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IG1hcE9iamVjdEJ5UHJvcGVydGllcyhpdGVtLCBwcm9wZXJ0aWVzKSk7XG59XG5cbi8qKlxuICogTWFwZWlhIHVtIG5vdm8gb2JqZXRvIGFwZW5hcyBjb20gYXMgcHJvcHJpZWRhZGVzIGRlZmluaWRhcyBwZWxvIGRlc2Vudm9sdmVkb3IuXG4gKlxuICogRXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIGNvbnN0IHBlcnNvbiA9IHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nLCBiaXJ0aGRhdGU6ICcxOTgwLTExLTAxJywgZ2VucmU6ICdNYWxlJywgY2l0eTogJ1PDo28gUGF1bG8nLCBkZXBlbmRlbnRzOiAyIH07XG4gKlxuICogY29uc3QgcHJvcGVydGllcyA9IFsnaWQnLCAnbmFtZSddO1xuICpcbiAqIGNvbnN0IGlkQW5kTmFtZSA9IG1hcE9iamVjdEJ5UHJvcGVydGllcyhwZXJzb24sIHByb3BlcnRpZXMpO1xuICpcbiAqIGNvbnNvbGUubG9nKGlkQW5kTmFtZSk7IC8vIHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBvYmplY3Qge0FycmF5PGFueT59IEFycmF5IGRlIGl0ZW1zIG9yaWdpbmFsLlxuICogQHBhcmFtIHByb3BlcnRpZXMge0FycmF5PHN0cmluZz59IEFycmF5IGRlIHN0cmluZyBjb20gYSBsaXN0YSBkZSBwcm9wcmllZGFkZXMgcXVlIGRldmVtIHNlciByZXRvcm5hZGFzLlxuICpcbiAqIEByZXR1cm5zIEFycmF5PGFueT5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcE9iamVjdEJ5UHJvcGVydGllcyhvYmplY3Q6IGFueSA9IHt9LCBwcm9wZXJ0aWVzOiBBcnJheTxzdHJpbmc+ID0gW10pIHtcbiAgY29uc3QgZ2V0U2VsZWN0ZWRQcm9wZXJ0aWVzID0gKHNlbGVjdGVkUHJvcGVydGllcywgcHJvcGVydHkpID0+ICh7XG4gICAgLi4uc2VsZWN0ZWRQcm9wZXJ0aWVzLFxuICAgIFtwcm9wZXJ0eV06IG9iamVjdFtwcm9wZXJ0eV1cbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXMucmVkdWNlKGdldFNlbGVjdGVkUHJvcGVydGllcywge30pO1xufVxuXG4vKipcbiAqIFJldG9ybmEgb3MgdmFsb3JlcyBkZSB1bSBvYmpldG8gZGVudHJvIGRlIHVtIGFycmF5LlxuICpcbiAqID4gU2ltdWxhIG8gT2JqZWN0LnZhbHVlcyhvYmopLCBvIG1lc21vIGRldmUgc2VyIHJlbW92aWRvIGFzc2ltIHF1ZSBhIHZlcnPDo28gdHlwZXNjcml0IGZvciBhdHVhbGl6YWRhLlxuICpcbiAqIEBwYXJhbSBvYmplY3QgT2JqZXRvIGRlIG9uZGUgc2Vyw6EgcGVnbyBvcyB2YWxvcmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVzRnJvbU9iamVjdChvYmplY3Q6IGFueSA9IHt9KTogQXJyYXk8YW55PiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLm1hcChwcm9wZXJ0eSA9PiBvYmplY3RbcHJvcGVydHldKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0ZSB1bSBhcnF1aXZvIGVtIGJhc2U2NC5cbiAqXG4gKiBAcGFyYW0gZmlsZSBhcnF1aXZvIHF1ZSBzZXLDoSBjb252ZXJ0aWRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEltYWdlVG9CYXNlNjQoZmlsZTogRmlsZSk6IFByb21pc2U8YW55PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmVhZGVyLm9uZXJyb3IgPSBlcnJvciA9PiByZWplY3QoZXJyb3IpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0ZSB1bSBuw7ptZXJvIGVtIGRlY2ltYWwgYmFzZWFkbyBuYSBxdWFudGlkYWRlIGRlIGNhc2FzIGRlY2ltYWlzLlxuICpcbiAqIENhc28gbyB2YWxvciBzZWphIGludsOhbGlkbywgc2Vyw6EgcmV0b3JuYWRvIG8gdmFsb3IgYHVuZGVmaW5lZGAuXG4gKiBWYWxvcmVzIGludsOhbGlkb3Mgc8OjbzogYGZhbHNlYCwgYE5hTmAsIGBzdHJpbmdzYCBxdWUgbsOjbyBudW3DqXJpY2FzLCBgdW5kZWZpbmVkYCBlIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gbnVtYmVyIHZhbG9yIHF1ZSBzZXLDoSBjb252ZXJ0aWRvXG4gKiBAcGFyYW0gZGVjaW1hbHNQbGFjZSBxdWFudGlkYWRlIGRlIGNhc2FzIGRlY2ltYWlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0TnVtYmVyVG9EZWNpbWFsKG51bWJlcjogYW55LCBkZWNpbWFsc1BsYWNlOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBpc1ZhbGlkVmFsdWUgPSAobnVtYmVyIHx8IG51bWJlciA9PT0gMCkgJiYgIWlzTmFOKG51bWJlcik7XG5cbiAgY29uc3QgZmxvYXRWYWx1ZSA9IGlzVmFsaWRWYWx1ZSA/IHBhcnNlRmxvYXQobnVtYmVyKSA6IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KGZsb2F0VmFsdWUudG9GaXhlZChkZWNpbWFsc1BsYWNlKSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmbG9hdFZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogUmV0b3JuYSB1bWEgY29waWEgZG8gb2JqZXRvIHN1am8sIHNlbSBhcyBwcm9wcmllZGFkZXMgbnVsYXMgb3UgaW5kZWZpbmlkYXMuXG4gKiBSZXRvcm5hIG8gb2JqZXRvIHNlbSBhcyBwcm9wcmllZGFkZXMgcXVlIGNvbnTDqW0gdmFsb3JlcyBudWxvcyBvdSBpbmRlZmluaWRvcy5cbiAqXG4gKiBAcGFyYW0gZGlydHlPYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyT2JqZWN0KGRpcnR5T2JqZWN0OiBvYmplY3QpOiBhbnkge1xuICBjb25zdCBjbGVhbk9iamVjdCA9IHt9O1xuXG4gIE9iamVjdC5rZXlzKGRpcnR5T2JqZWN0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgaWYgKGRpcnR5T2JqZWN0W2tleV0gIT09IG51bGwgJiYgZGlydHlPYmplY3Rba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhbk9iamVjdFtrZXldID0gZGlydHlPYmplY3Rba2V5XTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjbGVhbk9iamVjdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlT2JqZWN0VHlwZSh2YWx1ZTogYW55KSB7XG4gIHJldHVybiBpc1R5cGVvZih2YWx1ZSwgJ29iamVjdCcpICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldG9ybmEgb3MgZWxlbWVudG9zIERPTSBjYXBhemVzIGRlIHJlY2ViZXIgZm9jby5cbiAqXG4gKiA+IEF0dWFsbWVudGUgc8OjbyBjb25zaWRlcmFkb3MgXCJmb2PDoXZlaXNcIiBvcyBlbGVtZW50b3MgRE9NIGBpbnB1dGAsIGBzZWxlY3RgLFxuICogYHRleHRhcmVhYCwgYGJ1dHRvbmAgZSBgYWAuXG4gKlxuICogQHBhcmFtIHBhcmVudEVsZW1lbnQgRWxlbWVudG8gRE9NIHBhaS5cbiAqIEByZXR1cm5zIExpc3RhIGRvcyBlbGVtZW50b3MgRE9NIGZpbGhvcyBcImZvY8OhdmVpc1wiLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlRWxlbWVudHMocGFyZW50RWxlbWVudDogRWxlbWVudCk6IE5vZGVMaXN0T2Y8RWxlbWVudD4ge1xuICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9ICdidXR0b246bm90KFtkaXNhYmxlZF0pLCBbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSc7XG4gIHJldHVybiBwYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZm9jdXNhYmxlRWxlbWVudHMpO1xufVxuIl19
|
|
519
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvdXRpbHMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTFGOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sdUJBQXVCLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBYSxFQUFFLFFBQVEsR0FBRyxDQUFDO0lBQ3JELElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQztJQUN4QixNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNsRSxRQUFRLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFdkMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ3BHLENBQUM7QUFFRDs7R0FFRztBQUNI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QUFFO1FBQ3JDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQy9ELFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBVTtJQUMzQyxPQUFPLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoRixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsYUFBc0I7SUFDekQsTUFBTSxpQkFBaUIsR0FBRyx5RkFBeUYsQ0FBQztJQUNwSCxPQUFPLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwb0xvY2FsZXMsIHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXRpbGl6ZSBvIG3DqXRvZG8gYGdldFNob3J0QnJvd3Nlckxhbmd1YWdlYC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldG9ybmEgaWRpb21hIGRvIGJyb3dzZXIgb3UgbyBpZGlvbWEgcGFkcsOjby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyb3dzZXJMYW5ndWFnZSgpIHtcbiAgcmV0dXJuIGdldFNob3J0QnJvd3Nlckxhbmd1YWdlKCk7XG59XG5cbi8qKlxuICogQ29udmVydGUgZSBmb3JtYXRhIG9zIGJ5dGVzIGVtIGZvcm1hdG8gbWFpcyBsZWfDrXZlbCBwYXJhIG8gdXN1w6FyaW8uXG4gKlxuICogUG9yIGV4ZW1wbG86XG4gKiAtIDMxNDU3MjgwIGVtIDMwIE1CLlxuICogLSAyMTQ3NDgzNjQ4MCBlbSAyMCBHQi5cbiAqIC0gMTIuNTY2NjY2NiBlbSAxMi41NyBCeXRlcyAoZHVhcyBjYXNhcyBkZWNpbWFpcykuXG4gKlxuICogQHBhcmFtIGJ5dGVzIHtudW1iZXJ9IFZhbG9yIGVtIGJ5dGVzXG4gKiBAcGFyYW0gZGVjaW1hbHMge251bWJlcn0gUXVhbnRpZGFkZSBkZSBjYXNhcyBkZWNpbWFpcyBxdWUgdGVyw6EgYXDDs3MgYSBjb252ZXJzw6NvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Qnl0ZXMoYnl0ZXM6IG51bWJlciwgZGVjaW1hbHMgPSAyKTogc3RyaW5nIHtcbiAgaWYgKCFieXRlcykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBtdWx0aXBsaWVyID0gMTAyNDtcbiAgY29uc3Qgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gIGNvbnN0IHJlc3VsdCA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2cobXVsdGlwbGllcikpO1xuICBkZWNpbWFscyA9IGRlY2ltYWxzIDwgMCA/IDAgOiBkZWNpbWFscztcblxuICByZXR1cm4gYCR7cGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhtdWx0aXBsaWVyLCByZXN1bHQpKS50b0ZpeGVkKGRlY2ltYWxzKSl9ICR7c2l6ZXNbcmVzdWx0XX1gO1xufVxuXG4vKipcbiAqIFJldG9ybmEgbyBpZGlvbWEgYXR1YWwgZG8gbmF2ZWdhZG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCcm93c2VyTGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgLy8gbmF2aWdhdG9yLnVzZXJMYW5ndWFnZSBpcyB0aGUgdmFsdWUgZm9yIElFMTBcbiAgY29uc3QgbGFuZ3VhZ2UgPSBuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgbmF2aWdhdG9yWyd1c2VyTGFuZ3VhZ2UnXTtcbiAgY29uc3Qgc2hvcnRMYW5ndWFnZSA9IGdldFNob3J0TGFuZ3VhZ2UobGFuZ3VhZ2UpO1xuXG4gIHJldHVybiBwb0xvY2FsZXMuaW5jbHVkZXMoc2hvcnRMYW5ndWFnZSkgPyBsYW5ndWFnZSA6IHBvTG9jYWxlRGVmYXVsdDtcbn1cblxuLyoqXG4gKiBSZXRvcm5hIG8gaWRpb21hIGRvIG5hdmVnYWRvciwgY29tIHNvbWVudGUgYXMgZHVhcyBwcmltZWlyYXMgbGV0cmFzLiBQb3IgZXhlbXBsbzogXCJwdFwiIG91IFwiZXNcIi5cbiAqXG4gKiBDYXNvIG8gdmFsb3IgcmV0b3JuYWRvIHBlbG8gbmF2ZWdhZG9yIG7Do28gZXN0aXZlciBkZW50cm8gZG9zIGlkaW9tYXMgc3Vwb3J0YWRvcyBwZWxvIFBPLFxuICogc2Vyw6EgcmV0b3JuYWRvIGEgbGluZ3VhZ2VtIHBhZHLDo28gKHBvTG9jYWxlRGVmYXVsdCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG9ydEJyb3dzZXJMYW5ndWFnZSgpOiBzdHJpbmcge1xuICByZXR1cm4gZ2V0U2hvcnRMYW5ndWFnZShnZXRCcm93c2VyTGFuZ3VhZ2UoKSk7XG59XG5cbi8qKlxuICogUmV0b3JuYSBvIGlkaW9tYSBjb20gc29tZW50ZSBhIGFicmV2aWHDp8OjbyBkbyBpZGlvbWEgKGR1YXMgcHJpbWVpcmFzIGxldHJhcykuXG4gKiBQb3IgZXhlbXBsbzogXCJwdFwiIG91IFwiZXNcIi5cbiAqXG4gKiBAcGFyYW0gbGFuZ3VhZ2Uge3N0cmluZ30gbGluZ3VhZ2VtLlxuICpcbiAqIEByZXR1cm5zIHNpZ2xhIGRvIGlkaW9tYSBwYWRyw6NvIHtzdHJpbmd9LlxuICpcbiAqIEBkZWZhdWx0IHB0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG9ydExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gKGxhbmd1YWdlIHx8IHBvTG9jYWxlRGVmYXVsdCkudG9Mb3dlckNhc2UoKS5zdWJzdHJpbmcoMCwgMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xhbmd1YWdlKHZhbHVlKSB7XG4gIGNvbnN0IGxhbmd1YWdlUmVnZXggPSBuZXcgUmVnRXhwKCdeW2Etel17Mn0oLVthLXpdezJ9KT8kJywgJ2knKTtcblxuICByZXR1cm4gbGFuZ3VhZ2VSZWdleC50ZXN0KHZhbHVlKTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmV4cG9ydCBmdW5jdGlvbiByZWxvYWRDdXJyZW50UGFnZSgpIHtcbiAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihsb2NhdGlvbi5ocmVmKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0Jvb2xlYW4odmFsOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gdmFsLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIHJldHVybiB2YWwgPT09ICd0cnVlJyB8fCB2YWwgPT09ICdvbicgfHwgdmFsID09PSAnJztcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWwgPT09IDE7XG4gIH1cblxuICByZXR1cm4gISF2YWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9JbnQodmFsdWU6IGFueSwgdmFsdWVEZWZhdWx0PzogYW55KTogbnVtYmVyIHtcbiAgY29uc3QgdmFsaWROdW1iZXIgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICBjb25zdCB2YWxpZERlZmF1bHRWYWx1ZSA9IHBhcnNlSW50KHZhbHVlRGVmYXVsdCwgMTApO1xuICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YWxpZERlZmF1bHRWYWx1ZSB8fCB2YWxpZERlZmF1bHRWYWx1ZSA9PT0gMCA/IHZhbGlkRGVmYXVsdFZhbHVlIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB2YWxpZE51bWJlciB8fCB2YWxpZE51bWJlciA9PT0gMCA/IHZhbGlkTnVtYmVyIDogZGVmYXVsdFZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlb2Yob2JqZWN0OiBhbnksIHR5cGU6IGFueSkge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gdHlwZTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGZuIEZ1bsOnw6NvIHF1ZSBzZXLDoSBleGVjdXRhZGEgZGVudHJvIGRvIGNvbnRleHRvLiBQb2RlbmRvIHNlciBvIG5vbWUgZGEgZnVuw6fDo29cbiAqIG91IGEgcmVmZXLDqm5jaWEgZGEgbWVzbWEuXG4gKlxuICogQHBhcmFtIGNvbnRleHQgQ29udGV4dG8gZG8gcXVhbCBhIGZ1bsOnw6NvIHNlcsOhIGV4ZWN1dGFkYS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGxGdW5jdGlvbihmbjogYW55LCBjb250ZXh0OiBhbnksIHBhcmFtPyk6IHZvaWQge1xuICBpZiAoaXNUeXBlb2YoZm4sICdmdW5jdGlvbicpKSB7XG4gICAgZm4uY2FsbChjb250ZXh0LCBwYXJhbSk7XG4gIH0gZWxzZSB7XG4gICAgY29udGV4dFtmbl0ocGFyYW0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlOiBzdHJpbmcsIHN0YXJ0OiBib29sZWFuLCBlbmQ6IGJvb2xlYW4pIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgY29uc3QgZGF5ID0gcGFyc2VJbnQodmFsdWUuc3Vic3RyaW5nKDgsIDEwKSwgMTApO1xuICAgIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQodmFsdWUuc3Vic3RyaW5nKDUsIDcpLCAxMCk7XG4gICAgY29uc3QgeWVhciA9IHBhcnNlSW50KHZhbHVlLnN1YnN0cmluZygwLCA0KSwgMTApO1xuICAgIGlmIChzdGFydCkge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5LCAwLCAwLCAwKTtcblxuICAgICAgc2V0WWVhckZyb20wVG8xMDAoZGF0ZSwgeWVhcik7XG5cbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH0gZWxzZSBpZiAoZW5kKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIDIzLCA1OSwgNTkpO1xuXG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IERhdGUucGFyc2UodmFsdWUpO1xuICAgICAgY29uc3QgdGltZXpvbmUgPSBuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMDtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShtaWxsaXNlY29uZHMgKyB0aW1lem9uZSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0SXNvVG9EYXRlTm9UaW1lem9uZSh2YWx1ZTogc3RyaW5nKSB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KHZhbHVlLnN1YnN0cmluZyg4LCAxMCksIDEwKTtcbiAgICBjb25zdCBtb250aCA9IHBhcnNlSW50KHZhbHVlLnN1YnN0cmluZyg1LCA3KSwgMTApO1xuICAgIGNvbnN0IHllYXIgPSBwYXJzZUludCh2YWx1ZS5zdWJzdHJpbmcoMCwgNCksIDEwKTtcblxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnREYXRlVG9JU09EYXRlKGRhdGU6IERhdGUpIHtcbiAgaWYgKGRhdGUpIHtcbiAgICBjb25zdCBnZXRNb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0RGF0ZSgpIDogZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGggPSBnZXRNb250aCA8IDEwID8gJzAnICsgZ2V0TW9udGggOiBnZXRNb250aDtcbiAgICBjb25zdCB5ZWFyID0gZm9ybWF0WWVhcihkYXRlLmdldEZ1bGxZZWFyKCkpO1xuXG4gICAgcmV0dXJuIHllYXIgKyAnLScgKyBtb250aCArICctJyArIGRheTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERhdGVUb0lTT0V4dGVuZGVkKGRhdGU6IERhdGUsIHRpbWU/OiBzdHJpbmcpIHtcbiAgaWYgKGRhdGUpIHtcbiAgICBjb25zdCBnZXRNb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0RGF0ZSgpIDogZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGggPSBnZXRNb250aCA8IDEwID8gJzAnICsgZ2V0TW9udGggOiBnZXRNb250aDtcbiAgICBjb25zdCB5ZWFyID0gZm9ybWF0WWVhcihkYXRlLmdldEZ1bGxZZWFyKCkpO1xuXG4gICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTtcblxuICAgIGlmICh0aW1lICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4geWVhciArICctJyArIG1vbnRoICsgJy0nICsgZGF5ICsgdGltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgeWVhciArXG4gICAgICAgICctJyArXG4gICAgICAgIG1vbnRoICtcbiAgICAgICAgJy0nICtcbiAgICAgICAgZGF5ICtcbiAgICAgICAgJ1QnICtcbiAgICAgICAgZGF0ZVN0cmluZy5zdWJzdHJpbmcoMTYsIDI0KSArXG4gICAgICAgIGRhdGVTdHJpbmcuc3Vic3RyaW5nKDI4LCAzMSkgK1xuICAgICAgICAnOicgK1xuICAgICAgICBkYXRlU3RyaW5nLnN1YnN0cmluZygzMSwgMzMpXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIFRyYW5zZm9ybWEgbyBhbm8gZW0gdW1hIHN0cmluZyBubyBmb3JtYXRvIHl5eXkgZSBjYXNvIG8gYW5vIHNlamEgbWVub3IgcXVlIDEwMDAgcHJlZW5jaGUgY29tIHplcm9zIGEgZXNxdWVyZGEuXG4gKlxuICogQHBhcmFtIHllYXIgQW5vXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRZZWFyKHllYXI6IG51bWJlcikge1xuICBpZiAoeWVhciA+PSAxMDAwKSB7XG4gICAgcmV0dXJuIHllYXIudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGlmICh5ZWFyID4gOTkgJiYgeWVhciA8IDEwMDApIHtcbiAgICByZXR1cm4gYDAke3llYXJ9YDtcbiAgfVxuXG4gIGlmICh5ZWFyID4gOSAmJiB5ZWFyIDwgMTAwKSB7XG4gICAgcmV0dXJuIGAwMCR7eWVhcn1gO1xuICB9XG5cbiAgaWYgKHllYXIgPj0gMCAmJiB5ZWFyIDwgMTApIHtcbiAgICByZXR1cm4gYDAwMCR7eWVhcn1gO1xuICB9XG59XG4vLyBWZXJpZmljYSBzZSBvIG5hdmVnYWRvciBlbSBxdWUgZXN0w6Egc2VuZG8gdXNhZG8gw6kgSW50ZXJuZXQgRXhwbG9yZXIgb3UgRWRnZVxuZXhwb3J0IGZ1bmN0aW9uIGlzSUVPckVkZ2UoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuXG4gIHJldHVybiAvbXNpZVxcc3x0cmlkZW50XFwvfGVkZ2VcXC8vaS50ZXN0KHVzZXJBZ2VudCk7XG59XG5cbi8vIFZlcmlmaWNhIHNlIG8gbmF2ZWdhZG9yIGVtIHF1ZSBlc3TDoSBzZW5kbyB1c2FkbyDDqSBJbnRlcm5ldCBFeHBsb3JlclxuZXhwb3J0IGZ1bmN0aW9uIGlzSUUoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuXG4gIHJldHVybiAvbXNpZVxcc3x0cmlkZW50L2kudGVzdCh1c2VyQWdlbnQpO1xufVxuXG4vLyBWZXJpZmljYSBzZSBvIG5hdmVnYWRvciBlbSBxdWUgZXN0w6Egc2VuZG8gdXNhZG8gw6kgRmlyZWZveFxuZXhwb3J0IGZ1bmN0aW9uIGlzRmlyZWZveCgpIHtcbiAgY29uc3QgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbiAgcmV0dXJuIHVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2ZpcmVmb3gnKSA+IC0xO1xufVxuXG4vLyBWZXJpZmljYSBxdWFsIG8gZGlzcG9zaXRpdm8gcXVlIGVzdMOhIHNlbmRvIHVzYWRvXG5leHBvcnQgZnVuY3Rpb24gaXNNb2JpbGUoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuXG4gIHJldHVybiB1c2VyQWdlbnQubWF0Y2goL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fFdpbmRvd3MgUGhvbmUvaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VxdWFscyh2YWx1ZSwgY29tcGFyZWRWYWx1ZSkge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpID09PSBKU09OLnN0cmluZ2lmeShjb21wYXJlZFZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzS2V5Q29kZUVudGVyKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIGV2ZW50LmtleUNvZGUgPT09IDEzIHx8IGV2ZW50LndoaWNoID09PSAxMztcbn1cblxuLyoqXG4gKiBDYXNvIG8gYW5vIG9yaWdpbmFsIGRhIGRhdGEgc2VqYSBlbnRyZSAwIGUgMTAwIGF0cmlidWkgZXNzZSB2YWxvciBhbyBhbm8sIHBvaXMgbyBgbmV3IERhdGVgIGRvIGphdmFzY3JpcHQgdHJhbnNmb3JtYSBvIGFubyBwYXJhIDE5MFguXG4gKlxuICogQHBhcmFtIGRhdGUgRGF0YVxuICogQHBhcmFtIHllYXIgQW5vIG9yaWdpbmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRZZWFyRnJvbTBUbzEwMChkYXRlOiBEYXRlLCB5ZWFyOiBudW1iZXIpIHtcbiAgaWYgKHllYXIgPj0gMCAmJiB5ZWFyIDwgMTAwKSB7XG4gICAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydE9wdGlvbnNCeVByb3BlcnR5KG9wdGlvbnM6IEFycmF5PGFueT4sIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgb3B0aW9ucy5zb3J0KChvcHRpb25BLCBvcHRpb25CKSA9PiB7XG4gICAgb3B0aW9uQSA9IG9wdGlvbkFbcHJvcGVydHldLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICBvcHRpb25CID0gb3B0aW9uQltwcm9wZXJ0eV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKG9wdGlvbkEgPCBvcHRpb25CKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChvcHRpb25BID4gb3B0aW9uQikge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9KTtcbn1cblxuLyoqXG4gKiBPcmRlbmEgbyBjYW1wb3MgYmFzZWFkbyBubyB2YWxvciBkYSBwcm9wcmllZGFkZSBgb3JkZXJgLlxuICpcbiAqIFPDsyBzZXLDo28gYWNlaXRvcyB2YWxvcmVzIGNvbSBuw7ptZXJvcyBpbnRlaXJvcyBtYWlvcmVzIGRvIHF1ZSB6ZXJvIHBhcmEgYSBvcmRlbmHDp8Ojby5cbiAqXG4gKiBDYW1wb3Mgc2VtIGBvcmRlcmAgb3UgY29tIHZhbG9yZXMgbmVnYXRpdm9zLCB6ZXJhZG9zIG91IGludsOhbGlkb3NcbiAqIHJlY2ViZXLDo28gbyB2YWxvciBkZWZhdWx0IGUgc2VndWlyw6NvIG8gcG9zaWNpb25hbWVudG8gZGVudHJvIGRvXG4gKiBhcnJheS5cbiAqXG4gKiBAcGFyYW0gZmllbGRzIGNhbXBvIHF1ZSBzZSBkZXNlamEgb3JkZW5hci5cbiAqIEBwYXJhbSBkZWZhdWx0T3JkZXJpbmcgdmFsb3IgcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIG1hbnRlciBuYSBwb3Npw6fDo28gZG8gYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0RmllbGRzKGZpZWxkcyA9IFtdLCBkZWZhdWx0T3JkZXJpbmcgPSAtMSkge1xuICBjb25zdCByZXN1bHRDbGFzc2lmaWNhdGlvbiA9IHsgZmllbGRBQ29tZXNGaXJzdDogLTEsIGZpZWxkQUNvbWVzQWZ0ZXI6IDEsIGtlZXBQb3NpdGlvbnM6IDAgfTtcblxuICBjb25zdCBpc09yZGVyVmFsaWQgPSAob3JkZXI6IG51bWJlcikgPT4gaXNUeXBlb2Yob3JkZXIsICdudW1iZXInKSAmJiBvcmRlciA+IDA7XG4gIGNvbnN0IGFwcGx5RGVmYXVsdE9yZGVyaW5nID0gKG9yZGVyOiBudW1iZXIpID0+IChpc09yZGVyVmFsaWQob3JkZXIpID8gb3JkZXIgOiBkZWZhdWx0T3JkZXJpbmcpO1xuXG4gIHJldHVybiBmaWVsZHMuc29ydCgoZmllbGRBLCBmaWVsZEIpID0+IHtcbiAgICBjb25zdCBvcmRlckEgPSBhcHBseURlZmF1bHRPcmRlcmluZyhmaWVsZEEub3JkZXIpO1xuICAgIGNvbnN0IG9yZGVyQiA9IGFwcGx5RGVmYXVsdE9yZGVyaW5nKGZpZWxkQi5vcmRlcik7XG5cbiAgICBpZiAob3JkZXJBID09PSBvcmRlckIpIHtcbiAgICAgIHJldHVybiByZXN1bHRDbGFzc2lmaWNhdGlvbi5rZWVwUG9zaXRpb25zO1xuICAgIH1cblxuICAgIGlmIChvcmRlckEgPT09IGRlZmF1bHRPcmRlcmluZykge1xuICAgICAgcmV0dXJuIHJlc3VsdENsYXNzaWZpY2F0aW9uLmZpZWxkQUNvbWVzQWZ0ZXI7XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyQiA9PT0gZGVmYXVsdE9yZGVyaW5nKSB7XG4gICAgICByZXR1cm4gcmVzdWx0Q2xhc3NpZmljYXRpb24uZmllbGRBQ29tZXNGaXJzdDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JkZXJBIC0gb3JkZXJCO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUR1cGxpY2F0ZWRPcHRpb25zKGxpc3Q6IEFycmF5PGFueT4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChsaXN0LmZpbmRJbmRleChvcCA9PiBvcC52YWx1ZSA9PT0gbGlzdFtpXS52YWx1ZSkgIT09IGkpIHtcbiAgICAgIGxpc3Quc3BsaWNlKGksIDEpO1xuICAgICAgaS0tO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbE9wdGlvbnMobGlzdDogQXJyYXk8YW55Pikge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobGlzdFtpXS52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGxpc3RbaV0udmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGxpc3Quc3BsaWNlKGksIDEpO1xuICAgICAgaS0tO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gIHJldHVybiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycpIHx8IHZhbHVlID09PSBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZXJuYWxMaW5rKHVybCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdXJsID8gdXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSA6IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlbkV4dGVybmFsTGluayh1cmwpOiB2b2lkIHtcbiAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZWRMaW5rKGxpbms6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBmb3JtYXR0ZWRMaW5rID0gJyc7XG4gIC8vIFJldGlyYSB0b2RvcyBvcyBwb250b3Mgbm8gY29tZcOnbyBkYSBVUkwuXG4gIGlmIChsaW5rKSB7XG4gICAgZm9ybWF0dGVkTGluayA9IGxpbmsucmVwbGFjZSgvXihcXC4pKy9nLCAnJyk7XG4gIH1cbiAgLy8gVmVyaWZpY2Egc2UgZm9pIHV0aWxpemFkbyB1bWEgcm90YSBxdWUgbsOjbyBjb21lY2UgY29tIGJhcnJhLlxuICBpZiAoIWZvcm1hdHRlZExpbmsuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgZm9ybWF0dGVkTGluayA9ICcvJy5jb25jYXQoZm9ybWF0dGVkTGluayk7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdHRlZExpbms7XG59XG5cbi8qKlxuICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIG9yZGVuYXIgZG9pcyB2YWxvcmVzLlxuICpcbiAqIEBwYXJhbSBsZWZ0U2lkZSBQcmltZWlybyB2YWxvciBhIHNlciBjb21wYXJhZG8uXG4gKiBAcGFyYW0gcmlnaHRTaWRlIFNlZ3VuZG8gdmFsb3IgYSBzZXIgY29tcGFyYWRvLlxuICogQHBhcmFtIGFzY2VuZGluZyBEZXRlcm1pbmEgc2Ugc2Vyw6EgZW0gb3JkZW0gYXNjZW5kZW50ZSBvdSBkZXNjZW5kZW50ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRWYWx1ZXMobGVmdFNpZGU6IHN0cmluZyB8IERhdGUsIHJpZ2h0U2lkZTogc3RyaW5nIHwgRGF0ZSwgYXNjZW5kaW5nOiBib29sZWFuID0gdHJ1ZSk6IG51bWJlciB7XG4gIGNvbnN0IGxlZnQgPSBpc1R5cGVvZihsZWZ0U2lkZSwgJ3N0cmluZycpID8gKGxlZnRTaWRlIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKSA6IGxlZnRTaWRlO1xuICBjb25zdCByaWdodCA9IGlzVHlwZW9mKHJpZ2h0U2lkZSwgJ3N0cmluZycpID8gKHJpZ2h0U2lkZSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkgOiByaWdodFNpZGU7XG5cbiAgY29uc3QgbGVmdElzSW52YWxpZCA9IGxlZnQgPT09IG51bGwgfHwgbGVmdCA9PT0gdW5kZWZpbmVkIHx8IE51bWJlci5pc05hTihsZWZ0KTtcbiAgY29uc3QgcmlnaHRJc0ludmFsaWQgPSByaWdodCA9PT0gbnVsbCB8fCByaWdodCA9PT0gdW5kZWZpbmVkIHx8IE51bWJlci5pc05hTihyaWdodCk7XG5cbiAgaWYgKGFzY2VuZGluZykge1xuICAgIGlmIChsZWZ0IDwgcmlnaHQgfHwgbGVmdElzSW52YWxpZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSBpZiAobGVmdCA+IHJpZ2h0IHx8IHJpZ2h0SXNJbnZhbGlkKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXNjZW5kaW5nID09PSBmYWxzZSkge1xuICAgIGlmIChsZWZ0IDwgcmlnaHQgfHwgbGVmdElzSW52YWxpZCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmIChsZWZ0ID4gcmlnaHQgfHwgcmlnaHRJc0ludmFsaWQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURhdGVSYW5nZShkYXRlOiBEYXRlLCBkYXRlU3RhcnQ6IERhdGUsIGRhdGVFbmQ6IERhdGUpIHtcbiAgaWYgKGRhdGVTdGFydCAmJiBkYXRlRW5kKSB7XG4gICAgcmV0dXJuIGRhdGUgPj0gZGF0ZVN0YXJ0ICYmIGRhdGUgPD0gZGF0ZUVuZDtcbiAgfSBlbHNlIGlmIChkYXRlU3RhcnQgJiYgIWRhdGVFbmQpIHtcbiAgICByZXR1cm4gZGF0ZSA+PSBkYXRlU3RhcnQ7XG4gIH0gZWxzZSBpZiAoIWRhdGVTdGFydCAmJiBkYXRlRW5kKSB7XG4gICAgcmV0dXJuIGRhdGUgPD0gZGF0ZUVuZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXVpZCgpIHtcbiAgZnVuY3Rpb24gaGV4NCgpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcigoMSArIE1hdGgucmFuZG9tKCkpICogMHgxMDAwMClcbiAgICAgIC50b1N0cmluZygxNilcbiAgICAgIC5zdWJzdHJpbmcoMSk7XG4gIH1cblxuICByZXR1cm4gaGV4NCgpICsgaGV4NCgpICsgJy0nICsgaGV4NCgpICsgJy0nICsgaGV4NCgpICsgJy0nICsgaGV4NCgpICsgJy0nICsgaGV4NCgpICsgaGV4NCgpICsgaGV4NCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHt0ZXh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7dGV4dC5zbGljZSgxKX1gO1xufVxuXG4vKipcbiAqIE1hcGVpYSB1bSBub3ZvIGFycmF5IGFwZW5hcyBjb20gYXMgcHJvcHJpZWRhZGVzIGRlZmluaWRhcyBwZWxvIGRlc2Vudm9sdmVkb3IgYmFzZWFkbyBlbSB1bSBhcnJheSBkZVxuICogb3JpZ2VtLlxuICpcbiAqIEV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiBjb25zdCBwZW9wbGUgPSBbXG4gKiAgeyBpZDogMSwgbmFtZTogJ0Z1bGFubycsIGJpcnRoZGF0ZTogJzE5ODAtMTEtMDEnLCBnZW5yZTogJ01hbGUnLCBjaXR5OiAnU8OjbyBQYXVsbycsIGRlcGVuZGVudHM6IDIgfSxcbiAqICB7IGlkOiAyLCBuYW1lOiAnQmVsdHJhbm8nLCBiaXJ0aGRhdGU6ICcxOTk3LTAxLTIxJywgZ2VucmU6ICdGZW1hbGUnLCBjaXR5OiAnSm9pbnZpbGxlJywgZGVwZW5kZW50czogMCB9LFxuICogIHsgaWQ6IDMsIG5hbWU6ICdTaWNsYW5vJywgYmlydGhkYXRlOiAnMTk5NS0wNy0xNScsIGdlbnJlOiAnTWFsZScsIGNpdHk6ICdKb2ludmlsbGUnLCBkZXBlbmRlbnRzOiAwIH1cbiAqIF07XG4gKlxuICogY29uc3QgcHJvcGVydGllcyA9IFsnaWQnLCAnbmFtZSddO1xuICpcbiAqIGNvbnN0IGlkQW5kTmFtZSA9IG1hcEFycmF5QnlQcm9wZXJ0aWVzKHBlb3BsZSwgcHJvcGVydGllcyk7XG4gKlxuICogY29uc29sZS5sb2coaWRBbmROYW1lKTsgLy8gW3sgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nIH0sIHsgaWQ6IDIsIG5hbWU6ICdCZWx0cmFubycgfSwgeyBpZDogMywgbmFtZTogJ1NpY2xhbm8nIH1dXG4gKiBgYGBcbiAqXG4gKiBVbSBvdXRybyB1c28gcGFyYSBvIG3DqXRvZG8gw6kgXCJwYXJlYXJcIiB0b2RvcyBvcyBvYmpldG9zIGRvIGFycmF5IGNvbSBhcyBtZXNtYXMgcHJvcHJpZWRhZGVzLlxuICpcbiAqIGBgYFxuICogY29uc3QgY3VzdG9tZXJzID0gW1xuICogIHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nLCBjaXR5OiAnU8OjbyBQYXVsbycsIGRlcGVuZGVudHM6IDIgfSwgLy8gc2VtIGdlbnJlXG4gKiAgeyBpZDogMiwgbmFtZTogJ0JlbHRyYW5vJywgZ2VucmU6ICdGZW1hbGUnLCBjaXR5OiAnSm9pbnZpbGxlJyB9LCAvLyBzZW0gZGVwZW5kZW50c1xuICogIHsgaWQ6IDMsIG5hbWU6ICdTaWNsYW5vJywgZ2VucmU6ICdNYWxlJywgY2l0eTogJ0pvaW52aWxsZScsIGRlcGVuZGVudHM6IDAgfVxuICogXTtcbiAqIGNvbnN0IHByb3BlcnRpZXMgPSBbJ2lkJywgJ25hbWUnLCAnY2l0eScsICdnZW5yZScsICdkZXBlbmRlbnRzJ107XG4gKlxuICogY29uc3QgcGF0dGVybiA9IG1hcEFycmF5QnlQcm9wZXJ0aWVzKGN1c3RvbWVycywgcHJvcGVydGllcyk7XG4gKiBjb25zb2xlLmxvZyhwYXR0ZXJuKTtcbiAqXG4gKiAvLyBbXG4gKiAvLyAgIHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nLCBjaXR5OiAnU8OjbyBQYXVsbycsIGdlbnJlOiB1bmRlZmluZWQsIGRlcGVuZGVudHM6IDIgfSxcbiAqIC8vICAgeyBpZDogMiwgbmFtZTogJ0JlbHRyYW5vJywgY2l0eTogJ0pvaW52aWxsZScsIGdlbnJlOiAnRmVtYWxlJywgZGVwZW5kZW50czogdW5kZWZpbmVkIH0sXG4gKiAvLyAgIHsgaWQ6IDMsIG5hbWU6ICdTaWNsYW5vJywgY2l0eTogJ0pvaW52aWxsZScsIGdlbnJlOiAnTWFsZScsIGRlcGVuZGVudHM6IDAgfVxuICogLy8gXVxuICogYGBgXG4gKlxuICogQHBhcmFtIGl0ZW1zIHtBcnJheTxhbnk+fSBBcnJheSBkZSBpdGVtcyBvcmlnaW5hbC5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIHtBcnJheTxzdHJpbmc+fSBBcnJheSBkZSBzdHJpbmcgY29tIGEgbGlzdGEgZGUgcHJvcHJpZWRhZGVzIHF1ZSBkZXZlbSBzZXIgcmV0b3JuYWRhcy5cbiAqXG4gKiBAcmV0dXJucyBBcnJheTxhbnk+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBBcnJheUJ5UHJvcGVydGllcyhpdGVtczogQXJyYXk8YW55PiA9IFtdLCBwcm9wZXJ0aWVzOiBBcnJheTxzdHJpbmc+ID0gW10pOiBBcnJheTxhbnk+IHtcbiAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IG1hcE9iamVjdEJ5UHJvcGVydGllcyhpdGVtLCBwcm9wZXJ0aWVzKSk7XG59XG5cbi8qKlxuICogTWFwZWlhIHVtIG5vdm8gb2JqZXRvIGFwZW5hcyBjb20gYXMgcHJvcHJpZWRhZGVzIGRlZmluaWRhcyBwZWxvIGRlc2Vudm9sdmVkb3IuXG4gKlxuICogRXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIGNvbnN0IHBlcnNvbiA9IHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nLCBiaXJ0aGRhdGU6ICcxOTgwLTExLTAxJywgZ2VucmU6ICdNYWxlJywgY2l0eTogJ1PDo28gUGF1bG8nLCBkZXBlbmRlbnRzOiAyIH07XG4gKlxuICogY29uc3QgcHJvcGVydGllcyA9IFsnaWQnLCAnbmFtZSddO1xuICpcbiAqIGNvbnN0IGlkQW5kTmFtZSA9IG1hcE9iamVjdEJ5UHJvcGVydGllcyhwZXJzb24sIHByb3BlcnRpZXMpO1xuICpcbiAqIGNvbnNvbGUubG9nKGlkQW5kTmFtZSk7IC8vIHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBvYmplY3Qge0FycmF5PGFueT59IEFycmF5IGRlIGl0ZW1zIG9yaWdpbmFsLlxuICogQHBhcmFtIHByb3BlcnRpZXMge0FycmF5PHN0cmluZz59IEFycmF5IGRlIHN0cmluZyBjb20gYSBsaXN0YSBkZSBwcm9wcmllZGFkZXMgcXVlIGRldmVtIHNlciByZXRvcm5hZGFzLlxuICpcbiAqIEByZXR1cm5zIEFycmF5PGFueT5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcE9iamVjdEJ5UHJvcGVydGllcyhvYmplY3Q6IGFueSA9IHt9LCBwcm9wZXJ0aWVzOiBBcnJheTxzdHJpbmc+ID0gW10pIHtcbiAgY29uc3QgZ2V0U2VsZWN0ZWRQcm9wZXJ0aWVzID0gKHNlbGVjdGVkUHJvcGVydGllcywgcHJvcGVydHkpID0+ICh7XG4gICAgLi4uc2VsZWN0ZWRQcm9wZXJ0aWVzLFxuICAgIFtwcm9wZXJ0eV06IG9iamVjdFtwcm9wZXJ0eV1cbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXMucmVkdWNlKGdldFNlbGVjdGVkUHJvcGVydGllcywge30pO1xufVxuXG4vKipcbiAqIFJldG9ybmEgb3MgdmFsb3JlcyBkZSB1bSBvYmpldG8gZGVudHJvIGRlIHVtIGFycmF5LlxuICpcbiAqID4gU2ltdWxhIG8gT2JqZWN0LnZhbHVlcyhvYmopLCBvIG1lc21vIGRldmUgc2VyIHJlbW92aWRvIGFzc2ltIHF1ZSBhIHZlcnPDo28gdHlwZXNjcml0IGZvciBhdHVhbGl6YWRhLlxuICpcbiAqIEBwYXJhbSBvYmplY3QgT2JqZXRvIGRlIG9uZGUgc2Vyw6EgcGVnbyBvcyB2YWxvcmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVzRnJvbU9iamVjdChvYmplY3Q6IGFueSA9IHt9KTogQXJyYXk8YW55PiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLm1hcChwcm9wZXJ0eSA9PiBvYmplY3RbcHJvcGVydHldKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0ZSB1bSBhcnF1aXZvIGVtIGJhc2U2NC5cbiAqXG4gKiBAcGFyYW0gZmlsZSBhcnF1aXZvIHF1ZSBzZXLDoSBjb252ZXJ0aWRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEltYWdlVG9CYXNlNjQoZmlsZTogRmlsZSk6IFByb21pc2U8YW55PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmVhZGVyLm9uZXJyb3IgPSBlcnJvciA9PiByZWplY3QoZXJyb3IpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0ZSB1bSBuw7ptZXJvIGVtIGRlY2ltYWwgYmFzZWFkbyBuYSBxdWFudGlkYWRlIGRlIGNhc2FzIGRlY2ltYWlzLlxuICpcbiAqIENhc28gbyB2YWxvciBzZWphIGludsOhbGlkbywgc2Vyw6EgcmV0b3JuYWRvIG8gdmFsb3IgYHVuZGVmaW5lZGAuXG4gKiBWYWxvcmVzIGludsOhbGlkb3Mgc8OjbzogYGZhbHNlYCwgYE5hTmAsIGBzdHJpbmdzYCBxdWUgbsOjbyBudW3DqXJpY2FzLCBgdW5kZWZpbmVkYCBlIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gbnVtYmVyIHZhbG9yIHF1ZSBzZXLDoSBjb252ZXJ0aWRvXG4gKiBAcGFyYW0gZGVjaW1hbHNQbGFjZSBxdWFudGlkYWRlIGRlIGNhc2FzIGRlY2ltYWlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0TnVtYmVyVG9EZWNpbWFsKG51bWJlcjogYW55LCBkZWNpbWFsc1BsYWNlOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBpc1ZhbGlkVmFsdWUgPSAobnVtYmVyIHx8IG51bWJlciA9PT0gMCkgJiYgIWlzTmFOKG51bWJlcik7XG5cbiAgY29uc3QgZmxvYXRWYWx1ZSA9IGlzVmFsaWRWYWx1ZSA/IHBhcnNlRmxvYXQobnVtYmVyKSA6IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KGZsb2F0VmFsdWUudG9GaXhlZChkZWNpbWFsc1BsYWNlKSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmbG9hdFZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogUmV0b3JuYSB1bWEgY29waWEgZG8gb2JqZXRvIHN1am8sIHNlbSBhcyBwcm9wcmllZGFkZXMgbnVsYXMgb3UgaW5kZWZpbmlkYXMuXG4gKiBSZXRvcm5hIG8gb2JqZXRvIHNlbSBhcyBwcm9wcmllZGFkZXMgcXVlIGNvbnTDqW0gdmFsb3JlcyBudWxvcyBvdSBpbmRlZmluaWRvcy5cbiAqXG4gKiBAcGFyYW0gZGlydHlPYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyT2JqZWN0KGRpcnR5T2JqZWN0OiBvYmplY3QpOiBhbnkge1xuICBjb25zdCBjbGVhbk9iamVjdCA9IHt9O1xuXG4gIE9iamVjdC5rZXlzKGRpcnR5T2JqZWN0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgaWYgKGRpcnR5T2JqZWN0W2tleV0gIT09IG51bGwgJiYgZGlydHlPYmplY3Rba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhbk9iamVjdFtrZXldID0gZGlydHlPYmplY3Rba2V5XTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjbGVhbk9iamVjdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlT2JqZWN0VHlwZSh2YWx1ZTogYW55KSB7XG4gIHJldHVybiBpc1R5cGVvZih2YWx1ZSwgJ29iamVjdCcpICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldG9ybmEgb3MgZWxlbWVudG9zIERPTSBjYXBhemVzIGRlIHJlY2ViZXIgZm9jby5cbiAqXG4gKiA+IEF0dWFsbWVudGUgc8OjbyBjb25zaWRlcmFkb3MgXCJmb2PDoXZlaXNcIiBvcyBlbGVtZW50b3MgRE9NIGBpbnB1dGAsIGBzZWxlY3RgLFxuICogYHRleHRhcmVhYCwgYGJ1dHRvbmAgZSBgYWAuXG4gKlxuICogQHBhcmFtIHBhcmVudEVsZW1lbnQgRWxlbWVudG8gRE9NIHBhaS5cbiAqIEByZXR1cm5zIExpc3RhIGRvcyBlbGVtZW50b3MgRE9NIGZpbGhvcyBcImZvY8OhdmVpc1wiLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlRWxlbWVudHMocGFyZW50RWxlbWVudDogRWxlbWVudCk6IE5vZGVMaXN0T2Y8RWxlbWVudD4ge1xuICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9ICdidXR0b246bm90KFtkaXNhYmxlZF0pLCBbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSc7XG4gIHJldHVybiBwYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZm9jdXNhYmxlRWxlbWVudHMpO1xufVxuIl19
|