sliftutils 1.7.120 → 1.7.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/treeSummary.ts.cache +2 -2
- package/misc/dist/environment.ts.cache +2 -2
- package/misc/dist/getSecret.ts.cache +2 -2
- package/misc/dist/strings.ts.cache +2 -2
- package/misc/dist/zip.ts.cache +2 -2
- package/misc/https/dist/certs.ts.cache +2 -2
- package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
- package/package.json +1 -1
- package/render-utils/dist/observer.tsx.cache +2 -2
- package/storage/archiveHelpers.ts +19 -7
- package/storage/dist/ArchivesDisk.ts.cache +2 -2
- package/storage/dist/FileFolderAPI.tsx.cache +2 -2
- package/storage/dist/IArchives.ts.cache +2 -2
- package/storage/dist/IndexedDBFileFolderAPI.ts.cache +2 -2
- package/storage/dist/JSONStorage.ts.cache +2 -2
- package/storage/dist/PendingManager.tsx.cache +2 -2
- package/storage/dist/StreamingLogs.ts.cache +2 -2
- package/storage/dist/TransactionFile.ts.cache +2 -2
- package/storage/dist/TransactionStorage.ts.cache +2 -2
- package/storage/dist/archiveHelpers.ts.cache +24 -9
- package/storage/dist/backblaze.ts.cache +2 -2
- package/storage/dist/fileSystemPointer.ts.cache +2 -2
- package/storage/dist/remoteFileStorage.ts.cache +2 -2
- package/storage/remoteStorage/dist/ArchivesDelayed.ts.cache +2 -2
- package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +2 -2
- package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +2 -2
- package/storage/remoteStorage/dist/accessStats.ts.cache +2 -2
- package/storage/remoteStorage/dist/blobStore.ts.cache +2 -2
- package/storage/remoteStorage/dist/bucketDisk.ts.cache +2 -2
- package/storage/remoteStorage/dist/certTrustModal.tsx.cache +2 -2
- package/storage/remoteStorage/dist/chainStartup.ts.cache +2 -2
- package/storage/remoteStorage/dist/cliArgs.ts.cache +2 -2
- package/storage/remoteStorage/dist/createArchives.ts.cache +2 -2
- package/storage/remoteStorage/dist/deployTakeover.ts.cache +2 -2
- package/storage/remoteStorage/dist/intermediateManagement.ts.cache +2 -2
- package/storage/remoteStorage/dist/intermediateSources.ts.cache +2 -2
- package/storage/remoteStorage/dist/remoteConfig.ts.cache +2 -2
- package/storage/remoteStorage/dist/serverConfig.ts.cache +2 -2
- package/storage/remoteStorage/dist/sourceWrapper.ts.cache +2 -2
- package/storage/remoteStorage/dist/sourcesList.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageClientController.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageController.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageLogs.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageServerState.ts.cache +2 -2
- package/storage/remoteStorage/dist/storeConfig.ts.cache +2 -2
- package/storage/remoteStorage/dist/storePlan.ts.cache +2 -2
- package/storage/remoteStorage/dist/storeSources.ts.cache +2 -2
- package/storage/remoteStorage/dist/storeSync.ts.cache +2 -2
- package/storage/remoteStorage/dist/validation.ts.cache +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
3
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
4
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -748,4 +748,4 @@ async function tryToLoadPointer(pointer) {
|
|
|
748
748
|
}
|
|
749
749
|
exports.tryToLoadPointer = tryToLoadPointer;
|
|
750
750
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUZvbGRlckFQSS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkZpbGVGb2xkZXJBUEkudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQztBQUVwQyxvREFBNEI7QUFDNUIsMkRBQTZHO0FBQzdHLCtCQUFrQztBQUNsQyx1REFBb0Q7QUFDcEQseURBQTBEO0FBQzFELDZDQUEwQztBQUUxQywyREFBMkQ7QUFDM0QscUVBQWlFO0FBQ2pFLDJEQUFvRztBQUNwRyw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBc0J4Qix1RUFBdUU7QUFDdkUsd0ZBQXdGO0FBQ3hGLCtCQUErQjtBQUMvQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUM7QUFFN0IscUdBQXFHO0FBQ3JHLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQXFDMUMsSUFBSSxXQUFXLEdBQUcsSUFBQSxpQkFBVSxFQUFDO0lBQ3pCLEVBQUUsRUFBRSxTQUFpRDtDQUN4RCxFQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBRS9CLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUNwQixTQUFTLGFBQWE7SUFDbEIsSUFBSSxDQUFDLFVBQVU7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRKQUE0SixDQUFDLENBQUM7SUFDL0wsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQztBQUNELFNBQWdCLGFBQWEsQ0FBQyxHQUFXO0lBQ3JDLFVBQVUsR0FBRyxHQUFHLENBQUM7QUFDckIsQ0FBQztBQUZELHNDQUVDO0FBRUQsK0VBQStFO0FBQy9FLGtGQUFrRjtBQUNsRixrRkFBa0Y7QUFDbEYsaUZBQWlGO0FBQ2pGLG1GQUFtRjtBQUNuRixtRkFBbUY7QUFDbkYseUNBQXlDO0FBQ3pDLElBQUksbUJBQTBELENBQUM7QUFDL0QsU0FBZ0Isc0JBQXNC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QWUsRUFBRSxFQUFFO1FBQzdCLElBQUksSUFBSSxHQUFxQixJQUFJLENBQUM7UUFDbEMsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxRCxJQUFJLENBQUMsSUFBSTtnQkFBRSxTQUFTO1lBQ3BCLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQVZELGtFQVVDO0FBRU0sS0FBSyxVQUFVLGdCQUFnQixDQUFDLE9BQWU7SUFDbEQsSUFBSSxNQUFNLEdBQUcsTUFBTSxJQUFBLHdDQUFvQixFQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyRCxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU87SUFDcEIsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxnQkFBZ0IsRUFBRSxDQUFBLENBQUM7SUFDOUMsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPO0lBQ3BCLE9BQU8sTUFBaUMsQ0FBQztBQUM3QyxDQUFDO0FBTkQsNENBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJwcm9jZXNzLmVudi5OT0RFX0VOViA9IFwicHJvZHVjdGlvblwiO1xuXG5pbXBvcnQgcHJlYWN0IGZyb20gXCJwcmVhY3RcIjtcbmltcG9ydCB7IGZpbmRHcmFudGVkUG9pbnRlckhhbmRsZSwgZ2V0RmlsZVN5c3RlbVBvaW50ZXIsIHN0b3JlRmlsZVN5c3RlbVBvaW50ZXIgfSBmcm9tIFwiLi9maWxlU3lzdGVtUG9pbnRlclwiO1xuaW1wb3J0IHsgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBvYnNlcnZlciB9IGZyb20gXCIuLi9yZW5kZXItdXRpbHMvb2JzZXJ2ZXJcIjtcbmltcG9ydCB7IGNhY2hlLCBsYXp5IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgY3NzLCBpc05vZGUgfSBmcm9tIFwidHlwZXNhZmVjc3NcIjtcbmltcG9ydCB7IElTdG9yYWdlUmF3IH0gZnJvbSBcIi4vSVN0b3JhZ2VcIjtcbmltcG9ydCB7IHJ1bkluU2VyaWFsIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvYmF0Y2hpbmdcIjtcbmltcG9ydCB7IGdldEZpbGVTdG9yYWdlSW5kZXhEQiB9IGZyb20gXCIuL0luZGV4ZWREQkZpbGVGb2xkZXJBUElcIjtcbmltcG9ydCB7IGdldFJlbW90ZURpcmVjdG9yeUhhbmRsZSwgdGVzdFJlbW90ZUNvbm5lY3Rpb24sIFJlbW90ZU9wdGlvbnMgfSBmcm9tIFwiLi9yZW1vdGVGaWxlU3RvcmFnZVwiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBXaW5kb3cge1xuICAgICAgICBzaG93U2F2ZUZpbGVQaWNrZXIoY29uZmlnPzoge1xuICAgICAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nOyBhY2NlcHQ6IHsgW21pbWVUeXBlOiBzdHJpbmddOiBzdHJpbmdbXSB9XG4gICAgICAgICAgICB9W107XG4gICAgICAgIH0pOiBQcm9taXNlPEZpbGVTeXN0ZW1GaWxlSGFuZGxlPjtcbiAgICAgICAgc2hvd0RpcmVjdG9yeVBpY2tlcigpOiBQcm9taXNlPEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGU+O1xuICAgICAgICBzaG93T3BlbkZpbGVQaWNrZXIoY29uZmlnPzoge1xuICAgICAgICAgICAgdHlwZXM6IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nOyBhY2NlcHQ6IHsgW21pbWVUeXBlOiBzdHJpbmddOiBzdHJpbmdbXSB9XG4gICAgICAgICAgICB9W107XG4gICAgICAgIH0pOiBQcm9taXNlPEZpbGVTeXN0ZW1GaWxlSGFuZGxlW10+O1xuICAgIH1cbiAgICBpbnRlcmZhY2UgRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSB7XG4gICAgICAgIHJlcXVlc3RQZXJtaXNzaW9uKGNvbmZpZz86IHsgbW9kZTogXCJyZWFkXCIgfCBcInJlYWR3cml0ZVwiIH0pOiBQcm9taXNlPFBlcm1pc3Npb25TdGF0ZT47XG4gICAgfVxufVxuXG5cbi8vIE5PVEU6IEluZGV4ZWREQiBpcyByZXF1aXJlZCBmb3IgaU9TLCBhdCBsZWFzdC4gV2UgTUlHSFQgd2FudCB0byBtYWtlXG4vLyAgdGhpcyBhIHVzZXIgc3VwcG9ydGVkIHRvZ2dsZSB0b28sIHNvIHRoZXkgY2FuIGNob29zZSBkdXJpbmcgcnVudGltZSBpZiB0aGV5IHdhbnQgaXQuXG4vLyBETyBOT1QgZW5hYmxlIHRoaXMgaXMgaXNOb2RlXG5jb25zdCBVU0VfSU5ERVhFRF9EQiA9IGZhbHNlO1xuXG4vLyBIb3cgb2Z0ZW4gYSB3b3JrZXIgcmVjaGVja3MgdGhlIHBvaW50ZXIgSW5kZXhlZERCIGZvciBhIGdyYW50ZWQgaGFuZGxlIHdoZW4gbm9uZSBpcyBhdmFpbGFibGUgeWV0LlxuY29uc3QgV09SS0VSX1BPTExfSU5URVJWQUxfTVMgPSA2MCAqIDEwMDA7XG5cbi8vIFRoZXNlIG1pcnJvciB0aGUgc3Vic2V0IG9mIHRoZSBuYXRpdmUgRmlsZVN5c3RlbUZpbGVIYW5kbGUgLyBGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlIEFQSSB3ZSB1c2UsIHNvIHRoZSBuYXRpdmUgYnJvd3NlciBoYW5kbGVzLCB0aGUgTm9kZSBoYW5kbGVzLCBhbmQgdGhlIHJlbW90ZSBoYW5kbGVzIGFyZSBhbGwgaW50ZXJjaGFuZ2VhYmxlIOKAlCBhbmQgY29kZSB3cml0dGVuIGFnYWluc3QgdGhlIG5hdGl2ZSBoYW5kbGUgKGUuZy4gYSByZWN1cnNpdmUgd2FsayBvdmVyIGBoYW5kbGUuZW50cmllcygpYCkgd29ya3Mgb24gYW55IG9mIHRoZW0uIGtpbmQvbmFtZSBhbmQgZW50cmllcygpIGFyZSBwYXJ0IG9mIHRoYXQgY29udHJhY3QuXG5leHBvcnQgdHlwZSBGaWxlV3JhcHBlciA9IHtcbiAgICByZWFkb25seSBraW5kOiBcImZpbGVcIjtcbiAgICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gICAgZ2V0RmlsZSgpOiBQcm9taXNlPHtcbiAgICAgICAgc2l6ZTogbnVtYmVyO1xuICAgICAgICBsYXN0TW9kaWZpZWQ6IG51bWJlcjtcbiAgICAgICAgYXJyYXlCdWZmZXIoKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj47XG4gICAgICAgIC8vIE1hdGNoZXMgQmxvYi5zbGljZSAod2hpY2ggdGhlIG5hdGl2ZSBGaWxlIG9iamVjdCBwcm92aWRlcyksIHNvIHRoZSBicm93c2VyXG4gICAgICAgIC8vICBpbXBsZW1lbnRhdGlvbiB3b3JrcyB2YW5pbGxhLiBFbmQgaXMgZXhjbHVzaXZlLCBib3RoIGNsYW1wZWQgdG8gdGhlIGZpbGUgc2l6ZS5cbiAgICAgICAgc2xpY2Uoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiB7IGFycmF5QnVmZmVyKCk6IFByb21pc2U8QXJyYXlCdWZmZXI+IH07XG4gICAgfT47XG4gICAgY3JlYXRlV3JpdGFibGUoY29uZmlnPzogeyBrZWVwRXhpc3RpbmdEYXRhPzogYm9vbGVhbiB9KTogUHJvbWlzZTx7XG4gICAgICAgIHNlZWsob2Zmc2V0OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+O1xuICAgICAgICB3cml0ZSh2YWx1ZTogQnVmZmVyKTogUHJvbWlzZTx2b2lkPjtcbiAgICAgICAgY2xvc2UoKTogUHJvbWlzZTx2b2lkPjtcbiAgICB9PjtcbiAgICAvLyBSZXR1cm5zIGEgVVJMIGZvciB0aGUgZmlsZSdzIGJ5dGVzLCB1c2FibGUgaW4gPHZpZGVvPi88aW1nPi9mZXRjaC4gT3B0aW9uYWwg4oCUIHRoZSBuYXRpdmUgYnJvd3NlciBGaWxlU3lzdGVtRmlsZUhhbmRsZSBoYXMgbm8gc3VjaCBtZXRob2QsIHNvIHByZWZlciB0aGUgZ2V0RmlsZVVSTCgpIGhlbHBlciwgd2hpY2ggZmFsbHMgYmFjayB0byBhIGJsb2I6IFVSTCB2aWEgY3JlYXRlT2JqZWN0VVJMIGZvciBuYXRpdmUgaGFuZGxlcy4gQWx3YXlzIHJlbGVhc2UgaXQgd2l0aCBkaXNwb3NlRmlsZVVSTCB3aGVuIGRvbmUuXG4gICAgZ2V0VVJMPygpOiBQcm9taXNlPHN0cmluZz47XG59O1xuZXhwb3J0IHR5cGUgRGlyZWN0b3J5V3JhcHBlciA9IHtcbiAgICByZWFkb25seSBraW5kOiBcImRpcmVjdG9yeVwiO1xuICAgIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgICAvLyBGdWxsIHBhdGggZnJvbSB0aGUgc3RvcmFnZSByb290LCBmb3IgZGlhZ25vc3RpY3MvbG9nZ2luZyAodGhlIG5hdGl2ZSBoYW5kbGUgZG9lc24ndCBleHBvc2UgcGF0aHMsIHNvIGl0J3Mgb3B0aW9uYWwpLiBlLmcuIFwiYnVsa0RhdGFiYXNlczIvbXlDb2xsZWN0aW9uXCIuXG4gICAgcmVhZG9ubHkgZnVsbFBhdGg/OiBzdHJpbmc7XG4gICAgLy8gVHJ1ZSB3aGVuIHRoaXMgc3RvcmFnZSBpcyBzZXJ2ZWQgb3ZlciB0aGUgbmV0d29yayAoYSByZW1vdGUgc2VydmVyKSByYXRoZXIgdGhhbiBhIGxvY2FsIGRpc2ssIHNvIGNhbGxlcnMgY2FuIGFkYXB0IGZvciB0aGUgaGlnaGVyIGxhdGVuY3kvY29zdCAobG9jYWwvbmF0aXZlIGhhbmRsZXMgbGVhdmUgaXQgdW5kZWZpbmVkID0gZmFsc2UpLlxuICAgIHJlYWRvbmx5IGlzUmVtb3RlPzogYm9vbGVhbjtcbiAgICByZW1vdmVFbnRyeShrZXk6IHN0cmluZywgb3B0aW9ucz86IHsgcmVjdXJzaXZlPzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPjtcbiAgICBnZXRGaWxlSGFuZGxlKGtleTogc3RyaW5nLCBvcHRpb25zPzogeyBjcmVhdGU/OiBib29sZWFuIH0pOiBQcm9taXNlPEZpbGVXcmFwcGVyPjtcbiAgICBnZXREaXJlY3RvcnlIYW5kbGUoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiB7IGNyZWF0ZT86IGJvb2xlYW4gfSk6IFByb21pc2U8RGlyZWN0b3J5V3JhcHBlcj47XG4gICAgLy8gRWFjaCBlbnRyeSBJUyBhIGhhbmRsZSAoZmlsZSBvciBkaXJlY3RvcnkpLCBzbyBhIHJlY3Vyc2l2ZSB3YWxrIGtlZXBzIHdvcmtpbmcgYXQgZXZlcnkgbGV2ZWwuXG4gICAgZW50cmllcygpOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgRmlsZVdyYXBwZXIgfCBEaXJlY3RvcnlXcmFwcGVyXT47XG4gICAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgRmlsZVdyYXBwZXIgfCBEaXJlY3RvcnlXcmFwcGVyXT47XG59O1xuXG5sZXQgZGlzcGxheURhdGEgPSBvYnNlcnZhYmxlKHtcbiAgICB1aTogdW5kZWZpbmVkIGFzIHVuZGVmaW5lZCB8IHByZWFjdC5Db21wb25lbnRDaGlsZHJlbixcbn0sIHVuZGVmaW5lZCwgeyBkZWVwOiBmYWxzZSB9KTtcblxubGV0IGZpbGVBUElLZXkgPSBcIlwiO1xuZnVuY3Rpb24gZ2V0RmlsZUFQSUtleSgpIHtcbiAgICBpZiAoIWZpbGVBUElLZXkpIHRocm93IG5ldyBFcnJvcihcIk11c3QgY2FsbCBzZXRGaWxlQVBJS2V5IGJlZm9yZSB1c2luZyBmaWxlIHN5c3RlbS4gSnVzdCBwYXNzIGFueSBrZXkuIFRoaXMgcHJldmVudHMgcmV1c2luZyB0aGUgZmlsZSBzeXN0ZW0gYXBpIHRoYXQgb3RoZXIgZGV2ZWxvcG1lbnQgYXBwcyBtaWdodCBiZSB1c2luZy5cIik7XG4gICAgcmV0dXJuIGZpbGVBUElLZXk7XG59XG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsZUFQSUtleShrZXk6IHN0cmluZykge1xuICAgIGZpbGVBUElLZXkgPSBrZXk7XG59XG5cbi8vIEEgZGlyZWN0b3J5IGhhbmRsZSB0byBzZXJ2ZSBhcyB0aGUgc3RvcmFnZSByb290IGluc3RlYWQgb2YgcmVzb2x2aW5nIG9uZSB2aWFcbi8vIHRoZSBwaWNrZXIgLyBzdG9yZWQtcG9pbnRlciAvIHJlbW90ZSBmbG93LiBTZXQgdGhpcyBpbiBhIGNvbnRleHQgdGhhdCBjYW4ndCBydW5cbi8vIHRoZSBpbnRlcmFjdGl2ZSByZXNvbHV0aW9uIOKAlCBtb3N0IGltcG9ydGFudGx5IGEgV2ViIFdvcmtlciwgd2hpY2ggaGFzIG5vIERPTSB0b1xuLy8gcHJvbXB0IHdpdGggYW5kIG5vIGxvY2FsU3RvcmFnZSBwb2ludGVyLiBUaGUgb3duaW5nIHdpbmRvdyByZXNvbHZlcyB0aGUgaGFuZGxlXG4vLyAod2l0aCBpdHMgcGVybWlzc2lvbiBncmFudCkgYW5kIHBvc3RNZXNzYWdlcyBpdCBpbjsgdGhlIHdvcmtlciBjYWxscyB0aGlzIGJlZm9yZVxuLy8gdG91Y2hpbmcgYW55IHN0b3JhZ2UuIFdoZW4gc2V0LCBnZXREaXJlY3RvcnlIYW5kbGUgcmV0dXJucyBpdCBkaXJlY3RseSBhbmQgc2tpcHNcbi8vIGV2ZXJ5IERPTSAvIGxvY2FsU3RvcmFnZSBicmFuY2ggYmVsb3cuXG5sZXQgc3RvcmFnZVJvb3RPdmVycmlkZTogRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSB8IHVuZGVmaW5lZDtcbmV4cG9ydCBmdW5jdGlvbiBzZXRTdG9yYWdlUm9vdE92ZXJyaWRlKGhhbmRsZTogRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHN0b3JhZ2VSb290T3ZlcnJpZGUgPSBoYW5kbGU7XG59XG5cbi8vIC0tLS0gcmVtb3RlIChzZXJ2ZXIpIHN0b3JhZ2UgY29uZmlnIC0tLS1cbi8vIEluc3RlYWQgb2YgYSBsb2NhbCBmb2xkZXIsIHRoZSB1c2VyIGNhbiBwb2ludCBhdCBhIHJlbW90ZUZpbGVTZXJ2ZXIuanMgaW5zdGFuY2UgKFVSTCArIHBhc3N3b3JkKS4gV2hlbiBjb25maWd1cmVkLCBnZXRGaWxlU3RvcmFnZU5lc3RlZDIgc2VydmVzIGV2ZXJ5dGhpbmcgZnJvbSB0aGF0IHNlcnZlci4gUGVyc2lzdGVkIGluIGxvY2FsU3RvcmFnZS5cbnR5cGUgUmVtb3RlQ29uZmlnID0geyB1cmw6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuZnVuY3Rpb24gcmVtb3RlQ29uZmlnS2V5KCkgeyByZXR1cm4gZ2V0RmlsZUFQSUtleSgpICsgXCI6cmVtb3RlXCI7IH1cbmZ1bmN0aW9uIGxvYWRSZW1vdGVDb25maWcoKTogUmVtb3RlQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0ocmVtb3RlQ29uZmlnS2V5KCkpO1xuICAgICAgICBpZiAoIXMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGMgPSBKU09OLnBhcnNlKHMpO1xuICAgICAgICBpZiAoYyAmJiB0eXBlb2YgYy51cmwgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGMucGFzc3dvcmQgPT09IFwic3RyaW5nXCIpIHJldHVybiBjO1xuICAgIH0gY2F0Y2ggeyAvKiBpZ25vcmUgKi8gfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBzYXZlUmVtb3RlQ29uZmlnKGM6IFJlbW90ZUNvbmZpZykgeyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShyZW1vdGVDb25maWdLZXkoKSwgSlNPTi5zdHJpbmdpZnkoYykpOyB9XG5cbi8vIFRoZSBzZXJ2ZXIgaXMgYWx3YXlzIEhUVFBTIG9uIHRoZSBmaWxlaG9zdGVyJ3MgZGVmYXVsdCBwb3J0LCBzbyB0aGUgdXNlciBvbmx5IG5lZWRzIHRvIHR5cGUgdGhlIGhvc3QgKGUuZy4gXCI2NS4xMDkuOTMuMTEzXCIpLiBXZSBzdHJpcCBhbnkgc2NoZW1lL3BhdGggdGhleSBpbmNsdWRlIGFuZCBkZWZhdWx0IHRoZSBwb3J0IGlmIG9taXR0ZWQuXG5jb25zdCBERUZBVUxUX1JFTU9URV9QT1JUID0gODc4NzsgLy8gbWF0Y2hlcyByZW1vdGVGaWxlU2VydmVyLmpzJ3MgZGVmYXVsdFxuZnVuY3Rpb24gbm9ybWFsaXplU2VydmVyVXJsKHJhdzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgcyA9IHJhdy50cmltKCkucmVwbGFjZSgvXlxcdys6XFwvXFwvLywgXCJcIikucmVwbGFjZSgvXFwvLiokLywgXCJcIik7XG4gICAgaWYgKCFzKSByZXR1cm4gXCJcIjtcbiAgICBpZiAoIS86XFxkKyQvLnRlc3QocykpIHMgKz0gXCI6XCIgKyBERUZBVUxUX1JFTU9URV9QT1JUO1xuICAgIHJldHVybiBcImh0dHBzOi8vXCIgKyBzO1xufVxuXG4vLyBPbmUgc2hhcmVkIHJlbW90ZSBEaXJlY3RvcnlXcmFwcGVyIChhbmQgdGhlcmVmb3JlIG9uZSBzaGFyZWQgcmFuZ2UgY2FjaGUpIHBlciByZW1vdGUgY29uZmlnLlxubGV0IHJlbW90ZUhhbmRsZTogeyBrZXk6IHN0cmluZzsgaGFuZGxlOiBEaXJlY3RvcnlXcmFwcGVyIH0gfCB1bmRlZmluZWQ7XG5mdW5jdGlvbiBnZXRSZW1vdGVIYW5kbGUocmVtb3RlOiBSZW1vdGVDb25maWcpOiBEaXJlY3RvcnlXcmFwcGVyIHtcbiAgICBjb25zdCBrZXkgPSByZW1vdGUudXJsICsgXCJcXDBcIiArIHJlbW90ZS5wYXNzd29yZDtcbiAgICBpZiAoIXJlbW90ZUhhbmRsZSB8fCByZW1vdGVIYW5kbGUua2V5ICE9PSBrZXkpIHtcbiAgICAgICAgcmVtb3RlSGFuZGxlID0geyBrZXksIGhhbmRsZTogZ2V0UmVtb3RlRGlyZWN0b3J5SGFuZGxlKHJlbW90ZS51cmwsIHJlbW90ZS5wYXNzd29yZCkgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlbW90ZUhhbmRsZS5oYW5kbGU7XG59XG5cbkBvYnNlcnZlclxuY2xhc3MgRGlyZWN0b3J5UHJvbXB0ZXIgZXh0ZW5kcyBwcmVhY3QuQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGlmICghZGlzcGxheURhdGEudWkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XG4gICAgICAgICAgICAgICAgY3NzLnBvc2l0aW9uKFwiZml4ZWRcIikucG9zKDAsIDApLnNpemUoXCIxMDB2d1wiLCBcIjEwMHZoXCIpXG4gICAgICAgICAgICAgICAgICAgIC56SW5kZXgoMjE0NzQ4MzY0NylcbiAgICAgICAgICAgICAgICAgICAgLmJhY2tncm91bmQoXCJ3aGl0ZVwiKVxuICAgICAgICAgICAgICAgICAgICAuY2VudGVyXG4gICAgICAgICAgICAgICAgICAgIC5mb250U2l6ZSg0MClcbiAgICAgICAgICAgIH0+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXlEYXRhLnVpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG4vLyBcIkNvbm5lY3QgdG8gYSBzZXJ2ZXJcIiBvcHRpb24gZm9yIHRoZSBkaXJlY3RvcnkgcHJvbXB0OiBjb2xsYXBzZXMgdG8gYSBidXR0b24sIGV4cGFuZHMgdG8gYWRkcmVzcyArIHBhc3N3b3JkIGZpZWxkcy4gT24gY29ubmVjdCBpdCBBQ1RVQUxMWSBjb25uZWN0cyAodGVzdFJlbW90ZUNvbm5lY3Rpb24pOyBvbmx5IG9uIHN1Y2Nlc3MgZG9lcyBpdCBwZXJzaXN0IHRoZSBjb25maWcgYW5kIGNhbGwgb25Db25uZWN0ZWQsIHNvIHRoZSBjYWxsZXIgKGdldERpcmVjdG9yeUhhbmRsZSkgcmVzb2x2ZXMgd2l0aCBhIHdvcmtpbmcgcmVtb3RlIGhhbmRsZS4gRmFpbHVyZXMgYXJlIHNob3duIHRvIHRoZSB1c2VyIChhbmQgbG9nZ2VkLCB3aXRob3V0IHRoZSBwYXNzd29yZCksIG5ldmVyIHN3YWxsb3dlZC4gYGluaXRpYWxgIHByZS1maWxscyArIGV4cGFuZHMgdGhlIGZvcm0gKHVzZWQgdG8gcmV0cnkgYSByZW1lbWJlcmVkIHNlcnZlciB0aGF0IHN0b3BwZWQgd29ya2luZykuXG5Ab2JzZXJ2ZXJcbmNsYXNzIFNlcnZlckNvbm5lY3RGb3JtIGV4dGVuZHMgcHJlYWN0LkNvbXBvbmVudDx7IG9uQ29ubmVjdGVkOiAoY29uZmlnOiBSZW1vdGVDb25maWcpID0+IHZvaWQ7IGluaXRpYWw/OiBSZW1vdGVDb25maWcgfT4ge1xuICAgIHByaXZhdGUgb2JzID0gb2JzZXJ2YWJsZSh7XG4gICAgICAgIGV4cGFuZGVkOiAhIXRoaXMucHJvcHMuaW5pdGlhbCxcbiAgICAgICAgdXJsOiB0aGlzLnByb3BzLmluaXRpYWw/LnVybCB8fCBcIlwiLFxuICAgICAgICBwYXNzd29yZDogdGhpcy5wcm9wcy5pbml0aWFsPy5wYXNzd29yZCB8fCBcIlwiLFxuICAgICAgICBlcnJvcjogXCJcIiwgY29ubmVjdGluZzogZmFsc2UsIG5lZWRzQ2VydDogZmFsc2UsIHNob3dQYXNzd29yZDogZmFsc2UsXG4gICAgfSk7XG4gICAgcHJpdmF0ZSBjbGVhblVybCgpIHsgcmV0dXJuIG5vcm1hbGl6ZVNlcnZlclVybCh0aGlzLm9icy51cmwpOyB9XG4gICAgcHJpdmF0ZSBjb25uZWN0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzID0gdGhpcy5vYnM7XG4gICAgICAgIHMuZXJyb3IgPSBcIlwiO1xuICAgICAgICBzLm5lZWRzQ2VydCA9IGZhbHNlO1xuICAgICAgICBzLmNvbm5lY3RpbmcgPSB0cnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5jbGVhblVybCgpO1xuICAgICAgICAgICAgaWYgKCF1cmwpIHsgcy5lcnJvciA9IFwiRW50ZXIgYSBzZXJ2ZXIgYWRkcmVzcy5cIjsgcmV0dXJuOyB9XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0ZXN0UmVtb3RlQ29ubmVjdGlvbih1cmwsIHMucGFzc3dvcmQudHJpbSgpKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcIm9rXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWc6IFJlbW90ZUNvbmZpZyA9IHsgdXJsLCBwYXNzd29yZDogcy5wYXNzd29yZC50cmltKCkgfTtcbiAgICAgICAgICAgICAgICBzYXZlUmVtb3RlQ29uZmlnKGNvbmZpZyk7ICAgICAgICAgICAgIC8vIHJlbWVtYmVyIGZvciBuZXh0IHNlc3Npb25cbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ29ubmVjdGVkKGNvbmZpZyk7ICAgICAgIC8vIGhhbmQgdGhlIHZlcmlmaWVkIHNlcnZlciBiYWNrIHRvIGdldERpcmVjdG9yeUhhbmRsZVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInVuYXV0aG9yaXplZFwiKSB7XG4gICAgICAgICAgICAgICAgcy5lcnJvciA9IFwiVGhlIHNlcnZlciByZWplY3RlZCB0aGF0IHBhc3N3b3JkLlwiO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJSZW1vdGUgY29ubmVjdDogdW5hdXRob3JpemVkIGZvclwiLCB1cmwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBHb3Qgbm90aGluZyBiYWNrIOKAlCB1c3VhbGx5IHRoZSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSBpc24ndCB0cnVzdGVkIHlldCwgYnV0IHNob3cgdGhlIGFjdHVhbCBlcnJvciB0b28gc28gYSB3cm9uZyBhZGRyZXNzIC8gZG93biBzZXJ2ZXIgLyBDT1JTIGlzc3VlIGlzIGRpYWdub3NhYmxlLlxuICAgICAgICAgICAgICAgIHMubmVlZHNDZXJ0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzLmVycm9yID0gXCJDb3VsZG4ndCByZWFjaCB0aGUgc2VydmVyOiBcIiArIHJlc3VsdC5lcnJvcjtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUmVtb3RlIGNvbm5lY3Q6IHVucmVhY2hhYmxlXCIsIHVybCwgXCItXCIsIHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHMuZXJyb3IgPSBcIkNvbm5lY3Rpb24gZXJyb3I6IFwiICsgKChlIGFzIEVycm9yKS5tZXNzYWdlIHx8IFN0cmluZyhlKSk7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUmVtb3RlIGNvbm5lY3QgdGhyZXc6XCIsIGUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgcy5jb25uZWN0aW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgcyA9IHRoaXMub2JzO1xuICAgICAgICBjb25zdCBpbnB1dENzcyA9IGNzcy5mb250U2l6ZSgyOCkucGFkMigyNCwgMTQpLndpZHRoKDU2MCkubWF4V2lkdGgoXCI4MHZ3XCIpO1xuICAgICAgICBjb25zdCBidG5Dc3MgPSBjc3MuZm9udFNpemUoMzIpLnBhZDIoNjAsIDMwKTtcbiAgICAgICAgaWYgKCFzLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gPGJ1dHRvbiBjbGFzc05hbWU9e2J0bkNzc30gb25DbGljaz17KCkgPT4gcy5leHBhbmRlZCA9IHRydWV9PkNvbm5lY3QgdG8gYSBzZXJ2ZXI8L2J1dHRvbj47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjc3MudmJveCgxNikuY2VudGVyfT5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPXtpbnB1dENzc30gcGxhY2Vob2xkZXI9XCJzZXJ2ZXIgYWRkcmVzcyAoZS5nLiA2NS4xMDkuOTMuMTEzLCBvciBob3N0OnBvcnQpXCIgdmFsdWU9e3MudXJsfVxuICAgICAgICAgICAgICAgICAgICBvbklucHV0PXtlID0+IHMudXJsID0gKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlfSAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjc3MuaGJveCgxMCkuY2VudGVyfT5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzTmFtZT17aW5wdXRDc3N9IHR5cGU9e3Muc2hvd1Bhc3N3b3JkID8gXCJ0ZXh0XCIgOiBcInBhc3N3b3JkXCJ9IHBsYWNlaG9sZGVyPVwicGFzc3dvcmQgKHNpeCB3b3JkcylcIiB2YWx1ZT17cy5wYXNzd29yZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uSW5wdXQ9e2UgPT4gcy5wYXNzd29yZCA9IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9e2Nzcy5mb250U2l6ZSgyMikucGFkMigyNCwgMTIpfSBvbkNsaWNrPXsoKSA9PiBzLnNob3dQYXNzd29yZCA9ICFzLnNob3dQYXNzd29yZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cy5zaG93UGFzc3dvcmQgPyBcIkhpZGVcIiA6IFwiU2hvd1wifVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7cy5lcnJvciA/IDxkaXYgY2xhc3NOYW1lPXtjc3MuZm9udFNpemUoMjIpLmNvbG9yKFwicmVkXCIpLm1heFdpZHRoKFwiODB2d1wiKX0+e3MuZXJyb3J9PC9kaXY+IDogbnVsbH1cbiAgICAgICAgICAgICAgICB7cy5uZWVkc0NlcnQgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjc3MudmJveCgxMCkuY2VudGVyLmZvbnRTaXplKDIwKS5tYXhXaWR0aCg2MjApLm1heFdpZHRoKFwiODB2d1wiKS50ZXh0QWxpZ24oXCJjZW50ZXJcIikuY29sb3IoXCJoc2woMCwgMCUsIDI1JSlcIil9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5UaGlzIHNlcnZlciB1c2VzIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUsIHNvIHlvdXIgYnJvd3NlciBoYXMgdG8gdHJ1c3QgaXQgb25jZTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+MS4gT3BlbiB0aGUgc2VydmVyIGluIGEgbmV3IHRhYiAoYnV0dG9uIGJlbG93KS4gJm5ic3A7IDIuIEFjY2VwdCB0aGUgc2VjdXJpdHkgd2FybmluZyAoQWR2YW5jZWQg4oaSIFByb2NlZWQpLiAmbmJzcDsgMy4gQ29tZSBiYWNrIGFuZCBjbGljayBSZXRyeS48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPXtjc3MuZm9udFNpemUoMjYpLnBhZDIoNDAsIDIwKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7IGNvbnN0IHUgPSB0aGlzLmNsZWFuVXJsKCk7IGlmICh1KSB3aW5kb3cub3Blbih1ICsgXCIvXCIsIFwiX2JsYW5rXCIpOyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuIHNlcnZlciAmYW1wOyBhY2NlcHQgY2VydGlmaWNhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y3NzLmhib3goMTYpfT5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9e2J0bkNzc30gZGlzYWJsZWQ9e3MuY29ubmVjdGluZ30gb25DbGljaz17dGhpcy5jb25uZWN0fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzLmNvbm5lY3RpbmcgPyBcIkNvbm5lY3RpbmfigKZcIiA6IHMubmVlZHNDZXJ0ID8gXCJSZXRyeVwiIDogXCJDb25uZWN0XCJ9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT17YnRuQ3NzfSBvbkNsaWNrPXsoKSA9PiB7IHMuZXhwYW5kZWQgPSBmYWxzZTsgcy5lcnJvciA9IFwiXCI7IHMubmVlZHNDZXJ0ID0gZmFsc2U7IH19PkJhY2s8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vZGVKU0ZpbGVIYW5kbGVXcmFwcGVyIGltcGxlbWVudHMgRmlsZVdyYXBwZXIge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIH1cbiAgICByZWFkb25seSBraW5kID0gXCJmaWxlXCIgYXMgY29uc3Q7XG4gICAgZ2V0IG5hbWUoKSB7IHJldHVybiBwYXRoLmJhc2VuYW1lKHRoaXMuZmlsZVBhdGgpOyB9XG5cbiAgICBhc3luYyBnZXRGaWxlKCkge1xuICAgICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGZzLnByb21pc2VzLnN0YXQodGhpcy5maWxlUGF0aCk7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNpemU6IHN0YXRzLnNpemUsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IHN0YXRzLm10aW1lTXMsXG4gICAgICAgICAgICBhcnJheUJ1ZmZlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKGZpbGVQYXRoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLmJ1ZmZlci5zbGljZShidWZmZXIuYnl0ZU9mZnNldCwgYnVmZmVyLmJ5dGVPZmZzZXQgKyBidWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2xpY2U6IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikgPT4gKHtcbiAgICAgICAgICAgICAgICBhcnJheUJ1ZmZlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGFtcGVkU3RhcnQgPSBNYXRoLm1pbihNYXRoLm1heChzdGFydCwgMCksIHN0YXRzLnNpemUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGFtcGVkRW5kID0gTWF0aC5taW4oTWF0aC5tYXgoZW5kLCBjbGFtcGVkU3RhcnQpLCBzdGF0cy5zaXplKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gY2xhbXBlZEVuZCAtIGNsYW1wZWRTdGFydDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZUhhbmRsZSA9IGF3YWl0IGZzLnByb21pc2VzLm9wZW4oZmlsZVBhdGgsIFwiclwiKTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhsZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmlsZUhhbmRsZS5yZWFkKGJ1ZmZlciwgMCwgbGVuZ3RoLCBjbGFtcGVkU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5idWZmZXIuc2xpY2UoYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlT2Zmc2V0ICsgYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmlsZUhhbmRsZS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRVUkwoKSB7XG4gICAgICAgIHJldHVybiBcImZpbGU6Ly9cIiArIHBhdGgucmVzb2x2ZSh0aGlzLmZpbGVQYXRoKTtcbiAgICB9XG5cbiAgICBhc3luYyBjcmVhdGVXcml0YWJsZShjb25maWc/OiB7IGtlZXBFeGlzdGluZ0RhdGE/OiBib29sZWFuIH0pIHtcbiAgICAgICAgbGV0IGZpbGVIYW5kbGU6IGZzLnByb21pc2VzLkZpbGVIYW5kbGU7XG4gICAgICAgIGNvbnN0IGZsYWdzID0gY29uZmlnPy5rZWVwRXhpc3RpbmdEYXRhID8gXCJyK1wiIDogXCJ3XCI7XG5cbiAgICAgICAgLy8gRW5zdXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzXG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKHBhdGguZGlybmFtZSh0aGlzLmZpbGVQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICAgICAgLy8gT3BlbiBvciBjcmVhdGUgdGhlIGZpbGVcbiAgICAgICAgaWYgKGNvbmZpZz8ua2VlcEV4aXN0aW5nRGF0YSAmJiBhd2FpdCBmcy5wcm9taXNlcy5hY2Nlc3ModGhpcy5maWxlUGF0aCkudGhlbigoKSA9PiB0cnVlKS5jYXRjaCgoKSA9PiBmYWxzZSkpIHtcbiAgICAgICAgICAgIGZpbGVIYW5kbGUgPSBhd2FpdCBmcy5wcm9taXNlcy5vcGVuKHRoaXMuZmlsZVBhdGgsIGZsYWdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbGVIYW5kbGUgPSBhd2FpdCBmcy5wcm9taXNlcy5vcGVuKHRoaXMuZmlsZVBhdGgsIFwid1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IDA7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlZWs6IGFzeW5jIChvZmZzZXQ6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gb2Zmc2V0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdyaXRlOiBhc3luYyAodmFsdWU6IEJ1ZmZlcikgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZpbGVIYW5kbGUud3JpdGUodmFsdWUsIDAsIHZhbHVlLmxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IHZhbHVlLmxlbmd0aDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbG9zZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZpbGVIYW5kbGUuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb2RlSlNEaXJlY3RvcnlIYW5kbGVXcmFwcGVyIGltcGxlbWVudHMgRGlyZWN0b3J5V3JhcHBlciB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb290UGF0aDogc3RyaW5nKSB7XG4gICAgfVxuICAgIHJlYWRvbmx5IGtpbmQgPSBcImRpcmVjdG9yeVwiIGFzIGNvbnN0O1xuICAgIGdldCBuYW1lKCkgeyByZXR1cm4gcGF0aC5iYXNlbmFtZSh0aGlzLnJvb3RQYXRoKTsgfVxuICAgIGdldCBmdWxsUGF0aCgpIHsgcmV0dXJuIHRoaXMucm9vdFBhdGg7IH1cbiAgICBlbnRyaWVzKCkgeyByZXR1cm4gdGhpc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTsgfVxuXG4gICAgYXN5bmMgcmVtb3ZlRW50cnkoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiB7IHJlY3Vyc2l2ZT86IGJvb2xlYW4gfSkge1xuICAgICAgICBjb25zdCBlbnRyeVBhdGggPSBwYXRoLmpvaW4odGhpcy5yb290UGF0aCwga2V5KTtcbiAgICAgICAgaWYgKG9wdGlvbnM/LnJlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMucm0oZW50cnlQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy51bmxpbmsoZW50cnlQYXRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGdldEZpbGVIYW5kbGUoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiB7IGNyZWF0ZT86IGJvb2xlYW4gfSk6IFByb21pc2U8RmlsZVdyYXBwZXI+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5yb290UGF0aCwga2V5KTtcblxuICAgICAgICBjb25zdCBleGlzdHMgPSBhd2FpdCBmcy5wcm9taXNlcy5hY2Nlc3MoZmlsZVBhdGgpLnRoZW4oKCkgPT4gdHJ1ZSkuY2F0Y2goKCkgPT4gZmFsc2UpO1xuXG4gICAgICAgIGlmICghZXhpc3RzICYmIG9wdGlvbnM/LmNyZWF0ZSkge1xuICAgICAgICAgICAgLy8gRW5zdXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzXG4gICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5ta2RpcihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgZmlsZVxuICAgICAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKGZpbGVQYXRoLCBCdWZmZXIuYWxsb2MoMCkpO1xuICAgICAgICB9IGVsc2UgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgICAgIC8vIFRhZyBhcyBFTk9FTlQgc28gcmVhZFdpdGhSZXRyeSB0cmVhdHMgaXQgYXMgYSBnZW51aW5lbHktbWlzc2luZyBmaWxlIChyZXR1cm4gdW5kZWZpbmVkIG5vdykgcmF0aGVyIHRoYW4gYSB0cmFuc2llbnQgcmVhZCBmYWlsdXJlIHRvIHJldHJ5IDbDlyB3aXRoIGJhY2tvZmYg4oCUIG1pc3NpbmcgZmlsZXMgYXJlIG5vcm1hbCAoYSBjb25jdXJyZW50IG1lcmdlIGRlbGV0ZXMgYSBmaWxlIG1pZC1yZWFkKSwgYW5kIHJldHJ5aW5nIHRoZW0gaXMgY2F0YXN0cm9waGljYWxseSBzbG93LlxuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtmaWxlUGF0aH1gKSBhcyBFcnJvciAmIHsgY29kZT86IHN0cmluZyB9O1xuICAgICAgICAgICAgZXJyLmNvZGUgPSBcIkVOT0VOVFwiO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlSlNGaWxlSGFuZGxlV3JhcHBlcihmaWxlUGF0aCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0RGlyZWN0b3J5SGFuZGxlKGtleTogc3RyaW5nLCBvcHRpb25zPzogeyBjcmVhdGU/OiBib29sZWFuIH0pOiBQcm9taXNlPERpcmVjdG9yeVdyYXBwZXI+IHtcbiAgICAgICAgY29uc3QgZGlyUGF0aCA9IHBhdGguam9pbih0aGlzLnJvb3RQYXRoLCBrZXkpO1xuXG4gICAgICAgIGlmIChvcHRpb25zPy5jcmVhdGUpIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKGRpclBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gYXdhaXQgZnMucHJvbWlzZXMuYWNjZXNzKGRpclBhdGgpLnRoZW4oKCkgPT4gdHJ1ZSkuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERpcmVjdG9yeSBub3QgZm91bmQ6ICR7ZGlyUGF0aH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgTm9kZUpTRGlyZWN0b3J5SGFuZGxlV3JhcHBlcihkaXJQYXRoKTtcbiAgICB9XG5cbiAgICBhc3luYyAqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgRmlsZVdyYXBwZXIgfCBEaXJlY3RvcnlXcmFwcGVyXT4ge1xuICAgICAgICAvLyBFbnN1cmUgZGlyZWN0b3J5IGV4aXN0c1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5ta2Rpcih0aGlzLnJvb3RQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgICAgICBjb25zdCBlbnRyaWVzID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZGRpcih0aGlzLnJvb3RQYXRoLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBwYXRoLmpvaW4odGhpcy5yb290UGF0aCwgZW50cnkubmFtZSk7XG4gICAgICAgICAgICBpZiAoZW50cnkuaXNGaWxlKCkpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCBbZW50cnkubmFtZSwgbmV3IE5vZGVKU0ZpbGVIYW5kbGVXcmFwcGVyKGNoaWxkUGF0aCldO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRyeS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgW2VudHJ5Lm5hbWUsIG5ldyBOb2RlSlNEaXJlY3RvcnlIYW5kbGVXcmFwcGVyKGNoaWxkUGF0aCldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vIFdoZW4gc2V0LCBnZXREaXJlY3RvcnlIYW5kbGUgc2tpcHMgZXZlcnkgcHJvbXB0ICsgcmVtb3RlIGNoZWNrIGFuZCBzZXJ2ZXMgZnJvbSB0aGUgYnJvd3NlcidzIE9yaWdpbiBQcml2YXRlIEZpbGUgU3lzdGVtIChPUEZTKS4gT25lIG5hbWVkIHN1YmZvbGRlciBpcyBcImN1cnJlbnRcIiBwZXIgZmlsZUFQSUtleTsgcGlja1ByaXZhdGVGb2xkZXIgLyByZXNldFN0b3JhZ2VMb2NhdGlvbiBzd2l0Y2ggd2hpY2ggb25lLiBTZXQgdGhpcyBpbiBhcHAgc3RhcnR1cCBCRUZPUkUgdGhlIGZpcnN0IGdldERpcmVjdG9yeUhhbmRsZS5cbmxldCBvcGZzRW5hYmxlZCA9IGZhbHNlO1xuY29uc3QgT1BGU19GT0xERVJTX0RJUiA9IFwiZm9sZGVyc1wiO1xuY29uc3QgT1BGU19ERUZBVUxUX0ZPTERFUiA9IFwiZGVmYXVsdFwiO1xuZnVuY3Rpb24gb3Bmc0N1cnJlbnRLZXkoKSB7IHJldHVybiBnZXRGaWxlQVBJS2V5KCkgKyBcIjpvcGZzOmN1cnJlbnRcIjsgfVxuZnVuY3Rpb24gZ2V0Q3VycmVudE9wZnNGb2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0ob3Bmc0N1cnJlbnRLZXkoKSkgfHwgT1BGU19ERUZBVUxUX0ZPTERFUjtcbn1cbmZ1bmN0aW9uIHNldEN1cnJlbnRPcGZzRm9sZGVyKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG9wZnNDdXJyZW50S2V5KCksIG5hbWUpO1xufVxuXG4vLyBTd2l0Y2hlcyBnZXREaXJlY3RvcnlIYW5kbGUgdG8gdGhlIE9yaWdpbiBQcml2YXRlIEZpbGUgU3lzdGVtLiBObyBkaXJlY3RvcnkgcGlja2VyLCBubyBwZXJtaXNzaW9uIHByb21wdCwgbm8gcmVtb3RlIHNlcnZlciBjaGVjay4gUGVyc2lzdHMgbm90aGluZyDigJQgY2FsbCBvbiBldmVyeSBhcHAgc3RhcnQgYmVmb3JlIHJlYWRpbmcgc3RvcmFnZS5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQcml2YXRlRmlsZVN5c3RlbSgpOiB2b2lkIHtcbiAgICBvcGZzRW5hYmxlZCA9IHRydWU7XG59XG5cbi8vIFdoZXRoZXIgdGhlIE9QRlMgYnJhbmNoIGlzIGluIGVmZmVjdCAoc28gb3RoZXIgY2FsbGVycyBjYW4gYWRhcHQg4oCUIGUuZy4gc2tpcCB0aGUgXCJmaW5kIGRhdGEgc3ViZGlyXCIgaGFjayBpbiBnZXRGaWxlU3RvcmFnZU5lc3RlZDIgc2luY2UgT1BGUyBpcyBhbHdheXMgYSBjbGVhbiByb290IHdlIG93biBlbmQtdG8tZW5kKS5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByaXZhdGVGaWxlU3lzdGVtQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvcGZzRW5hYmxlZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3Bmc0ZvbGRlcnNEaXIoKTogUHJvbWlzZTxGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlPiB7XG4gICAgaWYgKCFuYXZpZ2F0b3Iuc3RvcmFnZT8uZ2V0RGlyZWN0b3J5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlByaXZhdGUgRmlsZSBTeXN0ZW0gQWNjZXNzIEFQSSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcbiAgICB9XG4gICAgaWYgKGxvY2F0aW9uLnByb3RvY29sID09PSBcImZpbGU6XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUHJpdmF0ZSBGaWxlIFN5c3RlbSBBUEkgaXMgZGlzYWxsb3dlZCBpbiBmaWxlOi8vIGxvY2F0aW9ucy4gSG9zdCBvbiBhbiBhY3R1YWwgb3JpZ2luLlwiKTtcbiAgICB9XG4gICAgY29uc3Qgcm9vdCA9IGF3YWl0IG5hdmlnYXRvci5zdG9yYWdlLmdldERpcmVjdG9yeSgpO1xuICAgIGNvbnN0IGtleWVkID0gYXdhaXQgcm9vdC5nZXREaXJlY3RvcnlIYW5kbGUoZ2V0RmlsZUFQSUtleSgpLCB7IGNyZWF0ZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gYXdhaXQga2V5ZWQuZ2V0RGlyZWN0b3J5SGFuZGxlKE9QRlNfRk9MREVSU19ESVIsIHsgY3JlYXRlOiB0cnVlIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50T3Bmc0hhbmRsZSgpOiBQcm9taXNlPERpcmVjdG9yeVdyYXBwZXI+IHtcbiAgICBjb25zdCBmb2xkZXJzID0gYXdhaXQgZ2V0T3Bmc0ZvbGRlcnNEaXIoKTtcbiAgICBjb25zdCBmb2xkZXIgPSBhd2FpdCBmb2xkZXJzLmdldERpcmVjdG9yeUhhbmRsZShnZXRDdXJyZW50T3Bmc0ZvbGRlcigpLCB7IGNyZWF0ZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gZm9sZGVyIGFzIHVua25vd24gYXMgRGlyZWN0b3J5V3JhcHBlcjtcbn1cblxuLy8gQWxsIHByZXZpb3VzbHktdXNlZCBPUEZTIHN1YmZvbGRlcnMgdW5kZXIgdGhpcyBmaWxlQVBJS2V5LCBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgKHRpbWVzdGFtcC1uYW1lZCBhdXRvLWdlbmVyYXRlZCBmb2xkZXJzIHRoZXJlZm9yZSBzb3J0IGNocm9ub2xvZ2ljYWxseSkuIFVzZSB0aGlzIHRvIHN1cmZhY2UgYSBsaXN0LCB0aGVuIGNhbGwgcGlja1ByaXZhdGVGb2xkZXIobmFtZSkgdG8gc3dpdGNoLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RQcml2YXRlRm9sZGVycygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgaWYgKCFuYXZpZ2F0b3Iuc3RvcmFnZT8uZ2V0RGlyZWN0b3J5KSByZXR1cm4gW107XG4gICAgbGV0IGZvbGRlcnM6IEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGU7XG4gICAgdHJ5IHsgZm9sZGVycyA9IGF3YWl0IGdldE9wZnNGb2xkZXJzRGlyKCk7IH0gY2F0Y2ggeyByZXR1cm4gW107IH1cbiAgICBjb25zdCBuYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IFtuYW1lLCBoYW5kbGVdIG9mIChmb2xkZXJzIGFzIHVua25vd24gYXMgQXN5bmNJdGVyYWJsZTxbc3RyaW5nLCB7IGtpbmQ6IHN0cmluZyB9XT4pKSB7XG4gICAgICAgIGlmIChoYW5kbGUua2luZCA9PT0gXCJkaXJlY3RvcnlcIikgbmFtZXMucHVzaChuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWVzLnNvcnQoKTtcbn1cblxuLy8gU3dpdGNoIHRvIGEgc3BlY2lmaWMgT1BGUyBzdWJmb2xkZXIgYW5kIHJlbG9hZCBzbyBnZXREaXJlY3RvcnlIYW5kbGUgcmUtcmVzb2x2ZXMgdG8gaXQuIFRoZSBmb2xkZXIgaXMgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldC5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrUHJpdmF0ZUZvbGRlcihuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzZXRDdXJyZW50T3Bmc0ZvbGRlcihuYW1lKTtcbiAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG59XG5cbi8vIFJldHVybnMgdGhlIGRpcmVjdG9yeSBoYW5kbGUgdG8gdXNlIOKAlCBsb2NhbCAoTm9kZSAvIHBpY2tlZCBmb2xkZXIpIE9SIGEgcmVtb3RlIHNlcnZlciwgYm90aCBhcyB0aGUgc2FtZSBEaXJlY3RvcnlXcmFwcGVyLCBzbyBjYWxsZXJzIGRvbid0IGtub3cgb3IgY2FyZSB3aGljaCBpdCBpcy4gQSByZW1lbWJlcmVkIHNlcnZlciBpcyBWRVJJRklFRCAod2UgYWN0dWFsbHkgY29ubmVjdCkgYmVmb3JlIHVzZTsgaWYgaXQgbm8gbG9uZ2VyIHdvcmtzIHdlIHJlLXByb21wdCwganVzdCBsaWtlIGEgbG9jYWwgZm9sZGVyIHdob3NlIHBlcm1pc3Npb24gd2FzIGxvc3QuIEJsb2NrcyB1bnRpbCByZWFkeSAob3IgdGhlIHVzZXIgZGlzbWlzc2VzLCB3aGljaCByZWplY3RzKS5cbmV4cG9ydCBjb25zdCBnZXREaXJlY3RvcnlIYW5kbGUgPSBsYXp5KGFzeW5jIGZ1bmN0aW9uIGdldERpcmVjdG9yeUhhbmRsZSgpOiBQcm9taXNlPERpcmVjdG9yeVdyYXBwZXI+IHtcbiAgICAvLyBBbiBpbmplY3RlZCByb290IChlLmcuIGEgV2ViIFdvcmtlciBoYW5kZWQgdGhlIGhhbmRsZSBieSBpdHMgb3duaW5nIHdpbmRvdylcbiAgICAvLyBzaG9ydC1jaXJjdWl0cyB0aGUgd2hvbGUgaW50ZXJhY3RpdmUgcmVzb2x1dGlvbiDigJQgbm8gcGlja2VyLCBubyBET00sIG5vXG4gICAgLy8gbG9jYWxTdG9yYWdlLiBNdXN0IGNvbWUgZmlyc3Qgc28gYSB3b3JrZXIgbmV2ZXIgcmVhY2hlcyB0aGUgYnJhbmNoZXMgYmVsb3cuXG4gICAgaWYgKHN0b3JhZ2VSb290T3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIHN0b3JhZ2VSb290T3ZlcnJpZGUgYXMgdW5rbm93biBhcyBEaXJlY3RvcnlXcmFwcGVyO1xuICAgIH1cbiAgICAvLyBBIHdvcmtlciBjYW4ndCBzaG93IHRoZSBwaWNrZXIgKG5vIERPTSAvIG5vIHVzZXIgYWN0aXZhdGlvbikgYW5kIGNhbid0IHJlYWQgbG9jYWxTdG9yYWdlLCBidXQgaXQgQ0FOIG9wZW4gdGhlIHBvaW50ZXIgSW5kZXhlZERCIHRoZSBtYWluLXRocmVhZCBwaWNrZXIgcGVyc2lzdHMgdG8uIFBvbGwgaXQgZm9yIGEgaGFuZGxlIHdob3NlIHBlcm1pc3Npb24gaXMgYWxyZWFkeSBncmFudGVkOyB0aGUgb3duaW5nIHdpbmRvdyBtYXkgYWxzbyBwb3N0TWVzc2FnZSBhIGhhbmRsZSBpbiBtaWQtcG9sbCAoY2hlY2tlZCBlYWNoIGl0ZXJhdGlvbikuIFRoaXMgaGFzIHRvIGNvbWUgYmVmb3JlIHRoZSBpc05vZGUgYnJhbmNoOiB0eXBlc2FmZWNzcydzIGlzTm9kZSgpIHJldHVybnMgdHJ1ZSBpbiB3b3JrZXJzICh3aW5kb3cgaXMgdW5kZWZpbmVkKSwgc28gYSB3b3JrZXIgd291bGQgb3RoZXJ3aXNlIGZhbGwgaW50byB0aGUgTm9kZSBicmFuY2ggYW5kIHRyeSB0byB1c2UgZnMvcGF0aC5cbiAgICBpZiAoXCJXb3JrZXJHbG9iYWxTY29wZVwiIGluIGdsb2JhbFRoaXMpIHtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGlmIChzdG9yYWdlUm9vdE92ZXJyaWRlKSByZXR1cm4gc3RvcmFnZVJvb3RPdmVycmlkZSBhcyB1bmtub3duIGFzIERpcmVjdG9yeVdyYXBwZXI7XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0gYXdhaXQgZmluZEdyYW50ZWRQb2ludGVySGFuZGxlKFwicmVhZHdyaXRlXCIpO1xuICAgICAgICAgICAgaWYgKGhhbmRsZSkgcmV0dXJuIGhhbmRsZSBhcyB1bmtub3duIGFzIERpcmVjdG9yeVdyYXBwZXI7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgV09SS0VSX1BPTExfSU5URVJWQUxfTVMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNOb2RlKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlSlNEaXJlY3RvcnlIYW5kbGVXcmFwcGVyKHBhdGgucmVzb2x2ZShcIi4vZGF0YS9cIikpO1xuICAgIH1cbiAgICBpZiAob3Bmc0VuYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGdldEN1cnJlbnRPcGZzSGFuZGxlKCk7XG4gICAgfVxuXG4gICAgLy8gQSBzZXJ2ZXIgY29ubmVjdGVkIGluIGEgcHJldmlvdXMgc2Vzc2lvbjogb25seSByZXVzZSBpdCBpZiBpdCBzdGlsbCBhY3R1YWxseSB3b3Jrcy5cbiAgICBjb25zdCBzYXZlZFJlbW90ZSA9IGxvYWRSZW1vdGVDb25maWcoKTtcbiAgICBpZiAoc2F2ZWRSZW1vdGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGVzdFJlbW90ZUNvbm5lY3Rpb24oc2F2ZWRSZW1vdGUudXJsLCBzYXZlZFJlbW90ZS5wYXNzd29yZCk7XG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcIm9rXCIpIHJldHVybiBnZXRSZW1vdGVIYW5kbGUoc2F2ZWRSZW1vdGUpO1xuICAgICAgICBjb25zb2xlLndhcm4oYFNhdmVkIHJlbW90ZSBzZXJ2ZXIgZGlkbid0IGNvbm5lY3QgKCR7cmVzdWx0LnN0YXR1c30pJHtyZXN1bHQuc3RhdHVzID09PSBcInVucmVhY2hhYmxlXCIgPyBcIjogXCIgKyByZXN1bHQuZXJyb3IgOiBcIlwifSDigJQgcmUtcHJvbXB0aW5nLmApO1xuICAgIH1cblxuICAgIGxldCByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJvb3QpO1xuICAgIHByZWFjdC5yZW5kZXIoPERpcmVjdG9yeVByb21wdGVyIC8+LCByb290KTtcbiAgICB0cnkge1xuICAgICAgICBsZXQgcmVzb2x2ZUhhbmRsZSE6IChoOiBEaXJlY3RvcnlXcmFwcGVyKSA9PiB2b2lkO1xuICAgICAgICBsZXQgcmVqZWN0SGFuZGxlITogKGU6IEVycm9yKSA9PiB2b2lkO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8RGlyZWN0b3J5V3JhcHBlcj4oKHJlcywgcmVqKSA9PiB7IHJlc29sdmVIYW5kbGUgPSByZXM7IHJlamVjdEhhbmRsZSA9IHJlajsgfSk7XG5cbiAgICAgICAgY29uc3QgcGlja0xvY2FsID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGUgPSBhd2FpdCB3aW5kb3cuc2hvd0RpcmVjdG9yeVBpY2tlcigpO1xuICAgICAgICAgICAgICAgIGF3YWl0IGhhbmRsZS5yZXF1ZXN0UGVybWlzc2lvbih7IG1vZGU6IFwicmVhZHdyaXRlXCIgfSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvcmVkSWQgPSBhd2FpdCBzdG9yZUZpbGVTeXN0ZW1Qb2ludGVyKHsgbW9kZTogXCJyZWFkd3JpdGVcIiwgaGFuZGxlIH0pO1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGdldEZpbGVBUElLZXkoKSwgc3RvcmVkSWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVIYW5kbGUoaGFuZGxlIGFzIGFueSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkRpcmVjdG9yeSBwaWNrIGZhaWxlZC9jYW5jZWxsZWQ6XCIsIGUpOyAvLyBzdGF5IG9uIHRoZSBwcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb25Db25uZWN0ZWQgPSAoY29uZmlnOiBSZW1vdGVDb25maWcpID0+IHsgc2F2ZVJlbW90ZUNvbmZpZyhjb25maWcpOyByZXNvbHZlSGFuZGxlKGdldFJlbW90ZUhhbmRsZShjb25maWcpKTsgfTtcbiAgICAgICAgLy8gVGhlIHRocmVlIG9wdGlvbnMsIHJlbmRlcmVkIGZyZXNoIGVhY2ggdGltZS4gSWYgYSBzYXZlZCBzZXJ2ZXIganVzdCBmYWlsZWQsIHByZS1maWxsICsgZXhwYW5kIHRoZSBjb25uZWN0IGZvcm0gc28gdGhlIHVzZXIgY2FuIHJldHJ5IG9yIGZpeCBpdC5cbiAgICAgICAgY29uc3QgcmVuZGVyT3B0aW9ucyA9ICgpID0+IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9e2Nzcy5mb250U2l6ZSg0MCkucGFkMig4MCwgNDApfSBvbkNsaWNrPXtwaWNrTG9jYWx9PlBpY2sgRGF0YSBEaXJlY3Rvcnk8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8U2VydmVyQ29ubmVjdEZvcm0gb25Db25uZWN0ZWQ9e29uQ29ubmVjdGVkfSBpbml0aWFsPXtzYXZlZFJlbW90ZX0gLz5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT17Y3NzLmZvbnRTaXplKDQwKS5wYWQyKDgwLCA0MCl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHJlamVjdEhhbmRsZShuZXcgRXJyb3IoXCJVc2VyIGRpc21pc3NlZCBmaWxlIHN5c3RlbSBhY2Nlc3MgcHJvbXB0XCIpKX0+RGlzbWlzczwvYnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQSBwcmV2aW91c2x5LXBpY2tlZCBsb2NhbCBmb2xkZXI6IHRyeSB0byByZXN0b3JlIGl0IChtYXkgbmVlZCBhIGNsaWNrKS4gU2tpcHBlZCB3aGVuIGEgc2F2ZWQgc2VydmVyIGZhaWxlZCDigJQgdGhhdCB1c2VyIHdhbnRzIHRoZSBzZXJ2ZXIsIHNvIGdvIHN0cmFpZ2h0IHRvIHRoZSAocHJlLWZpbGxlZCkgcHJvbXB0LlxuICAgICAgICBjb25zdCBzdG9yZWRJZCA9ICFzYXZlZFJlbW90ZSAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShnZXRGaWxlQVBJS2V5KCkpO1xuICAgICAgICBpZiAoc3RvcmVkSWQpIHtcbiAgICAgICAgICAgIGxldCBkb25lTG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IGlmICghZG9uZUxvYWQpIGRpc3BsYXlEYXRhLnVpID0gXCJDbGljayBhbnl3aGVyZSB0byBhbGxvdyBmaWxlIHN5c3RlbSBhY2Nlc3NcIjsgfSwgNTAwKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlID0gYXdhaXQgdHJ5VG9Mb2FkUG9pbnRlcihzdG9yZWRJZCk7XG4gICAgICAgICAgICAgICAgZG9uZUxvYWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChoYW5kbGUpIHJldHVybiBoYW5kbGU7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgZG9uZUxvYWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbXNnID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpO1xuICAgICAgICAgICAgICAgIGlmIChtc2cuaW5jbHVkZXMoXCJ1c2VyIGFjdGl2YXRpb25cIikgfHwgbXNnLmluY2x1ZGVzKFwiVXNlciBhY3RpdmF0aW9uXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlEYXRhLnVpID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Nzcy52Ym94KDIwKS5jZW50ZXJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPXtjc3MuZm9udFNpemUoNDApLnBhZDIoODAsIDQwKX0gb25DbGljaz17YXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RGF0YS51aSA9IFwiTG9hZGluZy4uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaCA9IGF3YWl0IHRyeVRvTG9hZFBvaW50ZXIoc3RvcmVkSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGgpIHsgcmVzb2x2ZUhhbmRsZShoKTsgcmV0dXJuOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHJldHJ5RXJyb3IpIHsgY29uc29sZS5lcnJvcihcIlJldHJ5IGZhaWxlZDpcIiwgcmV0cnlFcnJvcik7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheURhdGEudWkgPSA8ZGl2IGNsYXNzTmFtZT17Y3NzLnZib3goMjApLmNlbnRlcn0+e3JlbmRlck9wdGlvbnMoKX08L2Rpdj47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+Q2xpY2sgdG8gcmVzdG9yZSBmaWxlIHN5c3RlbSBhY2Nlc3M8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmVuZGVyT3B0aW9ucygpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBwcm9taXNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkaXNwbGF5RGF0YS51aSA9IDxkaXYgY2xhc3NOYW1lPXtjc3MudmJveCgyMCkuY2VudGVyfT57cmVuZGVyT3B0aW9ucygpfTwvZGl2PjtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHByb21pc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgcHJlYWN0LnJlbmRlcihudWxsLCByb290KTtcbiAgICAgICAgcm9vdC5yZW1vdmUoKTtcbiAgICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IGdldEZpbGVTdG9yYWdlTmVzdGVkID0gY2FjaGUoYXN5bmMgZnVuY3Rpb24gZ2V0RmlsZVN0b3JhZ2UocGF0aDogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RvcmFnZT4ge1xuICAgIGxldCBiYXNlID0gYXdhaXQgZ2V0RGlyZWN0b3J5SGFuZGxlKCk7XG4gICAgZm9yIChsZXQgcGFydCBvZiBwYXRoLnNwbGl0KFwiL1wiKSkge1xuICAgICAgICBpZiAoIXBhcnQpIGNvbnRpbnVlO1xuICAgICAgICBiYXNlID0gYXdhaXQgYmFzZS5nZXREaXJlY3RvcnlIYW5kbGUocGFydCwgeyBjcmVhdGU6IHRydWUgfSk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwSGFuZGxlKGJhc2UpO1xufSk7XG4vLyBTdXBwb3J0cyBpZiB0aGUgdXNlciBzZWxlY3RzIHRoZSBmb2xkZXIgdGhhdCBjb250YWlucyB0aGUgZGF0YSBmb2xkZXIgb3IgdGhlIGRhdGEgZm9sZGVyIGRpcmVjdGx5LiBJZiBwYXRoU3RyIGlzIGFuIGFic29sdXRlIHBhdGggKGFuZCB3ZSdyZSBpbiBub2RlanMpIHdlIHVzZSBpdCBkaXJlY3RseS5cbmV4cG9ydCBjb25zdCBnZXRGaWxlU3RvcmFnZU5lc3RlZDIgPSBjYWNoZShhc3luYyBmdW5jdGlvbiBnZXRGaWxlU3RvcmFnZShwYXRoU3RyOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdG9yYWdlPiB7XG4gICAgbGV0IGJhc2U6IERpcmVjdG9yeVdyYXBwZXI7XG4gICAgcGF0aFN0ciA9IHBhdGhTdHIucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpO1xuICAgIGlmIChpc05vZGUoKSkge1xuICAgICAgICBpZiAocGF0aC5pc0Fic29sdXRlKHBhdGhTdHIpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcEhhbmRsZShuZXcgTm9kZUpTRGlyZWN0b3J5SGFuZGxlV3JhcHBlcihwYXRoU3RyKSk7XG4gICAgICAgIH1cbiAgICAgICAgYmFzZSA9IG5ldyBOb2RlSlNEaXJlY3RvcnlIYW5kbGVXcmFwcGVyKHBhdGgucmVzb2x2ZShcIi4vZGF0YS9cIikpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2UgPSBhd2FpdCBnZXREaXJlY3RvcnlIYW5kbGUoKTtcbiAgICAgICAgLy8gU2tpcCB0aGUgXCJmaW5kIGRhdGEgc3ViZGlyXCIgaGFjayB1bmRlciBPUEZTIOKAlCB0aGF0J3MgZm9yIHBpY2tlZCBkaXJlY3RvcmllcyB3aGVyZSB0aGUgdXNlciBtaWdodCBoYXZlIHNlbGVjdGVkIGEgZm9sZGVyIHdpdGggdW5yZWxhdGVkIGZpbGVzOyBPUEZTIGlzIGEgY2xlYW4gcm9vdCB3ZSBvd24gZW5kLXRvLWVuZC5cbiAgICAgICAgaWYgKCFvcGZzRW5hYmxlZCkge1xuICAgICAgICAgICAgbGV0IGRpcnM6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgICBsZXQgYWxsczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgW25hbWUsIGVudHJ5XSBvZiBiYXNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5LmtpbmQgPT09IFwiZGlyZWN0b3J5XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlycy5wdXNoKG5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhbGxzLnB1c2gobmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBIQUNLOiBJZiB0aGVyZSBhcmUgZW5vdWdoIGZpbGVzLCBpdCdzIGFsbW9zdCBjZXJ0YWlubHkgbm90IGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgY29sbGVjdGlvbnMuIEl0J3MgcHJvYmFibHkgdGhlIHVzZXIncyBkYXRhIGluc3RlYWRcbiAgICAgICAgICAgIGlmIChkaXJzLmluY2x1ZGVzKFwiLmdpdFwiKSB8fCBkaXJzLmluY2x1ZGVzKFwiZGF0YVwiKSB8fCBhbGxzLmxlbmd0aCA+IDEwMCkge1xuICAgICAgICAgICAgICAgIGJhc2UgPSBhd2FpdCBiYXNlLmdldERpcmVjdG9yeUhhbmRsZShcImRhdGFcIiwgeyBjcmVhdGU6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgcGFydCBvZiBwYXRoU3RyLnNwbGl0KFwiL1wiKSkge1xuICAgICAgICBpZiAoIXBhcnQpIGNvbnRpbnVlO1xuICAgICAgICBiYXNlID0gYXdhaXQgYmFzZS5nZXREaXJlY3RvcnlIYW5kbGUocGFydCwgeyBjcmVhdGU6IHRydWUgfSk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwSGFuZGxlKGJhc2UpO1xufSk7XG5leHBvcnQgY29uc3QgZ2V0RmlsZVN0b3JhZ2UgPSBsYXp5KGFzeW5jIGZ1bmN0aW9uIGdldEZpbGVTdG9yYWdlKCk6IFByb21pc2U8RmlsZVN0b3JhZ2U+IHtcbiAgICBpZiAoVVNFX0lOREVYRURfREIpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdldEZpbGVTdG9yYWdlSW5kZXhEQigpO1xuICAgIH1cbiAgICBsZXQgaGFuZGxlID0gYXdhaXQgZ2V0RGlyZWN0b3J5SGFuZGxlKCk7XG4gICAgcmV0dXJuIHdyYXBIYW5kbGUoaGFuZGxlKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0U3RvcmFnZUxvY2F0aW9uKCkge1xuICAgIGlmIChvcGZzRW5hYmxlZCkge1xuICAgICAgICAvLyBEb24ndCBkZWxldGUgcHJldmlvdXMgZm9sZGVyIOKAlCBsaXN0UHJpdmF0ZUZvbGRlcnMgLyBwaWNrUHJpdmF0ZUZvbGRlciBzdGlsbCBuZWVkIGl0LiBKdXN0IHBvaW50IFwiY3VycmVudFwiIGF0IGEgZnJlc2ggdGltZXN0YW1wLW5hbWVkIG9uZSBzbyB0aGUgbmV4dCByZWxvYWQgc3RhcnRzIGNsZWFuLlxuICAgICAgICBzZXRDdXJyZW50T3Bmc0ZvbGRlcihuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvWzouXS9nLCBcIi1cIikpO1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZ2V0RmlsZUFQSUtleSgpKTtcbiAgICB0cnkgeyBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShyZW1vdGVDb25maWdLZXkoKSk7IH0gY2F0Y2ggeyAvKiBpZ25vcmUgKi8gfVxuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbn1cblxuZXhwb3J0IHR5cGUgTmVzdGVkRmlsZVN0b3JhZ2UgPSB7XG4gICAgaGFzS2V5KGtleTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPjtcbiAgICBnZXRTdG9yYWdlKGtleTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RvcmFnZT47XG4gICAgcmVtb3ZlU3RvcmFnZShrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gICAgZ2V0S2V5cyhpbmNsdWRlRm9sZGVycz86IGJvb2xlYW4pOiBQcm9taXNlPHN0cmluZ1tdPjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbGVTdG9yYWdlID0gSVN0b3JhZ2VSYXcgJiB7XG4gICAgZm9sZGVyOiBOZXN0ZWRGaWxlU3RvcmFnZTtcbiAgICAvLyBNaXJyb3JzIERpcmVjdG9yeVdyYXBwZXIuaXNSZW1vdGU6IHRydWUgd2hlbiB0aGlzIHN0b3JhZ2UgaXMgc2VydmVkIG92ZXIgdGhlIG5ldHdvcmsuIExldHMgY2FsbGVycyAoZS5nLiBCdWxrRGF0YWJhc2UyLCB3aGljaCBza2lwcyBhdXRvbWF0aWMgY29tcGFjdGlvbiBvdmVyIHRoZSBuZXR3b3JrIGJ5IGRlZmF1bHQpIGFkYXB0LlxuICAgIGlzUmVtb3RlPzogYm9vbGVhbjtcbn07XG5cbmxldCBhcHBlbmRRdWV1ZSA9IGNhY2hlKChrZXk6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBydW5JblNlcmlhbCgoZm5jOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSA9PiBmbmMoKSk7XG59KTtcblxuXG5hc3luYyBmdW5jdGlvbiBmaXhlZEdldEZpbGVIYW5kbGUoY29uZmlnOiB7XG4gICAgaGFuZGxlOiBEaXJlY3RvcnlXcmFwcGVyO1xuICAgIGtleTogc3RyaW5nO1xuICAgIGNyZWF0ZTogdHJ1ZTtcbn0pOiBQcm9taXNlPEZpbGVXcmFwcGVyPjtcbmFzeW5jIGZ1bmN0aW9uIGZpeGVkR2V0RmlsZUhhbmRsZShjb25maWc6IHtcbiAgICBoYW5kbGU6IERpcmVjdG9yeVdyYXBwZXI7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgY3JlYXRlPzogYm9vbGVhbjtcbn0pOiBQcm9taXNlPEZpbGVXcmFwcGVyIHwgdW5kZWZpbmVkPjtcbmFzeW5jIGZ1bmN0aW9uIGZpeGVkR2V0RmlsZUhhbmRsZShjb25maWc6IHtcbiAgICBoYW5kbGU6IERpcmVjdG9yeVdyYXBwZXI7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgY3JlYXRlPzogYm9vbGVhbjtcbn0pOiBQcm9taXNlPEZpbGVXcmFwcGVyIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKGNvbmZpZy5rZXkuaW5jbHVkZXMoXCIvXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHVzZSBmb2xkZXJzIGRpcmVjdGx5IGluIGZpbGUgc3lzdGVtIHJlYWQgLyB3cml0ZXMuIFVzZSBhIHdyYXBwZXIgd2hpY2ggaGFuZGxlcyB0aGUgZm9sZGVyIG5hdmlnYXRpb24uIFBhdGggd2FzICR7SlNPTi5zdHJpbmdpZnkoY29uZmlnLmtleSl9YCk7XG4gICAgfVxuICAgIC8vIEFMV0FZUyB0cnkgd2l0aG91dCBjcmVhdGUsIGJlY2F1c2UgdGhlIHNzaGZzLXdpbiBzdWNrcyBhbmQgZG9lc24ndCBzdXBwb3J0IGBjcmVhdGU6IHRydWVgPyBXdGYuLi5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgY29uZmlnLmhhbmRsZS5nZXRGaWxlSGFuZGxlKGNvbmZpZy5rZXkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICBpZiAoIWNvbmZpZy5jcmVhdGUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBjb25maWcuaGFuZGxlLmdldEZpbGVIYW5kbGUoY29uZmlnLmtleSwgeyBjcmVhdGU6IHRydWUgfSk7XG59XG5cbi8vIEEgZmlsZSB0aGF0IGdlbnVpbmVseSBkb2VzIG5vdCBleGlzdC4gV2UgbXVzdCBOT1QgcmV0cnkgdGhlc2UsIG90aGVyd2lzZSByZWFkaW5nIG1hbnkgbWlzc2luZyBmaWxlcyAoYSBjb21tb24gcGF0dGVybikgZ2V0cyBjYXRhc3Ryb3BoaWNhbGx5IHNsb3cuXG5mdW5jdGlvbiBpc01pc3NpbmdFcnJvcihlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGxldCBuYW1lID0gKGVycm9yIGFzIHsgbmFtZT86IHN0cmluZyB9KT8ubmFtZTtcbiAgICBsZXQgY29kZSA9IChlcnJvciBhcyB7IGNvZGU/OiBzdHJpbmcgfSk/LmNvZGU7XG4gICAgcmV0dXJuIG5hbWUgPT09IFwiTm90Rm91bmRFcnJvclwiIHx8IGNvZGUgPT09IFwiRU5PRU5UXCI7XG59XG5cbmNvbnN0IE1BWF9SRUFEX1JFVFJJRVMgPSA2O1xuXG4vLyBUaGUgYnJvd3NlciBGaWxlIFN5c3RlbSBBY2Nlc3MgQVBJIGNhbiB0cmFuc2llbnRseSBmYWlsIHJlYWRzIHVuZGVyIGhlYXZ5IGxvYWQgKGl0IGFwcGVhcnMgdG8gdGhyb3R0bGUgd2hlbiBhIHBhZ2UgaXNzdWVzIG1hbnkgcmVhZHMgYXQgb25jZSkuIFRob3NlIGZhaWx1cmVzIHN1cmZhY2UgYXMgZXJyb3JzIE9USEVSIHRoYW4gXCJub3QgZm91bmRcIiwgc28gd2UgcmV0cnkgdGhlbSB3aXRoIGJhY2tvZmYuIEEgcmVhbCBtaXNzaW5nIGZpbGUgKE5vdEZvdW5kRXJyb3IgLyBFTk9FTlQpIHJldHVybnMgdW5kZWZpbmVkIGltbWVkaWF0ZWx5IHdpdGggbm8gcmV0cnkuXG5hc3luYyBmdW5jdGlvbiByZWFkV2l0aFJldHJ5PFQ+KGxhYmVsOiBzdHJpbmcsIGtleTogc3RyaW5nLCByZWFkOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgbGV0IGJhY2tvZmYgPSAyNTtcbiAgICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgOyBhdHRlbXB0KyspIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCByZWFkKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAoaXNNaXNzaW5nRXJyb3IoZXJyb3IpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IG5hbWUgPSAoZXJyb3IgYXMgeyBuYW1lPzogc3RyaW5nIH0pPy5uYW1lIHx8IFwiRXJyb3JcIjtcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gKGVycm9yIGFzIHsgbWVzc2FnZT86IHN0cmluZyB9KT8ubWVzc2FnZSB8fCBTdHJpbmcoZXJyb3IpO1xuICAgICAgICAgICAgaWYgKGF0dGVtcHQgPj0gTUFYX1JFQURfUkVUUklFUykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtsYWJlbH0gZ2F2ZSB1cCBvbiAke0pTT04uc3RyaW5naWZ5KGtleSl9IGFmdGVyICR7YXR0ZW1wdH0gcmV0cmllcyAoJHtuYW1lfSk6ICR7bWVzc2FnZS5zbGljZSgwLCAyMDApfWApO1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7bGFiZWx9IHJldHJ5aW5nICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gKGF0dGVtcHQgJHthdHRlbXB0ICsgMX0sICR7bmFtZX0pOiAke21lc3NhZ2Uuc2xpY2UoMCwgMjAwKX1gKTtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBiYWNrb2ZmKSk7XG4gICAgICAgICAgICBiYWNrb2ZmID0gTWF0aC5taW4oYmFja29mZiAqIDIsIDEwMDApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiB3cmFwSGFuZGxlRmlsZXMoaGFuZGxlOiBEaXJlY3RvcnlXcmFwcGVyKTogSVN0b3JhZ2VSYXcge1xuICAgIC8vIExvZyB0aGUgZnVsbCBwYXRoIChyb290ICsgZmlsZW5hbWUpIHdoZW4gYXZhaWxhYmxlLCBzbyBhIGZhaWxpbmcgZmlsZSBpcyBpZGVudGlmaWFibGUuXG4gICAgY29uc3QgcGF0aE9mID0gKGtleTogc3RyaW5nKSA9PiBoYW5kbGUuZnVsbFBhdGggPyBoYW5kbGUuZnVsbFBhdGggKyBcIi9cIiArIGtleSA6IGtleTtcbiAgICByZXR1cm4ge1xuICAgICAgICBhc3luYyBnZXRJbmZvKGtleTogc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVhZFdpdGhSZXRyeShcImdldEluZm9cIiwgcGF0aE9mKGtleSksIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgaGFuZGxlLmdldEZpbGVIYW5kbGUoa2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlQ29udGVudCA9IGF3YWl0IGZpbGUuZ2V0RmlsZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHNpemU6IGZpbGVDb250ZW50LnNpemUsXG4gICAgICAgICAgICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZUNvbnRlbnQubGFzdE1vZGlmaWVkLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgZ2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgICAgIHJldHVybiByZWFkV2l0aFJldHJ5KFwiZ2V0XCIsIHBhdGhPZihrZXkpLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGhhbmRsZS5nZXRGaWxlSGFuZGxlKGtleSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZUNvbnRlbnQgPSBhd2FpdCBmaWxlLmdldEZpbGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0IGZpbGVDb250ZW50LmFycmF5QnVmZmVyKCk7XG4gICAgICAgICAgICAgICAgLy8gVW5kZXIgbG9hZCB0aGUgRlMgQWNjZXNzIEFQSSBjYW4gcmVzb2x2ZSB3aXRoIGEgdHJ1bmNhdGVkIGJ1ZmZlciBhbmQgbm8gZXJyb3IuIFRyZWF0IGEgc2hvcnQgcmVhZCBhcyB0cmFuc2llbnQgc28gcmVhZFdpdGhSZXRyeSByZXRyaWVzIGl0LlxuICAgICAgICAgICAgICAgIGlmIChhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoICE9PSBmaWxlQ29udGVudC5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKGBTaG9ydCByZWFkOiBnb3QgJHthcnJheUJ1ZmZlci5ieXRlTGVuZ3RofSBvZiAke2ZpbGVDb250ZW50LnNpemV9IGJ5dGVzYCksIHsgbmFtZTogXCJTaG9ydFJlYWRFcnJvclwiIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oYXJyYXlCdWZmZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgZ2V0UmFuZ2Uoa2V5OiBzdHJpbmcsIGNvbmZpZzogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9KTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgICAgIHJldHVybiByZWFkV2l0aFJldHJ5KFwiZ2V0UmFuZ2VcIiwgcGF0aE9mKGtleSksIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgaGFuZGxlLmdldEZpbGVIYW5kbGUoa2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlQ29udGVudCA9IGF3YWl0IGZpbGUuZ2V0RmlsZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWRTdGFydCA9IE1hdGgubWluKE1hdGgubWF4KGNvbmZpZy5zdGFydCwgMCksIGZpbGVDb250ZW50LnNpemUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWRFbmQgPSBNYXRoLm1pbihNYXRoLm1heChjb25maWcuZW5kLCBjbGFtcGVkU3RhcnQpLCBmaWxlQ29udGVudC5zaXplKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0IGZpbGVDb250ZW50LnNsaWNlKGNvbmZpZy5zdGFydCwgY29uZmlnLmVuZCkuYXJyYXlCdWZmZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCAhPT0gY2xhbXBlZEVuZCAtIGNsYW1wZWRTdGFydCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihgU2hvcnQgcmFuZ2UgcmVhZDogZ290ICR7YXJyYXlCdWZmZXIuYnl0ZUxlbmd0aH0gb2YgJHtjbGFtcGVkRW5kIC0gY2xhbXBlZFN0YXJ0fSBieXRlc2ApLCB7IG5hbWU6IFwiU2hvcnRSZWFkRXJyb3JcIiB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIGFwcGVuZChrZXk6IHN0cmluZywgdmFsdWU6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgYXdhaXQgYXBwZW5kUXVldWUoa2V5KShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gTk9URTogSW50ZXJlc3RpbmcgcG9pbnQuIENocm9tZSBkb2Vzbid0IG9wdGltaXplIHRoaXMgdG8gYmUgYW4gYXBwZW5kLCBhbmQgaW5zdGVhZCByZXdyaXRlcyB0aGUgZW50aXJlIGZpbGUuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGZpeGVkR2V0RmlsZUhhbmRsZSh7IGhhbmRsZSwga2V5LCBjcmVhdGU6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgd3JpdGFibGUgPSBhd2FpdCBmaWxlLmNyZWF0ZVdyaXRhYmxlKHsga2VlcEV4aXN0aW5nRGF0YTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gKGF3YWl0IGZpbGUuZ2V0RmlsZSgpKS5zaXplO1xuICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLnNlZWsob2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBhd2FpdCB3cml0YWJsZS53cml0ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgd3JpdGFibGUuY2xvc2UoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIHNldChrZXk6IHN0cmluZywgdmFsdWU6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGZpeGVkR2V0RmlsZUhhbmRsZSh7IGhhbmRsZSwga2V5LCBjcmVhdGU6IHRydWUgfSk7XG4gICAgICAgICAgICBjb25zdCB3cml0YWJsZSA9IGF3YWl0IGZpbGUuY3JlYXRlV3JpdGFibGUoKTtcbiAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLndyaXRlKHZhbHVlKTtcbiAgICAgICAgICAgIGF3YWl0IHdyaXRhYmxlLmNsb3NlKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgcmVtb3ZlKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgICBhd2FpdCBoYW5kbGUucmVtb3ZlRW50cnkoa2V5KTtcbiAgICAgICAgfSxcblxuICAgICAgICBhc3luYyBnZXRLZXlzKGluY2x1ZGVGb2xkZXJzOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IFtuYW1lLCBlbnRyeV0gb2YgaGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS5raW5kID09PSBcImZpbGVcIiB8fCBpbmNsdWRlRm9sZGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKGVudHJ5Lm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IChlcnJvciBhcyB7IG5hbWU/OiBzdHJpbmcgfSk/Lm5hbWUgfHwgXCJFcnJvclwiO1xuICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gKGVycm9yIGFzIHsgbWVzc2FnZT86IHN0cmluZyB9KT8ubWVzc2FnZSB8fCBTdHJpbmcoZXJyb3IpO1xuICAgICAgICAgICAgICAgIC8vIEEgZmFpbHVyZSBtaWQtaXRlcmF0aW9uIHdvdWxkIHNpbGVudGx5IHRydW5jYXRlIHRoZSBsaXN0aW5nLCBzbyBzdXJmYWNlIGl0IGxvdWRseS5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBnZXRLZXlzIGRpcmVjdG9yeSBpdGVyYXRpb24gZmFpbGVkIGFmdGVyICR7a2V5cy5sZW5ndGh9IGVudHJpZXMgKCR7bmFtZX0pOiAke21lc3NhZ2Uuc2xpY2UoMCwgMzAwKX1gKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIHJlc2V0KCkge1xuICAgICAgICAgICAgZm9yIGF3YWl0IChjb25zdCBbbmFtZSwgZW50cnldIG9mIGhhbmRsZSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGhhbmRsZS5yZW1vdmVFbnRyeShlbnRyeS5uYW1lLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiB3cmFwSGFuZGxlTmVzdGVkKGhhbmRsZTogRGlyZWN0b3J5V3JhcHBlcik6IE5lc3RlZEZpbGVTdG9yYWdlIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBhc3luYyBoYXNLZXkoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgaGFuZGxlLmdldERpcmVjdG9yeUhhbmRsZShrZXkpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgZ2V0U3RvcmFnZShrZXk6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0b3JhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1YkRpcmVjdG9yeSA9IGF3YWl0IGhhbmRsZS5nZXREaXJlY3RvcnlIYW5kbGUoa2V5LCB7IGNyZWF0ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB3cmFwSGFuZGxlKHN1YkRpcmVjdG9yeSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgcmVtb3ZlU3RvcmFnZShrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgYXdhaXQgaGFuZGxlLnJlbW92ZUVudHJ5KGtleSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgZ2V0S2V5cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgZm9yIGF3YWl0IChjb25zdCBbbmFtZSwgZW50cnldIG9mIGhhbmRsZSkge1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeS5raW5kID09PSBcImRpcmVjdG9yeVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGtleXMucHVzaChlbnRyeS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcEhhbmRsZShoYW5kbGU6IERpcmVjdG9yeVdyYXBwZXIpOiBGaWxlU3RvcmFnZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4ud3JhcEhhbmRsZUZpbGVzKGhhbmRsZSksXG4gICAgICAgIGZvbGRlcjogd3JhcEhhbmRsZU5lc3RlZChoYW5kbGUpLFxuICAgICAgICBpc1JlbW90ZTogaGFuZGxlLmlzUmVtb3RlLFxuICAgIH07XG59XG5cbi8vIFJldHVybnMgYSBVUkwgZm9yIGEgZmlsZSdzIGJ5dGVzLCByZWFkeSB0byBkcm9wIGludG8gPHZpZGVvPi88aW1nPi9mZXRjaC4gQSBuYXRpdmUgKGxvY2FsKSBmaWxlIGJlY29tZXMgYW4gaW4tbWVtb3J5IGJsb2I6IFVSTDsgYSByZW1vdGUgZmlsZSBiZWNvbWVzIGFuIGh0dHBzIFVSTCBpbnRvIHRoZSBzZXJ2ZXIncyByYW5nZS1jYXBhYmxlIC9tZWRpYSBlbmRwb2ludCAoYXV0aCB0b2tlbiBpbiB0aGUgcXVlcnksIHNpbmNlIGEgbWVkaWEgZWxlbWVudCBjYW4ndCBzZW5kIGhlYWRlcnMpLiBCb3RoIHN1cHBvcnQgSFRUUCByYW5nZSAvIHNlZWtpbmcuIEFMV0FZUyBoYW5kIHRoZSByZXN1bHQgdG8gZGlzcG9zZUZpbGVVUkwgd2hlbiBmaW5pc2hlZCDigJQgZm9yIGJsb2I6IFVSTHMgdGhhdCBmcmVlcyBtZW1vcnkuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RmlsZVVSTChmaWxlOiBGaWxlV3JhcHBlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKGZpbGUuZ2V0VVJMKSByZXR1cm4gZmlsZS5nZXRVUkwoKTtcbiAgICAvLyBOYXRpdmUgRmlsZVN5c3RlbUZpbGVIYW5kbGUgKG9yIGFueSBCbG9iLWJhY2tlZCBmaWxlKTogYSBibG9iOiBVUkwgb3ZlciB0aGUgRmlsZSBpdHNlbGYuXG4gICAgY29uc3QgZiA9IGF3YWl0IGZpbGUuZ2V0RmlsZSgpO1xuICAgIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKGYgYXMgdW5rbm93biBhcyBCbG9iKTtcbn1cblxuLy8gUmVsZWFzZXMgYSBVUkwgZnJvbSBnZXRGaWxlVVJMLiBibG9iOiBVUkxzIGxlYWsgdW50aWwgdGhlIGRvY3VtZW50IGlzIGdvbmUgdW5sZXNzIHJldm9rZWQ7IGh0dHBzL2ZpbGU6IFVSTHMgbmVlZCBubyBjbGVhbnVwLCBzbyB0aGlzIGlzIGEgbm8tb3AgZm9yIHRoZW0uXG5leHBvcnQgZnVuY3Rpb24gZGlzcG9zZUZpbGVVUkwodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoXCJibG9iOlwiKSkge1xuICAgICAgICB0cnkgeyBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7IH0gY2F0Y2ggeyAvKiBub3QgaW4gYSBicm93c2VyLCBvciBhbHJlYWR5IHJldm9rZWQgKi8gfVxuICAgIH1cbn1cblxuLy8gQSBTdG9yYWdlRmFjdG9yeSBiYWNrZWQgYnkgYSByZW1vdGUgc2VydmVyIChwYXRoIC0+IEZpbGVTdG9yYWdlKSwgZm9yIGNvZGUgdGhhdCBpbmplY3RzIGl0cyBvd24gc3RvcmFnZSBpbnRvIEJ1bGtEYXRhYmFzZTIgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCB0aGUgZGlyZWN0b3J5IHByb21wdC5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZW1vdGVGaWxlU3RvcmFnZUZhY3RvcnkodXJsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIG9wdGlvbnM/OiBSZW1vdGVPcHRpb25zKTogKHBhdGhTdHI6IHN0cmluZykgPT4gUHJvbWlzZTxGaWxlU3RvcmFnZT4ge1xuICAgIGNvbnN0IHJvb3QgPSBnZXRSZW1vdGVEaXJlY3RvcnlIYW5kbGUodXJsLCBwYXNzd29yZCwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGFzeW5jIChwYXRoU3RyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbGV0IGJhc2U6IERpcmVjdG9yeVdyYXBwZXIgPSByb290O1xuICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGF0aFN0ci5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIikuc3BsaXQoXCIvXCIpKSB7XG4gICAgICAgICAgICBpZiAoIXBhcnQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgYmFzZSA9IGF3YWl0IGJhc2UuZ2V0RGlyZWN0b3J5SGFuZGxlKHBhcnQsIHsgY3JlYXRlOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3cmFwSGFuZGxlKGJhc2UpO1xuICAgIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlUb0xvYWRQb2ludGVyKHBvaW50ZXI6IHN0cmluZykge1xuICAgIGxldCByZXN1bHQgPSBhd2FpdCBnZXRGaWxlU3lzdGVtUG9pbnRlcih7IHBvaW50ZXIgfSk7XG4gICAgaWYgKCFyZXN1bHQpIHJldHVybjtcbiAgICBsZXQgaGFuZGxlID0gYXdhaXQgcmVzdWx0Py5vblVzZXJBY3RpdmF0aW9uKCk7XG4gICAgaWYgKCFoYW5kbGUpIHJldHVybjtcbiAgICByZXR1cm4gaGFuZGxlIGFzIGFueSBhcyBEaXJlY3RvcnlXcmFwcGVyO1xufSJdfQ==
|
|
751
|
-
/* _JS_SOURCE_HASH = "
|
|
751
|
+
/* _JS_SOURCE_HASH = "75c8e6414439d8fe38f6f4220f9932f80d4a8ff3aedf0a28faf2cb93cb9dd164"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
// The important operations of an archive bucket (extracted from ArchivesBackblaze), so other backends (e.g. our own remote storage server) can be used interchangeably.
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
4
4
|
//exports.copyArchiveFile = exports.bufferChunkStream = exports.LARGE_SET_THRESHOLD = exports.windowsAcceptWrites = exports.windowAcceptsWrites = exports.VARIABLE_SHARD = exports.FULL_ROUTE = exports.STORAGE_NOT_CONFIGURED = exports.STORAGE_WRONG_ROUTE = exports.STORAGE_WRONG_VALID_WINDOW = exports.FULL_VALID_WINDOW = exports.assertValidLastModified = exports.IMMUTABLE_CACHE_TIME = exports.MAX_LAST_MODIFIED_FUTURE = void 0;
|
|
@@ -59,4 +59,4 @@ exports.bufferChunkStream = bufferChunkStream;
|
|
|
59
59
|
var archiveHelpers_1 = require("./archiveHelpers");
|
|
60
60
|
Object.defineProperty(exports, "copyArchiveFile", { enumerable: true, get: function () { return archiveHelpers_1.copyArchiveFile; } , configurable: true});
|
|
61
61
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUFyY2hpdmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiSUFyY2hpdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx3S0FBd0s7OztBQUV4SyxzSkFBc0o7QUFDekksUUFBQSx3QkFBd0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUV2RCx5TEFBeUw7QUFDNUssUUFBQSxvQkFBb0IsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ2pELFNBQWdCLHVCQUF1QixDQUFDLFlBQW9CO0lBQ3hELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxnQ0FBd0IsQ0FBQztJQUNoRCxJQUFJLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxZQUFZLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFHLENBQUM7QUFDTCxDQUFDO0FBTEQsMERBS0M7QUF1RlksUUFBQSxpQkFBaUIsR0FBcUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUE0SWhGLHdYQUF3WDtBQUMzVyxRQUFBLDBCQUEwQixHQUFHLDRDQUE0QyxDQUFDO0FBRXZGLDhMQUE4TDtBQUNqTCxRQUFBLG1CQUFtQixHQUFHLHFDQUFxQyxDQUFDO0FBRXpFLHVXQUF1VztBQUMxVixRQUFBLHNCQUFzQixHQUFHLHdDQUF3QyxDQUFDO0FBRWxFLFFBQUEsVUFBVSxHQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUVuRCwyUkFBMlI7QUFDOVEsUUFBQSxjQUFjLEdBQUcsNkNBQTZDLENBQUM7QUFDNUUsb0xBQW9MO0FBQ3BMLDhKQUE4SjtBQUM5SixTQUFnQixtQkFBbUIsQ0FBQyxXQUF5QztJQUN6RSxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzlCLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBSEQsa0RBR0M7QUFDRCxpTkFBaU47QUFDak4sU0FBZ0IsbUJBQW1CLENBQUMsWUFBZ0M7SUFDaEUsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUZELGtEQUVDO0FBRUQsd0tBQXdLO0FBQzNKLFFBQUEsbUJBQW1CLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFbkQsbVJBQW1SO0FBQ25SLFNBQWdCLGlCQUFpQixDQUFDLElBQVk7SUFDMUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsT0FBTztRQUNILFdBQVcsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNwQixJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUM1QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsMkJBQW1CLENBQUMsQ0FBQztZQUNoRSxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN2QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsYUFBYSxFQUFFLEdBQUcsRUFBRTtZQUNoQixNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDO0FBYkQsOENBYUM7QUFFRCx3SkFBd0o7QUFDeEosbURBQW1EO0FBQTFDLGlIQUFBLGVBQWUsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBpbXBvcnRhbnQgb3BlcmF0aW9ucyBvZiBhbiBhcmNoaXZlIGJ1Y2tldCAoZXh0cmFjdGVkIGZyb20gQXJjaGl2ZXNCYWNrYmxhemUpLCBzbyBvdGhlciBiYWNrZW5kcyAoZS5nLiBvdXIgb3duIHJlbW90ZSBzdG9yYWdlIHNlcnZlcikgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5LlxuXG4vLyBBIHdyaXRlIG1heSBub3QgYmUgc3RhbXBlZCBtb3JlIHRoYW4gdGhpcyBmYXIgaW4gdGhlIGZ1dHVyZSwgb3IgY2xvY2sgc2tldyBiZXR3ZWVuIG1hY2hpbmVzIHdvdWxkIGxldCBhIGJhZCB0aW1lc3RhbXAgYmxvY2sgd3JpdGVzIGZvciBhIGxvbmcgdGltZS5cbmV4cG9ydCBjb25zdCBNQVhfTEFTVF9NT0RJRklFRF9GVVRVUkUgPSAxNSAqIDYwICogMTAwMDtcblxuLy8gSG93IGxvbmcgYnJvd3NlcnMgbWF5IGNhY2hlIGZpbGVzIGZyb20gaW1tdXRhYmxlIGJ1Y2tldHMgKHRoZSBDYWNoZS1Db250cm9sIG1heC1hZ2UpLCBzaGFyZWQgYnkgZXZlcnkgaG9zdGluZyBwYXRoIChiYWNrYmxhemUgYnVja2V0IHNldHRpbmdzIGFuZCBvdXIgb3duIHN0b3JhZ2Ugc2VydmVyJ3MgSFRUUCByb3V0ZSlcbmV4cG9ydCBjb25zdCBJTU1VVEFCTEVfQ0FDSEVfVElNRSA9IDg2NDAwICogMTAwMDtcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRWYWxpZExhc3RNb2RpZmllZChsYXN0TW9kaWZpZWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBtYXggPSBEYXRlLm5vdygpICsgTUFYX0xBU1RfTU9ESUZJRURfRlVUVVJFO1xuICAgIGlmIChsYXN0TW9kaWZpZWQgPiBtYXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBsYXN0TW9kaWZpZWQgaXMgdG9vIGZhciBpbiB0aGUgZnV0dXJlOiAke2xhc3RNb2RpZmllZH0gPiAke21heH0gKG5vdyArIDE1IG1pbnV0ZXMpYCk7XG4gICAgfVxufVxuXG5cbmV4cG9ydCB0eXBlIFJlbW90ZUNvbmZpZyA9IHtcbiAgICAvLyBOT1RFOiBWZXJzaW9uIGlzIHVzZWQgd2hlbiB1cGRhdGluZyB0aGUgY29uZmlndXJhdGlvbi4gVGhlIG5ld2VyIHZlcnNpb24gaXMgYWx3YXlzIHRha2VuLiBBIG1pc3NpbmcgdmVyc2lvbiBjb3VudHMgYXMgdmVyc2lvbiAtMS5cbiAgICB2ZXJzaW9uPzogbnVtYmVyO1xuICAgIHNvdXJjZXM6IFJlbW90ZUNvbmZpZ0Jhc2VbXTtcbn07XG5cbi8qKlxuICAgIHN0cmluZyBhcmd1bWVudHMgd2lsbCBiZSBhIHVybCwgbG9va2luZyBsaWtlOlxuICAgICAgICBodHRwczovL3N0b3JhZ2UyLnZpZGdyaWR3ZWIuY29tOjQ0NDUvZmlsZS9leGFtcGxlYWNjb3VudC9leGFtcGxlYnVja2V0L3N0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblxuICAgICAgICBodHRwczovL2YwMDIuYmFja2JsYXplYjIuY29tL2ZpbGUvcXVlcnlzdWJ0ZXN0LWNvbS1wdWJsaWMtaW1tdXRhYmxlL3N0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblxuICAgICAgICAtIFRoZXNlIG1hcCB0byB7IHVybCB9LCB3aXRoIHRoZSB0eXBlIGluZmVycmVkIGZyb20gdGhlIHVybFxuICAgICAgICAtIEhvc3RlZCB1cmxzIGFyZSAvZmlsZS88YWNjb3VudD4vPGJ1Y2tldE5hbWU+Ly4uLiwgYmFja2JsYXplIHVybHMgYXJlIC9maWxlLzxidWNrZXROYW1lPi8uLi5cblxuICAgIE5PVEU6IElmIHdlIGRvIG5vdCBoYXZlIHJpZ2h0IGFjY2VzcyB0byB0aGVzZSwgdGhlbiBpdCBiZWNvbWVzIGEgcmVhZC1vbmx5IElBcmNoaXZlcywgd2hlcmUgd2Ugc29sZWx5IHJlYWQgdXNpbmcgdGhlIHVybCBmb3JtICh3aGljaCBtaWdodCB0aHJvdyBkdWUgdG8gbm90IGhhdmluZyBhY2Nlc3MgYXMgd2VsbCkuIFVOTEVTUyBPdXIgY29uZmlndXJhdGlvbiBleHBsaWNpdGx5IGhhcyBwdWJsaWM6IGZhbHNlLCBpbiB3aGljaCBjYXNlLCB3ZSBkb24ndCBldmVuIGhpdCB0aGUgVVJMIGFuZCB3ZSB0aHJvdyBvbiBhY2Nlc3MuXG5cbiAgICBOT1RFOiBJZiB3ZSdyZSBpbiB0aGUgYnJvd3Nlciwgd2Ugc2hvdWxkIGFsbG93IGRvd25sb2FkaW5nIHRoZSBmaWxlcyB2aWEgdGhlIFVSTCBmb3JtIChpZiBpdCdzIGEgcHVibGljIGJ1Y2tldCksIGhvd2V2ZXIsIHdlIHdvbid0IGFsbG93IHdyaXRpbmcsIGJlY2F1c2UgdGhlaXIgc2VydmVycyBkbyBub3QgYWxsb3cgc2VjdXJlIGJyb3dzZXIgd3JpdGVzLlxuKi9cbmV4cG9ydCB0eXBlIFJlbW90ZUNvbmZpZ0Jhc2UgPSBzdHJpbmcgfCBTb3VyY2VDb25maWc7XG5cbi8qKiBPbmUgY29uZmlndXJlZCBzb3VyY2UgaW4gYSByb3V0aW5nIGNvbmZpZzogYSBob3N0ZWQgKG91ciBzdG9yYWdlIHNlcnZlcikgb3IgYmFja2JsYXplIGVudHJ5LiBSZXF1ZXN0cyBjYXJyeSB0aGUgZXhhY3QgU291cmNlQ29uZmlnIHRoZXkgc2VsZWN0ZWQsIGFuZCB0aGUgc2VydmVyIG1hdGNoZXMgaXQgYWdhaW5zdCBpdHMgb3duIGVudHJpZXMgdG8gcGljayB0aGUgYmFja2luZyBzdG9yZS4gKi9cbmV4cG9ydCB0eXBlIFNvdXJjZUNvbmZpZyA9IEhvc3RlZENvbmZpZyB8IEJhY2tibGF6ZUNvbmZpZztcblxuZXhwb3J0IHR5cGUgQ29tbW9uQ29uZmlnID0ge1xuICAgIC8qKlxuICAgICAqIFRoZSBzdG9yYWdlIHRoaXMgZW50cnkgbmFtZXMsIGFzIG9wcG9zZWQgdG8gdGhlIHJ1bGVzIGZvciB1c2luZyBpdC4gRXZlcnkgZW50cnkgd2l0aCB0aGUgc2FtZVxuICAgICAqIG5hbWUgKGZvciB0aGUgc2FtZSBhY2NvdW50IGFuZCBidWNrZXQpIElTIHRoZSBzYW1lIHN0b3JhZ2U6IG9uZSBmb2xkZXIgb24gdGhlIHNlcnZlciwgb25lXG4gICAgICogc3RvcmUsIG9uZSBpbmRleCAtIGhvd2V2ZXIgbWFueSBlbnRyaWVzIHRoZXJlIGFyZSBhbmQgd2hhdGV2ZXIgdGhlaXIgd2luZG93cyBhbmQgcm91dGVzIHNheS5cbiAgICAgKiBFdmVyeXRoaW5nIGFib3V0IFdIRU4gYW5kIFdISUNIIEtFWVMgKHZhbGlkV2luZG93LCByb3V0ZSkgaXMgcG9saWN5IGxheWVyZWQgb24gdG9wIG9mIGl0LCBhbmRcbiAgICAgKiBjaGFuZ2luZyB0aGF0IHBvbGljeSBuZXZlciBtb3ZlcyBkYXRhLlxuICAgICAqXG4gICAgICogTGV0dGVycywgbnVtYmVycywgdW5kZXJzY29yZSwgZGFzaCBhbmQgcGVyaW9kcywgdXAgdG8gNjQgY2hhcmFjdGVycyAtIHNvIGEgaG9zdCBvciBhIHZlcnNpb25cbiAgICAgKiBjYW4gYmUgdXNlZCBhcy1pcy4gSXQgaXMgdGhlIGZvbGRlciBuYW1lLCBzbyBpdCBtdXN0IHN0YXkgdW5pcXVlIGFuZCBtdXN0IG5ldmVyIGJlIHJldXNlZCBmb3JcbiAgICAgKiBkaWZmZXJlbnQgc3RvcmFnZTpcbiAgICAgKiBwb2ludGluZyB0d28gdW5yZWxhdGVkIGVudHJpZXMgYXQgb25lIG5hbWUgbWVyZ2VzIHRoZWlyIGRhdGEsIGFuZCByZS11c2luZyBhIHJldGlyZWQgbmFtZVxuICAgICAqIGhhbmRzIHRoZSBuZXcgZW50cnkgdGhlIHJldGlyZWQgb25lJ3MgZmlsZXMuIERlY2lkaW5nIHRoYXQgaXMgdGhlIGRldmVsb3BlcidzIGpvYiAtIHRoZSBzZXJ2ZXJcbiAgICAgKiBvbmx5IGV2ZXIgZG9lcyB3aGF0IHRoZSBuYW1lIHNheXMuXG4gICAgICovXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8qKiBCeSBkZWZhdWx0IGEgc2VydmVyIGhvc3RpbmcgdGhpcyBidWNrZXQgZWFnZXJseSBjb3BpZXMgdGhpcyBzb3VyY2UncyBmdWxsIGNvbnRlbnRzIG9udG8gaXRzIG93biBkaXNrIChvbiB0b3Agb2YgdGhlIGxhenkgcmVhZC10aHJvdWdoIGNhY2hpbmcpLiBTZXQgdGhpcyB0byBiZSBhIGZyb250IGVuZCBmb3IgYSB2ZXJ5IGxhcmdlIGRhdGFiYXNlIHdpdGhvdXQgY29weWluZyB0aGUgZnVsbCBkYXRhYmFzZSAtIHJlYWRzIHN0aWxsIGRvd24tY2FjaGUgaW5kaXZpZHVhbCBmaWxlcyBvbiBkZW1hbmQuICovXG4gICAgbm9GdWxsU3luYz86IGJvb2xlYW47XG4gICAgLyoqIEJ5dGVzIG9mIHJlYWQtY2FjaGUgdGhpcyBzZXJ2ZXIncyBkaXNrIG1heSBob2xkOyBsZWFzdC1yZWNlbnRseS11c2VkIGZpbGVzIGFyZSBkZWxldGVkIGZyb20gZGlzayB0byBzdGF5IHVuZGVyIGl0IChvbmx5IGV2ZXIgd2hlbiBhbm90aGVyIHNvdXJjZSB2ZXJpZmlhYmx5IGhvbGRzIHRoZSBmaWxlIC0gdGhlIG9ubHkgY29weSBpcyBuZXZlciBkZWxldGVkKS4gUmVxdWlyZXMgbm9GdWxsU3luYyAoYSBmdWxsIGNvcHkgY2FuJ3QgYmUgYm91bmRlZCkuICovXG4gICAgcmVhZGVyRGlza0xpbWl0PzogbnVtYmVyO1xuICAgIC8qKiBUaGUgd3JpdGUgdGltZXMgKFtzdGFydE1zLCBlbmRNc10pIHRoaXMgc291cmNlIGlzIHZhbGlkIGZvciAoc2VlIEFyY2hpdmVzU291cmNlLnZhbGlkV2luZG93IGZvciB0aGUgc3luY2hyb25pemF0aW9uIHNlbWFudGljcykuIFJlcXVpcmVkIG9uIG9iamVjdCBjb25maWdzOiBjb25maWd1cmF0aW9uIGNoYW5nZXMgbXVzdCBiZSBTQ0hFRFVMRUQgKGEgbmV3IHNvdXJjZSBiZWNvbWVzIHZhbGlkIGF0IGEgZnV0dXJlIHRpbWUgd2hpbGUgdGhlIG9sZCBvbmUncyB3aW5kb3cgZW5kcyksIG5vdCBmbGlwcGVkIGluc3RhbnRseS4gUGxhaW4gVVJMLXN0cmluZyBzb3VyY2VzIGRlZmF1bHQgdG8gRlVMTF9WQUxJRF9XSU5ET1cgLSBvbmNlIHlvdSdyZSB3cml0aW5nIG9iamVjdCBjb25maWdzLCB5b3UncmUgZG9pbmcgc29tZXRoaW5nIGNvbXBsaWNhdGVkIGVub3VnaCB0byB0aGluayBhYm91dCB3aGVuIHRoaW5ncyBjaGFuZ2UuICovXG4gICAgdmFsaWRXaW5kb3c6IFtudW1iZXIsIG51bWJlcl07XG4gICAgLyoqIFNoYXJkaW5nOiB0aGUgZnJhY3Rpb24gb2YgdGhlIGtleSBzcGFjZSB0aGlzIHNvdXJjZSBoYW5kbGVzLCBhcyBbc3RhcnQsIGVuZCkgb3ZlciBbMCwgMSkgKGtleXMgYXJlIHJvdXRlZCBieSBnZXRSb3V0ZSBpbiByZW1vdGVDb25maWcudHMpLiBEZWZhdWx0cyB0byBGVUxMX1JPVVRFICh1bnNoYXJkZWQpLiBBdCBldmVyeSBwb2ludCBpbiB0aW1lIHRoZSBzb3VyY2VzJyByb3V0ZXMgbXVzdCBmdWxseSBjb3ZlciBbMCwgMSksIG9yIHNvbWUga2V5cyBjb3VsZCBuZXZlciBiZSByZWFkLiAqL1xuICAgIHJvdXRlPzogW251bWJlciwgbnVtYmVyXTtcbiAgICAvKiogU2V0IG9uIGVudHJpZXMgaW5qZWN0ZWQgaW50byB0aGUgaW4tbWVtb3J5IGNvbmZpZyBieSBhbiBvdmVybGF5IChhIGRlcGxveSBzd2l0Y2hvdmVyJ3MgYWx0ZXJuYXRlLXBvcnQgd2luZG93KS4gTmV2ZXIgd3JpdHRlbiB0byBkaXNrOiByZXNvbHZlSW50ZXJtZWRpYXRlU291cmNlcyBzdHJpcHMgdGhlc2UgYW5kIHJlam9pbnMgdGhlIHdpbmRvd3MgYXJvdW5kIHRoZW0sIHdoaWNoIGlzIGFsc28gaG93IGEgY2xpZW50IHRlbGxzIHdoZXRoZXIgYW4gdXBkYXRlIGlzIGEgcmVhbCBjb25maWd1cmF0aW9uIGNoYW5nZSBvciBqdXN0IGFuIG92ZXJsYXkuIFRoZSBWQUxVRSBpcyB0aGUgdXJsIG9mIHRoZSBzb3VyY2UgdGhpcyBpbnRlcm1lZGlhdGUgd2FzIHNwbGl0IG91dCBvZiAoaXRzIGFsdGVybmF0ZS1wb3J0IHZpZXcpIC0gc28gYSByZXF1ZXN0IG5hbWluZyB0aGUgaW50ZXJtZWRpYXRlIHN0aWxsIHJlc29sdmVzIHRvIHRoZSBPUklHSU5BTCBzb3VyY2UsIGV2ZW4gYWZ0ZXIgdGhlIGludGVybWVkaWF0ZSByZWpvaW5zIGFuZCB0aGUgZW50cnkgaXMgZ29uZS4gKi9cbiAgICBpbnRlcm1lZGlhdGU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBIb3N0ZWRDb25maWcgPSBDb21tb25Db25maWcgJiB7XG4gICAgdHlwZTogXCJyZW1vdGVcIjtcblxuICAgIC8vIEV4OiBodHRwczovLzk5LTI1MC0xMjQtOTEucXVlcnlzdWJ0ZXN0LmNvbTo1MjMzL2ZpbGUvcm9vdC91bmlxdWVidWNrZXRuYW1lL3N0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblxuICAgIC8vIE5PVEU6IFRoZSBhY2NvdW50IGFuZCBidWNrZXQgbmFtZSBhcmUgb2J0YWluZWQgZnJvbSB0aGUgVVJMLlxuICAgIHVybDogc3RyaW5nO1xuXG4gICAgLy8gTk9URTogQXV0aGVudGljYXRpb24gaXMgaGFuZGxlZCBieSBjZXJ0LnRzLCB2aWEgaGF2aW5nIHlvdXIgbWFjaGluZSB0cnVzdGVkIHRvIGFjY2VzcyB0aGlzIGFjY291bnQuIFxuXG4gICAgcHVibGljPzogYm9vbGVhbjtcbiAgICAvLyBGYXN0IG1vZGU6IHRoZSBzZXJ2ZXIgYWNrbm93bGVkZ2VzIHdyaXRlcyBvbmNlIHRoZXkgYXJlIGluIG1lbW9yeSwgZmx1c2hpbmcgdG8gZGlzayBhZnRlciB3cml0ZURlbGF5IChkZWZhdWx0IDUgbWludXRlcykgYW5kIGNvYWxlc2Npbmcgd3JpdGVzIHRvIHRoZSBzYW1lIGZpbGUuIEEgc2VydmVyIGNyYXNoIGxvc2VzIHdyaXRlcyB0aGF0IGhhdmVuJ3QgZmx1c2hlZCB5ZXQuXG4gICAgZmFzdD86IGJvb2xlYW47XG4gICAgd3JpdGVEZWxheT86IG51bWJlcjtcbiAgICAvLyBXcml0ZXMgdG8gcGF0aHMgdGhhdCBhbHJlYWR5IGV4aXN0IGFyZSBkaXNhbGxvd2VkIChkZWxldGVzIHN0aWxsIHdvcmspLlxuICAgIGltbXV0YWJsZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBCYWNrYmxhemVDb25maWcgPSBDb21tb25Db25maWcgJiB7XG4gICAgdHlwZTogXCJiYWNrYmxhemVcIjtcbiAgICAvLyBFeDogaHR0cHM6Ly9mMDAyLmJhY2tibGF6ZWIyLmNvbS9maWxlL3F1ZXJ5c3VidGVzdC1jb20tcHVibGljLWltbXV0YWJsZS9zdG9yYWdlL3N0b3JhZ2Vyb3V0aW5nLmpzb25cbiAgICAvLyBOT1RFOiBUaGUgYnVja2V0IG5hbWUgaXMgb2J0YWluZWQgZnJvbSB0aGUgVVJMLlxuICAgIHVybDogc3RyaW5nO1xuICAgIC8vIFB1YmxpYyBidWNrZXRzIGFyZSBzZXJ2ZWQgb3ZlciBwbGFpbiBIVFRQUyBHRVRzIChnZXRVUkwpLiBQcml2YXRlIGJ1Y2tldHMgYXJlIEFQSS1hY2Nlc3Mgb25seS5cbiAgICBwdWJsaWM/OiBib29sZWFuO1xuICAgIC8vIE5PVEU6IFRoaXMgaXNuJ3QgZW5mb3JjZWQgb24gdGhlIGJhY2tibGF6ZSBsZXZlbCwgc28gdGhpcyBpcyBqdXN0IGEgY2xpZW50LXNpZGUgZ3VhcmFudGVlLiBUaGlzIGNhbiBjaGFuZ2UgaG93IHdlIGNhY2hlIGZpbGVzLlxuICAgIC8vICAtIEJhY2tibGF6ZSBkb2VzIHN1cHBvcnQgaW1tdXRhYmlsaXR5LiBIb3dldmVyLCBhcHBhcmVudGx5LCBvbmNlIHdlIGVuYWJsZSBpdCBvbiBhIGJ1Y2tldCwgd2UgY2FuJ3QgZGlzYWJsZSBpdCwgd2hpY2ggaXMgcmVhbGx5IGJhZCwgYXMgaXQgbWVhbnMgaWYgb3VyIGNvZGUgY291bGQgZXZlciBlbmFibGUgaXQgYW5kIHdlIGFjY2lkZW50YWxseSBlbmFibGUgaXQgb24gYW4gaW1wb3J0YW50IGJ1Y2tldCwgd2UgZXNzZW50aWFsbHkganVzdCBicmlja2VkIHRoYXQgYnVja2V0LiBTbyB3ZSBzaG91bGQgbmV2ZXIgd3JpdGUgYW55IGNvZGUgdGhhdCBldmVyIHRyaWVzIHRvIHVzZSBiYWNrYmxhemUgdG8gbWFrZSB0aGluZ3MgaW1tdXRhYmxlLiBcbiAgICBpbW11dGFibGU/OiBib29sZWFuO1xuICAgIC8vIENPUlMgb3JpZ2lucyBhbGxvd2VkIHRvIGNvbnN1bWUgdGhlIGJ1Y2tldCdzIGZpbGVzIGluIGEgYnJvd3Nlci4gTm90IGEgc2VjdXJpdHkgYm91bmRhcnkgKGFjY2VzcyBpcyBnYXRlZCBieSB0aGUgQVBJIGtleSAvIHNpZ25lZCBVUkxzLCBuZWl0aGVyIG9mIHdoaWNoIHJpZGVzIGluIGNvb2tpZXMpIC0gaXQgb25seSBjb250cm9scyB3aGljaCBzaXRlcycgaW4tcGFnZSBKYXZhU2NyaXB0IGNhbiByZWFkIHJlc3BvbnNlcy4gRGVmYXVsdHMgdG8gYW55IEhUVFBTIG9yaWdpbi5cbiAgICBhbGxvd2VkT3JpZ2lucz86IHN0cmluZ1tdO1xuXG4gICAgLy8gTk9URTogV2Ugd2lsbCBhY2Nlc3MgdGhlIGFwaSBrZXkgZnJvbSBnZXRTZWNyZXQsIHNlZSBiYWNrYmxhemUudHMgZm9yIHRoZSBzcGVjaWZpYyBrZXlzLlxufTtcblxuXG5leHBvcnQgY29uc3QgRlVMTF9WQUxJRF9XSU5ET1c6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdO1xuXG5cblxuXG5leHBvcnQgdHlwZSBHZXRDb25maWcgPSB7XG4gICAgcmFuZ2U/OiB7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH07XG4gICAgLyoqIFJlYWQgT05MWSBmcm9tIHRoZSBwcmltYXJ5IHNvdXJjZSAtIHRoZSBvbmUgd3JpdGVzIHdvdWxkIHRhcmdldCAtIGluc3RlYWQgb2YgZmFsbGluZyBiYWNrIGFjcm9zcyB0aGUgcmVkdW5kYW50IHNvdXJjZXMuIFVzZSB0aGlzIHdoZW4geW91IHdhbnQgeW91ciByZWFkcyBhbmQgd3JpdGVzIHRvIGJlIHNvbWV3aGF0IGF0b21pYzogdGhlcmUgd2lsbCBzdGlsbCBiZSBpc3N1ZXMgd2l0aCB0aGUgcm91bmQgdHJpcCwgYnV0IHdpdGhvdXQgaXQgeW91IGNvdWxkIHRhbGsgdG8gYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBub2RlIGFuZCBnZXQgYSBtdWNoIG9sZGVyIHZhbHVlLiBNb3N0IHJlYWRzIGFyZW4ndCBmb2xsb3dlZCBieSBhIHdyaXRlIHRob3VnaCwgc28gZm9yIG1vc3QgY2FzZXMgaXQncyBiZXR0ZXIgdG8gZ2V0IGEgdmFsdWUgdGhhbiB0byBoYXZlIHRvIHdhaXQgKG9yIGV2ZW4gdGhyb3cpIHdoZW4gdGhlIHByaW1hcnkgbm9kZSBpcyBub3QgYXZhaWxhYmxlLiAqL1xuICAgIG5vRmFsbGJhY2tzPzogYm9vbGVhbjtcbiAgICAvKiogU3RvcmUtdG8tc3RvcmUgY2FsbDogdGhlIHNlcnZpbmcgbm9kZSBuZXZlciBjb25zdWx0cyBpdHMgT1RIRVIgc291cmNlcyAtIGNoYXNpbmcgaXRzIG93biByZW1vdGUgaG9sZGVycyB3aGlsZSBhbnN3ZXJpbmcgYW5vdGhlciBzdG9yZSBpcyBob3cgaW5maW5pdGUgZ2V0IGxvb3BzIGJldHdlZW4gc3RvcmVzIGZvcm0gKEEgYXNrcyBCLCBCJ3MgaW5kZXggcG9pbnRzIGJhY2sgYXQgQSwgLi4uKS4gVGhhdCBpcyB0aGUgZmxhZydzIEVOVElSRSBtZWFuaW5nOiBubyBmYWxsYmFja3MsIG5vdGhpbmcgZWxzZS4gVGhlIHJlYWQgaXMgb3RoZXJ3aXNlIGZ1bGx5IGNvcnJlY3QgLSB0aGUgbm9kZSdzIGluZGV4IHN0aWxsIGdhdGVzIGl0IChhIGtleSBpdHMgaW5kZXggc2F5cyBpcyBkZWxldGVkIGFuc3dlcnMgYXMgZGVsZXRlZCwgbmV2ZXIgYXMgdGhlIGhpc3RvcnkgYnl0ZXMgc3RpbGwgc2l0dGluZyBvbiBpdHMgZGlzaykuIE5vIHdpbmRvdyBvciByb3V0ZSBjaGVja3Mgb24gcmVhZHMuICovXG4gICAgaW50ZXJuYWw/OiBib29sZWFuO1xuICAgIC8qKiBBbHNvIHJldHVybiBzaXplLTAgcmVzdWx0cyAodG9tYnN0b25lcyAtIGFuIGVtcHR5IGZpbGUgSVMgYSBtaXNzaW5nIGZpbGUpIGluc3RlYWQgb2YgdHJlYXRpbmcgdGhlbSBhcyBhYnNlbnQuIE9mZiBieSBkZWZhdWx0LCBtYXRjaGluZyBnZXRJbmZvJ3MgZmxhZyBvZiB0aGUgc2FtZSBuYW1lLiBTeW5jaHJvbml6YXRpb24gcGFzc2VzIHRoaXMgc28gYSBERUxFVEVEIGZpbGUgKHdpdGggaXRzIHdyaXRlIHRpbWUpIGlzIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIGEgZmlsZSB0aGF0IG5ldmVyIGV4aXN0ZWQuICovXG4gICAgaW5jbHVkZVRvbWJzdG9uZXM/OiBib29sZWFuO1xuICAgIC8qKiBSZWFkcyBmaWxlcyB0aGF0IGFyZSBNQVJLRUQgZm9yIGRlbGV0aW9uIChkZWxldGVkLCBidXQgd2l0aCB0aGVpciBieXRlcyBzdGlsbCBpbiB0aGUgZGVsZXRpb24gaGlzdG9yeSAtIHNlZSBTZXRDb25maWcudW5kZWxldGUgZm9yIHJlc3RvcmluZyB0aGVtKS4gVGhlIGFjdHVhbCBjb250ZW50IGNvbWVzIGJhY2ssIHVubGlrZSBpbmNsdWRlVG9tYnN0b25lcywgd2hpY2ggb25seSByZXBvcnRzIHRoYXQgYSBkZWxldGlvbiBoYXBwZW5lZC4gKi9cbiAgICBpbmNsdWRlTWFya2VkPzogYm9vbGVhbjtcbiAgICAvKiogUmVhZCBmcm9tIEVYQUNUTFkgdGhpcyBzb3VyY2UgLSBpdHMgY29uZmlnIHVybCwgYXMgQXJjaGl2ZXNDaGFpbi5nZXRGaWxlU291cmNlcyBsaXN0cyB0aGVtIC0gd2l0aCBubyBmYWxsYmFjayB0byBhbnkgb3RoZXIuIEZvciBjb21wYXJpbmcgdGhlIGNvcGllcyBkaWZmZXJlbnQgc291cmNlcyBob2xkIChjb21iaW5lIHdpdGggaW50ZXJuYWwgdG8gcmVhZCBvbmx5IHRoYXQgc2VydmVyJ3Mgb3duIGRpc2ssIHNraXBwaW5nIGl0cyBob2xkZXIgcmVzb2x1dGlvbikuIE11bHRpLXNvdXJjZSBhcmNoaXZlcyBvbmx5OyB0aHJvd3Mgd2hlbiBubyBjb25maWd1cmVkIHNvdXJjZSBoYXMgdGhlIHVybC4gKi9cbiAgICBzb3VyY2VVcmw/OiBzdHJpbmc7XG4gICAgLyoqIEhvdyBtYW55IGV4dHJhIHRpbWVzIHRoZSBXSE9MRSBvcGVyYXRpb24gaXMgcmV0cmllZCBhZnRlciBldmVyeSBzb3VyY2UgaW4gYSBwYXNzIGZhaWxlZCAtIGFueSBlcnJvciBjb3VudHMgKHRoZSB3cm9uZy13aW5kb3cvcm91dGUgbWFya2VycyBzdGlsbCBnZXQgdGhlaXIgY29uZmlnIHJlLXJlc29sdmUgZmlyc3QpLiBPbmx5IGFwcGxpZXMgdG8gZmFsbGJhY2sgZGlzcGF0Y2ggKG11bHRpLXNvdXJjZSwgbm90IG5vRmFsbGJhY2tzKSwgd2hlcmUgaXQgZGVmYXVsdHMgdG8gMzsgdGhlIG5vRmFsbGJhY2tzL3dyaXRlLW5vZGUgcGF0aCBhbHJlYWR5IHJldHJpZXMgb24gaXRzIG93biBkZWFkbGluZS4gTXVsdGktcGFydCB1cGxvYWRzIGFkZGl0aW9uYWxseSByZXRyeSBwZXIgcGFydCByZWdhcmRsZXNzIG9mIHRoaXMuICovXG4gICAgcmV0cmllcz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbmRDb25maWcgPSB7XG4gICAgc2hhbGxvdz86IGJvb2xlYW47XG4gICAgdHlwZT86IFwiZmlsZXNcIiB8IFwiZm9sZGVyc1wiO1xuICAgIC8qKiBBbHNvIGxpc3QgZmlsZXMgTUFSS0VEIGZvciBkZWxldGlvbiAoc2VlIEdldENvbmZpZy5pbmNsdWRlTWFya2VkKS4gKi9cbiAgICBpbmNsdWRlTWFya2VkPzogYm9vbGVhbjtcbiAgICAvKiogTGlzdGluZ3Mgbm9ybWFsbHkgY29tZSBPTkxZIGZyb20gdGhlIGF1dGhvcml0YXRpdmUgc291cmNlcyAodGhlIHNhbWUgbm9kZXMgd3JpdGVzIGdvIHRvIC0gcmVhZC15b3VyLXdyaXRlcykuIFdpdGggZmFsbGJhY2tzLCBhIGZhaWxpbmcgc2hhcmQncyByb3V0ZXMgYXJlIGNvdmVyZWQgYnkgdGhlIG5leHQgc291cmNlIGhvbGRpbmcgdGhlbSAoZS5nLiBhIHdpZGUgcmVhZCByZXBsaWNhKSBpbnN0ZWFkIG9mIHRoZSBjYWxsIGZhaWxpbmcgLSBoaWdoIGF2YWlsYWJpbGl0eSBhdCB0aGUgY29zdCBvZiBwb3NzaWJseSBtaXNzaW5nIGp1c3Qtd3JpdHRlbiBkYXRhLiBTaW5nbGUtc291cmNlIGFyY2hpdmVzIGlnbm9yZSB0aGUgZmxhZy4gKi9cbiAgICBmYWxsYmFja3M/OiBib29sZWFuO1xuICAgIC8qKiBTdG9yZS10by1zdG9yZSBsaXN0aW5nOiBvbmx5IGVudHJpZXMgd2hvc2UgYnl0ZXMgdGhlIG5vZGUgSVRTRUxGIGhvbGRzIC0gbmV2ZXIgZW50cmllcyBpdHMgaW5kZXggcmVkaXJlY3RzIHRvIGl0cyBvd24gb3RoZXIgc291cmNlcy4gQSBwZWVyIHJlYWRzIHdpdGggR2V0Q29uZmlnLmludGVybmFsICh3aGljaCBuZXZlciBjaGFzZXMgdGhvc2UgcmVkaXJlY3RzKSwgc28gbGlzdGluZyBhIHJlZGlyZWN0IHdvdWxkIGp1c3QgbWFrZSB0aGUgcGVlciBmbGFnIHRoZSBmaWxlIG1pc3NpbmcsIHB1cmdlIGl0LCByZS1saXN0IGl0LCBhbmQgbG9vcCBmb3JldmVyOyB0aGUgcGVlciBoZWFycyBhYm91dCBzdWNoIGZpbGVzIGZyb20gdGhlIHNvdXJjZSBhY3R1YWxseSBob2xkaW5nIHRoZW0gaW5zdGVhZC4gKi9cbiAgICBpbnRlcm5hbD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEZWxDb25maWcgPSB7XG4gICAgLyoqIFN0YW1wcyB0aGUgZGVsZXRpb24gKGl0cyB0b21ic3RvbmUpIHdpdGggdGhpcyB3cml0ZSB0aW1lIGluc3RlYWQgb2Ygbm93LiBTeW5jaHJvbml6YXRpb24gcGFzc2VzIHRoZSBPUklHSU5BTCBkZWxldGlvbiB0aW1lLCBzbyBkZWxldGlvbiBvcmRlcmluZyBzdXJ2aXZlcyBwcm9wYWdhdGlvbiBleGFjdGx5IGxpa2UgYW55IG90aGVyIHdyaXRlJ3Mgb3JkZXJpbmcuICovXG4gICAgbGFzdE1vZGlmaWVkPzogbnVtYmVyO1xuICAgIC8qKiBTZWUgU2V0Q29uZmlnLmludGVybmFsLiAqL1xuICAgIGludGVybmFsPzogYm9vbGVhbjtcbiAgICAvKiogU2VlIFNldENvbmZpZy5ub0NoZWNrcy4gKi9cbiAgICBub0NoZWNrcz86IGJvb2xlYW47XG4gICAgLyoqIFNlZSBTZXRDb25maWcuZmFsbGJhY2tzLiAqL1xuICAgIGZhbGxiYWNrcz86IGJvb2xlYW47XG4gICAgLyoqIFNlZSBHZXRDb25maWcucmV0cmllcy4gKi9cbiAgICByZXRyaWVzPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0SW5mb0NvbmZpZyA9IHtcbiAgICAvKiogQWxzbyByZXBvcnQgc2l6ZS0wIGVudHJpZXMgKHRvbWJzdG9uZXMgLSBhbiBlbXB0eSBmaWxlIElTIGEgbWlzc2luZyBmaWxlKS4gT2ZmIGJ5IGRlZmF1bHQsIHNvIGEgZGVsZXRlZCBrZXkgcmVwb3J0cyB1bmRlZmluZWQsIG1hdGNoaW5nIGdldC4gU3luY2hyb25pemF0aW9uLXN0eWxlIGNhbGxlcnMgcGFzcyB0aGlzIHdoZW4gdGhleSBuZWVkIGEgZGVsZXRpb24ncyB3cml0ZSB0aW1lIChlLmcuIHRvIGNvbXBhcmUgaXQgYWdhaW5zdCBhIHdyaXRlIHRoZXkgYXJlIGFib3V0IHRvIG1ha2UpLiAqL1xuICAgIGluY2x1ZGVUb21ic3RvbmVzPzogYm9vbGVhbjtcbiAgICAvKiogU2VlIEdldENvbmZpZy5ub0ZhbGxiYWNrczogYW5zd2VyIE9OTFkgZnJvbSB0aGUgcHJpbWFyeSBzb3VyY2UgKHRoZSBvbmUgd3JpdGVzIHdvdWxkIHRhcmdldCkgaW5zdGVhZCBvZiBmYWxsaW5nIGJhY2sgYWNyb3NzIHRoZSByZWR1bmRhbnQgc291cmNlcy4gKi9cbiAgICBub0ZhbGxiYWNrcz86IGJvb2xlYW47XG4gICAgLyoqIFNlZSBHZXRDb25maWcucmV0cmllcy4gKi9cbiAgICByZXRyaWVzPzogbnVtYmVyO1xuICAgIC8qKiBTZWUgR2V0Q29uZmlnLnNvdXJjZVVybDogYW5zd2VyIGZyb20gRVhBQ1RMWSB0aGlzIHNvdXJjZS4gKi9cbiAgICBzb3VyY2VVcmw/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDaGFuZ2VzQWZ0ZXJDb25maWcgPSB7XG4gICAgdGltZTogbnVtYmVyO1xuICAgIC8qKiBPbmx5IGtleXMgcm91dGluZyBpbnRvIG9uZSBvZiB0aGVzZSBbc3RhcnQsIGVuZCkgcmFuZ2VzLiBPbmx5IHNjYW5uaW5nIHBhc3NlcyB0aGlzIC0gaXQgbGV0cyBhIHN0b3JlIHN5bmNpbmcgYSBwYXJ0aWFsIHNoYXJkIGFzayBmb3IganVzdCBpdHMgc2xpY2UuICovXG4gICAgcm91dGVzPzogW251bWJlciwgbnVtYmVyXVtdO1xuICAgIC8qKiBTZWUgRmluZENvbmZpZy5pbnRlcm5hbCAtIHRoZSBjaGFuZ2UgZmVlZCBpcyBhIGxpc3RpbmcgdG9vLCBhbmQgcmVkaXJlY3QgZW50cmllcyBmYWlsIGEgcGVlcidzIGludGVybmFsIHJlYWRzIHRoZSBzYW1lIHdheS4gRGVsZXRpb25zIGFyZSBhbHdheXMgcmVwb3J0ZWQgKHRoZXkgYXJlIGluZGV4LW9ubHksIHRoZXJlIGFyZSBubyBieXRlcyB0byBob2xkKS4gKi9cbiAgICBpbnRlcm5hbD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBTZXRDb25maWcgPSB7XG4gICAgLyoqIFRoZSB3cml0ZSB0aW1lIHRvIHN0YW1wIChzZWUgSUFyY2hpdmVzLnNldCkuIFJPVU5ERUQgdG8gd2hvbGUgbWlsbGlzZWNvbmRzIGJ5IGV2ZXJ5IGltcGxlbWVudGF0aW9uIC0gdGhlIGRpc2sgY2FuJ3Qgc3RvcmUgZnJhY3Rpb25hbCBtaWxsaXNlY29uZHMgYW55d2F5ICh1dGltZXMgcm91bmQtdHJpcHMgd2hvbGUgbXMpLCBzbyBhIGZyYWN0aW9uYWwgc3RhbXAgY291bGQgbmV2ZXIgYmUgcmVwcm9kdWNlZCBieSBwcm9wYWdhdGlvbiBhbmQgd291bGQgY29tcGFyZSBcIm5ld2VyXCIgdGhhbiBpdHMgb3duIGNvcGllcyBmb3JldmVyLiBSb3VuZGVkIHJhdGhlciB0aGFuIGZsb29yZWQgYmVjYXVzZSB1dGltZXMgZ29lcyB0aHJvdWdoIGEgc2Vjb25kcyBkb3VibGUgYW5kIGNhbiByZWFkIGJhY2sgYSBoYWlyIGJlbG93IHRoZSBzdGFtcGVkIG1pbGxpc2Vjb25kIChzZWUgQXJjaGl2ZXNEaXNrLmdldDIpLiAqL1xuICAgIGxhc3RNb2RpZmllZD86IG51bWJlcjtcbiAgICAvKiogTWFrZXMgdGhlIHdyaXRlIGFjY2VwdGFibGUgb24gaW1tdXRhYmxlIHRhcmdldHM6IGFuIGV4aXN0aW5nIHBhdGggaXMgc2ltcGx5IGtlcHQgKGltbXV0YWJpbGl0eSB3aW5zIC0gbm90aGluZyBpcyBvdmVyd3JpdHRlbikgaW5zdGVhZCBvZiB0aGUgd3JpdGUgdGhyb3dpbmcuIFJlcXVpcmVzIGxhc3RNb2RpZmllZC4gU3luY2hyb25pemF0aW9uIE1VU1QgcGFzcyB0aGlzIG9uIGV2ZXJ5IHB1c2ggLSBhIHBsYWluIHNldCB0aHJvd3Mgb24gaW1tdXRhYmxlIHRhcmdldHMsIHdoaWNoIHdvdWxkIGFib3J0IHJlY29uY2lsaWF0aW9uIHdoZW5ldmVyIG9uZSBzb3VyY2UgaW4gYSBjaGFpbiBpcyBpbW11dGFibGUuICovXG4gICAgZm9yY2VTZXRJbW11dGFibGU/OiBib29sZWFuO1xuICAgIC8qKiBTa2lwcyBSRURVTkRBTlQgdGFyZ2V0LXNpZGUgc2FmZXR5IHJlYWRzIGFyb3VuZCB0aGUgd3JpdGUgKGJhY2tibGF6ZTogdGhlIHBvc3QtdXBsb2FkIGV4aXN0ZW5jZSBwb2xsKS4gSXQgZG9lcyBOT1Qgc2tpcCBjaGVja3MgdGhhdCBhcmUgdGhlIHRhcmdldCdzIG9ubHkgb3JkZXJpbmcgZ3VhcmQ6IGJhY2tibGF6ZSdzIHByZS13cml0ZSBjb21wYXJpc29uIHN0YXlzLCBiZWNhdXNlIGIyIGhhcyBubyBzZXJ2ZXIgb2Ygb3VycyBlbmZvcmNpbmcgb25seS10YWtlLXRoZS1sYXRlc3QgLSB3aXRob3V0IGl0IGEgc3RhbGUgcHVzaCBsYW5kcyBvdmVyIGEgbmV3ZXIgdmFsdWUgb3IgdG9tYnN0b25lIGFuZCBiMidzIHNlbGYtc3RhbXBlZCB1cGxvYWQgdGltZSBsYXVuZGVycyBpdCBpbnRvIHRoZSBuZXdlc3QgY29weSBpbiB0aGUgc3lzdGVtIChnbG9iYWwgcmVzdXJyZWN0aW9uKS4gSG9zdGVkIHRhcmdldHMgcmUtY2hlY2sgc2VydmVyLXNpZGUsIHNvIHRoZWlyIGNsaWVudC1zaWRlIHNob3J0Y3V0cyBhcmUgc2FmZS4gKi9cbiAgICBub0NoZWNrcz86IGJvb2xlYW47XG4gICAgLyoqIFN0b3JlLXRvLXN0b3JlIHB1c2g6IHRoZSByZWNlaXZpbmcgbm9kZSB3cml0ZXMgcHVyZWx5IHRvIGl0cyBvd24gZGlzayBhbmQgaW5kZXgsIHdpdGggTk8gZG93bnN0cmVhbSBmYW4tb3V0ICh0aGUgcHVzaGluZyBzdG9yZSBvd25zIHByb3BhZ2F0aW9uIC0gZmFubmluZyBpdHMgcHVzaGVzIGJhY2sgb3V0IGlzIGhvdyB3cml0ZSBsb29wcyBiZXR3ZWVuIHN0b3JlcyBmb3JtKS4gV2luZG93IGFuZCByb3V0ZSBBUkUgc3RpbGwgY2hlY2tlZDogdGhlIHN0YW1wIG11c3QgZmFsbCBpbnNpZGUgb25lIG9mIHRoZSByZWNlaXZlcidzIGNvbmZpZ3VyZWQgd2luZG93cyBhbmQgcm91dGVzLCBzbyBhIGNvbmZ1c2VkIHBlZXIgY2Fubm90IHN0dWZmIGRhdGEgb250byBhIG5vZGUgdGhhdCB3YXMgbmV2ZXIgbWVhbnQgdG8gaG9sZCBpdC4gUmVxdWlyZXMgbGFzdE1vZGlmaWVkLiAqL1xuICAgIGludGVybmFsPzogYm9vbGVhbjtcbiAgICAvKiogV3JpdGVzIG5vcm1hbGx5IGdvIE9OTFkgdG8gdGhlIHdyaXRlIG5vZGUgKHRoZSBmaXJzdCBjdXJyZW50LXdpbmRvdyBzb3VyY2UgY292ZXJpbmcgdGhlIGtleSksIHJldHJ5aW5nIGl0IGV2ZW4gd2hpbGUgaXQgaXMgZG93biAtIGNvbnNpc3RlbnQsIGJ1dCB1bmF2YWlsYWJsZSB3aGVuIHRoYXQgbm9kZSBpcy4gV2l0aCBmYWxsYmFja3MsIHRoZSB3cml0ZSBub2RlIGlzIHN0aWxsIHRyaWVkIGZpcnN0LCBidXQgb24gZmFpbHVyZSB0aGUgd3JpdGUgbGFuZHMgb24gdGhlIG5leHQgY3VycmVudC13aW5kb3cgc291cmNlIGNvdmVyaW5nIHRoZSBrZXkgKHN5bmNocm9uaXphdGlvbiBtb3ZlcyBpdCB0byB0aGUgd3JpdGUgbm9kZSBsYXRlcikgLSBhdmFpbGFiaWxpdHkgYXQgdGhlIGNvc3Qgb2YgcmVhZHMgcG9zc2libHkgbWlzc2luZyB0aGUgd3JpdGUgdW50aWwgaXQgcHJvcGFnYXRlcy4gU2luZ2xlLXNvdXJjZSBhcmNoaXZlcyBpZ25vcmUgdGhlIGZsYWcuICovXG4gICAgZmFsbGJhY2tzPzogYm9vbGVhbjtcbiAgICAvKiogU2VlIEdldENvbmZpZy5yZXRyaWVzLiAqL1xuICAgIHJldHJpZXM/OiBudW1iZXI7XG4gICAgLyoqIFRoZSBzZXQgaXMgbm90IGEgd3JpdGUgYXQgYWxsOiBpdCBSRVNUT1JFUyBhIGZpbGUgbWFya2VkIGZvciBkZWxldGlvbiwgZmxpcHBpbmcgaXRzIGluZGV4IGVudHJ5IGJhY2sgdG8gbGl2ZSAod2l0aCBhIGZyZXNoIHdyaXRlIHRpbWUsIHNvIHRoZSByZXN0b3JlIG91dHJhbmtzIHRoZSBkZWxldGlvbiBldmVyeXdoZXJlIGl0IHByb3BhZ2F0ZWQpIC0gdGhlIGJ5dGVzIG5ldmVyIGxlZnQgdGhlIGRpc2ssIHNvIHJlYWRzIGp1c3Qgd29yayBhZ2Fpbi4gVGhlIGRhdGEgYnVmZmVyIGlzIGlnbm9yZWQgKGEgMS1ieXRlIHBsYWNlaG9sZGVyIHNhdGlzZmllcyB0aGUgZW1wdHktYnVmZmVyIHJ1bGUpOyB1c2UgSUFyY2hpdmVzLnVuZGVsZXRlIHJhdGhlciB0aGFuIHBhc3NpbmcgdGhpcyB5b3Vyc2VsZi4gVGhyb3dzIHdoZW4gdGhlIGtleSBoYXMgbm8gbWFya2VkIGRlbGV0aW9uIHRvIHJlc3RvcmUgKGl0cyBoaXN0b3J5IHdhcyBkcm9wcGVkLCBvciBpdCB3YXMgbmV2ZXIgZGVsZXRlZCkuICovXG4gICAgdW5kZWxldGU/OiBib29sZWFuO1xufTtcblxuLyoqIHNldExhcmdlRmlsZSdzIGNvbmZpZzogYSBTZXRDb25maWcgKGl0IElTIGEgc2V0IC0gdGhlIHNhbWUgaW1tdXRhYmlsaXR5LCBvcmRlcmluZywgaW50ZXJuYWwsIGFuZCBmYWxsYmFja3MgcnVsZXMgYXBwbHkpIHBsdXMgdGhlIHN0cmVhbSBjYXJyeWluZyB0aGUgYnl0ZXMuICovXG5leHBvcnQgdHlwZSBTZXRMYXJnZUZpbGVDb25maWcgPSBTZXRDb25maWcgJiB7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIGdldE5leHREYXRhKCk6IFByb21pc2U8QnVmZmVyIHwgdW5kZWZpbmVkPjtcbiAgICAvKiogUmV3aW5kcyB0aGUgc3RyZWFtIHRvIGl0cyBmaXJzdCBieXRlLiBXaXRob3V0IGl0IHRoZSB3cml0ZSBnZXRzIGV4YWN0bHkgT05FIGF0dGVtcHQ6IGEgcmV0cnkgKGEgZmFsbGJhY2sgc291cmNlLCBvciB0aGUgd3JpdGUgbm9kZSBjb21pbmcgYmFjaykgd291bGQgdXBsb2FkIHdoYXRldmVyIGlzIGxlZnQgb2YgYW4gYWxyZWFkeS1jb25zdW1lZCBzdHJlYW0gYXMgaWYgaXQgd2VyZSB0aGUgd2hvbGUgZmlsZS4gQ2FsbGVycyBob2xkaW5nIHRoZSBkYXRhIChhIGJ1ZmZlciwgb3IgYSBzb3VyY2UgdGhleSBjYW4gcmUtcmVhZCkgYWx3YXlzIHBhc3MgaXQgLSBhIGxhcmdlIHNldCB3aXRoIGZhbGxiYWNrcyBpcyBvbmx5IGFzIGF2YWlsYWJsZSBhcyB0aGlzLiAqL1xuICAgIHJlc3RhcnRTdHJlYW0/KCk6IFByb21pc2U8dm9pZD4gfCB2b2lkO1xufTtcblxuLy8gY3JlYXRlVGltZSBpcyBhIG1pc25vbWVyIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkg4oCUIGl0IGlzIHJlYWxseSB0aGUgTEFTVC1XUklURSB0aW1lLCBzYW1lIGFzIGdldEluZm8ncyB3cml0ZVRpbWUuIE5laXRoZXIgQmFja2JsYXplIG5vciBvdXIgcmVtb3RlIHN0b3JhZ2UgdHJhY2tzIGEgZGlzdGluY3QgY3JlYXRpb24gZGF0ZTogZWFjaCB3cml0ZSBzdGFtcHMgYSBmcmVzaCB0aW1lc3RhbXAgb24gdGhlIGN1cnJlbnQgdmVyc2lvbiwgc28gYm90aCBmaWVsZHMgYXJlIGp1c3QgXCJ3aGVuIHRoZSBieXRlcyBzZXJ2ZWQgYnkgZ2V0KCkgd2VyZSBtb3N0IHJlY2VudGx5IHdyaXR0ZW5cIi4gQWx3YXlzIFdIT0xFIG1pbGxpc2Vjb25kczogd3JpdGUgdGltZXMgYXJlIHJvdW5kZWQgYXQgZXZlcnkgcHJvZHVjZXIgKHNlZSBTZXRDb25maWcubGFzdE1vZGlmaWVkKS5cbmV4cG9ydCB0eXBlIEFyY2hpdmVGaWxlSW5mbyA9IHsgcGF0aDogc3RyaW5nOyBjcmVhdGVUaW1lOiBudW1iZXI7IHNpemU6IG51bWJlciB9O1xuXG4vLyBBbiBpbi1wcm9ncmVzcyBiYWNrZ3JvdW5kIHN5bmNocm9uaXphdGlvbiB0YXNrIChzZWUgQXJjaGl2ZXNDb25maWcuc3luY2luZylcbmV4cG9ydCB0eXBlIFN5bmNBY3Rpdml0eSA9IHtcbiAgICAvLyBBIG1ldGFkYXRhIHNjYW4gaXMgYSBzaW5nbGUgbGlzdGluZyBjYWxsLCBzbyBpdCBoYXMgbm8gaW5jcmVtZW50YWwgcHJvZ3Jlc3MgLSBqdXN0IHRoYXQgaXQncyBydW5uaW5nIGFuZCBzaW5jZSB3aGVuLiBBIGZ1bGwgc3luYyBrbm93cyBpdHMgZXhhY3QgZmlsZS9ieXRlIHByb2dyZXNzLlxuICAgIHR5cGU6IFwibWV0YWRhdGFTY2FuXCIgfCBcImZ1bGxTeW5jXCI7XG4gICAgc291cmNlRGVidWdOYW1lOiBzdHJpbmc7XG4gICAgc3RhcnRUaW1lOiBudW1iZXI7XG4gICAgZG9uZUZpbGVzPzogbnVtYmVyO1xuICAgIHRvdGFsRmlsZXM/OiBudW1iZXI7XG4gICAgZG9uZUJ5dGVzPzogbnVtYmVyO1xuICAgIHRvdGFsQnl0ZXM/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBBcmNoaXZlc0NvbmZpZyA9IHtcbiAgICAvLyBXaGV0aGVyIGdldENoYW5nZXNBZnRlcjIgaXMgbmF0aXZlbHkgaW5kZXgtYmFja2VkIChmYXN0IGNoYW5nZSBwb2xsaW5nOyBldmVyeSBiYWNrZW5kIHN0aWxsIHNlcnZlcyBpdCwgYnV0IHRoZSBvdGhlcnMgZW11bGF0ZSBpdCB3aXRoIGEgZnVsbCBsaXN0aW5nKVxuICAgIHN1cHBvcnRzQ2hhbmdlc0FmdGVyPzogYm9vbGVhbjtcbiAgICAvLyBUaGUgYnVja2V0J3MgZnVsbCByb3V0aW5nIGNvbmZpZyAoUk9VVElOR19GSUxFKS4gQWJzZW50IGZvciBzb3VyY2VzIHRoYXQgZG9uJ3QgaGF2ZSBvbmUgKGEgYmFyZSBkaXNrIHNvdXJjZSwgb3IgYSBidWNrZXQgdGhhdCBkb2Vzbid0IGV4aXN0IHlldCkuXG4gICAgcmVtb3RlQ29uZmlnPzogUmVtb3RlQ29uZmlnO1xuICAgIC8vIExpdmUgaW5kZXggdG90YWxzICh0b21ic3RvbmVzIGV4Y2x1ZGVkKSwga2VwdCB1cCB0byBkYXRlIGluIG1lbW9yeSBvbiBldmVyeSBtdXRhdGlvbiBhbmQgcmVjb21wdXRlZCBvbiBsb2FkIC0gc28gYW55IGRyaWZ0IGhlYWxzIG9uIHJlc3RhcnRcbiAgICBpbmRleD86IHsgZmlsZUNvdW50OiBudW1iZXI7IGJ5dGVDb3VudDogbnVtYmVyIH07XG4gICAgLyoqIEZpbGVzIE1BUktFRCBmb3IgZGVsZXRpb24gKGRlbGV0ZWQsIGJ5dGVzIHN0aWxsIGtlcHQgYXMgaGlzdG9yeSAtIHNlZSBTZXRDb25maWcudW5kZWxldGUpOiBob3cgbWFueSwgaG93IGJpZywgYW5kIHRoZSBkZWxldGUgdGltZSBvZiB0aGUgb2xkZXN0IG9uZSAtIHdoaWNoIGlzIGhvdyBmYXIgYmFjayB0aGUgZGVsZXRpb24gaGlzdG9yeSByZWFjaGVzLiAqL1xuICAgIG1hcmtlZEluZGV4PzogeyBmaWxlQ291bnQ6IG51bWJlcjsgYnl0ZUNvdW50OiBudW1iZXI7IG9sZGVzdERlbGV0ZVRpbWU/OiBudW1iZXIgfTtcbiAgICAvLyBUaGUgc2FtZSB0b3RhbHMgYnJva2VuIGRvd24gYnkgd2hpY2ggc291cmNlIGN1cnJlbnRseSBob2xkcyBlYWNoIGZpbGUncyBieXRlcyAodGhlIGZpcnN0IGVudHJ5IGlzIHRoZSBzZXJ2ZXIncyBvd24gZGlzaylcbiAgICBpbmRleFNvdXJjZXM/OiB7IGRlYnVnTmFtZTogc3RyaW5nOyBmaWxlQ291bnQ6IG51bWJlcjsgYnl0ZUNvdW50OiBudW1iZXIgfVtdO1xuICAgIC8vIFRoZSBzZXJ2ZXIncyBjb25maWd1cmVkIHJlYWRlckRpc2tMaW1pdCwgd2hlbiBpdCBydW5zIGFzIGEgYm91bmRlZCByZWFkIGNhY2hlXG4gICAgcmVhZGVyRGlza0xpbWl0PzogbnVtYmVyO1xuICAgIC8vIEJhY2tncm91bmQgc3luY2hyb25pemF0aW9uIGN1cnJlbnRseSBpbiBwcm9ncmVzcyAoZW1wdHkgd2hlbiBpZGxlKVxuICAgIHN5bmNpbmc/OiBTeW5jQWN0aXZpdHlbXTtcbn07XG5cbi8vIEEgc3luY2hyb25pemF0aW9uIHNvdXJjZSBvZiBhIEJsb2JTdG9yZSAod2hpY2ggc3luY2hyb25pemVzIGFuIGluZGV4ICsgbG9jYWwgY2FjaGUgZnJvbSB0aGVtKVxuZXhwb3J0IHR5cGUgQXJjaGl2ZXNTb3VyY2UgPSB7XG4gICAgc291cmNlOiBJQXJjaGl2ZXM7XG4gICAgLyoqIFRoZSBwZXJzaXN0ZW50IGlkZW50aXR5IG9mIHRoZSBlbmRwb2ludDogaXRzIHJvdXRpbmcgVVJMIChob3N0ZWQvYmFja2JsYXplKSwgb3IgdGhlIGRpc2sgZm9sZGVyIHBhdGggZm9yIHRoZSBiYXNlIGRpc2sgc291cmNlLiBUaGUgc3RvcmUgcGVyc2lzdHMgdGhpcyAodmlhIGl0cyBhcHBlbmQtb25seSBzb3VyY2VzIGxpc3QpIGFzIEluZGV4RW50cnkuc291cmNlc0xpc3RJbmRleCwgc28gaXQgbXVzdCBtZWFuIHRoZSBzYW1lIGVuZHBvaW50IGZvcmV2ZXIuICovXG4gICAgdXJsOiBzdHJpbmc7XG4gICAgLy8gRnJvbSB0aGUgc291cmNlJ3MgQ29tbW9uQ29uZmlnLCBidXQgQUxMIG9mIHRoZW06IHRoZSBzYW1lIGVuZHBvaW50IChzYW1lIHVybCtyb3V0ZSwgaWdub3JpbmcgdGhlIHdpbmRvdykgY2FuIGFwcGVhciBpbiB0aGUgcm91dGluZyBjb25maWcgdW5kZXIgc2V2ZXJhbCB3aW5kb3dzIGF0IG9uY2UgLSBtb3N0IGNvbW1vbmx5IHdoZW4gYSBkZXBsb3kgc3dpdGNob3ZlciBoYXMgc3BsaXQgb25lIHdpbmRvdyBpbiB0d28gYXJvdW5kIGFuIGludGVybWVkaWF0ZS4gSXQgaXMgT05FIHNvdXJjZSB0aGF0IGtub3dzIGFsbCBpdHMgd2luZG93cywgbmV2ZXIgc2V2ZXJhbCBzb3VyY2VzLiBUaGUgd2luZG93IHJvdXRlcyBXUklURVM6IHRoZSBzb3VyY2UgcmVjZWl2ZXMgd3JpdGVzIHdoaWxlIEFOWSBvZiBpdHMgd2luZG93cyBpcyBzdGlsbCBvcGVuIChzZWUgd2luZG93c0FjY2VwdFdyaXRlcykuIFdpbmRvd3MgZG8gTk9UIGZpbHRlciBzY2FubmluZzogYSBzY2FuIGlzIHVzIGFza2luZyB0aGUgc291cmNlIHdoYXQgaXQgYWxyZWFkeSBob2xkcywgYW5kIGV4aXN0aW5nIHZhbHVlcyBzeW5jaHJvbml6ZSByZWdhcmRsZXNzIG9mIHRoZWlyIHdyaXRlIHRpbWVzICh0aGUgc2FtZSByZWFzb25pbmcgdGhhdCBsZXRzIHN5bmNocm9uaXphdGlvbiBpZ25vcmUgdGhlIGltbXV0YWJsZSBmbGFnKS5cbiAgICB2YWxpZFdpbmRvd3M6IFtudW1iZXIsIG51bWJlcl1bXTtcbiAgICAvLyBGcm9tIHRoZSBzb3VyY2UncyBDb21tb25Db25maWcgKGludGVyc2VjdGVkIHdpdGggdGhlIG93bmluZyBzdG9yZSdzIG93biByb3V0ZSk6IG9ubHkga2V5cyByb3V0aW5nIGludG8gW3N0YXJ0LCBlbmQpIGFyZSBhY2NlcHRlZCBmcm9tIHRoaXMgc291cmNlJ3Mgc2NhbnMgYW5kIHNlbnQgdG8gaXQgaW4gd3JpdGVzL3JlY29uY2lsaWF0aW9uLiBUaGUgcm91dGluZyBmaWxlIGlzIGV4ZW1wdCAtIGNvbmZpZyBmbG93cyBldmVyeXdoZXJlLiBBYnNlbnQgPSBhbGwga2V5cy5cbiAgICByb3V0ZT86IFtudW1iZXIsIG51bWJlcl07XG4gICAgLy8gRnJvbSB0aGUgc291cmNlJ3MgQ29tbW9uQ29uZmlnOyBzZWUgdGhlcmUuXG4gICAgbm9GdWxsU3luYz86IGJvb2xlYW47XG4gICAgLy8gRnJvbSB0aGUgc291cmNlJ3MgQ29tbW9uQ29uZmlnOiBhIGRlcGxveSBzd2l0Y2hvdmVyJ3MgdGVtcG9yYXJ5IGFsdGVybmF0ZS1wb3J0IGVudHJ5ICh0aGUgdmFsdWUgaXMgdGhlIHVybCBvZiB0aGUgc291cmNlIGl0IHdhcyBzcGxpdCBvdXQgb2YpLiBPbmNlIGl0cyB3aW5kb3cgaXMgcGFzdCwgdGhlIHBvcnQgaXQgcG9pbnRzIGF0IGlzIGdvbmUgZm9yIGdvb2QgLSBzbyBpdCBpcyBuZXZlciBzY2FubmVkIHRoZW4sIGFuZCBzY2FuIGZhaWx1cmVzIGFyZSBuZXZlciByZXRyaWVkLlxuICAgIGludGVybWVkaWF0ZT86IHN0cmluZztcbiAgICAvLyBUaGUgcm91dGluZy1jb25maWcgZW50cnkgdGhpcyBzb3VyY2Ugd2FzIGJ1aWx0IGZyb20gKGFic2VudCBmb3IgdGhlIGJhc2UgZGlzayBzb3VyY2UpLiBJdHMgYHR5cGVgIGRlY2lkZXMgZmFzdC13cml0ZSBmbHVzaCB0aW1pbmc6IHR5cGUtXCJyZW1vdGVcIiBkb3duc3RyZWFtIHNvdXJjZXMgKG91ciBvd24gc3RvcmFnZSBzZXJ2ZXJzKSBmbHVzaCBxdWlja2x5IChjaGVhcCwgYW5kIHdlIHdhbnQgY3Jvc3Mtbm9kZSByZWR1bmRhbmN5IGZhc3QpLCB3aGlsZSBvdGhlcnMgKGUuZy4gYmFja2JsYXplKSBrZWVwIHRoZSBmdWxsIHdyaXRlRGVsYXkgc28gZXhwZW5zaXZlIGV4dGVybmFsIHdyaXRlcyBzdGF5IGNvYWxlc2NlZC4gVGhlIHdpbmRvdy9yb3V0ZSBPTiB0aGlzIGNvbmZpZyBhcmUgdGhlIFNPVVJDRSdzIG93bjsgQXJjaGl2ZXNTb3VyY2UudmFsaWRXaW5kb3cvcm91dGUgYXJlIHdoYXQgdGhlIG93bmluZyBzdG9yZSBhY3R1YWxseSB1c2VzIChyb3V0ZSBpcyBpbnRlcnNlY3RlZCB3aXRoIHRoZSBzdG9yZSdzIHJvdXRlKS5cbiAgICBzb3VyY2VDb25maWc/OiBTb3VyY2VDb25maWc7XG4gICAgLy8gU3RhYmxlIGlkZW50aXR5IG9mIHRoZSB1bmRlcmx5aW5nIGVuZHBvaW50IChpdHMgY29uZmlnIHdpdGggd2luZG93cy9yb3V0ZXMgc3RyaXBwZWQpIC0gaG93IEJsb2JTdG9yZS51cGRhdGVTb3VyY2VzIHJlY29nbml6ZXMgYSBzb3VyY2UgYWNyb3NzIGNvbmZpZyBjaGFuZ2VzIHNvIGl0IGNhbiB1cGRhdGUgaXQgaW4gcGxhY2UgaW5zdGVhZCBvZiByZW1vdmluZyBhbmQgcmUtYWRkaW5nIGl0XG4gICAgaWRlbnRpdHk/OiBzdHJpbmc7XG59O1xuXG4vLyBFcnJvciBtYXJrZXIgYSBzZXJ2ZXIgaW5jbHVkZXMgd2hlbiBhIGZyZXNobHktc3RhbXBlZCB3cml0ZSByZWFjaGVzIGl0IG91dHNpZGUgaXRzIHZhbGlkIHdpbmRvd3MgKHRoZSBjbGllbnQgcmVzb2x2ZWQgaXRzIHRhcmdldCwgdGhlbiB0aW1lIGNyb3NzZWQgYSB3aW5kb3cgYm91bmRhcnkgYmVmb3JlIHRoZSB3cml0ZSBsYW5kZWQpLiBDbGllbnRzIGRldGVjdCB0aGlzIG1hcmtlciBhbmQgcmUtcmVzb2x2ZSB0aGUgY3VycmVudGx5LXZhbGlkIHNvdXJjZSwgcmV0cnlpbmcgT05DRSAtIGJvdW5kYXJpZXMgYXJlIGZhciBhcGFydCwgc28gaGl0dGluZyBpdCB0d2ljZSBpbiBvbmUgYXR0ZW1wdCBtZWFucyBzb21ldGhpbmcgaXMgYWN0dWFsbHkgd3JvbmcuXG5leHBvcnQgY29uc3QgU1RPUkFHRV9XUk9OR19WQUxJRF9XSU5ET1cgPSBcIlJFTU9URV9TVE9SQUdFX1dST05HX1ZBTElEX1dJTkRPV19hN2MxZjA0ZVwiO1xuXG4vLyBFcnJvciBtYXJrZXIgYSBzZXJ2ZXIgaW5jbHVkZXMgd2hlbiBhIGZyZXNobHktc3RhbXBlZCB3cml0ZSdzIGtleSByb3V0ZXMgb3V0c2lkZSB0aGUgc2hhcmRzIHRoaXMgc2VydmVyIGhhbmRsZXMgKHRoZSBjbGllbnQncyBjb25maWcgZGlzYWdyZWVzIHdpdGggdGhlIHNlcnZlcidzIC0gY2xpZW50cyByZS1yZXNvbHZlIG9uY2UpXG5leHBvcnQgY29uc3QgU1RPUkFHRV9XUk9OR19ST1VURSA9IFwiUkVNT1RFX1NUT1JBR0VfV1JPTkdfUk9VVEVfYzk0ZDJlMTdcIjtcblxuLy8gRXJyb3IgbWFya2VyIGEgc2VydmVyIGluY2x1ZGVzIHdoZW4gYSB3cml0ZSByZWFjaGVzIGEgc3RvcmUgd2hvc2Ugb3duIHJvdXRpbmcgY29uZmlnIGhhcyBOTyBlbnRyeSBmb3IgaXQgb24gdGhhdCBzZXJ2ZXIgKG9yIHRoYXQgaGFzIG5vIHJvdXRpbmcgY29uZmlnIGF0IGFsbCkgLSBhY2NlcHRpbmcgdGhlIHdyaXRlIHdvdWxkIHN0b3JlIGRhdGEgbm90aGluZyBzY2FucyBvciByZWNvbmNpbGVzLiBDbGllbnRzIHJlLXJlc29sdmUgb25jZSwgZXhhY3RseSBsaWtlIHRoZSBtYXJrZXJzIGFib3ZlOiB0aGUgdXN1YWwgY2F1c2UgaXMgdGhlIGNsaWVudCBydW5uaW5nIGEgZGlmZmVyZW50IGNvbmZpZyB0aGFuIHRoZSBzdG9yZS5cbmV4cG9ydCBjb25zdCBTVE9SQUdFX05PVF9DT05GSUdVUkVEID0gXCJSRU1PVEVfU1RPUkFHRV9OT1RfQ09ORklHVVJFRF9lNTFiN2Q5MlwiO1xuXG5leHBvcnQgY29uc3QgRlVMTF9ST1VURTogW251bWJlciwgbnVtYmVyXSA9IFswLCAxXTtcblxuLy8gQSBrZXkgY29udGFpbmluZyB0aGlzIHNlbnRpbmVsIGRvZXNuJ3QgaGF2ZSBhIGZpeGVkIHNoYXJkOiBzZXRWYXJpYWJsZVNoYXJkIHBpY2tzIHRoZSAobG93ZXN0IGxhdGVuY3ksIHVwKSB3cml0ZSBzaGFyZCwgYXBwZW5kcyBcIl88dmFsdWUgaW4gdGhlIHNoYXJkJ3Mgcm91dGU+XCIgZGlyZWN0bHkgYWZ0ZXIgdGhlIHNlbnRpbmVsLCBhbmQgcmV0dXJucyB0aGUgbWF0ZXJpYWxpemVkIGtleS4gZ2V0Um91dGUgdHJlYXRzIHRoYXQgc3VmZml4IGFzIGEgY29tcGxldGUgcm91dGUgb3ZlcnJpZGUuXG5leHBvcnQgY29uc3QgVkFSSUFCTEVfU0hBUkQgPSBcIlZBUklBQkxFX1NIQVJEX2YwMjM0amZhaDA4Zmd5aGZneXNzZGRzODNubXBcIjtcbi8vIE5vIGdyYWNlIHBhc3QgdGhlIGVuZDogYSB3aW5kb3cgYm91bmRhcnkgaXMgYSBoYXJkIGhhbmRvZmYgKGNsaWVudHMgcmV0cnkgYSByZWplY3RlZCB3cml0ZSBhZ2FpbnN0IHRoZSBuZXdseS12YWxpZCBzb3VyY2UsIHNvIGxlbmllbmN5IGhlcmUgd291bGQgb25seSBkZXN5bmNocm9uaXplIHRoZSBoYW5kb2ZmKVxuLy8gIC0gV3JpdGluZyB0byBvbGRlciB2YWxpZCBzdGF0ZSB3aW5kb3dzIGlzIGZpbmUsIHRob3VnaC4gV2UgbmVlZCB0aGlzIHRvIGluZ2VzdCB0aGUgb2xkIGRhdGEgd2hlbiB3ZSdyZSBzeW5jaHJvbml6aW5nIG5vZGVzIHRvIGdldCB0aGVtIHVwIHRvIGRhdGUgYW55d2F5LiBcbmV4cG9ydCBmdW5jdGlvbiB3aW5kb3dBY2NlcHRzV3JpdGVzKHZhbGlkV2luZG93OiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKCF2YWxpZFdpbmRvdykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHZhbGlkV2luZG93WzFdID4gRGF0ZS5ub3coKTtcbn1cbi8vIEEgc291cmNlICh3aGljaCBjYW4gaG9sZCBzZXZlcmFsIHdpbmRvd3MpIGFjY2VwdHMgd3JpdGVzIHdoaWxlIEFOWSBvZiBpdHMgd2luZG93cyBpcyBzdGlsbCBvcGVuLiBObyB3aW5kb3dzID0gdGhlIGJhc2UgZGlzayBvZiBhbiBpbmVydCBzdG9yZSAobm90IGluIHRoZSBjb25maWcpLCB3aGljaCBuZXZlciByZWNlaXZlcyBmYW4tb3V0IHdyaXRlcyBhbnl3YXkuXG5leHBvcnQgZnVuY3Rpb24gd2luZG93c0FjY2VwdFdyaXRlcyh2YWxpZFdpbmRvd3M6IFtudW1iZXIsIG51bWJlcl1bXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWxpZFdpbmRvd3Muc29tZSh3aW5kb3dBY2NlcHRzV3JpdGVzKTtcbn1cblxuLy8gQWJvdmUgdGhpcywgc2V0IHRyYW5zcGFyZW50bHkgc3RyZWFtcyB0aHJvdWdoIHNldExhcmdlRmlsZTogb25lIGdpYW50IHdpcmUgbWVzc2FnZSB3b3VsZCBleGNlZWQgdGhlIHRyYW5zcG9ydCBsaW1pdCBhbmQgbGFnIGV2ZXJ5IG90aGVyIGNsaWVudCBzaGFyaW5nIHRoZSBjb25uZWN0aW9uXG5leHBvcnQgY29uc3QgTEFSR0VfU0VUX1RIUkVTSE9MRCA9IDggKiAxMDI0ICogMTAyNDtcblxuLyoqIFRoZSBzZXRMYXJnZUZpbGUgc3RyZWFtIG92ZXIgYW4gaW4tbWVtb3J5IGJ1ZmZlciwgaW4gTEFSR0VfU0VUX1RIUkVTSE9MRCBzbGljZXMgLSBob3cgc2V0IHRyYW5zcGFyZW50bHkgYmVjb21lcyBzZXRMYXJnZUZpbGUgZm9yIGxhcmdlIGJ1ZmZlcnMuIFNwcmVhZCBpbnRvIHRoZSBjb25maWc6IGl0IHByb3ZpZGVzIGJvdGggZ2V0TmV4dERhdGEgYW5kIHJlc3RhcnRTdHJlYW0gKHRoZSBidWZmZXIgaXMgc3RpbGwgaGVsZCwgc28gYSByZXRyeSBjb3N0cyBub3RoaW5nKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJDaHVua1N0cmVhbShkYXRhOiBCdWZmZXIpOiB7IGdldE5leHREYXRhKCk6IFByb21pc2U8QnVmZmVyIHwgdW5kZWZpbmVkPjsgcmVzdGFydFN0cmVhbSgpOiB2b2lkIH0ge1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIHJldHVybiB7XG4gICAgICAgIGdldE5leHREYXRhOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAob2Zmc2V0ID49IGRhdGEubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbGV0IGNodW5rID0gZGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIExBUkdFX1NFVF9USFJFU0hPTEQpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IGNodW5rLmxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybiBjaHVuaztcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdGFydFN0cmVhbTogKCkgPT4ge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG4vLyBSZS1leHBvcnRlZCBmb3IgdGhlIGV4aXN0aW5nIGltcG9ydGVycyAtIHRoZSBpbXBsZW1lbnRhdGlvbnMgKGFuZCBtb3ZlQXJjaGl2ZUZpbGUpIGxpdmUgaW4gYXJjaGl2ZUhlbHBlcnMudHMsIGJlc2lkZSB0aGlzIGludGVyZmFjZSByYXRoZXIgdGhhbiBpbiBpdFxuZXhwb3J0IHsgY29weUFyY2hpdmVGaWxlIH0gZnJvbSBcIi4vYXJjaGl2ZUhlbHBlcnNcIjtcblxuLyoqIG1vdmUncyBjb25maWcuIFRoZXJlIGlzIGRlbGliZXJhdGVseSBubyBsYXN0TW9kaWZpZWQ6IHRoZSBkZXN0aW5hdGlvbiBpcyBBTFdBWVMgc3RhbXBlZCBmcmVzaCAoc2VlIElBcmNoaXZlcy5tb3ZlKSAtIGEgbW92ZSBpcyBhIG5ldyB3cml0ZSBhdCB0aGUgbmV3IHBhdGgsIGFuZCBhIHByZXNlcnZlZCBvbGQgc3RhbXAgaXMgaG93IGEgbW92ZWQgZmlsZSBsb3NlcyB0byBhIHN0YWxlIHRvbWJzdG9uZSB0aGVyZSBhbmQgdmFuaXNoZXMuICovXG5leHBvcnQgdHlwZSBNb3ZlRmlsZUNvbmZpZyA9IHtcbiAgICBmcm9tUGF0aDogc3RyaW5nO1xuICAgIHRvUGF0aDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQXJjaGl2ZXNTeW5jU291cmNlU3RhdHVzID0ge1xuICAgIGRlYnVnTmFtZTogc3RyaW5nO1xuICAgIHZhbGlkV2luZG93czogW251bWJlciwgbnVtYmVyXVtdO1xuICAgIHJvdXRlPzogW251bWJlciwgbnVtYmVyXTtcbiAgICBub0Z1bGxTeW5jPzogYm9vbGVhbjtcbiAgICBzdXBwb3J0c0NoYW5nZXNBZnRlcjogYm9vbGVhbjtcbiAgICBpbml0aWFsU2NhbkNvbXBsZXRlOiBib29sZWFuO1xuICAgIC8vIEZpbGVzIHNlZW4gaW4gdGhpcyBzb3VyY2UncyBzY2FucyAvIGNoYW5nZSBwb2xscyBzbyBmYXJcbiAgICBzY2FubmVkQ291bnQ6IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBBcmNoaXZlc1N5bmNTdGF0dXMgPSB7XG4gICAgYWxsU2NhbnNDb21wbGV0ZTogYm9vbGVhbjtcbiAgICAvLyBOdW1iZXIgb2YgZmlsZXMgaW4gdGhlIGluZGV4XG4gICAgaW5kZXhTaXplOiBudW1iZXI7XG4gICAgc291cmNlczogQXJjaGl2ZXNTeW5jU291cmNlU3RhdHVzW107XG59O1xuXG4vLyBOT1RFOiBXZSBkb24ndCBwcmVzZW50bHkgaGF2ZSBhbiBhcHBlbmQgZnVuY3Rpb24gaGVyZSBiZWNhdXNlIGEgc3VycHJpc2luZyBudW1iZXIgb2Ygc3RvcmFnZSBzeXN0ZW1zIGRvbid0IHN1cHBvcnQgaXQgKGJhY2tibGF6ZSwgZmlsZSBzeXN0ZW0gYXBpKS4gSXQgd291bGQgYWxzbyBjb21wbGljYXRlIHRoaW5ncyBhcyBub3cgdGhlcmUgbmVlZHMgdG8gYmUgcmVhbGx5IGEgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBvZiBhIGZpbGUsIGFuZCBpZiB5b3UgYXBwZW5kIHRvIHRoZSB3cm9uZyBzaW5nbGUgc291cmNlIG9mIHRydXRoLCB0aGluZ3MganVzdCBiZWNvbWUgdmVyeSBjb21wbGljYXRlZC4gXG5leHBvcnQgaW50ZXJmYWNlIElBcmNoaXZlcyB7XG4gICAgZ2V0RGVidWdOYW1lKCk6IHN0cmluZztcbiAgICAvKiogV2hldGhlciB3cml0ZXMgd291bGQgYmUgYWNjZXB0ZWQgKGNyZWRlbnRpYWxzIGV4aXN0LCB0aGUgYWNjb3VudCB0cnVzdHMgdGhpcyBtYWNoaW5lLCBldGMpLiBDaGVja2VkIHdpdGhvdXQgd3JpdGluZyBhbnl0aGluZy4gKi9cbiAgICBoYXNXcml0ZUFjY2VzcygpOiBQcm9taXNlPGJvb2xlYW4+O1xuICAgIC8qKlxuICAgICAqIFJlYWRzIGF1dG9tYXRpY2FsbHkgZmFsbCBiYWNrIGFjcm9zcyB0aGUgcmVkdW5kYW50IHNvdXJjZXMgdW5sZXNzIGNvbmZpZy5ub0ZhbGxiYWNrcyBpcyBzZXQuXG4gICAgICogQSBmYWxsYmFjayBjb3B5IGNhbiBsYWcgdGhlIHdyaXRlIHRhcmdldCwgc28gYSBjYWxsZXIgcmVhZGluZyBzdGF0ZSBpbiBvcmRlciB0byBtdXRhdGUgaXRcbiAgICAgKiAoZS5nLiB4KyspLCB3aGVyZSBhY3Rpbmcgb24gcHJldmlvdXMgc3RhdGUgd291bGQgY2F1c2UgYmlnIGlzc3Vlcywgc2hvdWxkIHBhc3Mgbm9GYWxsYmFja3MgLVxuICAgICAqIGFuZCB0cnkvY2F0Y2ggdGhlIHJlYWQsIGhhbmRsaW5nIHRoZSBjYXRjaCBjYXNlIChhIGRvd24gcHJpbWFyeSBpcyByZXRyaWVkIGZvciBhIHdoaWxlLCB0aGVuXG4gICAgICogdGhyb3dzIGluc3RlYWQgb2YgZGVncmFkaW5nIHRvIGEgc3RhbGUgY29weSkuXG4gICAgICovXG4gICAgZ2V0KGZpbGVOYW1lOiBzdHJpbmcsIGNvbmZpZz86IEdldENvbmZpZyk6IFByb21pc2U8QnVmZmVyIHwgdW5kZWZpbmVkPjtcbiAgICAvKiogU2VlIGdldCBmb3IgdGhlIGZhbGxiYWNrIHNlbWFudGljcyAoYW5kIHdoZW4gdG8gcGFzcyBub0ZhbGxiYWNrcykuIHVybCBpcyB0aGUgY29uZmlnIFVSTCBvZiB0aGUgc291cmNlIHRoYXQgYW5zd2VyZWQgLSB0aGUgYXV0aG9yaXR5IHRoZSBkYXRhIChvciB0aGUgXCJkb2VzIG5vdCBleGlzdFwiKSBjYW1lIGZyb20uIE11bHRpLXNvdXJjZSBpbXBsZW1lbnRhdGlvbnMgKEFyY2hpdmVzQ2hhaW4pIEFMV0FZUyByZXR1cm4gYW4gb2JqZWN0OiB3aGVuIHRoZSB2YWx1ZSBkb2Vzbid0IGV4aXN0IHRoZXJlIGlzIHN0aWxsIGEgc2VydmVyIHNheWluZyBpdCBkb2Vzbid0IGV4aXN0LCBzbyB0aGV5IHJldHVybiB7IHVybCB9IGFsb25lIHJhdGhlciB0aGFuIHVuZGVmaW5lZC4gU2luZ2xlLXNvdXJjZSBiYWNrZW5kcyByZXR1cm4gdW5kZWZpbmVkIGZvciBhYnNlbnQgKHRoZXkgQVJFIHRoZSBhdXRob3JpdHkpLiAqL1xuICAgIGdldDIoZmlsZU5hbWU6IHN0cmluZywgY29uZmlnPzogR2V0Q29uZmlnKTogUHJvbWlzZTx7IGRhdGE6IEJ1ZmZlcjsgd3JpdGVUaW1lOiBudW1iZXI7IHNpemU6IG51bWJlcjsgdXJsPzogc3RyaW5nIH0gfCB7IGRhdGE/OiB1bmRlZmluZWQ7IHdyaXRlVGltZT86IHVuZGVmaW5lZDsgc2l6ZT86IHVuZGVmaW5lZDsgdXJsOiBzdHJpbmcgfSB8IHVuZGVmaW5lZD47XG4gICAgLyoqXG4gICAgICogbGFzdE1vZGlmaWVkIHN0YW1wcyB0aGUgd3JpdGUgd2l0aCB0aGF0IGxhc3Qtd3JpdGUgdGltZSBpbnN0ZWFkIG9mIG5vdy4gSWYgaXQgaXMgT0xERVIgdGhhblxuICAgICAqIHRoZSBmaWxlJ3MgY3VycmVudCBsYXN0LXdyaXRlIHRpbWUgdGhlIHdyaXRlIG5vLW9wcyAoc28gZGVsYXllZCAvIHN5bmNocm9uaXplZCB3cml0ZXMgY2FuXG4gICAgICogbmV2ZXIgY2xvYmJlciBuZXdlciBkYXRhKS4gVGltZXMgbW9yZSB0aGFuIDE1IG1pbnV0ZXMgaW4gdGhlIGZ1dHVyZSBhcmUgcmVqZWN0ZWQuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBmdWxsIGtleSBhY3R1YWxseSB3cml0dGVuIC0gaWRlbnRpY2FsIHRvIGZpbGVOYW1lLCBFWENFUFQgZm9yIGtleXMgY29udGFpbmluZ1xuICAgICAqIFZBUklBQkxFX1NIQVJELCB3aGVyZSB0aGUgc2hhcmQgdmFsdWUgaXMgbWF0ZXJpYWxpemVkIGludG8gdGhlIGtleSAocGlja2VkIGJ5IHNoYXJkIGxhdGVuY3ksXG4gICAgICogc2VlIEFyY2hpdmVzQ2hhaW4pIGFuZCB0aGUgY2FsbGVyIG5lZWRzIHRoZSByZXR1cm5lZCBrZXkgdG8gZXZlciByZWFkIHRoZSB2YWx1ZSBiYWNrLlxuICAgICAqL1xuICAgIC8qKlxuICAgICAqIFRIUk9XUyBvbiBhbiBlbXB0eSBidWZmZXI6IGFuIGVtcHR5IGZpbGUgSVMgYSBkZWxldGlvbiBpbiB0aGlzIHN5c3RlbSAodGhlIHRvbWJzdG9uZSksIHNvIGFcbiAgICAgKiBzZXQtZW1wdHkgd291bGQgcmVhZCBiYWNrIGFzIFwidGhlIGZpbGUgaXMgZ29uZVwiIC0gd2hpY2ggaXMganVzdCBhc2tpbmcgZm9yIHByb2JsZW1zLiBJZiB5b3VcbiAgICAgKiB3YW50IHRoZSBmaWxlIGRlbGV0ZWQsIGNhbGwgZGVsOyBkZWxldGlvbnMgdGFrZSB0aGVpciBvd24gcGF0aC5cbiAgICAgKi9cbiAgICBzZXQoZmlsZU5hbWU6IHN0cmluZywgZGF0YTogQnVmZmVyLCBjb25maWc/OiBTZXRDb25maWcpOiBQcm9taXNlPHN0cmluZz47XG4gICAgZGVsKGZpbGVOYW1lOiBzdHJpbmcsIGNvbmZpZz86IERlbENvbmZpZyk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIE1vdmVzIGEgZmlsZSB0byBhIG5ldyBwYXRoIHdpdGhpbiBUSElTIGFyY2hpdmVzLCBiYWNrZW5kLXNpZGUgd2hlcmUgdGhlIGJhY2tlbmQgY2FuIChiYWNrYmxhemUgY29waWVzIHNlcnZlci1zaWRlLCBkaXNrIHJlbmFtZXMsIHRoZSBzdG9yYWdlIHNlcnZlciByZWxvY2F0ZXMgbm9kZS1zaWRlKSAtIHRoZSBieXRlcyBuZXZlciB0cmF2ZWwgdGhyb3VnaCB0aGUgY2FsbGVyLiBUaGUgZGVzdGluYXRpb24gaXMgc3RhbXBlZCB3aXRoIGEgRlJFU0ggd3JpdGUgdGltZSwgZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGlvbiAoYSByZW5hbWUpIHdvdWxkIHByZXNlcnZlIHRoZSBvbGQgb25lLCBzbyB0aGUgbW92ZWQgZmlsZSBjYW5ub3QgaW1tZWRpYXRlbHkgbG9zZSB0byBzb21ldGhpbmcgbmV3ZXIgc2l0dGluZyBhdCBpdHMgbmV3IHBhdGggKGUuZy4gdGhlIHRvbWJzdG9uZSBvZiBhbiBlYXJsaWVyIGRlbGV0aW9uIHRoZXJlKTsgdGhlIHNvdXJjZSBpcyB0aGVuIGRlbGV0ZWQsIGV4YWN0bHkgbGlrZSBkZWwuIFRIUk9XUyB3aGVuIHRoZSBzb3VyY2UgZmlsZSBkb2VzIG5vdCBleGlzdC4gT3B0aW9uYWwgLSBjYWxsZXJzIGdvIHRocm91Z2ggbW92ZUFyY2hpdmVGaWxlIChhcmNoaXZlSGVscGVycy50cyksIHdoaWNoIGZhbGxzIGJhY2sgdG8gY29weSArIGNvbmZpcm0gKyBkZWxldGUuICovXG4gICAgbW92ZT8oY29uZmlnOiBNb3ZlRmlsZUNvbmZpZyk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIFJlc3RvcmVzIGEgZGVsZXRlZCBmaWxlIHdob3NlIGJ5dGVzIGFyZSBzdGlsbCBpbiB0aGUgZGVsZXRpb24gaGlzdG9yeSAoc2VlIFNldENvbmZpZy51bmRlbGV0ZSwgd2hpY2ggdGhpcyByaWRlcyBvbikuIE9ubHkgaW5kZXgtYmFja2VkIHN0b3JlcyBrZWVwIGEgZGVsZXRpb24gaGlzdG9yeSwgc28gb25seSB0aGV5IHN1cHBvcnQgdGhpcy4gVEhST1dTIHdoZW4gdGhlcmUgaXMgbm90aGluZyB0byByZXN0b3JlLiAqL1xuICAgIHVuZGVsZXRlPyhmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogU3RyZWFtcyBhIGZpbGUgdG9vIGxhcmdlIHRvIGhvbGQgaW4gbWVtb3J5LiBnZXROZXh0RGF0YSByZXR1cm5zIHVuZGVmaW5lZCB3aGVuIGRvbmUuIFRoaXMgb25seSBuZWVkcyB0byBiZSBjYWxsZWQgd2hlbiB5b3UgQ0FOTk9UIG1hdGVyaWFsaXplIHRoZSBlbnRpcmUgZmlsZSBpbiBtZW1vcnkgLSBpZiB5b3UgY2FuLCBqdXN0IGNhbGwgc2V0OiBhYm92ZSBMQVJHRV9TRVRfVEhSRVNIT0xEIGl0IHN0cmVhbXMgdGhyb3VnaCBzZXRMYXJnZUZpbGUgaW50ZXJuYWxseSwga2VlcGluZyB0aGUgY2xpZW50IHJlc3BvbnNpdmUgYW5kIG5vdCBvdmVyd2hlbG1pbmcgdGhlIHNlcnZlci4gVGhlIHJlc3Qgb2YgdGhlIGNvbmZpZyBpcyBhIHBsYWluIFNldENvbmZpZyBhbmQgbWVhbnMgZXhhY3RseSB3aGF0IGl0IG1lYW5zIG9uIHNldCAodGhhdCBpcyB3aGF0IG1ha2VzIGEgbGFyZ2Ugc2V0IGJlaGF2ZSBsaWtlIGEgc21hbGwgb25lIGluc3RlYWQgb2YgcXVpZXRseSBsb3NpbmcgaW1tdXRhYmlsaXR5LCBvcmRlcmluZywgaW50ZXJuYWwsIG9yIGZhbGxiYWNrcyBzZW1hbnRpY3MgYXMgdGhlIGZpbGUgY3Jvc3NlcyB0aGUgdGhyZXNob2xkKTsgYmFja2VuZHMgdGhhdCBzdGFtcCB0aGVpciBvd24gdGltZXMgKGJhY2tibGF6ZSkgYWNjZXB0IGFuZCBpZ25vcmUgbGFzdE1vZGlmaWVkLiBUSFJPV1Mgd2hlbiB0aGUgc3RyZWFtIHByb2R1Y2VzIG5vIGRhdGEgYXQgYWxsIC0gc2FtZSBydWxlIGFzIHNldDogYW4gZW1wdHkgZmlsZSBJUyBhIGRlbGV0aW9uIGFuZCB3b3VsZCByZWFkIGJhY2sgYXMgbWlzc2luZy4gKi9cbiAgICBzZXRMYXJnZUZpbGUoY29uZmlnOiBTZXRMYXJnZUZpbGVDb25maWcpOiBQcm9taXNlPHZvaWQ+O1xuICAgIC8qKiB3cml0ZVRpbWUgaXMgdGhlIGxhc3Qtd3JpdGUgdGltZSDigJQgc2VlIEFyY2hpdmVGaWxlSW5mby5jcmVhdGVUaW1lLCB3aGljaCBpcyB0aGUgc2FtZSB2YWx1ZS4gdXJsIGFzIGluIGdldDIuIFNpemUtMCBlbnRyaWVzICh0b21ic3RvbmVzKSByZXBvcnQgdW5kZWZpbmVkIHVubGVzcyBjb25maWcuaW5jbHVkZVRvbWJzdG9uZXMuICovXG4gICAgZ2V0SW5mbyhmaWxlTmFtZTogc3RyaW5nLCBjb25maWc/OiBHZXRJbmZvQ29uZmlnKTogUHJvbWlzZTx7IHdyaXRlVGltZTogbnVtYmVyOyBzaXplOiBudW1iZXI7IHVybD86IHN0cmluZyB9IHwgdW5kZWZpbmVkPjtcbiAgICAvKipcbiAgICAgKiBFbXB0eSAoc2l6ZS0wKSBmaWxlcyBhcmUgTkVWRVIgcmV0dXJuZWQgYnkgaW5kZXgtYmFja2VkIHN0b3JlcyAoQmxvYlN0b3JlLCBhbmQgdGhlcmVmb3JlIHRoZVxuICAgICAqIGNoYWluKTogYW4gZW1wdHkgZmlsZSBJUyBhIG1pc3NpbmcgZmlsZSAtIHRoZSB0b21ic3RvbmUgb2YgYSBkZWxldGlvbi4gSWYgeW91IHdhbnQgYSBtYXJrZXJcbiAgICAgKiBmaWxlIHRoYXQgc2hvd3MgdXAgaW4gbGlzdGluZ3MsIGFkZCBzb21lIGNvbnRlbnQgdG8gaXQuIFJhdyBzb3VyY2VzIChkaXNrLCBiYWNrYmxhemUpIERPIGxpc3RcbiAgICAgKiB0aGVpciBlbXB0eSBmaWxlcyAtIHRoYXQgaXMgaG93IHNjYW5zIGxlYXJuIG9mIGRlbGV0aW9ucyAtIGJ1dCBub3RoaW5nIGJ1aWx0IG9uIHRoZSBpbmRleFxuICAgICAqIGV2ZXIgc3VyZmFjZXMgdGhlbS5cbiAgICAgKi9cbiAgICBmaW5kKHByZWZpeDogc3RyaW5nLCBjb25maWc/OiBGaW5kQ29uZmlnKTogUHJvbWlzZTxzdHJpbmdbXT47XG4gICAgLyoqIFNlZSBmaW5kIGZvciB0aGUgZW1wdHktZmlsZSAodG9tYnN0b25lKSBydWxlLiAqL1xuICAgIGZpbmRJbmZvKHByZWZpeDogc3RyaW5nLCBjb25maWc/OiBGaW5kQ29uZmlnKTogUHJvbWlzZTxBcmNoaXZlRmlsZUluZm9bXT47XG4gICAgLyoqIE9ubHkgd29ya3MgZm9yIHB1YmxpYyBidWNrZXRzIChwcml2YXRlIGJ1Y2tldHMgYXJlIEFQSS1hY2Nlc3Mgb25seSkuICovXG4gICAgZ2V0VVJMKHBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPjtcbiAgICAvKiogVGhlIGJ1Y2tldCdzIGNvbmZpZ3VyYXRpb24sIHdoaWNoIHRlbGxzIHdoZXRoZXIgdGhlIG9wdGlvbmFsIGZ1bmN0aW9ucyBhcmUgc3VwcG9ydGVkLiAqL1xuICAgIGdldENvbmZpZygpOiBQcm9taXNlPEFyY2hpdmVzQ29uZmlnPjtcbiAgICAvKipcbiAgICAgKiBBbGwgZmlsZXMgY2hhbmdlZCBhZnRlciBjb25maWcudGltZSwgb3B0aW9uYWxseSByZXN0cmljdGVkIHRvIGtleXMgcm91dGluZyBpbnRvIG9uZSBvZlxuICAgICAqIGNvbmZpZy5yb3V0ZXMgKHVzZWQgYnkgc2Nhbm5pbmcsIHNvIHBhcnRpYWxseS1vdmVybGFwcGluZyBzaGFyZHMgb25seSByZWNlaXZlIHRoZWlyIHNsaWNlKS5cbiAgICAgKiBXaGVuIGdldENvbmZpZygpLnN1cHBvcnRzQ2hhbmdlc0FmdGVyLCB0aGlzIGlzIGJhY2tlZCBieSBhbiBpbmRleCAoZmFzdCwgYW5kIGRlbGV0aW9ucyBBUkVcbiAgICAgKiByZXBvcnRlZCwgYXMgc2l6ZS0wIHRvbWJzdG9uZSBlbnRyaWVzKS4gRXZlcnkgb3RoZXIgYmFja2VuZCBlbXVsYXRlcyBpdDogYSBmdWxsIGZpbmRJbmZvXG4gICAgICogbGlzdGluZyBmaWx0ZXJlZCBpbiBtZW1vcnkgLSBjb3JyZWN0LCBidXQgbm8gY2hlYXBlciB0aGFuIHRoZSBsaXN0aW5nIGl0c2VsZi5cbiAgICAgKi9cbiAgICBnZXRDaGFuZ2VzQWZ0ZXIyKGNvbmZpZzogQ2hhbmdlc0FmdGVyQ29uZmlnKTogUHJvbWlzZTxBcmNoaXZlRmlsZUluZm9bXT47XG4gICAgLyoqIFN5bmNocm9uaXphdGlvbiBpbnRyb3NwZWN0aW9uLCBmb3IgYmFja2VuZHMgdGhhdCBzeW5jaHJvbml6ZSBmcm9tIHNvdXJjZXMgKHNlZSBCbG9iU3RvcmUpLiAqL1xuICAgIGdldFN5bmNTdGF0dXM/KCk6IFByb21pc2U8QXJjaGl2ZXNTeW5jU3RhdHVzPjtcbn1cbiJdfQ==
|
|
62
|
-
/* _JS_SOURCE_HASH = "
|
|
62
|
+
/* _JS_SOURCE_HASH = "afc602184146e692ec45c48309a2a7ec337f42cfd6d29ea69645318cd66212f3"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.getFileStorageIndexDB = void 0;
|
|
4
4
|
const caching_1 = require("socket-function/src/caching");
|
|
@@ -145,4 +145,4 @@ exports.getFileStorageIndexDB = (0, caching_1.lazy)(async () => {
|
|
|
145
145
|
return new VirtualFileStorage(db, "/");
|
|
146
146
|
});
|
|
147
147
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5kZXhlZERCRmlsZUZvbGRlckFQSS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkluZGV4ZWREQkZpbGVGb2xkZXJBUEkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseURBQW1EO0FBSW5ELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUM5QixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFDM0IsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBT3JCLE1BQU0sa0JBQWtCO0lBR3BCLFlBQ0ksRUFBZSxFQUNDLEVBQVU7UUFBVixPQUFFLEdBQUYsRUFBRSxDQUFRO1FBOEc5QixtQ0FBbUM7UUFDbkMsV0FBTSxHQUFHO1lBQ0wsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFXLEVBQW9CLEVBQUU7Z0JBQzVDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztnQkFDdkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3RELE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUVELFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBVyxFQUF3QixFQUFFO2dCQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQ3BDLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELENBQUM7WUFFRCxhQUFhLEVBQUUsS0FBSyxFQUFFLEdBQVcsRUFBaUIsRUFBRTtnQkFDaEQsSUFBSSxNQUFNLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLE1BQU0sQ0FBQyxL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Q0FBQyxNQUFNLENBQUM7WUFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsYXp5IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgSVN0b3JhZ2VSYXcgfSBmcm9tIFwiLi9JU3RvcmFnZVwiO1xuaW1wb3J0IHsgRmlsZVN0b3JhZ2UgfSBmcm9tIFwiLi9GaWxlRm9sZGVyQVBJXCI7XG5cbmNvbnN0IERCX05BTUUgPSBcIkZpbGVTdG9yYWdlXCI7XG5jb25zdCBTVE9SRV9OQU1FID0gXCJmaWxlc1wiO1xuY29uc3QgREJfVkVSU0lPTiA9IDE7XG5cbmludGVyZmFjZSBGaWxlUmVjb3JkIHtcbiAgICBkYXRhOiBCdWZmZXI7XG4gICAgbGFzdE1vZGlmaWVkOiBudW1iZXI7XG59XG5cbmNsYXNzIFZpcnR1YWxGaWxlU3RvcmFnZSBpbXBsZW1lbnRzIEZpbGVTdG9yYWdlIHtcbiAgICBwcml2YXRlIGRiOiBJREJEYXRhYmFzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBkYjogSURCRGF0YWJhc2UsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIGlmICghZGIpIGRlYnVnZ2VyO1xuICAgICAgICB0aGlzLmRiID0gZGI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdG9yZShtb2RlOiBJREJUcmFuc2FjdGlvbk1vZGUgPSBcInJlYWRvbmx5XCIpIHtcbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRiLnRyYW5zYWN0aW9uKFNUT1JFX05BTUUsIG1vZGUpO1xuICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoU1RPUkVfTkFNRSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXF1ZXN0PFQ+KHJlcXVlc3Q6IElEQlJlcXVlc3Q8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdCk7XG4gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgLy8gSVN0b3JhZ2VSYXcgaW1wbGVtZW50YXRpb25cbiAgICBhc3luYyBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlciB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCBzdG9yZSA9IHRoaXMuZ2V0U3RvcmUoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0PEZpbGVSZWNvcmQgfCB1bmRlZmluZWQ+KHN0b3JlLmdldCh0aGlzLmlkICsga2V5KSk7XG4gICAgICAgIGxldCBiYWRCdWZmZXIgPSByZXN1bHQ/LmRhdGE7XG4gICAgICAgIGlmIChiYWRCdWZmZXIpIGJhZEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhZEJ1ZmZlcik7XG4gICAgICAgIHJldHVybiBiYWRCdWZmZXI7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0UmFuZ2Uoa2V5OiBzdHJpbmcsIGNvbmZpZzogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9KTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgZnVsbEJ1ZmZlciA9IGF3YWl0IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghZnVsbEJ1ZmZlcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIGZ1bGxCdWZmZXIuc3ViYXJyYXkoY29uZmlnLnN0YXJ0LCBjb25maWcuZW5kKTtcbiAgICB9XG5cbiAgICBhc3luYyBhcHBlbmQoa2V5OiBzdHJpbmcsIHZhbHVlOiBCdWZmZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLmdldFN0b3JlKFwicmVhZHdyaXRlXCIpO1xuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHRoaXMuaWQgKyBrZXk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5yZXF1ZXN0PEZpbGVSZWNvcmQgfCB1bmRlZmluZWQ+KHN0b3JlLmdldChmdWxsUGF0aCkpO1xuXG4gICAgICAgIGNvbnN0IG5ld1JlY29yZDogRmlsZVJlY29yZCA9IHtcbiAgICAgICAgICAgIGRhdGE6IGV4aXN0aW5nXG4gICAgICAgICAgICAgICAgPyBCdWZmZXIuY29uY2F0KFtleGlzdGluZy5kYXRhLCB2YWx1ZV0pXG4gICAgICAgICAgICAgICAgOiB2YWx1ZSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogRGF0ZS5ub3coKVxuICAgICAgICB9O1xuXG4gICAgICAgIGF3YWl0IHRoaXMucmVxdWVzdChzdG9yZS5wdXQobmV3UmVjb3JkLCBmdWxsUGF0aCkpO1xuICAgIH1cblxuICAgIGFzeW5jIHNldChrZXk6IHN0cmluZywgdmFsdWU6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdG9yZSA9IHRoaXMuZ2V0U3RvcmUoXCJyZWFkd3JpdGVcIik7XG4gICAgICAgIGNvbnN0IHJlY29yZDogRmlsZVJlY29yZCA9IHtcbiAgICAgICAgICAgIGRhdGE6IHZhbHVlLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBEYXRlLm5vdygpXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMucmVxdWVzdChzdG9yZS5wdXQocmVjb3JkLCB0aGlzLmlkICsga2V5KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVtb3ZlKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN0b3JlID0gdGhpcy5nZXRTdG9yZShcInJlYWR3cml0ZVwiKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZXF1ZXN0KHN0b3JlLmRlbGV0ZSh0aGlzLmlkICsga2V5KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRLZXlzV2l0aFByZWZpeChwcmVmaXg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLmdldFN0b3JlKCk7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQocHJlZml4LCBwcmVmaXggKyBcIlxcdWZmZmZcIiwgZmFsc2UsIHRydWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IocmFuZ2UpO1xuXG4gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDtcbiAgICAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdLZXkgPSBjdXJzb3Iua2V5IGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgbmV3S2V5ID0gbmV3S2V5LnNsaWNlKHRoaXMuaWQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKG5ld0tleSk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoa2V5cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0S2V5cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGxldCBrZXlzID0gYXdhaXQgdGhpcy5nZXRLZXlzV2l0aFByZWZpeCh0aGlzLmlkKTtcbiAgICAgICAgcmV0dXJuIGtleXMuZmlsdGVyKHggPT4gIXguaW5jbHVkZXMoXCIvXCIpKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRJbmZvKGtleTogc3RyaW5nKTogUHJvbWlzZTx7IHNpemU6IG51bWJlcjsgbGFzdE1vZGlmaWVkOiBudW1iZXI7IH0gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLmdldFN0b3JlKCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDxGaWxlUmVjb3JkIHwgdW5kZWZpbmVkPihzdG9yZS5nZXQodGhpcy5pZCArIGtleSkpO1xuXG4gICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaXplOiByZXN1bHQuZGF0YS5sZW5ndGgsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IHJlc3VsdC5sYXN0TW9kaWZpZWRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyByZXNldCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IGtleXMgPSBhd2FpdCB0aGlzLmdldEtleXNXaXRoUHJlZml4KHRoaXMuaWQpO1xuICAgICAgICBmb3IgKGxldCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmUoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5lc3RlZEZpbGVTdG9yYWdlIGltcGxlbWVudGF0aW9uXG4gICAgZm9sZGVyID0ge1xuICAgICAgICBoYXNLZXk6IGFzeW5jIChrZXk6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9sZGVyUGF0aCA9IHRoaXMuaWQgKyBrZXkgKyBcIi9cIjtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBhd2FpdCB0aGlzLmdldEtleXNXaXRoUHJlZml4KGZvbGRlclBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIGtleXMubGVuZ3RoID4gMDtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRTdG9yYWdlOiBhc3luYyAoa2V5OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdG9yYWdlPiA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdQYXRoID0gdGhpcy5pZCArIGtleSArIFwiL1wiO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBWaXJ0dWFsRmlsZVN0b3JhZ2UodGhpcy5kYiwgbmV3UGF0aCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVtb3ZlU3RvcmFnZTogYXN5bmMgKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBsZXQgbmVzdGVkID0gbmV3IFZpcnR1YWxGaWxlU3RvcmFnZSh0aGlzLmRiLCB0aGlzLmlkICsga2V5ICsgXCIvXCIpO1xuICAgICAgICAgICAgYXdhaXQgbmVzdGVkLnJlc2V0KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0S2V5czogYXN5bmMgKCk6IFByb21pc2U8c3RyaW5nW10+ID0+IHtcbiAgICAgICAgICAgIGxldCBrZXlzID0gYXdhaXQgdGhpcy5nZXRLZXlzV2l0aFByZWZpeCh0aGlzLmlkKTtcbiAgICAgICAgICAgIGxldCBmb2xkZXJLZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgICAgIGlmICgha2V5LmluY2x1ZGVzKFwiL1wiKSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgbGV0IHBhcnRzID0ga2V5LnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgICAgICBmb2xkZXJLZXlzLmFkZChwYXJ0c1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShmb2xkZXJLZXlzKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBnZXRGaWxlU3RvcmFnZUluZGV4REIgPSBsYXp5KGFzeW5jICgpOiBQcm9taXNlPEZpbGVTdG9yYWdlPiA9PiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBuZXcgUHJvbWlzZTxJREJEYXRhYmFzZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oREJfTkFNRSwgREJfVkVSU0lPTik7XG5cbiAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHJlcXVlc3QuZXJyb3IpO1xuICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHJlc29sdmUocmVxdWVzdC5yZXN1bHQpO1xuXG4gICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYiA9IChldmVudC50YXJnZXQgYXMgSURCT3BlbkRCUmVxdWVzdCkucmVzdWx0O1xuICAgICAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKFNUT1JFX05BTUUpKSB7XG4gICAgICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoU1RPUkVfTkFNRSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IFZpcnR1YWxGaWxlU3RvcmFnZShkYiwgXCIvXCIpO1xufSk7Il19
|
|
148
|
-
/* _JS_SOURCE_HASH = "
|
|
148
|
+
/* _JS_SOURCE_HASH = "35575d7b40168300db97c6a012ddab111b6b1f19daab4bd2d621c420b88e500f"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.JSONStorage = void 0;
|
|
4
4
|
class JSONStorage {
|
|
@@ -39,4 +39,4 @@ class JSONStorage {
|
|
|
39
39
|
}
|
|
40
40
|
exports.JSONStorage = JSONStorage;
|
|
41
41
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSlNPTlN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJKU09OU3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFhLFdBQVc7SUFDcEIsWUFBb0IsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7SUFBSSxDQUFDO0lBQzNDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBVztRQUN4QixJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0UsQ0FBQztJQUNMLENBQUM7SUFDTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFRO1FBQ2xDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNNLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVztRQUMzQixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDTSxLQUFLLENBQUMsT0FBTztRQUNoQixPQUFPLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBQ00sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFXO1FBQzVCLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBR00sV0FBVyxDQUFDLFFBQW9COztRQUNuQyxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sRUFBQyxXQUFXLG1EQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNkLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0o7QUFsQ0Qsa0NBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVN0b3JhZ2UgfSBmcm9tIFwiLi9JU3RvcmFnZVwiO1xuXG5leHBvcnQgY2xhc3MgSlNPTlN0b3JhZ2U8VD4gaW1wbGVtZW50cyBJU3RvcmFnZTxUPiB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yYWdlOiBJU3RvcmFnZTxCdWZmZXI+KSB7IH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGxldCBidWZmZXIgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KGtleSk7XG4gICAgICAgIGlmIChidWZmZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYnVmZmVyLnRvU3RyaW5nKCkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYEZhaWxlZCB0byBwYXJzZSBKU09OIGZvciBrZXk6ICR7a2V5fWAsIGJ1ZmZlci50b1N0cmluZygpLCBlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KGtleSwgQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkodmFsdWUpKSk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyByZW1vdmUoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnJlbW92ZShrZXkpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0S2V5cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0S2V5cygpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5mbyhrZXk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zdG9yYWdlLmdldEluZm8oa2V5KTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyB3YXRjaFJlc3luYyhjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JhZ2Uud2F0Y2hSZXN5bmM/LihjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc2V0KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UucmVzZXQoKTtcbiAgICB9XG59Il19
|
|
42
|
-
/* _JS_SOURCE_HASH = "
|
|
42
|
+
/* _JS_SOURCE_HASH = "f03428270acaeee0f8ce5c36431ab07129e822c838b99d45a1a085eb16bfaf86"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
3
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
4
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -70,4 +70,4 @@ exports.PendingDisplay = PendingDisplay = __decorate([
|
|
|
70
70
|
observer_1.observer
|
|
71
71
|
], PendingDisplay);
|
|
72
72
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVuZGluZ01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJQZW5kaW5nTWFuYWdlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBRXBDLG1EQUE0RDtBQUM1RCwrQkFBa0M7QUFDbEMsb0RBQTRCO0FBQzVCLDZDQUFrQztBQUNsQyx1REFBb0Q7QUFDcEQsa0VBQW1FO0FBRW5FLElBQUksVUFBVSxHQUFHLElBQUEsaUJBQVUsRUFBQztJQUN4QixPQUFPLEVBQUUsRUFBaUM7Q0FDN0MsQ0FBQyxDQUFDO0FBQ0gsSUFBSSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7QUFFaEQsSUFBSSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7QUFFN0MsOEJBQThCO0FBQzlCLFNBQWdCLFVBQVUsQ0FBQyxLQUFhLEVBQUUsT0FBZTtJQUNyRCxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqQyxLQUFLLGNBQWMsRUFBRSxDQUFDO0FBQzFCLENBQUM7QUFIRCxnQ0FHQztBQUVELFNBQWdCLFVBQVU7SUFDdEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFGRCxnQ0FFQztBQUVELHlLQUF5SztBQUN6SyxNQUFNLGNBQWMsR0FBRyxJQUFBLHVCQUFnQixFQUFDLEdBQUcsRUFBRSxTQUFTLGNBQWM7SUFDaEUsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXhDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDVixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDO2dCQUNwQyxJQUFJLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsSUFBQSxtQkFBVSxFQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwSixDQUFDO2dCQUNELGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDO2FBQU0sQ0FBQztZQUNKLDZDQUE2QztZQUM3QyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQztBQUdJLElBQU0sY0FBYyxHQUFwQixNQUFNLGNBQWUsU0FBUSxnQkFBTSxDQUFDLFNBQVM7SUFDaEQsTUFBTTtRQUNGLDZEQUE2RDtRQUM3RCxPQUFPLHdDQUFLLFNBQVMsRUFBRSxpQkFBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FDMUMsd0NBQUssU0FBUyxFQUFFLGlCQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuRixLQUFLOztZQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQ2pDLENBQ1QsQ0FBQyxDQUNBLENBQUM7SUFDWCxDQUFDO0NBQ0osQ0FBQTtBQVhZLHdDQUFjO3lCQUFkLGNBQWM7SUFEMUIsbUJBQVE7R0FDSSxjQUFjLENBVzFCIiwic291cmNlc0NvbnRlbnQiOlsicHJvY2Vzcy5lbnYuTk9ERV9FTlYgPSBcInByb2R1Y3Rpb25cIjtcblxuaW1wb3J0IHsgdGhyb3R0bGVGdW5jdGlvbiB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL21pc2NcIjtcbmltcG9ydCB7IG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHByZWFjdCBmcm9tIFwicHJlYWN0XCI7XG5pbXBvcnQgeyBjc3MgfSBmcm9tIFwidHlwZXNhZmVjc3NcIjtcbmltcG9ydCB7IG9ic2VydmVyIH0gZnJvbSBcIi4uL3JlbmRlci11dGlscy9vYnNlcnZlclwiO1xuaW1wb3J0IHsgZm9ybWF0VGltZSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2Zvcm1hdHRpbmcvZm9ybWF0XCI7XG5cbmxldCB3YXRjaFN0YXRlID0gb2JzZXJ2YWJsZSh7XG4gICAgcGVuZGluZzoge30gYXMgeyBbZ3JvdXA6IHN0cmluZ106IHN0cmluZyB9XG59KTtcbmxldCBwZW5kaW5nTGFzdFNldHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG5sZXQgcGVuZGluZ0NhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuLy8gXCJcIiBjbGVhcnMgdGhlIHBlbmRpbmcgdmFsdWVcbmV4cG9ydCBmdW5jdGlvbiBzZXRQZW5kaW5nKGdyb3VwOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHBlbmRpbmdDYWNoZS5zZXQoZ3JvdXAsIG1lc3NhZ2UpO1xuICAgIHZvaWQgc2V0UGVuZGluZ0Jhc2UoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1BlbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHdhdGNoU3RhdGUucGVuZGluZykubGVuZ3RoID4gMDtcbn1cblxuLy8gTk9URTogVGhpcyBub3Qgb25seSBwcmV2ZW50cyByZW5kZXIgb3ZlcmxvYWQsIGJ1dCBhbHNvIG1lYW5zIGFueSBwZW5kaW5nIHRoYXQgYXJlIDwgdGhpcyBkZWxheSBkb24ndCBzaG93IHVwICh3aGljaCBpcyB1c2VmdWwgdG8gcmVkdWNlIHVubmVjZXNzYXJ5IHBlbmRpbmcgbWVzc2FnZXMpLlxuY29uc3Qgc2V0UGVuZGluZ0Jhc2UgPSB0aHJvdHRsZUZ1bmN0aW9uKDUwMCwgZnVuY3Rpb24gc2V0UGVuZGluZ0Jhc2UoKSB7XG4gICAgZm9yIChsZXQgW2dyb3VwLCBtZXNzYWdlXSBvZiBwZW5kaW5nQ2FjaGUpIHtcblxuICAgICAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgICAgICAgIGxldCBsYXN0U2V0ID0gcGVuZGluZ0xhc3RTZXRzLmdldChncm91cCk7XG4gICAgICAgICAgICBpZiAobGFzdFNldCkge1xuICAgICAgICAgICAgICAgIGxldCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBsYXN0U2V0O1xuICAgICAgICAgICAgICAgIGlmIChkdXJhdGlvbiA+IDUwMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmluaXNoZWQgc2xvdyB0YXNrIGFmdGVyICR7Zm9ybWF0VGltZShkdXJhdGlvbil9OiAke0pTT04uc3RyaW5naWZ5KGdyb3VwKX0sIGxhc3QgaXMgJHtKU09OLnN0cmluZ2lmeSh3YXRjaFN0YXRlLnBlbmRpbmdbZ3JvdXBdKX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGVuZGluZ0xhc3RTZXRzLmRlbGV0ZShncm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgd2F0Y2hTdGF0ZS5wZW5kaW5nW2dyb3VwXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwic2V0UGVuZGluZ1wiLCBncm91cCwgbWVzc2FnZSk7XG4gICAgICAgICAgICBpZiAoIShncm91cCBpbiB3YXRjaFN0YXRlLnBlbmRpbmcpKSB7XG4gICAgICAgICAgICAgICAgcGVuZGluZ0xhc3RTZXRzLnNldChncm91cCwgRGF0ZS5ub3coKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3YXRjaFN0YXRlLnBlbmRpbmdbZ3JvdXBdID0gbWVzc2FnZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwZW5kaW5nQ2FjaGUuY2xlYXIoKTtcbn0pO1xuXG5Ab2JzZXJ2ZXJcbmV4cG9ydCBjbGFzcyBQZW5kaW5nRGlzcGxheSBleHRlbmRzIHByZWFjdC5Db21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgLy8gU2luZ2xlIGxpbmUsIGdpdmluZyBlcXVhbCBzcGFjZSwgYW5kIGVsbGlwc2lzIGZvciBvdmVyZmxvd1xuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2Nzcy5oYm94KDEwKX0+XG4gICAgICAgICAgICB7T2JqZWN0LmtleXMod2F0Y2hTdGF0ZS5wZW5kaW5nKS5tYXAoZ3JvdXAgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjc3MuY2VudGVyLnRleHRPdmVyZmxvdyhcImVsbGlwc2lzXCIpLmJvcmRlcihcIjFweCBzb2xpZCBibGFja1wiKS5wYWQyKDYsIDIpfT5cbiAgICAgICAgICAgICAgICAgICAge2dyb3VwfToge3dhdGNoU3RhdGUucGVuZGluZ1tncm91cF19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+O1xuICAgIH1cbn0iXX0=
|
|
73
|
-
/* _JS_SOURCE_HASH = "
|
|
73
|
+
/* _JS_SOURCE_HASH = "6f964fe2d67ead5a148c0cd1928308c38b1b3fa5ee2adca22b8b70648f83cd44"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
@@ -396,4 +396,4 @@ class StreamingLogs {
|
|
|
396
396
|
}
|
|
397
397
|
exports.StreamingLogs = StreamingLogs;
|
|
398
398
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RyZWFtaW5nTG9ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlN0cmVhbWluZ0xvZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4QixtREFBZ0Q7QUFDaEQscURBQWtEO0FBRWxELGdpQkFBZ2lCO0FBRWhpQix1RUFBdUU7QUFDdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLDBEQUEwRDtBQUMxRCxNQUFNLGNBQWMsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6Qyx5RUFBeUU7QUFDekUsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDbEQsaUpBQWlKO0FBQ2pKLE1BQU0sd0JBQXdCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDaEQsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNoRCx3TEFBd0w7QUFDeEwsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQzFDLHFHQUFxRztBQUNyRyxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQztBQUVsQyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztBQUNsQyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUM7QUFpQ3BDLFNBQVMsZ0JBQWdCLENBQUMsSUFBWTtJQUNsQyxzU0FBc1M7SUFDdFMsSUFBSSxLQUFLLEdBQUcseUhBQXlILENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pKLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDN0IsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1Qix1RkFBdUY7SUFDdkYsSUFBSSxVQUFVLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FB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QUUsQ0FBQztZQUNWLFlBQVksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzlCLENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixLQUFLLDZCQUE2QixPQUFPLGtCQUFrQixZQUFZLFlBQVksS0FBSyxlQUFlLENBQUMsQ0FBQztJQUN4SyxDQUFDO0lBRU0sT0FBTztRQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUF2UUQsc0NBdVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHNvcnQgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9taXNjXCI7XG5pbXBvcnQgeyBMWjQgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9sejQvTFo0XCI7XG5cbi8vIEdlbmVyaWMgYXBwZW5kLW9ubHkgSlNPTi1saW5lcyBsb2dnaW5nIG92ZXIgYSBmb2xkZXIuIEV2ZXJ5IHByb2Nlc3Mgc3RyZWFtcyB0byBpdHMgT1dOIGZpbGUgKG5hbWVkIGJ5IHBpZCArIHByb2Nlc3Mgc3RhcnQgdGltZSArIHRocmVhZCBpZCwgd2hpY2ggdG9nZXRoZXIgaWRlbnRpZnkgYSBwcm9jZXNzIGluY2FybmF0aW9uKSwgcm90YXRpbmcgdG8gYSBuZXcgZmlsZSBhdCBhIHNpemUgbGltaXQgYW5kIExaNC1jb21wcmVzc2luZyB0aGUgZmluaXNoZWQgb25lLiBFdmVyeSBwcm9jZXNzIHVzaW5nIHRoZSBmb2xkZXIgYWxzbyBNQUlOVEFJTlMgaXQgb24gYSByYW5kb21pemVkIGludGVydmFsOiBkZWFkIHByb2Nlc3NlcycgZmlsZXMgYXJlIGNvbXByZXNzZWQgZm9yIHRoZW0sIGR1cGxpY2F0ZSBjb21wcmVzc2lvbnMgYXJlIHJlc29sdmVkLCBhbmQgdGhlIG9sZGVzdCBmaWxlcyBhcmUgZGVsZXRlZCBvbmNlIHRoZSBmb2xkZXIgb3V0Z3Jvd3MgaXRzIGJ5dGUgYnVkZ2V0LiBJbnN0YW50aWF0ZSBvbmUgcGVyIGZvbGRlciBhbmQgY2FsbCBsb2coKS5cblxuLy8gQXBwZW5kcyBhcmUgY29hbGVzY2VkIGZvciB0aGlzIGxvbmc7IGEgY3Jhc2ggbG9zZXMgYXQgbW9zdCB0aGlzIG11Y2hcbmNvbnN0IEZMVVNIX0RFTEFZID0gNTAwMDtcbi8vIEEgZmlsZSByZWFjaGluZyB0aGlzIHNpemUgaXMgcm90YXRlZCBvdXQgYW5kIGNvbXByZXNzZWRcbmNvbnN0IE1BWF9GSUxFX0JZVEVTID0gMTAwICogMTAyNCAqIDEwMjQ7XG4vLyBUaGUgZm9sZGVyJ3MgdG90YWwgYnVkZ2V0OyBvbmNlIGV4Y2VlZGVkLCB0aGUgb2xkZXN0IGZpbGVzIGFyZSBkZWxldGVkXG5jb25zdCBUT1RBTF9MSU1JVF9CWVRFUyA9IDMwICogMTAyNCAqIDEwMjQgKiAxMDI0O1xuLy8gTWFpbnRlbmFuY2UgcnVucyBhdCBhIHJhbmRvbSBwb2ludCBpbiB0aGlzIHJhbmdlLCBzbyB0aGUgcHJvY2Vzc2VzIHNoYXJpbmcgdGhlIGZvbGRlciBkcmlmdCBhcGFydCBpbnN0ZWFkIG9mIHN0ZXBwaW5nIG9uIGVhY2ggb3RoZXIgZXZlcnkgcGFzc1xuY29uc3QgTUFJTlRFTkFOQ0VfTUlOX0lOVEVSVkFMID0gMzAgKiA2MCAqIDEwMDA7XG5jb25zdCBNQUlOVEVOQU5DRV9NQVhfSU5URVJWQUwgPSA2MCAqIDYwICogMTAwMDtcbi8vIEEgcGlkIGlzIG9ubHkgdGhlIHNhbWUgUFJPQ0VTUyBpZiBpdHMgc3RhcnQgdGltZSBtYXRjaGVzIHRoZSBmaWxlIG5hbWUncyAtIHdpdGhpbiB0aGlzIG11Y2gsIGJlY2F1c2Ugb3VyIG93biBzdGFydCB0aW1lIGlzIGRlcml2ZWQgZnJvbSBwcm9jZXNzLnVwdGltZSBhbmQgdGhlIE9TJ3MgaXMgcmVhZCBvZmYgL3Byb2NcbmNvbnN0IFBST0NFU1NfU1RBUlRfVE9MRVJBTkNFID0gNjAgKiAxMDAwO1xuLy8gSWYgZmx1c2hpbmcgZmFpbHMgcGVyc2lzdGVudGx5IChkaXNrIGdvbmUpLCBwZW5kaW5nIGVudHJpZXMgYXJlIGNhcHBlZCByYXRoZXIgdGhhbiBncm93aW5nIGZvcmV2ZXJcbmNvbnN0IE1BWF9QRU5ESU5HX0VOVFJJRVMgPSAxMDAwMDtcblxuY29uc3QgVU5DT01QUkVTU0VEX0VYVCA9IFwiLmpzb25sXCI7XG5jb25zdCBDT01QUkVTU0VEX0VYVCA9IFwiLmpzb25sLmx6NFwiO1xuXG4vKiogRXZlcnl0aGluZyBhIGxvZyBmaWxlJ3MgTkFNRSBzYXlzIGFib3V0IGl0IChwbHVzIGl0cyBvbi1kaXNrIHNpemUpLiBUaW1lcyBib3VuZCB0aGUgZW50cmllcyByb3VnaGx5OiBmcm9tIGlzIHdoZW4gaXRzIHByb2Nlc3Mgc3RhcnRlZCB3cml0aW5nIGl0LCB0byBpcyB3aGVuIGl0IHdhcyBjb21wcmVzc2VkLiAqL1xuZXhwb3J0IHR5cGUgTG9nRmlsZUluZm8gPSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8qKiBCeXRlcyBvbiBkaXNrIChjb21wcmVzc2VkIGJ5dGVzIGZvciBjb21wcmVzc2VkIGZpbGVzKSAqL1xuICAgIHNpemU6IG51bWJlcjtcbiAgICBwaWQ6IG51bWJlcjtcbiAgICBwcm9jZXNzU3RhcnRUaW1lOiBudW1iZXI7XG4gICAgdGhyZWFkSWQ6IHN0cmluZztcbiAgICAvKiogV2hlbiB0aGUgcHJvY2VzcyBzdGFydGVkIHdyaXRpbmcgdGhpcyBmaWxlICovXG4gICAgc3RhcnRUaW1lOiBudW1iZXI7XG4gICAgLyoqIFdoZW4gdGhlIGZpbGUgd2FzIGNvbXByZXNzZWQgLSBhYnNlbnQgd2hpbGUgaXQgaXMgc3RpbGwgYmVpbmcgc3RyZWFtZWQgdG8gKi9cbiAgICBlbmRUaW1lPzogbnVtYmVyO1xuICAgIC8qKiBIb3cgbWFueSBlbnRyaWVzIGl0IGhvbGRzIC0gb25seSBjb3VudGVkIGF0IGNvbXByZXNzaW9uLCBzbyBhYnNlbnQgb24gbGl2ZSBmaWxlcyAqL1xuICAgIGVudHJ5Q291bnQ/OiBudW1iZXI7XG4gICAgY29tcHJlc3NlZDogYm9vbGVhbjtcbiAgICAvKiogV2hldGhlciB0aGUgd3JpdGluZyBwcm9jZXNzIGlzIHN0aWxsIGFsaXZlIChhbHdheXMgZmFsc2UgZm9yIGNvbXByZXNzZWQgZmlsZXMpICovXG4gICAgYWN0aXZlOiBib29sZWFuO1xufTtcblxudHlwZSBQYXJzZWROYW1lID0ge1xuICAgIHBpZDogbnVtYmVyO1xuICAgIHByb2Nlc3NTdGFydFRpbWU6IG51bWJlcjtcbiAgICB0aHJlYWRJZDogc3RyaW5nO1xuICAgIHN0YXJ0VGltZTogbnVtYmVyO1xuICAgIGVuZFRpbWU/OiBudW1iZXI7XG4gICAgZW50cnlDb3VudD86IG51bWJlcjtcbiAgICBjb21wcmVzc2VkOiBib29sZWFuO1xuICAgIC8qKiBUaGUgcGFydCBpZGVudGlmeWluZyB0aGUgT1JJR0lOQUwgc3RyZWFtIChwaWQrYm9ybit0aHJlYWQrZnJvbSkgLSB3aGF0IGR1cGxpY2F0ZSBjb21wcmVzc2lvbnMgc2hhcmUgKi9cbiAgICBvcmlnaW5LZXk6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIHBhcnNlTG9nRmlsZU5hbWUobmFtZTogc3RyaW5nKTogUGFyc2VkTmFtZSB8IHVuZGVmaW5lZCB7XG4gICAgLy8gVGhlIHRpbWUgZmllbGRzIGFjY2VwdCBhIGZyYWN0aW9uYWwgcGFydDogaG9zdHMgdGhhdCBzaGltIERhdGUubm93IHRvIGEgdHJ1ZS10aW1lIGNsb2NrIHJldHVybiBmcmFjdGlvbmFsIG1pbGxpc2Vjb25kcywgYW5kIGZpbGVzIHdyaXR0ZW4gYmVmb3JlIHRoZSB3cml0ZXIgcm91bmRlZCB0aGVtIGFyZSBhbHJlYWR5IG9uIGRpc2sgZXZlcnl3aGVyZSAtIHRoZXkgbXVzdCBzdGF5IGxpc3RhYmxlIChhbmQgbWFpbnRhaW5hYmxlLCBvciB0aGV5IHdvdWxkIG5ldmVyIGJlIGNvbXByZXNzZWQgb3IgY2xlYW5lZCkuXG4gICAgbGV0IG1hdGNoID0gL15waWQoXFxkKylfYm9ybihcXGQrKV90aHJlYWQoW1xcdy1dKz8pX2Zyb20oXFxkKyg/OlxcLlxcZCspPykoPzpfdG8oXFxkKyg/OlxcLlxcZCspPylfY291bnQoXFxkKylfaWQoW2EtejAtOV0rKSk/XFwuanNvbmwoXFwubHo0KT8kLy5leGVjKG5hbWUpO1xuICAgIGlmICghbWF0Y2gpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgbGV0IGNvbXByZXNzZWQgPSAhIW1hdGNoWzhdO1xuICAgIC8vIEEgY29tcHJlc3NlZCBmaWxlIHdpdGhvdXQgaXRzIGNvbXByZXNzaW9uIGZpZWxkcyAob3IgdGhlIHJldmVyc2UpIGlzIG5vdCBvbmUgb2Ygb3Vyc1xuICAgIGlmIChjb21wcmVzc2VkICE9PSAobWF0Y2hbNV0gIT09IHVuZGVmaW5lZCkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcGlkOiArbWF0Y2hbMV0sXG4gICAgICAgIHByb2Nlc3NTdGFydFRpbWU6ICttYXRjaFsyXSxcbiAgICAgICAgdGhyZWFkSWQ6IG1hdGNoWzNdLFxuICAgICAgICBzdGFydFRpbWU6ICttYXRjaFs0XSxcbiAgICAgICAgZW5kVGltZTogbWF0Y2hbNV0gIT09IHVuZGVmaW5lZCAmJiArbWF0Y2hbNV0gfHwgdW5kZWZpbmVkLFxuICAgICAgICBlbnRyeUNvdW50OiBtYXRjaFs2XSAhPT0gdW5kZWZpbmVkICYmICttYXRjaFs2XSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGNvbXByZXNzZWQsXG4gICAgICAgIG9yaWdpbktleTogYHBpZCR7bWF0Y2hbMV19X2Jvcm4ke21hdGNoWzJdfV90aHJlYWQke21hdGNoWzNdfV9mcm9tJHttYXRjaFs0XX1gLFxuICAgIH07XG59XG5cbi8qKiBXaGV0aGVyIHRoZSBwaWQgaXMgYWxpdmUgQU5EIGlzIHRoZSBzYW1lIHByb2Nlc3MgaW5jYXJuYXRpb24gdGhlIGZpbGUgbmFtZSBkZXNjcmliZWQuIE9uIExpbnV4IC9wcm9jIGdpdmVzIHRoZSByZWFsIHN0YXJ0IHRpbWU7IGVsc2V3aGVyZSBhIGxpdmUgcGlkIGlzIGNvbnNlcnZhdGl2ZWx5IHRyZWF0ZWQgYXMgdGhlIHNhbWUgcHJvY2VzcyAobmV2ZXIgY29tcHJlc3MgdW5kZXIgYSBydW5uaW5nIHByb2Nlc3MpLiAqL1xuYXN5bmMgZnVuY3Rpb24gaXNQcm9jZXNzQWxpdmUocGlkOiBudW1iZXIsIHByb2Nlc3NTdGFydFRpbWU6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICAgIHByb2Nlc3Mua2lsbChwaWQsIDApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGxldCBzdGF0ID0gYXdhaXQgZnMucHJvbWlzZXMuc3RhdChgL3Byb2MvJHtwaWR9YCk7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhzdGF0LmN0aW1lTXMgLSBwcm9jZXNzU3RhcnRUaW1lKSA8IFBST0NFU1NfU1RBUlRfVE9MRVJBTkNFO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbi8qKlxuICogQSBzZWFyY2hlciBvdmVyIG9uZSBsb2cgZmlsZSAoYXMgcmVhZEZpbGVDb21wcmVzc2VkIHJldHVybnMgaXQgLSBhbHdheXMgTFo0KSB0aGF0IG5ldmVyIGRlY29kZXNcbiAqIHRoZSB3aG9sZSB0aGluZzogSlNPTiBlc2NhcGVzIGxpbmUgYnJlYWtzIGluc2lkZSBzdHJpbmdzLCBzbyB0aGUgb25seSBBQ1RVQUwgbGluZSBicmVha3MgaW4gdGhlXG4gKiBmaWxlIGFyZSB0aGUgc2VwYXJhdG9ycyBiZXR3ZWVuIGxvZyBzdGF0ZW1lbnRzIC0gYSBwbGFpbiBzdWJzdHJpbmcgc2VhcmNoIG92ZXIgdGhlIHJhdyB0ZXh0LFxuICogYm91bmRlZCBvdXQgdG8gdGhlIHN1cnJvdW5kaW5nIGxpbmUgYnJlYWtzLCBmaW5kcyBleGFjdGx5IHRoZSBtYXRjaGluZyBzdGF0ZW1lbnRzLCBhbmQgb25seSBUSE9TRVxuICogYXJlIGRlY29kZWQgYW5kIHJldHVybmVkIGFzIG9iamVjdHMuIEV2ZXJ5IHNlYXJjaCBzdHJpbmcgbXVzdCBhcHBlYXIgaW4gYSBzdGF0ZW1lbnQncyByYXcgSlNPTiBmb3JcbiAqIGl0IHRvIG1hdGNoIChzbyBzZWFyY2ggZm9yIHZhbHVlcyBhcyB0aGV5IGFyZSBlbmNvZGVkIC0gZS5nLiBxdW90ZWQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9nU2VhcmNoZXIoZGF0YTogQnVmZmVyKTogKHNlYXJjaGVzOiBzdHJpbmdbXSkgPT4gdW5rbm93bltdIHtcbiAgICBsZXQgdGV4dCA9IExaNC5kZWNvbXByZXNzKGRhdGEpLnRvU3RyaW5nKFwidXRmOFwiKTtcbiAgICByZXR1cm4gc2VhcmNoZXMgPT4ge1xuICAgICAgICBpZiAoIXNlYXJjaGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlIGF0IGxlYXN0IG9uZSBzZWFyY2ggc3RyaW5nIChhbiBlbXB0eSBzZWFyY2ggd291bGQganVzdCBiZSBkZWNvZGVMb2dGaWxlKWApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBlbnRyaWVzOiB1bmtub3duW10gPSBbXTtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGxldCBmb3VuZCA9IHRleHQuaW5kZXhPZihzZWFyY2hlc1swXSwgaW5kZXgpO1xuICAgICAgICAgICAgaWYgKGZvdW5kID09PSAtMSkgYnJlYWs7XG4gICAgICAgICAgICBsZXQgbGluZVN0YXJ0ID0gdGV4dC5sYXN0SW5kZXhPZihcIlxcblwiLCBmb3VuZCkgKyAxO1xuICAgICAgICAgICAgbGV0IGxpbmVFbmQgPSB0ZXh0LmluZGV4T2YoXCJcXG5cIiwgZm91bmQpO1xuICAgICAgICAgICAgaWYgKGxpbmVFbmQgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbGluZUVuZCA9IHRleHQubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUGFzdCB0aGlzIGxpbmUgZWl0aGVyIHdheSwgc28gc2V2ZXJhbCBtYXRjaGVzIGluc2lkZSBvbmUgc3RhdGVtZW50IHJldHVybiBpdCBvbmNlXG4gICAgICAgICAgICBpbmRleCA9IGxpbmVFbmQgKyAxO1xuICAgICAgICAgICAgbGV0IGxpbmUgPSB0ZXh0LnNsaWNlKGxpbmVTdGFydCwgbGluZUVuZCk7XG4gICAgICAgICAgICBsZXQgbWF0Y2hlc0FsbCA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGxldCBvdGhlciBvZiBzZWFyY2hlcy5zbGljZSgxKSkge1xuICAgICAgICAgICAgICAgIGlmICghbGluZS5pbmNsdWRlcyhvdGhlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlc0FsbCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW1hdGNoZXNBbGwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2goSlNPTi5wYXJzZShsaW5lKSk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBBIHRvcm4gZmluYWwgbGluZSAodGhlIHdyaXRlciBjcmFzaGVkIG1pZC1hcHBlbmQpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudHJpZXM7XG4gICAgfTtcbn1cblxuLyoqIERlY29kZXMgYSBsb2cgZmlsZSdzIGJ5dGVzIChhcyByZWFkRmlsZUNvbXByZXNzZWQgcmV0dXJucyB0aGVtIC0gYWx3YXlzIExaNCkgYmFjayBpbnRvIHRoZSBsb2dnZWQgb2JqZWN0cy4gQSB0b3JuIGZpbmFsIGxpbmUgKHRoZSB3cml0ZXIgY3Jhc2hlZCBtaWQtYXBwZW5kKSBpcyBza2lwcGVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUxvZ0ZpbGUoZGF0YTogQnVmZmVyKTogdW5rbm93bltdIHtcbiAgICBsZXQgdGV4dCA9IExaNC5kZWNvbXByZXNzKGRhdGEpLnRvU3RyaW5nKFwidXRmOFwiKTtcbiAgICBsZXQgZW50cmllczogdW5rbm93bltdID0gW107XG4gICAgZm9yIChsZXQgbGluZSBvZiB0ZXh0LnNwbGl0KFwiXFxuXCIpKSB7XG4gICAgICAgIGlmICghbGluZSkgY29udGludWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goSlNPTi5wYXJzZShsaW5lKSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVudHJpZXM7XG59XG5cbmV4cG9ydCBjbGFzcyBTdHJlYW1pbmdMb2dzIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzoge1xuICAgICAgICBmb2xkZXI6IHN0cmluZztcbiAgICAgICAgLyoqIEluY2x1ZGVkIGluIGV2ZXJ5IGZpbGUgbmFtZSAtIHNlZSBtaXNjL2h0dHBzL2NlcnRzLnRzIGdldE93blRocmVhZElkLiBQcm9jZXNzZXMgd2l0aG91dCBvbmUgd3JpdGUgXCJub25lXCIuICovXG4gICAgICAgIHRocmVhZElkPzogc3RyaW5nO1xuICAgICAgICBtYXhGaWxlQnl0ZXM/OiBudW1iZXI7XG4gICAgICAgIHRvdGFsTGltaXRCeXRlcz86IG51bWJlcjtcbiAgICB9KSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVNYWludGVuYW5jZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1N0YXJ0VGltZSA9IE1hdGgucm91bmQoRGF0ZS5ub3coKSAtIHByb2Nlc3MudXB0aW1lKCkgKiAxMDAwKTtcbiAgICBwcml2YXRlIHRocmVhZElkID0gKHRoaXMuY29uZmlnLnRocmVhZElkIHx8IFwibm9uZVwiKS5yZXBsYWNlKC9bXlxcdy1dL2csIFwiX1wiKTtcbiAgICBwcml2YXRlIHBlbmRpbmc6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBmbHVzaFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIG1haW50ZW5hbmNlVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICAgIC8vIFNlcmlhbGl6ZXMgZXZlcnl0aGluZyB0aGF0IHRvdWNoZXMgdGhlIGN1cnJlbnQgZmlsZSwgc28gYXBwZW5kcywgcm90YXRpb24sIGFuZCBpbi1tZW1vcnkgY29tcHJlc3Npb24gb2YgdGhlIGxpdmUgZmlsZSBuZXZlciBpbnRlcmxlYXZlXG4gICAgcHJpdmF0ZSB3cml0ZUNoYWluOiBQcm9taXNlPHZvaWQ+ID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgcHJpdmF0ZSBjdXJyZW50UGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgY3VycmVudEJ5dGVzID0gMDtcbiAgICBwcml2YXRlIGRpc3Bvc2VkID0gZmFsc2U7XG5cbiAgICAvKiogUXVldWVzIG9uZSBlbnRyeSAoYW55dGhpbmcgSlNPTi1zZXJpYWxpemFibGUpLiBOZXZlciB0aHJvd3MgLSBsb2dnaW5nIG11c3Qgbm90IHRha2UgZG93biB0aGUgY2FsbGVyLiAqL1xuICAgIHB1YmxpYyBsb2coZW50cnk6IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID49IE1BWF9QRU5ESU5HX0VOVFJJRVMpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgZGlzayBpcyBicm9rZW4gKGZsdXNoZXMgYXJlIGZhaWxpbmcpIC0gZHJvcHBpbmcgdGhlIG9sZGVzdCBiZWF0cyBncm93aW5nIGZvcmV2ZXJcbiAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmcuc2hpZnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGVuZGluZy5wdXNoKEpTT04uc3RyaW5naWZ5KGVudHJ5KSk7XG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlRmx1c2goKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBDb3VsZCBub3QgcXVldWUgYSBsb2cgZW50cnkgKCR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9KWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY2hlZHVsZUZsdXNoKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mbHVzaFRpbWVyICE9PSB1bmRlZmluZWQgfHwgdGhpcy5kaXNwb3NlZCkgcmV0dXJuO1xuICAgICAgICB0aGlzLmZsdXNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmx1c2hUaW1lciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5mbHVzaCgpLmNhdGNoKChlOiBFcnJvcikgPT4gY29uc29sZS53YXJuKGBGbHVzaGluZyBsb2dzIGluICR7dGhpcy5jb25maWcuZm9sZGVyfSBmYWlsZWQ6ICR7ZS5zdGFjayA/PyBlfWApKTtcbiAgICAgICAgfSwgRkxVU0hfREVMQVkpO1xuICAgICAgICAodGhpcy5mbHVzaFRpbWVyIGFzIHsgdW5yZWY/OiAoKSA9PiB2b2lkIH0pLnVucmVmPy4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLndyaXRlQ2hhaW4udGhlbigoKSA9PiB0aGlzLndyaXRlUGVuZGluZygpKTtcbiAgICAgICAgLy8gVGhlIGNoYWluIG9ubHkgc2VyaWFsaXplczsgYSBmYWlsdXJlIGJlbG9uZ3MgdG8gdGhlIGNhbGxlciB0aGF0IGFza2VkIGZvciB0aGlzIGZsdXNoLCBub3QgZXZlcnkgb25lIGFmdGVyIGl0XG4gICAgICAgIHRoaXMud3JpdGVDaGFpbiA9IHJlc3VsdC5jYXRjaCgoKSA9PiB7IH0pO1xuICAgICAgICBhd2FpdCByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB3cml0ZVBlbmRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5wZW5kaW5nLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICBsZXQgbGluZXMgPSB0aGlzLnBlbmRpbmc7XG4gICAgICAgIHRoaXMucGVuZGluZyA9IFtdO1xuICAgICAgICBsZXQgZGF0YSA9IGxpbmVzLmpvaW4oXCJcXG5cIikgKyBcIlxcblwiO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRQYXRoKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMubWtkaXIodGhpcy5jb25maWcuZm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAvLyBSb3VuZGVkLCBhcyBhIHNoaW1tZWQgRGF0ZS5ub3cgY2FuIHJldHVybiBmcmFjdGlvbmFsIG1pbGxpc2Vjb25kcywgYW5kIGEgXCIuXCIgaW4gdGhlIG5hbWUgYnJlYWtzIG5hbWUgcGFyc2luZyBmb3IgYW55IHJlYWRlciB3aXRob3V0IHRoZSBmcmFjdGlvbmFsLXRvbGVyYW50IHJlZ2V4XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UGF0aCA9IHBhdGguam9pbih0aGlzLmNvbmZpZy5mb2xkZXIsIGBwaWQke3Byb2Nlc3MucGlkfV9ib3JuJHt0aGlzLnByb2Nlc3NTdGFydFRpbWV9X3RocmVhZCR7dGhpcy50aHJlYWRJZH1fZnJvbSR7TWF0aC5yb3VuZChEYXRlLm5vdygpKX0ke1VOQ09NUFJFU1NFRF9FWFR9YCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Qnl0ZXMgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMuYXBwZW5kRmlsZSh0aGlzLmN1cnJlbnRQYXRoLCBkYXRhKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEJ5dGVzICs9IEJ1ZmZlci5ieXRlTGVuZ3RoKGRhdGEpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBsaW5lcy5jb25jYXQodGhpcy5wZW5kaW5nKTtcbiAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVGbHVzaCgpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jdXJyZW50Qnl0ZXMgPj0gKHRoaXMuY29uZmlnLm1heEZpbGVCeXRlcyB8fCBNQVhfRklMRV9CWVRFUykpIHtcbiAgICAgICAgICAgIGxldCBmaW5pc2hlZCA9IHRoaXMuY3VycmVudFBhdGg7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYXRoID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Qnl0ZXMgPSAwO1xuICAgICAgICAgICAgdm9pZCB0aGlzLmNvbXByZXNzRmlsZShmaW5pc2hlZCkuY2F0Y2goKGU6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gTGVmdCB1bmNvbXByZXNzZWQ6IG1haW50ZW5hbmNlIChvdXJzIGFmdGVyIGRlYXRoLCBvciBhbnkgcGVlcidzKSBjb21wcmVzc2VzIGl0IGxhdGVyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBDb21wcmVzc2luZyByb3RhdGVkIGxvZyAke2ZpbmlzaGVkfSBmYWlsZWQ6ICR7ZS5zdGFjayA/PyBlfWApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wcmVzc2VzIG9uZSBmaW5pc2hlZCBsb2cgZmlsZTogTFo0IGludG8gYSB0ZW1wIFNVQkZPTERFUiAobmV2ZXIgYSB0ZW1wIG5hbWUgaW4gdGhlIGxvZ1xuICAgICAqIGZvbGRlciBpdHNlbGYgLSBhIGNyYXNoZWQgd3JpdGUgbXVzdCBub3QgbGVhdmUgYSBjb3JydXB0IGZpbGUgd2hlcmUgdGhlIG1haW50ZW5hbmNlIHNjYW5zIGFyZSksXG4gICAgICogcmVuYW1lZCBpbnRvIHBsYWNlIChzYW1lIGRyaXZlLCBzbyB0aGUgcmVuYW1lIGlzIGF0b21pYyksIHZlcmlmaWVkLCBhbmQgb25seSBUSEVOIGlzIHRoZVxuICAgICAqIG9yaWdpbmFsIGRlbGV0ZWQgLSBhdCBubyBwb2ludCBpcyB0aGUgZGF0YSBpbiBmZXdlciB0aGFuIG9uZSBjb21wbGV0ZSBmaWxlLlxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgY29tcHJlc3NGaWxlKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IG5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKTtcbiAgICAgICAgbGV0IHBhcnNlZCA9IHBhcnNlTG9nRmlsZU5hbWUobmFtZSk7XG4gICAgICAgIGlmICghcGFyc2VkIHx8IHBhcnNlZC5jb21wcmVzc2VkKSByZXR1cm47XG4gICAgICAgIGxldCByYXcgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShmaWxlUGF0aCk7XG4gICAgICAgIGxldCBlbnRyeUNvdW50ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChyYXdbaV0gPT09IDEwKSBlbnRyeUNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvbXByZXNzZWQgPSBMWjQuY29tcHJlc3MocmF3KTtcbiAgICAgICAgbGV0IGlkID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgMTApO1xuICAgICAgICBsZXQgZmluYWxOYW1lID0gYCR7cGFyc2VkLm9yaWdpbktleX1fdG8ke01hdGgucm91bmQoRGF0ZS5ub3coKSl9X2NvdW50JHtlbnRyeUNvdW50fV9pZCR7aWR9JHtDT01QUkVTU0VEX0VYVH1gO1xuICAgICAgICBsZXQgdGVtcERpciA9IHBhdGguam9pbih0aGlzLmNvbmZpZy5mb2xkZXIsIFwiLnRtcFwiKTtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMubWtkaXIodGVtcERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIGxldCB0ZW1wUGF0aCA9IHBhdGguam9pbih0ZW1wRGlyLCBmaW5hbE5hbWUpO1xuICAgICAgICBsZXQgZmluYWxQYXRoID0gcGF0aC5qb2luKHRoaXMuY29uZmlnLmZvbGRlciwgZmluYWxOYW1lKTtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKHRlbXBQYXRoLCBjb21wcmVzc2VkKTtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMucmVuYW1lKHRlbXBQYXRoLCBmaW5hbFBhdGgpO1xuICAgICAgICAvLyBQYXJhbm9pYSBiZWZvcmUgZGVsZXRpbmcgdGhlIG9ubHkgb3RoZXIgY29weVxuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5zdGF0KGZpbmFsUGF0aCk7XG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLnVubGluayhmaWxlUGF0aCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGBDb21wcmVzc2VkIGxvZyAke25hbWV9IC0+ICR7ZmluYWxOYW1lfSAoJHtyYXcubGVuZ3RofSAtPiAke2NvbXByZXNzZWQubGVuZ3RofSBieXRlcywgJHtlbnRyeUNvdW50fSBlbnRyaWVzKWApO1xuICAgIH1cblxuICAgIC8vIOKUgOKUgCBsaXN0aW5nIC8gcmVhZGluZyDilIDilIBcblxuICAgIHB1YmxpYyBhc3luYyBsaXN0RmlsZXMoKTogUHJvbWlzZTxMb2dGaWxlSW5mb1tdPiB7XG4gICAgICAgIGxldCBuYW1lczogc3RyaW5nW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuYW1lcyA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRkaXIodGhpcy5jb25maWcuZm9sZGVyKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKChlIGFzIHsgY29kZT86IHN0cmluZyB9KS5jb2RlID09PSBcIkVOT0VOVFwiKSByZXR1cm4gW107XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaWxlczogTG9nRmlsZUluZm9bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgICAgICAgICBsZXQgcGFyc2VkID0gcGFyc2VMb2dGaWxlTmFtZShuYW1lKTtcbiAgICAgICAgICAgIGlmICghcGFyc2VkKSBjb250aW51ZTtcbiAgICAgICAgICAgIGxldCBzdGF0ID0gYXdhaXQgZnMucHJvbWlzZXMuc3RhdChwYXRoLmpvaW4odGhpcy5jb25maWcuZm9sZGVyLCBuYW1lKSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIGlmICghc3RhdCkgY29udGludWU7XG4gICAgICAgICAgICBsZXQgYWN0aXZlID0gIXBhcnNlZC5jb21wcmVzc2VkICYmIGF3YWl0IGlzUHJvY2Vzc0FsaXZlKHBhcnNlZC5waWQsIHBhcnNlZC5wcm9jZXNzU3RhcnRUaW1lKTtcbiAgICAgICAgICAgIGZpbGVzLnB1c2goe1xuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogc3RhdC5zaXplLFxuICAgICAgICAgICAgICAgIHBpZDogcGFyc2VkLnBpZCxcbiAgICAgICAgICAgICAgICBwcm9jZXNzU3RhcnRUaW1lOiBwYXJzZWQucHJvY2Vzc1N0YXJ0VGltZSxcbiAgICAgICAgICAgICAgICB0aHJlYWRJZDogcGFyc2VkLnRocmVhZElkLFxuICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogcGFyc2VkLnN0YXJ0VGltZSxcbiAgICAgICAgICAgICAgICBlbmRUaW1lOiBwYXJzZWQuZW5kVGltZSxcbiAgICAgICAgICAgICAgICBlbnRyeUNvdW50OiBwYXJzZWQuZW50cnlDb3VudCxcbiAgICAgICAgICAgICAgICBjb21wcmVzc2VkOiBwYXJzZWQuY29tcHJlc3NlZCxcbiAgICAgICAgICAgICAgICBhY3RpdmUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzb3J0KGZpbGVzLCB4ID0+IHguc3RhcnRUaW1lKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzO1xuICAgIH1cblxuICAgIC8qKiBPbmUgZmlsZSdzIGJ5dGVzLCBBTFdBWVMgTFo0LWNvbXByZXNzZWQ6IGNvbXByZXNzZWQgZmlsZXMgYXJlIHNlbnQgYXMtaXMsIGEgc3RpbGwtc3RyZWFtaW5nIGZpbGUgaXMgZmx1c2hlZCBhbmQgY29tcHJlc3NlZCBpbiBtZW1vcnkgKHNtYWxsZXIgb3ZlciB0aGUgbmV0d29yazsgZGVjb2RlTG9nRmlsZSBoYW5kbGVzIGJvdGggaWRlbnRpY2FsbHkpLiAqL1xuICAgIHB1YmxpYyBhc3luYyByZWFkRmlsZUNvbXByZXNzZWQobmFtZTogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICAgICAgbGV0IHBhcnNlZCA9IHBhcnNlTG9nRmlsZU5hbWUobmFtZSk7XG4gICAgICAgIGlmICghcGFyc2VkIHx8IG5hbWUuaW5jbHVkZXMoXCIvXCIpIHx8IG5hbWUuaW5jbHVkZXMoXCJcXFxcXCIpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBhIGxvZyBmaWxlIG5hbWU6ICR7SlNPTi5zdHJpbmdpZnkobmFtZS5zbGljZSgwLCAyMDApKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5jb25maWcuZm9sZGVyLCBuYW1lKTtcbiAgICAgICAgaWYgKHBhcnNlZC5jb21wcmVzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoZmlsZVBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZsdXNoIHNvIG91ciBvd24gbGl2ZSBmaWxlIGluY2x1ZGVzIGV2ZXJ5dGhpbmcgbG9nZ2VkIHVwIHRvIG5vd1xuICAgICAgICBhd2FpdCB0aGlzLmZsdXNoKCk7XG4gICAgICAgIHJldHVybiBMWjQuY29tcHJlc3MoYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoZmlsZVBhdGgpKTtcbiAgICB9XG5cbiAgICAvLyDilIDilIAgbWFpbnRlbmFuY2Ug4pSA4pSAXG5cbiAgICBwcml2YXRlIHNjaGVkdWxlTWFpbnRlbmFuY2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc3Bvc2VkKSByZXR1cm47XG4gICAgICAgIGxldCB3YWl0ID0gTUFJTlRFTkFOQ0VfTUlOX0lOVEVSVkFMICsgTWF0aC5yYW5kb20oKSAqIChNQUlOVEVOQU5DRV9NQVhfSU5URVJWQUwgLSBNQUlOVEVOQU5DRV9NSU5fSU5URVJWQUwpO1xuICAgICAgICB0aGlzLm1haW50ZW5hbmNlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5ydW5NYWludGVuYW5jZSgpLmNhdGNoKChlOiBFcnJvcikgPT4gY29uc29sZS53YXJuKGBMb2cgbWFpbnRlbmFuY2Ugb2YgJHt0aGlzLmNvbmZpZy5mb2xkZXJ9IGZhaWxlZDogJHtlLnN0YWNrID8/IGV9YCkpLmZpbmFsbHkoKCkgPT4gdGhpcy5zY2hlZHVsZU1haW50ZW5hbmNlKCkpO1xuICAgICAgICB9LCB3YWl0KTtcbiAgICAgICAgKHRoaXMubWFpbnRlbmFuY2VUaW1lciBhcyB7IHVucmVmPzogKCkgPT4gdm9pZCB9KS51bnJlZj8uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hhcmVkIHVwa2VlcCBvZiB0aGUgZm9sZGVyIC0gZXZlcnkgcHJvY2VzcyB1c2luZyBpdCBydW5zIHRoaXMsIHNvIG5vdGhpbmcgZGVwZW5kcyBvbiBhbnkgb25lXG4gICAgICogcHJvY2VzcyBzdXJ2aXZpbmc6IGRlYWQgcHJvY2Vzc2VzJyB1bmNvbXByZXNzZWQgZmlsZXMgYXJlIGNvbXByZXNzZWQgZm9yIHRoZW07IGR1cGxpY2F0ZVxuICAgICAqIGNvbXByZXNzaW9ucyBvZiBvbmUgc3RyZWFtICh0d28gbWFpbnRhaW5lcnMgcmFjaW5nKSBhcmUgcmVzb2x2ZWQgYnkga2VlcGluZyB0aGUgT0xERVNUIGNvcHk7XG4gICAgICogYW4gdW5jb21wcmVzc2VkIG9yaWdpbmFsIHdob3NlIGNvbXByZXNzaW9uIGFscmVhZHkgZXhpc3RzIGlzIGRlbGV0ZWQgKGl0cyBjb21wcmVzc29yIGRpZWRcbiAgICAgKiBiZXR3ZWVuIHJlbmFtZSBhbmQgdW5saW5rKTsgYW5kIHRoZSBmb2xkZXIncyB0b3RhbCBzaXplIGlzIGJyb3VnaHQgdW5kZXIgaXRzIGJ1ZGdldCBieVxuICAgICAqIGRlbGV0aW5nIHRoZSBvbGRlc3QgZmlsZXMuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHJ1bk1haW50ZW5hbmNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgbmFtZXM6IHN0cmluZ1tdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmFtZXMgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkZGlyKHRoaXMuY29uZmlnLmZvbGRlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmICgoZSBhcyB7IGNvZGU/OiBzdHJpbmcgfSkuY29kZSA9PT0gXCJFTk9FTlRcIikgcmV0dXJuO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcGFyc2VkQnlOYW1lID0gbmV3IE1hcDxzdHJpbmcsIFBhcnNlZE5hbWU+KCk7XG4gICAgICAgIGZvciAobGV0IG5hbWUgb2YgbmFtZXMpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWQgPSBwYXJzZUxvZ0ZpbGVOYW1lKG5hbWUpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZCkgcGFyc2VkQnlOYW1lLnNldChuYW1lLCBwYXJzZWQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb21wcmVzc2VkT3JpZ2lucyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcbiAgICAgICAgZm9yIChsZXQgW25hbWUsIHBhcnNlZF0gb2YgcGFyc2VkQnlOYW1lKSB7XG4gICAgICAgICAgICBpZiAoIXBhcnNlZC5jb21wcmVzc2VkKSBjb250aW51ZTtcbiAgICAgICAgICAgIGxldCBsaXN0ID0gY29tcHJlc3NlZE9yaWdpbnMuZ2V0KHBhcnNlZC5vcmlnaW5LZXkpO1xuICAgICAgICAgICAgaWYgKCFsaXN0KSB7XG4gICAgICAgICAgICAgICAgbGlzdCA9IFtdO1xuICAgICAgICAgICAgICAgIGNvbXByZXNzZWRPcmlnaW5zLnNldChwYXJzZWQub3JpZ2luS2V5LCBsaXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpc3QucHVzaChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEdXBsaWNhdGUgY29tcHJlc3Npb25zOiBrZWVwIHRoZSBvbGRlc3QgKGZpcnN0IHdyaXR0ZW4pLCBkZWxldGUgdGhlIHJlc3RcbiAgICAgICAgZm9yIChsZXQgW29yaWdpbiwgbGlzdF0gb2YgY29tcHJlc3NlZE9yaWdpbnMpIHtcbiAgICAgICAgICAgIGlmIChsaXN0Lmxlbmd0aCA8IDIpIGNvbnRpbnVlO1xuICAgICAgICAgICAgc29ydChsaXN0LCBuYW1lID0+IHBhcnNlZEJ5TmFtZS5nZXQobmFtZSk/LmVuZFRpbWUgfHwgMCk7XG4gICAgICAgICAgICBmb3IgKGxldCBkdXBsaWNhdGUgb2YgbGlzdC5zbGljZSgxKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEZWxldGluZyBkdXBsaWNhdGUgY29tcHJlc3NlZCBsb2cgJHtkdXBsaWNhdGV9IChhbm90aGVyIG1haW50YWluZXIgY29tcHJlc3NlZCAke29yaWdpbn0gZmlyc3QsIGtlZXBpbmcgJHtsaXN0WzBdfSlgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy51bmxpbmsocGF0aC5qb2luKHRoaXMuY29uZmlnLmZvbGRlciwgZHVwbGljYXRlKSkuY2F0Y2goKCkgPT4geyB9KTtcbiAgICAgICAgICAgICAgICBwYXJzZWRCeU5hbWUuZGVsZXRlKGR1cGxpY2F0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgW25hbWUsIHBhcnNlZF0gb2YgcGFyc2VkQnlOYW1lKSB7XG4gICAgICAgICAgICBpZiAocGFyc2VkLmNvbXByZXNzZWQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgbGV0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMuY29uZmlnLmZvbGRlciwgbmFtZSk7XG4gICAgICAgICAgICBpZiAoZmlsZVBhdGggPT09IHRoaXMuY3VycmVudFBhdGgpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKGNvbXByZXNzZWRPcmlnaW5zLmhhcyhwYXJzZWQub3JpZ2luS2V5KSkge1xuICAgICAgICAgICAgICAgIC8vIEFscmVhZHkgY29tcHJlc3NlZCBieSBzb21lb25lIHdob3NlIGNsZWFudXAgZGllZCBiZXR3ZWVuIHJlbmFtZSBhbmQgdW5saW5rXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYERlbGV0aW5nIHVuY29tcHJlc3NlZCBsb2cgJHtuYW1lfTogaXRzIGNvbXByZXNzZWQgdmVyc2lvbiBhbHJlYWR5IGV4aXN0c2ApO1xuICAgICAgICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLnVubGluayhmaWxlUGF0aCkuY2F0Y2goKCkgPT4geyB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEEgbGl2ZSBwcm9jZXNzIG93bnMgaXRzIHVuY29tcHJlc3NlZCBmaWxlOyBvbmx5IGEgREVBRCBwcm9jZXNzJ3MgZmlsZXMgYXJlIGNvbXByZXNzZWQgZm9yIGl0IChvdXIgb3duIHBpZCBhbHdheXMgcmVhZHMgYXMgYWxpdmUsIHdoaWNoIGNvcnJlY3RseSBwcm90ZWN0cyBvdXIgY3VycmVudCBmaWxlIC0gb3VyIHJvdGF0ZWQgbGVmdG92ZXJzIHdlcmUgZXhjbHVkZWQgYWJvdmUgb25seSBpZiBjdXJyZW50LCBzbyBjb21wcmVzcyB0aG9zZSB0b28pXG4gICAgICAgICAgICBpZiAocGFyc2VkLnBpZCAhPT0gcHJvY2Vzcy5waWQgJiYgYXdhaXQgaXNQcm9jZXNzQWxpdmUocGFyc2VkLnBpZCwgcGFyc2VkLnByb2Nlc3NTdGFydFRpbWUpKSBjb250aW51ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21wcmVzc0ZpbGUoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgQ29tcHJlc3NpbmcgZGVhZCBwcm9jZXNzJ3MgbG9nICR7bmFtZX0gZmFpbGVkICh0aGUgbmV4dCBtYWludGVuYW5jZSBwYXNzIHJldHJpZXMpOiAkeyhlIGFzIEVycm9yKS5zdGFjayA/PyBlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuZW5mb3JjZVRvdGFsTGltaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGVuZm9yY2VUb3RhbExpbWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgbGltaXQgPSB0aGlzLmNvbmZpZy50b3RhbExpbWl0Qnl0ZXMgfHwgVE9UQUxfTElNSVRfQllURVM7XG4gICAgICAgIGxldCBmaWxlcyA9IGF3YWl0IHRoaXMubGlzdEZpbGVzKCk7XG4gICAgICAgIGxldCB0b3RhbCA9IGZpbGVzLnJlZHVjZSgoc3VtLCB4KSA9PiBzdW0gKyB4LnNpemUsIDApO1xuICAgICAgICBpZiAodG90YWwgPD0gbGltaXQpIHJldHVybjtcbiAgICAgICAgLy8gT2xkZXN0IGZpcnN0LCBieSB0aGUgZW5kIG9mIHdoYXQgdGhleSBjb3ZlcjsgbGl2ZSBmaWxlcyBsYXN0ICh0aGV5IGFyZSB0aGUgbmV3ZXN0IGRhdGEgYnkgZGVmaW5pdGlvbilcbiAgICAgICAgbGV0IGRlbGV0YWJsZSA9IGZpbGVzLmZpbHRlcih4ID0+ICF4LmFjdGl2ZSk7XG4gICAgICAgIHNvcnQoZGVsZXRhYmxlLCB4ID0+IHguZW5kVGltZSB8fCB4LnN0YXJ0VGltZSk7XG4gICAgICAgIGxldCBkZWxldGVkID0gMDtcbiAgICAgICAgbGV0IGRlbGV0ZWRCeXRlcyA9IDA7XG4gICAgICAgIGZvciAobGV0IGZpbGUgb2YgZGVsZXRhYmxlKSB7XG4gICAgICAgICAgICBpZiAodG90YWwgPD0gbGltaXQpIGJyZWFrO1xuICAgICAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMudW5saW5rKHBhdGguam9pbih0aGlzLmNvbmZpZy5mb2xkZXIsIGZpbGUubmFtZSkpLmNhdGNoKCgpID0+IHsgfSk7XG4gICAgICAgICAgICB0b3RhbCAtPSBmaWxlLnNpemU7XG4gICAgICAgICAgICBkZWxldGVkKys7XG4gICAgICAgICAgICBkZWxldGVkQnl0ZXMgKz0gZmlsZS5zaXplO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2dzIGluICR7dGhpcy5jb25maWcuZm9sZGVyfSBvdXRncmV3IHRoZWlyICR7bGltaXR9IGJ5dGUgYnVkZ2V0OiBkZWxldGVkIHRoZSAke2RlbGV0ZWR9IG9sZGVzdCBmaWxlcyAoJHtkZWxldGVkQnl0ZXN9IGJ5dGVzKSwgJHt0b3RhbH0gYnl0ZXMgcmVtYWluYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzcG9zZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5mbHVzaFRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5mbHVzaFRpbWVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tYWludGVuYW5jZVRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5tYWludGVuYW5jZVRpbWVyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
399
|
-
/* _JS_SOURCE_HASH = "
|
|
399
|
+
/* _JS_SOURCE_HASH = "6d43504dad0fff83e9a9064918d232e38b5e1d4eae13b22e483b29392aa70d7e"; */
|