ngx-sp-infra 3.6.4-test → 3.7.2-next
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/esm2022/lib/utils/utils.mjs +2 -2
- package/esm2022/lib/widgets/lib-transfer-list/inner-list/inner-list.component.mjs +2 -2
- package/esm2022/lib/widgets/table/table.component.mjs +17 -19
- package/fesm2022/ngx-sp-infra.mjs +19 -21
- package/fesm2022/ngx-sp-infra.mjs.map +1 -1
- package/lib/widgets/table/table.component.d.ts +7 -7
- package/package.json +1 -1
|
@@ -339,7 +339,7 @@ export class Utils {
|
|
|
339
339
|
static alphanumericSort(a, b, direction = 'asc') {
|
|
340
340
|
const regex = /(\d+|\D+)/g;
|
|
341
341
|
const stringA = this.propertyIsNullUndefinedOrEmpty(a) ? "" : a;
|
|
342
|
-
const stringB = this.propertyIsNullUndefinedOrEmpty(b) ? "" :
|
|
342
|
+
const stringB = this.propertyIsNullUndefinedOrEmpty(b) ? "" : b;
|
|
343
343
|
const aParts = stringA.toString().match(regex) || [];
|
|
344
344
|
const bParts = stringB.toString().match(regex) || [];
|
|
345
345
|
const length = Math.max(aParts.length, bParts.length);
|
|
@@ -393,4 +393,4 @@ export class Utils {
|
|
|
393
393
|
return false;
|
|
394
394
|
}
|
|
395
395
|
}
|
|
396
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi91dGlscy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sS0FBSztJQUVoQixrREFBa0Q7SUFDM0MsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQVU7UUFFMUMsSUFBSSxZQUFZLEdBQVcsRUFBRSxDQUFDO1FBRTlCLElBQUksS0FBSyxDQUFDLEtBQUssWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUN0QyxpQ0FBaUM7WUFDakMsWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBRU4sbUNBQW1DO1lBQ25DLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUVqQixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7b0JBRXhCLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUVoQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7NEJBQzdCLFlBQVksR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7d0JBQy9DLENBQUM7NkJBQ0ksQ0FBQzs0QkFDSixZQUFZLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUMxQyxDQUFDO29CQUVILENBQUM7eUJBQU0sQ0FBQzt3QkFDTixZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztvQkFDL0IsQ0FBQztnQkFFSCxDQUFDO3FCQUNJLENBQUM7b0JBRUosSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBRWhCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQzs0QkFDN0IsWUFBWSxHQUFHLEdBQUcsS0FBSyxDQUFD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LEtBQUssRUFBRSxDQUFDO1lBQ2Isc0RBQXNEO1lBQ3RELE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sSUFBSSxHQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxRyxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFXLEVBQUUsS0FBVztRQUN0RCxNQUFNLFFBQVEsR0FBVyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFXLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckQsSUFBSSxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBYTtRQUM3QyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFL0IsSUFBSSxLQUFLLEdBQVcsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxJQUFJLEdBQVcsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkQsMkVBQTJFO1FBQzNFLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVc7UUFDdkIsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxNQUFNLENBQUMsdUJBQXVCLENBQUMsS0FBVztRQUUvQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUMzQixPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVNLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxLQUFXO1FBQ25ELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNwRyxPQUFPLHFCQUFxQixDQUFDO1FBQ2pDLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3Qiw2Q0FBNkM7UUFDN0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEMsTUFBTSxhQUFhLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBRWpPLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCw0RUFBNEU7SUFDckUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE9BQWUsRUFBRSxJQUFZO1FBQzVELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTlDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUVuQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QyxNQUFNO1FBQ04sK0dBQStHO1FBQy9HLG9EQUFvRDtRQUNwRCxtQkFBbUI7UUFDbkIsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBRXJCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7Ozs7TUFLRTtJQUNLLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBVSxFQUFFLFFBQWdCO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxELE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFM0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWYsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBVztRQUN4Qyw2RUFBNkU7UUFDN0UsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwRCxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFXO1FBQ3hDLGdFQUFnRTtRQUNoRSw2REFBNkQ7UUFDN0Qsd0JBQXdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFDM0QsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDWixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFRLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELDhEQUE4RDtJQUN2RCxNQUFNLENBQUMsV0FBVztRQUN2QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JHLE9BQU8sS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBT0Qsb0VBQW9FO0lBQzdELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFrQixFQUFFLENBQWtCLEVBQUUsWUFBNEIsS0FBSztRQUN0RyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUM7UUFFM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXJELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUU5QixNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN4QyxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUV4QyxJQUFJLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakQsSUFBSSxVQUFVLEtBQUssQ0FBQztvQkFBRSxPQUFPLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7WUFDOUUsQ0FBQztpQkFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNyQixPQUFPLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsQ0FBQztpQkFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNyQixPQUFPLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlDLElBQUksVUFBVSxLQUFLLENBQUM7b0JBQUUsT0FBTyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQzlFLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsdUJBQXVCO0lBS3ZCLG1GQUFtRjtJQUM1RSxNQUFNLENBQUMsOEJBQThCLENBQUMsS0FBVTtRQUNyRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3ZFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHNFQUFzRTtJQUMvRCxNQUFNLENBQUMscUJBQXFCLENBQUMsS0FBVTtRQUM1QyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNoRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxzR0FBc0c7SUFDL0YsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLEtBQVU7UUFDMUQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCx5RkFBeUY7SUFDbEYsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEtBQVU7UUFDakQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVXRpbHMge1xuXG4gIC8vIE9idMOpbSBhIG1lbnNhZ2VtIGRlIGVycm8gZGUgdW1hIHJlcXVpc2nDp8OjbyBodHRwXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SHR0cEVycm9yTWVzc2FnZShlcnJvcjogYW55KTogc3RyaW5nIHtcblxuICAgIGxldCBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuXG4gICAgaWYgKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xuICAgICAgLy8gRXJybyBvY29ycmV1IG5vIGxhZG8gZG8gY2xpZW50XG4gICAgICBlcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvci5tZXNzYWdlO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIC8vIEVycm8gb2NvcnJldSBubyBsYWRvIGRvIHNlcnZpZG9yXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzKSB7XG5cbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSAyMDApIHtcblxuICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xuXG4gICAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IuRXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2Vycm9yLmVycm9yLkVycm9yTWVzc2FnZX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2Vycm9yLmVycm9yLk1lc3NhZ2V9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuXG4gICAgICAgICAgaWYgKGVycm9yLmVycm9yKSB7XG5cbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5FcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZXJyb3IuZXJyb3IuRXJyb3JNZXNzYWdlfTxicj48YnI+JHtlcnJvci5zdGF0dXN9IC0gJHtlcnJvci5zdGF0dXNUZXh0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZXJyb3IuZXJyb3IuTWVzc2FnZX08YnI+PGJyPiR7ZXJyb3Iuc3RhdHVzfSAtICR7ZXJyb3Iuc3RhdHVzVGV4dH1gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3JNZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiBlcnJvck1lc3NhZ2U7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnREYXRlVGltZVRvRGF0ZVN0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlU3RyaW5nOiBzdHJpbmdbXSA9IGRhdGUudG9TdHJpbmcoKS5zcGxpdCgnVCcpWzBdLnNwbGl0KCctJyk7XG5cbiAgICByZXR1cm4gYCR7ZGF0ZVN0cmluZ1swXX0tJHtkYXRlU3RyaW5nWzFdfS0ke2RhdGVTdHJpbmdbMl19YDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFN0cmluZ1RvRGF0ZSh0ZXh0OiBzdHJpbmcpOiBEYXRlIHtcbiAgICBjb25zdCBkYXRlU3RyaW5nOiBzdHJpbmdbXSA9IHRleHQuc3BsaXQoJy0nKTtcblxuICAgIHJldHVybiBuZXcgRGF0ZSgrZGF0ZVN0cmluZ1swXSwgKCtkYXRlU3RyaW5nWzFdKSAtIDEsICtkYXRlU3RyaW5nWzJdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzZSB1bSBkZXRlcm1pbmFkbyBhbm8gw6kgYmlzc2V4dG8uXG4gICAqIEBwYXJhbSB5ZWFyIEFubyBhIHNlciB2ZXJpZmljYWRvLlxuICAgKiBAcmV0dXJucyBSZXRvcm5hIHRydWUgc2UgbyBhbm8gZm9yIGJpc3NleHRvIGUgZmFsc2Ugc2UgZWxlIG7Do28gZm9yLCBvdSBzZSBvIGFubyBpbmZvcm1hZG8gZm9yIGludsOhbGlkby5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNMZWFwWWVhcih5ZWFyOiBudW1iZXIgfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBZRUFSX05VTUJFUjogbnVtYmVyID0gdHlwZW9mIHllYXIgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQoeWVhcikgOiB5ZWFyO1xuXG4gICAgaWYgKCFpc05hTihZRUFSX05VTUJFUikpIHtcbiAgICAgIGlmICgoWUVBUl9OVU1CRVIgJSA0ID09PSAwICYmIFlFQVJfTlVNQkVSICUgMTAwICE9PSAwKSB8fCBZRUFSX05VTUJFUiAlIDQwMCA9PT0gMCkgcmV0dXJuIHRydWU7XG4gICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2UgdW1hIGRldGVybWluYWRhIGRhdGEgw6kgaW5kZXRlcm1pbmFkYS5cbiAgICogQHBhcmFtIGRhdGVUaW1lIERhdGEgYSBzZXIgdmVyaWZpY2FkYS5cbiAgICogQHJldHVybnMgUmV0b3JuYSB0cnVlIHNlIGZvciBpbmRldGVybWluYWRhIGUgZmFsc2Ugc2UgbsOjbyBmb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZlcmlmeURhdGVJc0luZGV0ZXJtaW5hdGUoZGF0ZVRpbWU6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGF0ZVRpbWUudG9TdHJpbmcoKS5zcGxpdCgnVCcpWzBdID09PSAnMjA5OS0xMi0zMSc7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2UgdW1hIGRldGVybWluYWRhIGRhdGEgw6kgbnVsYSAoaWd1YWwgYSAnMTkwMC0wMS0wMVQwMDowMDowMCcpLlxuICAgKiBAcGFyYW0gZGF0ZVRpbWUgRGF0YSBhIHNlciB2ZXJpZmljYWRhLlxuICAgKiBAcmV0dXJucyBSZXRvcm5hIHRydWUgc2UgZm9yIG51bGEgZSBmYWxzZSBzZSBuw6NvIGZvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmVyaWZ5RGF0ZUlzTnVsbChkYXRlVGltZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkYXRlVGltZS50b1N0cmluZygpLnNwbGl0KCdUJylbMF0gPT09ICcxOTAwLTAxLTAxJztcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW50YSByZWFsaXphciB1bSBwYXJzZSBkZSB1bWEgZGF0YSBjb20gb3Mgc2VndWludGVzIHZhbG9yZXM6IGRkL01NL3l5eXkgSEg6bW1cbiAgICogXG4gICAqIEBwYXJhbSB2YWx1ZSBTdHJpbmcgcXVlIGNvbnTDqW0gYSBkYXRhIGZvcm1hdGFkYSBlbSBwdC1iclxuICAgKiBAcGFyYW0gZGF0ZVNlcGFyYXRvciBTZXBhcmFkb3IgZGEgZGF0YS5cbiAgICogQHJldHVybnMgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHBhcnNlRGF0ZVRpbWUodmFsdWU6IHN0cmluZywgZGF0ZVNlcGFyYXRvcjogc3RyaW5nID0gXCIvXCIpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgdXNEYXRlID0gXCJcIjtcblxuICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xuXG4gICAgY29uc3QgZGF0ZUFuZFRpbWU6IHN0cmluZ1tdID0gdmFsdWUuc3BsaXQoXCIgXCIpO1xuXG4gICAgLy8gUG9zc3VpIHBlbG8gbWVub3MgNSBjYXJhY3RlcmVzOiAxLzEvMVxuICAgIGlmICh2YWx1ZS5sZW5ndGggPj0gNSkge1xuICAgICAgY29uc3QgZGF0ZVNlcGFyYXRlZDogc3RyaW5nW10gPSBkYXRlQW5kVGltZVswXS5zcGxpdChkYXRlU2VwYXJhdG9yKTtcblxuICAgICAgaWYgKGRhdGVTZXBhcmF0ZWQubGVuZ3RoICE9PSAzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGVTZXBhcmF0ZWRbMl0ubGVuZ3RoID4gMikge1xuICAgICAgICBkYXRlU2VwYXJhdGVkWzJdID0gYCR7ZGF0ZVNlcGFyYXRlZFsyXS5jaGFyQXQoMCl9JHtkYXRlU2VwYXJhdGVkWzJdLmNoYXJBdCgxKX1gLnRyaW0oKTtcbiAgICAgIH1cblxuICAgICAgdXNEYXRlID0gYCR7ZGF0ZVNlcGFyYXRlZFsxXX0vJHtkYXRlU2VwYXJhdGVkWzBdfS8ke2RhdGVTZXBhcmF0ZWRbMl19YFxuICAgIH1cblxuICAgIGlmIChkYXRlQW5kVGltZS5sZW5ndGggPT09IDIpIHtcblxuICAgICAgdXNEYXRlICs9IGAgJHtkYXRlQW5kVGltZVsxXX1gO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGVjdGVkRGF0ZTogbnVtYmVyID0gRGF0ZS5wYXJzZSh1c0RhdGUpO1xuXG4gICAgaWYgKGV4cGVjdGVkRGF0ZSAhPT0gbnVsbCB8fCBleHBlY3RlZERhdGUgPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlKGV4cGVjdGVkRGF0ZSk7XG4gIH1cblxuICAvLyBPYnTDqW0gYSBEYXRhIGxvY2FsXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGF0ZUxvY2FsVGltZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIChuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKSk7XG4gIH1cblxuICAvLyBPYnTDqW0gYSBEYXRhIGxvY2FsIG5vIFBhZHLDo28gSXNvXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGF0ZUxvY2FsVGltZUlTTyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuZ2V0RGF0ZUxvY2FsVGltZShkYXRlKS50b0lTT1N0cmluZygpLnJlcGxhY2UoJy4wMDBaJywgJycpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGF0ZVBpY2tlckRhdGUoc3RyOiBzdHJpbmcpOiBEYXRlIHtcbiAgICBjb25zdCBbZGF0ZUNvbXBvbmVudHMsIHRpbWVDb21wb25lbnRzXSA9IHN0ci5zcGxpdCgnVCcpXG4gICAgY29uc3QgW2FubywgbWVzLCBkaWFdID0gZGF0ZUNvbXBvbmVudHMuc3BsaXQoJy0nKTtcbiAgICBjb25zdCBbaG9yYSwgbWludXRvLCBzZWd1bmRvXSA9IHRpbWVDb21wb25lbnRzLnNwbGl0KCc6Jyk7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKE51bWJlcihhbm8pLCBOdW1iZXIobWVzKSwgTnVtYmVyKGRpYSkpXG5cbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBBZGljaW9uYURpYXMoZGF0YTogRGF0ZSwgZGF5czogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgZmluZCA9IG5ldyBEYXRlKE51bWJlcihkYXRhKSlcblxuICAgIGZpbmQuc2V0RGF0ZShkYXRhLmdldERhdGUoKSArIGRheXMpXG5cbiAgICByZXR1cm4gZmluZFxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBEaWZlcmVuY2FEaWFzKGRhdGFJbmljaWFsOiBEYXRlLCBkYXRhRmluYWw6IERhdGUpOiBudW1iZXIge1xuICAgIGNvbnN0IFRpbWUgPSBkYXRhRmluYWwuZ2V0VGltZSgpIC0gZGF0YUluaWNpYWwuZ2V0VGltZSgpO1xuXG4gICAgcmV0dXJuIFRpbWUgLyAoMTAwMCAqIDM2MDAgKiAyNCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERpZmVyZW5jYU1lc2VzKGRhdGFJbmljaWFsOiBEYXRlLCBkYXRhRmluYWw6IERhdGUpOiBudW1iZXIge1xuICAgIGxldCBtZXNlcyA9IChkYXRhRmluYWwuZ2V0RnVsbFllYXIoKSAtIGRhdGFJbmljaWFsLmdldEZ1bGxZZWFyKCkpICogMTI7XG4gICAgbWVzZXMgLT0gZGF0YUluaWNpYWwuZ2V0TW9udGgoKTtcbiAgICBtZXNlcyArPSBkYXRhRmluYWwuZ2V0TW9udGgoKTtcblxuICAgIHJldHVybiBtZXNlcyA8PSAwID8gMCA6IG1lc2VzO1xuICB9XG5cblxuICAvL09idMOpbSBhIERhdGEgVVRDIGNvbSBob3JhIHplcmFkYVxuICBwdWJsaWMgc3RhdGljIGdldERhdGVVVEMoZGF0ZTogRGF0ZSk6IERhdGUge1xuICAgIC8vY29kaWdvIG9yaWdpbmFsXG4gICAgLy9yZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgKyAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDApKTtcbiAgICBsZXQgZGF0YVNhaWRhOiBEYXRlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGRhdGFTYWlkYSA9IG5ldyBEYXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSwgMCwgMCwgMCk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgLy9RdWFuZG8gZGF0ZSBjaGVnYSBuZXN0ZSBmb3JtYXRvOiAyMDIyLTA2LTIwVDAwOjAwOjAwXG4gICAgICAvL3RlbnRvIHBlZ2FyIGFuby9tZXMvZGlhIGRpcmV0byBcbiAgICAgIC8vRGF0ZShEdEluaUZlci5nZXRVVENGdWxsWWVhcigpLCBEdEluaUZlci5nZXRVVENNb250aCgpLCBEdEluaUZlci5nZXRVVENEYXRlKCksIDAgLCAwICwgMCk7XG4gICAgICAvL2UgbsOjbyBmdW5jaW9uYVxuICAgICAgY29uc3QgZGlhOiBzdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDgsIDEwKTtcbiAgICAgIGNvbnN0IG1lczogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZyg1LCA3KTtcbiAgICAgIGNvbnN0IGFubzogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZygwLCA0KTtcbiAgICAgIGRhdGFTYWlkYSA9IG5ldyBEYXRlKE51bWJlcihhbm8pLCBOdW1iZXIobWVzKSAtIDEsIE51bWJlcihkaWEpLCAwLCAwLCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YVNhaWRhO1xuICB9XG5cbiAgLy9PYnTDqW0gYSBEYXRhIFVUQyBjb20gaG9yYSB6ZXJhZGFcbiAgcHVibGljIHN0YXRpYyBnZXREYXRlZGRNTXl5eShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICAvL2NvZGlnbyBvcmlnaW5hbFxuICAgIC8vcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKSk7XG4gICAgbGV0IGRhdGFTYWlkYTogRGF0ZTtcblxuICAgIHRyeSB7XG4gICAgICBkYXRhU2FpZGEgPSBuZXcgRGF0ZShkYXRlLmdldFVUQ0Z1bGxZZWFyKCksIGRhdGUuZ2V0VVRDTW9udGgoKSwgZGF0ZS5nZXRVVENEYXRlKCksIDAsIDAsIDApO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vUXVhbmRvIGRhdGUgY2hlZ2EgbmVzdGUgZm9ybWF0bzogMjAyMi0wNi0yMFQwMDowMDowMFxuICAgICAgLy90ZW50byBwZWdhciBhbm8vbWVzL2RpYSBkaXJldG8gXG4gICAgICAvL0RhdGUoRHRJbmlGZXIuZ2V0VVRDRnVsbFllYXIoKSwgRHRJbmlGZXIuZ2V0VVRDTW9udGgoKSwgRHRJbmlGZXIuZ2V0VVRDRGF0ZSgpLCAwICwgMCAsIDApO1xuICAgICAgLy9lIG7Do28gZnVuY2lvbmFcbiAgICAgIGNvbnN0IGRpYTogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZyg4LCAxMCk7XG4gICAgICBjb25zdCBtZXM6IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoNSwgNyk7XG4gICAgICBjb25zdCBhbm86IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwgNCk7XG5cbiAgICAgIGRhdGFTYWlkYSA9IG5ldyBEYXRlKE51bWJlcihhbm8pLCBOdW1iZXIobWVzKSAtIDEsIE51bWJlcihkaWEpLCAwLCAwLCAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWQoczogYW55KSB7IHJldHVybiAocyA8IDEwKSA/ICcwJyArIHMgOiBzOyB9XG5cbiAgICByZXR1cm4gW3BhZChkYXRhU2FpZGEuZ2V0VVRDRGF0ZSgpKSwgcGFkKGRhdGFTYWlkYS5nZXRVVENNb250aCgpICsgMSksIHBhZChkYXRhU2FpZGEuZ2V0VVRDRnVsbFllYXIoKSldLmpvaW4oJy8nKTtcbiAgfVxuXG4gIC8vT2J0w6ltIGEgRGF0YSBVVEMgY29tIGEgaG9yYVxuICBwdWJsaWMgc3RhdGljIGdldERhdGVkZE1NeXl5eUhobW1zcyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBsZXQgZGF0YVNhaWRhOiBEYXRlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGRhdGFTYWlkYSA9IG5ldyBEYXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSwgZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCkpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vUXVhbmRvIGRhdGUgY2hlZ2EgbmVzdGUgZm9ybWF0bzogMjAyMi0wNi0yMFQwMDowMDowMFxuICAgICAgLy90ZW50byBwZWdhciBhbm8vbWVzL2RpYSBkaXJldG8gXG4gICAgICAvL0RhdGUoRHRJbmlGZXIuZ2V0VVRDRnVsbFllYXIoKSwgRHRJbmlGZXIuZ2V0VVRDTW9udGgoKSwgRHRJbmlGZXIuZ2V0VVRDRGF0ZSgpLCAwICwgMCAsIDApO1xuICAgICAgLy9lIG7Do28gZnVuY2lvbmFcbiAgICAgIGNvbnN0IGRpYTogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZyg4LCAxMCk7XG4gICAgICBjb25zdCBtZXM6IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoNSwgNyk7XG4gICAgICBjb25zdCBhbm86IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwgNCk7XG4gICAgICBjb25zdCBob3JhOiBzdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDExLCAxMyk7XG4gICAgICBjb25zdCBtaW51dG9zOiBzdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDE0LCAxNik7XG4gICAgICBjb25zdCBzZWd1bmRvczogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZygxNywgMTkpO1xuXG4gICAgICBkYXRhU2FpZGEgPSBuZXcgRGF0ZShOdW1iZXIoYW5vKSwgTnVtYmVyKG1lcykgLSAxLCBOdW1iZXIoZGlhKSwgTnVtYmVyKGhvcmEpLCBOdW1iZXIobWludXRvcyksIE51bWJlcihzZWd1bmRvcykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhZChzOiBhbnkpIHsgcmV0dXJuIChzIDwgMTApID8gJzAnICsgcyA6IHM7IH1cblxuICAgIGxldCBkYXRhRm9ybWF0YWRhOiBzdHJpbmcgPSBbcGFkKGRhdGFTYWlkYS5nZXREYXRlKCkpLCBwYWQoZGF0YVNhaWRhLmdldFVUQ01vbnRoKCkgKyAxKSwgcGFkKGRhdGFTYWlkYS5nZXRVVENGdWxsWWVhcigpKV0uam9pbignLycpO1xuXG4gICAgZGF0YUZvcm1hdGFkYSArPSBcIiBcIjtcbiAgICBkYXRhRm9ybWF0YWRhICs9IFtwYWQoZGF0YVNhaWRhLmdldEhvdXJzKCkpLCBwYWQoZGF0YVNhaWRhLmdldE1pbnV0ZXMoKSksIHBhZChkYXRhU2FpZGEuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuXG4gICAgcmV0dXJuIGRhdGFGb3JtYXRhZGE7XG4gIH1cblxuICBzdGF0aWMgVWx0aW1vRGlhTWVzKGRhdGE6IERhdGUpOiBEYXRlIHtcbiAgICBsZXQgZGF0YVNhaWRhOiBEYXRlID0gdGhpcy5nZXREYXRlVGltZVVUQyhkYXRhKTtcbiAgICAvLyBhZGljaW9uYSAxIG1lc1xuICAgIGRhdGFTYWlkYS5zZXRNb250aChkYXRhU2FpZGEuZ2V0VVRDTW9udGgoKSArIDEpO1xuICAgIC8vUG9zaWNpb25hIG5vIGRpYSAwMSBkbyBtZXMgYWRpY2lvbmFkb1xuICAgIGRhdGFTYWlkYSA9IG5ldyBEYXRlKGRhdGFTYWlkYS5nZXRVVENGdWxsWWVhcigpLCBkYXRhU2FpZGEuZ2V0VVRDTW9udGgoKSwgMSwgMCwgMCwgMCk7XG4gICAgLy8gc3VidHJhaSAxIGRpYSBwYXJhIGlyIHBhcmEgbyB1bHRpbW8gZGlhIGRvIG1lc1xuICAgIGRhdGFTYWlkYS5zZXREYXRlKGRhdGFTYWlkYS5nZXREYXRlKCkgLSAxKTtcblxuICAgIHJldHVybiBkYXRhU2FpZGE7XG4gIH1cblxuICAvL09idMOpbSBhIERhdGEvaG9yYSBVVENcbiAgcHVibGljIHN0YXRpYyBnZXREYXRlVGltZVVUQyhkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgbGV0IGRhdGFTYWlkYTogRGF0ZTtcblxuICAgIHRyeSB7XG4gICAgICBkYXRhU2FpZGEgPSBuZXcgRGF0ZShkYXRlLmdldFVUQ0Z1bGxZZWFyKCksIGRhdGUuZ2V0VVRDTW9udGgoKSwgZGF0ZS5nZXRVVENEYXRlKCksIGRhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvL1F1YW5kbyBkYXRlIGNoZWdhIG5lc3RlIGZvcm1hdG86IDIwMjItMDYtMjBUMTE6MTI6MTNcbiAgICAgIGNvbnN0IGRpYTogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZyg4LCAxMCk7XG4gICAgICBjb25zdCBtZXM6IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoNSwgNyk7XG4gICAgICBjb25zdCBhbm86IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwgNCk7XG4gICAgICBjb25zdCBob3JhOiBzdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDExLCAxMyk7XG4gICAgICBjb25zdCBtaW46IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoMTQsIDE2KTtcbiAgICAgIGNvbnN0IHNlZzogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZygxNywgMTkpO1xuICAgICAgZGF0YVNhaWRhID0gbmV3IERhdGUoTnVtYmVyKGFubyksIE51bWJlcihtZXMpIC0gMSwgTnVtYmVyKGRpYSksIE51bWJlcihob3JhKSwgTnVtYmVyKG1pbiksIE51bWJlcihzZWcpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YVNhaWRhO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb21wYXJlRXF1YWxEYXRlcyhkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdHJEYXRlMTogc3RyaW5nID0gVXRpbHMuZ2V0RGF0ZWRkTU15eXkoZGF0ZTEpO1xuICAgIGNvbnN0IHN0ckRhdGUyOiBzdHJpbmcgPSBVdGlscy5nZXREYXRlZGRNTXl5eShkYXRlMik7XG5cbiAgICBpZiAoc3RyRGF0ZTEgPT09IHN0ckRhdGUyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydE1NWVlZWVRvRGF0ZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCcvJywgJycpO1xuXG4gICAgbGV0IG1vbnRoOiBudW1iZXIgPSBOdW1iZXIodmFsdWUuc3Vic3RyaW5nKDAsIDIpKTtcbiAgICBjb25zdCB5ZWFyOiBudW1iZXIgPSBOdW1iZXIodmFsdWUuc3Vic3RyaW5nKDIsIDYpKTtcblxuICAgIC8vRGltaW51aSAxIHBvaXMgbm8gYW5ndWxhciBleGlzdGUgdW0gw61uZGljZSBkbyBtw6pzIHF1ZSBuw6NvIMOpIGlndWFsIGFvIG3DqnMuXG4gICAgbW9udGggPSBtb250aCAtIDE7XG5cbiAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXROdWxsRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoMTkwMCwgMCwgMSwgMCwgMCwgMCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldERhdGVXZWJTZXJ2aWNlRm9ybWF0KHZhbHVlOiBEYXRlKTogc3RyaW5nIHtcblxuICAgIGlmICh2YWx1ZS50b1N0cmluZygpID09ICcnKSB7XG4gICAgICByZXR1cm4gJzE5MDAtMDEtMDEnO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSBVdGlscy5nZXREYXRlZGRNTXl5eSh2YWx1ZSk7XG5cbiAgICByZXR1cm4gZGF0YS5zdWJzdHJpbmcoNiwgMTApICsgJy0nICsgZGF0YS5zdWJzdHJpbmcoMywgNSkgKyAnLScgKyBkYXRhLnN1YnN0cmluZygwLCAyKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGF0ZVRpbWVXZWJTZXJ2aWNlRm9ybWF0KHZhbHVlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUudG9TdHJpbmcoKSA9PSAnJyB8fCBVdGlscy5nZXREYXRlZGRNTXl5eSh2YWx1ZSkgPT0gVXRpbHMuZ2V0RGF0ZWRkTU15eXkodGhpcy5nZXROdWxsRGF0ZSgpKSkge1xuICAgICAgICByZXR1cm4gJzE5MDAtMDEtMDFUMDA6MDA6MDAnO1xuICAgIH1cbiAgXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgXG4gICAgLy8gT2J0ZW5kbyBvcyBjb21wb25lbnRlcyBpbmRpdmlkdWFpcyBkYSBkYXRhXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgICBjb25zdCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IGRhdGUuZ2V0U2Vjb25kcygpOyBcbiAgXG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGAke3llYXJ9LSR7KG1vbnRoICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfS0ke2RheS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9VCR7aG91cnMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke21pbnV0ZXMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke3NlY29uZHMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gICAgXG4gICAgcmV0dXJuIGZvcm1hdHRlZERhdGU7XG4gIH1cblxuICAvL1RyYW5zZm9ybWEgYSBzdHJpbmcgQmFzZTY0IG51bSBhcnJheSBkZSBieXRlcyBlIGZheiBvIGRvd25sb2FkIGRvIGFycXVpdm8uXG4gIHB1YmxpYyBzdGF0aWMgZG93bmxvYWRGaWxlQmFzZTY0KGZsZU5hbWU6IHN0cmluZywgZmlsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYnl0ZVN0cmluZyA9IHdpbmRvdy5hdG9iKGZpbGUpO1xuICAgIGNvbnN0IGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVTdHJpbmcubGVuZ3RoKTtcbiAgICBjb25zdCBpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVTdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGludDhBcnJheVtpXSA9IGJ5dGVTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICB9XG5cbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ludDhBcnJheV0pO1xuXG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICAvL0FiaW9cbiAgICAvL08gd2luZG93Lm9wZW4gZm9pIGNvbWVudGFkbyBwb3JxdWUgbm8gZG93bmxvYWQgZG9zIGFycXVpdm9zIGRpZ2l0YWlzIGFicmlhIHVtYSBqYW5lbGEgY29tIG8gYmxvYiBkbyBhcnF1aXZvLiBcbiAgICAvL0NvbWVudGFyIG7Do28gYWZldG91IG8gZG93bmxvYWQgZG8gY29udHJhLWNoZXF1ZS4gIFxuICAgIC8vd2luZG93Lm9wZW4odXJsKTtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gICAgYS5ocmVmID0gdXJsO1xuICAgIGEudGFyZ2V0ID0gJ19ibGFuayc7XG4gICAgYS5kb3dubG9hZCA9IGZsZU5hbWU7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xuXG4gICAgYS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICogQWJyZSBvIHBvcHVwIGRvIG5hdmVnYWRvciBwYXJhIGJhaXhhciB1bSBhcnF1aXZvIHF1ZSB2ZWlvIGRlIHVtIGJsb2IuXG4gICogXG4gICogQHBhcmFtIGJsb2IgQ29udGXDumRvIGRvIGFycXVpdm8gYmluw6FyaW8gYSBzZXIgYmFpeGFkby5cbiAgKiBAcGFyYW0gZmlsZU5hbWUgTm9tZSBkbyBhcnF1aXZvIGEgc2VyIHNhbHZvLlxuICAqL1xuICBwdWJsaWMgc3RhdGljIGRvd25sb2FkRmlsZShibG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYW5jaG9yID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuICAgIGFuY2hvci5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgYW5jaG9yLmRvd25sb2FkID0gZmlsZU5hbWU7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFuY2hvcik7XG5cbiAgICBhbmNob3IuY2xpY2soKTtcblxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYW5jaG9yKTtcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChhbmNob3IuaHJlZik7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGI2NERlY29kZVVuaWNvZGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIEdvaW5nIGJhY2t3YXJkczogZnJvbSBieXRlc3RyZWFtLCB0byBwZXJjZW50LWVuY29kaW5nLCB0byBvcmlnaW5hbCBzdHJpbmcuXG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChhdG9iKHN0cikuc3BsaXQoJycpLm1hcChjID0+IHtcbiAgICAgIHJldHVybiAnJScgKyAoJzAwJyArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtcbiAgICB9KS5qb2luKCcnKSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGI2NEVuY29kZVVuaWNvZGUoc3RyOiBzdHJpbmcpIHtcbiAgICAvLyBmaXJzdCB3ZSB1c2UgZW5jb2RlVVJJQ29tcG9uZW50IHRvIGdldCBwZXJjZW50LWVuY29kZWQgVVRGLTgsXG4gICAgLy8gdGhlbiB3ZSBjb252ZXJ0IHRoZSBwZXJjZW50IGVuY29kaW5ncyBpbnRvIHJhdyBieXRlcyB3aGljaFxuICAgIC8vIGNhbiBiZSBmZWQgaW50byBidG9hLlxuICAgIHJldHVybiBidG9hKGVuY29kZVVSSUNvbXBvbmVudChzdHIpLnJlcGxhY2UoLyUoWzAtOUEtRl17Mn0pL2csXG4gICAgICAobWF0Y2gsIHAxKSA9PiB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKChcIjB4XCIgKyBwMSkgYXMgYW55KTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8vTGFyZ3VyYSBhIHBhcnRpciBkZSBvbmRlIHJlbW9udGEgbyBuZ3hfZGF0YXRhYmxlIHBhcmEgbW9iaWxlXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SXNNb2JpbGUoKSB7XG4gICAgY29uc3Qgd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHwgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDtcbiAgICByZXR1cm4gd2lkdGggPCA3Njg7XG4gIH1cblxuXG4gIC8vICNyZWdpb24gT1JERU5Bw4fDg09cbiAgcHVibGljIHN0YXRpYyBhbHBoYW51bWVyaWNTb3J0KGE6IHN0cmluZyB8IG51bWJlciwgYjogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyO1xuICBwdWJsaWMgc3RhdGljIGFscGhhbnVtZXJpY1NvcnQoYTogc3RyaW5nIHwgbnVtYmVyLCBiOiBzdHJpbmcgfCBudW1iZXIsIGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycpOiBudW1iZXI7XG5cbiAgLyoqIE3DqXRvZG8gZGUgb3JkZW5hw6fDo28gYWxmYW51bcOpcmljbyBjb20gcG9zc2liaWxpZGFkZSBkZSBkaXJlw6fDo28gKi9cbiAgcHVibGljIHN0YXRpYyBhbHBoYW51bWVyaWNTb3J0KGE6IHN0cmluZyB8IG51bWJlciwgYjogc3RyaW5nIHwgbnVtYmVyLCBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycpOiBudW1iZXIge1xuICAgIGNvbnN0IHJlZ2V4ID0gLyhcXGQrfFxcRCspL2c7XG5cbiAgICBjb25zdCBzdHJpbmdBID0gdGhpcy5wcm9wZXJ0eUlzTnVsbFVuZGVmaW5lZE9yRW1wdHkoYSkgPyBcIlwiIDogYTtcbiAgICBjb25zdCBzdHJpbmdCID0gdGhpcy5wcm9wZXJ0eUlzTnVsbFVuZGVmaW5lZE9yRW1wdHkoYikgPyBcIlwiIDogYTtcblxuICAgIGNvbnN0IGFQYXJ0cyA9IHN0cmluZ0EudG9TdHJpbmcoKS5tYXRjaChyZWdleCkgfHwgW107XG4gICAgY29uc3QgYlBhcnRzID0gc3RyaW5nQi50b1N0cmluZygpLm1hdGNoKHJlZ2V4KSB8fCBbXTtcblxuICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KGFQYXJ0cy5sZW5ndGgsIGJQYXJ0cy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgYVBhcnQgPSBhUGFydHNbaV0gfHwgXCJcIjtcbiAgICAgIGNvbnN0IGJQYXJ0ID0gYlBhcnRzW2ldIHx8IFwiXCI7XG5cbiAgICAgIGNvbnN0IGFJc051bWJlciA9ICFpc05hTihOdW1iZXIoYVBhcnQpKTtcbiAgICAgIGNvbnN0IGJJc051bWJlciA9ICFpc05hTihOdW1iZXIoYlBhcnQpKTtcblxuICAgICAgaWYgKGFJc051bWJlciAmJiBiSXNOdW1iZXIpIHtcbiAgICAgICAgY29uc3QgbnVtQ29tcGFyZSA9IE51bWJlcihhUGFydCkgLSBOdW1iZXIoYlBhcnQpO1xuICAgICAgICBpZiAobnVtQ29tcGFyZSAhPT0gMCkgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ2FzYycgPyBudW1Db21wYXJlIDogLW51bUNvbXBhcmU7XG4gICAgICB9IGVsc2UgaWYgKGFJc051bWJlcikge1xuICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09PSAnYXNjJyA/IC0xIDogMTtcbiAgICAgIH0gZWxzZSBpZiAoYklzTnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT09ICdhc2MnID8gMSA6IC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RyQ29tcGFyZSA9IGFQYXJ0LmxvY2FsZUNvbXBhcmUoYlBhcnQpO1xuICAgICAgICBpZiAoc3RyQ29tcGFyZSAhPT0gMCkgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ2FzYycgPyBzdHJDb21wYXJlIDogLXN0ckNvbXBhcmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgLy8gI2VuZHJlZ2lvbiBPUkRFTkHDh8ODT1xuXG5cblxuXG4gIC8qKiBSZXRvcm5hIHNlIGEgdmFyacOhdmVsIGluZm9ybWFkYSDDqSA9PT0gbnVsbCB8fCB1bmRlZmluZWQgfHwgXCJcIiAoc3RyaW5nIHZhemlhKSAqL1xuICBwdWJsaWMgc3RhdGljIHByb3BlcnR5SXNOdWxsVW5kZWZpbmVkT3JFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IFwiXCIpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBSZXRvcm5hIHNlIGEgdmFyacOhdmVsIGluZm9ybWFkYSDDqSA9PT0gbnVsbCB8fCBcIlwiIChzdHJpbmcgdmF6aWEpICovXG4gIHB1YmxpYyBzdGF0aWMgcHJvcGVydHlJc051bGxPckVtcHR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IFwiXCIpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBSZXRvcm5hIHNlIGEgdmFyacOhdmVsIGluZm9ybWFkYSDDqSA9PT0gbnVsbCB8fCB1bmRlZmluZWQgfHwgXCIgXCIgKHN0cmluZyBjb20gdW0gZXNwYcOnbyBlbSBicmFuY28pICovXG4gIHB1YmxpYyBzdGF0aWMgcHJvcGVydHlJc051bGxVbmRlZmluZWRPcldoaXRlc3BhY2UodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBcIiBcIikgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIFJldG9ybmEgc2UgYSB2YXJpw6F2ZWwgaW5mb3JtYWRhIMOpID09PSBudWxsIHx8IFwiIFwiIChzdHJpbmcgY29tIHVtIGVzcGHDp28gZW0gYnJhbmNvKSAqL1xuICBwdWJsaWMgc3RhdGljIHByb3BlcnR5SXNOdWxsT3JXaGl0ZXNwYWNlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IFwiIFwiKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxufVxuIl19
|
|
396
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi91dGlscy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sS0FBSztJQUVoQixrREFBa0Q7SUFDM0MsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQVU7UUFFMUMsSUFBSSxZQUFZLEdBQVcsRUFBRSxDQUFDO1FBRTlCLElBQUksS0FBSyxDQUFDLEtBQUssWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUN0QyxpQ0FBaUM7WUFDakMsWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBRU4sbUNBQW1DO1lBQ25DLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUVqQixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7b0JBRXhCLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUVoQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7NEJBQzdCLFlBQVksR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7d0JBQy9DLENBQUM7NkJBQ0ksQ0FBQzs0QkFDSixZQUFZLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUMxQyxDQUFDO29CQUVILENBQUM7eUJBQU0sQ0FBQzt3QkFDTixZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztvQkFDL0IsQ0FBQztnQkFFSCxDQUFDO3FCQUNJLENBQUM7b0JBRUosSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBRWhCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQzs0QkFDN0IsWUFBWSxHQUFHLEdBQUcsS0FBSyxDQUFD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LEtBQUssRUFBRSxDQUFDO1lBQ2Isc0RBQXNEO1lBQ3RELE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sSUFBSSxHQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxRyxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFXLEVBQUUsS0FBVztRQUN0RCxNQUFNLFFBQVEsR0FBVyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFXLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFD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QyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQzlFLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsdUJBQXVCO0lBS3ZCLG1GQUFtRjtJQUM1RSxNQUFNLENBQUMsOEJBQThCLENBQUMsS0FBVTtRQUNyRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3ZFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHNFQUFzRTtJQUMvRCxNQUFNLENBQUMscUJBQXFCLENBQUMsS0FBVTtRQUM1QyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNoRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxzR0FBc0c7SUFDL0YsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLEtBQVU7UUFDMUQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCx5RkFBeUY7SUFDbEYsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEtBQVU7UUFDakQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVXRpbHMge1xuXG4gIC8vIE9idMOpbSBhIG1lbnNhZ2VtIGRlIGVycm8gZGUgdW1hIHJlcXVpc2nDp8OjbyBodHRwXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SHR0cEVycm9yTWVzc2FnZShlcnJvcjogYW55KTogc3RyaW5nIHtcblxuICAgIGxldCBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuXG4gICAgaWYgKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xuICAgICAgLy8gRXJybyBvY29ycmV1IG5vIGxhZG8gZG8gY2xpZW50XG4gICAgICBlcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvci5tZXNzYWdlO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIC8vIEVycm8gb2NvcnJldSBubyBsYWRvIGRvIHNlcnZpZG9yXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzKSB7XG5cbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSAyMDApIHtcblxuICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xuXG4gICAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IuRXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2Vycm9yLmVycm9yLkVycm9yTWVzc2FnZX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2Vycm9yLmVycm9yLk1lc3NhZ2V9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuXG4gICAgICAgICAgaWYgKGVycm9yLmVycm9yKSB7XG5cbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5FcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZXJyb3IuZXJyb3IuRXJyb3JNZXNzYWdlfTxicj48YnI+JHtlcnJvci5zdGF0dXN9IC0gJHtlcnJvci5zdGF0dXNUZXh0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZXJyb3IuZXJyb3IuTWVzc2FnZX08YnI+PGJyPiR7ZXJyb3Iuc3RhdHVzfSAtICR7ZXJyb3Iuc3RhdHVzVGV4dH1gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3JNZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiBlcnJvck1lc3NhZ2U7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnREYXRlVGltZVRvRGF0ZVN0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlU3RyaW5nOiBzdHJpbmdbXSA9IGRhdGUudG9TdHJpbmcoKS5zcGxpdCgnVCcpWzBdLnNwbGl0KCctJyk7XG5cbiAgICByZXR1cm4gYCR7ZGF0ZVN0cmluZ1swXX0tJHtkYXRlU3RyaW5nWzFdfS0ke2RhdGVTdHJpbmdbMl19YDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFN0cmluZ1RvRGF0ZSh0ZXh0OiBzdHJpbmcpOiBEYXRlIHtcbiAgICBjb25zdCBkYXRlU3RyaW5nOiBzdHJpbmdbXSA9IHRleHQuc3BsaXQoJy0nKTtcblxuICAgIHJldHVybiBuZXcgRGF0ZSgrZGF0ZVN0cmluZ1swXSwgKCtkYXRlU3RyaW5nWzFdKSAtIDEsICtkYXRlU3RyaW5nWzJdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzZSB1bSBkZXRlcm1pbmFkbyBhbm8gw6kgYmlzc2V4dG8uXG4gICAqIEBwYXJhbSB5ZWFyIEFubyBhIHNlciB2ZXJpZmljYWRvLlxuICAgKiBAcmV0dXJucyBSZXRvcm5hIHRydWUgc2UgbyBhbm8gZm9yIGJpc3NleHRvIGUgZmFsc2Ugc2UgZWxlIG7Do28gZm9yLCBvdSBzZSBvIGFubyBpbmZvcm1hZG8gZm9yIGludsOhbGlkby5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNMZWFwWWVhcih5ZWFyOiBudW1iZXIgfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBZRUFSX05VTUJFUjogbnVtYmVyID0gdHlwZW9mIHllYXIgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQoeWVhcikgOiB5ZWFyO1xuXG4gICAgaWYgKCFpc05hTihZRUFSX05VTUJFUikpIHtcbiAgICAgIGlmICgoWUVBUl9OVU1CRVIgJSA0ID09PSAwICYmIFlFQVJfTlVNQkVSICUgMTAwICE9PSAwKSB8fCBZRUFSX05VTUJFUiAlIDQwMCA9PT0gMCkgcmV0dXJuIHRydWU7XG4gICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2UgdW1hIGRldGVybWluYWRhIGRhdGEgw6kgaW5kZXRlcm1pbmFkYS5cbiAgICogQHBhcmFtIGRhdGVUaW1lIERhdGEgYSBzZXIgdmVyaWZpY2FkYS5cbiAgICogQHJldHVybnMgUmV0b3JuYSB0cnVlIHNlIGZvciBpbmRldGVybWluYWRhIGUgZmFsc2Ugc2UgbsOjbyBmb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZlcmlmeURhdGVJc0luZGV0ZXJtaW5hdGUoZGF0ZVRpbWU6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGF0ZVRpbWUudG9TdHJpbmcoKS5zcGxpdCgnVCcpWzBdID09PSAnMjA5OS0xMi0zMSc7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2UgdW1hIGRldGVybWluYWRhIGRhdGEgw6kgbnVsYSAoaWd1YWwgYSAnMTkwMC0wMS0wMVQwMDowMDowMCcpLlxuICAgKiBAcGFyYW0gZGF0ZVRpbWUgRGF0YSBhIHNlciB2ZXJpZmljYWRhLlxuICAgKiBAcmV0dXJucyBSZXRvcm5hIHRydWUgc2UgZm9yIG51bGEgZSBmYWxzZSBzZSBuw6NvIGZvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmVyaWZ5RGF0ZUlzTnVsbChkYXRlVGltZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkYXRlVGltZS50b1N0cmluZygpLnNwbGl0KCdUJylbMF0gPT09ICcxOTAwLTAxLTAxJztcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW50YSByZWFsaXphciB1bSBwYXJzZSBkZSB1bWEgZGF0YSBjb20gb3Mgc2VndWludGVzIHZhbG9yZXM6IGRkL01NL3l5eXkgSEg6bW1cbiAgICogXG4gICAqIEBwYXJhbSB2YWx1ZSBTdHJpbmcgcXVlIGNvbnTDqW0gYSBkYXRhIGZvcm1hdGFkYSBlbSBwdC1iclxuICAgKiBAcGFyYW0gZGF0ZVNlcGFyYXRvciBTZXBhcmFkb3IgZGEgZGF0YS5cbiAgICogQHJldHVybnMgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHBhcnNlRGF0ZVRpbWUodmFsdWU6IHN0cmluZywgZGF0ZVNlcGFyYXRvcjogc3RyaW5nID0gXCIvXCIpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgdXNEYXRlID0gXCJcIjtcblxuICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xuXG4gICAgY29uc3QgZGF0ZUFuZFRpbWU6IHN0cmluZ1tdID0gdmFsdWUuc3BsaXQoXCIgXCIpO1xuXG4gICAgLy8gUG9zc3VpIHBlbG8gbWVub3MgNSBjYXJhY3RlcmVzOiAxLzEvMVxuICAgIGlmICh2YWx1ZS5sZW5ndGggPj0gNSkge1xuICAgICAgY29uc3QgZGF0ZVNlcGFyYXRlZDogc3RyaW5nW10gPSBkYXRlQW5kVGltZVswXS5zcGxpdChkYXRlU2VwYXJhdG9yKTtcblxuICAgICAgaWYgKGRhdGVTZXBhcmF0ZWQubGVuZ3RoICE9PSAzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGVTZXBhcmF0ZWRbMl0ubGVuZ3RoID4gMikge1xuICAgICAgICBkYXRlU2VwYXJhdGVkWzJdID0gYCR7ZGF0ZVNlcGFyYXRlZFsyXS5jaGFyQXQoMCl9JHtkYXRlU2VwYXJhdGVkWzJdLmNoYXJBdCgxKX1gLnRyaW0oKTtcbiAgICAgIH1cblxuICAgICAgdXNEYXRlID0gYCR7ZGF0ZVNlcGFyYXRlZFsxXX0vJHtkYXRlU2VwYXJhdGVkWzBdfS8ke2RhdGVTZXBhcmF0ZWRbMl19YFxuICAgIH1cblxuICAgIGlmIChkYXRlQW5kVGltZS5sZW5ndGggPT09IDIpIHtcblxuICAgICAgdXNEYXRlICs9IGAgJHtkYXRlQW5kVGltZVsxXX1gO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGVjdGVkRGF0ZTogbnVtYmVyID0gRGF0ZS5wYXJzZSh1c0RhdGUpO1xuXG4gICAgaWYgKGV4cGVjdGVkRGF0ZSAhPT0gbnVsbCB8fCBleHBlY3RlZERhdGUgPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlKGV4cGVjdGVkRGF0ZSk7XG4gIH1cblxuICAvLyBPYnTDqW0gYSBEYXRhIGxvY2FsXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGF0ZUxvY2FsVGltZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIChuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKSk7XG4gIH1cblxuICAvLyBPYnTDqW0gYSBEYXRhIGxvY2FsIG5vIFBhZHLDo28gSXNvXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGF0ZUxvY2FsVGltZUlTTyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuZ2V0RGF0ZUxvY2FsVGltZShkYXRlKS50b0lTT1N0cmluZygpLnJlcGxhY2UoJy4wMDBaJywgJycpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGF0ZVBpY2tlckRhdGUoc3RyOiBzdHJpbmcpOiBEYXRlIHtcbiAgICBjb25zdCBbZGF0ZUNvbXBvbmVudHMsIHRpbWVDb21wb25lbnRzXSA9IHN0ci5zcGxpdCgnVCcpXG4gICAgY29uc3QgW2FubywgbWVzLCBkaWFdID0gZGF0ZUNvbXBvbmVudHMuc3BsaXQoJy0nKTtcbiAgICBjb25zdCBbaG9yYSwgbWludXRvLCBzZWd1bmRvXSA9IHRpbWVDb21wb25lbnRzLnNwbGl0KCc6Jyk7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKE51bWJlcihhbm8pLCBOdW1iZXIobWVzKSwgTnVtYmVyKGRpYSkpXG5cbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBBZGljaW9uYURpYXMoZGF0YTogRGF0ZSwgZGF5czogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgZmluZCA9IG5ldyBEYXRlKE51bWJlcihkYXRhKSlcblxuICAgIGZpbmQuc2V0RGF0ZShkYXRhLmdldERhdGUoKSArIGRheXMpXG5cbiAgICByZXR1cm4gZmluZFxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBEaWZlcmVuY2FEaWFzKGRhdGFJbmljaWFsOiBEYXRlLCBkYXRhRmluYWw6IERhdGUpOiBudW1iZXIge1xuICAgIGNvbnN0IFRpbWUgPSBkYXRhRmluYWwuZ2V0VGltZSgpIC0gZGF0YUluaWNpYWwuZ2V0VGltZSgpO1xuXG4gICAgcmV0dXJuIFRpbWUgLyAoMTAwMCAqIDM2MDAgKiAyNCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERpZmVyZW5jYU1lc2VzKGRhdGFJbmljaWFsOiBEYXRlLCBkYXRhRmluYWw6IERhdGUpOiBudW1iZXIge1xuICAgIGxldCBtZXNlcyA9IChkYXRhRmluYWwuZ2V0RnVsbFllYXIoKSAtIGRhdGFJbmljaWFsLmdldEZ1bGxZZWFyKCkpICogMTI7XG4gICAgbWVzZXMgLT0gZGF0YUluaWNpYWwuZ2V0TW9udGgoKTtcbiAgICBtZXNlcyArPSBkYXRhRmluYWwuZ2V0TW9udGgoKTtcblxuICAgIHJldHVybiBtZXNlcyA8PSAwID8gMCA6IG1lc2VzO1xuICB9XG5cblxuICAvL09idMOpbSBhIERhdGEgVVRDIGNvbSBob3JhIHplcmFkYVxuICBwdWJsaWMgc3RhdGljIGdldERhdGVVVEMoZGF0ZTogRGF0ZSk6IERhdGUge1xuICAgIC8vY29kaWdvIG9yaWdpbmFsXG4gICAgLy9yZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgKyAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDApKTtcbiAgICBsZXQgZGF0YVNhaWRhOiBEYXRlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGRhdGFTYWlkYSA9IG5ldyBEYXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSwgMCwgMCwgMCk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgLy9RdWFuZG8gZGF0ZSBjaGVnYSBuZXN0ZSBmb3JtYXRvOiAyMDIyLTA2LTIwVDAwOjAwOjAwXG4gICAgICAvL3RlbnRvIHBlZ2FyIGFuby9tZXMvZGlhIGRpcmV0byBcbiAgICAgIC8vRGF0ZShEdEluaUZlci5nZXRVVENGdWxsWWVhcigpLCBEdEluaUZlci5nZXRVVENNb250aCgpLCBEdEluaUZlci5nZXRVVENEYXRlKCksIDAgLCAwICwgMCk7XG4gICAgICAvL2UgbsOjbyBmdW5jaW9uYVxuICAgICAgY29uc3QgZGlhOiBzdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDgsIDEwKTtcbiAgICAgIGNvbnN0IG1lczogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZyg1LCA3KTtcbiAgICAgIGNvbnN0IGFubzogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZygwLCA0KTtcbiAgICAgIGRhdGFTYWlkYSA9IG5ldyBEYXRlKE51bWJlcihhbm8pLCBOdW1iZXIobWVzKSAtIDEsIE51bWJlcihkaWEpLCAwLCAwLCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YVNhaWRhO1xuICB9XG5cbiAgLy9PYnTDqW0gYSBEYXRhIFVUQyBjb20gaG9yYSB6ZXJhZGFcbiAgcHVibGljIHN0YXRpYyBnZXREYXRlZGRNTXl5eShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICAvL2NvZGlnbyBvcmlnaW5hbFxuICAgIC8vcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKSk7XG4gICAgbGV0IGRhdGFTYWlkYTogRGF0ZTtcblxuICAgIHRyeSB7XG4gICAgICBkYXRhU2FpZGEgPSBuZXcgRGF0ZShkYXRlLmdldFVUQ0Z1bGxZZWFyKCksIGRhdGUuZ2V0VVRDTW9udGgoKSwgZGF0ZS5nZXRVVENEYXRlKCksIDAsIDAsIDApO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vUXVhbmRvIGRhdGUgY2hlZ2EgbmVzdGUgZm9ybWF0bzogMjAyMi0wNi0yMFQwMDowMDowMFxuICAgICAgLy90ZW50byBwZWdhciBhbm8vbWVzL2RpYSBkaXJldG8gXG4gICAgICAvL0RhdGUoRHRJbmlGZXIuZ2V0VVRDRnVsbFllYXIoKSwgRHRJbmlGZXIuZ2V0VVRDTW9udGgoKSwgRHRJbmlGZXIuZ2V0VVRDRGF0ZSgpLCAwICwgMCAsIDApO1xuICAgICAgLy9lIG7Do28gZnVuY2lvbmFcbiAgICAgIGNvbnN0IGRpYTogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZyg4LCAxMCk7XG4gICAgICBjb25zdCBtZXM6IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoNSwgNyk7XG4gICAgICBjb25zdCBhbm86IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwgNCk7XG5cbiAgICAgIGRhdGFTYWlkYSA9IG5ldyBEYXRlKE51bWJlcihhbm8pLCBOdW1iZXIobWVzKSAtIDEsIE51bWJlcihkaWEpLCAwLCAwLCAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWQoczogYW55KSB7IHJldHVybiAocyA8IDEwKSA/ICcwJyArIHMgOiBzOyB9XG5cbiAgICByZXR1cm4gW3BhZChkYXRhU2FpZGEuZ2V0VVRDRGF0ZSgpKSwgcGFkKGRhdGFTYWlkYS5nZXRVVENNb250aCgpICsgMSksIHBhZChkYXRhU2FpZGEuZ2V0VVRDRnVsbFllYXIoKSldLmpvaW4oJy8nKTtcbiAgfVxuXG4gIC8vT2J0w6ltIGEgRGF0YSBVVEMgY29tIGEgaG9yYVxuICBwdWJsaWMgc3RhdGljIGdldERhdGVkZE1NeXl5eUhobW1zcyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBsZXQgZGF0YVNhaWRhOiBEYXRlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGRhdGFTYWlkYSA9IG5ldyBEYXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSwgZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCkpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vUXVhbmRvIGRhdGUgY2hlZ2EgbmVzdGUgZm9ybWF0bzogMjAyMi0wNi0yMFQwMDowMDowMFxuICAgICAgLy90ZW50byBwZWdhciBhbm8vbWVzL2RpYSBkaXJldG8gXG4gICAgICAvL0RhdGUoRHRJbmlGZXIuZ2V0VVRDRnVsbFllYXIoKSwgRHRJbmlGZXIuZ2V0VVRDTW9udGgoKSwgRHRJbmlGZXIuZ2V0VVRDRGF0ZSgpLCAwICwgMCAsIDApO1xuICAgICAgLy9lIG7Do28gZnVuY2lvbmFcbiAgICAgIGNvbnN0IGRpYTogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZyg4LCAxMCk7XG4gICAgICBjb25zdCBtZXM6IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoNSwgNyk7XG4gICAgICBjb25zdCBhbm86IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwgNCk7XG4gICAgICBjb25zdCBob3JhOiBzdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDExLCAxMyk7XG4gICAgICBjb25zdCBtaW51dG9zOiBzdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDE0LCAxNik7XG4gICAgICBjb25zdCBzZWd1bmRvczogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZygxNywgMTkpO1xuXG4gICAgICBkYXRhU2FpZGEgPSBuZXcgRGF0ZShOdW1iZXIoYW5vKSwgTnVtYmVyKG1lcykgLSAxLCBOdW1iZXIoZGlhKSwgTnVtYmVyKGhvcmEpLCBOdW1iZXIobWludXRvcyksIE51bWJlcihzZWd1bmRvcykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhZChzOiBhbnkpIHsgcmV0dXJuIChzIDwgMTApID8gJzAnICsgcyA6IHM7IH1cblxuICAgIGxldCBkYXRhRm9ybWF0YWRhOiBzdHJpbmcgPSBbcGFkKGRhdGFTYWlkYS5nZXREYXRlKCkpLCBwYWQoZGF0YVNhaWRhLmdldFVUQ01vbnRoKCkgKyAxKSwgcGFkKGRhdGFTYWlkYS5nZXRVVENGdWxsWWVhcigpKV0uam9pbignLycpO1xuXG4gICAgZGF0YUZvcm1hdGFkYSArPSBcIiBcIjtcbiAgICBkYXRhRm9ybWF0YWRhICs9IFtwYWQoZGF0YVNhaWRhLmdldEhvdXJzKCkpLCBwYWQoZGF0YVNhaWRhLmdldE1pbnV0ZXMoKSksIHBhZChkYXRhU2FpZGEuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuXG4gICAgcmV0dXJuIGRhdGFGb3JtYXRhZGE7XG4gIH1cblxuICBzdGF0aWMgVWx0aW1vRGlhTWVzKGRhdGE6IERhdGUpOiBEYXRlIHtcbiAgICBsZXQgZGF0YVNhaWRhOiBEYXRlID0gdGhpcy5nZXREYXRlVGltZVVUQyhkYXRhKTtcbiAgICAvLyBhZGljaW9uYSAxIG1lc1xuICAgIGRhdGFTYWlkYS5zZXRNb250aChkYXRhU2FpZGEuZ2V0VVRDTW9udGgoKSArIDEpO1xuICAgIC8vUG9zaWNpb25hIG5vIGRpYSAwMSBkbyBtZXMgYWRpY2lvbmFkb1xuICAgIGRhdGFTYWlkYSA9IG5ldyBEYXRlKGRhdGFTYWlkYS5nZXRVVENGdWxsWWVhcigpLCBkYXRhU2FpZGEuZ2V0VVRDTW9udGgoKSwgMSwgMCwgMCwgMCk7XG4gICAgLy8gc3VidHJhaSAxIGRpYSBwYXJhIGlyIHBhcmEgbyB1bHRpbW8gZGlhIGRvIG1lc1xuICAgIGRhdGFTYWlkYS5zZXREYXRlKGRhdGFTYWlkYS5nZXREYXRlKCkgLSAxKTtcblxuICAgIHJldHVybiBkYXRhU2FpZGE7XG4gIH1cblxuICAvL09idMOpbSBhIERhdGEvaG9yYSBVVENcbiAgcHVibGljIHN0YXRpYyBnZXREYXRlVGltZVVUQyhkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgbGV0IGRhdGFTYWlkYTogRGF0ZTtcblxuICAgIHRyeSB7XG4gICAgICBkYXRhU2FpZGEgPSBuZXcgRGF0ZShkYXRlLmdldFVUQ0Z1bGxZZWFyKCksIGRhdGUuZ2V0VVRDTW9udGgoKSwgZGF0ZS5nZXRVVENEYXRlKCksIGRhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvL1F1YW5kbyBkYXRlIGNoZWdhIG5lc3RlIGZvcm1hdG86IDIwMjItMDYtMjBUMTE6MTI6MTNcbiAgICAgIGNvbnN0IGRpYTogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZyg4LCAxMCk7XG4gICAgICBjb25zdCBtZXM6IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoNSwgNyk7XG4gICAgICBjb25zdCBhbm86IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwgNCk7XG4gICAgICBjb25zdCBob3JhOiBzdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDExLCAxMyk7XG4gICAgICBjb25zdCBtaW46IHN0cmluZyA9IGRhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoMTQsIDE2KTtcbiAgICAgIGNvbnN0IHNlZzogc3RyaW5nID0gZGF0ZS50b1N0cmluZygpLnN1YnN0cmluZygxNywgMTkpO1xuICAgICAgZGF0YVNhaWRhID0gbmV3IERhdGUoTnVtYmVyKGFubyksIE51bWJlcihtZXMpIC0gMSwgTnVtYmVyKGRpYSksIE51bWJlcihob3JhKSwgTnVtYmVyKG1pbiksIE51bWJlcihzZWcpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YVNhaWRhO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb21wYXJlRXF1YWxEYXRlcyhkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdHJEYXRlMTogc3RyaW5nID0gVXRpbHMuZ2V0RGF0ZWRkTU15eXkoZGF0ZTEpO1xuICAgIGNvbnN0IHN0ckRhdGUyOiBzdHJpbmcgPSBVdGlscy5nZXREYXRlZGRNTXl5eShkYXRlMik7XG5cbiAgICBpZiAoc3RyRGF0ZTEgPT09IHN0ckRhdGUyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydE1NWVlZWVRvRGF0ZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCcvJywgJycpO1xuXG4gICAgbGV0IG1vbnRoOiBudW1iZXIgPSBOdW1iZXIodmFsdWUuc3Vic3RyaW5nKDAsIDIpKTtcbiAgICBjb25zdCB5ZWFyOiBudW1iZXIgPSBOdW1iZXIodmFsdWUuc3Vic3RyaW5nKDIsIDYpKTtcblxuICAgIC8vRGltaW51aSAxIHBvaXMgbm8gYW5ndWxhciBleGlzdGUgdW0gw61uZGljZSBkbyBtw6pzIHF1ZSBuw6NvIMOpIGlndWFsIGFvIG3DqnMuXG4gICAgbW9udGggPSBtb250aCAtIDE7XG5cbiAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXROdWxsRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoMTkwMCwgMCwgMSwgMCwgMCwgMCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldERhdGVXZWJTZXJ2aWNlRm9ybWF0KHZhbHVlOiBEYXRlKTogc3RyaW5nIHtcblxuICAgIGlmICh2YWx1ZS50b1N0cmluZygpID09ICcnKSB7XG4gICAgICByZXR1cm4gJzE5MDAtMDEtMDEnO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSBVdGlscy5nZXREYXRlZGRNTXl5eSh2YWx1ZSk7XG5cbiAgICByZXR1cm4gZGF0YS5zdWJzdHJpbmcoNiwgMTApICsgJy0nICsgZGF0YS5zdWJzdHJpbmcoMywgNSkgKyAnLScgKyBkYXRhLnN1YnN0cmluZygwLCAyKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGF0ZVRpbWVXZWJTZXJ2aWNlRm9ybWF0KHZhbHVlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUudG9TdHJpbmcoKSA9PSAnJyB8fCBVdGlscy5nZXREYXRlZGRNTXl5eSh2YWx1ZSkgPT0gVXRpbHMuZ2V0RGF0ZWRkTU15eXkodGhpcy5nZXROdWxsRGF0ZSgpKSkge1xuICAgICAgICByZXR1cm4gJzE5MDAtMDEtMDFUMDA6MDA6MDAnO1xuICAgIH1cbiAgXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgXG4gICAgLy8gT2J0ZW5kbyBvcyBjb21wb25lbnRlcyBpbmRpdmlkdWFpcyBkYSBkYXRhXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgICBjb25zdCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IGRhdGUuZ2V0U2Vjb25kcygpOyBcbiAgXG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGAke3llYXJ9LSR7KG1vbnRoICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfS0ke2RheS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9VCR7aG91cnMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke21pbnV0ZXMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke3NlY29uZHMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gICAgXG4gICAgcmV0dXJuIGZvcm1hdHRlZERhdGU7XG4gIH1cblxuICAvL1RyYW5zZm9ybWEgYSBzdHJpbmcgQmFzZTY0IG51bSBhcnJheSBkZSBieXRlcyBlIGZheiBvIGRvd25sb2FkIGRvIGFycXVpdm8uXG4gIHB1YmxpYyBzdGF0aWMgZG93bmxvYWRGaWxlQmFzZTY0KGZsZU5hbWU6IHN0cmluZywgZmlsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYnl0ZVN0cmluZyA9IHdpbmRvdy5hdG9iKGZpbGUpO1xuICAgIGNvbnN0IGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVTdHJpbmcubGVuZ3RoKTtcbiAgICBjb25zdCBpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVTdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGludDhBcnJheVtpXSA9IGJ5dGVTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICB9XG5cbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ludDhBcnJheV0pO1xuXG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICAvL0FiaW9cbiAgICAvL08gd2luZG93Lm9wZW4gZm9pIGNvbWVudGFkbyBwb3JxdWUgbm8gZG93bmxvYWQgZG9zIGFycXVpdm9zIGRpZ2l0YWlzIGFicmlhIHVtYSBqYW5lbGEgY29tIG8gYmxvYiBkbyBhcnF1aXZvLiBcbiAgICAvL0NvbWVudGFyIG7Do28gYWZldG91IG8gZG93bmxvYWQgZG8gY29udHJhLWNoZXF1ZS4gIFxuICAgIC8vd2luZG93Lm9wZW4odXJsKTtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gICAgYS5ocmVmID0gdXJsO1xuICAgIGEudGFyZ2V0ID0gJ19ibGFuayc7XG4gICAgYS5kb3dubG9hZCA9IGZsZU5hbWU7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xuXG4gICAgYS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICogQWJyZSBvIHBvcHVwIGRvIG5hdmVnYWRvciBwYXJhIGJhaXhhciB1bSBhcnF1aXZvIHF1ZSB2ZWlvIGRlIHVtIGJsb2IuXG4gICogXG4gICogQHBhcmFtIGJsb2IgQ29udGXDumRvIGRvIGFycXVpdm8gYmluw6FyaW8gYSBzZXIgYmFpeGFkby5cbiAgKiBAcGFyYW0gZmlsZU5hbWUgTm9tZSBkbyBhcnF1aXZvIGEgc2VyIHNhbHZvLlxuICAqL1xuICBwdWJsaWMgc3RhdGljIGRvd25sb2FkRmlsZShibG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYW5jaG9yID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuICAgIGFuY2hvci5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgYW5jaG9yLmRvd25sb2FkID0gZmlsZU5hbWU7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFuY2hvcik7XG5cbiAgICBhbmNob3IuY2xpY2soKTtcblxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYW5jaG9yKTtcbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChhbmNob3IuaHJlZik7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGI2NERlY29kZVVuaWNvZGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIEdvaW5nIGJhY2t3YXJkczogZnJvbSBieXRlc3RyZWFtLCB0byBwZXJjZW50LWVuY29kaW5nLCB0byBvcmlnaW5hbCBzdHJpbmcuXG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChhdG9iKHN0cikuc3BsaXQoJycpLm1hcChjID0+IHtcbiAgICAgIHJldHVybiAnJScgKyAoJzAwJyArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtcbiAgICB9KS5qb2luKCcnKSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGI2NEVuY29kZVVuaWNvZGUoc3RyOiBzdHJpbmcpIHtcbiAgICAvLyBmaXJzdCB3ZSB1c2UgZW5jb2RlVVJJQ29tcG9uZW50IHRvIGdldCBwZXJjZW50LWVuY29kZWQgVVRGLTgsXG4gICAgLy8gdGhlbiB3ZSBjb252ZXJ0IHRoZSBwZXJjZW50IGVuY29kaW5ncyBpbnRvIHJhdyBieXRlcyB3aGljaFxuICAgIC8vIGNhbiBiZSBmZWQgaW50byBidG9hLlxuICAgIHJldHVybiBidG9hKGVuY29kZVVSSUNvbXBvbmVudChzdHIpLnJlcGxhY2UoLyUoWzAtOUEtRl17Mn0pL2csXG4gICAgICAobWF0Y2gsIHAxKSA9PiB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKChcIjB4XCIgKyBwMSkgYXMgYW55KTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8vTGFyZ3VyYSBhIHBhcnRpciBkZSBvbmRlIHJlbW9udGEgbyBuZ3hfZGF0YXRhYmxlIHBhcmEgbW9iaWxlXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SXNNb2JpbGUoKSB7XG4gICAgY29uc3Qgd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHwgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDtcbiAgICByZXR1cm4gd2lkdGggPCA3Njg7XG4gIH1cblxuXG4gIC8vICNyZWdpb24gT1JERU5Bw4fDg09cbiAgcHVibGljIHN0YXRpYyBhbHBoYW51bWVyaWNTb3J0KGE6IHN0cmluZyB8IG51bWJlciwgYjogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyO1xuICBwdWJsaWMgc3RhdGljIGFscGhhbnVtZXJpY1NvcnQoYTogc3RyaW5nIHwgbnVtYmVyLCBiOiBzdHJpbmcgfCBudW1iZXIsIGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycpOiBudW1iZXI7XG5cbiAgLyoqIE3DqXRvZG8gZGUgb3JkZW5hw6fDo28gYWxmYW51bcOpcmljbyBjb20gcG9zc2liaWxpZGFkZSBkZSBkaXJlw6fDo28gKi9cbiAgcHVibGljIHN0YXRpYyBhbHBoYW51bWVyaWNTb3J0KGE6IHN0cmluZyB8IG51bWJlciwgYjogc3RyaW5nIHwgbnVtYmVyLCBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycpOiBudW1iZXIge1xuICAgIGNvbnN0IHJlZ2V4ID0gLyhcXGQrfFxcRCspL2c7XG5cbiAgICBjb25zdCBzdHJpbmdBID0gdGhpcy5wcm9wZXJ0eUlzTnVsbFVuZGVmaW5lZE9yRW1wdHkoYSkgPyBcIlwiIDogYTtcbiAgICBjb25zdCBzdHJpbmdCID0gdGhpcy5wcm9wZXJ0eUlzTnVsbFVuZGVmaW5lZE9yRW1wdHkoYikgPyBcIlwiIDogYjtcblxuICAgIGNvbnN0IGFQYXJ0cyA9IHN0cmluZ0EudG9TdHJpbmcoKS5tYXRjaChyZWdleCkgfHwgW107XG4gICAgY29uc3QgYlBhcnRzID0gc3RyaW5nQi50b1N0cmluZygpLm1hdGNoKHJlZ2V4KSB8fCBbXTtcblxuICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KGFQYXJ0cy5sZW5ndGgsIGJQYXJ0cy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgYVBhcnQgPSBhUGFydHNbaV0gfHwgXCJcIjtcbiAgICAgIGNvbnN0IGJQYXJ0ID0gYlBhcnRzW2ldIHx8IFwiXCI7XG5cbiAgICAgIGNvbnN0IGFJc051bWJlciA9ICFpc05hTihOdW1iZXIoYVBhcnQpKTtcbiAgICAgIGNvbnN0IGJJc051bWJlciA9ICFpc05hTihOdW1iZXIoYlBhcnQpKTtcblxuICAgICAgaWYgKGFJc051bWJlciAmJiBiSXNOdW1iZXIpIHtcbiAgICAgICAgY29uc3QgbnVtQ29tcGFyZSA9IE51bWJlcihhUGFydCkgLSBOdW1iZXIoYlBhcnQpO1xuICAgICAgICBpZiAobnVtQ29tcGFyZSAhPT0gMCkgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ2FzYycgPyBudW1Db21wYXJlIDogLW51bUNvbXBhcmU7XG4gICAgICB9IGVsc2UgaWYgKGFJc051bWJlcikge1xuICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09PSAnYXNjJyA/IC0xIDogMTtcbiAgICAgIH0gZWxzZSBpZiAoYklzTnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT09ICdhc2MnID8gMSA6IC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RyQ29tcGFyZSA9IGFQYXJ0LmxvY2FsZUNvbXBhcmUoYlBhcnQpO1xuICAgICAgICBpZiAoc3RyQ29tcGFyZSAhPT0gMCkgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ2FzYycgPyBzdHJDb21wYXJlIDogLXN0ckNvbXBhcmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgLy8gI2VuZHJlZ2lvbiBPUkRFTkHDh8ODT1xuXG5cblxuXG4gIC8qKiBSZXRvcm5hIHNlIGEgdmFyacOhdmVsIGluZm9ybWFkYSDDqSA9PT0gbnVsbCB8fCB1bmRlZmluZWQgfHwgXCJcIiAoc3RyaW5nIHZhemlhKSAqL1xuICBwdWJsaWMgc3RhdGljIHByb3BlcnR5SXNOdWxsVW5kZWZpbmVkT3JFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IFwiXCIpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBSZXRvcm5hIHNlIGEgdmFyacOhdmVsIGluZm9ybWFkYSDDqSA9PT0gbnVsbCB8fCBcIlwiIChzdHJpbmcgdmF6aWEpICovXG4gIHB1YmxpYyBzdGF0aWMgcHJvcGVydHlJc051bGxPckVtcHR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IFwiXCIpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBSZXRvcm5hIHNlIGEgdmFyacOhdmVsIGluZm9ybWFkYSDDqSA9PT0gbnVsbCB8fCB1bmRlZmluZWQgfHwgXCIgXCIgKHN0cmluZyBjb20gdW0gZXNwYcOnbyBlbSBicmFuY28pICovXG4gIHB1YmxpYyBzdGF0aWMgcHJvcGVydHlJc051bGxVbmRlZmluZWRPcldoaXRlc3BhY2UodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBcIiBcIikgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIFJldG9ybmEgc2UgYSB2YXJpw6F2ZWwgaW5mb3JtYWRhIMOpID09PSBudWxsIHx8IFwiIFwiIChzdHJpbmcgY29tIHVtIGVzcGHDp28gZW0gYnJhbmNvKSAqL1xuICBwdWJsaWMgc3RhdGljIHByb3BlcnR5SXNOdWxsT3JXaGl0ZXNwYWNlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IFwiIFwiKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxufVxuIl19
|