@gomomento/sdk-core 1.59.0 → 1.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/clients/IVectorIndexClient.d.ts +2 -1
- package/dist/src/clients/IVectorIndexClient.js +1 -1
- package/dist/src/internal/clients/vector/AbstractVectorIndexClient.d.ts +13 -1
- package/dist/src/internal/clients/vector/AbstractVectorIndexClient.js +15 -1
- package/dist/src/internal/clients/vector/IVectorIndexDataClient.d.ts +2 -1
- package/dist/src/internal/clients/vector/IVectorIndexDataClient.js +1 -1
- package/dist/src/messages/responses/vector/index.d.ts +1 -0
- package/dist/src/messages/responses/vector/index.js +3 -2
- package/dist/src/messages/responses/vector/vector-count-items.d.ts +70 -0
- package/dist/src/messages/responses/vector/vector-count-items.js +72 -0
- package/package.json +1 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
import { IVectorIndexControlClient } from '../internal/clients';
|
2
|
-
import { VectorUpsertItemBatch, VectorDeleteItemBatch, VectorSearch, VectorSearchAndFetchVectors, VectorGetItemBatch, VectorGetItemMetadataBatch } from '../messages/responses/vector';
|
2
|
+
import { VectorCountItems, VectorUpsertItemBatch, VectorDeleteItemBatch, VectorSearch, VectorSearchAndFetchVectors, VectorGetItemBatch, VectorGetItemMetadataBatch } from '../messages/responses/vector';
|
3
3
|
import { VectorIndexItem } from '../messages/vector-index';
|
4
4
|
/**
|
5
5
|
* A special value to request all metadata fields.
|
@@ -28,6 +28,7 @@ export interface SearchOptions {
|
|
28
28
|
scoreThreshold?: number;
|
29
29
|
}
|
30
30
|
export interface IVectorIndexClient extends IVectorIndexControlClient {
|
31
|
+
countItems(indexName: string): Promise<VectorCountItems.Response>;
|
31
32
|
upsertItemBatch(indexName: string, items: Array<VectorIndexItem>): Promise<VectorUpsertItemBatch.Response>;
|
32
33
|
search(indexName: string, queryVector: Array<number>, options?: SearchOptions): Promise<VectorSearch.Response>;
|
33
34
|
searchAndFetchVectors(indexName: string, queryVector: Array<number>, options?: SearchOptions): Promise<VectorSearchAndFetchVectors.Response>;
|
@@ -5,4 +5,4 @@ exports.ALL_VECTOR_METADATA = void 0;
|
|
5
5
|
* A special value to request all metadata fields.
|
6
6
|
*/
|
7
7
|
exports.ALL_VECTOR_METADATA = Symbol('ALL_VECTOR_METADATA');
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVZlY3RvckluZGV4Q2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudHMvSVZlY3RvckluZGV4Q2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVlBOztHQUVHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SVZlY3RvckluZGV4Q29udHJvbENsaWVudH0gZnJvbSAnLi4vaW50ZXJuYWwvY2xpZW50cyc7XG5pbXBvcnQge1xuICBWZWN0b3JDb3VudEl0ZW1zLFxuICBWZWN0b3JVcHNlcnRJdGVtQmF0Y2gsXG4gIFZlY3RvckRlbGV0ZUl0ZW1CYXRjaCxcbiAgVmVjdG9yU2VhcmNoLFxuICBWZWN0b3JTZWFyY2hBbmRGZXRjaFZlY3RvcnMsXG4gIFZlY3RvckdldEl0ZW1CYXRjaCxcbiAgVmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2gsXG59IGZyb20gJy4uL21lc3NhZ2VzL3Jlc3BvbnNlcy92ZWN0b3InO1xuaW1wb3J0IHtWZWN0b3JJbmRleEl0ZW19IGZyb20gJy4uL21lc3NhZ2VzL3ZlY3Rvci1pbmRleCc7XG5cbi8qKlxuICogQSBzcGVjaWFsIHZhbHVlIHRvIHJlcXVlc3QgYWxsIG1ldGFkYXRhIGZpZWxkcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEFMTF9WRUNUT1JfTUVUQURBVEEgPSBTeW1ib2woJ0FMTF9WRUNUT1JfTUVUQURBVEEnKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgc2VhcmNoIG9wZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcmVzdWx0cyB0byByZXR1cm4uIERlZmF1bHRzIHRvIDEwLlxuICAgKi9cbiAgdG9wSz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtZXRhZGF0YSBmaWVsZHMgdG8gcmV0dXJuIHdpdGggZWFjaCByZXN1bHQsXG4gICAqIG9yIGEgdmFsdWUgaW5kaWNhdGluZyBhbGwgbWV0YWRhdGEgc2hvdWxkIGJlIHJldHVybmVkLiBJZiBub3QgcHJvdmlkZWQsIG5vIG1ldGFkYXRhIGlzIHJldHVybmVkLiBEZWZhdWx0cyB0byBOb25lLlxuICAgKi9cbiAgbWV0YWRhdGFGaWVsZHM/OiBBcnJheTxzdHJpbmc+IHwgdHlwZW9mIEFMTF9WRUNUT1JfTUVUQURBVEE7XG4gIC8qKlxuICAgKiBBIHNjb3JlIHRocmVzaG9sZCB0byBmaWx0ZXIgcmVzdWx0cyBieS4gVGhlIHRocmVzaG9sZCBpcyBleGNsdXNpdmUuIERlZmF1bHRzIHRvIG5vIHRocmVzaG9sZC5cbiAgICogLSBGb3IgY29zaW5lIHNpbWlsYXJpdHkgYW5kIGlubmVyIHByb2R1Y3QsIHNjb3JlcyBsb3dlciB0aGFuIHRoZSB0aHJlc2hvbGRcbiAgICogICBhcmUgZXhjbHVkZWQuXG4gICAqIC0gRm9yIGV1Y2xpZGVhbiBzaW1pbGFyaXR5LCBzY29yZXMgaGlnaGVyIHRoYW4gdGhlIHRocmVzaG9sZFxuICAgKiAgIGFyZSBleGNsdWRlZC5cbiAgICovXG4gIHNjb3JlVGhyZXNob2xkPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElWZWN0b3JJbmRleENsaWVudCBleHRlbmRzIElWZWN0b3JJbmRleENvbnRyb2xDbGllbnQge1xuICBjb3VudEl0ZW1zKGluZGV4TmFtZTogc3RyaW5nKTogUHJvbWlzZTxWZWN0b3JDb3VudEl0ZW1zLlJlc3BvbnNlPjtcbiAgdXBzZXJ0SXRlbUJhdGNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIGl0ZW1zOiBBcnJheTxWZWN0b3JJbmRleEl0ZW0+XG4gICk6IFByb21pc2U8VmVjdG9yVXBzZXJ0SXRlbUJhdGNoLlJlc3BvbnNlPjtcblxuICBzZWFyY2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgcXVlcnlWZWN0b3I6IEFycmF5PG51bWJlcj4sXG4gICAgb3B0aW9ucz86IFNlYXJjaE9wdGlvbnNcbiAgKTogUHJvbWlzZTxWZWN0b3JTZWFyY2guUmVzcG9uc2U+O1xuXG4gIHNlYXJjaEFuZEZldGNoVmVjdG9ycyhcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBxdWVyeVZlY3RvcjogQXJyYXk8bnVtYmVyPixcbiAgICBvcHRpb25zPzogU2VhcmNoT3B0aW9uc1xuICApOiBQcm9taXNlPFZlY3RvclNlYXJjaEFuZEZldGNoVmVjdG9ycy5SZXNwb25zZT47XG5cbiAgZGVsZXRlSXRlbUJhdGNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIGlkczogQXJyYXk8c3RyaW5nPlxuICApOiBQcm9taXNlPFZlY3RvckRlbGV0ZUl0ZW1CYXRjaC5SZXNwb25zZT47XG5cbiAgZ2V0SXRlbUJhdGNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIGlkczogQXJyYXk8c3RyaW5nPlxuICApOiBQcm9taXNlPFZlY3RvckdldEl0ZW1CYXRjaC5SZXNwb25zZT47XG5cbiAgZ2V0SXRlbU1ldGFkYXRhQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgaWRzOiBBcnJheTxzdHJpbmc+LFxuICAgIG1ldGFkYXRhRmllbGRzPzogQXJyYXk8c3RyaW5nPlxuICApOiBQcm9taXNlPFZlY3RvckdldEl0ZW1NZXRhZGF0YUJhdGNoLlJlc3BvbnNlPjtcbn1cbiJdfQ==
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { CreateVectorIndex, DeleteVectorIndex, ListVectorIndexes, VectorUpsertItemBatch, VectorSearch, VectorSearchAndFetchVectors, VectorDeleteItemBatch, VectorGetItemBatch, VectorGetItemMetadataBatch } from '../../..';
|
1
|
+
import { CreateVectorIndex, DeleteVectorIndex, ListVectorIndexes, VectorCountItems, VectorUpsertItemBatch, VectorSearch, VectorSearchAndFetchVectors, VectorDeleteItemBatch, VectorGetItemBatch, VectorGetItemMetadataBatch } from '../../..';
|
2
2
|
import { IVectorIndexClient, SearchOptions } from '../../../clients/IVectorIndexClient';
|
3
3
|
import { IVectorIndexControlClient, VectorSimilarityMetric } from './IVectorIndexControlClient';
|
4
4
|
import { VectorIndexItem } from '../../../messages/vector-index';
|
@@ -49,6 +49,18 @@ export declare abstract class AbstractVectorIndexClient implements IVectorIndexC
|
|
49
49
|
* {@link DeleteVectorIndex.Error} on error.
|
50
50
|
*/
|
51
51
|
deleteIndex(indexName: string): Promise<DeleteVectorIndex.Response>;
|
52
|
+
/**
|
53
|
+
* Counts the number of items in a vector index.
|
54
|
+
*
|
55
|
+
* Note that if the index does not exist, an error with
|
56
|
+
* {@link MomentoErrorCode} `NOT_FOUND` error will be returned.
|
57
|
+
*
|
58
|
+
* @param indexName - Name of the index to count the items in.
|
59
|
+
* @returns {Promise<VectorCountItems.Response>} -
|
60
|
+
* {@link VectorCountItems.Success} on success.
|
61
|
+
* {@link VectorCountItems.Error} on error.
|
62
|
+
*/
|
63
|
+
countItems(indexName: string): Promise<VectorCountItems.Response>;
|
52
64
|
/**
|
53
65
|
* Upserts a batch of items into a vector index.
|
54
66
|
*
|
@@ -54,6 +54,20 @@ class AbstractVectorIndexClient {
|
|
54
54
|
async deleteIndex(indexName) {
|
55
55
|
return await this.controlClient.deleteIndex(indexName);
|
56
56
|
}
|
57
|
+
/**
|
58
|
+
* Counts the number of items in a vector index.
|
59
|
+
*
|
60
|
+
* Note that if the index does not exist, an error with
|
61
|
+
* {@link MomentoErrorCode} `NOT_FOUND` error will be returned.
|
62
|
+
*
|
63
|
+
* @param indexName - Name of the index to count the items in.
|
64
|
+
* @returns {Promise<VectorCountItems.Response>} -
|
65
|
+
* {@link VectorCountItems.Success} on success.
|
66
|
+
* {@link VectorCountItems.Error} on error.
|
67
|
+
*/
|
68
|
+
async countItems(indexName) {
|
69
|
+
return await this.dataClient.countItems(indexName);
|
70
|
+
}
|
57
71
|
/**
|
58
72
|
* Upserts a batch of items into a vector index.
|
59
73
|
*
|
@@ -145,4 +159,4 @@ class AbstractVectorIndexClient {
|
|
145
159
|
}
|
146
160
|
}
|
147
161
|
exports.AbstractVectorIndexClient = AbstractVectorIndexClient;
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RWZWN0b3JJbmRleENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9jbGllbnRzL3ZlY3Rvci9BYnN0cmFjdFZlY3RvckluZGV4Q2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXNCQSxNQUFzQix5QkFBeUI7SUFNN0MsWUFDRSxhQUF3QyxFQUN4QyxVQUFrQztRQUVsQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BdUJHO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FDdEIsU0FBaUIsRUFDakIsYUFBcUIsRUFDckIsZ0JBQXlDO1FBRXpDLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FDekMsU0FBUyxFQUNULGFBQWEsRUFDYixnQkFBZ0IsQ0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsV0FBVztRQUN0QixPQUFPLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxXQUFXLENBQ3RCLFNBQWlCO1FBRWpCLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxLQUFLLENBQUMsZUFBZSxDQUMxQixTQUFpQixFQUNqQixLQUE2QjtRQUU3QixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQ2pCLFNBQWlCLEVBQ2pCLFdBQTBCLEVBQzFCLE9BQXVCO1FBRXZCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSSxLQUFLLENBQUMscUJBQXFCLENBQ2hDLFNBQWlCLEVBQ2pCLFdBQXFCLEVBQ3JCLE9BQW1DO1FBRW5DLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUNoRCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLEtBQUssQ0FBQyxlQUFlLENBQzFCLFNBQWlCLEVBQ2pCLEdBQWtCO1FBRWxCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLFlBQVksQ0FDdkIsU0FBaUIsRUFDakIsR0FBYTtRQUViLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLG9CQUFvQixDQUMvQixTQUFpQixFQUNqQixHQUFhO1FBRWIsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Q0FDRjtBQWpNRCw4REFpTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDcmVhdGVWZWN0b3JJbmRleCxcbiAgRGVsZXRlVmVjdG9ySW5kZXgsXG4gIExpc3RWZWN0b3JJbmRleGVzLFxuICBWZWN0b3JVcHNlcnRJdGVtQmF0Y2gsXG4gIFZlY3RvclNlYXJjaCxcbiAgVmVjdG9yU2VhcmNoQW5kRmV0Y2hWZWN0b3JzLFxuICBWZWN0b3JEZWxldGVJdGVtQmF0Y2gsXG4gIFZlY3RvckdldEl0ZW1CYXRjaCxcbiAgVmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2gsXG59IGZyb20gJy4uLy4uLy4uJztcbmltcG9ydCB7XG4gIElWZWN0b3JJbmRleENsaWVudCxcbiAgU2VhcmNoT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vLi4vY2xpZW50cy9JVmVjdG9ySW5kZXhDbGllbnQnO1xuaW1wb3J0IHtcbiAgSVZlY3RvckluZGV4Q29udHJvbENsaWVudCxcbiAgVmVjdG9yU2ltaWxhcml0eU1ldHJpYyxcbn0gZnJvbSAnLi9JVmVjdG9ySW5kZXhDb250cm9sQ2xpZW50JztcbmltcG9ydCB7VmVjdG9ySW5kZXhJdGVtfSBmcm9tICcuLi8uLi8uLi9tZXNzYWdlcy92ZWN0b3ItaW5kZXgnO1xuaW1wb3J0IHtJVmVjdG9ySW5kZXhEYXRhQ2xpZW50fSBmcm9tICcuL0lWZWN0b3JJbmRleERhdGFDbGllbnQnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RWZWN0b3JJbmRleENsaWVudFxuICBpbXBsZW1lbnRzIElWZWN0b3JJbmRleENsaWVudCwgSVZlY3RvckluZGV4RGF0YUNsaWVudFxue1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udHJvbENsaWVudDogSVZlY3RvckluZGV4Q29udHJvbENsaWVudDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGFDbGllbnQ6IElWZWN0b3JJbmRleERhdGFDbGllbnQ7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIGNvbnRyb2xDbGllbnQ6IElWZWN0b3JJbmRleENvbnRyb2xDbGllbnQsXG4gICAgZGF0YUNsaWVudDogSVZlY3RvckluZGV4RGF0YUNsaWVudFxuICApIHtcbiAgICB0aGlzLmNvbnRyb2xDbGllbnQgPSBjb250cm9sQ2xpZW50O1xuICAgIHRoaXMuZGF0YUNsaWVudCA9IGRhdGFDbGllbnQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHZlY3RvciBpbmRleCBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAgICpcbiAgICogUmVtYXJrIG9uIHRoZSBjaG9pY2Ugb2Ygc2ltaWxhcml0eSBtZXRyaWM6XG4gICAqIC0gQ29zaW5lIHNpbWlsYXJpdHkgaXMgYXBwcm9wcmlhdGUgZm9yIG1vc3QgZW1iZWRkaW5nIG1vZGVscyBhcyB0aGV5IHRlbmQgdG8gYmUgb3B0aW1pemVkXG4gICAqICAgICBmb3IgdGhpcyBtZXRyaWMuXG4gICAqIC0gSWYgdGhlIHZlY3RvcnMgYXJlIHVuaXQgbm9ybWFsaXplZCwgY29zaW5lIHNpbWlsYXJpdHkgaXMgZXF1aXZhbGVudCB0byBpbm5lciBwcm9kdWN0LlxuICAgKiAgICAgSWYgeW91ciB2ZWN0b3JzIGFyZSBhbHJlYWR5IHVuaXQgbm9ybWFsaXplZCwgeW91IGNhbiB1c2UgaW5uZXIgcHJvZHVjdCB0byBpbXByb3ZlXG4gICAqICAgICBwZXJmb3JtYW5jZS5cbiAgICogLSBFdWNsaWRlYW4gc2ltaWxhcml0eSwgdGhlIHN1bSBvZiBzcXVhcmVkIGRpZmZlcmVuY2VzLCBpcyBhcHByb3ByaWF0ZSBmb3IgZGF0YXNldHMgd2hlcmVcbiAgICogICAgIHRoaXMgbWV0cmljIGlzIG1lYW5pbmdmdWwuIEZvciBleGFtcGxlLCBpZiB0aGUgdmVjdG9ycyByZXByZXNlbnQgaW1hZ2VzLCBhbmQgdGhlXG4gICAqICAgICBlbWJlZGRpbmcgbW9kZWwgaXMgdHJhaW5lZCB0byBvcHRpbWl6ZSB0aGUgZXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gaW1hZ2VzLCB0aGVuXG4gICAqICAgICBldWNsaWRlYW4gc2ltaWxhcml0eSBpcyBhcHByb3ByaWF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZSAtIFRoZSB2ZWN0b3IgaW5kZXggdG8gYmUgY3JlYXRlZC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bURpbWVuc2lvbnMgLSBOdW1iZXIgb2YgZGltZW5zaW9ucyBwZXIgdmVjdG9yLlxuICAgKiBAcGFyYW0ge1ZlY3RvclNpbWlsYXJpdHlNZXRyaWN9IHNpbWlsYXJpdHlNZXRyaWMgLSBUaGUgbWV0cmljIHVzZWQgdG9cbiAgICogcXVhbnRpZnkgdGhlIGRpc3RhbmNlIGJldHdlZW4gdmVjdG9ycy4gQ2FuIGJlIGNvc2luZSBzaW1pbGFyaXR5LFxuICAgKiBpbm5lciBwcm9kdWN0LCBvciBldWNsaWRlYW4gc2ltaWxhcml0eS4gRGVmYXVsdHMgdG8gY29zaW5lIHNpbWlsYXJpdHkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPENyZWF0ZVZlY3RvckluZGV4LlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgQ3JlYXRlVmVjdG9ySW5kZXguU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIENyZWF0ZVZlY3RvckluZGV4LkFscmVhZHlFeGlzdHN9IGlmIHRoZSBjYWNoZSBhbHJlYWR5IGV4aXN0cy5cbiAgICoge0BsaW5rIENyZWF0ZVZlY3RvckluZGV4LkVycm9yfSBvbiBmYWlsdXJlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUluZGV4KFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIG51bURpbWVuc2lvbnM6IG51bWJlcixcbiAgICBzaW1pbGFyaXR5TWV0cmljPzogVmVjdG9yU2ltaWxhcml0eU1ldHJpY1xuICApOiBQcm9taXNlPENyZWF0ZVZlY3RvckluZGV4LlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29udHJvbENsaWVudC5jcmVhdGVJbmRleChcbiAgICAgIGluZGV4TmFtZSxcbiAgICAgIG51bURpbWVuc2lvbnMsXG4gICAgICBzaW1pbGFyaXR5TWV0cmljXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0cyBhbGwgdmVjdG9yIGluZGV4ZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPExpc3RWZWN0b3JJbmRleGVzLlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgTGlzdFZlY3RvckluZGV4ZXMuU3VjY2Vzc30gY29udGFpbmluZyB0aGUgbGlzdCBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgTGlzdFZlY3RvckluZGV4ZXMuRXJyb3J9IG9uIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxpc3RJbmRleGVzKCk6IFByb21pc2U8TGlzdFZlY3RvckluZGV4ZXMuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb250cm9sQ2xpZW50Lmxpc3RJbmRleGVzKCk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhIHZlY3RvciBpbmRleCBhbmQgYWxsIHRoZSB2ZWN0b3JzIHN0b3JlZCBpbiBpdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB2ZWN0b3IgaW5kZXggdG8gZGVsZXRlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxEZWxldGVWZWN0b3JJbmRleC5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIERlbGV0ZVZlY3RvckluZGV4LlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBEZWxldGVWZWN0b3JJbmRleC5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGVsZXRlSW5kZXgoXG4gICAgaW5kZXhOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxEZWxldGVWZWN0b3JJbmRleC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbnRyb2xDbGllbnQuZGVsZXRlSW5kZXgoaW5kZXhOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcHNlcnRzIGEgYmF0Y2ggb2YgaXRlbXMgaW50byBhIHZlY3RvciBpbmRleC5cbiAgICpcbiAgICogSWYgYW4gaXRlbSB3aXRoIHRoZSBzYW1lIElEIGFscmVhZHkgZXhpc3RzIGluIHRoZSBpbmRleCwgaXQgd2lsbCBiZSByZXBsYWNlZC5cbiAgICogT3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBpbmRleC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZSAtIE5hbWUgb2YgdGhlIGluZGV4IHRvIHVwc2VydCB0aGUgaXRlbXMgaW50by5cbiAgICogQHBhcmFtIHtBcnJheTxWZWN0b3JJbmRleEl0ZW0+fSBpdGVtcyAtIFRoZSBpdGVtcyB0byBiZSB1cHNlcnRlZCBpbnRvIHRoZSBpbmRleC5cbiAgICogQHJldHVybnMge1Byb21pc2U8VmVjdG9yVXBzZXJ0SXRlbUJhdGNoLlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgVmVjdG9yVXBzZXJ0SXRlbUJhdGNoLlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBWZWN0b3JVcHNlcnRJdGVtQmF0Y2guRXJyb3J9IG9uIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHVwc2VydEl0ZW1CYXRjaChcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBpdGVtczogQXJyYXk8VmVjdG9ySW5kZXhJdGVtPlxuICApOiBQcm9taXNlPFZlY3RvclVwc2VydEl0ZW1CYXRjaC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRhdGFDbGllbnQudXBzZXJ0SXRlbUJhdGNoKGluZGV4TmFtZSwgaXRlbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaGVzIGZvciB0aGUgbW9zdCBzaW1pbGFyIHZlY3RvcnMgdG8gdGhlIHF1ZXJ5IHZlY3RvciBpbiB0aGUgaW5kZXguXG4gICAqXG4gICAqIFJhbmtzIHRoZSB2ZWN0b3JzIGFjY29yZGluZyB0byB0aGUgc2ltaWxhcml0eSBtZXRyaWMgc3BlY2lmaWVkIHdoZW4gdGhlXG4gICAqIGluZGV4IHdhcyBjcmVhdGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5kZXhOYW1lIC0gTmFtZSBvZiB0aGUgaW5kZXggdG8gc2VhcmNoIGluLlxuICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHF1ZXJ5VmVjdG9yIC0gVGhlIHZlY3RvciB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge1NlYXJjaE9wdGlvbnN9IG9wdGlvbnMgLSBPcHRpb25hbCBzZWFyY2ggYXJndW1lbnRzLCBpbmNsdWRpbmdcbiAgICogdGhlIG51bWJlciBvZiByZXN1bHRzIHRvIHJldHVybiwgbWV0YWRhdGEgZmllbGRzIHRvIHJldHVybiwgYW5kIGEgc2NvcmVcbiAgICogdGhyZXNob2xkIHRvIGZpbHRlciByZXN1bHRzIGJ5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxWZWN0b3JTZWFyY2guUmVzcG9uc2U+fSAtXG4gICAqIHtAbGluayBWZWN0b3JTZWFyY2guU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIFZlY3RvclNlYXJjaC5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VhcmNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIHF1ZXJ5VmVjdG9yOiBBcnJheTxudW1iZXI+LFxuICAgIG9wdGlvbnM/OiBTZWFyY2hPcHRpb25zXG4gICk6IFByb21pc2U8VmVjdG9yU2VhcmNoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGF0YUNsaWVudC5zZWFyY2goaW5kZXhOYW1lLCBxdWVyeVZlY3Rvciwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoZXMgZm9yIHRoZSBtb3N0IHNpbWlsYXIgdmVjdG9ycyB0byB0aGUgcXVlcnkgdmVjdG9yIGluIHRoZSBpbmRleC5cbiAgICpcbiAgICogUmFua3MgdGhlIHZlY3RvcnMgYWNjb3JkaW5nIHRvIHRoZSBzaW1pbGFyaXR5IG1ldHJpYyBzcGVjaWZpZWQgd2hlbiB0aGVcbiAgICogaW5kZXggd2FzIGNyZWF0ZWQuXG4gICAqIEFsc28gcmV0dXJucyB0aGUgdmVjdG9ycyBhc3NvY2lhdGVkIHdpdGggZWFjaCByZXN1bHQuXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleE5hbWUgLSBOYW1lIG9mIHRoZSBpbmRleCB0byBzZWFyY2ggaW4uXG4gICAqIEBwYXJhbSBxdWVyeVZlY3RvciAtIFRoZSB2ZWN0b3IgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBzZWFyY2ggYXJndW1lbnRzLCBpbmNsdWRpbmdcbiAgICogdGhlIG51bWJlciBvZiByZXN1bHRzIHRvIHJldHVybiwgbWV0YWRhdGEgZmllbGRzIHRvIHJldHVybiwgYW5kIGEgc2NvcmVcbiAgICogdGhyZXNob2xkIHRvIGZpbHRlciByZXN1bHRzIGJ5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxWZWN0b3JTZWFyY2hBbmRGZXRjaFZlY3RvcnMuUmVzcG9uc2U+fSAtXG4gICAqIHtAbGluayBWZWN0b3JTZWFyY2hBbmRGZXRjaFZlY3RvcnMuU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIFZlY3RvclNlYXJjaEFuZEZldGNoVmVjdG9ycy5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VhcmNoQW5kRmV0Y2hWZWN0b3JzKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIHF1ZXJ5VmVjdG9yOiBudW1iZXJbXSxcbiAgICBvcHRpb25zPzogU2VhcmNoT3B0aW9ucyB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPFZlY3RvclNlYXJjaEFuZEZldGNoVmVjdG9ycy5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRhdGFDbGllbnQuc2VhcmNoQW5kRmV0Y2hWZWN0b3JzKFxuICAgICAgaW5kZXhOYW1lLFxuICAgICAgcXVlcnlWZWN0b3IsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgYmF0Y2ggb2YgaXRlbXMgZnJvbSBhIHZlY3RvciBpbmRleC5cbiAgICogRGVsZXRlcyBhbnkgYW5kIGFsbCBpdGVtcyB3aXRoIHRoZSBnaXZlbiBJRHMgZnJvbSB0aGUgaW5kZXguXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUgLSBOYW1lIG9mIHRoZSBpbmRleCB0byBkZWxldGUgdGhlIGl0ZW1zIGZyb20uXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gaWRzIC0gVGhlIElEcyBvZiB0aGUgaXRlbXMgdG8gYmUgZGVsZXRlZCBmcm9tIHRoZSBpbmRleC5cbiAgICogQHJldHVybnMge1Byb21pc2U8VmVjdG9yRGVsZXRlSXRlbUJhdGNoLlJlc3BvbnNlPn1cbiAgICoge0BsaW5rIFZlY3RvckRlbGV0ZUl0ZW1CYXRjaC5TdWNjZXNzfSBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgVmVjdG9yRGVsZXRlSXRlbUJhdGNoLkVycm9yfSBvbiBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZWxldGVJdGVtQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgaWRzOiBBcnJheTxzdHJpbmc+XG4gICk6IFByb21pc2U8VmVjdG9yRGVsZXRlSXRlbUJhdGNoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGF0YUNsaWVudC5kZWxldGVJdGVtQmF0Y2goaW5kZXhOYW1lLCBpZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBiYXRjaCBvZiBpdGVtcyBmcm9tIGEgdmVjdG9yIGluZGV4IGJ5IElELlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXhOYW1lIC0gTmFtZSBvZiB0aGUgaW5kZXggdG8gZ2V0IHRoZSBpdGVtcyBmcm9tLlxuICAgKiBAcGFyYW0gaWRzIC0gVGhlIElEcyBvZiB0aGUgaXRlbXMgdG8gYmUgcmV0cmlldmVkIGZyb20gdGhlIGluZGV4LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxWZWN0b3JHZXRJdGVtQmF0Y2guUmVzcG9uc2U+fVxuICAgKiB7QGxpbmsgVmVjdG9yR2V0SXRlbUJhdGNoLlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MsIHdpdGggdGhlIGZvdW5kIGl0ZW1zLlxuICAgKiB7QGxpbmsgVmVjdG9yR2V0SXRlbUJhdGNoLkVycm9yfSBvbiBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRJdGVtQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgaWRzOiBzdHJpbmdbXVxuICApOiBQcm9taXNlPFZlY3RvckdldEl0ZW1CYXRjaC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRhdGFDbGllbnQuZ2V0SXRlbUJhdGNoKGluZGV4TmFtZSwgaWRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIG1ldGFkYXRhIGZvciBhIGJhdGNoIG9mIGl0ZW1zIGZyb20gYSB2ZWN0b3IgaW5kZXggYnkgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleE5hbWUgLSBOYW1lIG9mIHRoZSBpbmRleCB0byBnZXQgdGhlIGl0ZW1zIGZyb20uXG4gICAqIEBwYXJhbSBpZHMgLSBUaGUgSURzIG9mIHRoZSBpdGVtcyB0byBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgaW5kZXguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFZlY3RvckdldEl0ZW1NZXRhZGF0YUJhdGNoLlJlc3BvbnNlPn1cbiAgICoge0BsaW5rIFZlY3RvckdldEl0ZW1NZXRhZGF0YUJhdGNoLlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MsIHdpdGggdGhlIGZvdW5kIGl0ZW0gbWV0YWRhdGEuXG4gICAqIHtAbGluayBWZWN0b3JHZXRJdGVtTWV0YWRhdGFCYXRjaC5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SXRlbU1ldGFkYXRhQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgaWRzOiBzdHJpbmdbXVxuICApOiBQcm9taXNlPFZlY3RvckdldEl0ZW1NZXRhZGF0YUJhdGNoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGF0YUNsaWVudC5nZXRJdGVtTWV0YWRhdGFCYXRjaChpbmRleE5hbWUsIGlkcyk7XG4gIH1cbn1cbiJdfQ==
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RWZWN0b3JJbmRleENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9jbGllbnRzL3ZlY3Rvci9BYnN0cmFjdFZlY3RvckluZGV4Q2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXVCQSxNQUFzQix5QkFBeUI7SUFNN0MsWUFDRSxhQUF3QyxFQUN4QyxVQUFrQztRQUVsQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BdUJHO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FDdEIsU0FBaUIsRUFDakIsYUFBcUIsRUFDckIsZ0JBQXlDO1FBRXpDLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FDekMsU0FBUyxFQUNULGFBQWEsRUFDYixnQkFBZ0IsQ0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsV0FBVztRQUN0QixPQUFPLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxXQUFXLENBQ3RCLFNBQWlCO1FBRWpCLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQ3JCLFNBQWlCO1FBRWpCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxLQUFLLENBQUMsZUFBZSxDQUMxQixTQUFpQixFQUNqQixLQUE2QjtRQUU3QixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQ2pCLFNBQWlCLEVBQ2pCLFdBQTBCLEVBQzFCLE9BQXVCO1FBRXZCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSSxLQUFLLENBQUMscUJBQXFCLENBQ2hDLFNBQWlCLEVBQ2pCLFdBQXFCLEVBQ3JCLE9BQW1DO1FBRW5DLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUNoRCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLEtBQUssQ0FBQyxlQUFlLENBQzFCLFNBQWlCLEVBQ2pCLEdBQWtCO1FBRWxCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLFlBQVksQ0FDdkIsU0FBaUIsRUFDakIsR0FBYTtRQUViLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLG9CQUFvQixDQUMvQixTQUFpQixFQUNqQixHQUFhO1FBRWIsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Q0FDRjtBQWxORCw4REFrTkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDcmVhdGVWZWN0b3JJbmRleCxcbiAgRGVsZXRlVmVjdG9ySW5kZXgsXG4gIExpc3RWZWN0b3JJbmRleGVzLFxuICBWZWN0b3JDb3VudEl0ZW1zLFxuICBWZWN0b3JVcHNlcnRJdGVtQmF0Y2gsXG4gIFZlY3RvclNlYXJjaCxcbiAgVmVjdG9yU2VhcmNoQW5kRmV0Y2hWZWN0b3JzLFxuICBWZWN0b3JEZWxldGVJdGVtQmF0Y2gsXG4gIFZlY3RvckdldEl0ZW1CYXRjaCxcbiAgVmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2gsXG59IGZyb20gJy4uLy4uLy4uJztcbmltcG9ydCB7XG4gIElWZWN0b3JJbmRleENsaWVudCxcbiAgU2VhcmNoT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vLi4vY2xpZW50cy9JVmVjdG9ySW5kZXhDbGllbnQnO1xuaW1wb3J0IHtcbiAgSVZlY3RvckluZGV4Q29udHJvbENsaWVudCxcbiAgVmVjdG9yU2ltaWxhcml0eU1ldHJpYyxcbn0gZnJvbSAnLi9JVmVjdG9ySW5kZXhDb250cm9sQ2xpZW50JztcbmltcG9ydCB7VmVjdG9ySW5kZXhJdGVtfSBmcm9tICcuLi8uLi8uLi9tZXNzYWdlcy92ZWN0b3ItaW5kZXgnO1xuaW1wb3J0IHtJVmVjdG9ySW5kZXhEYXRhQ2xpZW50fSBmcm9tICcuL0lWZWN0b3JJbmRleERhdGFDbGllbnQnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RWZWN0b3JJbmRleENsaWVudFxuICBpbXBsZW1lbnRzIElWZWN0b3JJbmRleENsaWVudCwgSVZlY3RvckluZGV4RGF0YUNsaWVudFxue1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udHJvbENsaWVudDogSVZlY3RvckluZGV4Q29udHJvbENsaWVudDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGFDbGllbnQ6IElWZWN0b3JJbmRleERhdGFDbGllbnQ7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIGNvbnRyb2xDbGllbnQ6IElWZWN0b3JJbmRleENvbnRyb2xDbGllbnQsXG4gICAgZGF0YUNsaWVudDogSVZlY3RvckluZGV4RGF0YUNsaWVudFxuICApIHtcbiAgICB0aGlzLmNvbnRyb2xDbGllbnQgPSBjb250cm9sQ2xpZW50O1xuICAgIHRoaXMuZGF0YUNsaWVudCA9IGRhdGFDbGllbnQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHZlY3RvciBpbmRleCBpZiBpdCBkb2VzIG5vdCBleGlzdC5cbiAgICpcbiAgICogUmVtYXJrIG9uIHRoZSBjaG9pY2Ugb2Ygc2ltaWxhcml0eSBtZXRyaWM6XG4gICAqIC0gQ29zaW5lIHNpbWlsYXJpdHkgaXMgYXBwcm9wcmlhdGUgZm9yIG1vc3QgZW1iZWRkaW5nIG1vZGVscyBhcyB0aGV5IHRlbmQgdG8gYmUgb3B0aW1pemVkXG4gICAqICAgICBmb3IgdGhpcyBtZXRyaWMuXG4gICAqIC0gSWYgdGhlIHZlY3RvcnMgYXJlIHVuaXQgbm9ybWFsaXplZCwgY29zaW5lIHNpbWlsYXJpdHkgaXMgZXF1aXZhbGVudCB0byBpbm5lciBwcm9kdWN0LlxuICAgKiAgICAgSWYgeW91ciB2ZWN0b3JzIGFyZSBhbHJlYWR5IHVuaXQgbm9ybWFsaXplZCwgeW91IGNhbiB1c2UgaW5uZXIgcHJvZHVjdCB0byBpbXByb3ZlXG4gICAqICAgICBwZXJmb3JtYW5jZS5cbiAgICogLSBFdWNsaWRlYW4gc2ltaWxhcml0eSwgdGhlIHN1bSBvZiBzcXVhcmVkIGRpZmZlcmVuY2VzLCBpcyBhcHByb3ByaWF0ZSBmb3IgZGF0YXNldHMgd2hlcmVcbiAgICogICAgIHRoaXMgbWV0cmljIGlzIG1lYW5pbmdmdWwuIEZvciBleGFtcGxlLCBpZiB0aGUgdmVjdG9ycyByZXByZXNlbnQgaW1hZ2VzLCBhbmQgdGhlXG4gICAqICAgICBlbWJlZGRpbmcgbW9kZWwgaXMgdHJhaW5lZCB0byBvcHRpbWl6ZSB0aGUgZXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gaW1hZ2VzLCB0aGVuXG4gICAqICAgICBldWNsaWRlYW4gc2ltaWxhcml0eSBpcyBhcHByb3ByaWF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZSAtIFRoZSB2ZWN0b3IgaW5kZXggdG8gYmUgY3JlYXRlZC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bURpbWVuc2lvbnMgLSBOdW1iZXIgb2YgZGltZW5zaW9ucyBwZXIgdmVjdG9yLlxuICAgKiBAcGFyYW0ge1ZlY3RvclNpbWlsYXJpdHlNZXRyaWN9IHNpbWlsYXJpdHlNZXRyaWMgLSBUaGUgbWV0cmljIHVzZWQgdG9cbiAgICogcXVhbnRpZnkgdGhlIGRpc3RhbmNlIGJldHdlZW4gdmVjdG9ycy4gQ2FuIGJlIGNvc2luZSBzaW1pbGFyaXR5LFxuICAgKiBpbm5lciBwcm9kdWN0LCBvciBldWNsaWRlYW4gc2ltaWxhcml0eS4gRGVmYXVsdHMgdG8gY29zaW5lIHNpbWlsYXJpdHkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPENyZWF0ZVZlY3RvckluZGV4LlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgQ3JlYXRlVmVjdG9ySW5kZXguU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIENyZWF0ZVZlY3RvckluZGV4LkFscmVhZHlFeGlzdHN9IGlmIHRoZSBjYWNoZSBhbHJlYWR5IGV4aXN0cy5cbiAgICoge0BsaW5rIENyZWF0ZVZlY3RvckluZGV4LkVycm9yfSBvbiBmYWlsdXJlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUluZGV4KFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIG51bURpbWVuc2lvbnM6IG51bWJlcixcbiAgICBzaW1pbGFyaXR5TWV0cmljPzogVmVjdG9yU2ltaWxhcml0eU1ldHJpY1xuICApOiBQcm9taXNlPENyZWF0ZVZlY3RvckluZGV4LlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29udHJvbENsaWVudC5jcmVhdGVJbmRleChcbiAgICAgIGluZGV4TmFtZSxcbiAgICAgIG51bURpbWVuc2lvbnMsXG4gICAgICBzaW1pbGFyaXR5TWV0cmljXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0cyBhbGwgdmVjdG9yIGluZGV4ZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPExpc3RWZWN0b3JJbmRleGVzLlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgTGlzdFZlY3RvckluZGV4ZXMuU3VjY2Vzc30gY29udGFpbmluZyB0aGUgbGlzdCBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgTGlzdFZlY3RvckluZGV4ZXMuRXJyb3J9IG9uIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxpc3RJbmRleGVzKCk6IFByb21pc2U8TGlzdFZlY3RvckluZGV4ZXMuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb250cm9sQ2xpZW50Lmxpc3RJbmRleGVzKCk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhIHZlY3RvciBpbmRleCBhbmQgYWxsIHRoZSB2ZWN0b3JzIHN0b3JlZCBpbiBpdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB2ZWN0b3IgaW5kZXggdG8gZGVsZXRlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxEZWxldGVWZWN0b3JJbmRleC5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIERlbGV0ZVZlY3RvckluZGV4LlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBEZWxldGVWZWN0b3JJbmRleC5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGVsZXRlSW5kZXgoXG4gICAgaW5kZXhOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxEZWxldGVWZWN0b3JJbmRleC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbnRyb2xDbGllbnQuZGVsZXRlSW5kZXgoaW5kZXhOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudHMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHZlY3RvciBpbmRleC5cbiAgICpcbiAgICogTm90ZSB0aGF0IGlmIHRoZSBpbmRleCBkb2VzIG5vdCBleGlzdCwgYW4gZXJyb3Igd2l0aFxuICAgKiB7QGxpbmsgTW9tZW50b0Vycm9yQ29kZX0gYE5PVF9GT1VORGAgZXJyb3Igd2lsbCBiZSByZXR1cm5lZC5cbiAgICpcbiAgICogQHBhcmFtIGluZGV4TmFtZSAtIE5hbWUgb2YgdGhlIGluZGV4IHRvIGNvdW50IHRoZSBpdGVtcyBpbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8VmVjdG9yQ291bnRJdGVtcy5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIFZlY3RvckNvdW50SXRlbXMuU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIFZlY3RvckNvdW50SXRlbXMuRXJyb3J9IG9uIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNvdW50SXRlbXMoXG4gICAgaW5kZXhOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxWZWN0b3JDb3VudEl0ZW1zLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGF0YUNsaWVudC5jb3VudEl0ZW1zKGluZGV4TmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogVXBzZXJ0cyBhIGJhdGNoIG9mIGl0ZW1zIGludG8gYSB2ZWN0b3IgaW5kZXguXG4gICAqXG4gICAqIElmIGFuIGl0ZW0gd2l0aCB0aGUgc2FtZSBJRCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaW5kZXgsIGl0IHdpbGwgYmUgcmVwbGFjZWQuXG4gICAqIE90aGVyd2lzZSwgaXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgaW5kZXguXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUgLSBOYW1lIG9mIHRoZSBpbmRleCB0byB1cHNlcnQgdGhlIGl0ZW1zIGludG8uXG4gICAqIEBwYXJhbSB7QXJyYXk8VmVjdG9ySW5kZXhJdGVtPn0gaXRlbXMgLSBUaGUgaXRlbXMgdG8gYmUgdXBzZXJ0ZWQgaW50byB0aGUgaW5kZXguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFZlY3RvclVwc2VydEl0ZW1CYXRjaC5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIFZlY3RvclVwc2VydEl0ZW1CYXRjaC5TdWNjZXNzfSBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgVmVjdG9yVXBzZXJ0SXRlbUJhdGNoLkVycm9yfSBvbiBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB1cHNlcnRJdGVtQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgaXRlbXM6IEFycmF5PFZlY3RvckluZGV4SXRlbT5cbiAgKTogUHJvbWlzZTxWZWN0b3JVcHNlcnRJdGVtQmF0Y2guUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kYXRhQ2xpZW50LnVwc2VydEl0ZW1CYXRjaChpbmRleE5hbWUsIGl0ZW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2hlcyBmb3IgdGhlIG1vc3Qgc2ltaWxhciB2ZWN0b3JzIHRvIHRoZSBxdWVyeSB2ZWN0b3IgaW4gdGhlIGluZGV4LlxuICAgKlxuICAgKiBSYW5rcyB0aGUgdmVjdG9ycyBhY2NvcmRpbmcgdG8gdGhlIHNpbWlsYXJpdHkgbWV0cmljIHNwZWNpZmllZCB3aGVuIHRoZVxuICAgKiBpbmRleCB3YXMgY3JlYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZSAtIE5hbWUgb2YgdGhlIGluZGV4IHRvIHNlYXJjaCBpbi5cbiAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBxdWVyeVZlY3RvciAtIFRoZSB2ZWN0b3IgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtTZWFyY2hPcHRpb25zfSBvcHRpb25zIC0gT3B0aW9uYWwgc2VhcmNoIGFyZ3VtZW50cywgaW5jbHVkaW5nXG4gICAqIHRoZSBudW1iZXIgb2YgcmVzdWx0cyB0byByZXR1cm4sIG1ldGFkYXRhIGZpZWxkcyB0byByZXR1cm4sIGFuZCBhIHNjb3JlXG4gICAqIHRocmVzaG9sZCB0byBmaWx0ZXIgcmVzdWx0cyBieS5cbiAgICogQHJldHVybnMge1Byb21pc2U8VmVjdG9yU2VhcmNoLlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgVmVjdG9yU2VhcmNoLlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBWZWN0b3JTZWFyY2guRXJyb3J9IG9uIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlYXJjaChcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBxdWVyeVZlY3RvcjogQXJyYXk8bnVtYmVyPixcbiAgICBvcHRpb25zPzogU2VhcmNoT3B0aW9uc1xuICApOiBQcm9taXNlPFZlY3RvclNlYXJjaC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRhdGFDbGllbnQuc2VhcmNoKGluZGV4TmFtZSwgcXVlcnlWZWN0b3IsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaGVzIGZvciB0aGUgbW9zdCBzaW1pbGFyIHZlY3RvcnMgdG8gdGhlIHF1ZXJ5IHZlY3RvciBpbiB0aGUgaW5kZXguXG4gICAqXG4gICAqIFJhbmtzIHRoZSB2ZWN0b3JzIGFjY29yZGluZyB0byB0aGUgc2ltaWxhcml0eSBtZXRyaWMgc3BlY2lmaWVkIHdoZW4gdGhlXG4gICAqIGluZGV4IHdhcyBjcmVhdGVkLlxuICAgKiBBbHNvIHJldHVybnMgdGhlIHZlY3RvcnMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcmVzdWx0LlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXhOYW1lIC0gTmFtZSBvZiB0aGUgaW5kZXggdG8gc2VhcmNoIGluLlxuICAgKiBAcGFyYW0gcXVlcnlWZWN0b3IgLSBUaGUgdmVjdG9yIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgc2VhcmNoIGFyZ3VtZW50cywgaW5jbHVkaW5nXG4gICAqIHRoZSBudW1iZXIgb2YgcmVzdWx0cyB0byByZXR1cm4sIG1ldGFkYXRhIGZpZWxkcyB0byByZXR1cm4sIGFuZCBhIHNjb3JlXG4gICAqIHRocmVzaG9sZCB0byBmaWx0ZXIgcmVzdWx0cyBieS5cbiAgICogQHJldHVybnMge1Byb21pc2U8VmVjdG9yU2VhcmNoQW5kRmV0Y2hWZWN0b3JzLlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgVmVjdG9yU2VhcmNoQW5kRmV0Y2hWZWN0b3JzLlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBWZWN0b3JTZWFyY2hBbmRGZXRjaFZlY3RvcnMuRXJyb3J9IG9uIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlYXJjaEFuZEZldGNoVmVjdG9ycyhcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBxdWVyeVZlY3RvcjogbnVtYmVyW10sXG4gICAgb3B0aW9ucz86IFNlYXJjaE9wdGlvbnMgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxWZWN0b3JTZWFyY2hBbmRGZXRjaFZlY3RvcnMuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kYXRhQ2xpZW50LnNlYXJjaEFuZEZldGNoVmVjdG9ycyhcbiAgICAgIGluZGV4TmFtZSxcbiAgICAgIHF1ZXJ5VmVjdG9yLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhIGJhdGNoIG9mIGl0ZW1zIGZyb20gYSB2ZWN0b3IgaW5kZXguXG4gICAqIERlbGV0ZXMgYW55IGFuZCBhbGwgaXRlbXMgd2l0aCB0aGUgZ2l2ZW4gSURzIGZyb20gdGhlIGluZGV4LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5kZXhOYW1lIC0gTmFtZSBvZiB0aGUgaW5kZXggdG8gZGVsZXRlIHRoZSBpdGVtcyBmcm9tLlxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGlkcyAtIFRoZSBJRHMgb2YgdGhlIGl0ZW1zIHRvIGJlIGRlbGV0ZWQgZnJvbSB0aGUgaW5kZXguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFZlY3RvckRlbGV0ZUl0ZW1CYXRjaC5SZXNwb25zZT59XG4gICAqIHtAbGluayBWZWN0b3JEZWxldGVJdGVtQmF0Y2guU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIFZlY3RvckRlbGV0ZUl0ZW1CYXRjaC5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGVsZXRlSXRlbUJhdGNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIGlkczogQXJyYXk8c3RyaW5nPlxuICApOiBQcm9taXNlPFZlY3RvckRlbGV0ZUl0ZW1CYXRjaC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRhdGFDbGllbnQuZGVsZXRlSXRlbUJhdGNoKGluZGV4TmFtZSwgaWRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgYmF0Y2ggb2YgaXRlbXMgZnJvbSBhIHZlY3RvciBpbmRleCBieSBJRC5cbiAgICpcbiAgICogQHBhcmFtIGluZGV4TmFtZSAtIE5hbWUgb2YgdGhlIGluZGV4IHRvIGdldCB0aGUgaXRlbXMgZnJvbS5cbiAgICogQHBhcmFtIGlkcyAtIFRoZSBJRHMgb2YgdGhlIGl0ZW1zIHRvIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBpbmRleC5cbiAgICogQHJldHVybnMge1Byb21pc2U8VmVjdG9yR2V0SXRlbUJhdGNoLlJlc3BvbnNlPn1cbiAgICoge0BsaW5rIFZlY3RvckdldEl0ZW1CYXRjaC5TdWNjZXNzfSBvbiBzdWNjZXNzLCB3aXRoIHRoZSBmb3VuZCBpdGVtcy5cbiAgICoge0BsaW5rIFZlY3RvckdldEl0ZW1CYXRjaC5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SXRlbUJhdGNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIGlkczogc3RyaW5nW11cbiAgKTogUHJvbWlzZTxWZWN0b3JHZXRJdGVtQmF0Y2guUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kYXRhQ2xpZW50LmdldEl0ZW1CYXRjaChpbmRleE5hbWUsIGlkcyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBtZXRhZGF0YSBmb3IgYSBiYXRjaCBvZiBpdGVtcyBmcm9tIGEgdmVjdG9yIGluZGV4IGJ5IElELlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXhOYW1lIC0gTmFtZSBvZiB0aGUgaW5kZXggdG8gZ2V0IHRoZSBpdGVtcyBmcm9tLlxuICAgKiBAcGFyYW0gaWRzIC0gVGhlIElEcyBvZiB0aGUgaXRlbXMgdG8gYmUgcmV0cmlldmVkIGZyb20gdGhlIGluZGV4LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxWZWN0b3JHZXRJdGVtTWV0YWRhdGFCYXRjaC5SZXNwb25zZT59XG4gICAqIHtAbGluayBWZWN0b3JHZXRJdGVtTWV0YWRhdGFCYXRjaC5TdWNjZXNzfSBvbiBzdWNjZXNzLCB3aXRoIHRoZSBmb3VuZCBpdGVtIG1ldGFkYXRhLlxuICAgKiB7QGxpbmsgVmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2guRXJyb3J9IG9uIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEl0ZW1NZXRhZGF0YUJhdGNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIGlkczogc3RyaW5nW11cbiAgKTogUHJvbWlzZTxWZWN0b3JHZXRJdGVtTWV0YWRhdGFCYXRjaC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRhdGFDbGllbnQuZ2V0SXRlbU1ldGFkYXRhQmF0Y2goaW5kZXhOYW1lLCBpZHMpO1xuICB9XG59XG4iXX0=
|
@@ -1,7 +1,8 @@
|
|
1
|
-
import { VectorUpsertItemBatch, VectorDeleteItemBatch, VectorSearch, VectorSearchAndFetchVectors, VectorGetItemBatch, VectorGetItemMetadataBatch } from '../../../messages/responses/vector';
|
1
|
+
import { VectorCountItems, VectorUpsertItemBatch, VectorDeleteItemBatch, VectorSearch, VectorSearchAndFetchVectors, VectorGetItemBatch, VectorGetItemMetadataBatch } from '../../../messages/responses/vector';
|
2
2
|
import { VectorIndexItem } from '../../../messages/vector-index';
|
3
3
|
import { SearchOptions } from '../../../clients/IVectorIndexClient';
|
4
4
|
export interface IVectorIndexDataClient {
|
5
|
+
countItems(indexName: string): Promise<VectorCountItems.Response>;
|
5
6
|
upsertItemBatch(indexName: string, items: Array<VectorIndexItem>): Promise<VectorUpsertItemBatch.Response>;
|
6
7
|
search(indexName: string, queryVector: Array<number>, options?: SearchOptions): Promise<VectorSearch.Response>;
|
7
8
|
searchAndFetchVectors(indexName: string, queryVector: Array<number>, options?: SearchOptions): Promise<VectorSearchAndFetchVectors.Response>;
|
@@ -1,3 +1,3 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVZlY3RvckluZGV4RGF0YUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9jbGllbnRzL3ZlY3Rvci9JVmVjdG9ySW5kZXhEYXRhQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBWZWN0b3JDb3VudEl0ZW1zLFxuICBWZWN0b3JVcHNlcnRJdGVtQmF0Y2gsXG4gIFZlY3RvckRlbGV0ZUl0ZW1CYXRjaCxcbiAgVmVjdG9yU2VhcmNoLFxuICBWZWN0b3JTZWFyY2hBbmRGZXRjaFZlY3RvcnMsXG4gIFZlY3RvckdldEl0ZW1CYXRjaCxcbiAgVmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2gsXG59IGZyb20gJy4uLy4uLy4uL21lc3NhZ2VzL3Jlc3BvbnNlcy92ZWN0b3InO1xuaW1wb3J0IHtWZWN0b3JJbmRleEl0ZW19IGZyb20gJy4uLy4uLy4uL21lc3NhZ2VzL3ZlY3Rvci1pbmRleCc7XG5pbXBvcnQge1NlYXJjaE9wdGlvbnN9IGZyb20gJy4uLy4uLy4uL2NsaWVudHMvSVZlY3RvckluZGV4Q2xpZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBJVmVjdG9ySW5kZXhEYXRhQ2xpZW50IHtcbiAgY291bnRJdGVtcyhpbmRleE5hbWU6IHN0cmluZyk6IFByb21pc2U8VmVjdG9yQ291bnRJdGVtcy5SZXNwb25zZT47XG4gIHVwc2VydEl0ZW1CYXRjaChcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBpdGVtczogQXJyYXk8VmVjdG9ySW5kZXhJdGVtPlxuICApOiBQcm9taXNlPFZlY3RvclVwc2VydEl0ZW1CYXRjaC5SZXNwb25zZT47XG4gIHNlYXJjaChcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBxdWVyeVZlY3RvcjogQXJyYXk8bnVtYmVyPixcbiAgICBvcHRpb25zPzogU2VhcmNoT3B0aW9uc1xuICApOiBQcm9taXNlPFZlY3RvclNlYXJjaC5SZXNwb25zZT47XG4gIHNlYXJjaEFuZEZldGNoVmVjdG9ycyhcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBxdWVyeVZlY3RvcjogQXJyYXk8bnVtYmVyPixcbiAgICBvcHRpb25zPzogU2VhcmNoT3B0aW9uc1xuICApOiBQcm9taXNlPFZlY3RvclNlYXJjaEFuZEZldGNoVmVjdG9ycy5SZXNwb25zZT47XG4gIGRlbGV0ZUl0ZW1CYXRjaChcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBpZHM6IEFycmF5PHN0cmluZz5cbiAgKTogUHJvbWlzZTxWZWN0b3JEZWxldGVJdGVtQmF0Y2guUmVzcG9uc2U+O1xuICBnZXRJdGVtQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgaWRzOiBBcnJheTxzdHJpbmc+XG4gICk6IFByb21pc2U8VmVjdG9yR2V0SXRlbUJhdGNoLlJlc3BvbnNlPjtcbiAgZ2V0SXRlbU1ldGFkYXRhQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgaWRzOiBBcnJheTxzdHJpbmc+XG4gICk6IFByb21pc2U8VmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2guUmVzcG9uc2U+O1xufVxuIl19
|
@@ -1,6 +1,7 @@
|
|
1
1
|
export * as CreateVectorIndex from './create-vector-index';
|
2
2
|
export * as ListVectorIndexes from './list-vector-indexes';
|
3
3
|
export * as DeleteVectorIndex from './delete-vector-index';
|
4
|
+
export * as VectorCountItems from './vector-count-items';
|
4
5
|
export * as VectorUpsertItemBatch from './vector-upsert-item-batch';
|
5
6
|
export * as VectorSearch from './vector-search';
|
6
7
|
export * as VectorSearchAndFetchVectors from './vector-search-and-fetch-vectors';
|
@@ -1,13 +1,14 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.VectorGetItemMetadataBatch = exports.VectorGetItemBatch = exports.VectorDeleteItemBatch = exports.VectorSearchAndFetchVectors = exports.VectorSearch = exports.VectorUpsertItemBatch = exports.DeleteVectorIndex = exports.ListVectorIndexes = exports.CreateVectorIndex = void 0;
|
3
|
+
exports.VectorGetItemMetadataBatch = exports.VectorGetItemBatch = exports.VectorDeleteItemBatch = exports.VectorSearchAndFetchVectors = exports.VectorSearch = exports.VectorUpsertItemBatch = exports.VectorCountItems = exports.DeleteVectorIndex = exports.ListVectorIndexes = exports.CreateVectorIndex = void 0;
|
4
4
|
exports.CreateVectorIndex = require("./create-vector-index");
|
5
5
|
exports.ListVectorIndexes = require("./list-vector-indexes");
|
6
6
|
exports.DeleteVectorIndex = require("./delete-vector-index");
|
7
|
+
exports.VectorCountItems = require("./vector-count-items");
|
7
8
|
exports.VectorUpsertItemBatch = require("./vector-upsert-item-batch");
|
8
9
|
exports.VectorSearch = require("./vector-search");
|
9
10
|
exports.VectorSearchAndFetchVectors = require("./vector-search-and-fetch-vectors");
|
10
11
|
exports.VectorDeleteItemBatch = require("./vector-delete-item-batch");
|
11
12
|
exports.VectorGetItemBatch = require("./vector-get-item-batch");
|
12
13
|
exports.VectorGetItemMetadataBatch = require("./vector-get-item-metadata-batch");
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbWVzc2FnZXMvcmVzcG9uc2VzL3ZlY3Rvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2REFBMkQ7QUFDM0QsNkRBQTJEO0FBQzNELDZEQUEyRDtBQUMzRCwyREFBeUQ7QUFDekQsc0VBQW9FO0FBQ3BFLGtEQUFnRDtBQUNoRCxtRkFBaUY7QUFDakYsc0VBQW9FO0FBQ3BFLGdFQUE4RDtBQUM5RCxpRkFBK0UiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBhcyBDcmVhdGVWZWN0b3JJbmRleCBmcm9tICcuL2NyZWF0ZS12ZWN0b3ItaW5kZXgnO1xuZXhwb3J0ICogYXMgTGlzdFZlY3RvckluZGV4ZXMgZnJvbSAnLi9saXN0LXZlY3Rvci1pbmRleGVzJztcbmV4cG9ydCAqIGFzIERlbGV0ZVZlY3RvckluZGV4IGZyb20gJy4vZGVsZXRlLXZlY3Rvci1pbmRleCc7XG5leHBvcnQgKiBhcyBWZWN0b3JDb3VudEl0ZW1zIGZyb20gJy4vdmVjdG9yLWNvdW50LWl0ZW1zJztcbmV4cG9ydCAqIGFzIFZlY3RvclVwc2VydEl0ZW1CYXRjaCBmcm9tICcuL3ZlY3Rvci11cHNlcnQtaXRlbS1iYXRjaCc7XG5leHBvcnQgKiBhcyBWZWN0b3JTZWFyY2ggZnJvbSAnLi92ZWN0b3Itc2VhcmNoJztcbmV4cG9ydCAqIGFzIFZlY3RvclNlYXJjaEFuZEZldGNoVmVjdG9ycyBmcm9tICcuL3ZlY3Rvci1zZWFyY2gtYW5kLWZldGNoLXZlY3RvcnMnO1xuZXhwb3J0ICogYXMgVmVjdG9yRGVsZXRlSXRlbUJhdGNoIGZyb20gJy4vdmVjdG9yLWRlbGV0ZS1pdGVtLWJhdGNoJztcbmV4cG9ydCAqIGFzIFZlY3RvckdldEl0ZW1CYXRjaCBmcm9tICcuL3ZlY3Rvci1nZXQtaXRlbS1iYXRjaCc7XG5leHBvcnQgKiBhcyBWZWN0b3JHZXRJdGVtTWV0YWRhdGFCYXRjaCBmcm9tICcuL3ZlY3Rvci1nZXQtaXRlbS1tZXRhZGF0YS1iYXRjaCc7XG4iXX0=
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import { SdkError } from '../../../errors';
|
2
|
+
import { ResponseBase } from '../response-base';
|
3
|
+
/**
|
4
|
+
* Parent response type for a VectorCountItems request. The
|
5
|
+
* response object is resolved to a type-safe object of one of
|
6
|
+
* the following subtypes:
|
7
|
+
*
|
8
|
+
* - {Success}
|
9
|
+
* - {Error}
|
10
|
+
*
|
11
|
+
* `instanceof` type guards can be used to operate on the appropriate subtype.
|
12
|
+
* @example
|
13
|
+
* For example:
|
14
|
+
* ```
|
15
|
+
* if (response instanceof VectorCountItems.Error) {
|
16
|
+
* // Handle error as appropriate. The compiler will smart-cast `response` to type
|
17
|
+
* // `VectorCountItems.Error` in this block, so you will have access to the properties
|
18
|
+
* // of the Error class; e.g. `response.errorCode()`.
|
19
|
+
* }
|
20
|
+
* ```
|
21
|
+
*/
|
22
|
+
export declare abstract class Response extends ResponseBase {
|
23
|
+
itemCount(): number | undefined;
|
24
|
+
}
|
25
|
+
declare class _Success extends Response {
|
26
|
+
}
|
27
|
+
declare const Success_base: {
|
28
|
+
new (...args: any[]): {
|
29
|
+
readonly is_success: boolean;
|
30
|
+
};
|
31
|
+
} & typeof _Success;
|
32
|
+
/**
|
33
|
+
* Indicates a Successful VectorCountItems request.
|
34
|
+
*/
|
35
|
+
export declare class Success extends Success_base {
|
36
|
+
private readonly _itemCount;
|
37
|
+
constructor(itemCount: number);
|
38
|
+
/**
|
39
|
+
* Returns the number of items in the specified vector index.
|
40
|
+
*
|
41
|
+
* @returns {number} The number of items in the specified vector index.
|
42
|
+
*/
|
43
|
+
itemCount(): number;
|
44
|
+
}
|
45
|
+
declare class _Error extends Response {
|
46
|
+
protected _innerException: SdkError;
|
47
|
+
constructor(_innerException: SdkError);
|
48
|
+
}
|
49
|
+
declare const Error_base: {
|
50
|
+
new (...args: any[]): {
|
51
|
+
_innerException: SdkError;
|
52
|
+
message(): string;
|
53
|
+
innerException(): SdkError;
|
54
|
+
errorCode(): import("../../../errors").MomentoErrorCode;
|
55
|
+
toString(): string;
|
56
|
+
};
|
57
|
+
} & typeof _Error;
|
58
|
+
/**
|
59
|
+
* Indicates that an error occurred during the VectorCountItems request.
|
60
|
+
*
|
61
|
+
* This response object includes the following fields that you can use to determine
|
62
|
+
* how you would like to handle the error:
|
63
|
+
*
|
64
|
+
* - `errorCode()` - a unique Momento error code indicating the type of error that occurred.
|
65
|
+
* - `message()` - a human-readable description of the error
|
66
|
+
* - `innerException()` - the original error that caused the failure; can be re-thrown.
|
67
|
+
*/
|
68
|
+
export declare class Error extends Error_base {
|
69
|
+
}
|
70
|
+
export {};
|
@@ -0,0 +1,72 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.Error = exports.Success = exports.Response = void 0;
|
4
|
+
const response_base_1 = require("../response-base");
|
5
|
+
/**
|
6
|
+
* Parent response type for a VectorCountItems request. The
|
7
|
+
* response object is resolved to a type-safe object of one of
|
8
|
+
* the following subtypes:
|
9
|
+
*
|
10
|
+
* - {Success}
|
11
|
+
* - {Error}
|
12
|
+
*
|
13
|
+
* `instanceof` type guards can be used to operate on the appropriate subtype.
|
14
|
+
* @example
|
15
|
+
* For example:
|
16
|
+
* ```
|
17
|
+
* if (response instanceof VectorCountItems.Error) {
|
18
|
+
* // Handle error as appropriate. The compiler will smart-cast `response` to type
|
19
|
+
* // `VectorCountItems.Error` in this block, so you will have access to the properties
|
20
|
+
* // of the Error class; e.g. `response.errorCode()`.
|
21
|
+
* }
|
22
|
+
* ```
|
23
|
+
*/
|
24
|
+
class Response extends response_base_1.ResponseBase {
|
25
|
+
itemCount() {
|
26
|
+
if (this instanceof Success) {
|
27
|
+
return this.itemCount();
|
28
|
+
}
|
29
|
+
return undefined;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
exports.Response = Response;
|
33
|
+
class _Success extends Response {
|
34
|
+
}
|
35
|
+
/**
|
36
|
+
* Indicates a Successful VectorCountItems request.
|
37
|
+
*/
|
38
|
+
class Success extends (0, response_base_1.ResponseSuccess)(_Success) {
|
39
|
+
constructor(itemCount) {
|
40
|
+
super();
|
41
|
+
this._itemCount = itemCount;
|
42
|
+
}
|
43
|
+
/**
|
44
|
+
* Returns the number of items in the specified vector index.
|
45
|
+
*
|
46
|
+
* @returns {number} The number of items in the specified vector index.
|
47
|
+
*/
|
48
|
+
itemCount() {
|
49
|
+
return this._itemCount;
|
50
|
+
}
|
51
|
+
}
|
52
|
+
exports.Success = Success;
|
53
|
+
class _Error extends Response {
|
54
|
+
constructor(_innerException) {
|
55
|
+
super();
|
56
|
+
this._innerException = _innerException;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
/**
|
60
|
+
* Indicates that an error occurred during the VectorCountItems request.
|
61
|
+
*
|
62
|
+
* This response object includes the following fields that you can use to determine
|
63
|
+
* how you would like to handle the error:
|
64
|
+
*
|
65
|
+
* - `errorCode()` - a unique Momento error code indicating the type of error that occurred.
|
66
|
+
* - `message()` - a human-readable description of the error
|
67
|
+
* - `innerException()` - the original error that caused the failure; can be re-thrown.
|
68
|
+
*/
|
69
|
+
class Error extends (0, response_base_1.ResponseError)(_Error) {
|
70
|
+
}
|
71
|
+
exports.Error = Error;
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLWNvdW50LWl0ZW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21lc3NhZ2VzL3Jlc3BvbnNlcy92ZWN0b3IvdmVjdG9yLWNvdW50LWl0ZW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG9EQUE4RTtBQUU5RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBc0IsUUFBUyxTQUFRLDRCQUFZO0lBQ2pELFNBQVM7UUFDUCxJQUFJLElBQUksWUFBWSxPQUFPLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDekI7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFQRCw0QkFPQztBQUVELE1BQU0sUUFBUyxTQUFRLFFBQVE7Q0FBRztBQUVsQzs7R0FFRztBQUNILE1BQWEsT0FBUSxTQUFRLElBQUEsK0JBQWUsRUFBQyxRQUFRLENBQUM7SUFFcEQsWUFBWSxTQUFpQjtRQUMzQixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUFmRCwwQkFlQztBQUVELE1BQU0sTUFBTyxTQUFRLFFBQVE7SUFDM0IsWUFBc0IsZUFBeUI7UUFDN0MsS0FBSyxFQUFFLENBQUM7UUFEWSxvQkFBZSxHQUFmLGVBQWUsQ0FBVTtJQUUvQyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLEtBQU0sU0FBUSxJQUFBLDZCQUFhLEVBQUMsTUFBTSxDQUFDO0NBQUc7QUFBbkQsc0JBQW1EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZGtFcnJvcn0gZnJvbSAnLi4vLi4vLi4vZXJyb3JzJztcbmltcG9ydCB7UmVzcG9uc2VCYXNlLCBSZXNwb25zZUVycm9yLCBSZXNwb25zZVN1Y2Nlc3N9IGZyb20gJy4uL3Jlc3BvbnNlLWJhc2UnO1xuXG4vKipcbiAqIFBhcmVudCByZXNwb25zZSB0eXBlIGZvciBhIFZlY3RvckNvdW50SXRlbXMgcmVxdWVzdC4gIFRoZVxuICogcmVzcG9uc2Ugb2JqZWN0IGlzIHJlc29sdmVkIHRvIGEgdHlwZS1zYWZlIG9iamVjdCBvZiBvbmUgb2ZcbiAqIHRoZSBmb2xsb3dpbmcgc3VidHlwZXM6XG4gKlxuICogLSB7U3VjY2Vzc31cbiAqIC0ge0Vycm9yfVxuICpcbiAqIGBpbnN0YW5jZW9mYCB0eXBlIGd1YXJkcyBjYW4gYmUgdXNlZCB0byBvcGVyYXRlIG9uIHRoZSBhcHByb3ByaWF0ZSBzdWJ0eXBlLlxuICogQGV4YW1wbGVcbiAqIEZvciBleGFtcGxlOlxuICogYGBgXG4gKiBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBWZWN0b3JDb3VudEl0ZW1zLkVycm9yKSB7XG4gKiAgIC8vIEhhbmRsZSBlcnJvciBhcyBhcHByb3ByaWF0ZS4gIFRoZSBjb21waWxlciB3aWxsIHNtYXJ0LWNhc3QgYHJlc3BvbnNlYCB0byB0eXBlXG4gKiAgIC8vIGBWZWN0b3JDb3VudEl0ZW1zLkVycm9yYCBpbiB0aGlzIGJsb2NrLCBzbyB5b3Ugd2lsbCBoYXZlIGFjY2VzcyB0byB0aGUgcHJvcGVydGllc1xuICogICAvLyBvZiB0aGUgRXJyb3IgY2xhc3M7IGUuZy4gYHJlc3BvbnNlLmVycm9yQ29kZSgpYC5cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZUJhc2Uge1xuICBpdGVtQ291bnQoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mIFN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1Db3VudCgpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmNsYXNzIF9TdWNjZXNzIGV4dGVuZHMgUmVzcG9uc2Uge31cblxuLyoqXG4gKiBJbmRpY2F0ZXMgYSBTdWNjZXNzZnVsIFZlY3RvckNvdW50SXRlbXMgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFN1Y2Nlc3MgZXh0ZW5kcyBSZXNwb25zZVN1Y2Nlc3MoX1N1Y2Nlc3MpIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXRlbUNvdW50OiBudW1iZXI7XG4gIGNvbnN0cnVjdG9yKGl0ZW1Db3VudDogbnVtYmVyKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9pdGVtQ291bnQgPSBpdGVtQ291bnQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBzcGVjaWZpZWQgdmVjdG9yIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBzcGVjaWZpZWQgdmVjdG9yIGluZGV4LlxuICAgKi9cbiAgaXRlbUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1Db3VudDtcbiAgfVxufVxuXG5jbGFzcyBfRXJyb3IgZXh0ZW5kcyBSZXNwb25zZSB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfaW5uZXJFeGNlcHRpb246IFNka0Vycm9yKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxufVxuXG4vKipcbiAqIEluZGljYXRlcyB0aGF0IGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyB0aGUgVmVjdG9yQ291bnRJdGVtcyByZXF1ZXN0LlxuICpcbiAqIFRoaXMgcmVzcG9uc2Ugb2JqZWN0IGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgZmllbGRzIHRoYXQgeW91IGNhbiB1c2UgdG8gZGV0ZXJtaW5lXG4gKiBob3cgeW91IHdvdWxkIGxpa2UgdG8gaGFuZGxlIHRoZSBlcnJvcjpcbiAqXG4gKiAtIGBlcnJvckNvZGUoKWAgLSBhIHVuaXF1ZSBNb21lbnRvIGVycm9yIGNvZGUgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiBlcnJvciB0aGF0IG9jY3VycmVkLlxuICogLSBgbWVzc2FnZSgpYCAtIGEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIGVycm9yXG4gKiAtIGBpbm5lckV4Y2VwdGlvbigpYCAtIHRoZSBvcmlnaW5hbCBlcnJvciB0aGF0IGNhdXNlZCB0aGUgZmFpbHVyZTsgY2FuIGJlIHJlLXRocm93bi5cbiAqL1xuZXhwb3J0IGNsYXNzIEVycm9yIGV4dGVuZHMgUmVzcG9uc2VFcnJvcihfRXJyb3IpIHt9XG4iXX0=
|