@rosen-bridge/watcher-data-extractor 12.2.1 → 12.2.2-a25ac382
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/actions/collateralAction.d.ts.map +1 -1
- package/dist/actions/collateralAction.js +4 -4
- package/dist/actions/commitmentAction.d.ts +1 -1
- package/dist/actions/commitmentAction.d.ts.map +1 -1
- package/dist/actions/commitmentAction.js +3 -3
- package/dist/actions/{EventTriggerAction.d.ts → eventTriggerAction.d.ts} +4 -4
- package/dist/actions/{EventTriggerAction.d.ts.map → eventTriggerAction.d.ts.map} +1 -1
- package/dist/actions/{EventTriggerAction.js → eventTriggerAction.js} +4 -4
- package/dist/actions/permitAction.d.ts +1 -1
- package/dist/actions/permitAction.d.ts.map +1 -1
- package/dist/actions/permitAction.js +3 -3
- package/dist/entities/{CollateralEntity.d.ts → collateralEntity.d.ts} +1 -1
- package/dist/entities/{CollateralEntity.d.ts.map → collateralEntity.d.ts.map} +1 -1
- package/dist/entities/{CollateralEntity.js → collateralEntity.js} +2 -2
- package/dist/entities/{CommitmentEntity.d.ts → commitmentEntity.d.ts} +1 -1
- package/dist/entities/{CommitmentEntity.d.ts.map → commitmentEntity.d.ts.map} +1 -1
- package/dist/entities/{CommitmentEntity.js → commitmentEntity.js} +3 -3
- package/dist/entities/{EventTriggerEntity.d.ts → eventTriggerEntity.d.ts} +1 -1
- package/dist/entities/{EventTriggerEntity.d.ts.map → eventTriggerEntity.d.ts.map} +1 -1
- package/dist/entities/{EventTriggerEntity.js → eventTriggerEntity.js} +4 -4
- package/dist/entities/{PermitEntity.d.ts → permitEntity.d.ts} +1 -1
- package/dist/entities/{PermitEntity.d.ts.map → permitEntity.d.ts.map} +1 -1
- package/dist/entities/{PermitEntity.js → permitEntity.js} +2 -2
- package/dist/extractor/collateralExtractor.d.ts +1 -1
- package/dist/extractor/collateralExtractor.d.ts.map +1 -1
- package/dist/extractor/collateralExtractor.js +3 -3
- package/dist/extractor/commitmentExtractor.d.ts +2 -2
- package/dist/extractor/commitmentExtractor.d.ts.map +1 -1
- package/dist/extractor/commitmentExtractor.js +2 -2
- package/dist/extractor/{EventTriggerExtractor.d.ts → eventTriggerExtractor.d.ts} +5 -5
- package/dist/extractor/{EventTriggerExtractor.d.ts.map → eventTriggerExtractor.d.ts.map} +1 -1
- package/dist/extractor/{EventTriggerExtractor.js → eventTriggerExtractor.js} +5 -5
- package/dist/extractor/permitExtractor.d.ts +71 -71
- package/dist/extractor/permitExtractor.d.ts.map +1 -1
- package/dist/extractor/permitExtractor.js +5 -5
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -7
- package/dist/migrations/postgres/1706610773315-migration.d.ts.map +1 -1
- package/dist/migrations/postgres/1706610773315-migration.js +1 -1
- package/dist/migrations/sqlite/1706610773176-migration.d.ts.map +1 -1
- package/dist/migrations/sqlite/1706610773176-migration.js +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +3 -3
- package/package.json +19 -20
|
@@ -33,7 +33,7 @@ __decorate([
|
|
|
33
33
|
__metadata("design:type", String)
|
|
34
34
|
], PermitEntity.prototype, "boxId", void 0);
|
|
35
35
|
__decorate([
|
|
36
|
-
Column({ type: '
|
|
36
|
+
Column({ type: 'varchar' }),
|
|
37
37
|
__metadata("design:type", String)
|
|
38
38
|
], PermitEntity.prototype, "boxSerialized", void 0);
|
|
39
39
|
__decorate([
|
|
@@ -65,4 +65,4 @@ PermitEntity = __decorate([
|
|
|
65
65
|
Unique(['boxId', 'extractor'])
|
|
66
66
|
], PermitEntity);
|
|
67
67
|
export default PermitEntity;
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWl0RW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2VudGl0aWVzL3Blcm1pdEVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixzQkFBc0IsRUFDdEIsTUFBTSxHQUNQLE1BQU0sZ0NBQWdDLENBQUM7QUFJeEMsSUFBTSxZQUFZLEdBQWxCLE1BQU0sWUFBWTtJQUVoQixFQUFFLENBQVM7SUFHWCxTQUFTLENBQVM7SUFHbEIsS0FBSyxDQUFTO0lBR2QsYUFBYSxDQUFTO0lBR3RCLEdBQUcsQ0FBUztJQUdaLEtBQUssQ0FBUztJQUdkLE1BQU0sQ0FBUztJQUdmLFVBQVUsQ0FBaUI7SUFHM0IsV0FBVyxDQUFpQjtJQUc1QixJQUFJLENBQVM7Q0FDZCxDQUFBO0FBNUJDO0lBREMsc0JBQXNCLEVBQUU7O3dDQUNkO0FBR1g7SUFEQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7OytDQUNWO0FBR2xCO0lBREMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDOzsyQ0FDZDtBQUdkO0lBREMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDOzttREFDTjtBQUd0QjtJQURDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzs7eUNBQ2hCO0FBR1o7SUFEQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7OzJDQUNkO0FBR2Q7SUFEQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7OzRDQUNUO0FBR2Y7SUFEQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs7Z0RBQ2Q7QUFHM0I7SUFEQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQzs7aURBQ1o7QUFHNUI7SUFEQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7OzBDQUNmO0FBN0JULFlBQVk7SUFGakIsTUFBTSxDQUFDLGVBQWUsQ0FBQztJQUN2QixNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7R0FDekIsWUFBWSxDQThCakI7QUFFRCxlQUFlLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbHVtbixcbiAgRW50aXR5LFxuICBQcmltYXJ5R2VuZXJhdGVkQ29sdW1uLFxuICBVbmlxdWUsXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5cbkBFbnRpdHkoJ3Blcm1pdF9lbnRpdHknKVxuQFVuaXF1ZShbJ2JveElkJywgJ2V4dHJhY3RvciddKVxuY2xhc3MgUGVybWl0RW50aXR5IHtcbiAgQFByaW1hcnlHZW5lcmF0ZWRDb2x1bW4oKVxuICBpZDogbnVtYmVyO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiAndmFyY2hhcicgfSlcbiAgZXh0cmFjdG9yOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6ICd2YXJjaGFyJyB9KVxuICBib3hJZDogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiAndmFyY2hhcicgfSlcbiAgYm94U2VyaWFsaXplZDogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiAndmFyY2hhcicgfSlcbiAgV0lEOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6ICd2YXJjaGFyJyB9KVxuICBibG9jazogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiAnaW50JyB9KVxuICBoZWlnaHQ6IG51bWJlcjtcblxuICBAQ29sdW1uKHsgbnVsbGFibGU6IHRydWUsIHR5cGU6ICd0ZXh0JyB9KVxuICBzcGVuZEJsb2NrPzogc3RyaW5nIHwgbnVsbDtcblxuICBAQ29sdW1uKHsgbnVsbGFibGU6IHRydWUsIHR5cGU6ICdpbnQnIH0pXG4gIHNwZW5kSGVpZ2h0PzogbnVtYmVyIHwgbnVsbDtcblxuICBAQ29sdW1uKHsgdHlwZTogJ3ZhcmNoYXInIH0pXG4gIHR4SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgUGVybWl0RW50aXR5O1xuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
|
|
1
2
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
2
3
|
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
3
4
|
import { Block, BlockInfo, Transaction } from '@rosen-bridge/scanner-interfaces';
|
|
4
|
-
import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
|
|
5
5
|
import CollateralAction from '../actions/collateralAction';
|
|
6
6
|
export declare class CollateralExtractor extends AbstractExtractor<Transaction> {
|
|
7
7
|
private readonly id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collateralExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/collateralExtractor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"collateralExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/collateralExtractor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EACL,KAAK,EACL,SAAS,EAET,WAAW,EACZ,MAAM,kCAAkC,CAAC;AAG1C,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAM3D,qBAAa,mBAAoB,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IAMnE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,OAAO,CAAC,WAAW,CAAC;gBAGD,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACvC,WAAW,EAAE,MAAM,EACF,MAAM,GAAE,cAAkC;IAU7D;;;;OAIG;IACH,KAAK,QAAO,MAAM,CAAY;IAE9B;;;;;;;OAOG;IACH,mBAAmB,GACjB,KAAK,WAAW,EAAE,EAClB,OAAO,KAAK,KACX,OAAO,CAAC,OAAO,CAAC,CAoCjB;IAEF;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe,CAOrB;IAEF;;;;;;;OAOG;IACH,SAAS,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAE7C;IAEF;;;;;;OAMG;IACH,eAAe,GAAU,cAAc,SAAS,KAAG,OAAO,CAAC,IAAI,CAAC,CAmC9D;IAEF;;;;;;;;OAQG;YACW,uBAAuB;IAsDrC;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB,CAiC9B;IAEF;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB,CAgD3B;CACH"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
2
|
-
import ergoExplorerClientFactory from '@rosen-clients/ergo-explorer';
|
|
3
1
|
import * as ergoLib from 'ergo-lib-wasm-nodejs';
|
|
4
2
|
import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
|
|
3
|
+
import { DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
4
|
+
import ergoExplorerClientFactory from '@rosen-clients/ergo-explorer';
|
|
5
5
|
import CollateralAction from '../actions/collateralAction';
|
|
6
6
|
import { DefaultApiLimit } from '../constants';
|
|
7
7
|
import { JsonBI, uint8ArrayToHex } from '../utils';
|
|
@@ -233,4 +233,4 @@ export class CollateralExtractor extends AbstractExtractor {
|
|
|
233
233
|
};
|
|
234
234
|
};
|
|
235
235
|
}
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGF0ZXJhbEV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvY29sbGF0ZXJhbEV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8seUJBQWlDLE1BQU0sOEJBQThCLENBQUM7QUFDN0UsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQVFoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVyRSxPQUFPLGdCQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHbkQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGlCQUE4QjtJQU1sRDtJQUNBO0lBQ0E7SUFDQTtJQUVBO0lBVkYsUUFBUSxDQUFTO0lBQ3pCLE1BQU0sQ0FBbUI7SUFDMUIsV0FBVyxDQUFDO0lBRXBCLFlBQ21CLEVBQVUsRUFDVixNQUFjLEVBQ2QsT0FBZSxFQUNmLFVBQXNCLEVBQ3ZDLFdBQW1CLEVBQ0YsU0FBeUIsSUFBSSxXQUFXLEVBQUU7UUFFM0QsS0FBSyxFQUFFLENBQUM7UUFQUyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRXRCLFdBQU0sR0FBTixNQUFNLENBQW9DO1FBRzNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUN0RCxZQUFZLEVBQUU7YUFDZCxlQUFlLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMs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LCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5LCB7IFYxIH0gZnJvbSAnQHJvc2VuLWNsaWVudHMvZXJnby1leHBsb3Jlcic7XG5pbXBvcnQgKiBhcyBlcmdvTGliIGZyb20gJ2VyZ28tbGliLXdhc20tbm9kZWpzJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHtcbiAgQmxvY2ssXG4gIEJsb2NrSW5mbyxcbiAgT3V0cHV0Qm94LFxuICBUcmFuc2FjdGlvbixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgQWJzdHJhY3RFeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWV4dHJhY3Rvcic7XG5cbmltcG9ydCBDb2xsYXRlcmFsQWN0aW9uIGZyb20gJy4uL2FjdGlvbnMvY29sbGF0ZXJhbEFjdGlvbic7XG5pbXBvcnQgeyBEZWZhdWx0QXBpTGltaXQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRXh0cmFjdGVkQ29sbGF0ZXJhbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0cmFjdGVkQ29sbGF0ZXJhbCc7XG5pbXBvcnQgeyBKc29uQkksIHVpbnQ4QXJyYXlUb0hleCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFNwZW5kSW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgQ29sbGF0ZXJhbEV4dHJhY3RvciBleHRlbmRzIEFic3RyYWN0RXh0cmFjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXJnb1RyZWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYWN0aW9uOiBDb2xsYXRlcmFsQWN0aW9uO1xuICBwcml2YXRlIGV4cGxvcmVyQXBpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF3Y05mdDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWRkcmVzczogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICBleHBsb3JlclVybDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlciA9IG5ldyBEdW1teUxvZ2dlcigpLFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZXJnb1RyZWUgPSBlcmdvTGliLkFkZHJlc3MuZnJvbV9iYXNlNTgodGhpcy5hZGRyZXNzKVxuICAgICAgLnRvX2VyZ29fdHJlZSgpXG4gICAgICAudG9fYmFzZTE2X2J5dGVzKCk7XG4gICAgdGhpcy5hY3Rpb24gPSBuZXcgQ29sbGF0ZXJhbEFjdGlvbih0aGlzLmRhdGFTb3VyY2UsIHRoaXMubG9nZ2VyKTtcbiAgICB0aGlzLmV4cGxvcmVyQXBpID0gZXJnb0V4cGxvcmVyQ2xpZW50RmFjdG9yeShleHBsb3JlclVybCk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGlkIGZvciBleHRyYWN0b3IuIFRoaXMgaWQgbXVzdCBiZSB1bmlxdWUgb3ZlciBhbGwgZXh0cmFjdG9ycy5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0SWQgPSAoKTogc3RyaW5nID0+IHRoaXMuaWQ7XG5cbiAgLyoqXG4gICAqIHByb2Nlc3MgYSBsaXN0IG9mIHRyYW5zYWN0aW9ucyBhbmQgc3RvcmUgY29sbGF0ZXJhbCBib3ggZGV0YWlsc1xuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uW119IHR4cyBsaXN0IG9mIHRyYW5zYWN0aW9uIGZvciBibG9ja1xuICAgKiBAcGFyYW0ge0Jsb2NrfSBibG9jayBibG9jayBpZCBmb3IgdHJhbnNhY3Rpb25zIGFzIGhleCBlbmNvZGVkXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Ym9vbGVhbj59IFByb21pc2U8Ym9vbGVhbj4gaWYgbm8gZXJyb3Igb2NjdXJyZWQgcmV0dXJuXG4gICAqIHRydWUuIG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlXG4gICAqL1xuICBwcm9jZXNzVHJhbnNhY3Rpb25zID0gYXN5bmMgKFxuICAgIHR4czogVHJhbnNhY3Rpb25bXSxcbiAgICBibG9jazogQmxvY2ssXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBib3hlczogQXJyYXk8RXh0cmFjdGVkQ29sbGF0ZXJhbD4gPSBbXTtcbiAgICAgIGNvbnN0IHNwZW50SW5mb3M6IEFycmF5PFNwZW5kSW5mbz4gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgdHggb2YgdHhzKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dEJveCA9IHR4Lm91dHB1dHMuYXQoMSk7XG4gICAgICAgIGlmIChvdXRwdXRCb3ggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNDb2xsYXRlcmFsQm94KG91dHB1dEJveCkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleHRyYWN0ZWRDb2xsYXRlcmFsID0gdGhpcy50b0V4dHJhY3RlZENvbGxhdGVyYWwoXG4gICAgICAgICAgb3V0cHV0Qm94LFxuICAgICAgICAgIGJsb2NrLmhhc2gsXG4gICAgICAgICAgYmxvY2suaGVpZ2h0LFxuICAgICAgICApO1xuICAgICAgICBpZiAoZXh0cmFjdGVkQ29sbGF0ZXJhbCkgYm94ZXMucHVzaChleHRyYWN0ZWRDb2xsYXRlcmFsKTtcblxuICAgICAgICBjb25zdCBpbnB1dENvbGxhdGVyYWwgPSB0eC5pbnB1dHMuYXQoMSk7XG4gICAgICAgIGlmIChpbnB1dENvbGxhdGVyYWwgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc3BlbnRJbmZvcy5wdXNoKHsgdHhJZDogdHguaWQsIGJveElkOiBpbnB1dENvbGxhdGVyYWwuYm94SWQgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChib3hlcy5sZW5ndGggPiAwKVxuICAgICAgICBhd2FpdCB0aGlzLmFjdGlvbi5zdG9yZUNvbGxhdGVyYWxzKGJveGVzLCBibG9jaywgdGhpcy5nZXRJZCgpKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9uLnNwZW5kQ29sbGF0ZXJhbHMoc3BlbnRJbmZvcywgYmxvY2ssIHRoaXMuZ2V0SWQoKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBFcnJvciBpbiBzdG9yaW5nIGNvbGxhdGVyYWxzIG9mIHRoZSBibG9jayAke2Jsb2NrfTogJHtlfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjaGVja3MgaWYgdGhlIHBhc3NlZCBib3ggaXMgYSBjb2xsYXRlcmFsIGJveFxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge091dHB1dEJveH0gb3V0cHV0Qm94XG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBDb2xsYXRlcmFsRXh0cmFjdG9yXG4gICAqL1xuICBwcml2YXRlIGlzQ29sbGF0ZXJhbEJveCA9IChvdXRwdXRCb3g6IFYxLk91dHB1dEluZm8gfCBPdXRwdXRCb3gpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBhd2NOZnQgPSBvdXRwdXRCb3guYXNzZXRzPy5hdCgwKT8udG9rZW5JZDtcbiAgICByZXR1cm4gKFxuICAgICAgYXdjTmZ0ICE9IHVuZGVmaW5lZCAmJlxuICAgICAgYXdjTmZ0ID09PSB0aGlzLmF3Y05mdCAmJlxuICAgICAgb3V0cHV0Qm94LmVyZ29UcmVlID09PSB0aGlzLmVyZ29UcmVlXG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogRGVsZXRlIGFsbCBjb2xsYXRlcmFscyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXNzZWQgYmxvY2sgYW5kIGV4dHJhY3RvciBhbmRcbiAgICogdXBkYXRlIGFsbCBjb2xsYXRlcmFscyBzcGVudCBpbiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoYXNoXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqIEBtZW1iZXJvZiBDb2xsYXRlcmFsRXh0cmFjdG9yXG4gICAqL1xuICBmb3JrQmxvY2sgPSBhc3luYyAoaGFzaDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgdGhpcy5hY3Rpb24uZGVsZXRlQmxvY2soaGFzaCwgdGhpcy5nZXRJZCgpKTtcbiAgfTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGRhdGFiYXNlIHdpdGggb2xkZXIgY29sbGF0ZXJhbHNcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluaXRpYWxIZWlnaHRcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxFeHRyYWN0b3JcbiAgICovXG4gIGluaXRpYWxpemVCb3hlcyA9IGFzeW5jIChpbml0aWFsQmxvY2s6IEJsb2NrSW5mbyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IHVuc3BlbnRDb2xsYXRlcmFscyA9IGF3YWl0IHRoaXMuZ2V0QWxsVW5zcGVudENvbGxhdGVyYWxzKFxuICAgICAgaW5pdGlhbEJsb2NrLmhlaWdodCxcbiAgICApO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgYHVuc3BlbnQgY29sbGF0ZXJhbCBib3ggaW5mbyB3aXRoIGZvbGxvd2luZyBJRHMgZ290dGVuIGZvcm0gRXJnbyBuZXR3b3JrOiBbJHt1bnNwZW50Q29sbGF0ZXJhbHNcbiAgICAgICAgLm1hcCgoYm94KSA9PiBib3guYm94SWQpXG4gICAgICAgIC5qb2luKCcsICcpfV1gLFxuICAgICk7XG5cbiAgICBjb25zdCBzdG9yZWRVbnNwZW50Q29sbGF0ZXJhbEJveElkcyA9XG4gICAgICBhd2FpdCB0aGlzLmFjdGlvbi5nZXRVbnNwZW50Q29sbGF0ZXJhbEJveElkcyh0aGlzLmdldElkKCkpO1xuICAgIGNvbnN0IHVuc3BlbnRDb2xsYXRlcmFsQm94SWRzID0gbmV3IFNldChcbiAgICAgIHVuc3BlbnRDb2xsYXRlcmFscy5tYXAoKGJveCkgPT4gYm94LmJveElkKSxcbiAgICApO1xuICAgIGF3YWl0IHRoaXMudGlkeVVwU3RvcmVkQ29sbGF0ZXJhbHMoXG4gICAgICBpbml0aWFsQmxvY2suaGVpZ2h0LFxuICAgICAgc3RvcmVkVW5zcGVudENvbGxhdGVyYWxCb3hJZHMuZmlsdGVyKFxuICAgICAgICAoYm94SWQpID0+ICF1bnNwZW50Q29sbGF0ZXJhbEJveElkcy5oYXMoYm94SWQpLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBjb2xsYXRlcmFsIG9mIHVuc3BlbnRDb2xsYXRlcmFscykge1xuICAgICAgaWYgKHN0b3JlZFVuc3BlbnRDb2xsYXRlcmFsQm94SWRzLmluY2x1ZGVzKGNvbGxhdGVyYWwuYm94SWQpKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGB1cGRhdGluZyB1bnNwZW50IGNvbGxhdGVyYWwgd2l0aCBib3hJZD1bJHtjb2xsYXRlcmFsLmJveElkfV0gYXQgaW5pdGlhbGl6YXRpb24gcGhhc2VgLFxuICAgICAgICApO1xuICAgICAgICBhd2FpdCB0aGlzLmFjdGlvbi51cGRhdGVDb2xsYXRlcmFsKGNvbGxhdGVyYWwsIHRoaXMuZ2V0SWQoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgaW5zZXJ0aW5nIHVuc3BlbnQgY29sbGF0ZXJhbCB3aXRoIGJveElkPVske2NvbGxhdGVyYWwuYm94SWR9XSB0byBkYXRhYmFzZSBhdCBpbml0aWFsaXphdGlvbiBwaGFzZWAsXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uLmluc2VydENvbGxhdGVyYWwoY29sbGF0ZXJhbCwgdGhpcy5nZXRJZCgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIHJlbW92ZXMgb3IgdXBkYXRlcyBzdG9yZWQgY29sbGF0ZXJhbCBib3hlcyBiZWZvcmUgaW5pdGlhbGl6aW5nIGJveGVzXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbml0aWFsSGVpZ2h0XG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNvbGxhdGVyYWxCb3hJZHNcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxFeHRyYWN0b3JcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdGlkeVVwU3RvcmVkQ29sbGF0ZXJhbHMoXG4gICAgaW5pdGlhbEhlaWdodDogbnVtYmVyLFxuICAgIGNvbGxhdGVyYWxCb3hJZHM6IHN0cmluZ1tdLFxuICApIHtcbiAgICBmb3IgKGNvbnN0IGJveElkIG9mIGNvbGxhdGVyYWxCb3hJZHMpIHtcbiAgICAgIGxldCBib3hJbmZvOiBWMS5PdXRwdXRJbmZvO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYm94SW5mbyA9IGF3YWl0IHRoaXMuZXhwbG9yZXJBcGkudjEuZ2V0QXBpVjFCb3hlc1AxKGJveElkKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKChlIGFzIHsgcmVzcG9uc2U6IHsgc3RhdHVzOiBudW1iZXIgfSB9KS5yZXNwb25zZT8uc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFjdGlvbi5kZWxldGVDb2xsYXRlcmFsKGJveElkLCB0aGlzLmdldElkKCkpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBzb21ldGhpbmcgd2VudCB3cm9uZyB3aGVuIHRyeWluZyB0byBnZXQgYm94PVske2JveElkfV0gZnJvbSBFcmdvIG5ldHdvcms6ICR7XG4gICAgICAgICAgICAgIChlIGFzIEVycm9yKS5tZXNzYWdlXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChib3hJbmZvPy5zcGVudFRyYW5zYWN0aW9uSWQgIT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uSW5mbzogVjEuVHJhbnNhY3Rpb25JbmZvID1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZXhwbG9yZXJBcGkudjEuZ2V0QXBpVjFUcmFuc2FjdGlvbnNQMShcbiAgICAgICAgICAgICAgYm94SW5mby5zcGVudFRyYW5zYWN0aW9uSWQsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKHRyYW5zYWN0aW9uSW5mby5pbmNsdXNpb25IZWlnaHQgPCBpbml0aWFsSGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgICAgYGNvbGxhdGVyYWwgd2l0aCBib3hJZD1bJHtib3hJZH1dIGlzIHNwZW50IGFuZCBpcyBiZWluZyB1cGRhdGVkIHdpdGggc3BlbmRIZWlnaHQ9WyR7dHJhbnNhY3Rpb25JbmZvLmluY2x1c2lvbkhlaWdodH1dIGFuZCBzcGVuZEJsb2NrPVske3RyYW5zYWN0aW9uSW5mby5ibG9ja0lkfV1gLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb24udXBkYXRlQ29sbGF0ZXJhbChcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJveElkOiBib3hJZCxcbiAgICAgICAgICAgICAgICBzcGVuZEhlaWdodDogdHJhbnNhY3Rpb25JbmZvLmluY2x1c2lvbkhlaWdodCxcbiAgICAgICAgICAgICAgICBzcGVuZEJsb2NrOiB0cmFuc2FjdGlvbkluZm8uYmxvY2tJZCxcbiAgICAgICAgICAgICAgICBzcGVuZFR4SWQ6IHRyYW5zYWN0aW9uSW5mby5pZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy5nZXRJZCgpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2hlbiB0cnlpbmcgdG8gZ2V0IHRyYW5zYWN0aW9uPVske1xuICAgICAgICAgICAgICBib3hJbmZvLnNwZW50VHJhbnNhY3Rpb25JZFxuICAgICAgICAgICAgfV0gZnJvbSBFcmdvIG5ldHdvcms6ICR7KGUgYXMgRXJyb3IpPy5tZXNzYWdlfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBnZXRzIGFsbCB1bnNwZW50IGNvbGxhdGVyYWxzIGZyb20gRXJnbyBleHBsb3JlciBhcGlcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluaXRpYWxIZWlnaHRcbiAgICogQHJldHVybiB7UHJvbWlzZTxBcnJheTxFeHRyYWN0ZWRDb2xsYXRlcmFsPj59XG4gICAqIEBtZW1iZXJvZiBDb2xsYXRlcmFsRXh0cmFjdG9yXG4gICAqL1xuICBwcml2YXRlIGdldEFsbFVuc3BlbnRDb2xsYXRlcmFscyA9IGFzeW5jIChcbiAgICBpbml0aWFsSGVpZ2h0OiBudW1iZXIsXG4gICk6IFByb21pc2U8QXJyYXk8RXh0cmFjdGVkQ29sbGF0ZXJhbD4+ID0+IHtcbiAgICBjb25zdCBleHRyYWN0ZWRCb3hlczogQXJyYXk8RXh0cmFjdGVkQ29sbGF0ZXJhbD4gPSBbXTtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBsZXQgdG90YWwgPSAxO1xuICAgIHdoaWxlIChvZmZzZXQgPCB0b3RhbCkge1xuICAgICAgY29uc3QgYm94ZXMgPSBhd2FpdCB0aGlzLmV4cGxvcmVyQXBpLnYxLmdldEFwaVYxQm94ZXNVbnNwZW50QnllcmdvdHJlZVAxKFxuICAgICAgICB0aGlzLmVyZ29UcmVlLFxuICAgICAgICB7IG9mZnNldDogb2Zmc2V0LCBsaW1pdDogRGVmYXVsdEFwaUxpbWl0IH0sXG4gICAgICApO1xuXG4gICAgICBpZiAoIWJveGVzLml0ZW1zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwbG9yZXIgYXBpIG91dHB1dCBpdGVtcyBzaG91bGQgbm90IGJlIHVuZGVmaW5lZC4nKTtcbiAgICAgIH1cblxuICAgICAgZXh0cmFjdGVkQm94ZXMucHVzaChcbiAgICAgICAgLi4uYm94ZXMuaXRlbXNcbiAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgKGJveCkgPT5cbiAgICAgICAgICAgICAgYm94LmNyZWF0aW9uSGVpZ2h0ICYmXG4gICAgICAgICAgICAgIGJveC5jcmVhdGlvbkhlaWdodCA8IGluaXRpYWxIZWlnaHQgJiZcbiAgICAgICAgICAgICAgdGhpcy5pc0NvbGxhdGVyYWxCb3goYm94KSxcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcCgoYm94KSA9PlxuICAgICAgICAgICAgdGhpcy50b0V4dHJhY3RlZENvbGxhdGVyYWwoYm94LCBib3guYmxvY2tJZCwgYm94LnNldHRsZW1lbnRIZWlnaHQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuZmlsdGVyKChkYXRhKTogZGF0YSBpcyBFeHRyYWN0ZWRDb2xsYXRlcmFsID0+IGRhdGEgIT0gdW5kZWZpbmVkKSxcbiAgICAgICk7XG4gICAgICB0b3RhbCA9IGJveGVzLnRvdGFsO1xuICAgICAgb2Zmc2V0ICs9IERlZmF1bHRBcGlMaW1pdDtcbiAgICB9XG4gICAgcmV0dXJuIGV4dHJhY3RlZEJveGVzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjb252ZXJ0cyBvdXRwdXQgYm94IGluZm9ybWF0aW9uIHRvIGFuIEV4dHJhY3RlZENvbGxhdGVyYWwgb2JqZWN0XG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7KE91dHB1dEluZm8gfCBPdXRwdXRCb3gpfSBib3hcbiAgICogQHJldHVybiB7RXh0cmFjdGVkQ29sbGF0ZXJhbH1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxFeHRyYWN0b3JcbiAgICovXG4gIHByaXZhdGUgdG9FeHRyYWN0ZWRDb2xsYXRlcmFsID0gKFxuICAgIGJveDogVjEuT3V0cHV0SW5mbyB8IE91dHB1dEJveCxcbiAgICBibG9ja0lkOiBzdHJpbmcsXG4gICAgYmxvY2tIZWlnaHQ6IG51bWJlcixcbiAgKTogRXh0cmFjdGVkQ29sbGF0ZXJhbCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgZXJnb091dHB1dEJveCA9IGVyZ29MaWIuRXJnb0JveC5mcm9tX2pzb24oSnNvbkJJLnN0cmluZ2lmeShib3gpKTtcblxuICAgIGNvbnN0IHI0ID0gZXJnb091dHB1dEJveFxuICAgICAgLnJlZ2lzdGVyX3ZhbHVlKGVyZ29MaWIuTm9uTWFuZGF0b3J5UmVnaXN0ZXJJZC5SNClcbiAgICAgID8udG9fYnl0ZV9hcnJheSgpO1xuICAgIGlmIChyNCA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oXG4gICAgICAgIGBjb2xsYXRlcmFsIGJveCB3aXRoIGJveElkPVske2JveC5ib3hJZH1dIGhhcyBhbiBpbnZhbGlkIFI0IHJlZ2lzdGVyYCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCB3aWQgPSB1aW50OEFycmF5VG9IZXgocjQpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgYEV4dHJhY3RlZCBXSUQ9WyR7d2lkfV0gZnJvbSBSNCByZWdpc3RlciBvZiBib3g9WyR7Ym94LmJveElkfV1gLFxuICAgICk7XG5cbiAgICBjb25zdCByNSA9IGVyZ29PdXRwdXRCb3hcbiAgICAgIC5yZWdpc3Rlcl92YWx1ZShlcmdvTGliLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjUpXG4gICAgICA/LnRvX2k2NCgpXG4gICAgICAudG9fc3RyKCk7XG5cbiAgICBpZiAocjUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICBgY29sbGF0ZXJhbCBib3ggd2l0aCBib3hJZD1bJHtib3guYm94SWR9XSBoYXMgYW4gaW52YWxpZCBSNSByZWdpc3RlcmAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3Qgcnd0Q291bnQgPSBCaWdJbnQocjUpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgYEV4dHJhY3RlZCByd3RDb3VudD1bJHtyd3RDb3VudH1dIGZyb20gUjUgcmVnaXN0ZXIgb2YgYm94PVske2JveC5ib3hJZH1dYCxcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJveElkOiBib3guYm94SWQsXG4gICAgICBib3hTZXJpYWxpemVkOiBCdWZmZXIuZnJvbShcbiAgICAgICAgZXJnb091dHB1dEJveC5zaWdtYV9zZXJpYWxpemVfYnl0ZXMoKSxcbiAgICAgICkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgd2lkOiB3aWQsXG4gICAgICByd3RDb3VudDogcnd0Q291bnQsXG4gICAgICB0eElkOiBib3gudHJhbnNhY3Rpb25JZCxcbiAgICAgIGJsb2NrOiBibG9ja0lkLFxuICAgICAgaGVpZ2h0OiBibG9ja0hlaWdodCxcbiAgICB9O1xuICB9O1xufVxuIl19
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGF0ZXJhbEV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvY29sbGF0ZXJhbEV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFRNUUsT0FBTyx5QkFBaUMsTUFBTSw4QkFBOEIsQ0FBQztBQUU3RSxPQUFPLGdCQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbkQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGlCQUE4QjtJQU1sRDtJQUNBO0lBQ0E7SUFDQTtJQUVBO0lBVkYsUUFBUSxDQUFTO0lBQ3pCLE1BQU0sQ0FBbUI7SUFDMUIsV0FBVyxDQUFDO0lBRXBCLFlBQ21CLEVBQVUsRUFDVixNQUFjLEVBQ2QsT0FBZSxFQUNmLFVBQXNCLEVBQ3ZDLFdBQW1CLEVBQ0YsU0FBeUIsSUFBSSxXQUFXLEVBQUU7UUFFM0QsS0FBSyxFQUFFLENBQUM7UUFQUyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRXRCLFdBQU0sR0FBTixNQUFNLENBQW9DO1FBRzNELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUN0RCxZQUFZLEVBQUU7YUFDZCxlQUFlLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssR0FBRyxHQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBRTlCOzs7Ozs7O09BT0c7SUFDSCxtQkFBbUIsR0FBRyxLQUFLLEVBQ3pCLEdBQWtCLEVBQ2xCLEtBQVksRUFDTSxFQUFFO1FBQ3BCLElBQUksQ0FBQztZQUNILE1BQU0sS0FBSyxHQUErQixFQUFFLENBQUM7WUFDN0MsTUFBTSxVQUFVLEdBQXFCLEVBQUUsQ0FBQztZQUN4QyxLQUFLLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxTQUFTLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQzNCLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUNyQyxTQUFTO2dCQUNYLENBQUM7Z0JBQ0QsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQ3BELFNBQVMsRUFDVCxLQUFLLENBQUMsSUFBSSxFQUNWLEtBQUssQ0FBQyxNQUFNLENBQ2IsQ0FBQztnQkFDRixJQUFJLG1CQUFtQjtvQkFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBRXpELE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLGVBQWUsSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDakMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDakUsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDbEIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDakUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiw2Q0FBNkMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUMzRCxDQUFDO1lBQ0YsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRjs7Ozs7OztPQU9HO0lBQ0ssZUFBZSxHQUFHLENBQUMsU0FBb0MsRUFBVyxFQUFFO1FBQzFFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUNoRCxPQUFPLENBQ0wsTUFBTSxJQUFJLFNBQVM7WUFDbkIsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNO1lBQ3RCLFNBQVMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FDckMsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOzs7Ozs7O09BT0c7SUFDSCxTQUFTLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBaUIsRUFBRTtRQUNoRCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDLENBQUM7SUFFRjs7Ozs7O09BTUc7SUFDSCxlQUFlLEdBQUcsS0FBSyxFQUFFLFlBQXVCLEVBQWlCLEVBQUU7UUFDakUsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FDNUQsWUFBWSxDQUFDLE1BQU0sQ0FDcEIsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDZFQUE2RSxrQkFBa0I7YUFDNUYsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO2FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNqQixDQUFDO1FBRUYsTUFBTSw2QkFBNkIsR0FDakMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzdELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxHQUFHLENBQ3JDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUMzQyxDQUFDO1FBQ0YsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQ2hDLFlBQVksQ0FBQyxNQUFNLEVBQ25CLDZCQUE2QixDQUFDLE1BQU0sQ0FDbEMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUMvQyxDQUNGLENBQUM7UUFFRixLQUFLLE1BQU0sVUFBVSxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDNUMsSUFBSSw2QkFBNkIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzdELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDJDQUEyQyxVQUFVLENBQUMsS0FBSywyQkFBMkIsQ0FDdkYsQ0FBQztnQkFDRixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiw0Q0FBNEMsVUFBVSxDQUFDLEtBQUssdUNBQXVDLENBQ3BHLENBQUM7Z0JBQ0YsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMvRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGOzs7Ozs7OztPQVFHO0lBQ0ssS0FBSyxDQUFDLHVCQUF1QixDQUNuQyxhQUFxQixFQUNyQixnQkFBMEI7UUFFMUIsS0FBSyxNQUFNLEtBQUssSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JDLElBQUksT0FBc0IsQ0FBQztZQUMzQixJQUFJLENBQUM7Z0JBQ0gsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdELENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLElBQUssQ0FBc0MsQ0FBQyxRQUFRLEVBQUUsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUNyRSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUN4RCxTQUFTO2dCQUNYLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLElBQUksS0FBSyxDQUNiLGdEQUFnRCxLQUFLLHdCQUNsRCxDQUFXLENBQUMsT0FDZixFQUFFLENBQ0gsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksT0FBTyxFQUFFLGtCQUFrQixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUM7b0JBQ0gsTUFBTSxlQUFlLEdBQ25CLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQzlDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FDM0IsQ0FBQztvQkFFSixJQUFJLGVBQWUsQ0FBQyxlQUFlLEdBQUcsYUFBYSxFQUFFLENBQUM7d0JBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDBCQUEwQixLQUFLLHFEQUFxRCxlQUFlLENBQUMsZUFBZSxxQkFBcUIsZUFBZSxDQUFDLE9BQU8sR0FBRyxDQUNuSyxDQUFDO3dCQUVGLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDaEM7NEJBQ0UsS0FBSyxFQUFFLEtBQUs7NEJBQ1osV0FBVyxFQUFFLGVBQWUsQ0FBQyxlQUFlOzRCQUM1QyxVQUFVLEVBQUUsZUFBZSxDQUFDLE9BQU87NEJBQ25DLFNBQVMsRUFBRSxlQUFlLENBQUMsRUFBRTt5QkFDOUIsRUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQ2IsQ0FBQztvQkFDSixDQUFDO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWCxNQUFNLElBQUksS0FBSyxDQUNiLHdEQUNFLE9BQU8sQ0FBQyxrQkFDVix3QkFBeUIsQ0FBVyxFQUFFLE9BQU8sRUFBRSxDQUNoRCxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ssd0JBQXdCLEdBQUcsS0FBSyxFQUN0QyxhQUFxQixFQUNnQixFQUFFO1FBQ3ZDLE1BQU0sY0FBYyxHQUErQixFQUFFLENBQUM7UUFDdEQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsT0FBTyxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7WUFDdEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FDdEUsSUFBSSxDQUFDLFFBQVEsRUFDYixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxDQUMzQyxDQUFDO1lBRUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7WUFFRCxjQUFjLENBQUMsSUFBSSxDQUNqQixHQUFHLEtBQUssQ0FBQyxLQUFLO2lCQUNYLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sR0FBRyxDQUFDLGNBQWM7Z0JBQ2xCLEdBQUcsQ0FBQyxjQUFjLEdBQUcsYUFBYTtnQkFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FDNUI7aUJBQ0EsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDWCxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQ25FO2lCQUNBLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBK0IsRUFBRSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsQ0FDcEUsQ0FBQztZQUNGLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxlQUFlLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUMsQ0FBQztJQUVGOzs7Ozs7O09BT0c7SUFDSyxxQkFBcUIsR0FBRyxDQUM5QixHQUE4QixFQUM5QixPQUFlLEVBQ2YsV0FBbUIsRUFDYyxFQUFFO1FBQ25DLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUV2RSxNQUFNLEVBQUUsR0FBRyxhQUFhO2FBQ3JCLGNBQWMsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1lBQ2xELEVBQUUsYUFBYSxFQUFFLENBQUM7UUFDcEIsSUFBSSxFQUFFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsOEJBQThCLEdBQUcsQ0FBQyxLQUFLLDhCQUE4QixDQUN0RSxDQUFDO1lBQ0YsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixrQkFBa0IsR0FBRyw4QkFBOEIsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUNoRSxDQUFDO1FBRUYsTUFBTSxFQUFFLEdBQUcsYUFBYTthQUNyQixjQUFjLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztZQUNsRCxFQUFFLE1BQU0sRUFBRTthQUNULE1BQU0sRUFBRSxDQUFDO1FBRVosSUFBSSxFQUFFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsOEJBQThCLEdBQUcsQ0FBQyxLQUFLLDhCQUE4QixDQUN0RSxDQUFDO1lBQ0YsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZix1QkFBdUIsUUFBUSw4QkFBOEIsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUMxRSxDQUFDO1FBRUYsT0FBTztZQUNMLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztZQUNoQixhQUFhLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FDeEIsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQ3RDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNwQixHQUFHLEVBQUUsR0FBRztZQUNSLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRSxHQUFHLENBQUMsYUFBYTtZQUN2QixLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxXQUFXO1NBQ3BCLENBQUM7SUFDSixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGVyZ29MaWIgZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEV4dHJhY3RvciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtZXh0cmFjdG9yJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHtcbiAgQmxvY2ssXG4gIEJsb2NrSW5mbyxcbiAgT3V0cHV0Qm94LFxuICBUcmFuc2FjdGlvbixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyLWludGVyZmFjZXMnO1xuaW1wb3J0IGVyZ29FeHBsb3JlckNsaWVudEZhY3RvcnksIHsgVjEgfSBmcm9tICdAcm9zZW4tY2xpZW50cy9lcmdvLWV4cGxvcmVyJztcblxuaW1wb3J0IENvbGxhdGVyYWxBY3Rpb24gZnJvbSAnLi4vYWN0aW9ucy9jb2xsYXRlcmFsQWN0aW9uJztcbmltcG9ydCB7IERlZmF1bHRBcGlMaW1pdCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBFeHRyYWN0ZWRDb2xsYXRlcmFsIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRDb2xsYXRlcmFsJztcbmltcG9ydCB7IFNwZW5kSW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuaW1wb3J0IHsgSnNvbkJJLCB1aW50OEFycmF5VG9IZXggfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBDb2xsYXRlcmFsRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RFeHRyYWN0b3I8VHJhbnNhY3Rpb24+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBlcmdvVHJlZTogc3RyaW5nO1xuICByZWFkb25seSBhY3Rpb246IENvbGxhdGVyYWxBY3Rpb247XG4gIHByaXZhdGUgZXhwbG9yZXJBcGk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBpZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXdjTmZ0OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhZGRyZXNzOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIGV4cGxvcmVyVXJsOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyID0gbmV3IER1bW15TG9nZ2VyKCksXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lcmdvVHJlZSA9IGVyZ29MaWIuQWRkcmVzcy5mcm9tX2Jhc2U1OCh0aGlzLmFkZHJlc3MpXG4gICAgICAudG9fZXJnb190cmVlKClcbiAgICAgIC50b19iYXNlMTZfYnl0ZXMoKTtcbiAgICB0aGlzLmFjdGlvbiA9IG5ldyBDb2xsYXRlcmFsQWN0aW9uKHRoaXMuZGF0YVNvdXJjZSwgdGhpcy5sb2dnZXIpO1xuICAgIHRoaXMuZXhwbG9yZXJBcGkgPSBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5KGV4cGxvcmVyVXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgaWQgZm9yIGV4dHJhY3Rvci4gVGhpcyBpZCBtdXN0IGJlIHVuaXF1ZSBvdmVyIGFsbCBleHRyYWN0b3JzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBnZXRJZCA9ICgpOiBzdHJpbmcgPT4gdGhpcy5pZDtcblxuICAvKipcbiAgICogcHJvY2VzcyBhIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGFuZCBzdG9yZSBjb2xsYXRlcmFsIGJveCBkZXRhaWxzXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25bXX0gdHhzIGxpc3Qgb2YgdHJhbnNhY3Rpb24gZm9yIGJsb2NrXG4gICAqIEBwYXJhbSB7QmxvY2t9IGJsb2NrIGJsb2NrIGlkIGZvciB0cmFuc2FjdGlvbnMgYXMgaGV4IGVuY29kZWRcbiAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn0gUHJvbWlzZTxib29sZWFuPiBpZiBubyBlcnJvciBvY2N1cnJlZCByZXR1cm5cbiAgICogdHJ1ZS4gb3RoZXJ3aXNlLCByZXR1cm4gZmFsc2VcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSBhc3luYyAoXG4gICAgdHhzOiBUcmFuc2FjdGlvbltdLFxuICAgIGJsb2NrOiBCbG9jayxcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJveGVzOiBBcnJheTxFeHRyYWN0ZWRDb2xsYXRlcmFsPiA9IFtdO1xuICAgICAgY29uc3Qgc3BlbnRJbmZvczogQXJyYXk8U3BlbmRJbmZvPiA9IFtdO1xuICAgICAgZm9yIChjb25zdCB0eCBvZiB0eHMpIHtcbiAgICAgICAgY29uc3Qgb3V0cHV0Qm94ID0gdHgub3V0cHV0cy5hdCgxKTtcbiAgICAgICAgaWYgKG91dHB1dEJveCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc0NvbGxhdGVyYWxCb3gob3V0cHV0Qm94KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4dHJhY3RlZENvbGxhdGVyYWwgPSB0aGlzLnRvRXh0cmFjdGVkQ29sbGF0ZXJhbChcbiAgICAgICAgICBvdXRwdXRCb3gsXG4gICAgICAgICAgYmxvY2suaGFzaCxcbiAgICAgICAgICBibG9jay5oZWlnaHQsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChleHRyYWN0ZWRDb2xsYXRlcmFsKSBib3hlcy5wdXNoKGV4dHJhY3RlZENvbGxhdGVyYWwpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0Q29sbGF0ZXJhbCA9IHR4LmlucHV0cy5hdCgxKTtcbiAgICAgICAgaWYgKGlucHV0Q29sbGF0ZXJhbCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzcGVudEluZm9zLnB1c2goeyB0eElkOiB0eC5pZCwgYm94SWQ6IGlucHV0Q29sbGF0ZXJhbC5ib3hJZCB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGJveGVzLmxlbmd0aCA+IDApXG4gICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uLnN0b3JlQ29sbGF0ZXJhbHMoYm94ZXMsIGJsb2NrLCB0aGlzLmdldElkKCkpO1xuICAgICAgYXdhaXQgdGhpcy5hY3Rpb24uc3BlbmRDb2xsYXRlcmFscyhzcGVudEluZm9zLCBibG9jaywgdGhpcy5nZXRJZCgpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgYEVycm9yIGluIHN0b3JpbmcgY29sbGF0ZXJhbHMgb2YgdGhlIGJsb2NrICR7YmxvY2t9OiAke2V9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIGNoZWNrcyBpZiB0aGUgcGFzc2VkIGJveCBpcyBhIGNvbGxhdGVyYWwgYm94XG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T3V0cHV0Qm94fSBvdXRwdXRCb3hcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxFeHRyYWN0b3JcbiAgICovXG4gIHByaXZhdGUgaXNDb2xsYXRlcmFsQm94ID0gKG91dHB1dEJveDogVjEuT3V0cHV0SW5mbyB8IE91dHB1dEJveCk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGF3Y05mdCA9IG91dHB1dEJveC5hc3NldHM/LmF0KDApPy50b2tlbklkO1xuICAgIHJldHVybiAoXG4gICAgICBhd2NOZnQgIT0gdW5kZWZpbmVkICYmXG4gICAgICBhd2NOZnQgPT09IHRoaXMuYXdjTmZ0ICYmXG4gICAgICBvdXRwdXRCb3guZXJnb1RyZWUgPT09IHRoaXMuZXJnb1RyZWVcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBEZWxldGUgYWxsIGNvbGxhdGVyYWxzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhc3NlZCBibG9jayBhbmQgZXh0cmFjdG9yIGFuZFxuICAgKiB1cGRhdGUgYWxsIGNvbGxhdGVyYWxzIHNwZW50IGluIHRoZSBzcGVjaWZpZWQgYmxvY2tcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGhhc2hcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxFeHRyYWN0b3JcbiAgICovXG4gIGZvcmtCbG9jayA9IGFzeW5jIChoYXNoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBhd2FpdCB0aGlzLmFjdGlvbi5kZWxldGVCbG9jayhoYXNoLCB0aGlzLmdldElkKCkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgZGF0YWJhc2Ugd2l0aCBvbGRlciBjb2xsYXRlcmFsc1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5pdGlhbEhlaWdodFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKiBAbWVtYmVyb2YgQ29sbGF0ZXJhbEV4dHJhY3RvclxuICAgKi9cbiAgaW5pdGlhbGl6ZUJveGVzID0gYXN5bmMgKGluaXRpYWxCbG9jazogQmxvY2tJbmZvKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgdW5zcGVudENvbGxhdGVyYWxzID0gYXdhaXQgdGhpcy5nZXRBbGxVbnNwZW50Q29sbGF0ZXJhbHMoXG4gICAgICBpbml0aWFsQmxvY2suaGVpZ2h0LFxuICAgICk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgdW5zcGVudCBjb2xsYXRlcmFsIGJveCBpbmZvIHdpdGggZm9sbG93aW5nIElEcyBnb3R0ZW4gZm9ybSBFcmdvIG5ldHdvcms6IFske3Vuc3BlbnRDb2xsYXRlcmFsc1xuICAgICAgICAubWFwKChib3gpID0+IGJveC5ib3hJZClcbiAgICAgICAgLmpvaW4oJywgJyl9XWAsXG4gICAgKTtcblxuICAgIGNvbnN0IHN0b3JlZFVuc3BlbnRDb2xsYXRlcmFsQm94SWRzID1cbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9uLmdldFVuc3BlbnRDb2xsYXRlcmFsQm94SWRzKHRoaXMuZ2V0SWQoKSk7XG4gICAgY29uc3QgdW5zcGVudENvbGxhdGVyYWxCb3hJZHMgPSBuZXcgU2V0KFxuICAgICAgdW5zcGVudENvbGxhdGVyYWxzLm1hcCgoYm94KSA9PiBib3guYm94SWQpLFxuICAgICk7XG4gICAgYXdhaXQgdGhpcy50aWR5VXBTdG9yZWRDb2xsYXRlcmFscyhcbiAgICAgIGluaXRpYWxCbG9jay5oZWlnaHQsXG4gICAgICBzdG9yZWRVbnNwZW50Q29sbGF0ZXJhbEJveElkcy5maWx0ZXIoXG4gICAgICAgIChib3hJZCkgPT4gIXVuc3BlbnRDb2xsYXRlcmFsQm94SWRzLmhhcyhib3hJZCksXG4gICAgICApLFxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbGxhdGVyYWwgb2YgdW5zcGVudENvbGxhdGVyYWxzKSB7XG4gICAgICBpZiAoc3RvcmVkVW5zcGVudENvbGxhdGVyYWxCb3hJZHMuaW5jbHVkZXMoY29sbGF0ZXJhbC5ib3hJZCkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYHVwZGF0aW5nIHVuc3BlbnQgY29sbGF0ZXJhbCB3aXRoIGJveElkPVske2NvbGxhdGVyYWwuYm94SWR9XSBhdCBpbml0aWFsaXphdGlvbiBwaGFzZWAsXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uLnVwZGF0ZUNvbGxhdGVyYWwoY29sbGF0ZXJhbCwgdGhpcy5nZXRJZCgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBpbnNlcnRpbmcgdW5zcGVudCBjb2xsYXRlcmFsIHdpdGggYm94SWQ9WyR7Y29sbGF0ZXJhbC5ib3hJZH1dIHRvIGRhdGFiYXNlIGF0IGluaXRpYWxpemF0aW9uIHBoYXNlYCxcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb24uaW5zZXJ0Q29sbGF0ZXJhbChjb2xsYXRlcmFsLCB0aGlzLmdldElkKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcmVtb3ZlcyBvciB1cGRhdGVzIHN0b3JlZCBjb2xsYXRlcmFsIGJveGVzIGJlZm9yZSBpbml0aWFsaXppbmcgYm94ZXNcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluaXRpYWxIZWlnaHRcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY29sbGF0ZXJhbEJveElkc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKiBAbWVtYmVyb2YgQ29sbGF0ZXJhbEV4dHJhY3RvclxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB0aWR5VXBTdG9yZWRDb2xsYXRlcmFscyhcbiAgICBpbml0aWFsSGVpZ2h0OiBudW1iZXIsXG4gICAgY29sbGF0ZXJhbEJveElkczogc3RyaW5nW10sXG4gICkge1xuICAgIGZvciAoY29uc3QgYm94SWQgb2YgY29sbGF0ZXJhbEJveElkcykge1xuICAgICAgbGV0IGJveEluZm86IFYxLk91dHB1dEluZm87XG4gICAgICB0cnkge1xuICAgICAgICBib3hJbmZvID0gYXdhaXQgdGhpcy5leHBsb3JlckFwaS52MS5nZXRBcGlWMUJveGVzUDEoYm94SWQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoKGUgYXMgeyByZXNwb25zZTogeyBzdGF0dXM6IG51bWJlciB9IH0pLnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uLmRlbGV0ZUNvbGxhdGVyYWwoYm94SWQsIHRoaXMuZ2V0SWQoKSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHNvbWV0aGluZyB3ZW50IHdyb25nIHdoZW4gdHJ5aW5nIHRvIGdldCBib3g9WyR7Ym94SWR9XSBmcm9tIEVyZ28gbmV0d29yazogJHtcbiAgICAgICAgICAgICAgKGUgYXMgRXJyb3IpLm1lc3NhZ2VcbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGJveEluZm8/LnNwZW50VHJhbnNhY3Rpb25JZCAhPSBudWxsKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25JbmZvOiBWMS5UcmFuc2FjdGlvbkluZm8gPVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5leHBsb3JlckFwaS52MS5nZXRBcGlWMVRyYW5zYWN0aW9uc1AxKFxuICAgICAgICAgICAgICBib3hJbmZvLnNwZW50VHJhbnNhY3Rpb25JZCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAodHJhbnNhY3Rpb25JbmZvLmluY2x1c2lvbkhlaWdodCA8IGluaXRpYWxIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICBgY29sbGF0ZXJhbCB3aXRoIGJveElkPVske2JveElkfV0gaXMgc3BlbnQgYW5kIGlzIGJlaW5nIHVwZGF0ZWQgd2l0aCBzcGVuZEhlaWdodD1bJHt0cmFuc2FjdGlvbkluZm8uaW5jbHVzaW9uSGVpZ2h0fV0gYW5kIHNwZW5kQmxvY2s9WyR7dHJhbnNhY3Rpb25JbmZvLmJsb2NrSWR9XWAsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmFjdGlvbi51cGRhdGVDb2xsYXRlcmFsKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYm94SWQ6IGJveElkLFxuICAgICAgICAgICAgICAgIHNwZW5kSGVpZ2h0OiB0cmFuc2FjdGlvbkluZm8uaW5jbHVzaW9uSGVpZ2h0LFxuICAgICAgICAgICAgICAgIHNwZW5kQmxvY2s6IHRyYW5zYWN0aW9uSW5mby5ibG9ja0lkLFxuICAgICAgICAgICAgICAgIHNwZW5kVHhJZDogdHJhbnNhY3Rpb25JbmZvLmlkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLmdldElkKCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBzb21ldGhpbmcgd2VudCB3cm9uZyB3aGVuIHRyeWluZyB0byBnZXQgdHJhbnNhY3Rpb249WyR7XG4gICAgICAgICAgICAgIGJveEluZm8uc3BlbnRUcmFuc2FjdGlvbklkXG4gICAgICAgICAgICB9XSBmcm9tIEVyZ28gbmV0d29yazogJHsoZSBhcyBFcnJvcik/Lm1lc3NhZ2V9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGdldHMgYWxsIHVuc3BlbnQgY29sbGF0ZXJhbHMgZnJvbSBFcmdvIGV4cGxvcmVyIGFwaVxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5pdGlhbEhlaWdodFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEFycmF5PEV4dHJhY3RlZENvbGxhdGVyYWw+Pn1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxFeHRyYWN0b3JcbiAgICovXG4gIHByaXZhdGUgZ2V0QWxsVW5zcGVudENvbGxhdGVyYWxzID0gYXN5bmMgKFxuICAgIGluaXRpYWxIZWlnaHQ6IG51bWJlcixcbiAgKTogUHJvbWlzZTxBcnJheTxFeHRyYWN0ZWRDb2xsYXRlcmFsPj4gPT4ge1xuICAgIGNvbnN0IGV4dHJhY3RlZEJveGVzOiBBcnJheTxFeHRyYWN0ZWRDb2xsYXRlcmFsPiA9IFtdO1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGxldCB0b3RhbCA9IDE7XG4gICAgd2hpbGUgKG9mZnNldCA8IHRvdGFsKSB7XG4gICAgICBjb25zdCBib3hlcyA9IGF3YWl0IHRoaXMuZXhwbG9yZXJBcGkudjEuZ2V0QXBpVjFCb3hlc1Vuc3BlbnRCeWVyZ290cmVlUDEoXG4gICAgICAgIHRoaXMuZXJnb1RyZWUsXG4gICAgICAgIHsgb2Zmc2V0OiBvZmZzZXQsIGxpbWl0OiBEZWZhdWx0QXBpTGltaXQgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmICghYm94ZXMuaXRlbXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBsb3JlciBhcGkgb3V0cHV0IGl0ZW1zIHNob3VsZCBub3QgYmUgdW5kZWZpbmVkLicpO1xuICAgICAgfVxuXG4gICAgICBleHRyYWN0ZWRCb3hlcy5wdXNoKFxuICAgICAgICAuLi5ib3hlcy5pdGVtc1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAoYm94KSA9PlxuICAgICAgICAgICAgICBib3guY3JlYXRpb25IZWlnaHQgJiZcbiAgICAgICAgICAgICAgYm94LmNyZWF0aW9uSGVpZ2h0IDwgaW5pdGlhbEhlaWdodCAmJlxuICAgICAgICAgICAgICB0aGlzLmlzQ29sbGF0ZXJhbEJveChib3gpLFxuICAgICAgICAgIClcbiAgICAgICAgICAubWFwKChib3gpID0+XG4gICAgICAgICAgICB0aGlzLnRvRXh0cmFjdGVkQ29sbGF0ZXJhbChib3gsIGJveC5ibG9ja0lkLCBib3guc2V0dGxlbWVudEhlaWdodCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5maWx0ZXIoKGRhdGEpOiBkYXRhIGlzIEV4dHJhY3RlZENvbGxhdGVyYWwgPT4gZGF0YSAhPSB1bmRlZmluZWQpLFxuICAgICAgKTtcbiAgICAgIHRvdGFsID0gYm94ZXMudG90YWw7XG4gICAgICBvZmZzZXQgKz0gRGVmYXVsdEFwaUxpbWl0O1xuICAgIH1cbiAgICByZXR1cm4gZXh0cmFjdGVkQm94ZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIGNvbnZlcnRzIG91dHB1dCBib3ggaW5mb3JtYXRpb24gdG8gYW4gRXh0cmFjdGVkQ29sbGF0ZXJhbCBvYmplY3RcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsoT3V0cHV0SW5mbyB8IE91dHB1dEJveCl9IGJveFxuICAgKiBAcmV0dXJuIHtFeHRyYWN0ZWRDb2xsYXRlcmFsfVxuICAgKiBAbWVtYmVyb2YgQ29sbGF0ZXJhbEV4dHJhY3RvclxuICAgKi9cbiAgcHJpdmF0ZSB0b0V4dHJhY3RlZENvbGxhdGVyYWwgPSAoXG4gICAgYm94OiBWMS5PdXRwdXRJbmZvIHwgT3V0cHV0Qm94LFxuICAgIGJsb2NrSWQ6IHN0cmluZyxcbiAgICBibG9ja0hlaWdodDogbnVtYmVyLFxuICApOiBFeHRyYWN0ZWRDb2xsYXRlcmFsIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBlcmdvT3V0cHV0Qm94ID0gZXJnb0xpYi5FcmdvQm94LmZyb21fanNvbihKc29uQkkuc3RyaW5naWZ5KGJveCkpO1xuXG4gICAgY29uc3QgcjQgPSBlcmdvT3V0cHV0Qm94XG4gICAgICAucmVnaXN0ZXJfdmFsdWUoZXJnb0xpYi5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI0KVxuICAgICAgPy50b19ieXRlX2FycmF5KCk7XG4gICAgaWYgKHI0ID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgYGNvbGxhdGVyYWwgYm94IHdpdGggYm94SWQ9WyR7Ym94LmJveElkfV0gaGFzIGFuIGludmFsaWQgUjQgcmVnaXN0ZXJgLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHdpZCA9IHVpbnQ4QXJyYXlUb0hleChyNCk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgRXh0cmFjdGVkIFdJRD1bJHt3aWR9XSBmcm9tIFI0IHJlZ2lzdGVyIG9mIGJveD1bJHtib3guYm94SWR9XWAsXG4gICAgKTtcblxuICAgIGNvbnN0IHI1ID0gZXJnb091dHB1dEJveFxuICAgICAgLnJlZ2lzdGVyX3ZhbHVlKGVyZ29MaWIuTm9uTWFuZGF0b3J5UmVnaXN0ZXJJZC5SNSlcbiAgICAgID8udG9faTY0KClcbiAgICAgIC50b19zdHIoKTtcblxuICAgIGlmIChyNSA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oXG4gICAgICAgIGBjb2xsYXRlcmFsIGJveCB3aXRoIGJveElkPVske2JveC5ib3hJZH1dIGhhcyBhbiBpbnZhbGlkIFI1IHJlZ2lzdGVyYCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCByd3RDb3VudCA9IEJpZ0ludChyNSk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgRXh0cmFjdGVkIHJ3dENvdW50PVske3J3dENvdW50fV0gZnJvbSBSNSByZWdpc3RlciBvZiBib3g9WyR7Ym94LmJveElkfV1gLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYm94SWQ6IGJveC5ib3hJZCxcbiAgICAgIGJveFNlcmlhbGl6ZWQ6IEJ1ZmZlci5mcm9tKFxuICAgICAgICBlcmdvT3V0cHV0Qm94LnNpZ21hX3NlcmlhbGl6ZV9ieXRlcygpLFxuICAgICAgKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICB3aWQ6IHdpZCxcbiAgICAgIHJ3dENvdW50OiByd3RDb3VudCxcbiAgICAgIHR4SWQ6IGJveC50cmFuc2FjdGlvbklkLFxuICAgICAgYmxvY2s6IGJsb2NrSWQsXG4gICAgICBoZWlnaHQ6IGJsb2NrSGVpZ2h0LFxuICAgIH07XG4gIH07XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
|
|
2
2
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
3
|
+
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
3
4
|
import { Block, Transaction } from '@rosen-bridge/scanner-interfaces';
|
|
4
|
-
import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
|
|
5
5
|
import { TokenMap } from '@rosen-bridge/tokens';
|
|
6
6
|
declare class CommitmentExtractor extends AbstractExtractor<Transaction> {
|
|
7
7
|
readonly logger: AbstractLogger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commitmentExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/commitmentExtractor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commitmentExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/commitmentExtractor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAOhD,cAAM,mBAAoB,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IAC9D,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAGlC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,MAAM,CAAC,EAAE,cAAc;IAczB;;OAEG;IACH,KAAK,eAAiB;IAEtB;;;;;OAKG;IACH,mBAAmB,GACjB,KAAK,KAAK,CAAC,WAAW,CAAC,EACvB,OAAO,KAAK,KACX,OAAO,CAAC,OAAO,CAAC,CAmFjB;IAEF;;;OAGG;IACH,SAAS,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAE7C;IAEF;;;OAGG;IACH,eAAe,sBAEb;CACH;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as wasm from 'ergo-lib-wasm-nodejs';
|
|
2
|
-
import { DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
3
2
|
import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
|
|
3
|
+
import { DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
4
4
|
import CommitmentAction from '../actions/commitmentAction';
|
|
5
5
|
import { JsonBI } from '../utils';
|
|
6
6
|
class CommitmentExtractor extends AbstractExtractor {
|
|
@@ -115,4 +115,4 @@ class CommitmentExtractor extends AbstractExtractor {
|
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
117
|
export default CommitmentExtractor;
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0bWVudEV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvY29tbWl0bWVudEV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixDQUFDO0FBRTdDLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFckUsT0FBTyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSWxDLE1BQU0sbUJBQW9CLFNBQVEsaUJBQThCO0lBQ3JELE1BQU0sQ0FBaUI7SUFDaEMsRUFBRSxDQUFTO0lBQ00sVUFBVSxDQUFhO0lBQ3ZCLG9CQUFvQixDQUFnQjtJQUNwQyxLQUFLLENBQVM7SUFDZCxPQUFPLENBQW1CO0lBQzFCLFFBQVEsQ0FBVztJQUVwQyxZQUNFLEVBQVUsRUFDVixTQUF3QixFQUN4QixLQUFhLEVBQ2IsVUFBc0IsRUFDdEIsTUFBZ0IsRUFDaEIsTUFBdUI7UUFFdkIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQ25FLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENB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Q0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHdDQUF3QyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQ3RELENBQUM7Z0JBQ0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsU0FBUyxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQWlCLEVBQUU7UUFDaEQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsZUFBZSxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQzNCLE9BQU87SUFDVCxDQUFDLENBQUM7Q0FDSDtBQUVELGVBQWUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB3YXNtIGZyb20gJ2VyZ28tbGliLXdhc20tbm9kZWpzJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgQmxvY2ssIFRyYW5zYWN0aW9uIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgQWJzdHJhY3RFeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWV4dHJhY3Rvcic7XG5cbmltcG9ydCBDb21taXRtZW50QWN0aW9uIGZyb20gJy4uL2FjdGlvbnMvY29tbWl0bWVudEFjdGlvbic7XG5pbXBvcnQgeyBleHRyYWN0ZWRDb21taXRtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRDb21taXRtZW50JztcbmltcG9ydCB7IEpzb25CSSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFNwZW5kSW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuaW1wb3J0IHsgVG9rZW5NYXAgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Rva2Vucyc7XG5cbmNsYXNzIENvbW1pdG1lbnRFeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdEV4dHJhY3RvcjxUcmFuc2FjdGlvbj4ge1xuICByZWFkb25seSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuICBpZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFTb3VyY2U6IERhdGFTb3VyY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tbWl0bWVudHNFcmdvVHJlZXM6IEFycmF5PHN0cmluZz47XG4gIHByaXZhdGUgcmVhZG9ubHkgUldUSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zOiBDb21taXRtZW50QWN0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IHRva2VuTWFwOiBUb2tlbk1hcDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZDogc3RyaW5nLFxuICAgIGFkZHJlc3NlczogQXJyYXk8c3RyaW5nPixcbiAgICBSV1RJZDogc3RyaW5nLFxuICAgIGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsXG4gICAgdG9rZW5zOiBUb2tlbk1hcCxcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcixcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5kYXRhU291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB0aGlzLmNvbW1pdG1lbnRzRXJnb1RyZWVzID0gYWRkcmVzc2VzLm1hcCgoYWRkcmVzcykgPT5cbiAgICAgIHdhc20uQWRkcmVzcy5mcm9tX2Jhc2U1OChhZGRyZXNzKS50b19lcmdvX3RyZWUoKS50b19iYXNlMTZfYnl0ZXMoKSxcbiAgICApO1xuICAgIHRoaXMuUldUSWQgPSBSV1RJZDtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlciA/IGxvZ2dlciA6IG5ldyBEdW1teUxvZ2dlcigpO1xuICAgIHRoaXMuYWN0aW9ucyA9IG5ldyBDb21taXRtZW50QWN0aW9uKGRhdGFTb3VyY2UsIHRoaXMubG9nZ2VyKTtcbiAgICB0aGlzLnRva2VuTWFwID0gdG9rZW5zO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBJZCBmb3IgY3VycmVudCBleHRyYWN0b3JcbiAgICovXG4gIGdldElkID0gKCkgPT4gdGhpcy5pZDtcblxuICAvKipcbiAgICogZ2V0cyBibG9jayBpZCBhbmQgdHJhbnNhY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrIGFuZCBzYXZlcyBpZiB0aGV5IGFyZSB2YWxpZCByb3NlblxuICAgKiAgdHJhbnNhY3Rpb25zIGFuZCBpbiBjYXNlIG9mIHN1Y2Nlc3MgcmV0dXJuIHRydWUgYW5kIGluIGNhc2Ugb2YgZmFpbHVyZSByZXR1cm5zIGZhbHNlXG4gICAqIEBwYXJhbSB0eHNcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqL1xuICBwcm9jZXNzVHJhbnNhY3Rpb25zID0gKFxuICAgIHR4czogQXJyYXk8VHJhbnNhY3Rpb24+LFxuICAgIGJsb2NrOiBCbG9jayxcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbW1pdG1lbnRzOiBBcnJheTxleHRyYWN0ZWRDb21taXRtZW50PiA9IFtdO1xuICAgICAgICBjb25zdCBzcGVuZElkczogQXJyYXk8U3BlbmRJbmZvPiA9IFtdO1xuICAgICAgICB0eHMuZm9yRWFjaCgodHJhbnNhY3Rpb24pID0+IHtcbiAgICAgICAgICAvLyBwcm9jZXNzIG91dHB1dHNcbiAgICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiB0cmFuc2FjdGlvbi5vdXRwdXRzKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG91dHB1dC5hc3NldHMgJiZcbiAgICAgICAgICAgICAgb3V0cHV0LmFkZGl0aW9uYWxSZWdpc3RlcnMgJiZcbiAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0cy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgIG91dHB1dC5hc3NldHNbMF0udG9rZW5JZCA9PT0gdGhpcy5SV1RJZCAmJlxuICAgICAgICAgICAgICB0aGlzLmNvbW1pdG1lbnRzRXJnb1RyZWVzLmluZGV4T2Yob3V0cHV0LmVyZ29UcmVlKSAhPT0gLTFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlY29kZWRCb3ggPSB3YXNtLkVyZ29Cb3guZnJvbV9qc29uKFxuICAgICAgICAgICAgICAgICAgSnNvbkJJLnN0cmluZ2lmeShvdXRwdXQpLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgUjQgPSBkZWNvZGVkQm94LnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgd2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI0LFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgUjUgPSBkZWNvZGVkQm94LnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgd2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI1LFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgUjYgPSBkZWNvZGVkQm94LnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgd2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI2LFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKFI0ICYmIFI1ICYmIFI2KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBSNFZhbHVlID0gUjQudG9fYnl0ZV9hcnJheSgpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgUjVWYWx1ZSA9IFI1LnRvX2J5dGVfYXJyYXkoKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IFI2VmFsdWUgPSBSNi50b19ieXRlX2FycmF5KCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBXSUQgPSBCdWZmZXIuZnJvbShSNFZhbHVlKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0SWQgPSBCdWZmZXIuZnJvbShSNVZhbHVlKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBldmVudERpZ2VzdCA9IEJ1ZmZlci5mcm9tKFI2VmFsdWUpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICAgICAgICAgIGNvbW1pdG1lbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0eElkOiB0cmFuc2FjdGlvbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgV0lEOiBXSUQsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6IGV2ZW50RGlnZXN0LFxuICAgICAgICAgICAgICAgICAgICBldmVudElkOiByZXF1ZXN0SWQsXG4gICAgICAgICAgICAgICAgICAgIGJveElkOiBvdXRwdXQuYm94SWQsXG4gICAgICAgICAgICAgICAgICAgIGJveFNlcmlhbGl6ZWQ6IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRCb3guc2lnbWFfc2VyaWFsaXplX2J5dGVzKCksXG4gICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICAgICAgICAgICAgICByd3RDb3VudDogdGhpcy50b2tlbk1hcFxuICAgICAgICAgICAgICAgICAgICAgIC53cmFwQW1vdW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5SV1RJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIEJpZ0ludChvdXRwdXQuYXNzZXRzWzBdLmFtb3VudCksXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJnbycsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIC5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLy8gZW1wdHlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBwcm9jZXNzIGlucHV0c1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJhbnNhY3Rpb24uaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzcGVuZElkcy5wdXNoKHtcbiAgICAgICAgICAgICAgYm94SWQ6IHRyYW5zYWN0aW9uLmlucHV0c1tpXS5ib3hJZCxcbiAgICAgICAgICAgICAgdHhJZDogdHJhbnNhY3Rpb24uaWQsXG4gICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gcHJvY2VzcyBzYXZlIGNvbW1pdG1lbnRzXG4gICAgICAgIHRoaXMuYWN0aW9uc1xuICAgICAgICAgIC5zdG9yZUNvbW1pdG1lbnRzKGNvbW1pdG1lbnRzLCBibG9jaywgdGhpcy5pZClcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvbnMuc3BlbmRDb21taXRtZW50cyhzcGVuZElkcywgYmxvY2ssIHRoaXMuaWQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHJlamVjdChlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgIGBFcnJvciBpbiBzb3JpbmcgcGVybWl0cyBvZiB0aGUgYmxvY2sgJHtibG9ja306ICR7ZX1gLFxuICAgICAgICApO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGZvcmsgb25lIGJsb2NrIGFuZCByZW1vdmUgYWxsIHN0b3JlZCBpbmZvcm1hdGlvbiBmb3IgdGhpcyBibG9ja1xuICAgKiBAcGFyYW0gaGFzaDogYmxvY2sgaGFzaFxuICAgKi9cbiAgZm9ya0Jsb2NrID0gYXN5bmMgKGhhc2g6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5kZWxldGVCbG9jayhoYXNoLCB0aGlzLmdldElkKCkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBFeHRyYWN0b3IgYm94IGluaXRpYWxpemF0aW9uXG4gICAqIE5vIGFjdGlvbiBuZWVkZWQgZm9yIGNvbW1pdG1lbnQgZXh0cmFjdG9yXG4gICAqL1xuICBpbml0aWFsaXplQm94ZXMgPSBhc3luYyAoKSA9PiB7XG4gICAgcmV0dXJuO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb21taXRtZW50RXh0cmFjdG9yO1xuIl19
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0bWVudEV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvY29tbWl0bWVudEV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLNUUsT0FBTyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUczRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxDLE1BQU0sbUJBQW9CLFNBQVEsaUJBQThCO0lBQ3JELE1BQU0sQ0FBaUI7SUFDaEMsRUFBRSxDQUFTO0lBQ00sVUFBVSxDQUFhO0lBQ3ZCLG9CQUFvQixDQUFnQjtJQUNwQyxLQUFLLENBQVM7SUFDZCxPQUFPLENBQW1CO0lBQzFCLFFBQVEsQ0FBVztJQUVwQyxZQUNFLEVBQVUsRUFDVixTQUF3QixFQUN4QixLQUFhLEVBQ2IsVUFBc0IsRUFDdEIsTUFBZ0IsRUFDaEIsTUFBdUI7UUFFdkIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQ25FLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENB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Q0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHdDQUF3QyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQ3RELENBQUM7Z0JBQ0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsU0FBUyxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQWlCLEVBQUU7UUFDaEQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsZUFBZSxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQzNCLE9BQU87SUFDVCxDQUFDLENBQUM7Q0FDSDtBQUVELGVBQWUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB3YXNtIGZyb20gJ2VyZ28tbGliLXdhc20tbm9kZWpzJztcblxuaW1wb3J0IHsgQWJzdHJhY3RFeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciwgRHVtbXlMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcbmltcG9ydCB7IEJsb2NrLCBUcmFuc2FjdGlvbiB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRva2VuTWFwIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS90b2tlbnMnO1xuXG5pbXBvcnQgQ29tbWl0bWVudEFjdGlvbiBmcm9tICcuLi9hY3Rpb25zL2NvbW1pdG1lbnRBY3Rpb24nO1xuaW1wb3J0IHsgZXh0cmFjdGVkQ29tbWl0bWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0cmFjdGVkQ29tbWl0bWVudCc7XG5pbXBvcnQgeyBTcGVuZEluZm8gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3R5cGVzJztcbmltcG9ydCB7IEpzb25CSSB9IGZyb20gJy4uL3V0aWxzJztcblxuY2xhc3MgQ29tbWl0bWVudEV4dHJhY3RvciBleHRlbmRzIEFic3RyYWN0RXh0cmFjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHJlYWRvbmx5IGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG4gIGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb21taXRtZW50c0VyZ29UcmVlczogQXJyYXk8c3RyaW5nPjtcbiAgcHJpdmF0ZSByZWFkb25seSBSV1RJZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnM6IENvbW1pdG1lbnRBY3Rpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9rZW5NYXA6IFRva2VuTWFwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYWRkcmVzc2VzOiBBcnJheTxzdHJpbmc+LFxuICAgIFJXVElkOiBzdHJpbmcsXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICB0b2tlbnM6IFRva2VuTWFwLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyLFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIHRoaXMuY29tbWl0bWVudHNFcmdvVHJlZXMgPSBhZGRyZXNzZXMubWFwKChhZGRyZXNzKSA9PlxuICAgICAgd2FzbS5BZGRyZXNzLmZyb21fYmFzZTU4KGFkZHJlc3MpLnRvX2VyZ29fdHJlZSgpLnRvX2Jhc2UxNl9ieXRlcygpLFxuICAgICk7XG4gICAgdGhpcy5SV1RJZCA9IFJXVElkO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gICAgdGhpcy5hY3Rpb25zID0gbmV3IENvbW1pdG1lbnRBY3Rpb24oZGF0YVNvdXJjZSwgdGhpcy5sb2dnZXIpO1xuICAgIHRoaXMudG9rZW5NYXAgPSB0b2tlbnM7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IElkIGZvciBjdXJyZW50IGV4dHJhY3RvclxuICAgKi9cbiAgZ2V0SWQgPSAoKSA9PiB0aGlzLmlkO1xuXG4gIC8qKlxuICAgKiBnZXRzIGJsb2NrIGlkIGFuZCB0cmFuc2FjdGlvbnMgY29ycmVzcG9uZGluZyB0byB0aGUgYmxvY2sgYW5kIHNhdmVzIGlmIHRoZXkgYXJlIHZhbGlkIHJvc2VuXG4gICAqICB0cmFuc2FjdGlvbnMgYW5kIGluIGNhc2Ugb2Ygc3VjY2VzcyByZXR1cm4gdHJ1ZSBhbmQgaW4gY2FzZSBvZiBmYWlsdXJlIHJldHVybnMgZmFsc2VcbiAgICogQHBhcmFtIHR4c1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSAoXG4gICAgdHhzOiBBcnJheTxUcmFuc2FjdGlvbj4sXG4gICAgYmxvY2s6IEJsb2NrLFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29tbWl0bWVudHM6IEFycmF5PGV4dHJhY3RlZENvbW1pdG1lbnQ+ID0gW107XG4gICAgICAgIGNvbnN0IHNwZW5kSWRzOiBBcnJheTxTcGVuZEluZm8+ID0gW107XG4gICAgICAgIHR4cy5mb3JFYWNoKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgIC8vIHByb2Nlc3Mgb3V0cHV0c1xuICAgICAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIHRyYW5zYWN0aW9uLm91dHB1dHMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0cyAmJlxuICAgICAgICAgICAgICBvdXRwdXQuYWRkaXRpb25hbFJlZ2lzdGVycyAmJlxuICAgICAgICAgICAgICBvdXRwdXQuYXNzZXRzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0c1swXS50b2tlbklkID09PSB0aGlzLlJXVElkICYmXG4gICAgICAgICAgICAgIHRoaXMuY29tbWl0bWVudHNFcmdvVHJlZXMuaW5kZXhPZihvdXRwdXQuZXJnb1RyZWUpICE9PSAtMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjb2RlZEJveCA9IHdhc20uRXJnb0JveC5mcm9tX2pzb24oXG4gICAgICAgICAgICAgICAgICBKc29uQkkuc3RyaW5naWZ5KG91dHB1dCksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBSNCA9IGRlY29kZWRCb3gucmVnaXN0ZXJfdmFsdWUoXG4gICAgICAgICAgICAgICAgICB3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjQsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBSNSA9IGRlY29kZWRCb3gucmVnaXN0ZXJfdmFsdWUoXG4gICAgICAgICAgICAgICAgICB3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjUsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBSNiA9IGRlY29kZWRCb3gucmVnaXN0ZXJfdmFsdWUoXG4gICAgICAgICAgICAgICAgICB3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjYsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoUjQgJiYgUjUgJiYgUjYpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IFI0VmFsdWUgPSBSNC50b19ieXRlX2FycmF5KCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBSNVZhbHVlID0gUjUudG9fYnl0ZV9hcnJheSgpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgUjZWYWx1ZSA9IFI2LnRvX2J5dGVfYXJyYXkoKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IFdJRCA9IEJ1ZmZlci5mcm9tKFI0VmFsdWUpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RJZCA9IEJ1ZmZlci5mcm9tKFI1VmFsdWUpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50RGlnZXN0ID0gQnVmZmVyLmZyb20oUjZWYWx1ZSkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICAgICAgICAgICAgY29tbWl0bWVudHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHR4SWQ6IHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICAgICAgICAgICAgICBXSUQ6IFdJRCxcbiAgICAgICAgICAgICAgICAgICAgY29tbWl0bWVudDogZXZlbnREaWdlc3QsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgICAgICAgYm94SWQ6IG91dHB1dC5ib3hJZCxcbiAgICAgICAgICAgICAgICAgICAgYm94U2VyaWFsaXplZDogQnVmZmVyLmZyb20oXG4gICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZEJveC5zaWdtYV9zZXJpYWxpemVfYnl0ZXMoKSxcbiAgICAgICAgICAgICAgICAgICAgKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgICAgICAgICAgICAgIHJ3dENvdW50OiB0aGlzLnRva2VuTWFwXG4gICAgICAgICAgICAgICAgICAgICAgLndyYXBBbW91bnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlJXVElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgQmlnSW50KG91dHB1dC5hc3NldHNbMF0uYW1vdW50KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcmdvJyxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgLmFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBlbXB0eVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHByb2Nlc3MgaW5wdXRzXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0cmFuc2FjdGlvbi5pbnB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHNwZW5kSWRzLnB1c2goe1xuICAgICAgICAgICAgICBib3hJZDogdHJhbnNhY3Rpb24uaW5wdXRzW2ldLmJveElkLFxuICAgICAgICAgICAgICB0eElkOiB0cmFuc2FjdGlvbi5pZCxcbiAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBwcm9jZXNzIHNhdmUgY29tbWl0bWVudHNcbiAgICAgICAgdGhpcy5hY3Rpb25zXG4gICAgICAgICAgLnN0b3JlQ29tbWl0bWVudHMoY29tbWl0bWVudHMsIGJsb2NrLCB0aGlzLmlkKVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9ucy5zcGVuZENvbW1pdG1lbnRzKHNwZW5kSWRzLCBibG9jaywgdGhpcy5pZCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZSkgPT4gcmVqZWN0KGUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgYEVycm9yIGluIHNvcmluZyBwZXJtaXRzIG9mIHRoZSBibG9jayAke2Jsb2NrfTogJHtlfWAsXG4gICAgICAgICk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogZm9yayBvbmUgYmxvY2sgYW5kIHJlbW92ZSBhbGwgc3RvcmVkIGluZm9ybWF0aW9uIGZvciB0aGlzIGJsb2NrXG4gICAqIEBwYXJhbSBoYXNoOiBibG9jayBoYXNoXG4gICAqL1xuICBmb3JrQmxvY2sgPSBhc3luYyAoaGFzaDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgdGhpcy5hY3Rpb25zLmRlbGV0ZUJsb2NrKGhhc2gsIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RvciBib3ggaW5pdGlhbGl6YXRpb25cbiAgICogTm8gYWN0aW9uIG5lZWRlZCBmb3IgY29tbWl0bWVudCBleHRyYWN0b3JcbiAgICovXG4gIGluaXRpYWxpemVCb3hlcyA9IGFzeW5jICgpID0+IHtcbiAgICByZXR1cm47XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1pdG1lbnRFeHRyYWN0b3I7XG4iXX0=
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
2
|
-
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
3
1
|
import { AbstractInitializableErgoExtractor } from '@rosen-bridge/abstract-extractor';
|
|
2
|
+
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
3
|
+
import { DataSource } from '@rosen-bridge/extended-typeorm';
|
|
4
4
|
import { BlockInfo, ErgoNetworkType, OutputBox, Transaction } from '@rosen-bridge/scanner-interfaces';
|
|
5
|
-
import EventTriggerAction from '../actions/
|
|
5
|
+
import EventTriggerAction from '../actions/eventTriggerAction';
|
|
6
|
+
import EventTriggerEntity from '../entities/eventTriggerEntity';
|
|
6
7
|
import { ExtractedEventTrigger } from '../interfaces/extractedEventTrigger';
|
|
7
8
|
import { EventResult } from '../types';
|
|
8
|
-
import EventTriggerEntity from '../entities/EventTriggerEntity';
|
|
9
9
|
declare class EventTriggerExtractor extends AbstractInitializableErgoExtractor<ExtractedEventTrigger, EventTriggerEntity> {
|
|
10
10
|
id: string;
|
|
11
11
|
protected readonly actions: EventTriggerAction;
|
|
@@ -54,4 +54,4 @@ declare class EventTriggerExtractor extends AbstractInitializableErgoExtractor<E
|
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
export default EventTriggerExtractor;
|
|
57
|
-
//# sourceMappingURL=
|
|
57
|
+
//# sourceMappingURL=eventTriggerExtractor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"eventTriggerExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/eventTriggerExtractor.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kCAAkC,EAGnC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EACL,SAAS,EACT,eAAe,EACf,SAAS,EACT,WAAW,EACZ,MAAM,kCAAkC,CAAC;AAE1C,OAAO,kBAAkB,MAAM,+BAA+B,CAAC;AAC/D,OAAO,kBAAkB,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,cAAM,qBAAsB,SAAQ,kCAAkC,CACpE,qBAAqB,EACrB,kBAAkB,CACnB;IACC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAG3B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,cAAc,EACvB,UAAU,UAAO;IAiBnB;;OAEG;IACH,KAAK,eAAiB;IAEtB;;;;;;;;;OASG;IACH,OAAO,GAAI,KAAK,SAAS,KAAG,OAAO,CA2BjC;IAEF;;;;OAIG;IACH,cAAc,GACZ,KAAK,SAAS,KACb,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,aAAa,CAAC,GAAG,SAAS,CAwDtE;IAEF;;;;;OAKG;IACH,mBAAmB,GACjB,KAAK,KAAK,CAAC,WAAW,CAAC,EACvB,OAAO,SAAS,KACf,OAAO,CAAC,OAAO,CAAC,CAyDjB;IAEF;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,GAAI,aAAa,WAAW;;;MA0CtD;CACH;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import * as wasm from 'ergo-lib-wasm-nodejs';
|
|
2
1
|
import { blake2b } from 'blakejs';
|
|
2
|
+
import * as wasm from 'ergo-lib-wasm-nodejs';
|
|
3
3
|
import { AbstractInitializableErgoExtractor, CallbackType, } from '@rosen-bridge/abstract-extractor';
|
|
4
|
-
import EventTriggerAction from '../actions/
|
|
5
|
-
import { JsonBI } from '../utils';
|
|
4
|
+
import EventTriggerAction from '../actions/eventTriggerAction';
|
|
6
5
|
import { EventResult } from '../types';
|
|
6
|
+
import { JsonBI } from '../utils';
|
|
7
7
|
class EventTriggerExtractor extends AbstractInitializableErgoExtractor {
|
|
8
8
|
id;
|
|
9
9
|
actions;
|
|
@@ -200,7 +200,7 @@ class EventTriggerExtractor extends AbstractInitializableErgoExtractor {
|
|
|
200
200
|
break;
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
|
-
catch
|
|
203
|
+
catch {
|
|
204
204
|
continue;
|
|
205
205
|
}
|
|
206
206
|
}
|
|
@@ -212,4 +212,4 @@ class EventTriggerExtractor extends AbstractInitializableErgoExtractor {
|
|
|
212
212
|
};
|
|
213
213
|
}
|
|
214
214
|
export default EventTriggerExtractor;
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRUcmlnZ2VyRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2V4dHJhY3Rvci9FdmVudFRyaWdnZXJFeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLElBQUksTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sRUFDTCxrQ0FBa0MsRUFDbEMsWUFBWSxHQUViLE1BQU0sa0NBQWtDLENBQUM7QUFRMUMsT0FBTyxrQkFBa0IsTUFBTSwrQkFBK0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHdkMsTUFBTSxxQkFBc0IsU0FBUSxrQ0FHbkM7SUFDQyxFQUFFLENBQVM7SUFDUSxPQUFPLENBQXFCO0lBQzlCLG9CQUFvQixDQUFTO0lBQzdCLGNBQWMsQ0FBUztJQUN2QixhQUFhLENBQVM7SUFDdEIsR0FBRyxDQUFTO0lBRTdCLFlBQ0UsRUFBVSxFQUNWLFVBQXNCLEVBQ3RCLElBQXFCLEVBQ3JCLEdBQVcsRUFDWCxPQUFlLEVBQ2YsR0FBVyxFQUNYLGFBQXFCLEVBQ3JCLFlBQW9CLEVBQ3BCLE1BQXVCLEVBQ3ZCLFVBQVUsR0FBRyxJQUFJO1FBRWpCLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO2FBQzFELFlBQVksRUFBRTthQUNkLGVBQWUsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8s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QUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ25ELENBQUM7d0JBQ0QsV0FBVyxHQUFHLElBQUksQ0FBQzt3QkFDbkIsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7NEJBQ2hCLFdBQVcsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDOzRCQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixrQ0FBa0MsV0FBVyxDQUFDLEVBQUUsOENBQThDLENBQy9GLENBQUM7d0JBQ0osQ0FBQzt3QkFDRCwwREFBMEQ7d0JBQzFELE1BQU07b0JBQ1IsQ0FBQztnQkFDSCxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsU0FBUztnQkFDWCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPO1lBQ0wsTUFBTTtZQUNOLFdBQVc7U0FDWixDQUFDO0lBQ0osQ0FBQyxDQUFDO0NBQ0g7QUFFRCxlQUFlLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5pbXBvcnQgKiBhcyB3YXNtIGZyb20gJ2VyZ28tbGliLXdhc20tbm9kZWpzJztcbmltcG9ydCB7IGJsYWtlMmIgfSBmcm9tICdibGFrZWpzJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvcixcbiAgQ2FsbGJhY2tUeXBlLFxuICBTcGVuZEluZm8sXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtZXh0cmFjdG9yJztcbmltcG9ydCB7XG4gIEJsb2NrSW5mbyxcbiAgRXJnb05ldHdvcmtUeXBlLFxuICBPdXRwdXRCb3gsXG4gIFRyYW5zYWN0aW9uLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5cbmltcG9ydCBFdmVudFRyaWdnZXJBY3Rpb24gZnJvbSAnLi4vYWN0aW9ucy9FdmVudFRyaWdnZXJBY3Rpb24nO1xuaW1wb3J0IHsgRXh0cmFjdGVkRXZlbnRUcmlnZ2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRFdmVudFRyaWdnZXInO1xuaW1wb3J0IHsgSnNvbkJJIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRXZlbnRSZXN1bHQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgRXZlbnRUcmlnZ2VyRW50aXR5IGZyb20gJy4uL2VudGl0aWVzL0V2ZW50VHJpZ2dlckVudGl0eSc7XG5cbmNsYXNzIEV2ZW50VHJpZ2dlckV4dHJhY3RvciBleHRlbmRzIEFic3RyYWN0SW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3I8XG4gIEV4dHJhY3RlZEV2ZW50VHJpZ2dlcixcbiAgRXZlbnRUcmlnZ2VyRW50aXR5XG4+IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGlvbnM6IEV2ZW50VHJpZ2dlckFjdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBldmVudFRyaWdnZXJFcmdvVHJlZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pdEVyZ29UcmVlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZnJhdWRFcmdvVHJlZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IFJXVDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICB0eXBlOiBFcmdvTmV0d29ya1R5cGUsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIFJXVDogc3RyaW5nLFxuICAgIHBlcm1pdEFkZHJlc3M6IHN0cmluZyxcbiAgICBmcmF1ZEFkZHJlc3M6IHN0cmluZyxcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcixcbiAgICBpbml0aWFsaXplID0gdHJ1ZSxcbiAgKSB7XG4gICAgc3VwZXIodHlwZSwgdXJsLCBhZGRyZXNzLCBsb2dnZXIsIGluaXRpYWxpemUpO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmV2ZW50VHJpZ2dlckVyZ29UcmVlID0gd2FzbS5BZGRyZXNzLmZyb21fYmFzZTU4KGFkZHJlc3MpXG4gICAgICAudG9fZXJnb190cmVlKClcbiAgICAgIC50b19iYXNlMTZfYnl0ZXMoKTtcbiAgICB0aGlzLnBlcm1pdEVyZ29UcmVlID0gd2FzbS5BZGRyZXNzLmZyb21fYmFzZTU4KHBlcm1pdEFkZHJlc3MpXG4gICAgICAudG9fZXJnb190cmVlKClcbiAgICAgIC50b19iYXNlMTZfYnl0ZXMoKTtcbiAgICB0aGlzLmZyYXVkRXJnb1RyZWUgPSB3YXNtLkFkZHJlc3MuZnJvbV9iYXNlNTgoZnJhdWRBZGRyZXNzKVxuICAgICAgLnRvX2VyZ29fdHJlZSgpXG4gICAgICAudG9fYmFzZTE2X2J5dGVzKCk7XG4gICAgdGhpcy5SV1QgPSBSV1Q7XG4gICAgdGhpcy5hY3Rpb25zID0gbmV3IEV2ZW50VHJpZ2dlckFjdGlvbihkYXRhU291cmNlLCB0aGlzLmxvZ2dlcik7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IElkIGZvciBjdXJyZW50IGV4dHJhY3RvclxuICAgKi9cbiAgZ2V0SWQgPSAoKSA9PiB0aGlzLmlkO1xuXG4gIC8qKlxuICAgKiBjaGVjayBwcm9wZXIgZGF0YSBmb3JtYXQgaW4gdGhlIGJveFxuICAgKiAgLSBib3ggZXJnb1RyZWVcbiAgICogIC0gUldUIGluIGZpcnN0IHRva2VuIHBsYWNlXG4gICAqICAtIHdpZExpc3RIYXNoIGluIFI0XG4gICAqICAtIGV2ZW50IGRhdGEgaW4gUjVcbiAgICogIC0gd2lkQ291bnQgaW4gUjdcbiAgICogQHBhcmFtIGJveFxuICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGJveCBoYXMgdGhlIHJlcXVpcmVkIGRhdGEgYW5kIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgaGFzRGF0YSA9IChib3g6IE91dHB1dEJveCk6IGJvb2xlYW4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoXG4gICAgICAgIGJveC5hZGRpdGlvbmFsUmVnaXN0ZXJzICYmXG4gICAgICAgIGJveC5hZGRpdGlvbmFsUmVnaXN0ZXJzLlI0ICYmXG4gICAgICAgIGJveC5hZGRpdGlvbmFsUmVnaXN0ZXJzLlI1ICYmXG4gICAgICAgIGJveC5hZGRpdGlvbmFsUmVnaXN0ZXJzLlI3ICYmXG4gICAgICAgIGJveC5hc3NldHMgJiZcbiAgICAgICAgYm94LmFzc2V0cy5sZW5ndGggPiAwICYmXG4gICAgICAgIGJveC5hc3NldHNbMF0udG9rZW5JZCA9PT0gdGhpcy5SV1QgJiZcbiAgICAgICAgYm94LmVyZ29UcmVlID09PSB0aGlzLmV2ZW50VHJpZ2dlckVyZ29UcmVlXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcGFyc2VkQm94ID0gd2FzbS5FcmdvQm94LmZyb21fanNvbihKc29uQkkuc3RyaW5naWZ5KGJveCkpO1xuICAgICAgICBjb25zdCBSNFNlcmlhbGl6ZWQgPSBwYXJzZWRCb3hcbiAgICAgICAgICAucmVnaXN0ZXJfdmFsdWUod2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI0KSFcbiAgICAgICAgICAudG9fYnl0ZV9hcnJheSgpO1xuICAgICAgICBjb25zdCBSNVNlcmlhbGl6ZWQgPSBwYXJzZWRCb3hcbiAgICAgICAgICAucmVnaXN0ZXJfdmFsdWUod2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI1KSFcbiAgICAgICAgICAudG9fY29sbF9jb2xsX2J5dGUoKTtcbiAgICAgICAgaWYgKFI0U2VyaWFsaXplZC5sZW5ndGggPj0gMSAmJiBSNVNlcmlhbGl6ZWQubGVuZ3RoID49IDEyKSByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICBgVW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCB3aGlsZSBjaGVja2luZyB0aGUgcHJvcGVyIHRyaWdnZXIgZGF0YSBmb3JtYXQgZm9yIGJveCAke2JveC5ib3hJZH06ICR7ZX1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBleHRyYWN0IGJveCBkYXRhIHRvIHByb3BlciBmb3JtYXQgKG5vdCBpbmNsdWRpbmcgc3BlbmRpbmcgaW5mb3JtYXRpb24pXG4gICAqIEBwYXJhbSBib3hcbiAgICogQHJldHVybiBleHRyYWN0ZWQgZGF0YSBpbiBwcm9wZXIgZm9ybWF0XG4gICAqL1xuICBleHRyYWN0Qm94RGF0YSA9IChcbiAgICBib3g6IE91dHB1dEJveCxcbiAgKTogT21pdDxFeHRyYWN0ZWRFdmVudFRyaWdnZXIsICdzcGVuZEJsb2NrJyB8ICdzcGVuZEhlaWdodCc+IHwgdW5kZWZpbmVkID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkQm94ID0gd2FzbS5FcmdvQm94LmZyb21fanNvbihKc29uQkkuc3RyaW5naWZ5KGJveCkpO1xuICAgICAgY29uc3QgUjRTZXJpYWxpemVkID0gcGFyc2VkQm94XG4gICAgICAgIC5yZWdpc3Rlcl92YWx1ZSh3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjQpIVxuICAgICAgICAudG9fYnl0ZV9hcnJheSgpO1xuICAgICAgY29uc3QgUjVTZXJpYWxpemVkID0gcGFyc2VkQm94XG4gICAgICAgIC5yZWdpc3Rlcl92YWx1ZSh3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjUpIVxuICAgICAgICAudG9fY29sbF9jb2xsX2J5dGUoKTtcblxuICAgICAgY29uc3QgV0lEc0NvdW50ID0gcGFyc2VkQm94XG4gICAgICAgIC5yZWdpc3Rlcl92YWx1ZSh3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjcpIVxuICAgICAgICAudG9faTMyKCk7XG4gICAgICBjb25zdCBXSURzSGFzaCA9IEJ1ZmZlci5mcm9tKFI0U2VyaWFsaXplZCkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgY29uc3Qgc291cmNlVHhJZCA9IEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFswXSkudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IGV2ZW50SWQgPSBCdWZmZXIuZnJvbShibGFrZTJiKHNvdXJjZVR4SWQsIHVuZGVmaW5lZCwgMzIpKS50b1N0cmluZyhcbiAgICAgICAgJ2hleCcsXG4gICAgICApO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXZlbnRJZDogZXZlbnRJZCxcbiAgICAgICAgdHhJZDogYm94LnRyYW5zYWN0aW9uSWQsXG4gICAgICAgIGJveElkOiBib3guYm94SWQsXG4gICAgICAgIHNlcmlhbGl6ZWQ6IEJ1ZmZlci5mcm9tKHBhcnNlZEJveC5zaWdtYV9zZXJpYWxpemVfYnl0ZXMoKSkudG9TdHJpbmcoXG4gICAgICAgICAgJ2Jhc2U2NCcsXG4gICAgICAgICksXG4gICAgICAgIHRvQ2hhaW46IEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFsyXSkudG9TdHJpbmcoKSxcbiAgICAgICAgdG9BZGRyZXNzOiBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbNF0pLnRvU3RyaW5nKCksXG4gICAgICAgIG5ldHdvcmtGZWU6IEJpZ0ludChcbiAgICAgICAgICAnMHgnICsgQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzddKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICkudG9TdHJpbmcoMTApLFxuICAgICAgICBicmlkZ2VGZWU6IEJpZ0ludChcbiAgICAgICAgICAnMHgnICsgQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzZdKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICkudG9TdHJpbmcoMTApLFxuICAgICAgICBhbW91bnQ6IEJpZ0ludChcbiAgICAgICAgICAnMHgnICsgQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzVdKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICkudG9TdHJpbmcoMTApLFxuICAgICAgICBzb3VyY2VDaGFpblRva2VuSWQ6IEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFs4XSkudG9TdHJpbmcoKSxcbiAgICAgICAgdGFyZ2V0Q2hhaW5Ub2tlbklkOiBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbOV0pLnRvU3RyaW5nKCksXG4gICAgICAgIHNvdXJjZVR4SWQ6IHNvdXJjZVR4SWQsXG4gICAgICAgIGZyb21DaGFpbjogQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzFdKS50b1N0cmluZygpLFxuICAgICAgICBmcm9tQWRkcmVzczogQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzNdKS50b1N0cmluZygpLFxuICAgICAgICBzb3VyY2VCbG9ja0lkOiBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbMTBdKS50b1N0cmluZygpLFxuICAgICAgICBXSURzQ291bnQ6IFdJRHNDb3VudCxcbiAgICAgICAgV0lEc0hhc2g6IFdJRHNIYXNoLFxuICAgICAgICBzb3VyY2VDaGFpbkhlaWdodDogTnVtYmVyKFxuICAgICAgICAgIEJpZ0ludCgnMHgnICsgQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzExXSkudG9TdHJpbmcoJ2hleCcpKS50b1N0cmluZyhcbiAgICAgICAgICAgIDEwLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oXG4gICAgICAgIGBVbmV4cGVjdGVkIGVycm9yIG9jY3VycmVkIHdoaWxlIGV4dHJhY3RpbmcgdHJpZ2dlciBkYXRhIGZvciBib3ggJHtib3guYm94SWR9OiAke2V9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogZ2V0cyBibG9jayBpZCBhbmQgdHJhbnNhY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrIGFuZCBzYXZlcyBpZiB0aGV5IGFyZSB2YWxpZCByb3NlblxuICAgKiAgdHJhbnNhY3Rpb25zIGFuZCBpbiBjYXNlIG9mIHN1Y2Nlc3MgcmV0dXJuIHRydWUgYW5kIGluIGNhc2Ugb2YgZmFpbHVyZSByZXR1cm5zIGZhbHNlXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gdHhzXG4gICAqL1xuICBwcm9jZXNzVHJhbnNhY3Rpb25zID0gYXN5bmMgKFxuICAgIHR4czogQXJyYXk8VHJhbnNhY3Rpb24+LFxuICAgIGJsb2NrOiBCbG9ja0luZm8sXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBib3hlczogQXJyYXk8RXh0cmFjdGVkRXZlbnRUcmlnZ2VyPiA9IFtdO1xuICAgICAgY29uc3Qgc3BlbmRJbmZvQXJyYXk6IEFycmF5PFNwZW5kSW5mbz4gPSBbXTtcbiAgICAgIHR4cy5mb3JFYWNoKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAvLyBleHRyYWN0IGV2ZW50IHJlc3VsdFxuICAgICAgICBjb25zdCB7IHJlc3VsdCwgcGF5bWVudFR4SWQgfSA9IHRoaXMuZXh0cmFjdEV2ZW50UmVzdWx0KHRyYW5zYWN0aW9uKTtcbiAgICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2YgdHJhbnNhY3Rpb24ub3V0cHV0cykge1xuICAgICAgICAgIC8vIGV4dHJhY3Qgb3V0cHV0IGJveCBkYXRhXG4gICAgICAgICAgaWYgKHRoaXMuaGFzRGF0YShvdXRwdXQpKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgICAgYFRyeWluZyB0byBleHRyYWN0IGRhdGEgZnJvbSBib3ggJHtvdXRwdXQuYm94SWR9IGF0IGhlaWdodCAke2Jsb2NrLmhlaWdodH1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmV4dHJhY3RCb3hEYXRhKG91dHB1dCk7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgICAgICBgRXh0cmFjdGVkIGRhdGEgJHtKc29uQkkuc3RyaW5naWZ5KGRhdGEpfSBmcm9tIGJveCAke1xuICAgICAgICAgICAgICAgICAgb3V0cHV0LmJveElkXG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGJveGVzLnB1c2goZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHByb2Nlc3MgaW5wdXRzXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0cmFuc2FjdGlvbi5pbnB1dHMubGVuZ3RoOyBpbmRleCsrKVxuICAgICAgICAgIHNwZW5kSW5mb0FycmF5LnB1c2goe1xuICAgICAgICAgICAgdHhJZDogdHJhbnNhY3Rpb24uaWQsXG4gICAgICAgICAgICBib3hJZDogdHJhbnNhY3Rpb24uaW5wdXRzW2luZGV4XS5ib3hJZCxcbiAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgIGV4dHJhczogeyByZXN1bHQsIHBheW1lbnRUeElkIH0sXG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGlmIChib3hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICghKGF3YWl0IHRoaXMuYWN0aW9ucy5zdG9yZUJveGVzKGJveGVzLCBibG9jaywgdGhpcy5nZXRJZCgpKSkpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICAgICAgYERhdGEgaW5zZXJ0aW9uIGZhaWxlZCBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9IGZvciBleHRyYWN0b3IgJHt0aGlzLmlkfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50cmlnZ2VyQ2FsbGJhY2tzKENhbGxiYWNrVHlwZS5JbnNlcnQsIGJveGVzKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNwZW50RGF0YSA9IGF3YWl0IHRoaXMuYWN0aW9ucy5zcGVuZEJveGVzKFxuICAgICAgICBzcGVuZEluZm9BcnJheSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIHRoaXMuaWQsXG4gICAgICApO1xuICAgICAgdGhpcy50cmlnZ2VyQ2FsbGJhY2tzKENhbGxiYWNrVHlwZS5TcGVuZCwgc3BlbnREYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgYEVycm9yIGluIHN0b3JpbmcgZGF0YSBpbiAke3RoaXMuZ2V0SWQoKX0gb2YgdGhlIGJsb2NrICR7XG4gICAgICAgICAgYmxvY2suaGVpZ2h0XG4gICAgICAgIH06ICR7ZX1gLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIHJlc3VsdCBhbmQgcGF5bWVudFR4SWQgZnJvbSBhIHRyYW5zYWN0aW9uXG4gICAqIHJldHVybnMgJ3Vua25vd24nIGFzIHJlc3VsdCB3aGVuIHR4IGlzIG5laXRoZXIgZnJhdWQgb3Igc3VjY2Vzc2Z1bFxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnNcbiAgICovXG4gIHByb3RlY3RlZCBleHRyYWN0RXZlbnRSZXN1bHQgPSAodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IEV2ZW50UmVzdWx0LnVua25vd247XG4gICAgbGV0IHBheW1lbnRUeElkID0gJyc7XG4gICAgaWYgKHRyYW5zYWN0aW9uLm91dHB1dHNbMF0uZXJnb1RyZWUgPT09IHRoaXMuZnJhdWRFcmdvVHJlZSlcbiAgICAgIHJlc3VsdCA9IEV2ZW50UmVzdWx0LmZyYXVkO1xuICAgIGVsc2UgaWYgKHRyYW5zYWN0aW9uLm91dHB1dHNbMF0uZXJnb1RyZWUgPT09IHRoaXMucGVybWl0RXJnb1RyZWUpIHtcbiAgICAgIHJlc3VsdCA9IEV2ZW50UmVzdWx0LnN1Y2Nlc3NmdWw7XG4gICAgICAvLyBmaW5kIGZpcnN0IG5vbi13YXRjaGVyIGJveCB3aXRoIFI0IHZhbHVlXG4gICAgICBmb3IgKGNvbnN0IGJveCBvZiB0cmFuc2FjdGlvbi5vdXRwdXRzKSB7XG4gICAgICAgIC8vIGlmIGl0J3Mgd2F0Y2hlciBib3gsIHNraXAgaXRcbiAgICAgICAgaWYgKGJveC5lcmdvVHJlZSA9PT0gdGhpcy5wZXJtaXRFcmdvVHJlZSkgY29udGludWU7XG4gICAgICAgIGNvbnN0IG91dHB1dFBhcnNlZCA9IHdhc20uRXJnb0JveC5mcm9tX2pzb24oSnNvbkJJLnN0cmluZ2lmeShib3gpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBSNFNlcmlhbGl6ZWQgPSBvdXRwdXRQYXJzZWRcbiAgICAgICAgICAgIC5yZWdpc3Rlcl92YWx1ZSh3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjQpXG4gICAgICAgICAgICA/LnRvX2J5dGVfYXJyYXkoKTtcbiAgICAgICAgICBpZiAoUjRTZXJpYWxpemVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxldCB0eElkID0gQnVmZmVyLmZyb20oUjRTZXJpYWxpemVkKS50b1N0cmluZygpO1xuICAgICAgICAgICAgLy8gd2UgYXNzdW1lZCB0eElkIG9ubHkgaW5jbHVkZXMgdGhlc2UgY2hhcmFjdGVyc1xuICAgICAgICAgICAgaWYgKCF0eElkLm1hdGNoKC9eWzAtOWEtekEtWlxcLV8uXSskLykpIHtcbiAgICAgICAgICAgICAgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICB0eElkID0gQnVmZmVyLmZyb20oUjRTZXJpYWxpemVkKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXltZW50VHhJZCA9IHR4SWQ7XG4gICAgICAgICAgICBpZiAodHhJZCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgcGF5bWVudFR4SWQgPSB0cmFuc2FjdGlvbi5pZDtcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICAgICAgYHN1Y2Nlc3NmdWwgZXZlbnQgaXMgc3BlbnQuIHR4IFske3RyYW5zYWN0aW9uLmlkfV0gaXMgYm90aCBwYXltZW50IGFuZCByZXdhcmQgZGlzdHJpYnV0aW9uIHR4YCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHBheW1lbnRUeElkIGlzIGV4dHJhY3RlZC4gbm8gbmVlZCB0byBwcm9jZXNzIG5leHQgYm94ZXNcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICByZXN1bHQsXG4gICAgICBwYXltZW50VHhJZCxcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudFRyaWdnZXJFeHRyYWN0b3I7XG4iXX0=
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRUcmlnZ2VyRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2V4dHJhY3Rvci9ldmVudFRyaWdnZXJFeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixDQUFDO0FBRTdDLE9BQU8sRUFDTCxrQ0FBa0MsRUFDbEMsWUFBWSxHQUViLE1BQU0sa0NBQWtDLENBQUM7QUFVMUMsT0FBTyxrQkFBa0IsTUFBTSwrQkFBK0IsQ0FBQztBQUcvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsTUFBTSxxQkFBc0IsU0FBUSxrQ0FHbkM7SUFDQyxFQUFFLENBQVM7SUFDUSxPQUFPLENBQXFCO0lBQzlCLG9CQUFvQixDQUFTO0lBQzdCLGNBQWMsQ0FBUztJQUN2QixhQUFhLENBQVM7SUFDdEIsR0FBRyxDQUFTO0lBRTdCLFlBQ0UsRUFBVSxFQUNWLFVBQXNCLEVBQ3RCLElBQXFCLEVBQ3JCLEdBQVcsRUFDWCxPQUFlLEVBQ2YsR0FBVyxFQUNYLGFBQXFCLEVBQ3JCLFlBQW9CLEVBQ3BCLE1BQXVCLEVBQ3ZCLFVBQVUsR0FBRyxJQUFJO1FBRWpCLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO2FBQzFELFlBQVksRUFBRTthQUNkLGVBQWUsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8s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QUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ25ELENBQUM7d0JBQ0QsV0FBVyxHQUFHLElBQUksQ0FBQzt3QkFDbkIsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7NEJBQ2hCLFdBQVcsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDOzRCQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixrQ0FBa0MsV0FBVyxDQUFDLEVBQUUsOENBQThDLENBQy9GLENBQUM7d0JBQ0osQ0FBQzt3QkFDRCwwREFBMEQ7d0JBQzFELE1BQU07b0JBQ1IsQ0FBQztnQkFDSCxDQUFDO2dCQUFDLE1BQU0sQ0FBQztvQkFDUCxTQUFTO2dCQUNYLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU87WUFDTCxNQUFNO1lBQ04sV0FBVztTQUNaLENBQUM7SUFDSixDQUFDLENBQUM7Q0FDSDtBQUVELGVBQWUscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBibGFrZTJiIH0gZnJvbSAnYmxha2Vqcyc7XG5pbXBvcnQgKiBhcyB3YXNtIGZyb20gJ2VyZ28tbGliLXdhc20tbm9kZWpzJztcblxuaW1wb3J0IHtcbiAgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvcixcbiAgQ2FsbGJhY2tUeXBlLFxuICBTcGVuZEluZm8sXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtZXh0cmFjdG9yJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5pbXBvcnQge1xuICBCbG9ja0luZm8sXG4gIEVyZ29OZXR3b3JrVHlwZSxcbiAgT3V0cHV0Qm94LFxuICBUcmFuc2FjdGlvbixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyLWludGVyZmFjZXMnO1xuXG5pbXBvcnQgRXZlbnRUcmlnZ2VyQWN0aW9uIGZyb20gJy4uL2FjdGlvbnMvZXZlbnRUcmlnZ2VyQWN0aW9uJztcbmltcG9ydCBFdmVudFRyaWdnZXJFbnRpdHkgZnJvbSAnLi4vZW50aXRpZXMvZXZlbnRUcmlnZ2VyRW50aXR5JztcbmltcG9ydCB7IEV4dHJhY3RlZEV2ZW50VHJpZ2dlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0cmFjdGVkRXZlbnRUcmlnZ2VyJztcbmltcG9ydCB7IEV2ZW50UmVzdWx0IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgSnNvbkJJIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jbGFzcyBFdmVudFRyaWdnZXJFeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdEluaXRpYWxpemFibGVFcmdvRXh0cmFjdG9yPFxuICBFeHRyYWN0ZWRFdmVudFRyaWdnZXIsXG4gIEV2ZW50VHJpZ2dlckVudGl0eVxuPiB7XG4gIGlkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBhY3Rpb25zOiBFdmVudFRyaWdnZXJBY3Rpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRUcmlnZ2VyRXJnb1RyZWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBwZXJtaXRFcmdvVHJlZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGZyYXVkRXJnb1RyZWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBSV1Q6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZDogc3RyaW5nLFxuICAgIGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsXG4gICAgdHlwZTogRXJnb05ldHdvcmtUeXBlLFxuICAgIHVybDogc3RyaW5nLFxuICAgIGFkZHJlc3M6IHN0cmluZyxcbiAgICBSV1Q6IHN0cmluZyxcbiAgICBwZXJtaXRBZGRyZXNzOiBzdHJpbmcsXG4gICAgZnJhdWRBZGRyZXNzOiBzdHJpbmcsXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIsXG4gICAgaW5pdGlhbGl6ZSA9IHRydWUsXG4gICkge1xuICAgIHN1cGVyKHR5cGUsIHVybCwgYWRkcmVzcywgbG9nZ2VyLCBpbml0aWFsaXplKTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5ldmVudFRyaWdnZXJFcmdvVHJlZSA9IHdhc20uQWRkcmVzcy5mcm9tX2Jhc2U1OChhZGRyZXNzKVxuICAgICAgLnRvX2VyZ29fdHJlZSgpXG4gICAgICAudG9fYmFzZTE2X2J5dGVzKCk7XG4gICAgdGhpcy5wZXJtaXRFcmdvVHJlZSA9IHdhc20uQWRkcmVzcy5mcm9tX2Jhc2U1OChwZXJtaXRBZGRyZXNzKVxuICAgICAgLnRvX2VyZ29fdHJlZSgpXG4gICAgICAudG9fYmFzZTE2X2J5dGVzKCk7XG4gICAgdGhpcy5mcmF1ZEVyZ29UcmVlID0gd2FzbS5BZGRyZXNzLmZyb21fYmFzZTU4KGZyYXVkQWRkcmVzcylcbiAgICAgIC50b19lcmdvX3RyZWUoKVxuICAgICAgLnRvX2Jhc2UxNl9ieXRlcygpO1xuICAgIHRoaXMuUldUID0gUldUO1xuICAgIHRoaXMuYWN0aW9ucyA9IG5ldyBFdmVudFRyaWdnZXJBY3Rpb24oZGF0YVNvdXJjZSwgdGhpcy5sb2dnZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBJZCBmb3IgY3VycmVudCBleHRyYWN0b3JcbiAgICovXG4gIGdldElkID0gKCkgPT4gdGhpcy5pZDtcblxuICAvKipcbiAgICogY2hlY2sgcHJvcGVyIGRhdGEgZm9ybWF0IGluIHRoZSBib3hcbiAgICogIC0gYm94IGVyZ29UcmVlXG4gICAqICAtIFJXVCBpbiBmaXJzdCB0b2tlbiBwbGFjZVxuICAgKiAgLSB3aWRMaXN0SGFzaCBpbiBSNFxuICAgKiAgLSBldmVudCBkYXRhIGluIFI1XG4gICAqICAtIHdpZENvdW50IGluIFI3XG4gICAqIEBwYXJhbSBib3hcbiAgICogQHJldHVybiB0cnVlIGlmIHRoZSBib3ggaGFzIHRoZSByZXF1aXJlZCBkYXRhIGFuZCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGhhc0RhdGEgPSAoYm94OiBPdXRwdXRCb3gpOiBib29sZWFuID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKFxuICAgICAgICBib3guYWRkaXRpb25hbFJlZ2lzdGVycyAmJlxuICAgICAgICBib3guYWRkaXRpb25hbFJlZ2lzdGVycy5SNCAmJlxuICAgICAgICBib3guYWRkaXRpb25hbFJlZ2lzdGVycy5SNSAmJlxuICAgICAgICBib3guYWRkaXRpb25hbFJlZ2lzdGVycy5SNyAmJlxuICAgICAgICBib3guYXNzZXRzICYmXG4gICAgICAgIGJveC5hc3NldHMubGVuZ3RoID4gMCAmJlxuICAgICAgICBib3guYXNzZXRzWzBdLnRva2VuSWQgPT09IHRoaXMuUldUICYmXG4gICAgICAgIGJveC5lcmdvVHJlZSA9PT0gdGhpcy5ldmVudFRyaWdnZXJFcmdvVHJlZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZEJveCA9IHdhc20uRXJnb0JveC5mcm9tX2pzb24oSnNvbkJJLnN0cmluZ2lmeShib3gpKTtcbiAgICAgICAgY29uc3QgUjRTZXJpYWxpemVkID0gcGFyc2VkQm94XG4gICAgICAgICAgLnJlZ2lzdGVyX3ZhbHVlKHdhc20uTm9uTWFuZGF0b3J5UmVnaXN0ZXJJZC5SNCkhXG4gICAgICAgICAgLnRvX2J5dGVfYXJyYXkoKTtcbiAgICAgICAgY29uc3QgUjVTZXJpYWxpemVkID0gcGFyc2VkQm94XG4gICAgICAgICAgLnJlZ2lzdGVyX3ZhbHVlKHdhc20uTm9uTWFuZGF0b3J5UmVnaXN0ZXJJZC5SNSkhXG4gICAgICAgICAgLnRvX2NvbGxfY29sbF9ieXRlKCk7XG4gICAgICAgIGlmIChSNFNlcmlhbGl6ZWQubGVuZ3RoID49IDEgJiYgUjVTZXJpYWxpemVkLmxlbmd0aCA+PSAxMikgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgYFVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQgd2hpbGUgY2hlY2tpbmcgdGhlIHByb3BlciB0cmlnZ2VyIGRhdGEgZm9ybWF0IGZvciBib3ggJHtib3guYm94SWR9OiAke2V9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICAvKipcbiAgICogZXh0cmFjdCBib3ggZGF0YSB0byBwcm9wZXIgZm9ybWF0IChub3QgaW5jbHVkaW5nIHNwZW5kaW5nIGluZm9ybWF0aW9uKVxuICAgKiBAcGFyYW0gYm94XG4gICAqIEByZXR1cm4gZXh0cmFjdGVkIGRhdGEgaW4gcHJvcGVyIGZvcm1hdFxuICAgKi9cbiAgZXh0cmFjdEJveERhdGEgPSAoXG4gICAgYm94OiBPdXRwdXRCb3gsXG4gICk6IE9taXQ8RXh0cmFjdGVkRXZlbnRUcmlnZ2VyLCAnc3BlbmRCbG9jaycgfCAnc3BlbmRIZWlnaHQnPiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZEJveCA9IHdhc20uRXJnb0JveC5mcm9tX2pzb24oSnNvbkJJLnN0cmluZ2lmeShib3gpKTtcbiAgICAgIGNvbnN0IFI0U2VyaWFsaXplZCA9IHBhcnNlZEJveFxuICAgICAgICAucmVnaXN0ZXJfdmFsdWUod2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI0KSFcbiAgICAgICAgLnRvX2J5dGVfYXJyYXkoKTtcbiAgICAgIGNvbnN0IFI1U2VyaWFsaXplZCA9IHBhcnNlZEJveFxuICAgICAgICAucmVnaXN0ZXJfdmFsdWUod2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI1KSFcbiAgICAgICAgLnRvX2NvbGxfY29sbF9ieXRlKCk7XG5cbiAgICAgIGNvbnN0IFdJRHNDb3VudCA9IHBhcnNlZEJveFxuICAgICAgICAucmVnaXN0ZXJfdmFsdWUod2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI3KSFcbiAgICAgICAgLnRvX2kzMigpO1xuICAgICAgY29uc3QgV0lEc0hhc2ggPSBCdWZmZXIuZnJvbShSNFNlcmlhbGl6ZWQpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGNvbnN0IHNvdXJjZVR4SWQgPSBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbMF0pLnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBldmVudElkID0gQnVmZmVyLmZyb20oYmxha2UyYihzb3VyY2VUeElkLCB1bmRlZmluZWQsIDMyKSkudG9TdHJpbmcoXG4gICAgICAgICdoZXgnLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGV2ZW50SWQ6IGV2ZW50SWQsXG4gICAgICAgIHR4SWQ6IGJveC50cmFuc2FjdGlvbklkLFxuICAgICAgICBib3hJZDogYm94LmJveElkLFxuICAgICAgICBzZXJpYWxpemVkOiBCdWZmZXIuZnJvbShwYXJzZWRCb3guc2lnbWFfc2VyaWFsaXplX2J5dGVzKCkpLnRvU3RyaW5nKFxuICAgICAgICAgICdiYXNlNjQnLFxuICAgICAgICApLFxuICAgICAgICB0b0NoYWluOiBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbMl0pLnRvU3RyaW5nKCksXG4gICAgICAgIHRvQWRkcmVzczogQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzRdKS50b1N0cmluZygpLFxuICAgICAgICBuZXR3b3JrRmVlOiBCaWdJbnQoXG4gICAgICAgICAgJzB4JyArIEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFs3XSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICApLnRvU3RyaW5nKDEwKSxcbiAgICAgICAgYnJpZGdlRmVlOiBCaWdJbnQoXG4gICAgICAgICAgJzB4JyArIEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFs2XSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICApLnRvU3RyaW5nKDEwKSxcbiAgICAgICAgYW1vdW50OiBCaWdJbnQoXG4gICAgICAgICAgJzB4JyArIEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFs1XSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICApLnRvU3RyaW5nKDEwKSxcbiAgICAgICAgc291cmNlQ2hhaW5Ub2tlbklkOiBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbOF0pLnRvU3RyaW5nKCksXG4gICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzldKS50b1N0cmluZygpLFxuICAgICAgICBzb3VyY2VUeElkOiBzb3VyY2VUeElkLFxuICAgICAgICBmcm9tQ2hhaW46IEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFsxXSkudG9TdHJpbmcoKSxcbiAgICAgICAgZnJvbUFkZHJlc3M6IEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFszXSkudG9TdHJpbmcoKSxcbiAgICAgICAgc291cmNlQmxvY2tJZDogQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzEwXSkudG9TdHJpbmcoKSxcbiAgICAgICAgV0lEc0NvdW50OiBXSURzQ291bnQsXG4gICAgICAgIFdJRHNIYXNoOiBXSURzSGFzaCxcbiAgICAgICAgc291cmNlQ2hhaW5IZWlnaHQ6IE51bWJlcihcbiAgICAgICAgICBCaWdJbnQoJzB4JyArIEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFsxMV0pLnRvU3RyaW5nKCdoZXgnKSkudG9TdHJpbmcoXG4gICAgICAgICAgICAxMCxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICBgVW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCB3aGlsZSBleHRyYWN0aW5nIHRyaWdnZXIgZGF0YSBmb3IgYm94ICR7Ym94LmJveElkfTogJHtlfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIGdldHMgYmxvY2sgaWQgYW5kIHRyYW5zYWN0aW9ucyBjb3JyZXNwb25kaW5nIHRvIHRoZSBibG9jayBhbmQgc2F2ZXMgaWYgdGhleSBhcmUgdmFsaWQgcm9zZW5cbiAgICogIHRyYW5zYWN0aW9ucyBhbmQgaW4gY2FzZSBvZiBzdWNjZXNzIHJldHVybiB0cnVlIGFuZCBpbiBjYXNlIG9mIGZhaWx1cmUgcmV0dXJucyBmYWxzZVxuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIHR4c1xuICAgKi9cbiAgcHJvY2Vzc1RyYW5zYWN0aW9ucyA9IGFzeW5jIChcbiAgICB0eHM6IEFycmF5PFRyYW5zYWN0aW9uPixcbiAgICBibG9jazogQmxvY2tJbmZvLFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYm94ZXM6IEFycmF5PEV4dHJhY3RlZEV2ZW50VHJpZ2dlcj4gPSBbXTtcbiAgICAgIGNvbnN0IHNwZW5kSW5mb0FycmF5OiBBcnJheTxTcGVuZEluZm8+ID0gW107XG4gICAgICB0eHMuZm9yRWFjaCgodHJhbnNhY3Rpb24pID0+IHtcbiAgICAgICAgLy8gZXh0cmFjdCBldmVudCByZXN1bHRcbiAgICAgICAgY29uc3QgeyByZXN1bHQsIHBheW1lbnRUeElkIH0gPSB0aGlzLmV4dHJhY3RFdmVudFJlc3VsdCh0cmFuc2FjdGlvbik7XG4gICAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIHRyYW5zYWN0aW9uLm91dHB1dHMpIHtcbiAgICAgICAgICAvLyBleHRyYWN0IG91dHB1dCBib3ggZGF0YVxuICAgICAgICAgIGlmICh0aGlzLmhhc0RhdGEob3V0cHV0KSkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICAgIGBUcnlpbmcgdG8gZXh0cmFjdCBkYXRhIGZyb20gYm94ICR7b3V0cHV0LmJveElkfSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5leHRyYWN0Qm94RGF0YShvdXRwdXQpO1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICAgICAgYEV4dHJhY3RlZCBkYXRhICR7SnNvbkJJLnN0cmluZ2lmeShkYXRhKX0gZnJvbSBib3ggJHtcbiAgICAgICAgICAgICAgICAgIG91dHB1dC5ib3hJZFxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBib3hlcy5wdXNoKGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBwcm9jZXNzIGlucHV0c1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdHJhbnNhY3Rpb24uaW5wdXRzLmxlbmd0aDsgaW5kZXgrKylcbiAgICAgICAgICBzcGVuZEluZm9BcnJheS5wdXNoKHtcbiAgICAgICAgICAgIHR4SWQ6IHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICAgICAgYm94SWQ6IHRyYW5zYWN0aW9uLmlucHV0c1tpbmRleF0uYm94SWQsXG4gICAgICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgICAgICBleHRyYXM6IHsgcmVzdWx0LCBwYXltZW50VHhJZCB9LFxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBpZiAoYm94ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoIShhd2FpdCB0aGlzLmFjdGlvbnMuc3RvcmVCb3hlcyhib3hlcywgYmxvY2ssIHRoaXMuZ2V0SWQoKSkpKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICAgIGBEYXRhIGluc2VydGlvbiBmYWlsZWQgYXQgaGVpZ2h0ICR7YmxvY2suaGVpZ2h0fSBmb3IgZXh0cmFjdG9yICR7dGhpcy5pZH1gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHJpZ2dlckNhbGxiYWNrcyhDYWxsYmFja1R5cGUuSW5zZXJ0LCBib3hlcyk7XG4gICAgICB9XG4gICAgICBjb25zdCBzcGVudERhdGEgPSBhd2FpdCB0aGlzLmFjdGlvbnMuc3BlbmRCb3hlcyhcbiAgICAgICAgc3BlbmRJbmZvQXJyYXksXG4gICAgICAgIGJsb2NrLFxuICAgICAgICB0aGlzLmlkLFxuICAgICAgKTtcbiAgICAgIHRoaXMudHJpZ2dlckNhbGxiYWNrcyhDYWxsYmFja1R5cGUuU3BlbmQsIHNwZW50RGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBFcnJvciBpbiBzdG9yaW5nIGRhdGEgaW4gJHt0aGlzLmdldElkKCl9IG9mIHRoZSBibG9jayAke1xuICAgICAgICAgIGJsb2NrLmhlaWdodFxuICAgICAgICB9OiAke2V9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBleHRyYWN0cyByZXN1bHQgYW5kIHBheW1lbnRUeElkIGZyb20gYSB0cmFuc2FjdGlvblxuICAgKiByZXR1cm5zICd1bmtub3duJyBhcyByZXN1bHQgd2hlbiB0eCBpcyBuZWl0aGVyIGZyYXVkIG9yIHN1Y2Nlc3NmdWxcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcm90ZWN0ZWQgZXh0cmFjdEV2ZW50UmVzdWx0ID0gKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikgPT4ge1xuICAgIGxldCByZXN1bHQgPSBFdmVudFJlc3VsdC51bmtub3duO1xuICAgIGxldCBwYXltZW50VHhJZCA9ICcnO1xuICAgIGlmICh0cmFuc2FjdGlvbi5vdXRwdXRzWzBdLmVyZ29UcmVlID09PSB0aGlzLmZyYXVkRXJnb1RyZWUpXG4gICAgICByZXN1bHQgPSBFdmVudFJlc3VsdC5mcmF1ZDtcbiAgICBlbHNlIGlmICh0cmFuc2FjdGlvbi5vdXRwdXRzWzBdLmVyZ29UcmVlID09PSB0aGlzLnBlcm1pdEVyZ29UcmVlKSB7XG4gICAgICByZXN1bHQgPSBFdmVudFJlc3VsdC5zdWNjZXNzZnVsO1xuICAgICAgLy8gZmluZCBmaXJzdCBub24td2F0Y2hlciBib3ggd2l0aCBSNCB2YWx1ZVxuICAgICAgZm9yIChjb25zdCBib3ggb2YgdHJhbnNhY3Rpb24ub3V0cHV0cykge1xuICAgICAgICAvLyBpZiBpdCdzIHdhdGNoZXIgYm94LCBza2lwIGl0XG4gICAgICAgIGlmIChib3guZXJnb1RyZWUgPT09IHRoaXMucGVybWl0RXJnb1RyZWUpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBvdXRwdXRQYXJzZWQgPSB3YXNtLkVyZ29Cb3guZnJvbV9qc29uKEpzb25CSS5zdHJpbmdpZnkoYm94KSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgUjRTZXJpYWxpemVkID0gb3V0cHV0UGFyc2VkXG4gICAgICAgICAgICAucmVnaXN0ZXJfdmFsdWUod2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI0KVxuICAgICAgICAgICAgPy50b19ieXRlX2FycmF5KCk7XG4gICAgICAgICAgaWYgKFI0U2VyaWFsaXplZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsZXQgdHhJZCA9IEJ1ZmZlci5mcm9tKFI0U2VyaWFsaXplZCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIC8vIHdlIGFzc3VtZWQgdHhJZCBvbmx5IGluY2x1ZGVzIHRoZXNlIGNoYXJhY3RlcnNcbiAgICAgICAgICAgIGlmICghdHhJZC5tYXRjaCgvXlswLTlhLXpBLVpcXC1fLl0rJC8pKSB7XG4gICAgICAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgdHhJZCA9IEJ1ZmZlci5mcm9tKFI0U2VyaWFsaXplZCkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGF5bWVudFR4SWQgPSB0eElkO1xuICAgICAgICAgICAgaWYgKHR4SWQgPT09ICcnKSB7XG4gICAgICAgICAgICAgIHBheW1lbnRUeElkID0gdHJhbnNhY3Rpb24uaWQ7XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICAgIGBzdWNjZXNzZnVsIGV2ZW50IGlzIHNwZW50LiB0eCBbJHt0cmFuc2FjdGlvbi5pZH1dIGlzIGJvdGggcGF5bWVudCBhbmQgcmV3YXJkIGRpc3RyaWJ1dGlvbiB0eGAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBwYXltZW50VHhJZCBpcyBleHRyYWN0ZWQuIG5vIG5lZWQgdG8gcHJvY2VzcyBuZXh0IGJveGVzXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICByZXN1bHQsXG4gICAgICBwYXltZW50VHhJZCxcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudFRyaWdnZXJFeHRyYWN0b3I7XG4iXX0=
|