@genialis/resolwe
Advanced tools
Comparing version 11.1.0 to 12.0.0
@@ -24,2 +24,1 @@ import * as Rx from 'rx'; | ||
} | ||
//# sourceMappingURL=auth.d.ts.map |
@@ -18,2 +18,1 @@ import * as Rx from 'rx'; | ||
} | ||
//# sourceMappingURL=base.d.ts.map |
@@ -220,2 +220,1 @@ import * as Rx from 'rx'; | ||
} | ||
//# sourceMappingURL=connection.d.ts.map |
@@ -48,2 +48,1 @@ import { GenError } from '../core/errors/error'; | ||
} | ||
//# sourceMappingURL=errors.d.ts.map |
@@ -38,2 +38,1 @@ import { Connection } from './connection'; | ||
} | ||
//# sourceMappingURL=index.d.ts.map |
@@ -5,3 +5,3 @@ import * as Rx from 'rx'; | ||
import { APIError } from './errors'; | ||
import { Query, Sample, Collection, Data } from './types/rest'; | ||
import { Query, Collection, Data } from './types/rest'; | ||
import { ResolweApi } from './index'; | ||
@@ -349,9 +349,4 @@ /** | ||
/** | ||
* Helper function for supporting filtering by descriptor_completed, which can be used as a [[MockQueryEvaluator]]. | ||
*/ | ||
export declare function annotatedQuery<T extends Sample>(query: any, items: T[]): T[]; | ||
/** | ||
* Helper function for supporting filtering by slug, which can be used as a [[MockQueryEvaluator]]. | ||
*/ | ||
export declare function slugQuery<T extends Collection | Data>(query: any, items: T[]): T[]; | ||
//# sourceMappingURL=mock.d.ts.map |
@@ -166,2 +166,1 @@ import * as Rx from 'rx'; | ||
} | ||
//# sourceMappingURL=queryobserver.d.ts.map |
@@ -325,2 +325,2 @@ "use strict"; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvcXVlcnlvYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUE0QjtBQUM1Qix1QkFBeUI7QUFDekIscUNBQXVDO0FBR3ZDLHFEQUFzRDtBQUN0RCxtQ0FBNkM7QUFFN0MsMEJBQTBCO0FBQ2IsUUFBQSxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBQ3hCLFFBQUEsZUFBZSxHQUFHLFNBQVMsQ0FBQztBQUM1QixRQUFBLGVBQWUsR0FBRyxTQUFTLENBQUM7QUFFekM7O0dBRUc7QUFDSCxJQUFZLG1CQU1YO0FBTkQsV0FBWSxtQkFBbUI7SUFDM0IsMkRBQUcsQ0FBQTtJQUNILDZFQUFZLENBQUE7SUFDWiwyRUFBVyxDQUFBO0lBQ1gsaUZBQWMsQ0FBQTtJQUNkLG1FQUFPLENBQUE7QUFDWCxDQUFDLEVBTlcsbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUFNOUI7QUFNRDs7O0dBR0c7QUFDSDtJQVVJOzs7OztPQUtHO0lBQ0gsdUJBQW1CLEVBQVUsRUFBVSxxQkFBMkM7UUFBbEYsaUJBU0M7UUFUa0IsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUFVLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDOUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQUMsUUFBUTtZQUNwRCxLQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1lBQ2pDLE9BQU8sS0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLENBQUM7UUFDaEMsQ0FB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QUNJLHFDQUFNLEdBQWIsVUFBYyxPQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0kseUNBQVUsR0FBakIsVUFBa0IsVUFBa0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLDJDQUFZLEdBQW5CO1FBQ0ksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQUMsUUFBUTtZQUMvQixRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0wsMkJBQUM7QUFBRCxDQXpJQSxBQXlJQyxJQUFBO0FBeklZLG9EQUFvQiIsImZpbGUiOiJhcGkvcXVlcnlvYnNlcnZlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIFJ4IGZyb20gJ3J4JztcbmltcG9ydCAqIGFzIGltbXV0YWJsZSBmcm9tICdpbW11dGFibGUnO1xuXG5pbXBvcnQge01lc3NhZ2UsIENvbm5lY3Rpb24sIFF1ZXJ5T2JzZXJ2ZXJSZXNwb25zZX0gZnJvbSAnLi9jb25uZWN0aW9uJztcbmltcG9ydCB7bWFrZUltbXV0YWJsZX0gZnJvbSAnLi4vY29yZS91dGlscy9pbW11dGFibGUnO1xuaW1wb3J0IHtRdWVyeU9ic2VydmVyc0Vycm9yfSBmcm9tICcuL2Vycm9ycyc7XG5cbi8vIFBvc3NpYmxlIG1lc3NhZ2UgdHlwZXMuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9BRERFRCA9ICdhZGRlZCc7XG5leHBvcnQgY29uc3QgTUVTU0FHRV9DSEFOR0VEID0gJ2NoYW5nZWQnO1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfUkVNT1ZFRCA9ICdyZW1vdmVkJztcblxuLyoqXG4gKiBWYWxpZCBxdWVyeSBvYnNlcnZlciBzdGF0dXNlcy5cbiAqL1xuZXhwb3J0IGVudW0gUXVlcnlPYnNlcnZlclN0YXR1cyB7XG4gICAgTkVXLFxuICAgIElOSVRJQUxJWklORyxcbiAgICBJTklUSUFMSVpFRCxcbiAgICBSRUlOSVRJQUxJWklORyxcbiAgICBTVE9QUEVEXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVpbml0aWFsaXplSGFuZGxlciB7XG4gICAgKCk6IFJ4Lk9ic2VydmFibGU8T2JqZWN0Pjtcbn1cblxuLyoqXG4gKiBBIGxvY2FsIGNvcHkgb2YgdGhlIHF1ZXJ5IG9ic2VydmVyIHRoYXQgaXMgc3luY2hyb25pemVkIHdpdGggdGhlIHJlbW90ZVxuICogaW5zdGFuY2Ugb24gdGhlIGdlbmVzaXMgcGxhdGZvcm0gc2VydmVyLlxuICovXG5leHBvcnQgY2xhc3MgUXVlcnlPYnNlcnZlciB7XG4gICAgcHVibGljIHN0YXR1czogUXVlcnlPYnNlcnZlclN0YXR1cztcbiAgICBwdWJsaWMgaXRlbXM6IGFueVtdO1xuICAgIHByaXZhdGUgX2l0ZW1zOiBpbW11dGFibGUuTGlzdDxhbnk+O1xuXG4gICAgcHJpdmF0ZSBfdXBkYXRlUXVldWU6IE1lc3NhZ2VbXTtcbiAgICBwcml2YXRlIF91cGRhdGVzT2JzZXJ2YWJsZTogUnguT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHByaXZhdGUgX3VwZGF0ZXNPYnNlcnZlcjogUnguT2JzZXJ2ZXI8YW55PjtcbiAgICBwcml2YXRlIF9yZWluaXRpYWxpemU6IFJlaW5pdGlhbGl6ZUhhbmRsZXI7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHF1ZXJ5IG9ic2VydmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGlkIFVuaXF1ZSBxdWVyeSBvYnNlcnZlciBpZGVudGlmaWVyXG4gICAgICogQHBhcmFtIHtRdWVyeU9ic2VydmVyTWFuYWdlcn0gcXVlcnlPYnNlcnZlck1hbmFnZXIgUXVlcnkgb2JzZXJ2ZXIgbWFuYWdlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBpZDogc3RyaW5nLCBwcml2YXRlIF9xdWVyeU9ic2VydmVyTWFuYWdlcjogUXVlcnlPYnNlcnZlck1hbmFnZXIpIHtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBRdWVyeU9ic2VydmVyU3RhdHVzLk5FVztcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLl9pdGVtcyA9IGltbXV0YWJsZS5MaXN0KCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVF1ZXVlID0gW107XG4gICAgICAgIHRoaXMuX3VwZGF0ZXNPYnNlcnZhYmxlID0gUnguT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVzT2JzZXJ2ZXIgPSBvYnNlcnZlcjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3AuYmluZCh0aGlzKTtcbiAgICAgICAgfSkucHVibGlzaCgpLnJlZkNvdW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RvcHMgdGhlIHF1ZXJ5IG9ic2VydmVyLiBUaGVyZSBzaG91bGQgYmUgbm8gbmVlZCB0byBjYWxsIHRoaXMgbWV0aG9kXG4gICAgICogbWFudWFsbHkuXG4gICAgICovXG4gICAgcHVibGljIHN0b3AoKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUXVlcnlPYnNlcnZlclN0YXR1cy5TVE9QUEVEO1xuICAgICAgICB0aGlzLl9xdWVyeU9ic2VydmVyTWFuYWdlci5yZW1vdmUodGhpcy5pZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB1cCBhIHJlaW5pdGlhbGl6YXRpb24gaGFuZGxlciBmb3IgdGhpcyBxdWVyeSBvYnNlcnZlci4gVGhlIGhhbmRsZXIgd2lsbCBiZVxuICAgICAqIGNhbGxlZCB3aGVuIHRoZSBxdWVyeSBvYnNlcnZlciBuZWVkcyB0byBiZSByZWluaXRpYWxpemVkIGFuZCBpdCBzaG91bGQgcmV0dXJuXG4gICAgICogYW4gUnguT2JzZXJ2YWJsZSwgd2hpY2ggcHJvZHVjZXMgdGhlIGluaXRpYWwgUXVlcnlPYnNlcnZlclJlc3BvbnNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWluaXRpYWxpemVIYW5kbGVyfSBoYW5kbGVyIFJlaW5pdGlhbGl6YXRpb24gaGFuZGxlclxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRSZWluaXRpYWxpemVIYW5kbGVyKGhhbmRsZXI6IFJlaW5pdGlhbGl6ZUhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy5fcmVpbml0aWFsaXplID0gaGFuZGxlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdGFydHMgcXVlcnkgb2JzZXJ2ZXIgcmVpbml0aWFsaXphdGlvbi4gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHNvbWVcbiAgICAgKiBpbnRlcm5hbCBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZXMgKGZvciBleGFtcGxlLCB3aGVuIHVzZXIgYXV0aGVudGljYXRpb24gc3RhdGVcbiAgICAgKiBpcyBjaGFuZ2VkKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVpbml0aWFsaXplKCkge1xuICAgICAgICBpZiAodGhpcy5zdGF0dXMgIT09IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXMuSU5JVElBTElaRUQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fcmVpbml0aWFsaXplKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBRdWVyeU9ic2VydmVyc0Vycm9yKCdBdHRlbXB0ZWQgdG8gcmVpbml0aWFsaXplIGEgUXVlcnlPYnNlcnZlciB3aXRob3V0IGEgcmVpbml0aWFsaXphdGlvbiBoYW5kbGVyJyk7XG4gICAgICAgICAgICB0aGlzLl9xdWVyeU9ic2VydmVyTWFuYWdlci5lcnJvck9ic2VydmVyLm9uTmV4dChlcnJvcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXR1cyA9IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXMuUkVJTklUSUFMSVpJTkc7XG4gICAgICAgIHRoaXMuX3JlaW5pdGlhbGl6ZSgpLnN1YnNjcmliZSgocmVzcG9uc2U6IFF1ZXJ5T2JzZXJ2ZXJSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgLy8gT2JzZXJ2ZXIgaWRlbnRpZmllciBtaWdodCBoYXZlIGNoYW5nZWQsIHVwZGF0ZSBvYnNlcnZlciBhbmQgbWFuYWdlci5cbiAgICAgICAgICAgIGNvbnN0IG9sZElkID0gdGhpcy5pZDtcbiAgICAgICAgICAgIHRoaXMuaWQgPSByZXNwb25zZS5vYnNlcnZlcjtcbiAgICAgICAgICAgIHRoaXMuX3F1ZXJ5T2JzZXJ2ZXJNYW5hZ2VyLm1vdmUob2xkSWQsIHRoaXMpO1xuXG4gICAgICAgICAgICAvLyBQZXJmb3JtIHJlaW5pdGlhbGl6YXRpb24uXG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXMuTkVXO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplKHJlc3BvbnNlLml0ZW1zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW92ZXMgYW4gZXhpc3RpbmcgcXVlcnkgb2JzZXJ2ZXIgaW50byB0aGlzIHF1ZXJ5IG9ic2VydmVyLiBUaGUgc291cmNlIHF1ZXJ5IG9ic2VydmVyXG4gICAgICogc2hvdWxkIGJlIGNvbnNpZGVyZWQgaW52YWxpZCBhZnRlciB0aGlzIG9wZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UXVlcnlPYnNlcnZlcn0gb2JzZXJ2ZXIgU291cmNlIHF1ZXJ5IG9ic2VydmVyXG4gICAgICovXG4gICAgcHVibGljIG1vdmVGcm9tKG9ic2VydmVyOiBRdWVyeU9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVF1ZXVlID0gb2JzZXJ2ZXIuX3VwZGF0ZVF1ZXVlO1xuICAgICAgICBvYnNlcnZlci5fdXBkYXRlUXVldWUgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIHRoZSBxdWVyeSBvYnNlcnZlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7YW55W119IGl0ZW1zIEFuIGluaXRpYWwgbGlzdCBvZiBpdGVtc1xuICAgICAqL1xuICAgIHB1YmxpYyBpbml0aWFsaXplKGl0ZW1zOiBhbnlbXSkge1xuICAgICAgICBpZiAodGhpcy5zdGF0dXMgIT09IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXMuTkVXKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChpdGVtcykpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IFF1ZXJ5T2JzZXJ2ZXJzRXJyb3IoJ0ludmFsaWQgcmVzcG9uc2UgcmVjZWl2ZWQgZnJvbSBiYWNrZW5kLCBpcyB0aGUgcmVzb3VyY2Ugb2JzZXJ2YWJsZT8nKTtcbiAgICAgICAgICAgIHRoaXMuX3F1ZXJ5T2JzZXJ2ZXJNYW5hZ2VyLmVycm9yT2JzZXJ2ZXIub25OZXh0KGVycm9yKTtcblxuICAgICAgICAgICAgaXRlbXMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2l0ZW1zID0gaW1tdXRhYmxlLmZyb21KUyhpdGVtcyk7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUXVlcnlPYnNlcnZlclN0YXR1cy5JTklUSUFMSVpJTkc7XG5cbiAgICAgICAgLy8gUHJvY2VzcyBhbGwgcXVldWVkIG1lc3NhZ2VzLlxuICAgICAgICBfLmZvckVhY2godGhpcy5fdXBkYXRlUXVldWUsIHRoaXMudXBkYXRlLmJpbmQodGhpcykpO1xuICAgICAgICB0aGlzLl91cGRhdGVRdWV1ZSA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5zdGF0dXMgPSBRdWVyeU9ic2VydmVyU3RhdHVzLklOSVRJQUxJWkVEO1xuICAgICAgICB0aGlzLl9ub3RpZnkoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBpdGVtIGNhY2hlIGJhc2VkIG9uIGFuIGluY29taW5nIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge01lc3NhZ2V9IG1lc3NhZ2UgTWVzc2FnZSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGUobWVzc2FnZTogTWVzc2FnZSkge1xuICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXMuU1RPUFBFRCB8fCB0aGlzLnN0YXR1cyA9PT0gUXVlcnlPYnNlcnZlclN0YXR1cy5SRUlOSVRJQUxJWklORykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdHVzID09PSBRdWVyeU9ic2VydmVyU3RhdHVzLk5FVykge1xuICAgICAgICAgICAgLy8gSnVzdCBxdWV1ZSB0aGUgdXBkYXRlIGZvciBsYXRlciBhcyB3ZSBoYXZlbid0IHlldCBiZWVuIGluaXRpYWxpemVkLlxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlUXVldWUucHVzaChtZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuX2l0ZW1zO1xuICAgICAgICBsZXQgaXRlbSA9IGltbXV0YWJsZS5mcm9tSlMobWVzc2FnZS5pdGVtKTtcbiAgICAgICAgc3dpdGNoIChtZXNzYWdlLm1zZykge1xuICAgICAgICAgICAgY2FzZSBNRVNTQUdFX0FEREVEOiB7XG4gICAgICAgICAgICAgICAgaXRlbXMgPSBpdGVtcy5pbnNlcnQobWVzc2FnZS5vcmRlciwgaXRlbSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIE1FU1NBR0VfUkVNT1ZFRDoge1xuICAgICAgICAgICAgICAgIGl0ZW1zID0gaXRlbXMuZmlsdGVyTm90KFxuICAgICAgICAgICAgICAgICAgICAob3RoZXIpID0+IGl0ZW0uZ2V0KG1lc3NhZ2UucHJpbWFyeV9rZXkpID09PSBvdGhlci5nZXQobWVzc2FnZS5wcmltYXJ5X2tleSlcbiAgICAgICAgICAgICAgICApLnRvTGlzdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBNRVNTQUdFX0NIQU5HRUQ6IHtcbiAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBpdGVtcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgIChvdGhlcikgPT4gaXRlbS5nZXQobWVzc2FnZS5wcmltYXJ5X2tleSkgPT09IG90aGVyLmdldChtZXNzYWdlLnByaW1hcnlfa2V5KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSBtZXNzYWdlLm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJdGVtIG9yZGVyIGhhcyBjaGFuZ2VkLCBtb3ZlIHRoZSBpdGVtLlxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSBpdGVtcy5yZW1vdmUoaW5kZXgpLmluc2VydChtZXNzYWdlLm9yZGVyLCBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gaXRlbXMuc2V0KGluZGV4LCBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBRdWVyeU9ic2VydmVyc0Vycm9yKGBVbmtub3duIG1lc3NhZ2UgdHlwZSAke21lc3NhZ2UubXNnfWApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXJ5T2JzZXJ2ZXJNYW5hZ2VyLmVycm9yT2JzZXJ2ZXIub25OZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7XG5cbiAgICAgICAgLy8gUHVzaCB1cGRhdGVzIHRvIGFsbCBzdWJzY3JpYmVycy5cbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSBRdWVyeU9ic2VydmVyU3RhdHVzLklOSVRJQUxJWkVEKSB7XG4gICAgICAgICAgICB0aGlzLl9ub3RpZnkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vdGlmaWVzIHN1YnNjcmliZXJzIG9mIG5ldyBpdGVtcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9ub3RpZnkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLl9pdGVtcy50b0pTKCk7XG4gICAgICAgIG1ha2VJbW11dGFibGUodGhpcy5pdGVtcyk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlc09ic2VydmVyLm9uTmV4dCh0aGlzLml0ZW1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCB3aWxsIGVtaXQgYSBsaXN0IG9mIGl0ZW1zIHdoZW4gYW55IGNoYW5nZXNcbiAgICAgKiBoYXBwZW4gdG8gdGhlIG9ic2VydmVkIHF1ZXJ5LlxuICAgICAqL1xuICAgIHB1YmxpYyBvYnNlcnZhYmxlKCk6IFJ4Lk9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVzT2JzZXJ2YWJsZTtcbiAgICB9XG59XG5cbi8qKlxuICogQSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIHF1ZXJ5IG9ic2VydmVycywgaW5kZXhlZCBieSB0aGVpciBpZGVudGlmaWVyLlxuICovXG5pbnRlcmZhY2UgUXVlcnlPYnNlcnZlck1hcCB7XG4gICAgW2luZGV4OiBzdHJpbmddOiBRdWVyeU9ic2VydmVyO1xufVxuXG4vKipcbiAqIE1hbmFnZXMgYWxsIGFjdGl2ZSBxdWVyeSBvYnNlcnZlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWVyeU9ic2VydmVyTWFuYWdlciB7XG4gICAgcHJpdmF0ZSBfb2JzZXJ2ZXJzOiBRdWVyeU9ic2VydmVyTWFwO1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQ2hhaW4gPSBQcm9taXNlLnJlc29sdmU8YW55Pih7fSk7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHF1ZXJ5IG9ic2VydmVyIG1hbmFnZXIuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY29ubmVjdGlvbjogQ29ubmVjdGlvbiwgcHJpdmF0ZSBfZXJyb3JzOiBSeC5PYnNlcnZlcjxRdWVyeU9ic2VydmVyc0Vycm9yPikge1xuICAgICAgICB0aGlzLl9vYnNlcnZlcnMgPSB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFcnJvciBvYnNlcnZlciBnZXR0ZXIgZm9yIG5vdGlmeWluZyBhYm91dCBxdWVyeSBvYnNlcnZlciBlcnJvcnMuXG4gICAgICovXG4gICAgcHVibGljIGdldCBlcnJvck9ic2VydmVyKCk6IFJ4Lk9ic2VydmVyPFF1ZXJ5T2JzZXJ2ZXJzRXJyb3I+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Vycm9ycztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcXVlcnkgb2JzZXJ2ZXIgd2l0aCBhIHNwZWNpZmljIGlkZW50aWZpZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JzZXJ2ZXJJZCBRdWVyeSBvYnNlcnZlciBpZGVudGlmaWVyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBjcmVhdGUgU2hvdWxkIGEgbmV3IHF1ZXJ5IG9ic2VydmVyIGJlIGNyZWF0ZWQgaWYgb25lIHdpdGggdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIGRvZXMgbm90IHlldCBleGlzdFxuICAgICAqIEByZXR1cm4ge1F1ZXJ5T2JzZXJ2ZXJ9IFF1ZXJ5IG9ic2VydmVyIGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIGdldChvYnNlcnZlcklkOiBzdHJpbmcsIGNyZWF0ZTogYm9vbGVhbiA9IHRydWUpOiBRdWVyeU9ic2VydmVyIHtcbiAgICAgICAgLy8gSWYgdGhlIHNwZWNpZmljIG9ic2VydmVyIGRvZXMgbm90IHlldCBleGlzdCwgY3JlYXRlIGEgbmV3IGVudHJ5LlxuICAgICAgICBsZXQgb2JzZXJ2ZXIgPSB0aGlzLl9vYnNlcnZlcnNbb2JzZXJ2ZXJJZF07XG4gICAgICAgIGlmICghb2JzZXJ2ZXIgJiYgY3JlYXRlKSB7XG4gICAgICAgICAgICBvYnNlcnZlciA9IG5ldyBRdWVyeU9ic2VydmVyKG9ic2VydmVySWQsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXJzW29ic2VydmVySWRdID0gb2JzZXJ2ZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JzZXJ2ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyBhIHF1ZXJ5IG9ic2VydmVyIHdpdGggdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9ic2VydmVySWQgUXVlcnkgb2JzZXJ2ZXIgaWRlbnRpZmllclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfZGVsZXRlT2JzZXJ2ZXIob2JzZXJ2ZXJJZDogc3RyaW5nKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9vYnNlcnZlcnNbb2JzZXJ2ZXJJZF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVxdWVzdHMgdGhlIGJhY2tlbmQgdG8gdW5zdWJzY3JpYmUgdXMgZnJvbSB0aGlzIG9ic2VydmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9ic2VydmVySWQgUXVlcnkgb2JzZXJ2ZXIgaWRlbnRpZmllclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdW5zdWJzY3JpYmU8VD4ob2JzZXJ2ZXJJZDogc3RyaW5nKTogUnguT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uLnBvc3Q8VD4oJy9hcGkvcXVlcnlvYnNlcnZlci91bnN1YnNjcmliZScsIHt9LCB7XG4gICAgICAgICAgICBvYnNlcnZlcjogb2JzZXJ2ZXJJZCxcbiAgICAgICAgICAgIHN1YnNjcmliZXI6IHRoaXMuX2Nvbm5lY3Rpb24uc2Vzc2lvbklkKCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSBxdWVyeSBvYnNlcnZlciB3aXRoIGEgc3BlY2lmaWMgaWRlbnRpZmllci5cbiAgICAgKlxuICAgICAqIFJ4IGhhcyBubyB3YXkgb2Ygd2FpdGluZyBmb3IgZGlzcG9zZSB0byBmaW5pc2gsIHRoYXQncyB3aHlcbiAgICAgKiB3ZSBkZWZlciByZWFjdGl2ZSBxdWVyaWVzIGFmdGVyIHVuc3Vic2NyaWJlIGlzIGZpbmlzaGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9ic2VydmVySWQgUXVlcnkgb2JzZXJ2ZXIgaWRlbnRpZmllclxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmUob2JzZXJ2ZXJJZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2RlbGV0ZU9ic2VydmVyKG9ic2VydmVySWQpO1xuXG4gICAgICAgIC8vIFVzaW5nIHByb21pc2VzLCBiZWNhdXNlIHdlIGNvdWxkbid0IGdldCBvYnNlcnZhYmxlcyB0byB1bnN1YnNjcmliZSBvbmx5IG9uY2UuXG4gICAgICAgIC8vIEV2ZW4gdXNpbmcgLnRha2UoMSkgZGlkbid0IHNlZW0gdG8gY29ycmVjdGx5IGxpbWl0IG51bWJlciBvZiBlbWl0c1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUNoYWluID0gdGhpcy5fdW5zdWJzY3JpYmVDaGFpbi50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl91bnN1YnNjcmliZShvYnNlcnZlcklkKS50b1Byb21pc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbHMgYSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYW4gb2JzZXJ2YWJsZSwgYWZ0ZXIgcHJldmlvdXMgdW5zdWJzY3JpYmUgcmVxdWVzdCBmaW5pc2hlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2hhaW5BZnRlclVuc3Vic2NyaWJlPFQ+KG1ha2VPYnNlcnZhYmxlOiAoKSA9PiBSeC5PYnNlcnZhYmxlPFQ+KTogUnguT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiBSeC5PYnNlcnZhYmxlLmZyb21Qcm9taXNlKHRoaXMuX3Vuc3Vic2NyaWJlQ2hhaW4pLmZsYXRNYXAoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1ha2VPYnNlcnZhYmxlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgYSBxdWVyeSBvYnNlcnZlcidzIGlkZW50aWZpZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2xkT2JzZXJ2ZXJJZCBPbGQgcXVlcnkgb2JzZXJ2ZXIgaWRlbnRpZmllclxuICAgICAqIEBwYXJhbSB7UXVlcnlPYnNlcnZlcn0gb2JzZXJ2ZXIgTmV3IHF1ZXJ5IG9ic2VydmVyXG4gICAgICovXG4gICAgcHVibGljIG1vdmUob2xkT2JzZXJ2ZXJJZDogc3RyaW5nLCBvYnNlcnZlcjogUXVlcnlPYnNlcnZlcikge1xuICAgICAgICBpZiAob2xkT2JzZXJ2ZXJJZCA9PT0gb2JzZXJ2ZXIuaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVtb3ZlKG9sZE9ic2VydmVySWQpO1xuXG4gICAgICAgIC8vIFRoZSBvYnNlcnZlciB3ZSBhcmUgbW92aW5nIGludG8gbWlnaHQgaGF2ZSBhbHJlYWR5IHJlY2VpdmVkIHNvbWUgbWVzc2FnZXMuIEluXG4gICAgICAgIC8vIHRoaXMgY2FzZSwgd2UgbmVlZCB0byBtb3ZlIHRoZSBxdWV1ZWQgbWVzc2FnZXMgdG8gdGhlIG9sZCBvYnNlcnZlci5cbiAgICAgICAgbGV0IGV4aXN0aW5nT2JzZXJ2ZXIgPSB0aGlzLl9vYnNlcnZlcnNbb2JzZXJ2ZXIuaWRdO1xuICAgICAgICBpZiAoZXhpc3RpbmdPYnNlcnZlcikge1xuICAgICAgICAgICAgb2JzZXJ2ZXIubW92ZUZyb20oZXhpc3RpbmdPYnNlcnZlcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vYnNlcnZlcnNbb2JzZXJ2ZXIuaWRdID0gb2JzZXJ2ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgcXVlcnkgb2JzZXJ2ZXJzIGJhc2VkIG9uIGFuIGluY29taW5nIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge01lc3NhZ2V9IG1lc3NhZ2UgTWVzc2FnZSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGUobWVzc2FnZTogTWVzc2FnZSkge1xuICAgICAgICB0aGlzLmdldChtZXNzYWdlLm9ic2VydmVyKS51cGRhdGUobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgd2lsbCBlbWl0IGEgbGlzdCBvZiBpdGVtcyB3aGVuIGFueSBjaGFuZ2VzXG4gICAgICogaGFwcGVuIHRvIHRoZSBvYnNlcnZlZCBxdWVyeS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvYnNlcnZlcklkIFF1ZXJ5IG9ic2VydmVyIGlkZW50aWZpZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgb2JzZXJ2YWJsZShvYnNlcnZlcklkOiBzdHJpbmcpOiBSeC5PYnNlcnZhYmxlPE9iamVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQob2JzZXJ2ZXJJZCkub2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcXVlc3RzIGFsbCBxdWVyeSBvYnNlcnZlcnMgdG8gc3RhcnQgcmVpbml0aWFsaXphdGlvbi5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBzb21lIGludGVybmFsIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlc1xuICAgICAqIChmb3IgZXhhbXBsZSwgd2hlbiB1c2VyIGF1dGhlbnRpY2F0aW9uIHN0YXRlIGlzIGNoYW5nZWQpLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWluaXRpYWxpemUoKSB7XG4gICAgICAgIF8uZm9yT3duKHRoaXMuX29ic2VydmVycywgKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICBvYnNlcnZlci5yZWluaXRpYWxpemUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvcXVlcnlvYnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUE0QjtBQUM1Qix1QkFBeUI7QUFDekIscUNBQXVDO0FBR3ZDLHFEQUFzRDtBQUN0RCxtQ0FBNkM7QUFFN0MsMEJBQTBCO0FBQ2IsUUFBQSxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBQ3hCLFFBQUEsZUFBZSxHQUFHLFNBQVMsQ0FBQztBQUM1QixRQUFBLGVBQWUsR0FBRyxTQUFTLENBQUM7QUFFekM7O0dBRUc7QUFDSCxJQUFZLG1CQU1YO0FBTkQsV0FBWSxtQkFBbUI7SUFDM0IsMkRBQUcsQ0FBQTtJQUNILDZFQUFZLENBQUE7SUFDWiwyRUFBVyxDQUFBO0lBQ1gsaUZBQWMsQ0FBQTtJQUNkLG1FQUFPLENBQUE7QUFDWCxDQUFDLEVBTlcsbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUFNOUI7QUFNRDs7O0dBR0c7QUFDSDtJQVVJOzs7OztPQUtHO0lBQ0gsdUJBQW1CLEVBQVUsRUFBVSxxQkFBMkM7UUFBbEYsaUJBU0M7UUFUa0IsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUFVLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDOUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQUMsUUFBUTtZQUNwRCxLQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1lBQ2pDLE9BQU8sS0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLENBQUM7UUFDaEMsQ0FB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QUNJLHFDQUFNLEdBQWIsVUFBYyxPQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0kseUNBQVUsR0FBakIsVUFBa0IsVUFBa0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLDJDQUFZLEdBQW5CO1FBQ0ksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQUMsUUFBUTtZQUMvQixRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0wsMkJBQUM7QUFBRCxDQXpJQSxBQXlJQyxJQUFBO0FBeklZLG9EQUFvQiIsImZpbGUiOiJhcGkvcXVlcnlvYnNlcnZlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIFJ4IGZyb20gJ3J4JztcbmltcG9ydCAqIGFzIGltbXV0YWJsZSBmcm9tICdpbW11dGFibGUnO1xuXG5pbXBvcnQge01lc3NhZ2UsIENvbm5lY3Rpb24sIFF1ZXJ5T2JzZXJ2ZXJSZXNwb25zZX0gZnJvbSAnLi9jb25uZWN0aW9uJztcbmltcG9ydCB7bWFrZUltbXV0YWJsZX0gZnJvbSAnLi4vY29yZS91dGlscy9pbW11dGFibGUnO1xuaW1wb3J0IHtRdWVyeU9ic2VydmVyc0Vycm9yfSBmcm9tICcuL2Vycm9ycyc7XG5cbi8vIFBvc3NpYmxlIG1lc3NhZ2UgdHlwZXMuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9BRERFRCA9ICdhZGRlZCc7XG5leHBvcnQgY29uc3QgTUVTU0FHRV9DSEFOR0VEID0gJ2NoYW5nZWQnO1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfUkVNT1ZFRCA9ICdyZW1vdmVkJztcblxuLyoqXG4gKiBWYWxpZCBxdWVyeSBvYnNlcnZlciBzdGF0dXNlcy5cbiAqL1xuZXhwb3J0IGVudW0gUXVlcnlPYnNlcnZlclN0YXR1cyB7XG4gICAgTkVXLFxuICAgIElOSVRJQUxJWklORyxcbiAgICBJTklUSUFMSVpFRCxcbiAgICBSRUlOSVRJQUxJWklORyxcbiAgICBTVE9QUEVELFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlaW5pdGlhbGl6ZUhhbmRsZXIge1xuICAgICgpOiBSeC5PYnNlcnZhYmxlPE9iamVjdD47XG59XG5cbi8qKlxuICogQSBsb2NhbCBjb3B5IG9mIHRoZSBxdWVyeSBvYnNlcnZlciB0aGF0IGlzIHN5bmNocm9uaXplZCB3aXRoIHRoZSByZW1vdGVcbiAqIGluc3RhbmNlIG9uIHRoZSBnZW5lc2lzIHBsYXRmb3JtIHNlcnZlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFF1ZXJ5T2JzZXJ2ZXIge1xuICAgIHB1YmxpYyBzdGF0dXM6IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXM7XG4gICAgcHVibGljIGl0ZW1zOiBhbnlbXTtcbiAgICBwcml2YXRlIF9pdGVtczogaW1tdXRhYmxlLkxpc3Q8YW55PjtcblxuICAgIHByaXZhdGUgX3VwZGF0ZVF1ZXVlOiBNZXNzYWdlW107XG4gICAgcHJpdmF0ZSBfdXBkYXRlc09ic2VydmFibGU6IFJ4Lk9ic2VydmFibGU8YW55PjtcbiAgICBwcml2YXRlIF91cGRhdGVzT2JzZXJ2ZXI6IFJ4Lk9ic2VydmVyPGFueT47XG4gICAgcHJpdmF0ZSBfcmVpbml0aWFsaXplOiBSZWluaXRpYWxpemVIYW5kbGVyO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBxdWVyeSBvYnNlcnZlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBVbmlxdWUgcXVlcnkgb2JzZXJ2ZXIgaWRlbnRpZmllclxuICAgICAqIEBwYXJhbSB7UXVlcnlPYnNlcnZlck1hbmFnZXJ9IHF1ZXJ5T2JzZXJ2ZXJNYW5hZ2VyIFF1ZXJ5IG9ic2VydmVyIG1hbmFnZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaWQ6IHN0cmluZywgcHJpdmF0ZSBfcXVlcnlPYnNlcnZlck1hbmFnZXI6IFF1ZXJ5T2JzZXJ2ZXJNYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUXVlcnlPYnNlcnZlclN0YXR1cy5ORVc7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5faXRlbXMgPSBpbW11dGFibGUuTGlzdCgpO1xuICAgICAgICB0aGlzLl91cGRhdGVRdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLl91cGRhdGVzT2JzZXJ2YWJsZSA9IFJ4Lk9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlc09ic2VydmVyID0gb2JzZXJ2ZXI7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9wLmJpbmQodGhpcyk7XG4gICAgICAgIH0pLnB1Ymxpc2goKS5yZWZDb3VudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0b3BzIHRoZSBxdWVyeSBvYnNlcnZlci4gVGhlcmUgc2hvdWxkIGJlIG5vIG5lZWQgdG8gY2FsbCB0aGlzIG1ldGhvZFxuICAgICAqIG1hbnVhbGx5LlxuICAgICAqL1xuICAgIHB1YmxpYyBzdG9wKCkge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXMuU1RPUFBFRDtcbiAgICAgICAgdGhpcy5fcXVlcnlPYnNlcnZlck1hbmFnZXIucmVtb3ZlKHRoaXMuaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdXAgYSByZWluaXRpYWxpemF0aW9uIGhhbmRsZXIgZm9yIHRoaXMgcXVlcnkgb2JzZXJ2ZXIuIFRoZSBoYW5kbGVyIHdpbGwgYmVcbiAgICAgKiBjYWxsZWQgd2hlbiB0aGUgcXVlcnkgb2JzZXJ2ZXIgbmVlZHMgdG8gYmUgcmVpbml0aWFsaXplZCBhbmQgaXQgc2hvdWxkIHJldHVyblxuICAgICAqIGFuIFJ4Lk9ic2VydmFibGUsIHdoaWNoIHByb2R1Y2VzIHRoZSBpbml0aWFsIFF1ZXJ5T2JzZXJ2ZXJSZXNwb25zZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVpbml0aWFsaXplSGFuZGxlcn0gaGFuZGxlciBSZWluaXRpYWxpemF0aW9uIGhhbmRsZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UmVpbml0aWFsaXplSGFuZGxlcihoYW5kbGVyOiBSZWluaXRpYWxpemVIYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuX3JlaW5pdGlhbGl6ZSA9IGhhbmRsZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RhcnRzIHF1ZXJ5IG9ic2VydmVyIHJlaW5pdGlhbGl6YXRpb24uIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBzb21lXG4gICAgICogaW50ZXJuYWwgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VzIChmb3IgZXhhbXBsZSwgd2hlbiB1c2VyIGF1dGhlbnRpY2F0aW9uIHN0YXRlXG4gICAgICogaXMgY2hhbmdlZCkuXG4gICAgICovXG4gICAgcHVibGljIHJlaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzICE9PSBRdWVyeU9ic2VydmVyU3RhdHVzLklOSVRJQUxJWkVEKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX3JlaW5pdGlhbGl6ZSkge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgUXVlcnlPYnNlcnZlcnNFcnJvcignQXR0ZW1wdGVkIHRvIHJlaW5pdGlhbGl6ZSBhIFF1ZXJ5T2JzZXJ2ZXIgd2l0aG91dCBhIHJlaW5pdGlhbGl6YXRpb24gaGFuZGxlcicpO1xuICAgICAgICAgICAgdGhpcy5fcXVlcnlPYnNlcnZlck1hbmFnZXIuZXJyb3JPYnNlcnZlci5vbk5leHQoZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGF0dXMgPSBRdWVyeU9ic2VydmVyU3RhdHVzLlJFSU5JVElBTElaSU5HO1xuICAgICAgICB0aGlzLl9yZWluaXRpYWxpemUoKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBRdWVyeU9ic2VydmVyUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIC8vIE9ic2VydmVyIGlkZW50aWZpZXIgbWlnaHQgaGF2ZSBjaGFuZ2VkLCB1cGRhdGUgb2JzZXJ2ZXIgYW5kIG1hbmFnZXIuXG4gICAgICAgICAgICBjb25zdCBvbGRJZCA9IHRoaXMuaWQ7XG4gICAgICAgICAgICB0aGlzLmlkID0gcmVzcG9uc2Uub2JzZXJ2ZXI7XG4gICAgICAgICAgICB0aGlzLl9xdWVyeU9ic2VydmVyTWFuYWdlci5tb3ZlKG9sZElkLCB0aGlzKTtcblxuICAgICAgICAgICAgLy8gUGVyZm9ybSByZWluaXRpYWxpemF0aW9uLlxuICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBRdWVyeU9ic2VydmVyU3RhdHVzLk5FVztcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZShyZXNwb25zZS5pdGVtcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vdmVzIGFuIGV4aXN0aW5nIHF1ZXJ5IG9ic2VydmVyIGludG8gdGhpcyBxdWVyeSBvYnNlcnZlci4gVGhlIHNvdXJjZSBxdWVyeSBvYnNlcnZlclxuICAgICAqIHNob3VsZCBiZSBjb25zaWRlcmVkIGludmFsaWQgYWZ0ZXIgdGhpcyBvcGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1F1ZXJ5T2JzZXJ2ZXJ9IG9ic2VydmVyIFNvdXJjZSBxdWVyeSBvYnNlcnZlclxuICAgICAqL1xuICAgIHB1YmxpYyBtb3ZlRnJvbShvYnNlcnZlcjogUXVlcnlPYnNlcnZlcikge1xuICAgICAgICB0aGlzLl91cGRhdGVRdWV1ZSA9IG9ic2VydmVyLl91cGRhdGVRdWV1ZTtcbiAgICAgICAgb2JzZXJ2ZXIuX3VwZGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyB0aGUgcXVlcnkgb2JzZXJ2ZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2FueVtdfSBpdGVtcyBBbiBpbml0aWFsIGxpc3Qgb2YgaXRlbXNcbiAgICAgKi9cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZShpdGVtczogYW55W10pIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzICE9PSBRdWVyeU9ic2VydmVyU3RhdHVzLk5FVykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoaXRlbXMpKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBRdWVyeU9ic2VydmVyc0Vycm9yKCdJbnZhbGlkIHJlc3BvbnNlIHJlY2VpdmVkIGZyb20gYmFja2VuZCwgaXMgdGhlIHJlc291cmNlIG9ic2VydmFibGU/Jyk7XG4gICAgICAgICAgICB0aGlzLl9xdWVyeU9ic2VydmVyTWFuYWdlci5lcnJvck9ic2VydmVyLm9uTmV4dChlcnJvcik7XG5cbiAgICAgICAgICAgIGl0ZW1zID0gW107XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pdGVtcyA9IGltbXV0YWJsZS5mcm9tSlMoaXRlbXMpO1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXMuSU5JVElBTElaSU5HO1xuXG4gICAgICAgIC8vIFByb2Nlc3MgYWxsIHF1ZXVlZCBtZXNzYWdlcy5cbiAgICAgICAgXy5mb3JFYWNoKHRoaXMuX3VwZGF0ZVF1ZXVlLCB0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlUXVldWUgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuc3RhdHVzID0gUXVlcnlPYnNlcnZlclN0YXR1cy5JTklUSUFMSVpFRDtcbiAgICAgICAgdGhpcy5fbm90aWZ5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgaXRlbSBjYWNoZSBiYXNlZCBvbiBhbiBpbmNvbWluZyBtZXNzYWdlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtNZXNzYWdlfSBtZXNzYWdlIE1lc3NhZ2UgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSBRdWVyeU9ic2VydmVyU3RhdHVzLlNUT1BQRUQgfHwgdGhpcy5zdGF0dXMgPT09IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXMuUkVJTklUSUFMSVpJTkcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXR1cyA9PT0gUXVlcnlPYnNlcnZlclN0YXR1cy5ORVcpIHtcbiAgICAgICAgICAgIC8vIEp1c3QgcXVldWUgdGhlIHVwZGF0ZSBmb3IgbGF0ZXIgYXMgd2UgaGF2ZW4ndCB5ZXQgYmVlbiBpbml0aWFsaXplZC5cbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVF1ZXVlLnB1c2gobWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLl9pdGVtcztcbiAgICAgICAgbGV0IGl0ZW0gPSBpbW11dGFibGUuZnJvbUpTKG1lc3NhZ2UuaXRlbSk7XG4gICAgICAgIHN3aXRjaCAobWVzc2FnZS5tc2cpIHtcbiAgICAgICAgICAgIGNhc2UgTUVTU0FHRV9BRERFRDoge1xuICAgICAgICAgICAgICAgIGl0ZW1zID0gaXRlbXMuaW5zZXJ0KG1lc3NhZ2Uub3JkZXIsIGl0ZW0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBNRVNTQUdFX1JFTU9WRUQ6IHtcbiAgICAgICAgICAgICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlck5vdChcbiAgICAgICAgICAgICAgICAgICAgKG90aGVyKSA9PiBpdGVtLmdldChtZXNzYWdlLnByaW1hcnlfa2V5KSA9PT0gb3RoZXIuZ2V0KG1lc3NhZ2UucHJpbWFyeV9rZXkpXG4gICAgICAgICAgICAgICAgKS50b0xpc3QoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgTUVTU0FHRV9DSEFOR0VEOiB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gaXRlbXMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgICAgICAob3RoZXIpID0+IGl0ZW0uZ2V0KG1lc3NhZ2UucHJpbWFyeV9rZXkpID09PSBvdGhlci5nZXQobWVzc2FnZS5wcmltYXJ5X2tleSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gbWVzc2FnZS5vcmRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXRlbSBvcmRlciBoYXMgY2hhbmdlZCwgbW92ZSB0aGUgaXRlbS5cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gaXRlbXMucmVtb3ZlKGluZGV4KS5pbnNlcnQobWVzc2FnZS5vcmRlciwgaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyA9IGl0ZW1zLnNldChpbmRleCwgaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgUXVlcnlPYnNlcnZlcnNFcnJvcihgVW5rbm93biBtZXNzYWdlIHR5cGUgJHttZXNzYWdlLm1zZ31gKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9xdWVyeU9ic2VydmVyTWFuYWdlci5lcnJvck9ic2VydmVyLm9uTmV4dChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zO1xuXG4gICAgICAgIC8vIFB1c2ggdXBkYXRlcyB0byBhbGwgc3Vic2NyaWJlcnMuXG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gUXVlcnlPYnNlcnZlclN0YXR1cy5JTklUSUFMSVpFRCkge1xuICAgICAgICAgICAgdGhpcy5fbm90aWZ5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOb3RpZmllcyBzdWJzY3JpYmVycyBvZiBuZXcgaXRlbXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbm90aWZ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5faXRlbXMudG9KUygpO1xuICAgICAgICBtYWtlSW1tdXRhYmxlKHRoaXMuaXRlbXMpO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZXNPYnNlcnZlci5vbk5leHQodGhpcy5pdGVtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgd2lsbCBlbWl0IGEgbGlzdCBvZiBpdGVtcyB3aGVuIGFueSBjaGFuZ2VzXG4gICAgICogaGFwcGVuIHRvIHRoZSBvYnNlcnZlZCBxdWVyeS5cbiAgICAgKi9cbiAgICBwdWJsaWMgb2JzZXJ2YWJsZSgpOiBSeC5PYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRlc09ic2VydmFibGU7XG4gICAgfVxufVxuXG4vKipcbiAqIEEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBxdWVyeSBvYnNlcnZlcnMsIGluZGV4ZWQgYnkgdGhlaXIgaWRlbnRpZmllci5cbiAqL1xuaW50ZXJmYWNlIFF1ZXJ5T2JzZXJ2ZXJNYXAge1xuICAgIFtpbmRleDogc3RyaW5nXTogUXVlcnlPYnNlcnZlcjtcbn1cblxuLyoqXG4gKiBNYW5hZ2VzIGFsbCBhY3RpdmUgcXVlcnkgb2JzZXJ2ZXJzLlxuICovXG5leHBvcnQgY2xhc3MgUXVlcnlPYnNlcnZlck1hbmFnZXIge1xuICAgIHByaXZhdGUgX29ic2VydmVyczogUXVlcnlPYnNlcnZlck1hcDtcbiAgICBwcml2YXRlIF91bnN1YnNjcmliZUNoYWluID0gUHJvbWlzZS5yZXNvbHZlPGFueT4oe30pO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBxdWVyeSBvYnNlcnZlciBtYW5hZ2VyLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Nvbm5lY3Rpb246IENvbm5lY3Rpb24sIHByaXZhdGUgX2Vycm9yczogUnguT2JzZXJ2ZXI8UXVlcnlPYnNlcnZlcnNFcnJvcj4pIHtcbiAgICAgICAgdGhpcy5fb2JzZXJ2ZXJzID0ge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXJyb3Igb2JzZXJ2ZXIgZ2V0dGVyIGZvciBub3RpZnlpbmcgYWJvdXQgcXVlcnkgb2JzZXJ2ZXIgZXJyb3JzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZXJyb3JPYnNlcnZlcigpOiBSeC5PYnNlcnZlcjxRdWVyeU9ic2VydmVyc0Vycm9yPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lcnJvcnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHF1ZXJ5IG9ic2VydmVyIHdpdGggYSBzcGVjaWZpYyBpZGVudGlmaWVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9ic2VydmVySWQgUXVlcnkgb2JzZXJ2ZXIgaWRlbnRpZmllclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY3JlYXRlIFNob3VsZCBhIG5ldyBxdWVyeSBvYnNlcnZlciBiZSBjcmVhdGVkIGlmIG9uZSB3aXRoIHRoZSBzcGVjaWZpZWQgaWRlbnRpZmllciBkb2VzIG5vdCB5ZXQgZXhpc3RcbiAgICAgKiBAcmV0dXJuIHtRdWVyeU9ic2VydmVyfSBRdWVyeSBvYnNlcnZlciBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQob2JzZXJ2ZXJJZDogc3RyaW5nLCBjcmVhdGU6IGJvb2xlYW4gPSB0cnVlKTogUXVlcnlPYnNlcnZlciB7XG4gICAgICAgIC8vIElmIHRoZSBzcGVjaWZpYyBvYnNlcnZlciBkb2VzIG5vdCB5ZXQgZXhpc3QsIGNyZWF0ZSBhIG5ldyBlbnRyeS5cbiAgICAgICAgbGV0IG9ic2VydmVyID0gdGhpcy5fb2JzZXJ2ZXJzW29ic2VydmVySWRdO1xuICAgICAgICBpZiAoIW9ic2VydmVyICYmIGNyZWF0ZSkge1xuICAgICAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgUXVlcnlPYnNlcnZlcihvYnNlcnZlcklkLCB0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuX29ic2VydmVyc1tvYnNlcnZlcklkXSA9IG9ic2VydmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9ic2VydmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYSBxdWVyeSBvYnNlcnZlciB3aXRoIHRoZSBzcGVjaWZpZWQgaWRlbnRpZmllci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvYnNlcnZlcklkIFF1ZXJ5IG9ic2VydmVyIGlkZW50aWZpZXJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2RlbGV0ZU9ic2VydmVyKG9ic2VydmVySWQ6IHN0cmluZykge1xuICAgICAgICBkZWxldGUgdGhpcy5fb2JzZXJ2ZXJzW29ic2VydmVySWRdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcXVlc3RzIHRoZSBiYWNrZW5kIHRvIHVuc3Vic2NyaWJlIHVzIGZyb20gdGhpcyBvYnNlcnZlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvYnNlcnZlcklkIFF1ZXJ5IG9ic2VydmVyIGlkZW50aWZpZXJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3Vuc3Vic2NyaWJlPFQ+KG9ic2VydmVySWQ6IHN0cmluZyk6IFJ4Lk9ic2VydmFibGU8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5wb3N0PFQ+KCcvYXBpL3F1ZXJ5b2JzZXJ2ZXIvdW5zdWJzY3JpYmUnLCB7fSwge1xuICAgICAgICAgICAgb2JzZXJ2ZXI6IG9ic2VydmVySWQsXG4gICAgICAgICAgICBzdWJzY3JpYmVyOiB0aGlzLl9jb25uZWN0aW9uLnNlc3Npb25JZCgpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgcXVlcnkgb2JzZXJ2ZXIgd2l0aCBhIHNwZWNpZmljIGlkZW50aWZpZXIuXG4gICAgICpcbiAgICAgKiBSeCBoYXMgbm8gd2F5IG9mIHdhaXRpbmcgZm9yIGRpc3Bvc2UgdG8gZmluaXNoLCB0aGF0J3Mgd2h5XG4gICAgICogd2UgZGVmZXIgcmVhY3RpdmUgcXVlcmllcyBhZnRlciB1bnN1YnNjcmliZSBpcyBmaW5pc2hlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvYnNlcnZlcklkIFF1ZXJ5IG9ic2VydmVyIGlkZW50aWZpZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlKG9ic2VydmVySWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9kZWxldGVPYnNlcnZlcihvYnNlcnZlcklkKTtcblxuICAgICAgICAvLyBVc2luZyBwcm9taXNlcywgYmVjYXVzZSB3ZSBjb3VsZG4ndCBnZXQgb2JzZXJ2YWJsZXMgdG8gdW5zdWJzY3JpYmUgb25seSBvbmNlLlxuICAgICAgICAvLyBFdmVuIHVzaW5nIC50YWtlKDEpIGRpZG4ndCBzZWVtIHRvIGNvcnJlY3RseSBsaW1pdCBudW1iZXIgb2YgZW1pdHNcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVDaGFpbiA9IHRoaXMuX3Vuc3Vic2NyaWJlQ2hhaW4udGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdW5zdWJzY3JpYmUob2JzZXJ2ZXJJZCkudG9Qcm9taXNlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxzIGEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGFuIG9ic2VydmFibGUsIGFmdGVyIHByZXZpb3VzIHVuc3Vic2NyaWJlIHJlcXVlc3QgZmluaXNoZXMuXG4gICAgICovXG4gICAgcHVibGljIGNoYWluQWZ0ZXJVbnN1YnNjcmliZTxUPihtYWtlT2JzZXJ2YWJsZTogKCkgPT4gUnguT2JzZXJ2YWJsZTxUPik6IFJ4Lk9ic2VydmFibGU8VD4ge1xuICAgICAgICByZXR1cm4gUnguT2JzZXJ2YWJsZS5mcm9tUHJvbWlzZSh0aGlzLl91bnN1YnNjcmliZUNoYWluKS5mbGF0TWFwKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtYWtlT2JzZXJ2YWJsZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2VzIGEgcXVlcnkgb2JzZXJ2ZXIncyBpZGVudGlmaWVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9sZE9ic2VydmVySWQgT2xkIHF1ZXJ5IG9ic2VydmVyIGlkZW50aWZpZXJcbiAgICAgKiBAcGFyYW0ge1F1ZXJ5T2JzZXJ2ZXJ9IG9ic2VydmVyIE5ldyBxdWVyeSBvYnNlcnZlclxuICAgICAqL1xuICAgIHB1YmxpYyBtb3ZlKG9sZE9ic2VydmVySWQ6IHN0cmluZywgb2JzZXJ2ZXI6IFF1ZXJ5T2JzZXJ2ZXIpIHtcbiAgICAgICAgaWYgKG9sZE9ic2VydmVySWQgPT09IG9ic2VydmVyLmlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbW92ZShvbGRPYnNlcnZlcklkKTtcblxuICAgICAgICAvLyBUaGUgb2JzZXJ2ZXIgd2UgYXJlIG1vdmluZyBpbnRvIG1pZ2h0IGhhdmUgYWxyZWFkeSByZWNlaXZlZCBzb21lIG1lc3NhZ2VzLiBJblxuICAgICAgICAvLyB0aGlzIGNhc2UsIHdlIG5lZWQgdG8gbW92ZSB0aGUgcXVldWVkIG1lc3NhZ2VzIHRvIHRoZSBvbGQgb2JzZXJ2ZXIuXG4gICAgICAgIGxldCBleGlzdGluZ09ic2VydmVyID0gdGhpcy5fb2JzZXJ2ZXJzW29ic2VydmVyLmlkXTtcbiAgICAgICAgaWYgKGV4aXN0aW5nT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLm1vdmVGcm9tKGV4aXN0aW5nT2JzZXJ2ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb2JzZXJ2ZXJzW29ic2VydmVyLmlkXSA9IG9ic2VydmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIHF1ZXJ5IG9ic2VydmVycyBiYXNlZCBvbiBhbiBpbmNvbWluZyBtZXNzYWdlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtNZXNzYWdlfSBtZXNzYWdlIE1lc3NhZ2UgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy5nZXQobWVzc2FnZS5vYnNlcnZlcikudXBkYXRlKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IHdpbGwgZW1pdCBhIGxpc3Qgb2YgaXRlbXMgd2hlbiBhbnkgY2hhbmdlc1xuICAgICAqIGhhcHBlbiB0byB0aGUgb2JzZXJ2ZWQgcXVlcnkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JzZXJ2ZXJJZCBRdWVyeSBvYnNlcnZlciBpZGVudGlmaWVyXG4gICAgICovXG4gICAgcHVibGljIG9ic2VydmFibGUob2JzZXJ2ZXJJZDogc3RyaW5nKTogUnguT2JzZXJ2YWJsZTxPYmplY3Q+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KG9ic2VydmVySWQpLm9ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXF1ZXN0cyBhbGwgcXVlcnkgb2JzZXJ2ZXJzIHRvIHN0YXJ0IHJlaW5pdGlhbGl6YXRpb24uXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIHdoZW4gc29tZSBpbnRlcm5hbCBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZXNcbiAgICAgKiAoZm9yIGV4YW1wbGUsIHdoZW4gdXNlciBhdXRoZW50aWNhdGlvbiBzdGF0ZSBpcyBjaGFuZ2VkKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVpbml0aWFsaXplKCkge1xuICAgICAgICBfLmZvck93bih0aGlzLl9vYnNlcnZlcnMsIChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgb2JzZXJ2ZXIucmVpbml0aWFsaXplKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ== |
@@ -49,2 +49,1 @@ import * as Rx from 'rx'; | ||
} | ||
//# sourceMappingURL=resource.d.ts.map |
@@ -6,2 +6,3 @@ "use strict"; | ||
var queryobserver_1 = require("./queryobserver"); | ||
var error_1 = require("../core/errors/error"); | ||
/** | ||
@@ -65,3 +66,3 @@ * An abstract resource class. | ||
if (hasEmptyInArray) | ||
console.error('Invalid parameter *__in=empty in query', query); | ||
throw new error_1.GenError('Invalid parameter *__in=empty in query'); | ||
}; | ||
@@ -172,2 +173,2 @@ /** | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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S0FBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsRUFBRSxVQUFDLE9BQU87d0JBQzVGLHlDQUF5Qzt3QkFDekMsT0FBTyxPQUFPLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQztvQkFDbkQsQ0FBQyxDQUFDLENBQUM7aUJBQ047WUFDTCxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBQ0wsZUFBQztBQUFELENBektBLEFBeUtDLElBQUE7QUF6S3FCLDRCQUFRIiwiZmlsZSI6ImFwaS9yZXNvdXJjZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIFJ4IGZyb20gJ3J4JztcblxuaW1wb3J0IHtDb25uZWN0aW9uLCBRdWVyeU9ic2VydmVyUmVzcG9uc2V9IGZyb20gJy4vY29ubmVjdGlvbic7XG5pbXBvcnQge1F1ZXJ5T2JzZXJ2ZXJTdGF0dXN9IGZyb20gJy4vcXVlcnlvYnNlcnZlcic7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL3R5cGVzL3Jlc3QnO1xuXG4vKipcbiAqIEEgbWFwcGluZyBvZiBxdWVyaWVzIHRvIHRoZWlyIHF1ZXJ5IG9ic2VydmVyIGlkZW50aWZpZXJzLCBzbyB0aGF0IHdlIGRvbid0XG4gKiBuZWVkIHRvIGhpdCB0aGUgc2VydmVyIGluIGNhc2UgdGhlIGlkZW50aWZpZXIgaXMgYWxyZWFkeSBrbm93bi5cbiAqL1xuaW50ZXJmYWNlIFF1ZXJ5T2JzZXJ2ZXJJZENhY2hlIHtcbiAgICBbaW5kZXg6IHN0cmluZ106IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFBlbmRpbmdRdWVyaWVzIHtcbiAgICBbaW5kZXg6IHN0cmluZ106IHtcbiAgICAgICAgc3Vic2NyaXB0aW9uczogUnguRGlzcG9zYWJsZVtdO1xuICAgICAgICBvYnNlcnZlcjogUnguT2JzZXJ2ZXI8YW55PjtcbiAgICB9W107XG59XG5cbi8qKlxuICogUGVyLXF1ZXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWVyeU9wdGlvbnMge1xuICAgIHJlYWN0aXZlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBbiBhYnN0cmFjdCByZXNvdXJjZSBjbGFzcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlc291cmNlIHtcbiAgICAvLyBDYWNoZSBxdWVyeSBvYnNlcnZlciBpZGVudGlmaWVycy5cbiAgICBwcml2YXRlIF9xdWVyeU9ic2VydmVySWRDYWNoZTogUXVlcnlPYnNlcnZlcklkQ2FjaGUgPSB7fTtcbiAgICBwcml2YXRlIF9wZW5kaW5nUXVlcmllczogUGVuZGluZ1F1ZXJpZXMgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgcmVzb3VyY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29ubmVjdGlvbiBDb25uZWN0aW9uIHdpdGggdGhlIGdlbmVzaXMgcGxhdGZvcm0gc2VydmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY29ubmVjdGlvbjogQ29ubmVjdGlvbikge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbm5lY3Rpb24gdG8gdGhlIGdlbmVzaXMtcGxhdGZvcm0gc2VydmVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29ubmVjdGlvbigpOiBDb25uZWN0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBiYXNlIHBhdGggdGhhdCByZXNvdXJjZSBwYXRoIGlzIGJhc2VkIHVwb24uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldEJhc2VQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgL2FwaWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYW55IHF1ZXJ5IHRyYW5zZm9ybWF0aW9ucyBuZWVkZWQgZm9yIHRoaXMgcmVzb3VyY2UuIFRoZVxuICAgICAqIG9yaWdpbmFsIHF1ZXJ5IG9iamVjdCBpcyBub3QgbW9kaWZpZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcXVlcnkgUXVlcnlcbiAgICAgKiBAcmV0dXJuIFRyYW5zZm9ybWVkIHF1ZXJ5XG4gICAgICovXG4gICAgcHJvdGVjdGVkIHRyYW5zZm9ybVF1ZXJ5KHF1ZXJ5OiB0eXBlcy5RdWVyeSk6IHR5cGVzLlF1ZXJ5IHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVQYXJhbWV0ZXJzKHF1ZXJ5KTtcbiAgICAgICAgcmV0dXJuIF8uY2xvbmVEZWVwKHRoaXMuX2ZpeFF1ZXJ5Rm9yRWxhc3RpY1NlYXJjaChxdWVyeSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpeFF1ZXJ5Rm9yRWxhc3RpY1NlYXJjaChxdWVyeTogdHlwZXMuUXVlcnkpOiB0eXBlcy5RdWVyeSB7XG4gICAgICAgIC8vIE1vdmUgYF9faW5gIHF1ZXJ5IGtleXMgdG8gdGhlIGVuZC5cbiAgICAgICAgLy8gVE9ETzogcmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCB3aGVuIGVsYXN0aWMgc2VhcmNoIGlzIGZpeGVkIGFuZCB0aGVzZSBib3RoIHJldHVybiByZXN1bHRzXG4gICAgICAgIC8vIC9hcGkvZGF0YT9lbnRpdHlfX2luPTI3MjYmY29sbGVjdGlvbj0yNDYmdGFncz1jb21tdW5pdHklM0FleHByZXNzaW9uc1xuICAgICAgICAvLyAvYXBpL2RhdGE/Y29sbGVjdGlvbj0yNDYmdGFncz1jb21tdW5pdHklM0FleHByZXNzaW9ucyZlbnRpdHlfX2luPTI3MjZcbiAgICAgICAgcmV0dXJuIF8uemlwT2JqZWN0KF8uc29ydEJ5KF8ucGFpcnMocXVlcnkpLCAoW2tleV0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBfLmVuZHNXaXRoKGtleSwgJ19faW4nKSA/IEluZmluaXR5IDogLTE7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXYXJuIGFib3V0IGludmFsaWQgcXVlcnkgcGFyYW1ldGVycywgbGlrZSA/aWRfX2luPSYuLi5cbiAgICAgKi9cbiAgICBwcml2YXRlIF92YWxpZGF0ZVBhcmFtZXRlcnMocXVlcnk6IHR5cGVzLlF1ZXJ5KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGhhc0VtcHR5SW5BcnJheSA9IF8uYW55KHF1ZXJ5LCAodmFsdWUsIGtleSkgPT4gXy5lbmRzV2l0aChrZXksICdfX2luJykgJiYgIXZhbHVlKTtcbiAgICAgICAgaWYgKGhhc0VtcHR5SW5BcnJheSkgY29uc29sZS5lcnJvcignSW52YWxpZCBwYXJhbWV0ZXIgKl9faW49ZW1wdHkgaW4gcXVlcnknLCBxdWVyeSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSBxdWVyeSBhZ2FpbnN0IHRoaXMgcmVzb3VyY2UgYW5kIHN1YnNjcmliZXMgdG8gc3Vic2VxdWVudCB1cGRhdGVzLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFjdGl2ZVJlcXVlc3Q8VD4ocXVlcnk6IHR5cGVzLlF1ZXJ5LCBwYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMpOiBSeC5PYnNlcnZhYmxlPFRbXT4ge1xuICAgICAgICAvLyBXZSBhc3N1bWUgdGhhdCB0aGUgc2FtZSBxdWVyeSBvYmplY3Qgb24gdGhlIHNhbWUgcmVzb3VyY2Ugd2lsbCBhbHdheXMgcmVzdWx0IGluIHRoZSBzYW1lXG4gICAgICAgIC8vIHVuZGVybHlpbmcgcXVlcnlzZXQgKGFuZCB0aGVyZWZvcmUgcXVlcnkgb2JzZXJ2ZXIpLlxuICAgICAgICBsZXQgc2VyaWFsaXplZFF1ZXJ5ID0gSlNPTi5zdHJpbmdpZnkoW3BhdGgsIHF1ZXJ5XSk7XG4gICAgICAgIG9wdGlvbnMgPSBfLmRlZmF1bHRzKHt9LCBvcHRpb25zIHx8IHt9LCB7XG4gICAgICAgICAgICByZWFjdGl2ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICBxdWVyeSA9IHRoaXMudHJhbnNmb3JtUXVlcnkocXVlcnkpO1xuXG4gICAgICAgIHJldHVybiBSeC5PYnNlcnZhYmxlLmNyZWF0ZTxUW10+KChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnJlYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgLy8gUmVhY3Rpdml0eSBpcyBkaXNhYmxlZCBmb3IgdGhpcyBxdWVyeS5cbiAgICAgICAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLmNvbm5lY3Rpb24uZ2V0KHBhdGgsIHF1ZXJ5KS5tYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29ycmVjdGx5IGhhbmRsZSBwYWdpbmF0ZWQgcmVzdWx0cy5cbiAgICAgICAgICAgICAgICAgICAgaWYgKF8uaGFzKHJlc3BvbnNlLCAncmVzdWx0cycpKSByZXR1cm4gcmVzcG9uc2UucmVzdWx0cztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH0pLnN1YnNjcmliZShvYnNlcnZlcik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gc3Vic2NyaXB0aW9uLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVhY3Rpdml0eSBpcyBlbmFibGVkLlxuICAgICAgICAgICAgbGV0IHF1ZXJ5T2JzZXJ2ZXJJZCA9IHRoaXMuX3F1ZXJ5T2JzZXJ2ZXJJZENhY2hlW3NlcmlhbGl6ZWRRdWVyeV07XG4gICAgICAgICAgICBsZXQgcGVuZGluZ1F1ZXJpZXMgPSB0aGlzLl9wZW5kaW5nUXVlcmllc1tzZXJpYWxpemVkUXVlcnldO1xuXG4gICAgICAgICAgICAvLyBQZXJmb3JtIGEgUkVTVCBxdWVyeSB0byBnZXQgdGhlIG9ic2VydmVyIGlkZW50aWZpZXIgYW5kIHRvIHN1YnNjcmliZSB0byBuZXcgdXBkYXRlcy5cbiAgICAgICAgICAgIGxldCBzdWJzY3JpcHRpb25zOiBSeC5EaXNwb3NhYmxlW10gPSBbXTtcblxuICAgICAgICAgICAgaWYgKHF1ZXJ5T2JzZXJ2ZXJJZCkge1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgcXVlcnkgb2JzZXJ2ZXIgaWRlbnRpZmllciBoYXMgYWxyZWFkeSBiZWVuIGNhY2hlZC4gQ2hlY2sgaWYgaXQgZXhpc3RzIGFuZCBpbiB0aGlzXG4gICAgICAgICAgICAgICAgLy8gY2FzZSBqdXN0IHN1YnNjcmliZSB0byBhbGwgaXRlbXMuXG4gICAgICAgICAgICAgICAgbGV0IHF1ZXJ5T2JzZXJ2ZXIgPSB0aGlzLmNvbm5lY3Rpb24ucXVlcnlPYnNlcnZlck1hbmFnZXIoKS5nZXQocXVlcnlPYnNlcnZlcklkLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5T2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5T2JzZXJ2ZXIuc3RhdHVzID09PSBRdWVyeU9ic2VydmVyU3RhdHVzLklOSVRJQUxJWkVEIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeU9ic2VydmVyLnN0YXR1cyA9PT0gUXVlcnlPYnNlcnZlclN0YXR1cy5SRUlOSVRJQUxJWklORykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5wdXNoKHF1ZXJ5T2JzZXJ2ZXIub2JzZXJ2YWJsZSgpLnN1YnNjcmliZShvYnNlcnZlcikpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5T2JzZXJ2ZXIuc3RhdHVzID09PSBRdWVyeU9ic2VydmVyU3RhdHVzLklOSVRJQUxJWkVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5vbk5leHQocXVlcnlPYnNlcnZlci5pdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChfLmlzRW1wdHkoc3Vic2NyaXB0aW9ucykpIHtcbiAgICAgICAgICAgICAgICBpZiAocGVuZGluZ1F1ZXJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQSByZXF1ZXN0IGZvciB0aGUgc2FtZSBxdWVyeSBpcyBhbHJlYWR5IGluIHByb2dyZXNzLlxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUXVlcmllcy5wdXNoKHtvYnNlcnZlciwgc3Vic2NyaXB0aW9uc30pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdRdWVyaWVzW3NlcmlhbGl6ZWRRdWVyeV0gPSBbe29ic2VydmVyLCBzdWJzY3JpcHRpb25zfV07XG5cbiAgICAgICAgICAgICAgICAgICAgcXVlcnkgPSBfLmFzc2lnbihxdWVyeSwge29ic2VydmU6IHRoaXMuY29ubmVjdGlvbi5zZXNzaW9uSWQoKX0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24ucXVlcnlPYnNlcnZlck1hbmFnZXIoKS5jaGFpbkFmdGVyVW5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jb25uZWN0aW9uLmdldChwYXRoLCBxdWVyeSkpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZTogUXVlcnlPYnNlcnZlclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUG9wdWxhdGUgbWVzc2FnZXMgZnJvbSB0aGlzIHJlcXVlc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHF1ZXJ5T2JzZXJ2ZXIgPSB0aGlzLmNvbm5lY3Rpb24ucXVlcnlPYnNlcnZlck1hbmFnZXIoKS5nZXQocmVzcG9uc2Uub2JzZXJ2ZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXJ5T2JzZXJ2ZXJJZENhY2hlW3NlcmlhbGl6ZWRRdWVyeV0gPSByZXNwb25zZS5vYnNlcnZlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldHVwIGEgcmVpbml0aWFsaXphdGlvbiBoYW5kbGVyIGZvciB0aGlzIG9ic2VydmVyLiBJdCBtYXkgYmUgdXNlZCBpbiBjYXNlIHRoZSBwYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgYSBjb25uZWN0aW9uIGNoYW5nZSBhbmQgdGhlIG9ic2VydmVyIG5lZWRzIHRvIGJlIHJlLWNyZWF0ZWQgb24gdGhlIHNlcnZlciB3aXRob3V0IGxvc2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSBvZiB0aGUgY2xpZW50LXNpZGUgc3Vic2NyaXB0aW9ucy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeU9ic2VydmVyLnNldFJlaW5pdGlhbGl6ZUhhbmRsZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLmdldChwYXRoLCBxdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXy5pc0VtcHR5KHRoaXMuX3BlbmRpbmdRdWVyaWVzW3NlcmlhbGl6ZWRRdWVyeV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbmQgL2FwaS9xdWVyeW9ic2VydmVyL3Vuc3Vic2NyaWJlLCBzYW1lIGFzIHdlIHdvdWxkIGlmIHN1YnNjcmliZXJzIGdvdCBkaXNwb3NlZCBhZnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwZW5kaW5nUXVlcmllcyByZXNvbHZlLCBpbnN0ZWFkIG9mIGJlZm9yZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlPYnNlcnZlci5vYnNlcnZhYmxlKCkuc3Vic2NyaWJlKCkuZGlzcG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGVuZGluZyBvZiB0aGlzLl9wZW5kaW5nUXVlcmllc1tzZXJpYWxpemVkUXVlcnldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nLnN1YnNjcmlwdGlvbnMucHVzaChxdWVyeU9ic2VydmVyLm9ic2VydmFibGUoKS5zdWJzY3JpYmUocGVuZGluZy5vYnNlcnZlcikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocXVlcnlPYnNlcnZlci5zdGF0dXMgPT09IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXMuSU5JVElBTElaRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcXVlcnkgb2JzZXJ2ZXIgaXMgYWxyZWFkeSBpbml0aWFsaXplZCwgZW1pdCB0aGUgY3VycmVudCBpdGVtcyBpbW1lZGlhdGVseS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nLm9ic2VydmVyLm9uTmV4dChxdWVyeU9ic2VydmVyLml0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nUXVlcmllc1tzZXJpYWxpemVkUXVlcnldO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5T2JzZXJ2ZXIuc3RhdHVzICE9PSBRdWVyeU9ic2VydmVyU3RhdHVzLklOSVRJQUxJWkVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5T2JzZXJ2ZXIuaW5pdGlhbGl6ZShyZXNwb25zZS5pdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm9uRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBEaXNwb3NlIG9mIHRoZSBxdWVyeSBvYnNlcnZlciBzdWJzY3JpcHRpb24gd2hlbiBhbGwgc3Vic2NyaXB0aW9ucyB0byB0aGlzIHF1ZXJ5IGFyZSBzdG9wcGVkLlxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBJZiBxdWVyeSBpcyBzdGlsbCBqdXN0IHBlbmRpbmcsIHJlbW92ZSBvYnNlcnZlciBiZWZvcmUgaXQgZXZlbiBiZWNvbWVzIGRpc3Bvc2FibGUuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdRdWVyaWVzW3NlcmlhbGl6ZWRRdWVyeV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1F1ZXJpZXNbc2VyaWFsaXplZFF1ZXJ5XSA9IF8ucmVqZWN0KHRoaXMuX3BlbmRpbmdRdWVyaWVzW3NlcmlhbGl6ZWRRdWVyeV0sIChwZW5kaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3Igc2FtZSByZWZlcmVuY2UsIG5vdCBjb250ZW50IVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlbmRpbmcuc3Vic2NyaXB0aW9ucyA9PT0gc3Vic2NyaXB0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkucHVibGlzaCgpLnJlZkNvdW50KCk7XG4gICAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFDLEtBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLEVBQUUsVUFBQyxPQUFPO3dCQUM1Rix5Q0FBeUM7d0JBQ3pDLE9BQU8sT0FBTyxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUM7b0JBQ25ELENBQUMsQ0FBQyxDQUFDO2lCQUNOO1lBQ0wsQ0FBQyxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUNMLGVBQUM7QUFBRCxDQXpLQSxBQXlLQyxJQUFBO0FBektxQiw0QkFBUSIsImZpbGUiOiJhcGkvcmVzb3VyY2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBSeCBmcm9tICdyeCc7XG5cbmltcG9ydCB7Q29ubmVjdGlvbiwgUXVlcnlPYnNlcnZlclJlc3BvbnNlfSBmcm9tICcuL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IHtRdWVyeU9ic2VydmVyU3RhdHVzfSBmcm9tICcuL3F1ZXJ5b2JzZXJ2ZXInO1xuaW1wb3J0IHtHZW5FcnJvcn0gZnJvbSAnLi4vY29yZS9lcnJvcnMvZXJyb3InO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnLi90eXBlcy9yZXN0JztcblxuLyoqXG4gKiBBIG1hcHBpbmcgb2YgcXVlcmllcyB0byB0aGVpciBxdWVyeSBvYnNlcnZlciBpZGVudGlmaWVycywgc28gdGhhdCB3ZSBkb24ndFxuICogbmVlZCB0byBoaXQgdGhlIHNlcnZlciBpbiBjYXNlIHRoZSBpZGVudGlmaWVyIGlzIGFscmVhZHkga25vd24uXG4gKi9cbmludGVyZmFjZSBRdWVyeU9ic2VydmVySWRDYWNoZSB7XG4gICAgW2luZGV4OiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQZW5kaW5nUXVlcmllcyB7XG4gICAgW2luZGV4OiBzdHJpbmddOiB7XG4gICAgICAgIHN1YnNjcmlwdGlvbnM6IFJ4LkRpc3Bvc2FibGVbXTtcbiAgICAgICAgb2JzZXJ2ZXI6IFJ4Lk9ic2VydmVyPGFueT47XG4gICAgfVtdO1xufVxuXG4vKipcbiAqIFBlci1xdWVyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlPcHRpb25zIHtcbiAgICByZWFjdGl2ZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQW4gYWJzdHJhY3QgcmVzb3VyY2UgY2xhc3MuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXNvdXJjZSB7XG4gICAgLy8gQ2FjaGUgcXVlcnkgb2JzZXJ2ZXIgaWRlbnRpZmllcnMuXG4gICAgcHJpdmF0ZSBfcXVlcnlPYnNlcnZlcklkQ2FjaGU6IFF1ZXJ5T2JzZXJ2ZXJJZENhY2hlID0ge307XG4gICAgcHJpdmF0ZSBfcGVuZGluZ1F1ZXJpZXM6IFBlbmRpbmdRdWVyaWVzID0ge307XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHJlc291cmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbm5lY3Rpb24gQ29ubmVjdGlvbiB3aXRoIHRoZSBnZW5lc2lzIHBsYXRmb3JtIHNlcnZlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Nvbm5lY3Rpb246IENvbm5lY3Rpb24pIHtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25uZWN0aW9uIHRvIHRoZSBnZW5lc2lzLXBsYXRmb3JtIHNlcnZlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGNvbm5lY3Rpb24oKTogQ29ubmVjdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYmFzZSBwYXRoIHRoYXQgcmVzb3VyY2UgcGF0aCBpcyBiYXNlZCB1cG9uLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRCYXNlUGF0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYC9hcGlgO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGFueSBxdWVyeSB0cmFuc2Zvcm1hdGlvbnMgbmVlZGVkIGZvciB0aGlzIHJlc291cmNlLiBUaGVcbiAgICAgKiBvcmlnaW5hbCBxdWVyeSBvYmplY3QgaXMgbm90IG1vZGlmaWVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHF1ZXJ5IFF1ZXJ5XG4gICAgICogQHJldHVybiBUcmFuc2Zvcm1lZCBxdWVyeVxuICAgICAqL1xuICAgIHByb3RlY3RlZCB0cmFuc2Zvcm1RdWVyeShxdWVyeTogdHlwZXMuUXVlcnkpOiB0eXBlcy5RdWVyeSB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRlUGFyYW1ldGVycyhxdWVyeSk7XG4gICAgICAgIHJldHVybiBfLmNsb25lRGVlcCh0aGlzLl9maXhRdWVyeUZvckVsYXN0aWNTZWFyY2gocXVlcnkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9maXhRdWVyeUZvckVsYXN0aWNTZWFyY2gocXVlcnk6IHR5cGVzLlF1ZXJ5KTogdHlwZXMuUXVlcnkge1xuICAgICAgICAvLyBNb3ZlIGBfX2luYCBxdWVyeSBrZXlzIHRvIHRoZSBlbmQuXG4gICAgICAgIC8vIFRPRE86IHJlbW92ZSB0aGlzIHdvcmthcm91bmQgd2hlbiBlbGFzdGljIHNlYXJjaCBpcyBmaXhlZCBhbmQgdGhlc2UgYm90aCByZXR1cm4gcmVzdWx0c1xuICAgICAgICAvLyAvYXBpL2RhdGE/ZW50aXR5X19pbj0yNzI2JmNvbGxlY3Rpb249MjQ2JnRhZ3M9Y29tbXVuaXR5JTNBZXhwcmVzc2lvbnNcbiAgICAgICAgLy8gL2FwaS9kYXRhP2NvbGxlY3Rpb249MjQ2JnRhZ3M9Y29tbXVuaXR5JTNBZXhwcmVzc2lvbnMmZW50aXR5X19pbj0yNzI2XG4gICAgICAgIHJldHVybiBfLnppcE9iamVjdChfLnNvcnRCeShfLnBhaXJzKHF1ZXJ5KSwgKFtrZXldKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gXy5lbmRzV2l0aChrZXksICdfX2luJykgPyBJbmZpbml0eSA6IC0xO1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2FybiBhYm91dCBpbnZhbGlkIHF1ZXJ5IHBhcmFtZXRlcnMsIGxpa2UgP2lkX19pbj0mLi4uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdmFsaWRhdGVQYXJhbWV0ZXJzKHF1ZXJ5OiB0eXBlcy5RdWVyeSk6IHZvaWQge1xuICAgICAgICBjb25zdCBoYXNFbXB0eUluQXJyYXkgPSBfLmFueShxdWVyeSwgKHZhbHVlLCBrZXkpID0+IF8uZW5kc1dpdGgoa2V5LCAnX19pbicpICYmICF2YWx1ZSk7XG4gICAgICAgIGlmIChoYXNFbXB0eUluQXJyYXkpIHRocm93IG5ldyBHZW5FcnJvcignSW52YWxpZCBwYXJhbWV0ZXIgKl9faW49ZW1wdHkgaW4gcXVlcnknKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIHF1ZXJ5IGFnYWluc3QgdGhpcyByZXNvdXJjZSBhbmQgc3Vic2NyaWJlcyB0byBzdWJzZXF1ZW50IHVwZGF0ZXMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWN0aXZlUmVxdWVzdDxUPihxdWVyeTogdHlwZXMuUXVlcnksIHBhdGg6IHN0cmluZywgb3B0aW9ucz86IFF1ZXJ5T3B0aW9ucyk6IFJ4Lk9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIC8vIFdlIGFzc3VtZSB0aGF0IHRoZSBzYW1lIHF1ZXJ5IG9iamVjdCBvbiB0aGUgc2FtZSByZXNvdXJjZSB3aWxsIGFsd2F5cyByZXN1bHQgaW4gdGhlIHNhbWVcbiAgICAgICAgLy8gdW5kZXJseWluZyBxdWVyeXNldCAoYW5kIHRoZXJlZm9yZSBxdWVyeSBvYnNlcnZlcikuXG4gICAgICAgIGxldCBzZXJpYWxpemVkUXVlcnkgPSBKU09OLnN0cmluZ2lmeShbcGF0aCwgcXVlcnldKTtcbiAgICAgICAgb3B0aW9ucyA9IF8uZGVmYXVsdHMoe30sIG9wdGlvbnMgfHwge30sIHtcbiAgICAgICAgICAgIHJlYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHF1ZXJ5ID0gdGhpcy50cmFuc2Zvcm1RdWVyeShxdWVyeSk7XG5cbiAgICAgICAgcmV0dXJuIFJ4Lk9ic2VydmFibGUuY3JlYXRlPFRbXT4oKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMucmVhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAvLyBSZWFjdGl2aXR5IGlzIGRpc2FibGVkIGZvciB0aGlzIHF1ZXJ5LlxuICAgICAgICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuY29ubmVjdGlvbi5nZXQocGF0aCwgcXVlcnkpLm1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBDb3JyZWN0bHkgaGFuZGxlIHBhZ2luYXRlZCByZXN1bHRzLlxuICAgICAgICAgICAgICAgICAgICBpZiAoXy5oYXMocmVzcG9uc2UsICdyZXN1bHRzJykpIHJldHVybiByZXNwb25zZS5yZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfSkuc3Vic2NyaWJlKG9ic2VydmVyKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiBzdWJzY3JpcHRpb24uZGlzcG9zZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZWFjdGl2aXR5IGlzIGVuYWJsZWQuXG4gICAgICAgICAgICBsZXQgcXVlcnlPYnNlcnZlcklkID0gdGhpcy5fcXVlcnlPYnNlcnZlcklkQ2FjaGVbc2VyaWFsaXplZFF1ZXJ5XTtcbiAgICAgICAgICAgIGxldCBwZW5kaW5nUXVlcmllcyA9IHRoaXMuX3BlbmRpbmdRdWVyaWVzW3NlcmlhbGl6ZWRRdWVyeV07XG5cbiAgICAgICAgICAgIC8vIFBlcmZvcm0gYSBSRVNUIHF1ZXJ5IHRvIGdldCB0aGUgb2JzZXJ2ZXIgaWRlbnRpZmllciBhbmQgdG8gc3Vic2NyaWJlIHRvIG5ldyB1cGRhdGVzLlxuICAgICAgICAgICAgbGV0IHN1YnNjcmlwdGlvbnM6IFJ4LkRpc3Bvc2FibGVbXSA9IFtdO1xuXG4gICAgICAgICAgICBpZiAocXVlcnlPYnNlcnZlcklkKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBxdWVyeSBvYnNlcnZlciBpZGVudGlmaWVyIGhhcyBhbHJlYWR5IGJlZW4gY2FjaGVkLiBDaGVjayBpZiBpdCBleGlzdHMgYW5kIGluIHRoaXNcbiAgICAgICAgICAgICAgICAvLyBjYXNlIGp1c3Qgc3Vic2NyaWJlIHRvIGFsbCBpdGVtcy5cbiAgICAgICAgICAgICAgICBsZXQgcXVlcnlPYnNlcnZlciA9IHRoaXMuY29ubmVjdGlvbi5xdWVyeU9ic2VydmVyTWFuYWdlcigpLmdldChxdWVyeU9ic2VydmVySWQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAocXVlcnlPYnNlcnZlcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAocXVlcnlPYnNlcnZlci5zdGF0dXMgPT09IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXMuSU5JVElBTElaRUQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5T2JzZXJ2ZXIuc3RhdHVzID09PSBRdWVyeU9ic2VydmVyU3RhdHVzLlJFSU5JVElBTElaSU5HKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25zLnB1c2gocXVlcnlPYnNlcnZlci5vYnNlcnZhYmxlKCkuc3Vic2NyaWJlKG9ic2VydmVyKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocXVlcnlPYnNlcnZlci5zdGF0dXMgPT09IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXMuSU5JVElBTElaRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm9uTmV4dChxdWVyeU9ic2VydmVyLml0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8uaXNFbXB0eShzdWJzY3JpcHRpb25zKSkge1xuICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nUXVlcmllcykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBIHJlcXVlc3QgZm9yIHRoZSBzYW1lIHF1ZXJ5IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdRdWVyaWVzLnB1c2goe29ic2VydmVyLCBzdWJzY3JpcHRpb25zfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1F1ZXJpZXNbc2VyaWFsaXplZFF1ZXJ5XSA9IFt7b2JzZXJ2ZXIsIHN1YnNjcmlwdGlvbnN9XTtcblxuICAgICAgICAgICAgICAgICAgICBxdWVyeSA9IF8uYXNzaWduKHF1ZXJ5LCB7b2JzZXJ2ZTogdGhpcy5jb25uZWN0aW9uLnNlc3Npb25JZCgpfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5xdWVyeU9ic2VydmVyTWFuYWdlcigpLmNoYWluQWZ0ZXJVbnN1YnNjcmliZSgoKSA9PiB0aGlzLmNvbm5lY3Rpb24uZ2V0KHBhdGgsIHF1ZXJ5KSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlOiBRdWVyeU9ic2VydmVyUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQb3B1bGF0ZSBtZXNzYWdlcyBmcm9tIHRoaXMgcmVxdWVzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcXVlcnlPYnNlcnZlciA9IHRoaXMuY29ubmVjdGlvbi5xdWVyeU9ic2VydmVyTWFuYWdlcigpLmdldChyZXNwb25zZS5vYnNlcnZlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcXVlcnlPYnNlcnZlcklkQ2FjaGVbc2VyaWFsaXplZFF1ZXJ5XSA9IHJlc3BvbnNlLm9ic2VydmVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0dXAgYSByZWluaXRpYWxpemF0aW9uIGhhbmRsZXIgZm9yIHRoaXMgb2JzZXJ2ZXIuIEl0IG1heSBiZSB1c2VkIGluIGNhc2UgdGhlIHBhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBhIGNvbm5lY3Rpb24gY2hhbmdlIGFuZCB0aGUgb2JzZXJ2ZXIgbmVlZHMgdG8gYmUgcmUtY3JlYXRlZCBvbiB0aGUgc2VydmVyIHdpdGhvdXQgbG9zaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IG9mIHRoZSBjbGllbnQtc2lkZSBzdWJzY3JpcHRpb25zLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5T2JzZXJ2ZXIuc2V0UmVpbml0aWFsaXplSGFuZGxlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uZ2V0KHBhdGgsIHF1ZXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfLmlzRW1wdHkodGhpcy5fcGVuZGluZ1F1ZXJpZXNbc2VyaWFsaXplZFF1ZXJ5XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VuZCAvYXBpL3F1ZXJ5b2JzZXJ2ZXIvdW5zdWJzY3JpYmUsIHNhbWUgYXMgd2Ugd291bGQgaWYgc3Vic2NyaWJlcnMgZ290IGRpc3Bvc2VkIGFmdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBlbmRpbmdRdWVyaWVzIHJlc29sdmUsIGluc3RlYWQgb2YgYmVmb3JlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeU9ic2VydmVyLm9ic2VydmFibGUoKS5zdWJzY3JpYmUoKS5kaXNwb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwZW5kaW5nIG9mIHRoaXMuX3BlbmRpbmdRdWVyaWVzW3NlcmlhbGl6ZWRRdWVyeV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmcuc3Vic2NyaXB0aW9ucy5wdXNoKHF1ZXJ5T2JzZXJ2ZXIub2JzZXJ2YWJsZSgpLnN1YnNjcmliZShwZW5kaW5nLm9ic2VydmVyKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeU9ic2VydmVyLnN0YXR1cyA9PT0gUXVlcnlPYnNlcnZlclN0YXR1cy5JTklUSUFMSVpFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBxdWVyeSBvYnNlcnZlciBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCBlbWl0IHRoZSBjdXJyZW50IGl0ZW1zIGltbWVkaWF0ZWx5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmcub2JzZXJ2ZXIub25OZXh0KHF1ZXJ5T2JzZXJ2ZXIuaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3BlbmRpbmdRdWVyaWVzW3NlcmlhbGl6ZWRRdWVyeV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocXVlcnlPYnNlcnZlci5zdGF0dXMgIT09IFF1ZXJ5T2JzZXJ2ZXJTdGF0dXMuSU5JVElBTElaRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlPYnNlcnZlci5pbml0aWFsaXplKHJlc3BvbnNlLml0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIub25FcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIERpc3Bvc2Ugb2YgdGhlIHF1ZXJ5IG9ic2VydmVyIHN1YnNjcmlwdGlvbiB3aGVuIGFsbCBzdWJzY3JpcHRpb25zIHRvIHRoaXMgcXVlcnkgYXJlIHN0b3BwZWQuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2Ygc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24uZGlzcG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIElmIHF1ZXJ5IGlzIHN0aWxsIGp1c3QgcGVuZGluZywgcmVtb3ZlIG9ic2VydmVyIGJlZm9yZSBpdCBldmVuIGJlY29tZXMgZGlzcG9zYWJsZS5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVuZGluZ1F1ZXJpZXNbc2VyaWFsaXplZFF1ZXJ5XSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nUXVlcmllc1tzZXJpYWxpemVkUXVlcnldID0gXy5yZWplY3QodGhpcy5fcGVuZGluZ1F1ZXJpZXNbc2VyaWFsaXplZFF1ZXJ5XSwgKHBlbmRpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBzYW1lIHJlZmVyZW5jZSwgbm90IGNvbnRlbnQhXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGVuZGluZy5zdWJzY3JpcHRpb25zID09PSBzdWJzY3JpcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KS5wdWJsaXNoKCkucmVmQ291bnQoKTtcbiAgICB9XG59XG4iXX0= |
export {}; | ||
//# sourceMappingURL=resource.spec.d.ts.map |
@@ -28,2 +28,1 @@ import * as Rx from 'rx'; | ||
export declare function setPermissions(resource: RESTResource<any>, id: number, permissions: types.SetPermissionsRequest): Rx.Observable<types.ItemPermissions[]>; | ||
//# sourceMappingURL=permissions.d.ts.map |
@@ -53,2 +53,1 @@ import * as Rx from 'rx'; | ||
} | ||
//# sourceMappingURL=knowledge_base.d.ts.map |
@@ -38,2 +38,1 @@ import { Connection } from '../../connection'; | ||
} | ||
//# sourceMappingURL=module_resource.d.ts.map |
import * as Rx from 'rx'; | ||
import { QueryOptions } from '../../resource'; | ||
import { RESTResource } from './rest_resource'; | ||
@@ -24,4 +23,2 @@ import { Connection } from '../../connection'; | ||
slugExists(slug: string): Rx.Observable<boolean>; | ||
query(query?: types.QueryObject, options?: QueryOptions): Rx.Observable<types.Collection[]>; | ||
queryOne(query?: types.QueryObject, options?: QueryOptions): Rx.Observable<types.Collection>; | ||
/** | ||
@@ -37,2 +34,1 @@ * Makes a copy of collections. | ||
} | ||
//# sourceMappingURL=collection.d.ts.map |
@@ -41,10 +41,2 @@ "use strict"; | ||
}; | ||
CollectionResource.prototype.query = function (query, options) { | ||
if (query === void 0) { query = {}; } | ||
return _super.prototype.query.call(this, query, options); | ||
}; | ||
CollectionResource.prototype.queryOne = function (query, options) { | ||
if (query === void 0) { query = {}; } | ||
return _super.prototype.queryOne.call(this, query, options); | ||
}; | ||
/** | ||
@@ -69,2 +61,2 @@ * Makes a copy of collections. | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvcmVzb3VyY2VzL3Jlc3QvY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxpREFBNkM7QUFFN0MscURBQXFGO0FBR3JGOztHQUVHO0FBQ0g7SUFBd0Msc0NBQThCO0lBUWxFLDRCQUFZLFVBQXNCO1FBQWxDLFlBQ0ksa0JBQU0sWUFBWSxFQUFFLFVBQVUsQ0FBQyxTQUNsQztRQVREOzs7O1dBSUc7UUFDYSwyQkFBcUIsR0FBRyxFQUFFLENBQUM7O0lBSTNDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksdUNBQVUsR0FBakIsVUFBa0IsSUFBWTtRQUMxQixPQUFnQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRU0sa0NBQUssR0FBWixVQUFhLEtBQTZCLEVBQUUsT0FBc0I7UUFBckQsc0JBQUEsRUFBQSxVQUE2QjtRQUN0QyxPQUFPLGlCQUFNLEtBQUssWUFBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLHFDQUFRLEdBQWYsVUFBZ0IsS0FBNkIsRUFBRSxPQUFzQjtRQUFyRCxzQkFBQSxFQUFBLFVBQTZCO1FBQ3pDLE9BQU8saUJBQU0sUUFBUSxZQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxzQ0FBUyxHQUFoQixVQUFpQixhQUF1QjtRQUNwQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRU0sMkNBQWMsR0FBckIsVUFBc0IsRUFBVTtRQUM1QixPQUFPLDRCQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSwyQ0FBYyxHQUFyQixVQUFzQixFQUFVLEVBQUUsV0FBd0M7UUFDdEUsT0FBTyw0QkFBYyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUNMLHlCQUFDO0FBQUQsQ0E5Q0EsQUE4Q0MsQ0E5Q3VDLDRCQUFZLEdBOENuRDtBQTlDWSxnREFBa0IiLCJmaWxlIjoiYXBpL3Jlc291cmNlcy9yZXN0L2NvbGxlY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSeCBmcm9tICdyeCc7XG5cbmltcG9ydCB7UXVlcnlPcHRpb25zfSBmcm9tICcuLi8uLi9yZXNvdXJjZSc7XG5pbXBvcnQge1JFU1RSZXNvdXJjZX0gZnJvbSAnLi9yZXN0X3Jlc291cmNlJztcbmltcG9ydCB7Q29ubmVjdGlvbn0gZnJvbSAnLi4vLi4vY29ubmVjdGlvbic7XG5pbXBvcnQge1Blcm1pc3Npb25hYmxlLCBnZXRQZXJtaXNzaW9ucywgc2V0UGVybWlzc2lvbnN9IGZyb20gJy4uL2FkZG9ucy9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuLi8uLi90eXBlcy9yZXN0JztcblxuLyoqXG4gKiBDb2xsZWN0aW9uIHJlc291cmNlIGNsYXNzIGZvciBkZWFsaW5nIHdpdGggY29sbGVjdGlvbiBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbGxlY3Rpb25SZXNvdXJjZSBleHRlbmRzIFJFU1RSZXNvdXJjZTx0eXBlcy5Db2xsZWN0aW9uPiBpbXBsZW1lbnRzIFBlcm1pc3Npb25hYmxlIHtcbiAgICAvKipcbiAgICAgKiBPcmRlcmluZyBieSByZWxldmFuY2UgY29uc3RhbnQuIEFwcGx5IHRoaXMgdmFsdWUgdG8gYG9yZGVyaW5nYCBxdWVyeSBwYXJhbWV0ZXIgdG9cbiAgICAgKiBvcmRlciBieSByZWxldmFuY2UuXG4gICAgICogVGhpcyB3b3JrcyBieSBvdmVycmlkaW5nIGFueSBkZWZhdWx0IG9yZGVyaW5nIG9uIGJhY2tlbmQsIHNvIGl0IGtlZXBzIG9yZGVyIG9mIEVTIHJlc3VsdHNcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgT1JERVJJTkdfQllfUkVMRVZBTkNFID0gJyc7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb25uZWN0aW9uOiBDb25uZWN0aW9uKSB7XG4gICAgICAgIHN1cGVyKCdjb2xsZWN0aW9uJywgY29ubmVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGNvbGxlY3Rpb24gc2x1ZyBhbHJlYWR5IGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBTbHVnIHRvIGNoZWNrXG4gICAgICovXG4gICAgcHVibGljIHNsdWdFeGlzdHMoc2x1Zzogc3RyaW5nKTogUnguT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiA8UnguT2JzZXJ2YWJsZTxib29sZWFuPj4gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldExpc3RNZXRob2RQYXRoKCdzbHVnX2V4aXN0cycpLCB7IG5hbWU6IHNsdWcgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHF1ZXJ5KHF1ZXJ5OiB0eXBlcy5RdWVyeU9iamVjdCA9IHt9LCBvcHRpb25zPzogUXVlcnlPcHRpb25zKTogUnguT2JzZXJ2YWJsZTx0eXBlcy5Db2xsZWN0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLnF1ZXJ5KHF1ZXJ5LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcXVlcnlPbmUocXVlcnk6IHR5cGVzLlF1ZXJ5T2JqZWN0ID0ge30sIG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkNvbGxlY3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLnF1ZXJ5T25lKHF1ZXJ5LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyBhIGNvcHkgb2YgY29sbGVjdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29sbGVjdGlvbklkcyBBIGxpc3Qgb2YgY29sbGVjdGlvbiBpZHMgdG8gZHVwbGljYXRlXG4gICAgICogQHJldHVybiBEdXBsaWNhdGVkIGNvbGxlY3Rpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBkdXBsaWNhdGUoY29sbGVjdGlvbklkczogbnVtYmVyW10pOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkNvbGxlY3Rpb25bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnBvc3Q8dHlwZXMuQ29sbGVjdGlvbltdPih0aGlzLmdldExpc3RNZXRob2RQYXRoKCdkdXBsaWNhdGUnKSwgeyBpZHM6IGNvbGxlY3Rpb25JZHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBlcm1pc3Npb25zKGlkOiBudW1iZXIpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkl0ZW1QZXJtaXNzaW9uc1tdPiB7XG4gICAgICAgIHJldHVybiBnZXRQZXJtaXNzaW9ucyh0aGlzLCBpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBlcm1pc3Npb25zKGlkOiBudW1iZXIsIHBlcm1pc3Npb25zOiB0eXBlcy5TZXRQZXJtaXNzaW9uc1JlcXVlc3QpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkl0ZW1QZXJtaXNzaW9uc1tdPiB7XG4gICAgICAgIHJldHVybiBzZXRQZXJtaXNzaW9ucyh0aGlzLCBpZCwgcGVybWlzc2lvbnMpO1xuICAgIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvcmVzb3VyY2VzL3Jlc3QvY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFFQSxpREFBNkM7QUFFN0MscURBQXFGO0FBR3JGOztHQUVHO0FBQ0g7SUFBd0Msc0NBQThCO0lBUWxFLDRCQUFZLFVBQXNCO1FBQWxDLFlBQ0ksa0JBQU0sWUFBWSxFQUFFLFVBQVUsQ0FBQyxTQUNsQztRQVREOzs7O1dBSUc7UUFDYSwyQkFBcUIsR0FBRyxFQUFFLENBQUM7O0lBSTNDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksdUNBQVUsR0FBakIsVUFBa0IsSUFBWTtRQUMxQixPQUFnQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxzQ0FBUyxHQUFoQixVQUFpQixhQUF1QjtRQUNwQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRU0sMkNBQWMsR0FBckIsVUFBc0IsRUFBVTtRQUM1QixPQUFPLDRCQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSwyQ0FBYyxHQUFyQixVQUFzQixFQUFVLEVBQUUsV0FBd0M7UUFDdEUsT0FBTyw0QkFBYyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUNMLHlCQUFDO0FBQUQsQ0F0Q0EsQUFzQ0MsQ0F0Q3VDLDRCQUFZLEdBc0NuRDtBQXRDWSxnREFBa0IiLCJmaWxlIjoiYXBpL3Jlc291cmNlcy9yZXN0L2NvbGxlY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSeCBmcm9tICdyeCc7XG5cbmltcG9ydCB7UkVTVFJlc291cmNlfSBmcm9tICcuL3Jlc3RfcmVzb3VyY2UnO1xuaW1wb3J0IHtDb25uZWN0aW9ufSBmcm9tICcuLi8uLi9jb25uZWN0aW9uJztcbmltcG9ydCB7UGVybWlzc2lvbmFibGUsIGdldFBlcm1pc3Npb25zLCBzZXRQZXJtaXNzaW9uc30gZnJvbSAnLi4vYWRkb25zL3Blcm1pc3Npb25zJztcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJy4uLy4uL3R5cGVzL3Jlc3QnO1xuXG4vKipcbiAqIENvbGxlY3Rpb24gcmVzb3VyY2UgY2xhc3MgZm9yIGRlYWxpbmcgd2l0aCBjb2xsZWN0aW9uIGVuZHBvaW50LlxuICovXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvblJlc291cmNlIGV4dGVuZHMgUkVTVFJlc291cmNlPHR5cGVzLkNvbGxlY3Rpb24+IGltcGxlbWVudHMgUGVybWlzc2lvbmFibGUge1xuICAgIC8qKlxuICAgICAqIE9yZGVyaW5nIGJ5IHJlbGV2YW5jZSBjb25zdGFudC4gQXBwbHkgdGhpcyB2YWx1ZSB0byBgb3JkZXJpbmdgIHF1ZXJ5IHBhcmFtZXRlciB0b1xuICAgICAqIG9yZGVyIGJ5IHJlbGV2YW5jZS5cbiAgICAgKiBUaGlzIHdvcmtzIGJ5IG92ZXJyaWRpbmcgYW55IGRlZmF1bHQgb3JkZXJpbmcgb24gYmFja2VuZCwgc28gaXQga2VlcHMgb3JkZXIgb2YgRVMgcmVzdWx0c1xuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBPUkRFUklOR19CWV9SRUxFVkFOQ0UgPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IENvbm5lY3Rpb24pIHtcbiAgICAgICAgc3VwZXIoJ2NvbGxlY3Rpb24nLCBjb25uZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgY29sbGVjdGlvbiBzbHVnIGFscmVhZHkgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIFNsdWcgdG8gY2hlY2tcbiAgICAgKi9cbiAgICBwdWJsaWMgc2x1Z0V4aXN0cyhzbHVnOiBzdHJpbmcpOiBSeC5PYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIDxSeC5PYnNlcnZhYmxlPGJvb2xlYW4+PiB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0TGlzdE1ldGhvZFBhdGgoJ3NsdWdfZXhpc3RzJyksIHsgbmFtZTogc2x1ZyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyBhIGNvcHkgb2YgY29sbGVjdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29sbGVjdGlvbklkcyBBIGxpc3Qgb2YgY29sbGVjdGlvbiBpZHMgdG8gZHVwbGljYXRlXG4gICAgICogQHJldHVybiBEdXBsaWNhdGVkIGNvbGxlY3Rpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBkdXBsaWNhdGUoY29sbGVjdGlvbklkczogbnVtYmVyW10pOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkNvbGxlY3Rpb25bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnBvc3Q8dHlwZXMuQ29sbGVjdGlvbltdPih0aGlzLmdldExpc3RNZXRob2RQYXRoKCdkdXBsaWNhdGUnKSwgeyBpZHM6IGNvbGxlY3Rpb25JZHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBlcm1pc3Npb25zKGlkOiBudW1iZXIpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkl0ZW1QZXJtaXNzaW9uc1tdPiB7XG4gICAgICAgIHJldHVybiBnZXRQZXJtaXNzaW9ucyh0aGlzLCBpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBlcm1pc3Npb25zKGlkOiBudW1iZXIsIHBlcm1pc3Npb25zOiB0eXBlcy5TZXRQZXJtaXNzaW9uc1JlcXVlc3QpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkl0ZW1QZXJtaXNzaW9uc1tdPiB7XG4gICAgICAgIHJldHVybiBzZXRQZXJtaXNzaW9ucyh0aGlzLCBpZCwgcGVybWlzc2lvbnMpO1xuICAgIH1cbn1cbiJdfQ== |
import * as Rx from 'rx'; | ||
import { QueryOptions } from '../../resource'; | ||
import { RESTResource } from './rest_resource'; | ||
@@ -20,11 +19,2 @@ import { Connection } from '../../connection'; | ||
slugExists(slug: string): Rx.Observable<boolean>; | ||
/** | ||
* Explicitly re-defined with return type Data, because this differs from `create` and `get`. | ||
*/ | ||
query(query?: types.Query, options?: QueryOptions): Rx.Observable<types.Data[]>; | ||
/** | ||
* Explicitly re-defined with return type Data, because this differs from `create` and `get`. | ||
*/ | ||
queryOne(query?: types.Query, options?: QueryOptions): Rx.Observable<types.Data>; | ||
get(primaryKey: number | string, opts?: types.Query): Rx.Observable<types.Data>; | ||
getParents(id: number): Rx.Observable<types.Data[]>; | ||
@@ -56,2 +46,1 @@ getChildren(id: number): Rx.Observable<types.Data[]>; | ||
} | ||
//# sourceMappingURL=data.d.ts.map |
@@ -55,19 +55,2 @@ "use strict"; | ||
}; | ||
/** | ||
* Explicitly re-defined with return type Data, because this differs from `create` and `get`. | ||
*/ | ||
DataResource.prototype.query = function (query, options) { | ||
if (query === void 0) { query = {}; } | ||
return _super.prototype.query.call(this, query, options); | ||
}; | ||
/** | ||
* Explicitly re-defined with return type Data, because this differs from `create` and `get`. | ||
*/ | ||
DataResource.prototype.queryOne = function (query, options) { | ||
if (query === void 0) { query = {}; } | ||
return _super.prototype.queryOne.call(this, query, options); | ||
}; | ||
DataResource.prototype.get = function (primaryKey, opts) { | ||
return this.connection.get(this.getDetailPath(primaryKey), opts); | ||
}; | ||
DataResource.prototype.getParents = function (id) { | ||
@@ -99,3 +82,3 @@ return this.connection.get(this.getDetailMethodPath(id, 'parents')); | ||
]); | ||
return this.get(id, LimitedData.limitQuery).map(function (data) { | ||
return this.connection.get(this.getDetailPath(id), LimitedData.limitQuery).map(function (data) { | ||
if (!data.entity) { | ||
@@ -137,2 +120,2 @@ console.error('Expected data to belong to a sample', data); | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvcmVzb3VyY2VzL3Jlc3QvZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1QkFBeUI7QUFDekIsMEJBQTRCO0FBRzVCLGlEQUE2QztBQUU3QyxxREFBcUY7QUFDckYsMkNBQStEO0FBRy9EOztHQUVHO0FBQ0g7SUFBa0MsZ0NBQXdCO0lBRXRELHNCQUFZLFVBQXNCO2VBQzlCLGtCQUFNLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVTLHFDQUFjLEdBQXhCLFVBQXlCLEtBQWtCO1FBQ3ZDLDJDQUEyQztRQUMzQyxJQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQUMsS0FBSyxFQUFFLEtBQUs7WUFDbkQsT0FBTyxLQUFLO2lCQUNQLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDO2lCQUM5QixPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsK0NBQStDO1FBQy9DLElBQUksZ0JBQWdCLENBQUMsTUFBTSxFQUFFO1lBQ3pCLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFDLEtBQUs7Z0JBQ25FLE9BQU8sS0FBSztxQkFDUCxPQUFPLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQztxQkFDOUIsT0FBTyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEI7UUFFRCxPQUFPLGlCQUFNLGNBQWMsWUFBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGlDQUFVLEdBQWpCLFVBQWtCLElBQVk7UUFDMUIsT0FBZ0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxH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LENBQUMsSUFBSSxDQUFhLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxnQ0FBUyxHQUFoQixVQUFpQixPQUFpQjtRQUM5QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFlLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFTSxxQ0FBYyxHQUFyQixVQUFzQixFQUFVO1FBQzVCLE9BQU8sNEJBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLHFDQUFjLEdBQXJCLFVBQXNCLEVBQVUsRUFBRSxXQUF3QztRQUN0RSxPQUFPLDRCQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQ0wsbUJBQUM7QUFBRCxDQTFIQSxBQTBIQyxDQTFIaUMsNEJBQVksR0EwSDdDO0FBMUhZLG9DQUFZIiwiZmlsZSI6ImFwaS9yZXNvdXJjZXMvcmVzdC9kYXRhLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUnggZnJvbSAncngnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQge1F1ZXJ5T3B0aW9uc30gZnJvbSAnLi4vLi4vcmVzb3VyY2UnO1xuaW1wb3J0IHtSRVNUUmVzb3VyY2V9IGZyb20gJy4vcmVzdF9yZXNvdXJjZSc7XG5pbXBvcnQge0Nvbm5lY3Rpb259IGZyb20gJy4uLy4uL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IHtQZXJtaXNzaW9uYWJsZSwgZ2V0UGVybWlzc2lvbnMsIHNldFBlcm1pc3Npb25zfSBmcm9tICcuLi9hZGRvbnMvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHt1bml0ZURlZXBQaWNrcywgZGVlcFBpY2tUeXBlfSBmcm9tICcuLi8uLi90eXBlcy91dGlscyc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuLi8uLi90eXBlcy9yZXN0JztcblxuLyoqXG4gKiBEYXRhIHJlc291cmNlIGNsYXNzIGZvciBkZWFsaW5nIHdpdGggZGF0YSBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFSZXNvdXJjZSBleHRlbmRzIFJFU1RSZXNvdXJjZTx0eXBlcy5EYXRhPiBpbXBsZW1lbnRzIFBlcm1pc3Npb25hYmxlIHtcblxuICAgIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IENvbm5lY3Rpb24pIHtcbiAgICAgICAgc3VwZXIoJ2RhdGEnLCBjb25uZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdHJhbnNmb3JtUXVlcnkocXVlcnk6IHR5cGVzLlF1ZXJ5KTogdHlwZXMuUXVlcnkge1xuICAgICAgICAvLyBSZW5hbWUgYHNhbXBsZWAgcXVlcnkgZmllbGQgdG8gYGVudGl0eWAuXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUXVlcnkgPSBfLm1hcEtleXMocXVlcnksICh2YWx1ZSwgZmllbGQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmaWVsZFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9ec2FtcGxlJC9nLCAnZW50aXR5JylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXnNhbXBsZV9fL2csICdlbnRpdHlfXycpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZW5hbWUgYHNhbXBsZWAgaW4gbGltaXQgZmllbGRzIHRvIGBlbnRpdHlgLlxuICAgICAgICBpZiAodHJhbnNmb3JtZWRRdWVyeS5maWVsZHMpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkUXVlcnkuZmllbGRzID0gdHJhbnNmb3JtZWRRdWVyeS5maWVsZHMuc3BsaXQoJywnKS5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9ec2FtcGxlJC9nLCAnZW50aXR5JylcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL15zYW1wbGVfXy9nLCAnZW50aXR5X18nKTtcbiAgICAgICAgICAgIH0pLmpvaW4oJywnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdXBlci50cmFuc2Zvcm1RdWVyeSh0cmFuc2Zvcm1lZFF1ZXJ5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgZGF0YSBzbHVnIGFscmVhZHkgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFNsdWcgdG8gY2hlY2tcbiAgICAgKiBAcmV0dXJuIHtSeC5PYnNlcnZhYmxlPGJvb2xlYW4+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3BvbnNlXG4gICAgICovXG4gICAgcHVibGljIHNsdWdFeGlzdHMoc2x1Zzogc3RyaW5nKTogUnguT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiA8UnguT2JzZXJ2YWJsZTxib29sZWFuPj4gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldExpc3RNZXRob2RQYXRoKCdzbHVnX2V4aXN0cycpLCB7IG5hbWU6IHNsdWcgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhwbGljaXRseSByZS1kZWZpbmVkIHdpdGggcmV0dXJuIHR5cGUgRGF0YSwgYmVjYXVzZSB0aGlzIGRpZmZlcnMgZnJvbSBgY3JlYXRlYCBhbmQgYGdldGAuXG4gICAgICovXG4gICAgcHVibGljIHF1ZXJ5KHF1ZXJ5OiB0eXBlcy5RdWVyeSA9IHt9LCBvcHRpb25zPzogUXVlcnlPcHRpb25zKTogUnguT2JzZXJ2YWJsZTx0eXBlcy5EYXRhW10+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLnF1ZXJ5KHF1ZXJ5LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHBsaWNpdGx5IHJlLWRlZmluZWQgd2l0aCByZXR1cm4gdHlwZSBEYXRhLCBiZWNhdXNlIHRoaXMgZGlmZmVycyBmcm9tIGBjcmVhdGVgIGFuZCBgZ2V0YC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcXVlcnlPbmUocXVlcnk6IHR5cGVzLlF1ZXJ5ID0ge30sIG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkRhdGE+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLnF1ZXJ5T25lKHF1ZXJ5LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0KHByaW1hcnlLZXk6IG51bWJlciB8IHN0cmluZywgb3B0cz86IHR5cGVzLlF1ZXJ5KTogUnguT2JzZXJ2YWJsZTx0eXBlcy5EYXRhPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0RGV0YWlsUGF0aChwcmltYXJ5S2V5KSwgb3B0cyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcmVudHMoaWQ6IG51bWJlcik6IFJ4Lk9ic2VydmFibGU8dHlwZXMuRGF0YVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0RGV0YWlsTWV0aG9kUGF0aChpZCwgJ3BhcmVudHMnKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENoaWxkcmVuKGlkOiBudW1iZXIpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkRhdGFbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldERldGFpbE1ldGhvZFBhdGgoaWQsICdjaGlsZHJlbicpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVG9TYW1wbGUoZGF0YUlkczogbnVtYmVyW10sIHNhbXBsZUlkOiBudW1iZXIpOiBSeC5PYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICAgICAgcmV0dXJuIFJ4Lk9ic2VydmFibGUuZnJvbUFycmF5KGRhdGFJZHMpLmNvbmNhdE1hcCgoaWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShpZCwgeyBzYW1wbGU6IHsgaWQ6IHNhbXBsZUlkIH0gfSk7XG4gICAgICAgIH0pLnRvQXJyYXkoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVG9Db2xsZWN0aW9uKGRhdGFJZHM6IG51bWJlcltdLCBjb2xsZWN0aW9uSWQ6IG51bWJlcik6IFJ4Lk9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgICAgICByZXR1cm4gUnguT2JzZXJ2YWJsZS5mcm9tQXJyYXkoZGF0YUlkcykuY29uY2F0TWFwKChpZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKGlkLCB7IGNvbGxlY3Rpb246IHsgaWQ6IGNvbGxlY3Rpb25JZCB9IH0pO1xuICAgICAgICB9KS50b0FycmF5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgc2FtcGxlIGJ5IGRhdGEgaWQuXG4gICAgICovXG4gICAgcHVibGljIGdldFNhbXBsZUZyb21EYXRhSWQoaWQ6IG51bWJlcik6IFJ4Lk9ic2VydmFibGU8T21pdDx0eXBlcy5TYW1wbGUsICdjdXJyZW50X3VzZXJfcGVybWlzc2lvbnMnPj4ge1xuICAgICAgICBjb25zdCBMaW1pdGVkRGF0YSA9IHVuaXRlRGVlcFBpY2tzKFtcbiAgICAgICAgICAgIGRlZXBQaWNrVHlwZSg8dHlwZXMuRGF0YT4gbnVsbCwgJ2lkJyksXG4gICAgICAgICAgICBkZWVwUGlja1R5cGUoPHR5cGVzLkRhdGE+IG51bGwsICdlbnRpdHknKSxcbiAgICAgICAgXSk7XG4gICAgICAgIHR5cGUgTGltaXRlZERhdGEgPSB0eXBlb2YgTGltaXRlZERhdGEudHlwZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXQoaWQsIExpbWl0ZWREYXRhLmxpbWl0UXVlcnkpLm1hcCgoZGF0YTogTGltaXRlZERhdGEpID0+IHtcbiAgICAgICAgICAgIGlmICghZGF0YS5lbnRpdHkpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFeHBlY3RlZCBkYXRhIHRvIGJlbG9uZyB0byBhIHNhbXBsZScsIGRhdGEpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGF0YS5lbnRpdHk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBEYXRhIG9iamVjdCB3aXRoIHRoZSBzYW1lIGlucHV0cyBpZiBpdCBhbHJlYWR5IGV4aXN0cywgb3RoZXJ3aXNlXG4gICAgICogY3JlYXRlIGl0LlxuICAgICAqXG4gICAgICogTm90ZTogQ29uc2lkZXIgc29ydGluZyBhcnJheXMgaW4gdGhlIGlucHV0cywgdG8gcHJldmVudCBuZWVkbGVzc2x5XG4gICAgICogY3JlYXRpbmcgdGhlIHNhbWUgRGF0YSBvYmplY3RzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPckNyZWF0ZShkYXRhOiBPYmplY3QpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkRhdGE+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5wb3N0PHR5cGVzLkRhdGE+KHRoaXMuZ2V0TGlzdE1ldGhvZFBhdGgoJ2dldF9vcl9jcmVhdGUnKSwgZGF0YSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBjb3B5IG9mIGRhdGEgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRhSWRzIEEgbGlzdCBvZiBkYXRhIG9iamVjdCBpZHMgdG8gZHVwbGljYXRlXG4gICAgICogQHJldHVybiBEdXBsaWNhdGVkIGRhdGEgb2JqZWN0cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZHVwbGljYXRlKGRhdGFJZHM6IG51bWJlcltdKTogUnguT2JzZXJ2YWJsZTx0eXBlcy5EYXRhW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5wb3N0PHR5cGVzLkRhdGFbXT4odGhpcy5nZXRMaXN0TWV0aG9kUGF0aCgnZHVwbGljYXRlJyksIHsgaWRzOiBkYXRhSWRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQZXJtaXNzaW9ucyhpZDogbnVtYmVyKTogUnguT2JzZXJ2YWJsZTx0eXBlcy5JdGVtUGVybWlzc2lvbnNbXT4ge1xuICAgICAgICByZXR1cm4gZ2V0UGVybWlzc2lvbnModGhpcywgaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQZXJtaXNzaW9ucyhpZDogbnVtYmVyLCBwZXJtaXNzaW9uczogdHlwZXMuU2V0UGVybWlzc2lvbnNSZXF1ZXN0KTogUnguT2JzZXJ2YWJsZTx0eXBlcy5JdGVtUGVybWlzc2lvbnNbXT4ge1xuICAgICAgICByZXR1cm4gc2V0UGVybWlzc2lvbnModGhpcywgaWQsIHBlcm1pc3Npb25zKTtcbiAgICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvcmVzb3VyY2VzL3Jlc3QvZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1QkFBeUI7QUFDekIsMEJBQTRCO0FBRTVCLGlEQUE2QztBQUU3QyxxREFBcUY7QUFDckYsMkNBQStEO0FBRy9EOztHQUVHO0FBQ0g7SUFBa0MsZ0NBQXdCO0lBRXRELHNCQUFZLFVBQXNCO2VBQzlCLGtCQUFNLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVTLHFDQUFjLEdBQXhCLFVBQXlCLEtBQWtCO1FBQ3ZDLDJDQUEyQztRQUMzQyxJQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQUMsS0FBSyxFQUFFLEtBQUs7WUFDbkQsT0FBTyxLQUFLO2lCQUNQLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDO2lCQUM5QixPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsK0NBQStDO1FBQy9DLElBQUksZ0JBQWdCLENBQUMsTUFBTSxFQUFFO1lBQ3pCLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFDLEtBQUs7Z0JBQ25FLE9BQU8sS0FBSztxQkFDUCxPQUFPLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQztxQkFDOUIsT0FBTyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEI7UUFFRCxPQUFPLGlCQUFNLGNBQWMsWUFBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGlDQUFVLEdBQWpCLFVBQWtCLElBQVk7UUFDMUIsT0FBZ0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxH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LE9BQU8sNEJBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDTCxtQkFBQztBQUFELENBeEdBLEFBd0dDLENBeEdpQyw0QkFBWSxHQXdHN0M7QUF4R1ksb0NBQVkiLCJmaWxlIjoiYXBpL3Jlc291cmNlcy9yZXN0L2RhdGEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSeCBmcm9tICdyeCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7UkVTVFJlc291cmNlfSBmcm9tICcuL3Jlc3RfcmVzb3VyY2UnO1xuaW1wb3J0IHtDb25uZWN0aW9ufSBmcm9tICcuLi8uLi9jb25uZWN0aW9uJztcbmltcG9ydCB7UGVybWlzc2lvbmFibGUsIGdldFBlcm1pc3Npb25zLCBzZXRQZXJtaXNzaW9uc30gZnJvbSAnLi4vYWRkb25zL3Blcm1pc3Npb25zJztcbmltcG9ydCB7dW5pdGVEZWVwUGlja3MsIGRlZXBQaWNrVHlwZX0gZnJvbSAnLi4vLi4vdHlwZXMvdXRpbHMnO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnLi4vLi4vdHlwZXMvcmVzdCc7XG5cbi8qKlxuICogRGF0YSByZXNvdXJjZSBjbGFzcyBmb3IgZGVhbGluZyB3aXRoIGRhdGEgZW5kcG9pbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhUmVzb3VyY2UgZXh0ZW5kcyBSRVNUUmVzb3VyY2U8dHlwZXMuRGF0YT4gaW1wbGVtZW50cyBQZXJtaXNzaW9uYWJsZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb25uZWN0aW9uOiBDb25uZWN0aW9uKSB7XG4gICAgICAgIHN1cGVyKCdkYXRhJywgY29ubmVjdGlvbik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHRyYW5zZm9ybVF1ZXJ5KHF1ZXJ5OiB0eXBlcy5RdWVyeSk6IHR5cGVzLlF1ZXJ5IHtcbiAgICAgICAgLy8gUmVuYW1lIGBzYW1wbGVgIHF1ZXJ5IGZpZWxkIHRvIGBlbnRpdHlgLlxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFF1ZXJ5ID0gXy5tYXBLZXlzKHF1ZXJ5LCAodmFsdWUsIGZpZWxkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmllbGRcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXnNhbXBsZSQvZywgJ2VudGl0eScpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL15zYW1wbGVfXy9nLCAnZW50aXR5X18nKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmVuYW1lIGBzYW1wbGVgIGluIGxpbWl0IGZpZWxkcyB0byBgZW50aXR5YC5cbiAgICAgICAgaWYgKHRyYW5zZm9ybWVkUXVlcnkuZmllbGRzKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFF1ZXJ5LmZpZWxkcyA9IHRyYW5zZm9ybWVkUXVlcnkuZmllbGRzLnNwbGl0KCcsJykubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZFxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXnNhbXBsZSQvZywgJ2VudGl0eScpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9ec2FtcGxlX18vZywgJ2VudGl0eV9fJyk7XG4gICAgICAgICAgICB9KS5qb2luKCcsJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VwZXIudHJhbnNmb3JtUXVlcnkodHJhbnNmb3JtZWRRdWVyeSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGRhdGEgc2x1ZyBhbHJlYWR5IGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBTbHVnIHRvIGNoZWNrXG4gICAgICogQHJldHVybiB7UnguT2JzZXJ2YWJsZTxib29sZWFuPn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZVxuICAgICAqL1xuICAgIHB1YmxpYyBzbHVnRXhpc3RzKHNsdWc6IHN0cmluZyk6IFJ4Lk9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gPFJ4Lk9ic2VydmFibGU8Ym9vbGVhbj4+IHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXRMaXN0TWV0aG9kUGF0aCgnc2x1Z19leGlzdHMnKSwgeyBuYW1lOiBzbHVnIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXJlbnRzKGlkOiBudW1iZXIpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkRhdGFbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldERldGFpbE1ldGhvZFBhdGgoaWQsICdwYXJlbnRzJykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDaGlsZHJlbihpZDogbnVtYmVyKTogUnguT2JzZXJ2YWJsZTx0eXBlcy5EYXRhW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXREZXRhaWxNZXRob2RQYXRoKGlkLCAnY2hpbGRyZW4nKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFRvU2FtcGxlKGRhdGFJZHM6IG51bWJlcltdLCBzYW1wbGVJZDogbnVtYmVyKTogUnguT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiBSeC5PYnNlcnZhYmxlLmZyb21BcnJheShkYXRhSWRzKS5jb25jYXRNYXAoKGlkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGRhdGUoaWQsIHsgc2FtcGxlOiB7IGlkOiBzYW1wbGVJZCB9IH0pO1xuICAgICAgICB9KS50b0FycmF5KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFRvQ29sbGVjdGlvbihkYXRhSWRzOiBudW1iZXJbXSwgY29sbGVjdGlvbklkOiBudW1iZXIpOiBSeC5PYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICAgICAgcmV0dXJuIFJ4Lk9ic2VydmFibGUuZnJvbUFycmF5KGRhdGFJZHMpLmNvbmNhdE1hcCgoaWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShpZCwgeyBjb2xsZWN0aW9uOiB7IGlkOiBjb2xsZWN0aW9uSWQgfSB9KTtcbiAgICAgICAgfSkudG9BcnJheSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhIHNhbXBsZSBieSBkYXRhIGlkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTYW1wbGVGcm9tRGF0YUlkKGlkOiBudW1iZXIpOiBSeC5PYnNlcnZhYmxlPE9taXQ8dHlwZXMuU2FtcGxlLCAnY3VycmVudF91c2VyX3Blcm1pc3Npb25zJz4+IHtcbiAgICAgICAgY29uc3QgTGltaXRlZERhdGEgPSB1bml0ZURlZXBQaWNrcyhbXG4gICAgICAgICAgICBkZWVwUGlja1R5cGUoPHR5cGVzLkRhdGE+IG51bGwsICdpZCcpLFxuICAgICAgICAgICAgZGVlcFBpY2tUeXBlKDx0eXBlcy5EYXRhPiBudWxsLCAnZW50aXR5JyksXG4gICAgICAgIF0pO1xuICAgICAgICB0eXBlIExpbWl0ZWREYXRhID0gdHlwZW9mIExpbWl0ZWREYXRhLnR5cGU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXREZXRhaWxQYXRoKGlkKSwgTGltaXRlZERhdGEubGltaXRRdWVyeSkubWFwKChkYXRhOiBMaW1pdGVkRGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFkYXRhLmVudGl0eSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0V4cGVjdGVkIGRhdGEgdG8gYmVsb25nIHRvIGEgc2FtcGxlJywgZGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkYXRhLmVudGl0eTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IERhdGEgb2JqZWN0IHdpdGggdGhlIHNhbWUgaW5wdXRzIGlmIGl0IGFscmVhZHkgZXhpc3RzLCBvdGhlcndpc2VcbiAgICAgKiBjcmVhdGUgaXQuXG4gICAgICpcbiAgICAgKiBOb3RlOiBDb25zaWRlciBzb3J0aW5nIGFycmF5cyBpbiB0aGUgaW5wdXRzLCB0byBwcmV2ZW50IG5lZWRsZXNzbHlcbiAgICAgKiBjcmVhdGluZyB0aGUgc2FtZSBEYXRhIG9iamVjdHMuXG4gICAgICovXG4gICAgcHVibGljIGdldE9yQ3JlYXRlKGRhdGE6IE9iamVjdCk6IFJ4Lk9ic2VydmFibGU8dHlwZXMuRGF0YT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnBvc3Q8dHlwZXMuRGF0YT4odGhpcy5nZXRMaXN0TWV0aG9kUGF0aCgnZ2V0X29yX2NyZWF0ZScpLCBkYXRhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyBhIGNvcHkgb2YgZGF0YSBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGFJZHMgQSBsaXN0IG9mIGRhdGEgb2JqZWN0IGlkcyB0byBkdXBsaWNhdGVcbiAgICAgKiBAcmV0dXJuIER1cGxpY2F0ZWQgZGF0YSBvYmplY3RzLlxuICAgICAqL1xuICAgIHB1YmxpYyBkdXBsaWNhdGUoZGF0YUlkczogbnVtYmVyW10pOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkRhdGFbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLnBvc3Q8dHlwZXMuRGF0YVtdPih0aGlzLmdldExpc3RNZXRob2RQYXRoKCdkdXBsaWNhdGUnKSwgeyBpZHM6IGRhdGFJZHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBlcm1pc3Npb25zKGlkOiBudW1iZXIpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkl0ZW1QZXJtaXNzaW9uc1tdPiB7XG4gICAgICAgIHJldHVybiBnZXRQZXJtaXNzaW9ucyh0aGlzLCBpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBlcm1pc3Npb25zKGlkOiBudW1iZXIsIHBlcm1pc3Npb25zOiB0eXBlcy5TZXRQZXJtaXNzaW9uc1JlcXVlc3QpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkl0ZW1QZXJtaXNzaW9uc1tdPiB7XG4gICAgICAgIHJldHVybiBzZXRQZXJtaXNzaW9ucyh0aGlzLCBpZCwgcGVybWlzc2lvbnMpO1xuICAgIH1cbn1cbiJdfQ== |
@@ -13,2 +13,1 @@ import { RESTResource } from './rest_resource'; | ||
} | ||
//# sourceMappingURL=descriptor_schema.d.ts.map |
@@ -23,2 +23,1 @@ import * as Rx from 'rx'; | ||
} | ||
//# sourceMappingURL=file.d.ts.map |
@@ -123,2 +123,1 @@ import * as Rx from 'rx'; | ||
} | ||
//# sourceMappingURL=rest_resource.d.ts.map |
import * as Rx from 'rx'; | ||
import { RESTResource } from './rest_resource'; | ||
import { QueryOptions } from '../../resource'; | ||
import { Connection } from '../../connection'; | ||
import { Permissionable } from '../addons/permissions'; | ||
import * as types from '../../types/rest'; | ||
export declare type AnnotationQuery = { | ||
annotation: 'annotated' | 'unannotated' | 'annotatedAndUnannotated'; | ||
}; | ||
/** | ||
@@ -29,7 +25,2 @@ * Sample resource class for dealing with sample endpoint. | ||
/** | ||
* Use this method carefully. Check to make sure you need unannotated and annotated samples. | ||
*/ | ||
query(query: types.QueryObject & AnnotationQuery, options?: QueryOptions): Rx.Observable<types.Sample[]>; | ||
queryOne(query: types.QueryObject, options?: QueryOptions): Rx.Observable<types.Sample>; | ||
/** | ||
* Adds sample to collections. | ||
@@ -62,2 +53,1 @@ * | ||
} | ||
//# sourceMappingURL=sample.d.ts.map |
@@ -15,24 +15,2 @@ "use strict"; | ||
})(); | ||
var __assign = (this && this.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
var __rest = (this && this.__rest) || function (s, e) { | ||
var t = {}; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) | ||
t[p] = s[p]; | ||
if (s != null && typeof Object.getOwnPropertySymbols === "function") | ||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { | ||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) | ||
t[p[i]] = s[p[i]]; | ||
} | ||
return t; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
@@ -67,15 +45,2 @@ var rest_resource_1 = require("./rest_resource"); | ||
/** | ||
* Use this method carefully. Check to make sure you need unannotated and annotated samples. | ||
*/ | ||
SampleResource.prototype.query = function (query, options) { | ||
var annotation = query.annotation, remainingQuery = __rest(query, ["annotation"]); | ||
var annotationQuery = annotation === 'annotated' ? { descriptor_completed: true } : | ||
annotation === 'unannotated' ? { descriptor_completed: false } | ||
: {}; | ||
return _super.prototype.query.call(this, __assign({}, remainingQuery, annotationQuery), options); | ||
}; | ||
SampleResource.prototype.queryOne = function (query, options) { | ||
return _super.prototype.queryOne.call(this, query, options); | ||
}; | ||
/** | ||
* Adds sample to collections. | ||
@@ -134,2 +99,2 @@ * | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvcmVzb3VyY2VzL3Jlc3Qvc2FtcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxpREFBNkM7QUFHN0Msb0RBQW9EO0FBQ3BELHFEQUFxRjtBQU9yRjs7R0FFRztBQUNIO0lBQW9DLGtDQUEwQjtJQVExRCx3QkFBWSxVQUFzQjtRQUFsQyxZQUNJLGtCQUFNLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FDOUI7UUFURDs7OztXQUlHO1FBQ2EsMkJBQXFCLEdBQUcsRUFBRSxDQUFDOztJQUkzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxtQ0FBVSxHQUFqQixVQUFrQixJQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQVUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksOEJBQUssR0FBWixVQUFhLEtBQTBDLEVBQUUsT0FBc0I7UUFDcEUsSUFBQSw2QkFBVSxFQUFFLDhDQUFpQixDQUFVO1FBQzlDLElBQU0sZUFBZSxHQUFHLFVBQVUsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMvRCxVQUFVLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRTtnQkFDakMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUV4RCxPQUFPLGlCQUFNLEtBQUsseUJBQU0sY0FBYyxFQUFLLGVBQWUsR0FBSSxPQUFPLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0saUNBQVEsR0FBZixVQUFnQixLQUF3QixFQUFFLE9BQXNCO1FBQzVELE9BQU8saUJBQU0sUUFBUSxZQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx3Q0FBZSxHQUF0QixVQUF1QixRQUFnQixFQUFFLFlBQW9CO1FBQ3pELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDekIsVUFBVSxFQUFFO2dCQUNSLEVBQUUsRUFBRSxZQUFZO2FBQ25CO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0kseUNBQWdCLEdBQXZCLFVBQXdCLFNBQW1CLEVBQUUsa0JBQTBCLEVBQUUsdUJBQStCO1FBQ3BHLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBTyxvQkFBb0IsRUFBRTtZQUNuRCxHQUFHLEVBQUUsU0FBUztZQUNkLGlCQUFpQixFQUFFLGtCQUFrQjtZQUNyQyxzQkFBc0IsRUFBRSx1QkFBdUI7U0FDakQsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVNLCtCQUFNLEdBQWIsVUFBYyxJQUFZO1FBQ3RCLE1BQU0sSUFBSSxnQkFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLGdDQUFPLEdBQWQsVUFBZSxVQUEyQixFQUFFLElBQVk7UUFDcEQsTUFBTSxJQUFJLGdCQUFRLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxrQ0FBUyxHQUFoQixVQUFpQixTQUFtQixFQUNuQixJQUFvQztRQUNqRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQWlCLFdBQVcsRUFBRTtZQUNwRCxHQUFHLEVBQUUsU0FBUztZQUNkLGtCQUFrQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7U0FDN0MsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLHVDQUFjLEdBQXJCLFVBQXNCLEVBQVU7UUFDNUIsT0FBTyw0QkFBYyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sdUNBQWMsR0FBckIsVUFBc0IsRUFBVSxFQUFFLFdBQXdDO1FBQ3RFLE9BQU8sNEJBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDTCxxQkFBQztBQUFELENBL0ZBLEFBK0ZDLENBL0ZtQyw0QkFBWSxHQStGL0M7QUEvRlksd0NBQWMiLCJmaWxlIjoiYXBpL3Jlc291cmNlcy9yZXN0L3NhbXBsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJ4IGZyb20gJ3J4JztcbmltcG9ydCB7UkVTVFJlc291cmNlfSBmcm9tICcuL3Jlc3RfcmVzb3VyY2UnO1xuaW1wb3J0IHtRdWVyeU9wdGlvbnN9IGZyb20gJy4uLy4uL3Jlc291cmNlJztcbmltcG9ydCB7Q29ubmVjdGlvbn0gZnJvbSAnLi4vLi4vY29ubmVjdGlvbic7XG5pbXBvcnQge0dlbkVycm9yfSBmcm9tICcuLi8uLi8uLi9jb3JlL2Vycm9ycy9lcnJvcic7XG5pbXBvcnQge1Blcm1pc3Npb25hYmxlLCBnZXRQZXJtaXNzaW9ucywgc2V0UGVybWlzc2lvbnN9IGZyb20gJy4uL2FkZG9ucy9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuLi8uLi90eXBlcy9yZXN0JztcblxuZXhwb3J0IHR5cGUgQW5ub3RhdGlvblF1ZXJ5ID0ge1xuICAgIGFubm90YXRpb246ICdhbm5vdGF0ZWQnIHwgJ3VuYW5ub3RhdGVkJyB8ICdhbm5vdGF0ZWRBbmRVbmFubm90YXRlZCc7XG59O1xuXG4vKipcbiAqIFNhbXBsZSByZXNvdXJjZSBjbGFzcyBmb3IgZGVhbGluZyB3aXRoIHNhbXBsZSBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNhbXBsZVJlc291cmNlIGV4dGVuZHMgUkVTVFJlc291cmNlPHR5cGVzLlNhbXBsZT4gaW1wbGVtZW50cyBQZXJtaXNzaW9uYWJsZSB7XG4gICAgLyoqXG4gICAgICogT3JkZXJpbmcgYnkgcmVsZXZhbmNlIGNvbnN0YW50LiBBcHBseSB0aGlzIHZhbHVlIHRvIGBvcmRlcmluZ2AgcXVlcnkgcGFyYW1ldGVyIHRvXG4gICAgICogb3JkZXIgYnkgcmVsZXZhbmNlLlxuICAgICAqIFRoaXMgd29ya3MgYnkgb3ZlcnJpZGluZyBhbnkgZGVmYXVsdCBvcmRlcmluZyBvbiBiYWNrZW5kLCBzbyBpdCBrZWVwcyBvcmRlciBvZiBFUyByZXN1bHRzXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IE9SREVSSU5HX0JZX1JFTEVWQU5DRSA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoY29ubmVjdGlvbjogQ29ubmVjdGlvbikge1xuICAgICAgICBzdXBlcignc2FtcGxlJywgY29ubmVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHNhbXBsZSBzbHVnIGFscmVhZHkgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIFNsdWcgdG8gY2hlY2tcbiAgICAgKiBAcmV0dXJuIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmVzcG9uc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc2x1Z0V4aXN0cyhzbHVnOiBzdHJpbmcpOiBSeC5PYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXQ8Ym9vbGVhbj4odGhpcy5nZXRMaXN0TWV0aG9kUGF0aCgnc2x1Z19leGlzdHMnKSwgeyBuYW1lOiBzbHVnIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZSB0aGlzIG1ldGhvZCBjYXJlZnVsbHkuIENoZWNrIHRvIG1ha2Ugc3VyZSB5b3UgbmVlZCB1bmFubm90YXRlZCBhbmQgYW5ub3RhdGVkIHNhbXBsZXMuXG4gICAgICovXG4gICAgcHVibGljIHF1ZXJ5KHF1ZXJ5OiB0eXBlcy5RdWVyeU9iamVjdCAmIEFubm90YXRpb25RdWVyeSwgb3B0aW9ucz86IFF1ZXJ5T3B0aW9ucyk6IFJ4Lk9ic2VydmFibGU8dHlwZXMuU2FtcGxlW10+IHtcbiAgICAgICAgY29uc3Qge2Fubm90YXRpb24sIC4uLnJlbWFpbmluZ1F1ZXJ5fSA9IHF1ZXJ5O1xuICAgICAgICBjb25zdCBhbm5vdGF0aW9uUXVlcnkgPSBhbm5vdGF0aW9uID09PSAnYW5ub3RhdGVkJyA/IHsgZGVzY3JpcHRvcl9jb21wbGV0ZWQ6IHRydWUgfSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uID09PSAndW5hbm5vdGF0ZWQnID8geyBkZXNjcmlwdG9yX2NvbXBsZXRlZDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9O1xuXG4gICAgICAgIHJldHVybiBzdXBlci5xdWVyeSh7IC4uLnJlbWFpbmluZ1F1ZXJ5LCAuLi5hbm5vdGF0aW9uUXVlcnkgfSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIHF1ZXJ5T25lKHF1ZXJ5OiB0eXBlcy5RdWVyeU9iamVjdCwgb3B0aW9ucz86IFF1ZXJ5T3B0aW9ucyk6IFJ4Lk9ic2VydmFibGU8dHlwZXMuU2FtcGxlPiB7XG4gICAgICAgIHJldHVybiBzdXBlci5xdWVyeU9uZShxdWVyeSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBzYW1wbGUgdG8gY29sbGVjdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2FtcGxlSWQgU2FtcGxlIGlkXG4gICAgICogQHBhcmFtIGNvbGxlY3Rpb25JZHMgQXJyYXkgb2YgY29sbGVjdGlvbiBpZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkVG9Db2xsZWN0aW9uKHNhbXBsZUlkOiBudW1iZXIsIGNvbGxlY3Rpb25JZDogbnVtYmVyKTogUnguT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShzYW1wbGVJZCwge1xuICAgICAgICAgICAgY29sbGVjdGlvbjoge1xuICAgICAgICAgICAgICAgIGlkOiBjb2xsZWN0aW9uSWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNb3ZlIHNhbXBsZXMgdG8gY29sbGVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzYW1wbGVJZCBTYW1wbGUgaWRcbiAgICAgKiBAcGFyYW0gY29sbGVjdGlvbklkcyBBcnJheSBvZiBjb2xsZWN0aW9uIGlkc1xuICAgICAqL1xuICAgIHB1YmxpYyBtb3ZlVG9Db2xsZWN0aW9uKHNhbXBsZUlkczogbnVtYmVyW10sIHNvdXJjZUNvbGxlY3Rpb25JZDogbnVtYmVyLCBkZXN0aW5hdGlvbkNvbGxlY3Rpb25JZDogbnVtYmVyKTogUnguT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxMaXN0TWV0aG9kPHZvaWQ+KCdtb3ZlX3RvX2NvbGxlY3Rpb24nLCB7XG4gICAgICAgICAgICBpZHM6IHNhbXBsZUlkcyxcbiAgICAgICAgICAgIHNvdXJjZV9jb2xsZWN0aW9uOiBzb3VyY2VDb2xsZWN0aW9uSWQsXG4gICAgICAgICAgICBkZXN0aW5hdGlvbl9jb2xsZWN0aW9uOiBkZXN0aW5hdGlvbkNvbGxlY3Rpb25JZCxcbiAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGUoZGF0YTogT2JqZWN0KTogUnguT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKFwiQ3JlYXRlIG1ldGhvZCBub3Qgc3VwcG9ydGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXBsYWNlKHByaW1hcnlLZXk6IG51bWJlciB8IHN0cmluZywgZGF0YTogT2JqZWN0KTogUnguT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKFwiUmVwbGFjZSBtZXRob2Qgbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyBhIGNvcHkgb2Ygc2FtcGxlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzYW1wbGVJZHMgQSBsaXN0IG9mIHNhbXBsZSBpZHMgdG8gZHVwbGljYXRlXG4gICAgICogQHJldHVybiBEdXBsaWNhdGVkIHNhbXBsZXMuXG4gICAgICovXG4gICAgcHVibGljIGR1cGxpY2F0ZShzYW1wbGVJZHM6IG51bWJlcltdLFxuICAgICAgICAgICAgICAgICAgICAgb3B0czogeyBpbmhlcml0Q29sbGVjdGlvbjogYm9vbGVhbiB9KTogUnguT2JzZXJ2YWJsZTx0eXBlcy5TYW1wbGVbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsTGlzdE1ldGhvZDx0eXBlcy5TYW1wbGVbXT4oJ2R1cGxpY2F0ZScsIHtcbiAgICAgICAgICAgIGlkczogc2FtcGxlSWRzLFxuICAgICAgICAgICAgaW5oZXJpdF9jb2xsZWN0aW9uOiBvcHRzLmluaGVyaXRDb2xsZWN0aW9uLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGVybWlzc2lvbnMoaWQ6IG51bWJlcik6IFJ4Lk9ic2VydmFibGU8dHlwZXMuSXRlbVBlcm1pc3Npb25zW10+IHtcbiAgICAgICAgcmV0dXJuIGdldFBlcm1pc3Npb25zKHRoaXMsIGlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UGVybWlzc2lvbnMoaWQ6IG51bWJlciwgcGVybWlzc2lvbnM6IHR5cGVzLlNldFBlcm1pc3Npb25zUmVxdWVzdCk6IFJ4Lk9ic2VydmFibGU8dHlwZXMuSXRlbVBlcm1pc3Npb25zW10+IHtcbiAgICAgICAgcmV0dXJuIHNldFBlcm1pc3Npb25zKHRoaXMsIGlkLCBwZXJtaXNzaW9ucyk7XG4gICAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvcmVzb3VyY2VzL3Jlc3Qvc2FtcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGlEQUE2QztBQUU3QyxvREFBb0Q7QUFDcEQscURBQXFGO0FBR3JGOztHQUVHO0FBQ0g7SUFBb0Msa0NBQTBCO0lBUTFELHdCQUFZLFVBQXNCO1FBQWxDLFlBQ0ksa0JBQU0sUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUM5QjtRQVREOzs7O1dBSUc7UUFDYSwyQkFBcUIsR0FBRyxFQUFFLENBQUM7O0lBSTNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLG1DQUFVLEdBQWpCLFVBQWtCLElBQVk7UUFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBVSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx3Q0FBZSxHQUF0QixVQUF1QixRQUFnQixFQUFFLFlBQW9CO1FBQ3pELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDekIsVUFBVSxFQUFFO2dCQUNSLEVBQUUsRUFBRSxZQUFZO2FBQ25CO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0kseUNBQWdCLEdBQXZCLFVBQXdCLFNBQW1CLEVBQUUsa0JBQTBCLEVBQUUsdUJBQStCO1FBQ3BHLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBTyxvQkFBb0IsRUFBRTtZQUNuRCxHQUFHLEVBQUUsU0FBUztZQUNkLGlCQUFpQixFQUFFLGtCQUFrQjtZQUNyQyxzQkFBc0IsRUFBRSx1QkFBdUI7U0FDakQsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVNLCtCQUFNLEdBQWIsVUFBYyxJQUFZO1FBQ3RCLE1BQU0sSUFBSSxnQkFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLGdDQUFPLEdBQWQsVUFBZSxVQUEyQixFQUFFLElBQVk7UUFDcEQsTUFBTSxJQUFJLGdCQUFRLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxrQ0FBUyxHQUFoQixVQUFpQixTQUFtQixFQUNuQixJQUFvQztRQUNqRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQWlCLFdBQVcsRUFBRTtZQUNwRCxHQUFHLEVBQUUsU0FBUztZQUNkLGtCQUFrQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7U0FDN0MsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLHVDQUFjLEdBQXJCLFVBQXNCLEVBQVU7UUFDNUIsT0FBTyw0QkFBYyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sdUNBQWMsR0FBckIsVUFBc0IsRUFBVSxFQUFFLFdBQXdDO1FBQ3RFLE9BQU8sNEJBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDTCxxQkFBQztBQUFELENBL0VBLEFBK0VDLENBL0VtQyw0QkFBWSxHQStFL0M7QUEvRVksd0NBQWMiLCJmaWxlIjoiYXBpL3Jlc291cmNlcy9yZXN0L3NhbXBsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJ4IGZyb20gJ3J4JztcbmltcG9ydCB7UkVTVFJlc291cmNlfSBmcm9tICcuL3Jlc3RfcmVzb3VyY2UnO1xuaW1wb3J0IHtDb25uZWN0aW9ufSBmcm9tICcuLi8uLi9jb25uZWN0aW9uJztcbmltcG9ydCB7R2VuRXJyb3J9IGZyb20gJy4uLy4uLy4uL2NvcmUvZXJyb3JzL2Vycm9yJztcbmltcG9ydCB7UGVybWlzc2lvbmFibGUsIGdldFBlcm1pc3Npb25zLCBzZXRQZXJtaXNzaW9uc30gZnJvbSAnLi4vYWRkb25zL3Blcm1pc3Npb25zJztcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJy4uLy4uL3R5cGVzL3Jlc3QnO1xuXG4vKipcbiAqIFNhbXBsZSByZXNvdXJjZSBjbGFzcyBmb3IgZGVhbGluZyB3aXRoIHNhbXBsZSBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNhbXBsZVJlc291cmNlIGV4dGVuZHMgUkVTVFJlc291cmNlPHR5cGVzLlNhbXBsZT4gaW1wbGVtZW50cyBQZXJtaXNzaW9uYWJsZSB7XG4gICAgLyoqXG4gICAgICogT3JkZXJpbmcgYnkgcmVsZXZhbmNlIGNvbnN0YW50LiBBcHBseSB0aGlzIHZhbHVlIHRvIGBvcmRlcmluZ2AgcXVlcnkgcGFyYW1ldGVyIHRvXG4gICAgICogb3JkZXIgYnkgcmVsZXZhbmNlLlxuICAgICAqIFRoaXMgd29ya3MgYnkgb3ZlcnJpZGluZyBhbnkgZGVmYXVsdCBvcmRlcmluZyBvbiBiYWNrZW5kLCBzbyBpdCBrZWVwcyBvcmRlciBvZiBFUyByZXN1bHRzXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IE9SREVSSU5HX0JZX1JFTEVWQU5DRSA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoY29ubmVjdGlvbjogQ29ubmVjdGlvbikge1xuICAgICAgICBzdXBlcignc2FtcGxlJywgY29ubmVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHNhbXBsZSBzbHVnIGFscmVhZHkgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIFNsdWcgdG8gY2hlY2tcbiAgICAgKiBAcmV0dXJuIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmVzcG9uc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc2x1Z0V4aXN0cyhzbHVnOiBzdHJpbmcpOiBSeC5PYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5nZXQ8Ym9vbGVhbj4odGhpcy5nZXRMaXN0TWV0aG9kUGF0aCgnc2x1Z19leGlzdHMnKSwgeyBuYW1lOiBzbHVnIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgc2FtcGxlIHRvIGNvbGxlY3Rpb25zLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNhbXBsZUlkIFNhbXBsZSBpZFxuICAgICAqIEBwYXJhbSBjb2xsZWN0aW9uSWRzIEFycmF5IG9mIGNvbGxlY3Rpb24gaWRzXG4gICAgICovXG4gICAgcHVibGljIGFkZFRvQ29sbGVjdGlvbihzYW1wbGVJZDogbnVtYmVyLCBjb2xsZWN0aW9uSWQ6IG51bWJlcik6IFJ4Lk9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGUoc2FtcGxlSWQsIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb246IHtcbiAgICAgICAgICAgICAgICBpZDogY29sbGVjdGlvbklkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW92ZSBzYW1wbGVzIHRvIGNvbGxlY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2FtcGxlSWQgU2FtcGxlIGlkXG4gICAgICogQHBhcmFtIGNvbGxlY3Rpb25JZHMgQXJyYXkgb2YgY29sbGVjdGlvbiBpZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgbW92ZVRvQ29sbGVjdGlvbihzYW1wbGVJZHM6IG51bWJlcltdLCBzb3VyY2VDb2xsZWN0aW9uSWQ6IG51bWJlciwgZGVzdGluYXRpb25Db2xsZWN0aW9uSWQ6IG51bWJlcik6IFJ4Lk9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsTGlzdE1ldGhvZDx2b2lkPignbW92ZV90b19jb2xsZWN0aW9uJywge1xuICAgICAgICAgICAgaWRzOiBzYW1wbGVJZHMsXG4gICAgICAgICAgICBzb3VyY2VfY29sbGVjdGlvbjogc291cmNlQ29sbGVjdGlvbklkLFxuICAgICAgICAgICAgZGVzdGluYXRpb25fY29sbGVjdGlvbjogZGVzdGluYXRpb25Db2xsZWN0aW9uSWQsXG4gICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlKGRhdGE6IE9iamVjdCk6IFJ4Lk9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihcIkNyZWF0ZSBtZXRob2Qgbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVwbGFjZShwcmltYXJ5S2V5OiBudW1iZXIgfCBzdHJpbmcsIGRhdGE6IE9iamVjdCk6IFJ4Lk9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihcIlJlcGxhY2UgbWV0aG9kIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBjb3B5IG9mIHNhbXBsZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2FtcGxlSWRzIEEgbGlzdCBvZiBzYW1wbGUgaWRzIHRvIGR1cGxpY2F0ZVxuICAgICAqIEByZXR1cm4gRHVwbGljYXRlZCBzYW1wbGVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBkdXBsaWNhdGUoc2FtcGxlSWRzOiBudW1iZXJbXSxcbiAgICAgICAgICAgICAgICAgICAgIG9wdHM6IHsgaW5oZXJpdENvbGxlY3Rpb246IGJvb2xlYW4gfSk6IFJ4Lk9ic2VydmFibGU8dHlwZXMuU2FtcGxlW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbExpc3RNZXRob2Q8dHlwZXMuU2FtcGxlW10+KCdkdXBsaWNhdGUnLCB7XG4gICAgICAgICAgICBpZHM6IHNhbXBsZUlkcyxcbiAgICAgICAgICAgIGluaGVyaXRfY29sbGVjdGlvbjogb3B0cy5pbmhlcml0Q29sbGVjdGlvbixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBlcm1pc3Npb25zKGlkOiBudW1iZXIpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkl0ZW1QZXJtaXNzaW9uc1tdPiB7XG4gICAgICAgIHJldHVybiBnZXRQZXJtaXNzaW9ucyh0aGlzLCBpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBlcm1pc3Npb25zKGlkOiBudW1iZXIsIHBlcm1pc3Npb25zOiB0eXBlcy5TZXRQZXJtaXNzaW9uc1JlcXVlc3QpOiBSeC5PYnNlcnZhYmxlPHR5cGVzLkl0ZW1QZXJtaXNzaW9uc1tdPiB7XG4gICAgICAgIHJldHVybiBzZXRQZXJtaXNzaW9ucyh0aGlzLCBpZCwgcGVybWlzc2lvbnMpO1xuICAgIH1cbn1cbiJdfQ== |
@@ -18,2 +18,1 @@ import * as Rx from 'rx'; | ||
} | ||
//# sourceMappingURL=storage.d.ts.map |
@@ -58,2 +58,1 @@ import * as Rx from 'rx'; | ||
} | ||
//# sourceMappingURL=user.d.ts.map |
@@ -49,2 +49,1 @@ import { Query } from './rest'; | ||
} | ||
//# sourceMappingURL=modules.d.ts.map |
@@ -21,4 +21,2 @@ import * as Rx from 'rx'; | ||
[propertyName: string]: any; | ||
} | ||
export interface QueryObject extends Query { | ||
data?: "Disallow deprecated api.Sample.queryOne({ data: data.id }). Use api.Data.getSampleFromDataId(data.id) instead."; | ||
@@ -430,3 +428,2 @@ parents?: "Disallow deprecated api.Data.query({ parents: data.id }). Use api.Data.getChildren(data.id) instead."; | ||
collection: void | Omit<Collection, 'current_user_permissions'>; | ||
descriptor_completed: boolean; | ||
type: 'sample'; | ||
@@ -524,2 +521,1 @@ } | ||
} | ||
//# sourceMappingURL=rest.d.ts.map |
@@ -33,2 +33,2 @@ "use strict"; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvdHlwZXMvcmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7QUF3Q0gsU0FBZ0IsbUJBQW1CLENBQUksUUFBMkI7SUFDOUQsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFGRCxrREFFQztBQXNCWSxRQUFBLGdCQUFnQixHQUFvQixPQUFPLENBQUM7QUFDNUMsUUFBQSxnQkFBZ0IsR0FBb0IsT0FBTyxDQUFDO0FBQzVDLFFBQUEsZUFBZSxHQUFtQixNQUFNLENBQUM7QUFDekMsUUFBQSxpQkFBaUIsR0FBcUIsTUFBTSxDQUFDO0FBQzdDLFFBQUEsY0FBYyxHQUFrQixLQUFLLENBQUM7QUFDdEMsUUFBQSxtQkFBbUIsR0FBdUIsVUFBVSxDQUFDO0FBQ3JELFFBQUEsZUFBZSxHQUFtQixNQUFNLENBQUM7QUFVekMsUUFBQSxzQkFBc0IsR0FBeUIsUUFBUSxDQUFDO0FBQ3hELFFBQUEscUJBQXFCLEdBQXdCLE9BQU8sQ0FBQztBQUNyRCxRQUFBLG9CQUFvQixHQUF1QixNQUFNLENBQUM7QUFrRGxELFFBQUEsdUJBQXVCLEdBQTBCLEtBQUssQ0FBQztBQUN2RCxRQUFBLDBCQUEwQixHQUE2QixLQUFLLENBQUM7QUFDN0QsUUFBQSx3QkFBd0IsR0FBMkIsS0FBSyxDQUFDO0FBdUt6RCxRQUFBLHFCQUFxQixHQUF3QixJQUFJLENBQUM7QUFDbEQsUUFBQSxxQkFBcUIsR0FBd0IsSUFBSSxDQUFDO0FBQ2xELFFBQUEsbUJBQW1CLEdBQXNCLElBQUksQ0FBQztBQUM5QyxRQUFBLHNCQUFzQixHQUF5QixJQUFJLENBQUM7QUFDcEQsUUFBQSxnQkFBZ0IsR0FBbUIsSUFBSSxDQUFDO0FBQ3hDLFFBQUEsaUJBQWlCLEdBQW9CLElBQUksQ0FBQztBQUMxQyxRQUFBLGlCQUFpQixHQUFvQixJQUFJLENBQUMiLCJmaWxlIjoiYXBpL3R5cGVzL3Jlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogVHlwZSBkZWZpbml0aW9uc1xuICpcbiAqIEhlcmUgaXMgZGVmaW5lZCBldmVyeXRoaW5nIHRoZSBBUEkgcmV0dXJucy5cbiAqL1xuXG5pbXBvcnQgKiBhcyBSeCBmcm9tICdyeCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCBEaWN0aW9uYXJ5ID0gXy5EaWN0aW9uYXJ5O1xuaW1wb3J0IE51bWVyaWNEaWN0aW9uYXJ5ID0gXy5OdW1lcmljRGljdGlvbmFyeTtcblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFF1ZXJ5XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaWN0UXVlcnkge1xuICAgIGxpbWl0PzogbnVtYmVyO1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgICBvcmRlcmluZz86IHN0cmluZzsgLy8gJy1maWVsZDEsLWZpZWxkMixmaWVsZDMnXG4gICAgZmllbGRzPzogc3RyaW5nOyAvLyAnaWQsc2x1ZyxpbnB1dF9fcmVhZHNfX2ZpbGUnXG4gICAgaWQ/OiBudW1iZXI7XG4gICAgc2x1Zz86IHN0cmluZztcbiAgICBpZF9faW4/OiBzdHJpbmc7IC8vICcxMywyNCwzNSdcbiAgICBzbHVnX19pbj86IHN0cmluZzsgLy8gJ3JlYWRzMSxyZWFkcy1wYWlyZWQtMidcbiAgICBuYW1lX19pY29udGFpbnM/OiBzdHJpbmc7XG4gICAgc3RhdHVzX19pbj86IHN0cmluZzsgLy8gJ1VQLFdULFJFLFBSJ1xuICAgIHRleHQ/OiBzdHJpbmc7IC8vIEVsYXN0aWMgc2VhcmNoXG4gICAgdGFncz86IHN0cmluZzsgLy8gJ2NvbW11bml0eTp1bml2ZXJzZSxjb21tdW5pdHk6ZXhwcmVzc2lvbnMnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnkgZXh0ZW5kcyBTdHJpY3RRdWVyeSB7XG4gICAgW3Byb3BlcnR5TmFtZTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5T2JqZWN0IGV4dGVuZHMgUXVlcnkge1xuICAgIGRhdGE/OiBcIkRpc2FsbG93IGRlcHJlY2F0ZWQgYXBpLlNhbXBsZS5xdWVyeU9uZSh7IGRhdGE6IGRhdGEuaWQgfSkuIFVzZSBhcGkuRGF0YS5nZXRTYW1wbGVGcm9tRGF0YUlkKGRhdGEuaWQpIGluc3RlYWQuXCI7XG4gICAgcGFyZW50cz86IFwiRGlzYWxsb3cgZGVwcmVjYXRlZCBhcGkuRGF0YS5xdWVyeSh7IHBhcmVudHM6IGRhdGEuaWQgfSkuIFVzZSBhcGkuRGF0YS5nZXRDaGlsZHJlbihkYXRhLmlkKSBpbnN0ZWFkLlwiO1xuICAgIGNoaWxkcmVuPzogXCJEaXNhbGxvdyBkZXByZWNhdGVkIGFwaS5EYXRhLnF1ZXJ5KHsgY2hpbGRyZW46IGRhdGEuaWQgfSkuIFVzZSBhcGkuRGF0YS5nZXRQYXJlbnRzKGRhdGEuaWQpIGluc3RlYWQuXCI7XG4gICAgaHlkcmF0ZV9kYXRhPzogXCJEaXNhbGxvdyBkZXByZWNhdGVkIGh5ZHJhdGVfZGF0YS5cIjtcbiAgICBoeWRyYXRlX2NvbGxlY3Rpb25zPzogXCJEaXNhbGxvdyBkZXByZWNhdGVkIGh5ZHJhdGVfY29sbGVjdGlvbnMuXCI7XG4gICAgaHlkcmF0ZV9lbnRpdGllcz86IFwiRGlzYWxsb3cgZGVwcmVjYXRlZCBoeWRyYXRlX2VudGl0aWVzLlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXNwb25zZVBhZ2luYXRlZDxUPihyZXNwb25zZTogVCB8IHsgcmVzdWx0czogVH0pOiByZXNwb25zZSBpcyB7IHJlc3VsdHM6IFQgfSB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmhhc093blByb3BlcnR5KCdyZXN1bHRzJyk7XG59XG5cbi8vIExpbWl0T2Zmc2V0UGFnaW5hdGlvblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0ZWRSZXNwb25zZTxUPiB7XG4gICAgY291bnQ6IG51bWJlcjtcbiAgICBuZXh0OiBzdHJpbmc7XG4gICAgcHJldmlvdXM6IHN0cmluZztcbiAgICByZXN1bHRzOiBUW107XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQZXJtaXNzaW9uc1xuXG5leHBvcnQgdHlwZSBPd25lclBlcm1pc3Npb24gPSAnb3duZXInO1xuZXhwb3J0IHR5cGUgU2hhcmVQZXJtaXNzaW9uID0gJ3NoYXJlJztcbmV4cG9ydCB0eXBlIEVkaXRQZXJtaXNzaW9uID0gJ2VkaXQnO1xuZXhwb3J0IHR5cGUgRGVsZXRlUGVybWlzc2lvbiA9ICdlZGl0JzsgLy8gbm90IGEgdHlwbyAoQVBJIGRvZXNuJ3Qgc3VwcG9ydCBkZWxldGUgcGVybWlzc2lvbilcbmV4cG9ydCB0eXBlIEFkZFBlcm1pc3Npb24gPSAnYWRkJztcbmV4cG9ydCB0eXBlIERvd25sb2FkUGVybWlzc2lvbiA9ICdkb3dubG9hZCc7XG5leHBvcnQgdHlwZSBWaWV3UGVybWlzc2lvbiA9ICd2aWV3JztcblxuZXhwb3J0IGNvbnN0IE9XTkVSX1BFUk1JU1NJT046IE93bmVyUGVybWlzc2lvbiA9ICdvd25lcic7XG5leHBvcnQgY29uc3QgU0hBUkVfUEVSTUlTU0lPTjogU2hhcmVQZXJtaXNzaW9uID0gJ3NoYXJlJztcbmV4cG9ydCBjb25zdCBFRElUX1BFUk1JU1NJT046IEVkaXRQZXJtaXNzaW9uID0gJ2VkaXQnO1xuZXhwb3J0IGNvbnN0IERFTEVURV9QRVJNSVNTSU9OOiBEZWxldGVQZXJtaXNzaW9uID0gJ2VkaXQnO1xuZXhwb3J0IGNvbnN0IEFERF9QRVJNSVNTSU9OOiBBZGRQZXJtaXNzaW9uID0gJ2FkZCc7XG5leHBvcnQgY29uc3QgRE9XTkxPQURfUEVSTUlTU0lPTjogRG93bmxvYWRQZXJtaXNzaW9uID0gJ2Rvd25sb2FkJztcbmV4cG9ydCBjb25zdCBWSUVXX1BFUk1JU1NJT046IFZpZXdQZXJtaXNzaW9uID0gJ3ZpZXcnO1xuXG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uID0gT3duZXJQZXJtaXNzaW9uIHwgU2hhcmVQZXJtaXNzaW9uIHwgRWRpdFBlcm1pc3Npb24gfCBEZWxldGVQZXJtaXNzaW9uIHwgQWRkUGVybWlzc2lvbiB8XG4gICAgRG93bmxvYWRQZXJtaXNzaW9uIHwgVmlld1Blcm1pc3Npb247XG5cblxuZXhwb3J0IHR5cGUgUHVibGljUGVybWlzc2lvblR5cGUgPSAncHVibGljJztcbmV4cG9ydCB0eXBlIEdyb3VwUGVybWlzc2lvblR5cGUgPSAnZ3JvdXAnO1xuZXhwb3J0IHR5cGUgVXNlclBlcm1pc3Npb25UeXBlID0gJ3VzZXInO1xuXG5leHBvcnQgY29uc3QgUFVCTElDX1BFUk1JU1NJT05fVFlQRTogUHVibGljUGVybWlzc2lvblR5cGUgPSAncHVibGljJztcbmV4cG9ydCBjb25zdCBHUk9VUF9QRVJNSVNTSU9OX1RZUEU6IEdyb3VwUGVybWlzc2lvblR5cGUgPSAnZ3JvdXAnO1xuZXhwb3J0IGNvbnN0IFVTRVJfUEVSTUlTU0lPTl9UWVBFOiBVc2VyUGVybWlzc2lvblR5cGUgPSAndXNlcic7XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb25UeXBlID0gUHVibGljUGVybWlzc2lvblR5cGUgfCBHcm91cFBlcm1pc3Npb25UeXBlIHwgVXNlclBlcm1pc3Npb25UeXBlO1xuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1QZXJtaXNzaW9uc09mPFQ+IHtcbiAgICB0eXBlOiBQZXJtaXNzaW9uVHlwZTtcbiAgICBwZXJtaXNzaW9uczogVFtdO1xuICAgIGlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEl0ZW1QZXJtaXNzaW9ucyA9IEl0ZW1QZXJtaXNzaW9uc09mPFBlcm1pc3Npb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNldFBlcm1pc3Npb25zUmVxdWVzdCB7XG4gICAgcHVibGljPzoge1xuICAgICAgICBhZGQ/OiBQZXJtaXNzaW9uW10sXG4gICAgICAgIHJlbW92ZT86IFBlcm1pc3Npb25bXVxuICAgIH07XG4gICAgZ3JvdXBzPzoge1xuICAgICAgICBhZGQ/OiBOdW1lcmljRGljdGlvbmFyeTxQZXJtaXNzaW9uW10+IHwgRGljdGlvbmFyeTxQZXJtaXNzaW9uW10+XG4gICAgICAgIHJlbW92ZT86IE51bWVyaWNEaWN0aW9uYXJ5PFBlcm1pc3Npb25bXT4gfCBEaWN0aW9uYXJ5PFBlcm1pc3Npb25bXT5cbiAgICB9O1xuICAgIHVzZXJzPzoge1xuICAgICAgICBhZGQ/OiBOdW1lcmljRGljdGlvbmFyeTxQZXJtaXNzaW9uW10+IHwgRGljdGlvbmFyeTxQZXJtaXNzaW9uW10+XG4gICAgICAgIHJlbW92ZT86IE51bWVyaWNEaWN0aW9uYXJ5PFBlcm1pc3Npb25bXT4gfCBEaWN0aW9uYXJ5PFBlcm1pc3Npb25bXT5cbiAgICB9O1xuICAgIHNoYXJlX2NvbnRlbnQ/OiAnMCcgfCAnMSc7XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb250cmlidXRvclxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyaWJ1dG9yIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gICAgZmlyc3RfbmFtZTogc3RyaW5nO1xuICAgIGxhc3RfbmFtZTogc3RyaW5nO1xufVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHJvY2Vzc1xuXG5leHBvcnQgdHlwZSBQcm9jZXNzUGVybWlzc2lvbnMgPSBWaWV3UGVybWlzc2lvbiB8IFNoYXJlUGVybWlzc2lvbjtcblxuZXhwb3J0IHR5cGUgUmF3UHJvY2Vzc1BlcnNpc3RlbmNlID0gJ1JBVyc7XG5leHBvcnQgdHlwZSBDYWNoZWRQcm9jZXNzUGVyc2lzdGVuY2UgPSAnQ0FDJztcbmV4cG9ydCB0eXBlIFRlbXBQcm9jZXNzUGVyc2lzdGVuY2UgPSAnVE1QJztcblxuZXhwb3J0IGNvbnN0IFJBV19QUk9DRVNTX1BFUlNJU1RFTkNFOiBSYXdQcm9jZXNzUGVyc2lzdGVuY2UgPSAnUkFXJztcbmV4cG9ydCBjb25zdCBDQUNIRURfUFJPQ0VTU19QRVJTSVNURU5DRTogQ2FjaGVkUHJvY2Vzc1BlcnNpc3RlbmNlID0gJ0NBQyc7XG5leHBvcnQgY29uc3QgVEVNUF9QUk9DRVNTX1BFUlNJU1RFTkNFOiBUZW1wUHJvY2Vzc1BlcnNpc3RlbmNlID0gJ1RNUCc7XG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NQZXJzaXN0ZW5jZSA9IFJhd1Byb2Nlc3NQZXJzaXN0ZW5jZSB8IENhY2hlZFByb2Nlc3NQZXJzaXN0ZW5jZSB8IFRlbXBQcm9jZXNzUGVyc2lzdGVuY2U7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2VzcyB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGNyZWF0ZWQ6IHN0cmluZztcbiAgICBtb2RpZmllZDogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgY2F0ZWdvcnk6IHN0cmluZztcbiAgICByZXF1aXJlbWVudHM/OiB7XG4gICAgICAgIHJlbGF0aW9ucz86IEFycmF5PHtcbiAgICAgICAgICAgIHR5cGU6ICdjb21wYXJlJyB8ICdncm91cCcgfCAnYmFja2dyb3VuZCcgfCAnc2VyaWVzJztcbiAgICAgICAgICAgIGNhdGVnb3J5Pzogc3RyaW5nO1xuICAgICAgICAgICAgbGFiZWxzPzogc3RyaW5nW107XG4gICAgICAgICAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgICAgIH0+O1xuICAgIH07XG4gICAgcGVyc2lzdGVuY2U6IFByb2Nlc3NQZXJzaXN0ZW5jZTtcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGlucHV0X3NjaGVtYTogYW55O1xuICAgIG91dHB1dF9zY2hlbWE6IGFueTtcbiAgICBydW46IGFueTtcbiAgICBjb250cmlidXRvcjogQ29udHJpYnV0b3I7XG4gICAgY3VycmVudF91c2VyX3Blcm1pc3Npb25zOiBJdGVtUGVybWlzc2lvbnNPZjxQcm9jZXNzUGVybWlzc2lvbnM+W107XG4gICAgaXNfYWN0aXZlOiBib29sZWFuO1xuICAgIGRhdGFfbmFtZTogc3RyaW5nO1xuICAgIGVudGl0eV9kZXNjcmlwdG9yX3NjaGVtYTogdm9pZCB8IHN0cmluZztcbiAgICBlbnRpdHlfaW5wdXQ6IGFueTtcbiAgICBlbnRpdHlfdHlwZTogdm9pZCB8IHN0cmluZztcbiAgICBzY2hlZHVsaW5nX2NsYXNzOiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmVsYXRpb25cblxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvblBhcnRpdGlvbiB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBlbnRpdHk6IG51bWJlcjtcbiAgICBwb3NpdGlvbjogbnVtYmVyIHwgbnVsbDtcbiAgICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbiB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBjcmVhdGVkOiBzdHJpbmc7XG4gICAgbW9kaWZpZWQ6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgY29sbGVjdGlvbjogbnVtYmVyO1xuICAgIHBhcnRpdGlvbnM6IFJlbGF0aW9uUGFydGl0aW9uW107XG4gICAgY2F0ZWdvcnk6IHN0cmluZztcbiAgICB1bml0OiAncycgfCAnbWluJyB8ICdocicgfCAnZCcgfCAnd2snIHwgbnVsbDtcbiAgICBjb250cmlidXRvcjogQ29udHJpYnV0b3I7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRGVzY3JpcHRvclNjaGVtYVxuXG4vLyBTY2hlbWFcbmV4cG9ydCBpbnRlcmZhY2UgQ2hvaWNlTWFwIHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRTY2hlbWEge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbiB8IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgY29sbGFwc2VkPzogYm9vbGVhbjtcbiAgICBoaWRkZW4/OiBib29sZWFuIHwgc3RyaW5nO1xuICAgIGRlZmF1bHQ/OiBhbnk7XG4gICAgY2hvaWNlcz86IENob2ljZU1hcFtdO1xuICAgIGFsbG93X2N1c3RvbV9jaG9pY2U/OiBib29sZWFuO1xuICAgIHZhbGlkYXRlX3JlZ2V4Pzogc3RyaW5nO1xuICAgIHNsdWc/OiB7XG4gICAgICAgIHNvdXJjZT86IHN0cmluZztcbiAgICAgICAgdW5pcXVlVmFsaWRhdG9yPzogKHNsdWc6IHN0cmluZykgPT4gUnguT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICB9O1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBncm91cD86IFNjaGVtYTtcbiAgICByYW5nZT86IFtudW1iZXIsIG51bWJlcl07IC8vIE1pbiwgbWF4XG59XG5cbmV4cG9ydCB0eXBlIFNjaGVtYSA9IEZpZWxkU2NoZW1hW107XG5cblxuLy8gRGVzY3JpcHRvclNjaGVtYVxuZXhwb3J0IHR5cGUgRGVzY3JpcHRvclNjaGVtYVBlcm1pc3Npb25zID0gVmlld1Blcm1pc3Npb24gfCBFZGl0UGVybWlzc2lvbiB8IFNoYXJlUGVybWlzc2lvbjtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yU2NoZW1hQmFzZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBjcmVhdGVkOiBzdHJpbmc7XG4gICAgbW9kaWZpZWQ6IHN0cmluZztcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBzY2hlbWE6IFNjaGVtYTtcbiAgICBjb250cmlidXRvcjogQ29udHJpYnV0b3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzY3JpcHRvclNjaGVtYSBleHRlbmRzIERlc2NyaXB0b3JTY2hlbWFCYXNlIHtcbiAgICBjdXJyZW50X3VzZXJfcGVybWlzc2lvbnM6IEl0ZW1QZXJtaXNzaW9uc09mPERlc2NyaXB0b3JTY2hlbWFQZXJtaXNzaW9ucz5bXTtcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNjYXR0ZXIgUGxvdCBKc29uXG5cbi8vIFNjYXR0ZXJQbG90SnNvbi5Sb290T2JqZWN0IGlzIGEgdHlwZSBvZiBwcm9jZXNzIG91dHB1dC4gUHJvY2Vzc2VzIChpLmUuIFJvc2UyKVxuLy8gc2F2ZSBpdCB0byBkYXRhLm91dHB1dC5zY2F0dGVyX3Bsb3QuXG5leHBvcnQgbmFtZXNwYWNlIFNjYXR0ZXJQbG90SnNvbiB7XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIFJvb3RPYmplY3QgeyAvLyBUaGlzIGlzIHRoZSBhY3R1YWwgdHlwZSBvZiB0aGUganNvbiBvdXRwdXRcbiAgICAgICAgcG9pbnRzOiBQb2ludHM7XG4gICAgICAgIG1ldGE/OiBNZXRhO1xuICAgICAgICBhbm5vdGF0aW9ucz86IEFubm90YXRpb25bXTtcbiAgICB9XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIFBvaW50cyB7XG4gICAgICAgIHhfYXhpczogbnVtYmVyW107XG4gICAgICAgIHlfYXhpczogbnVtYmVyW107XG4gICAgICAgIGl0ZW1zPzogYW55W107XG4gICAgfVxuXG4gICAgZXhwb3J0IGludGVyZmFjZSBNZXRhIHtcbiAgICAgICAgeF9sYWJlbD86IHN0cmluZztcbiAgICAgICAgeV9sYWJlbD86IHN0cmluZztcbiAgICAgICAgdGV4dD86IHN0cmluZztcbiAgICAgICAgY2hyX3Bvcz86IHN0cmluZ1tdO1xuICAgIH1cblxuICAgIGV4cG9ydCB0eXBlIEFubm90YXRpb24gPSBBbm5vdGF0aW9uTGluZUdlbmVyYWwgfCBBbm5vdGF0aW9uTGluZVZlcnRpY2FsIHwgQW5ub3RhdGlvbkxpbmVIb3Jpem9udGFsO1xuXG4gICAgZXhwb3J0IGludGVyZmFjZSBBbm5vdGF0aW9uTGluZUdlbmVyYWwge1xuICAgICAgICB0eXBlOiAnbGluZSc7XG4gICAgICAgIHgxOiBudW1iZXI7XG4gICAgICAgIHgyOiBudW1iZXI7XG4gICAgICAgIHkxOiBudW1iZXI7XG4gICAgICAgIHkyOiBudW1iZXI7XG4gICAgfVxuICAgIGV4cG9ydCBpbnRlcmZhY2UgQW5ub3RhdGlvbkxpbmVWZXJ0aWNhbCB7XG4gICAgICAgIHR5cGU6ICdsaW5lX3ZlcnRpY2FsJztcbiAgICAgICAgeDogbnVtYmVyO1xuICAgIH1cbiAgICBleHBvcnQgaW50ZXJmYWNlIEFubm90YXRpb25MaW5lSG9yaXpvbnRhbCB7XG4gICAgICAgIHR5cGU6ICdsaW5lX2hvcml6b250YWwnO1xuICAgICAgICB5OiBudW1iZXI7XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIERhdGFcblxuZXhwb3J0IHR5cGUgRGF0YVBlcm1pc3Npb25zID0gVmlld1Blcm1pc3Npb24gfCBFZGl0UGVybWlzc2lvbiB8IFNoYXJlUGVybWlzc2lvbiB8IERvd25sb2FkUGVybWlzc2lvbjtcblxuZXhwb3J0IHR5cGUgVXBsb2FkaW5nRGF0YVN0YXR1cyA9ICdVUCc7XG5leHBvcnQgdHlwZSBSZXNvbHZpbmdEYXRhU3RhdHVzID0gJ1JFJztcbmV4cG9ydCB0eXBlIFdhaXRpbmdEYXRhU3RhdHVzID0gJ1dUJztcbmV4cG9ydCB0eXBlIFByb2Nlc3NpbmdEYXRhU3RhdHVzID0gJ1BSJztcbmV4cG9ydCB0eXBlIERvbmVEYXRhU3RhdHVzID0gJ09LJztcbmV4cG9ydCB0eXBlIEVycm9yRGF0YVN0YXR1cyA9ICdFUic7XG5leHBvcnQgdHlwZSBEaXJ0eURhdGFTdGF0dXMgPSAnRFInO1xuXG5leHBvcnQgY29uc3QgVVBMT0FESU5HX0RBVEFfU1RBVFVTOiBVcGxvYWRpbmdEYXRhU3RhdHVzID0gJ1VQJztcbmV4cG9ydCBjb25zdCBSRVNPTFZJTkdfREFUQV9TVEFUVVM6IFJlc29sdmluZ0RhdGFTdGF0dXMgPSAnUkUnO1xuZXhwb3J0IGNvbnN0IFdBSVRJTkdfREFUQV9TVEFUVVM6IFdhaXRpbmdEYXRhU3RhdHVzID0gJ1dUJztcbmV4cG9ydCBjb25zdCBQUk9DRVNTSU5HX0RBVEFfU1RBVFVTOiBQcm9jZXNzaW5nRGF0YVN0YXR1cyA9ICdQUic7XG5leHBvcnQgY29uc3QgRE9ORV9EQVRBX1NUQVRVUzogRG9uZURhdGFTdGF0dXMgPSAnT0snO1xuZXhwb3J0IGNvbnN0IEVSUk9SX0RBVEFfU1RBVFVTOiBFcnJvckRhdGFTdGF0dXMgPSAnRVInO1xuZXhwb3J0IGNvbnN0IERJUlRZX0RBVEFfU1RBVFVTOiBEaXJ0eURhdGFTdGF0dXMgPSAnRFInO1xuXG5leHBvcnQgdHlwZSBEYXRhU3RhdHVzID0gVXBsb2FkaW5nRGF0YVN0YXR1cyB8IFJlc29sdmluZ0RhdGFTdGF0dXMgfCBXYWl0aW5nRGF0YVN0YXR1cyB8IFByb2Nlc3NpbmdEYXRhU3RhdHVzIHxcbiAgICBEb25lRGF0YVN0YXR1cyB8IEVycm9yRGF0YVN0YXR1cyB8IERpcnR5RGF0YVN0YXR1cztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGNyZWF0ZWQ6IHN0cmluZztcbiAgICBtb2RpZmllZDogc3RyaW5nO1xuICAgIHNjaGVkdWxlZDogc3RyaW5nO1xuICAgIHN0YXJ0ZWQ6IHN0cmluZztcbiAgICBmaW5pc2hlZDogc3RyaW5nO1xuICAgIGR1cGxpY2F0ZWQ6IHZvaWQgfCBzdHJpbmc7XG5cbiAgICBjaGVja3N1bTogc3RyaW5nO1xuICAgIHNpemU6IG51bWJlcjtcbiAgICBzdGF0dXM6IERhdGFTdGF0dXM7XG4gICAgcHJvY2Vzc19wcm9ncmVzczogbnVtYmVyO1xuICAgIHByb2Nlc3NfcmM6IG51bWJlcjtcbiAgICBwcm9jZXNzX2NvcmVzOiBudW1iZXI7XG4gICAgcHJvY2Vzc19tZW1vcnk6IG51bWJlcjtcbiAgICBwcm9jZXNzX2luZm86IHN0cmluZ1tdO1xuICAgIHByb2Nlc3Nfd2FybmluZzogc3RyaW5nW107XG4gICAgcHJvY2Vzc19lcnJvcjogc3RyaW5nW107XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpbnB1dDogYW55O1xuICAgIG91dHB1dDogYW55O1xuICAgIGRlc2NyaXB0b3Jfc2NoZW1hOiBEZXNjcmlwdG9yU2NoZW1hQmFzZTtcbiAgICBkZXNjcmlwdG9yOiBhbnk7XG4gICAgY29udHJpYnV0b3I6IENvbnRyaWJ1dG9yO1xuICAgIHByb2Nlc3M6IE9taXQ8UHJvY2VzcywgJ2N1cnJlbnRfdXNlcl9wZXJtaXNzaW9ucyc+O1xuICAgIHRhZ3M6IHN0cmluZ1tdO1xuXG4gICAgZW50aXR5OiB2b2lkIHwgT21pdDxTYW1wbGUsICdjdXJyZW50X3VzZXJfcGVybWlzc2lvbnMnPjtcbiAgICBjb2xsZWN0aW9uOiB2b2lkIHwgT21pdDxDb2xsZWN0aW9uLCAnY3VycmVudF91c2VyX3Blcm1pc3Npb25zJz47XG4gICAgY3VycmVudF91c2VyX3Blcm1pc3Npb25zOiBJdGVtUGVybWlzc2lvbnNPZjxEYXRhUGVybWlzc2lvbnM+W107XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkYXRhOmRpZmZlcmVudGlhbGV4cHJlc3Npb246XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YURpZmZlcmVudGlhbEV4cHJlc3Npb24gZXh0ZW5kcyBEYXRhIHtcbiAgICBvdXRwdXQ6IHtcbiAgICAgICAgZGVfZmlsZTogeyBmaWxlOiBzdHJpbmcsIHNpemU6IG51bWJlciB9O1xuICAgICAgICByYXc6IHsgZmlsZTogc3RyaW5nLCBzaXplOiBudW1iZXIgfTtcbiAgICAgICAgZGVfanNvbjogbnVtYmVyO1xuICAgICAgICBzb3VyY2U6IHN0cmluZztcbiAgICAgICAgc3BlY2llczogc3RyaW5nO1xuICAgIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZGF0YTpnZW5lc2V0OlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHZW5lc2V0T3V0cHV0IHtcbiAgICBnZW5lc2V0OiB7IGZpbGU6IHN0cmluZywgc2l6ZTogbnVtYmVyIH07XG4gICAgZ2VuZXNldF9qc29uOiBudW1iZXI7IC8vID0+IERhdGFHZW5lc2V0U3RvcmFnZVxuICAgIHNvdXJjZTogc3RyaW5nO1xuICAgIHNwZWNpZXM6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR2VuZXNldCBleHRlbmRzIERhdGEge1xuICAgIG91dHB1dDogRGF0YUdlbmVzZXRPdXRwdXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdlbmVzZXRTdG9yYWdlIGV4dGVuZHMgU3RvcmFnZSB7XG4gICAganNvbjoge1xuICAgICAgICBnZW5lczogc3RyaW5nW107XG4gICAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkYXRhOmdlbmVzZXQ6dmVubjpcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR2VuZXNldFZlbm5PdXRwdXQgZXh0ZW5kcyBEYXRhR2VuZXNldE91dHB1dCB7XG4gICAgdmVubjogbnVtYmVyOyAvLyA9PiBEYXRhR2VuZXNldFZlbm5TdG9yYWdlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdlbmVzZXRWZW5uIGV4dGVuZHMgRGF0YUdlbmVzZXQge1xuICAgIG91dHB1dDogRGF0YUdlbmVzZXRWZW5uT3V0cHV0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHZW5lc2V0VmVublN0b3JhZ2UgZXh0ZW5kcyBTdG9yYWdlIHtcbiAgICBqc29uOiB7XG4gICAgICAgIHBhcmVudHM6IEFycmF5PHtcbiAgICAgICAgICAgIGlkOiBudW1iZXI7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICBnZW5lczogc3RyaW5nW107IC8vIGdlbmVzZXRfanNvbiAuIGdlbmVzXG4gICAgICAgIH0+O1xuICAgIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZGF0YTpnb2VhOiBHZW5lIE9udG9sb2d5XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdPRW5yaWNobWVudEFuYWx5c2lzIGV4dGVuZHMgRGF0YSB7XG4gICAgb3V0cHV0OiB7XG4gICAgICAgIHRlcm1zOiBudW1iZXI7IC8vID0+IERhdGFHT0VucmljaG1lbnRBbmFseXNpc1N0b3JhZ2VcbiAgICAgICAgc291cmNlOiBzdHJpbmc7XG4gICAgICAgIHNwZWNpZXM6IHN0cmluZztcbiAgICB9O1xufVxuXG5leHBvcnQgdHlwZSBHT0VucmljaG1lbnRBc3BlY3QgPSBHT0VucmljaG1lbnROb2RlW107XG5leHBvcnQgaW50ZXJmYWNlIEdPRW5yaWNobWVudEpzb24ge1xuICAgIHRvdGFsX2dlbmVzOiBudW1iZXI7XG4gICAgZ2VuZV9hc3NvY2lhdGlvbnM6IHtcbiAgICAgICAgW2dvVGVybUlkOiBzdHJpbmddOiBzdHJpbmdbXTsgLy8gdGVybV9pZCA9PiBnZW5lX2lkc1xuICAgIH07XG4gICAgdHJlZToge1xuICAgICAgICBbYXNwZWN0U2x1Zzogc3RyaW5nXTogR09FbnJpY2htZW50QXNwZWN0LCAvLyBcIkJQXCIgfCBcIkNDXCIgfCBcIk1GXCJcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdPRW5yaWNobWVudE5vZGUge1xuICAgIGdlbmVfaWRzOiBzdHJpbmdbXTsgLy8gc2VsZWN0ZWRfZ2VuZV9hc3NvY2lhdGlvbnNcbiAgICB0ZXJtX25hbWU6IHN0cmluZztcbiAgICB0ZXJtX2lkOiBzdHJpbmc7XG4gICAgcHZhbDogbnVtYmVyO1xuICAgIHNjb3JlOiBudW1iZXI7XG4gICAgbWF0Y2hlZDogbnVtYmVyOyAvLyBOdW1iZXIgb2YgZm91bmQgZWxlbWVudHMgaW4gYSBzaW5nbGUgbm9kZS5cbiAgICB0b3RhbDogbnVtYmVyOyAvLyBUb3RhbCBudW1iZXIgb2YgZWxlbWVudHMgKGluY2x1ZGluZyBjaGlsZHJlbiBub2RlcykgaW4gYSBzaW5nbGUgbm9kZS5cbiAgICBjaGlsZHJlbj86IEdPRW5yaWNobWVudE5vZGVbXTtcblxuICAgIC8vIEFkZGVkIGJ5IGZyb250ZW5kOlxuICAgIGRlcHRoPzogbnVtYmVyOyAvLyBOdW1lcmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGxldmVsIG9mIGRlcHRoLiBVc2VkIGZvciBvZmZzZXR0aW5nIHRoZSB0ZXJtIGNvbHVtbi5cbiAgICBzb3VyY2U/OiBzdHJpbmc7XG4gICAgc3BlY2llcz86IHN0cmluZztcbiAgICBzY29yZV9wZXJjZW50YWdlPzogbnVtYmVyOyAvLyBQZXJjZW50YWdlIG9mIG1heCBzY29yZSB3aXRoaW4gR09FbnJpY2htZW50QXNwZWN0LlxuICAgIGdlbmVfYXNzb2NpYXRpb25zPzogc3RyaW5nW107IC8vIGFsbF9nZW5lX2Fzc29jaWF0aW9ucyAtIFBsdWNrZWQgZnJvbSBHT0VucmljaG1lbnRKc29uLmdlbmVfYXNzb2NpYXRpb25zLlxuICAgIGNvbGxhcHNlZD86IGJvb2xlYW47IC8vIEJvb2xlYW4gcmVwcmVzZW50YXRpb24gaWYgdGhlIHNlbGVjdGVkIGl0ZW0gaXMgaGlkZGVuLlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHT0VucmljaG1lbnRBbmFseXNpc1N0b3JhZ2UgZXh0ZW5kcyBTdG9yYWdlIHtcbiAgICBqc29uOiBHT0VucmljaG1lbnRKc29uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHT0VucmljaG1lbnRBbmFseXNpc0lucHV0IHtcbiAgICBwdmFsX3RocmVzaG9sZDogbnVtYmVyO1xuICAgIGdlbmVzOiBzdHJpbmdbXTtcbiAgICBzb3VyY2U6IHN0cmluZztcbiAgICBzcGVjaWVzOiBzdHJpbmc7XG4gICAgb250b2xvZ3k6IG51bWJlcjtcbiAgICBnYWY6IG51bWJlcjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkYXRhOmdhZjogR0FGIGFubm90YXRpb25cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR2FmQW5ub3RhdGlvbiBleHRlbmRzIERhdGEge1xuICAgIG91dHB1dDoge1xuICAgICAgICBzb3VyY2U6IHN0cmluZztcbiAgICAgICAgc3BlY2llczogc3RyaW5nO1xuICAgICAgICBnYWY6IHsgZmlsZTogc3RyaW5nLCBzaXplOiBudW1iZXIgfTtcbiAgICAgICAgZ2FmX29iajogeyBmaWxlOiBzdHJpbmcsIHNpemU6IG51bWJlciB9O1xuICAgIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZGF0YTp2YXJpYW50dGFibGU6XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVZhcmlhbnRBbXBsaWNvblRhYmxlIGV4dGVuZHMgRGF0YSB7XG4gICAgaW5wdXQ6IHtcbiAgICAgICAgbWFzdGVyX2ZpbGU6IG51bWJlcjsgLy8gZGF0YSBJRFxuICAgICAgICBjb3ZlcmFnZTogbnVtYmVyOyAvLyBkYXRhIElEXG4gICAgICAgIGFubm90X3ZhcnM6IG51bWJlcltdOyAvLyBkYXRhIElEc1xuICAgICAgICBhbGxfYW1wbGljb25zOiBib29sZWFuO1xuICAgICAgICB0YWJsZV9uYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICBvdXRwdXQ6IHtcbiAgICAgICAgdmFyaWFudF90YWJsZTogbnVtYmVyOyAvLyA9PiBEYXRhVmFyaWFudFRhYmxlU3RvcmFnZVxuICAgIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVZhcmlhbnRUTEFUYWJsZSBleHRlbmRzIERhdGEge1xuICAgIGlucHV0OiB7XG4gICAgICAgIHRsYV9yZXN1bHRzOiBudW1iZXI7IC8vIGRhdGEgSURcbiAgICB9O1xuICAgIG91dHB1dDoge1xuICAgICAgICB2YXJpYW50X3RhYmxlOiBudW1iZXI7IC8vID0+IERhdGFWYXJpYW50VGFibGVTdG9yYWdlXG4gICAgICAgIHNwZWNpZXM6IHN0cmluZztcbiAgICAgICAgYnVpbGQ6IHN0cmluZztcbiAgICB9O1xufVxuXG5leHBvcnQgdHlwZSBEYXRhVmFyaWFudFRhYmxlID0gRGF0YVZhcmlhbnRBbXBsaWNvblRhYmxlIHwgRGF0YVZhcmlhbnRUTEFUYWJsZTtcblxuZXhwb3J0IHR5cGUgRGF0YVZhcmlhbnRUYWJsZUpzb25WYWx1ZUNvbHVtbiA9IHN0cmluZzsgLy8gRXhhbXBsZTogTVNINl9leG9uNV9GMS8yXG5leHBvcnQgdHlwZSBEYXRhVmFyaWFudFRhYmxlSnNvbkRlbGltaXRlZENvbHVtbiA9IHN0cmluZzsgLy8gRXhhbXBsZTogRFA0PTQ2LDQxLDExLDE2O1NCPTRcbmV4cG9ydCB0eXBlIERhdGFWYXJpYW50VGFibGVKc29uVXJsc0NvbHVtbiA9IFtzdHJpbmcsIHN0cmluZ11bXTsgLy8gRXhhbXBsZTogW1snR2VuZScsICdodHRwOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvZ2VuZS8/dGVybT1nZW5lJ11dXG5leHBvcnQgdHlwZSBEYXRhVmFyaWFudFRhYmxlSnNvbkNvbHVtbiA9IERhdGFWYXJpYW50VGFibGVKc29uVmFsdWVDb2x1bW4gfFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhVmFyaWFudFRhYmxlSnNvbkRlbGltaXRlZENvbHVtbiB8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFWYXJpYW50VGFibGVKc29uVXJsc0NvbHVtbjtcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVZhcmlhbnRUYWJsZVJvdyB7XG4gICAgY29sdW1uczogRGF0YVZhcmlhbnRUYWJsZUpzb25Db2x1bW5bXTtcbiAgICBwb3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhVmFyaWFudFRhYmxlSnNvbiB7IC8vIGFwaS10eXBlY2hlY2s6YW1wbGljb25fdGFibGVfb3V0cHV0Lmpzb24uZ3pcbiAgICBjb2x1bW5fdHlwZXM6IEFycmF5PCd2YWx1ZScgfCAnZGVsaW1pdGVkJyB8ICd1cmxzJz47XG4gICAgaGVhZGVyczogc3RyaW5nW107XG4gICAgbGFiZWxzOiBzdHJpbmdbXTtcbiAgICBkYXRhOiBEYXRhVmFyaWFudFRhYmxlUm93W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVZhcmlhbnRUYWJsZVN0b3JhZ2UgZXh0ZW5kcyBTdG9yYWdlIHtcbiAgICBqc29uOiBEYXRhVmFyaWFudFRhYmxlSnNvbjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb2xsZWN0aW9uXG5cbmV4cG9ydCB0eXBlIENvbGxlY3Rpb25QZXJtaXNzaW9ucyA9IFZpZXdQZXJtaXNzaW9uIHwgRWRpdFBlcm1pc3Npb24gfCBTaGFyZVBlcm1pc3Npb24gfFxuICAgIERvd25sb2FkUGVybWlzc2lvbiB8IEFkZFBlcm1pc3Npb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbiB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBjcmVhdGVkOiBzdHJpbmc7XG4gICAgbW9kaWZpZWQ6IHN0cmluZztcbiAgICBkdXBsaWNhdGVkOiB2b2lkIHwgc3RyaW5nO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBkZXNjcmlwdG9yX3NjaGVtYTogRGVzY3JpcHRvclNjaGVtYUJhc2U7XG4gICAgZGVzY3JpcHRvcjogYW55O1xuICAgIGNvbnRyaWJ1dG9yOiBDb250cmlidXRvcjtcbiAgICBjdXJyZW50X3VzZXJfcGVybWlzc2lvbnM6IEl0ZW1QZXJtaXNzaW9uc09mPENvbGxlY3Rpb25QZXJtaXNzaW9ucz5bXTtcbiAgICB0YWdzOiBzdHJpbmdbXTtcbiAgICBzZXR0aW5nczogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNhbXBsZSBleHRlbmRzIENvbGxlY3Rpb24ge1xuICAgIGNvbGxlY3Rpb246IHZvaWQgfCBPbWl0PENvbGxlY3Rpb24sICdjdXJyZW50X3VzZXJfcGVybWlzc2lvbnMnPjtcbiAgICBkZXNjcmlwdG9yX2NvbXBsZXRlZDogYm9vbGVhbjtcbiAgICB0eXBlOiAnc2FtcGxlJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uSHlkcmF0ZURhdGEgZXh0ZW5kcyBDb2xsZWN0aW9uIHtcbiAgICBkYXRhOiBEYXRhW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FtcGxlSHlkcmF0ZURhdGEgZXh0ZW5kcyBTYW1wbGUge1xuICAgIGRhdGE6IERhdGFbXTtcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFN0b3JhZ2VcblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGF0YTogbnVtYmVyO1xuICAgIGpzb246IGFueTtcbiAgICBjb250cmlidXRvcjogQ29udHJpYnV0b3I7XG4gICAgY3JlYXRlZDogc3RyaW5nO1xuICAgIG1vZGlmaWVkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FtcGxlQ2x1c3RlcmluZyB7IC8vIGFwaS10eXBlY2hlY2s6c2FtcGxlX2NsdXN0ZXJfZGF0YS5qc29uLmd6XG4gICAgb3JkZXI6IG51bWJlcltdO1xuICAgIGxpbmthZ2U6IG51bWJlcltdW107IC8vIFtbbm9kZTEsIG5vZGUyLCBkaXN0YW5jZSwgbnVtYmVyIG9mIHNhbXBsZXNdXVxuICAgIHNhbXBsZV9pZHM6IF8uRGljdGlvbmFyeTx7IGlkOiBudW1iZXIgfT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZUNsdXN0ZXJpbmcgeyAvLyBhcGktdHlwZWNoZWNrOmdlbmVfY2x1c3Rlcl9kYXRhLmpzb24uZ3pcbiAgICBvcmRlcjogbnVtYmVyW107XG4gICAgbGlua2FnZTogbnVtYmVyW11bXTsgLy8gW1tub2RlMSwgbm9kZTIsIGRpc3RhbmNlLCBudW1iZXIgb2YgZ2VuZXNdXVxuICAgIGdlbmVfc3ltYm9sczogXy5EaWN0aW9uYXJ5PHsgZ2VuZTogc3RyaW5nIH0+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBDQSB7IC8vIGFwaS10eXBlY2hlY2s6cGNhX3Bsb3RfbmNiaS5qc29uLmd6XG4gICAgZXhwbGFpbmVkX3ZhcmlhbmNlX3JhdGlvczogbnVtYmVyW107XG4gICAgYWxsX2V4cGxhaW5lZF92YXJpYW5jZV9yYXRpb3M6IG51bWJlcltdO1xuICAgIGFsbF9jb21wb25lbnRzOiBbc3RyaW5nLCBudW1iZXJdW11bXTtcbiAgICBjb21wb25lbnRzOiBbc3RyaW5nLCBudW1iZXJdW11bXTtcbiAgICB6ZXJvX2dlbmVfc3ltYm9sczogc3RyaW5nW107IC8vIGdlbmUgaWRzIHdpdGggbm8gZXhwcmVzc2lvbnNcbiAgICBmbG90OiB7XG4gICAgICAgIHhsYWJlbDogc3RyaW5nO1xuICAgICAgICB5bGFiZWw6IHN0cmluZztcbiAgICAgICAgZGF0YTogbnVtYmVyW11bXTtcbiAgICAgICAgc2FtcGxlX2lkczogc3RyaW5nW107XG4gICAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRQ1N0b3JhZ2UgZXh0ZW5kcyBTdG9yYWdlIHtcbiAgICBqc29uOiB7XG4gICAgICAgIHN0YXR1czogJ1BBU1MnIHwgJ0ZBSUwnIHwgJ1dBUk5JTkcnLFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgfTtcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFVzZXJcblxuZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBmaXJzdF9uYW1lOiBzdHJpbmc7XG4gICAgbGFzdF9uYW1lOiBzdHJpbmc7XG4gICAgam9iX3RpdGxlOiBzdHJpbmc7XG4gICAgY29tcGFueTogc3RyaW5nO1xuICAgIGRlcGFydG1lbnQ6IHN0cmluZztcbiAgICBsb2NhdGlvbjogc3RyaW5nO1xuICAgIGxhYjogc3RyaW5nO1xuICAgIHBob25lX251bWJlcjogc3RyaW5nO1xuICAgIGxhc3RfbG9naW46IHN0cmluZztcbiAgICBkYXRlX2pvaW5lZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luUmVzcG9uc2Uge1xuICAgIGtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ291dFJlc3BvbnNlIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBY2NvdW50SW5mb3JtYXRpb24ge1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIGZpcnN0X25hbWU6IHN0cmluZztcbiAgICBsYXN0X25hbWU6IHN0cmluZztcbiAgICBqb2JfdGl0bGU/OiBzdHJpbmc7XG4gICAgY29tcGFueT86IHN0cmluZztcbiAgICBkZXBhcnRtZW50Pzogc3RyaW5nO1xuICAgIGxvY2F0aW9uPzogc3RyaW5nO1xuICAgIGxhYj86IHN0cmluZztcbiAgICBwaG9uZV9udW1iZXI/OiBzdHJpbmc7XG4gICAgbmV3c2xldHRlcj86IGJvb2xlYW47XG4gICAgY29tbXVuaXR5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2YXRlQWNjb3VudFJlc3BvbnNlIHtcbiAgICB1c2VybmFtZTogc3RyaW5nO1xufVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRmlsZVxuXG5leHBvcnQgaW50ZXJmYWNlIERvd25sb2FkIHtcbiAgICBkYXRhOiBzdHJpbmc7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGkvdHlwZXMvcmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7QUFxQ0gsU0FBZ0IsbUJBQW1CLENBQUksUUFBMkI7SUFDOUQsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFGRCxrREFFQztBQXNCWSxRQUFBLGdCQUFnQixHQUFvQixPQUFPLENBQUM7QUFDNUMsUUFBQSxnQkFBZ0IsR0FBb0IsT0FBTyxDQUFDO0FBQzVDLFFBQUEsZUFBZSxHQUFtQixNQUFNLENBQUM7QUFDekMsUUFBQSxpQkFBaUIsR0FBcUIsTUFBTSxDQUFDO0FBQzdDLFFBQUEsY0FBYyxHQUFrQixLQUFLLENBQUM7QUFDdEMsUUFBQSxtQkFBbUIsR0FBdUIsVUFBVSxDQUFDO0FBQ3JELFFBQUEsZUFBZSxHQUFtQixNQUFNLENBQUM7QUFVekMsUUFBQSxzQkFBc0IsR0FBeUIsUUFBUSxDQUFDO0FBQ3hELFFBQUEscUJBQXFCLEdBQXdCLE9BQU8sQ0FBQztBQUNyRCxRQUFBLG9CQUFvQixHQUF1QixNQUFNLENBQUM7QUFrRGxELFFBQUEsdUJBQXVCLEdBQTBCLEtBQUssQ0FBQztBQUN2RCxRQUFBLDBCQUEwQixHQUE2QixLQUFLLENBQUM7QUFDN0QsUUFBQSx3QkFBd0IsR0FBMkIsS0FBSyxDQUFDO0FBdUt6RCxRQUFBLHFCQUFxQixHQUF3QixJQUFJLENBQUM7QUFDbEQsUUFBQSxxQkFBcUIsR0FBd0IsSUFBSSxDQUFDO0FBQ2xELFFBQUEsbUJBQW1CLEdBQXNCLElBQUksQ0FBQztBQUM5QyxRQUFBLHNCQUFzQixHQUF5QixJQUFJLENBQUM7QUFDcEQsUUFBQSxnQkFBZ0IsR0FBbUIsSUFBSSxDQUFDO0FBQ3hDLFFBQUEsaUJBQWlCLEdBQW9CLElBQUksQ0FBQztBQUMxQyxRQUFBLGlCQUFpQixHQUFvQixJQUFJLENBQUMiLCJmaWxlIjoiYXBpL3R5cGVzL3Jlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogVHlwZSBkZWZpbml0aW9uc1xuICpcbiAqIEhlcmUgaXMgZGVmaW5lZCBldmVyeXRoaW5nIHRoZSBBUEkgcmV0dXJucy5cbiAqL1xuXG5pbXBvcnQgKiBhcyBSeCBmcm9tICdyeCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCBEaWN0aW9uYXJ5ID0gXy5EaWN0aW9uYXJ5O1xuaW1wb3J0IE51bWVyaWNEaWN0aW9uYXJ5ID0gXy5OdW1lcmljRGljdGlvbmFyeTtcblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFF1ZXJ5XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaWN0UXVlcnkge1xuICAgIGxpbWl0PzogbnVtYmVyO1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgICBvcmRlcmluZz86IHN0cmluZzsgLy8gJy1maWVsZDEsLWZpZWxkMixmaWVsZDMnXG4gICAgZmllbGRzPzogc3RyaW5nOyAvLyAnaWQsc2x1ZyxpbnB1dF9fcmVhZHNfX2ZpbGUnXG4gICAgaWQ/OiBudW1iZXI7XG4gICAgc2x1Zz86IHN0cmluZztcbiAgICBpZF9faW4/OiBzdHJpbmc7IC8vICcxMywyNCwzNSdcbiAgICBzbHVnX19pbj86IHN0cmluZzsgLy8gJ3JlYWRzMSxyZWFkcy1wYWlyZWQtMidcbiAgICBuYW1lX19pY29udGFpbnM/OiBzdHJpbmc7XG4gICAgc3RhdHVzX19pbj86IHN0cmluZzsgLy8gJ1VQLFdULFJFLFBSJ1xuICAgIHRleHQ/OiBzdHJpbmc7IC8vIEVsYXN0aWMgc2VhcmNoXG4gICAgdGFncz86IHN0cmluZzsgLy8gJ2NvbW11bml0eTp1bml2ZXJzZSxjb21tdW5pdHk6ZXhwcmVzc2lvbnMnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnkgZXh0ZW5kcyBTdHJpY3RRdWVyeSB7XG4gICAgW3Byb3BlcnR5TmFtZTogc3RyaW5nXTogYW55O1xuICAgIGRhdGE/OiBcIkRpc2FsbG93IGRlcHJlY2F0ZWQgYXBpLlNhbXBsZS5xdWVyeU9uZSh7IGRhdGE6IGRhdGEuaWQgfSkuIFVzZSBhcGkuRGF0YS5nZXRTYW1wbGVGcm9tRGF0YUlkKGRhdGEuaWQpIGluc3RlYWQuXCI7XG4gICAgcGFyZW50cz86IFwiRGlzYWxsb3cgZGVwcmVjYXRlZCBhcGkuRGF0YS5xdWVyeSh7IHBhcmVudHM6IGRhdGEuaWQgfSkuIFVzZSBhcGkuRGF0YS5nZXRDaGlsZHJlbihkYXRhLmlkKSBpbnN0ZWFkLlwiO1xuICAgIGNoaWxkcmVuPzogXCJEaXNhbGxvdyBkZXByZWNhdGVkIGFwaS5EYXRhLnF1ZXJ5KHsgY2hpbGRyZW46IGRhdGEuaWQgfSkuIFVzZSBhcGkuRGF0YS5nZXRQYXJlbnRzKGRhdGEuaWQpIGluc3RlYWQuXCI7XG4gICAgaHlkcmF0ZV9kYXRhPzogXCJEaXNhbGxvdyBkZXByZWNhdGVkIGh5ZHJhdGVfZGF0YS5cIjtcbiAgICBoeWRyYXRlX2NvbGxlY3Rpb25zPzogXCJEaXNhbGxvdyBkZXByZWNhdGVkIGh5ZHJhdGVfY29sbGVjdGlvbnMuXCI7XG4gICAgaHlkcmF0ZV9lbnRpdGllcz86IFwiRGlzYWxsb3cgZGVwcmVjYXRlZCBoeWRyYXRlX2VudGl0aWVzLlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXNwb25zZVBhZ2luYXRlZDxUPihyZXNwb25zZTogVCB8IHsgcmVzdWx0czogVH0pOiByZXNwb25zZSBpcyB7IHJlc3VsdHM6IFQgfSB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmhhc093blByb3BlcnR5KCdyZXN1bHRzJyk7XG59XG5cbi8vIExpbWl0T2Zmc2V0UGFnaW5hdGlvblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0ZWRSZXNwb25zZTxUPiB7XG4gICAgY291bnQ6IG51bWJlcjtcbiAgICBuZXh0OiBzdHJpbmc7XG4gICAgcHJldmlvdXM6IHN0cmluZztcbiAgICByZXN1bHRzOiBUW107XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQZXJtaXNzaW9uc1xuXG5leHBvcnQgdHlwZSBPd25lclBlcm1pc3Npb24gPSAnb3duZXInO1xuZXhwb3J0IHR5cGUgU2hhcmVQZXJtaXNzaW9uID0gJ3NoYXJlJztcbmV4cG9ydCB0eXBlIEVkaXRQZXJtaXNzaW9uID0gJ2VkaXQnO1xuZXhwb3J0IHR5cGUgRGVsZXRlUGVybWlzc2lvbiA9ICdlZGl0JzsgLy8gbm90IGEgdHlwbyAoQVBJIGRvZXNuJ3Qgc3VwcG9ydCBkZWxldGUgcGVybWlzc2lvbilcbmV4cG9ydCB0eXBlIEFkZFBlcm1pc3Npb24gPSAnYWRkJztcbmV4cG9ydCB0eXBlIERvd25sb2FkUGVybWlzc2lvbiA9ICdkb3dubG9hZCc7XG5leHBvcnQgdHlwZSBWaWV3UGVybWlzc2lvbiA9ICd2aWV3JztcblxuZXhwb3J0IGNvbnN0IE9XTkVSX1BFUk1JU1NJT046IE93bmVyUGVybWlzc2lvbiA9ICdvd25lcic7XG5leHBvcnQgY29uc3QgU0hBUkVfUEVSTUlTU0lPTjogU2hhcmVQZXJtaXNzaW9uID0gJ3NoYXJlJztcbmV4cG9ydCBjb25zdCBFRElUX1BFUk1JU1NJT046IEVkaXRQZXJtaXNzaW9uID0gJ2VkaXQnO1xuZXhwb3J0IGNvbnN0IERFTEVURV9QRVJNSVNTSU9OOiBEZWxldGVQZXJtaXNzaW9uID0gJ2VkaXQnO1xuZXhwb3J0IGNvbnN0IEFERF9QRVJNSVNTSU9OOiBBZGRQZXJtaXNzaW9uID0gJ2FkZCc7XG5leHBvcnQgY29uc3QgRE9XTkxPQURfUEVSTUlTU0lPTjogRG93bmxvYWRQZXJtaXNzaW9uID0gJ2Rvd25sb2FkJztcbmV4cG9ydCBjb25zdCBWSUVXX1BFUk1JU1NJT046IFZpZXdQZXJtaXNzaW9uID0gJ3ZpZXcnO1xuXG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uID0gT3duZXJQZXJtaXNzaW9uIHwgU2hhcmVQZXJtaXNzaW9uIHwgRWRpdFBlcm1pc3Npb24gfCBEZWxldGVQZXJtaXNzaW9uIHwgQWRkUGVybWlzc2lvbiB8XG4gICAgRG93bmxvYWRQZXJtaXNzaW9uIHwgVmlld1Blcm1pc3Npb247XG5cblxuZXhwb3J0IHR5cGUgUHVibGljUGVybWlzc2lvblR5cGUgPSAncHVibGljJztcbmV4cG9ydCB0eXBlIEdyb3VwUGVybWlzc2lvblR5cGUgPSAnZ3JvdXAnO1xuZXhwb3J0IHR5cGUgVXNlclBlcm1pc3Npb25UeXBlID0gJ3VzZXInO1xuXG5leHBvcnQgY29uc3QgUFVCTElDX1BFUk1JU1NJT05fVFlQRTogUHVibGljUGVybWlzc2lvblR5cGUgPSAncHVibGljJztcbmV4cG9ydCBjb25zdCBHUk9VUF9QRVJNSVNTSU9OX1RZUEU6IEdyb3VwUGVybWlzc2lvblR5cGUgPSAnZ3JvdXAnO1xuZXhwb3J0IGNvbnN0IFVTRVJfUEVSTUlTU0lPTl9UWVBFOiBVc2VyUGVybWlzc2lvblR5cGUgPSAndXNlcic7XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb25UeXBlID0gUHVibGljUGVybWlzc2lvblR5cGUgfCBHcm91cFBlcm1pc3Npb25UeXBlIHwgVXNlclBlcm1pc3Npb25UeXBlO1xuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1QZXJtaXNzaW9uc09mPFQ+IHtcbiAgICB0eXBlOiBQZXJtaXNzaW9uVHlwZTtcbiAgICBwZXJtaXNzaW9uczogVFtdO1xuICAgIGlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEl0ZW1QZXJtaXNzaW9ucyA9IEl0ZW1QZXJtaXNzaW9uc09mPFBlcm1pc3Npb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNldFBlcm1pc3Npb25zUmVxdWVzdCB7XG4gICAgcHVibGljPzoge1xuICAgICAgICBhZGQ/OiBQZXJtaXNzaW9uW10sXG4gICAgICAgIHJlbW92ZT86IFBlcm1pc3Npb25bXSxcbiAgICB9O1xuICAgIGdyb3Vwcz86IHtcbiAgICAgICAgYWRkPzogTnVtZXJpY0RpY3Rpb25hcnk8UGVybWlzc2lvbltdPiB8IERpY3Rpb25hcnk8UGVybWlzc2lvbltdPixcbiAgICAgICAgcmVtb3ZlPzogTnVtZXJpY0RpY3Rpb25hcnk8UGVybWlzc2lvbltdPiB8IERpY3Rpb25hcnk8UGVybWlzc2lvbltdPixcbiAgICB9O1xuICAgIHVzZXJzPzoge1xuICAgICAgICBhZGQ/OiBOdW1lcmljRGljdGlvbmFyeTxQZXJtaXNzaW9uW10+IHwgRGljdGlvbmFyeTxQZXJtaXNzaW9uW10+LFxuICAgICAgICByZW1vdmU/OiBOdW1lcmljRGljdGlvbmFyeTxQZXJtaXNzaW9uW10+IHwgRGljdGlvbmFyeTxQZXJtaXNzaW9uW10+LFxuICAgIH07XG4gICAgc2hhcmVfY29udGVudD86ICcwJyB8ICcxJztcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbnRyaWJ1dG9yXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJpYnV0b3Ige1xuICAgIGlkOiBudW1iZXI7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICBmaXJzdF9uYW1lOiBzdHJpbmc7XG4gICAgbGFzdF9uYW1lOiBzdHJpbmc7XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQcm9jZXNzXG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NQZXJtaXNzaW9ucyA9IFZpZXdQZXJtaXNzaW9uIHwgU2hhcmVQZXJtaXNzaW9uO1xuXG5leHBvcnQgdHlwZSBSYXdQcm9jZXNzUGVyc2lzdGVuY2UgPSAnUkFXJztcbmV4cG9ydCB0eXBlIENhY2hlZFByb2Nlc3NQZXJzaXN0ZW5jZSA9ICdDQUMnO1xuZXhwb3J0IHR5cGUgVGVtcFByb2Nlc3NQZXJzaXN0ZW5jZSA9ICdUTVAnO1xuXG5leHBvcnQgY29uc3QgUkFXX1BST0NFU1NfUEVSU0lTVEVOQ0U6IFJhd1Byb2Nlc3NQZXJzaXN0ZW5jZSA9ICdSQVcnO1xuZXhwb3J0IGNvbnN0IENBQ0hFRF9QUk9DRVNTX1BFUlNJU1RFTkNFOiBDYWNoZWRQcm9jZXNzUGVyc2lzdGVuY2UgPSAnQ0FDJztcbmV4cG9ydCBjb25zdCBURU1QX1BST0NFU1NfUEVSU0lTVEVOQ0U6IFRlbXBQcm9jZXNzUGVyc2lzdGVuY2UgPSAnVE1QJztcblxuZXhwb3J0IHR5cGUgUHJvY2Vzc1BlcnNpc3RlbmNlID0gUmF3UHJvY2Vzc1BlcnNpc3RlbmNlIHwgQ2FjaGVkUHJvY2Vzc1BlcnNpc3RlbmNlIHwgVGVtcFByb2Nlc3NQZXJzaXN0ZW5jZTtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY3JlYXRlZDogc3RyaW5nO1xuICAgIG1vZGlmaWVkOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBjYXRlZ29yeTogc3RyaW5nO1xuICAgIHJlcXVpcmVtZW50cz86IHtcbiAgICAgICAgcmVsYXRpb25zPzogQXJyYXk8e1xuICAgICAgICAgICAgdHlwZTogJ2NvbXBhcmUnIHwgJ2dyb3VwJyB8ICdiYWNrZ3JvdW5kJyB8ICdzZXJpZXMnO1xuICAgICAgICAgICAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgICAgICAgICBsYWJlbHM/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICAgICAgfT47XG4gICAgfTtcbiAgICBwZXJzaXN0ZW5jZTogUHJvY2Vzc1BlcnNpc3RlbmNlO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgaW5wdXRfc2NoZW1hOiBhbnk7XG4gICAgb3V0cHV0X3NjaGVtYTogYW55O1xuICAgIHJ1bjogYW55O1xuICAgIGNvbnRyaWJ1dG9yOiBDb250cmlidXRvcjtcbiAgICBjdXJyZW50X3VzZXJfcGVybWlzc2lvbnM6IEl0ZW1QZXJtaXNzaW9uc09mPFByb2Nlc3NQZXJtaXNzaW9ucz5bXTtcbiAgICBpc19hY3RpdmU6IGJvb2xlYW47XG4gICAgZGF0YV9uYW1lOiBzdHJpbmc7XG4gICAgZW50aXR5X2Rlc2NyaXB0b3Jfc2NoZW1hOiB2b2lkIHwgc3RyaW5nO1xuICAgIGVudGl0eV9pbnB1dDogYW55O1xuICAgIGVudGl0eV90eXBlOiB2b2lkIHwgc3RyaW5nO1xuICAgIHNjaGVkdWxpbmdfY2xhc3M6IHN0cmluZztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZWxhdGlvblxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbGF0aW9uUGFydGl0aW9uIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGVudGl0eTogbnVtYmVyO1xuICAgIHBvc2l0aW9uOiBudW1iZXIgfCBudWxsO1xuICAgIGxhYmVsOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbGF0aW9uIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGNyZWF0ZWQ6IHN0cmluZztcbiAgICBtb2RpZmllZDogc3RyaW5nO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBjb2xsZWN0aW9uOiBudW1iZXI7XG4gICAgcGFydGl0aW9uczogUmVsYXRpb25QYXJ0aXRpb25bXTtcbiAgICBjYXRlZ29yeTogc3RyaW5nO1xuICAgIHVuaXQ6ICdzJyB8ICdtaW4nIHwgJ2hyJyB8ICdkJyB8ICd3aycgfCBudWxsO1xuICAgIGNvbnRyaWJ1dG9yOiBDb250cmlidXRvcjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBEZXNjcmlwdG9yU2NoZW1hXG5cbi8vIFNjaGVtYVxuZXhwb3J0IGludGVyZmFjZSBDaG9pY2VNYXAge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZFNjaGVtYSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuIHwgc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBjb2xsYXBzZWQ/OiBib29sZWFuO1xuICAgIGhpZGRlbj86IGJvb2xlYW4gfCBzdHJpbmc7XG4gICAgZGVmYXVsdD86IGFueTtcbiAgICBjaG9pY2VzPzogQ2hvaWNlTWFwW107XG4gICAgYWxsb3dfY3VzdG9tX2Nob2ljZT86IGJvb2xlYW47XG4gICAgdmFsaWRhdGVfcmVnZXg/OiBzdHJpbmc7XG4gICAgc2x1Zz86IHtcbiAgICAgICAgc291cmNlPzogc3RyaW5nO1xuICAgICAgICB1bmlxdWVWYWxpZGF0b3I/OiAoc2x1Zzogc3RyaW5nKSA9PiBSeC5PYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIH07XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGdyb3VwPzogU2NoZW1hO1xuICAgIHJhbmdlPzogW251bWJlciwgbnVtYmVyXTsgLy8gTWluLCBtYXhcbn1cblxuZXhwb3J0IHR5cGUgU2NoZW1hID0gRmllbGRTY2hlbWFbXTtcblxuXG4vLyBEZXNjcmlwdG9yU2NoZW1hXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yU2NoZW1hUGVybWlzc2lvbnMgPSBWaWV3UGVybWlzc2lvbiB8IEVkaXRQZXJtaXNzaW9uIHwgU2hhcmVQZXJtaXNzaW9uO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0b3JTY2hlbWFCYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGNyZWF0ZWQ6IHN0cmluZztcbiAgICBtb2RpZmllZDogc3RyaW5nO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIHNjaGVtYTogU2NoZW1hO1xuICAgIGNvbnRyaWJ1dG9yOiBDb250cmlidXRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yU2NoZW1hIGV4dGVuZHMgRGVzY3JpcHRvclNjaGVtYUJhc2Uge1xuICAgIGN1cnJlbnRfdXNlcl9wZXJtaXNzaW9uczogSXRlbVBlcm1pc3Npb25zT2Y8RGVzY3JpcHRvclNjaGVtYVBlcm1pc3Npb25zPltdO1xufVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2NhdHRlciBQbG90IEpzb25cblxuLy8gU2NhdHRlclBsb3RKc29uLlJvb3RPYmplY3QgaXMgYSB0eXBlIG9mIHByb2Nlc3Mgb3V0cHV0LiBQcm9jZXNzZXMgKGkuZS4gUm9zZTIpXG4vLyBzYXZlIGl0IHRvIGRhdGEub3V0cHV0LnNjYXR0ZXJfcGxvdC5cbmV4cG9ydCBuYW1lc3BhY2UgU2NhdHRlclBsb3RKc29uIHtcblxuICAgIGV4cG9ydCBpbnRlcmZhY2UgUm9vdE9iamVjdCB7IC8vIFRoaXMgaXMgdGhlIGFjdHVhbCB0eXBlIG9mIHRoZSBqc29uIG91dHB1dFxuICAgICAgICBwb2ludHM6IFBvaW50cztcbiAgICAgICAgbWV0YT86IE1ldGE7XG4gICAgICAgIGFubm90YXRpb25zPzogQW5ub3RhdGlvbltdO1xuICAgIH1cblxuICAgIGV4cG9ydCBpbnRlcmZhY2UgUG9pbnRzIHtcbiAgICAgICAgeF9heGlzOiBudW1iZXJbXTtcbiAgICAgICAgeV9heGlzOiBudW1iZXJbXTtcbiAgICAgICAgaXRlbXM/OiBhbnlbXTtcbiAgICB9XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIE1ldGEge1xuICAgICAgICB4X2xhYmVsPzogc3RyaW5nO1xuICAgICAgICB5X2xhYmVsPzogc3RyaW5nO1xuICAgICAgICB0ZXh0Pzogc3RyaW5nO1xuICAgICAgICBjaHJfcG9zPzogc3RyaW5nW107XG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgQW5ub3RhdGlvbiA9IEFubm90YXRpb25MaW5lR2VuZXJhbCB8IEFubm90YXRpb25MaW5lVmVydGljYWwgfCBBbm5vdGF0aW9uTGluZUhvcml6b250YWw7XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIEFubm90YXRpb25MaW5lR2VuZXJhbCB7XG4gICAgICAgIHR5cGU6ICdsaW5lJztcbiAgICAgICAgeDE6IG51bWJlcjtcbiAgICAgICAgeDI6IG51bWJlcjtcbiAgICAgICAgeTE6IG51bWJlcjtcbiAgICAgICAgeTI6IG51bWJlcjtcbiAgICB9XG4gICAgZXhwb3J0IGludGVyZmFjZSBBbm5vdGF0aW9uTGluZVZlcnRpY2FsIHtcbiAgICAgICAgdHlwZTogJ2xpbmVfdmVydGljYWwnO1xuICAgICAgICB4OiBudW1iZXI7XG4gICAgfVxuICAgIGV4cG9ydCBpbnRlcmZhY2UgQW5ub3RhdGlvbkxpbmVIb3Jpem9udGFsIHtcbiAgICAgICAgdHlwZTogJ2xpbmVfaG9yaXpvbnRhbCc7XG4gICAgICAgIHk6IG51bWJlcjtcbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRGF0YVxuXG5leHBvcnQgdHlwZSBEYXRhUGVybWlzc2lvbnMgPSBWaWV3UGVybWlzc2lvbiB8IEVkaXRQZXJtaXNzaW9uIHwgU2hhcmVQZXJtaXNzaW9uIHwgRG93bmxvYWRQZXJtaXNzaW9uO1xuXG5leHBvcnQgdHlwZSBVcGxvYWRpbmdEYXRhU3RhdHVzID0gJ1VQJztcbmV4cG9ydCB0eXBlIFJlc29sdmluZ0RhdGFTdGF0dXMgPSAnUkUnO1xuZXhwb3J0IHR5cGUgV2FpdGluZ0RhdGFTdGF0dXMgPSAnV1QnO1xuZXhwb3J0IHR5cGUgUHJvY2Vzc2luZ0RhdGFTdGF0dXMgPSAnUFInO1xuZXhwb3J0IHR5cGUgRG9uZURhdGFTdGF0dXMgPSAnT0snO1xuZXhwb3J0IHR5cGUgRXJyb3JEYXRhU3RhdHVzID0gJ0VSJztcbmV4cG9ydCB0eXBlIERpcnR5RGF0YVN0YXR1cyA9ICdEUic7XG5cbmV4cG9ydCBjb25zdCBVUExPQURJTkdfREFUQV9TVEFUVVM6IFVwbG9hZGluZ0RhdGFTdGF0dXMgPSAnVVAnO1xuZXhwb3J0IGNvbnN0IFJFU09MVklOR19EQVRBX1NUQVRVUzogUmVzb2x2aW5nRGF0YVN0YXR1cyA9ICdSRSc7XG5leHBvcnQgY29uc3QgV0FJVElOR19EQVRBX1NUQVRVUzogV2FpdGluZ0RhdGFTdGF0dXMgPSAnV1QnO1xuZXhwb3J0IGNvbnN0IFBST0NFU1NJTkdfREFUQV9TVEFUVVM6IFByb2Nlc3NpbmdEYXRhU3RhdHVzID0gJ1BSJztcbmV4cG9ydCBjb25zdCBET05FX0RBVEFfU1RBVFVTOiBEb25lRGF0YVN0YXR1cyA9ICdPSyc7XG5leHBvcnQgY29uc3QgRVJST1JfREFUQV9TVEFUVVM6IEVycm9yRGF0YVN0YXR1cyA9ICdFUic7XG5leHBvcnQgY29uc3QgRElSVFlfREFUQV9TVEFUVVM6IERpcnR5RGF0YVN0YXR1cyA9ICdEUic7XG5cbmV4cG9ydCB0eXBlIERhdGFTdGF0dXMgPSBVcGxvYWRpbmdEYXRhU3RhdHVzIHwgUmVzb2x2aW5nRGF0YVN0YXR1cyB8IFdhaXRpbmdEYXRhU3RhdHVzIHwgUHJvY2Vzc2luZ0RhdGFTdGF0dXMgfFxuICAgIERvbmVEYXRhU3RhdHVzIHwgRXJyb3JEYXRhU3RhdHVzIHwgRGlydHlEYXRhU3RhdHVzO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICAgIGlkOiBudW1iZXI7XG4gICAgY3JlYXRlZDogc3RyaW5nO1xuICAgIG1vZGlmaWVkOiBzdHJpbmc7XG4gICAgc2NoZWR1bGVkOiBzdHJpbmc7XG4gICAgc3RhcnRlZDogc3RyaW5nO1xuICAgIGZpbmlzaGVkOiBzdHJpbmc7XG4gICAgZHVwbGljYXRlZDogdm9pZCB8IHN0cmluZztcblxuICAgIGNoZWNrc3VtOiBzdHJpbmc7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIHN0YXR1czogRGF0YVN0YXR1cztcbiAgICBwcm9jZXNzX3Byb2dyZXNzOiBudW1iZXI7XG4gICAgcHJvY2Vzc19yYzogbnVtYmVyO1xuICAgIHByb2Nlc3NfY29yZXM6IG51bWJlcjtcbiAgICBwcm9jZXNzX21lbW9yeTogbnVtYmVyO1xuICAgIHByb2Nlc3NfaW5mbzogc3RyaW5nW107XG4gICAgcHJvY2Vzc193YXJuaW5nOiBzdHJpbmdbXTtcbiAgICBwcm9jZXNzX2Vycm9yOiBzdHJpbmdbXTtcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGlucHV0OiBhbnk7XG4gICAgb3V0cHV0OiBhbnk7XG4gICAgZGVzY3JpcHRvcl9zY2hlbWE6IERlc2NyaXB0b3JTY2hlbWFCYXNlO1xuICAgIGRlc2NyaXB0b3I6IGFueTtcbiAgICBjb250cmlidXRvcjogQ29udHJpYnV0b3I7XG4gICAgcHJvY2VzczogT21pdDxQcm9jZXNzLCAnY3VycmVudF91c2VyX3Blcm1pc3Npb25zJz47XG4gICAgdGFnczogc3RyaW5nW107XG5cbiAgICBlbnRpdHk6IHZvaWQgfCBPbWl0PFNhbXBsZSwgJ2N1cnJlbnRfdXNlcl9wZXJtaXNzaW9ucyc+O1xuICAgIGNvbGxlY3Rpb246IHZvaWQgfCBPbWl0PENvbGxlY3Rpb24sICdjdXJyZW50X3VzZXJfcGVybWlzc2lvbnMnPjtcbiAgICBjdXJyZW50X3VzZXJfcGVybWlzc2lvbnM6IEl0ZW1QZXJtaXNzaW9uc09mPERhdGFQZXJtaXNzaW9ucz5bXTtcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGRhdGE6ZGlmZmVyZW50aWFsZXhwcmVzc2lvbjpcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhRGlmZmVyZW50aWFsRXhwcmVzc2lvbiBleHRlbmRzIERhdGEge1xuICAgIG91dHB1dDoge1xuICAgICAgICBkZV9maWxlOiB7IGZpbGU6IHN0cmluZywgc2l6ZTogbnVtYmVyIH07XG4gICAgICAgIHJhdzogeyBmaWxlOiBzdHJpbmcsIHNpemU6IG51bWJlciB9O1xuICAgICAgICBkZV9qc29uOiBudW1iZXI7XG4gICAgICAgIHNvdXJjZTogc3RyaW5nO1xuICAgICAgICBzcGVjaWVzOiBzdHJpbmc7XG4gICAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkYXRhOmdlbmVzZXQ6XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdlbmVzZXRPdXRwdXQge1xuICAgIGdlbmVzZXQ6IHsgZmlsZTogc3RyaW5nLCBzaXplOiBudW1iZXIgfTtcbiAgICBnZW5lc2V0X2pzb246IG51bWJlcjsgLy8gPT4gRGF0YUdlbmVzZXRTdG9yYWdlXG4gICAgc291cmNlOiBzdHJpbmc7XG4gICAgc3BlY2llczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHZW5lc2V0IGV4dGVuZHMgRGF0YSB7XG4gICAgb3V0cHV0OiBEYXRhR2VuZXNldE91dHB1dDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR2VuZXNldFN0b3JhZ2UgZXh0ZW5kcyBTdG9yYWdlIHtcbiAgICBqc29uOiB7XG4gICAgICAgIGdlbmVzOiBzdHJpbmdbXTtcbiAgICB9O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGRhdGE6Z2VuZXNldDp2ZW5uOlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHZW5lc2V0VmVubk91dHB1dCBleHRlbmRzIERhdGFHZW5lc2V0T3V0cHV0IHtcbiAgICB2ZW5uOiBudW1iZXI7IC8vID0+IERhdGFHZW5lc2V0VmVublN0b3JhZ2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR2VuZXNldFZlbm4gZXh0ZW5kcyBEYXRhR2VuZXNldCB7XG4gICAgb3V0cHV0OiBEYXRhR2VuZXNldFZlbm5PdXRwdXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdlbmVzZXRWZW5uU3RvcmFnZSBleHRlbmRzIFN0b3JhZ2Uge1xuICAgIGpzb246IHtcbiAgICAgICAgcGFyZW50czogQXJyYXk8e1xuICAgICAgICAgICAgaWQ6IG51bWJlcjtcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICAgIGdlbmVzOiBzdHJpbmdbXTsgLy8gZ2VuZXNldF9qc29uIC4gZ2VuZXNcbiAgICAgICAgfT47XG4gICAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkYXRhOmdvZWE6IEdlbmUgT250b2xvZ3lcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR09FbnJpY2htZW50QW5hbHlzaXMgZXh0ZW5kcyBEYXRhIHtcbiAgICBvdXRwdXQ6IHtcbiAgICAgICAgdGVybXM6IG51bWJlcjsgLy8gPT4gRGF0YUdPRW5yaWNobWVudEFuYWx5c2lzU3RvcmFnZVxuICAgICAgICBzb3VyY2U6IHN0cmluZztcbiAgICAgICAgc3BlY2llczogc3RyaW5nO1xuICAgIH07XG59XG5cbmV4cG9ydCB0eXBlIEdPRW5yaWNobWVudEFzcGVjdCA9IEdPRW5yaWNobWVudE5vZGVbXTtcbmV4cG9ydCBpbnRlcmZhY2UgR09FbnJpY2htZW50SnNvbiB7XG4gICAgdG90YWxfZ2VuZXM6IG51bWJlcjtcbiAgICBnZW5lX2Fzc29jaWF0aW9uczoge1xuICAgICAgICBbZ29UZXJtSWQ6IHN0cmluZ106IHN0cmluZ1tdOyAvLyB0ZXJtX2lkID0+IGdlbmVfaWRzXG4gICAgfTtcbiAgICB0cmVlOiB7XG4gICAgICAgIFthc3BlY3RTbHVnOiBzdHJpbmddOiBHT0VucmljaG1lbnRBc3BlY3QsIC8vIFwiQlBcIiB8IFwiQ0NcIiB8IFwiTUZcIlxuICAgIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR09FbnJpY2htZW50Tm9kZSB7XG4gICAgZ2VuZV9pZHM6IHN0cmluZ1tdOyAvLyBzZWxlY3RlZF9nZW5lX2Fzc29jaWF0aW9uc1xuICAgIHRlcm1fbmFtZTogc3RyaW5nO1xuICAgIHRlcm1faWQ6IHN0cmluZztcbiAgICBwdmFsOiBudW1iZXI7XG4gICAgc2NvcmU6IG51bWJlcjtcbiAgICBtYXRjaGVkOiBudW1iZXI7IC8vIE51bWJlciBvZiBmb3VuZCBlbGVtZW50cyBpbiBhIHNpbmdsZSBub2RlLlxuICAgIHRvdGFsOiBudW1iZXI7IC8vIFRvdGFsIG51bWJlciBvZiBlbGVtZW50cyAoaW5jbHVkaW5nIGNoaWxkcmVuIG5vZGVzKSBpbiBhIHNpbmdsZSBub2RlLlxuICAgIGNoaWxkcmVuPzogR09FbnJpY2htZW50Tm9kZVtdO1xuXG4gICAgLy8gQWRkZWQgYnkgZnJvbnRlbmQ6XG4gICAgZGVwdGg/OiBudW1iZXI7IC8vIE51bWVyaWNhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbGV2ZWwgb2YgZGVwdGguIFVzZWQgZm9yIG9mZnNldHRpbmcgdGhlIHRlcm0gY29sdW1uLlxuICAgIHNvdXJjZT86IHN0cmluZztcbiAgICBzcGVjaWVzPzogc3RyaW5nO1xuICAgIHNjb3JlX3BlcmNlbnRhZ2U/OiBudW1iZXI7IC8vIFBlcmNlbnRhZ2Ugb2YgbWF4IHNjb3JlIHdpdGhpbiBHT0VucmljaG1lbnRBc3BlY3QuXG4gICAgZ2VuZV9hc3NvY2lhdGlvbnM/OiBzdHJpbmdbXTsgLy8gYWxsX2dlbmVfYXNzb2NpYXRpb25zIC0gUGx1Y2tlZCBmcm9tIEdPRW5yaWNobWVudEpzb24uZ2VuZV9hc3NvY2lhdGlvbnMuXG4gICAgY29sbGFwc2VkPzogYm9vbGVhbjsgLy8gQm9vbGVhbiByZXByZXNlbnRhdGlvbiBpZiB0aGUgc2VsZWN0ZWQgaXRlbSBpcyBoaWRkZW4uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdPRW5yaWNobWVudEFuYWx5c2lzU3RvcmFnZSBleHRlbmRzIFN0b3JhZ2Uge1xuICAgIGpzb246IEdPRW5yaWNobWVudEpzb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdPRW5yaWNobWVudEFuYWx5c2lzSW5wdXQge1xuICAgIHB2YWxfdGhyZXNob2xkOiBudW1iZXI7XG4gICAgZ2VuZXM6IHN0cmluZ1tdO1xuICAgIHNvdXJjZTogc3RyaW5nO1xuICAgIHNwZWNpZXM6IHN0cmluZztcbiAgICBvbnRvbG9neTogbnVtYmVyO1xuICAgIGdhZjogbnVtYmVyO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGRhdGE6Z2FmOiBHQUYgYW5ub3RhdGlvblxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHYWZBbm5vdGF0aW9uIGV4dGVuZHMgRGF0YSB7XG4gICAgb3V0cHV0OiB7XG4gICAgICAgIHNvdXJjZTogc3RyaW5nO1xuICAgICAgICBzcGVjaWVzOiBzdHJpbmc7XG4gICAgICAgIGdhZjogeyBmaWxlOiBzdHJpbmcsIHNpemU6IG51bWJlciB9O1xuICAgICAgICBnYWZfb2JqOiB7IGZpbGU6IHN0cmluZywgc2l6ZTogbnVtYmVyIH07XG4gICAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBkYXRhOnZhcmlhbnR0YWJsZTpcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhVmFyaWFudEFtcGxpY29uVGFibGUgZXh0ZW5kcyBEYXRhIHtcbiAgICBpbnB1dDoge1xuICAgICAgICBtYXN0ZXJfZmlsZTogbnVtYmVyOyAvLyBkYXRhIElEXG4gICAgICAgIGNvdmVyYWdlOiBudW1iZXI7IC8vIGRhdGEgSURcbiAgICAgICAgYW5ub3RfdmFyczogbnVtYmVyW107IC8vIGRhdGEgSURzXG4gICAgICAgIGFsbF9hbXBsaWNvbnM6IGJvb2xlYW47XG4gICAgICAgIHRhYmxlX25hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIG91dHB1dDoge1xuICAgICAgICB2YXJpYW50X3RhYmxlOiBudW1iZXI7IC8vID0+IERhdGFWYXJpYW50VGFibGVTdG9yYWdlXG4gICAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhVmFyaWFudFRMQVRhYmxlIGV4dGVuZHMgRGF0YSB7XG4gICAgaW5wdXQ6IHtcbiAgICAgICAgdGxhX3Jlc3VsdHM6IG51bWJlcjsgLy8gZGF0YSBJRFxuICAgIH07XG4gICAgb3V0cHV0OiB7XG4gICAgICAgIHZhcmlhbnRfdGFibGU6IG51bWJlcjsgLy8gPT4gRGF0YVZhcmlhbnRUYWJsZVN0b3JhZ2VcbiAgICAgICAgc3BlY2llczogc3RyaW5nO1xuICAgICAgICBidWlsZDogc3RyaW5nO1xuICAgIH07XG59XG5cbmV4cG9ydCB0eXBlIERhdGFWYXJpYW50VGFibGUgPSBEYXRhVmFyaWFudEFtcGxpY29uVGFibGUgfCBEYXRhVmFyaWFudFRMQVRhYmxlO1xuXG5leHBvcnQgdHlwZSBEYXRhVmFyaWFudFRhYmxlSnNvblZhbHVlQ29sdW1uID0gc3RyaW5nOyAvLyBFeGFtcGxlOiBNU0g2X2V4b241X0YxLzJcbmV4cG9ydCB0eXBlIERhdGFWYXJpYW50VGFibGVKc29uRGVsaW1pdGVkQ29sdW1uID0gc3RyaW5nOyAvLyBFeGFtcGxlOiBEUDQ9NDYsNDEsMTEsMTY7U0I9NFxuZXhwb3J0IHR5cGUgRGF0YVZhcmlhbnRUYWJsZUpzb25VcmxzQ29sdW1uID0gW3N0cmluZywgc3RyaW5nXVtdOyAvLyBFeGFtcGxlOiBbWydHZW5lJywgJ2h0dHA6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9nZW5lLz90ZXJtPWdlbmUnXV1cbmV4cG9ydCB0eXBlIERhdGFWYXJpYW50VGFibGVKc29uQ29sdW1uID0gRGF0YVZhcmlhbnRUYWJsZUpzb25WYWx1ZUNvbHVtbiB8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFWYXJpYW50VGFibGVKc29uRGVsaW1pdGVkQ29sdW1uIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVZhcmlhbnRUYWJsZUpzb25VcmxzQ29sdW1uO1xuZXhwb3J0IGludGVyZmFjZSBEYXRhVmFyaWFudFRhYmxlUm93IHtcbiAgICBjb2x1bW5zOiBEYXRhVmFyaWFudFRhYmxlSnNvbkNvbHVtbltdO1xuICAgIHBvczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFWYXJpYW50VGFibGVKc29uIHsgLy8gYXBpLXR5cGVjaGVjazphbXBsaWNvbl90YWJsZV9vdXRwdXQuanNvbi5nelxuICAgIGNvbHVtbl90eXBlczogQXJyYXk8J3ZhbHVlJyB8ICdkZWxpbWl0ZWQnIHwgJ3VybHMnPjtcbiAgICBoZWFkZXJzOiBzdHJpbmdbXTtcbiAgICBsYWJlbHM6IHN0cmluZ1tdO1xuICAgIGRhdGE6IERhdGFWYXJpYW50VGFibGVSb3dbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhVmFyaWFudFRhYmxlU3RvcmFnZSBleHRlbmRzIFN0b3JhZ2Uge1xuICAgIGpzb246IERhdGFWYXJpYW50VGFibGVKc29uO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbGxlY3Rpb25cblxuZXhwb3J0IHR5cGUgQ29sbGVjdGlvblBlcm1pc3Npb25zID0gVmlld1Blcm1pc3Npb24gfCBFZGl0UGVybWlzc2lvbiB8IFNoYXJlUGVybWlzc2lvbiB8XG4gICAgRG93bmxvYWRQZXJtaXNzaW9uIHwgQWRkUGVybWlzc2lvbjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGNyZWF0ZWQ6IHN0cmluZztcbiAgICBtb2RpZmllZDogc3RyaW5nO1xuICAgIGR1cGxpY2F0ZWQ6IHZvaWQgfCBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGRlc2NyaXB0b3Jfc2NoZW1hOiBEZXNjcmlwdG9yU2NoZW1hQmFzZTtcbiAgICBkZXNjcmlwdG9yOiBhbnk7XG4gICAgY29udHJpYnV0b3I6IENvbnRyaWJ1dG9yO1xuICAgIGN1cnJlbnRfdXNlcl9wZXJtaXNzaW9uczogSXRlbVBlcm1pc3Npb25zT2Y8Q29sbGVjdGlvblBlcm1pc3Npb25zPltdO1xuICAgIHRhZ3M6IHN0cmluZ1tdO1xuICAgIHNldHRpbmdzOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FtcGxlIGV4dGVuZHMgQ29sbGVjdGlvbiB7XG4gICAgY29sbGVjdGlvbjogdm9pZCB8IE9taXQ8Q29sbGVjdGlvbiwgJ2N1cnJlbnRfdXNlcl9wZXJtaXNzaW9ucyc+O1xuICAgIHR5cGU6ICdzYW1wbGUnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbGxlY3Rpb25IeWRyYXRlRGF0YSBleHRlbmRzIENvbGxlY3Rpb24ge1xuICAgIGRhdGE6IERhdGFbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYW1wbGVIeWRyYXRlRGF0YSBleHRlbmRzIFNhbXBsZSB7XG4gICAgZGF0YTogRGF0YVtdO1xufVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU3RvcmFnZVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkYXRhOiBudW1iZXI7XG4gICAganNvbjogYW55O1xuICAgIGNvbnRyaWJ1dG9yOiBDb250cmlidXRvcjtcbiAgICBjcmVhdGVkOiBzdHJpbmc7XG4gICAgbW9kaWZpZWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYW1wbGVDbHVzdGVyaW5nIHsgLy8gYXBpLXR5cGVjaGVjazpzYW1wbGVfY2x1c3Rlcl9kYXRhLmpzb24uZ3pcbiAgICBvcmRlcjogbnVtYmVyW107XG4gICAgbGlua2FnZTogbnVtYmVyW11bXTsgLy8gW1tub2RlMSwgbm9kZTIsIGRpc3RhbmNlLCBudW1iZXIgb2Ygc2FtcGxlc11dXG4gICAgc2FtcGxlX2lkczogXy5EaWN0aW9uYXJ5PHsgaWQ6IG51bWJlciB9Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lQ2x1c3RlcmluZyB7IC8vIGFwaS10eXBlY2hlY2s6Z2VuZV9jbHVzdGVyX2RhdGEuanNvbi5nelxuICAgIG9yZGVyOiBudW1iZXJbXTtcbiAgICBsaW5rYWdlOiBudW1iZXJbXVtdOyAvLyBbW25vZGUxLCBub2RlMiwgZGlzdGFuY2UsIG51bWJlciBvZiBnZW5lc11dXG4gICAgZ2VuZV9zeW1ib2xzOiBfLkRpY3Rpb25hcnk8eyBnZW5lOiBzdHJpbmcgfT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUENBIHsgLy8gYXBpLXR5cGVjaGVjazpwY2FfcGxvdF9uY2JpLmpzb24uZ3pcbiAgICBleHBsYWluZWRfdmFyaWFuY2VfcmF0aW9zOiBudW1iZXJbXTtcbiAgICBhbGxfZXhwbGFpbmVkX3ZhcmlhbmNlX3JhdGlvczogbnVtYmVyW107XG4gICAgYWxsX2NvbXBvbmVudHM6IFtzdHJpbmcsIG51bWJlcl1bXVtdO1xuICAgIGNvbXBvbmVudHM6IFtzdHJpbmcsIG51bWJlcl1bXVtdO1xuICAgIHplcm9fZ2VuZV9zeW1ib2xzOiBzdHJpbmdbXTsgLy8gZ2VuZSBpZHMgd2l0aCBubyBleHByZXNzaW9uc1xuICAgIGZsb3Q6IHtcbiAgICAgICAgeGxhYmVsOiBzdHJpbmc7XG4gICAgICAgIHlsYWJlbDogc3RyaW5nO1xuICAgICAgICBkYXRhOiBudW1iZXJbXVtdO1xuICAgICAgICBzYW1wbGVfaWRzOiBzdHJpbmdbXTtcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFDU3RvcmFnZSBleHRlbmRzIFN0b3JhZ2Uge1xuICAgIGpzb246IHtcbiAgICAgICAgc3RhdHVzOiAnUEFTUycgfCAnRkFJTCcgfCAnV0FSTklORycsXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICB9O1xufVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVXNlclxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXIge1xuICAgIGlkOiBudW1iZXI7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIGZpcnN0X25hbWU6IHN0cmluZztcbiAgICBsYXN0X25hbWU6IHN0cmluZztcbiAgICBqb2JfdGl0bGU6IHN0cmluZztcbiAgICBjb21wYW55OiBzdHJpbmc7XG4gICAgZGVwYXJ0bWVudDogc3RyaW5nO1xuICAgIGxvY2F0aW9uOiBzdHJpbmc7XG4gICAgbGFiOiBzdHJpbmc7XG4gICAgcGhvbmVfbnVtYmVyOiBzdHJpbmc7XG4gICAgbGFzdF9sb2dpbjogc3RyaW5nO1xuICAgIGRhdGVfam9pbmVkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5SZXNwb25zZSB7XG4gICAga2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nb3V0UmVzcG9uc2Uge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUFjY291bnRJbmZvcm1hdGlvbiB7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgZmlyc3RfbmFtZTogc3RyaW5nO1xuICAgIGxhc3RfbmFtZTogc3RyaW5nO1xuICAgIGpvYl90aXRsZT86IHN0cmluZztcbiAgICBjb21wYW55Pzogc3RyaW5nO1xuICAgIGRlcGFydG1lbnQ/OiBzdHJpbmc7XG4gICAgbG9jYXRpb24/OiBzdHJpbmc7XG4gICAgbGFiPzogc3RyaW5nO1xuICAgIHBob25lX251bWJlcj86IHN0cmluZztcbiAgICBuZXdzbGV0dGVyPzogYm9vbGVhbjtcbiAgICBjb21tdW5pdHk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZhdGVBY2NvdW50UmVzcG9uc2Uge1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBGaWxlXG5cbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWQge1xuICAgIGRhdGE6IHN0cmluZztcbn1cbiJdfQ== |
@@ -214,2 +214,1 @@ import * as Rx from 'rx'; | ||
export {}; | ||
//# sourceMappingURL=utils.d.ts.map |
export {}; | ||
//# sourceMappingURL=utils.spec.d.ts.map |
@@ -276,2 +276,1 @@ import * as angular from 'angular'; | ||
export declare function directive(config: ComponentConfiguration): ClassDecorator; | ||
//# sourceMappingURL=base.d.ts.map |
export {}; | ||
//# sourceMappingURL=base.spec.d.ts.map |
@@ -46,9 +46,9 @@ "use strict"; | ||
it('should reactively update on shallow component changes', function () { | ||
var component = tester.createComponent(DummyComponent.asView().template); | ||
var dummyComponent = tester.createComponent(DummyComponent.asView().template); | ||
// Test this.str | ||
var strSpy = jasmine.createSpy('strSpy'); | ||
component.ctrl.strObservable | ||
dummyComponent.ctrl.strObservable | ||
.distinctUntilChanged() | ||
.subscribe(function (value) { return strSpy(_.cloneDeep(value)); }); | ||
component.ctrl.str = 'some value'; | ||
dummyComponent.ctrl.str = 'some value'; | ||
tester.digest(); | ||
@@ -60,11 +60,11 @@ expect(strSpy.calls.count()).toBe(2); | ||
it('should reactively update on deep component changes', function () { | ||
var component = tester.createComponent(DummyComponent.asView().template); | ||
var dummyComponent = tester.createComponent(DummyComponent.asView().template); | ||
// Test this.array | ||
var arraySpy = jasmine.createSpy('arraySpy'); | ||
component.ctrl.arrayObservable | ||
dummyComponent.ctrl.arrayObservable | ||
.filter(function (value) { return !_.isEmpty(value); }) | ||
.subscribe(function (value) { return arraySpy(_.cloneDeep(value)); }); | ||
component.ctrl.array.push('some value'); | ||
dummyComponent.ctrl.array.push('some value'); | ||
tester.digest(); | ||
component.ctrl.array.push('some other value'); | ||
dummyComponent.ctrl.array.push('some other value'); | ||
tester.digest(); | ||
@@ -75,7 +75,7 @@ expect(arraySpy.calls.all()[0].args[0]).toEqual(['some value']); | ||
it('should support watch', function () { | ||
var component = tester.createComponent(DummyComponent.asView().template); | ||
var dummyComponent = tester.createComponent(DummyComponent.asView().template); | ||
// No watch should be created if computation is immediately unsubscribed. | ||
var expression = 0; | ||
var executed = 0; | ||
var watchComputation = component.ctrl.watch(function () { return expression; }, function (computation) { | ||
var watchComputation = dummyComponent.ctrl.watch(function () { return expression; }, function (computation) { | ||
executed++; | ||
@@ -92,3 +92,3 @@ expect(computation.isDone()).toBeFalsy(); | ||
executed = 0; | ||
watchComputation = component.ctrl.watch(function () { return expression; }, function (computation) { | ||
watchComputation = dummyComponent.ctrl.watch(function () { return expression; }, function (computation) { | ||
executed++; | ||
@@ -114,2 +114,2 @@ if (executed > 2) | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL2NvbXBvbmVudHMvYmFzZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBCQUE0QjtBQUk1QiwrQkFBZ0Q7QUFDaEQsbURBQXdEO0FBRXhELDZCQUFpQixDQUFDLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxVQUFDLE1BQU07SUFLM0M7UUFBNkIsa0NBQWE7UUFPdEMsWUFBWTtRQUNaLHdCQUFZLE1BQXNCO1lBQWxDLFlBQ0ksa0JBQU0sTUFBTSxDQUFDLFNBSWhCO1lBVE0sV0FBSyxHQUFhLEVBQUUsQ0FBQztZQU94QixLQUFJLENBQUMsYUFBYSxHQUFHLEtBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLEdBQUcsRUFBUixDQUFRLENBQUMsQ0FBQztZQUNoRSxLQUFJLENBQUMsZUFBZSxHQUFHLEtBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLEtBQUssRUFBVixDQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7O1FBQzlFLENBQUM7UUFiQyxjQUFjO1lBSm5CLGdCQUFTLENBQUM7Z0JBQ1AsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2dCQUNyQixTQUFTLEVBQUUsc0JBQXNCO2FBQ3BDLENBQUM7V0FDSSxjQUFjLENBY25CO1FBQUQscUJBQUM7S0FkRCxBQWNDLENBZDRCLG9CQUFhLEdBY3pDO0lBRUQsRUFBRSxDQUFDLHVEQUF1RCxFQUFFO1FBQ3hELElBQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQ3BDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQ25DLENBQUM7UUFFRixnQkFBZ0I7UUFDaEIsSUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWE7YUFDdkIsb0JBQW9CLEVBQUU7YUFDdEIsU0FBUyxDQUFDLFVB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L2Jhc2Uuc3BlYy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIFJ4IGZyb20gJ3J4JztcbmltcG9ydCAqIGFzIGFuZ3VsYXIgZnJvbSAnYW5ndWxhcic7XG5cbmltcG9ydCB7Q29tcG9uZW50QmFzZSwgY29tcG9uZW50fSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtkZXNjcmliZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vdGVzdHMvY29tcG9uZW50JztcblxuZGVzY3JpYmVDb21wb25lbnQoJ2Jhc2UgY29tcG9uZW50JywgW10sICh0ZXN0ZXIpID0+IHtcbiAgICBAY29tcG9uZW50KHtcbiAgICAgICAgbW9kdWxlOiB0ZXN0ZXIubW9kdWxlLFxuICAgICAgICBkaXJlY3RpdmU6ICdnZW4td2F0Y2gtb2JzZXJ2YWJsZScsXG4gICAgfSlcbiAgICBjbGFzcyBEdW1teUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2Uge1xuICAgICAgICBwdWJsaWMgc3RyOiBzdHJpbmc7XG4gICAgICAgIHB1YmxpYyBzdHJPYnNlcnZhYmxlOiBSeC5PYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgICAgICAgcHVibGljIGFycmF5OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBwdWJsaWMgYXJyYXlPYnNlcnZhYmxlOiBSeC5PYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuICAgICAgICAvLyBAbmdJbmplY3RcbiAgICAgICAgY29uc3RydWN0b3IoJHNjb3BlOiBhbmd1bGFyLklTY29wZSkge1xuICAgICAgICAgICAgc3VwZXIoJHNjb3BlKTtcblxuICAgICAgICAgICAgdGhpcy5zdHJPYnNlcnZhYmxlID0gdGhpcy5jcmVhdGVXYXRjaE9ic2VydmFibGUoKCkgPT4gdGhpcy5zdHIpO1xuICAgICAgICAgICAgdGhpcy5hcnJheU9ic2VydmFibGUgPSB0aGlzLmNyZWF0ZVdhdGNoT2JzZXJ2YWJsZSgoKSA9PiB0aGlzLmFycmF5LCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGl0KCdzaG91bGQgcmVhY3RpdmVseSB1cGRhdGUgb24gc2hhbGxvdyBjb21wb25lbnQgY2hhbmdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGVzdGVyLmNyZWF0ZUNvbXBvbmVudDxEdW1teUNvbXBvbmVudD4oXG4gICAgICAgICAgICBEdW1teUNvbXBvbmVudC5hc1ZpZXcoKS50ZW1wbGF0ZVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFRlc3QgdGhpcy5zdHJcbiAgICAgICAgY29uc3Qgc3RyU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ3N0clNweScpO1xuICAgICAgICBjb21wb25lbnQuY3RybC5zdHJPYnNlcnZhYmxlXG4gICAgICAgICAgICAuZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHN0clNweShfLmNsb25lRGVlcCh2YWx1ZSkpKTtcblxuICAgICAgICBjb21wb25lbnQuY3RybC5zdHIgPSAnc29tZSB2YWx1ZSc7XG4gICAgICAgIHRlc3Rlci5kaWdlc3QoKTtcblxuICAgICAgICBleHBlY3Qoc3RyU3B5LmNhbGxzLmNvdW50KCkpLnRvQmUoMik7XG4gICAgICAgIGV4cGVjdChzdHJTcHkuY2FsbHMuZmlyc3QoKS5hcmdzWzBdKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgICAgIGV4cGVjdChzdHJTcHkuY2FsbHMubW9zdFJlY2VudCgpLmFyZ3NbMF0pLnRvQmUoJ3NvbWUgdmFsdWUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVhY3RpdmVseSB1cGRhdGUgb24gZGVlcCBjb21wb25lbnQgY2hhbmdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGVzdGVyLmNyZWF0ZUNvbXBvbmVudDxEdW1teUNvbXBvbmVudD4oXG4gICAgICAgICAgICBEdW1teUNvbXBvbmVudC5hc1ZpZXcoKS50ZW1wbGF0ZVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFRlc3QgdGhpcy5hcnJheVxuICAgICAgICBjb25zdCBhcnJheVNweSA9IGphc21pbmUuY3JlYXRlU3B5KCdhcnJheVNweScpO1xuICAgICAgICBjb21wb25lbnQuY3RybC5hcnJheU9ic2VydmFibGVcbiAgICAgICAgICAgIC5maWx0ZXIoKHZhbHVlKSA9PiAhXy5pc0VtcHR5KHZhbHVlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiBhcnJheVNweShfLmNsb25lRGVlcCh2YWx1ZSkpKTtcblxuICAgICAgICBjb21wb25lbnQuY3RybC5hcnJheS5wdXNoKCdzb21lIHZhbHVlJyk7XG4gICAgICAgIHRlc3Rlci5kaWdlc3QoKTtcbiAgICAgICAgY29tcG9uZW50LmN0cmwuYXJyYXkucHVzaCgnc29tZSBvdGhlciB2YWx1ZScpO1xuICAgICAgICB0ZXN0ZXIuZGlnZXN0KCk7XG5cbiAgICAgICAgZXhwZWN0KGFycmF5U3B5LmNhbGxzLmFsbCgpWzBdLmFyZ3NbMF0pLnRvRXF1YWwoWydzb21lIHZhbHVlJ10pO1xuICAgICAgICBleHBlY3QoYXJyYXlTcHkuY2FsbHMuYWxsKClbMV0uYXJnc1swXSkudG9FcXVhbChbJ3NvbWUgdmFsdWUnLCAnc29tZSBvdGhlciB2YWx1ZSddKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3VwcG9ydCB3YXRjaCcsICgpID0+IHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGVzdGVyLmNyZWF0ZUNvbXBvbmVudDxEdW1teUNvbXBvbmVudD4oXG4gICAgICAgICAgICBEdW1teUNvbXBvbmVudC5hc1ZpZXcoKS50ZW1wbGF0ZVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIE5vIHdhdGNoIHNob3VsZCBiZSBjcmVhdGVkIGlmIGNvbXB1dGF0aW9uIGlzIGltbWVkaWF0ZWx5IHVuc3Vic2NyaWJlZC5cbiAgICAgICAgbGV0IGV4cHJlc3Npb24gPSAwO1xuICAgICAgICBsZXQgZXhlY3V0ZWQgPSAwO1xuICAgICAgICBsZXQgd2F0Y2hDb21wdXRhdGlvbiA9IGNvbXBvbmVudC5jdHJsLndhdGNoKCgpID0+IGV4cHJlc3Npb24sIChjb21wdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgZXhlY3V0ZWQrKztcbiAgICAgICAgICAgIGV4cGVjdChjb21wdXRhdGlvbi5pc0RvbmUoKSkudG9CZUZhbHN5KCk7XG4gICAgICAgICAgICBjb21wdXRhdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgZXhwZWN0KHdhdGNoQ29tcHV0YXRpb24uaXNEb25lKCkpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgICBleHByZXNzaW9uID0gMTtcbiAgICAgICAgdGVzdGVyLmRpZ2VzdCgpO1xuICAgICAgICBleHBlY3QoZXhlY3V0ZWQpLnRvQmUoMSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgdGhhdCB3YXRjaGluZyB3b3JrcyBjb3JyZWN0bHkuXG4gICAgICAgIGV4cHJlc3Npb24gPSAwO1xuICAgICAgICBleGVjdXRlZCA9IDA7XG4gICAgICAgIHdhdGNoQ29tcHV0YXRpb24gPSBjb21wb25lbnQuY3RybC53YXRjaCgoKSA9PiBleHByZXNzaW9uLCAoY29tcHV0YXRpb24pID0+IHtcbiAgICAgICAgICAgIGV4ZWN1dGVkKys7XG4gICAgICAgICAgICBpZiAoZXhlY3V0ZWQgPiAyKSBjb21wdXRhdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgZXhwZWN0KHdhdGNoQ29tcHV0YXRpb24uaXNEb25lKCkpLnRvQmVGYWxzeSgpO1xuXG4gICAgICAgIGV4cHJlc3Npb24gPSAxO1xuICAgICAgICB0ZXN0ZXIuZGlnZXN0KCk7XG4gICAgICAgIC8vIEp1c3QgdG8gY2hlY2sgdGhhdCB3YXRjaCBpcyBvbmx5IGV2YWx1YXRlZCB3aGVuIHRoZSBleHByZXNzaW9uIGNoYW5nZXMuXG4gICAgICAgIHRlc3Rlci5kaWdlc3QoKTtcbiAgICAgICAgZXhwZWN0KGV4ZWN1dGVkKS50b0JlKDIpO1xuXG4gICAgICAgIGV4cHJlc3Npb24gPSAyO1xuICAgICAgICB0ZXN0ZXIuZGlnZXN0KCk7XG4gICAgICAgIGV4cGVjdChleGVjdXRlZCkudG9CZSgzKTtcblxuICAgICAgICAvLyBDaGVjayB0aGF0IHVuc3Vic2NyaWJlIGFjdHVhbGx5IHN0b3BzIHRoZSB3YXRjaC5cbiAgICAgICAgZXhwcmVzc2lvbiA9IDM7XG4gICAgICAgIHRlc3Rlci5kaWdlc3QoKTtcbiAgICAgICAgZXhwZWN0KGV4ZWN1dGVkKS50b0JlKDMpO1xuICAgIH0pO1xufSk7XG5cblxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL2NvbXBvbmVudHMvYmFzZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBCQUE0QjtBQUk1QiwrQkFBZ0Q7QUFDaEQsbURBQXdEO0FBRXhELDZCQUFpQixDQUFDLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxVQUFDLE1BQU07SUFLM0M7UUFBNkIsa0NBQWE7UUFPdEMsWUFBWTtRQUNaLHdCQUFZLE1BQXNCO1lBQWxDLFlBQ0ksa0JBQU0sTUFBTSxDQUFDLFNBSWhCO1lBVE0sV0FBSyxHQUFhLEVBQUUsQ0FBQztZQU94QixLQUFJLENBQUMsYUFBYSxHQUFHLEtBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLEdBQUcsRUFBUixDQUFRLENBQUMsQ0FBQztZQUNoRSxLQUFJLENBQUMsZUFBZSxHQUFHLEtBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLEtBQUssRUFBVixDQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7O1FBQzlFLENBQUM7UUFiQyxjQUFjO1lBSm5CLGdCQUFTLENBQUM7Z0JBQ1AsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2dCQUNyQixTQUFTLEVBQUUsc0JBQXNCO2FBQ3BDLENBQUM7V0FDSSxjQUFjLENBY25CO1FBQUQscUJBQUM7S0FkRCxBQWNDLENBZDRCLG9CQUFhLEdBY3pDO0lBRUQsRUFBRSxDQUFDLHVEQUF1RCxFQUFFO1FBQ3hELElBQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQ3pDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQ25DLENBQUM7UUFFRixnQkFBZ0I7UUFDaEIsSUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWE7YUFDNUIsb0JBQW9CLEVBQUU7YUFDdEIsU0FBUyxDQUFDLFVB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L2Jhc2Uuc3BlYy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIFJ4IGZyb20gJ3J4JztcbmltcG9ydCAqIGFzIGFuZ3VsYXIgZnJvbSAnYW5ndWxhcic7XG5cbmltcG9ydCB7Q29tcG9uZW50QmFzZSwgY29tcG9uZW50fSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtkZXNjcmliZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vdGVzdHMvY29tcG9uZW50JztcblxuZGVzY3JpYmVDb21wb25lbnQoJ2Jhc2UgY29tcG9uZW50JywgW10sICh0ZXN0ZXIpID0+IHtcbiAgICBAY29tcG9uZW50KHtcbiAgICAgICAgbW9kdWxlOiB0ZXN0ZXIubW9kdWxlLFxuICAgICAgICBkaXJlY3RpdmU6ICdnZW4td2F0Y2gtb2JzZXJ2YWJsZScsXG4gICAgfSlcbiAgICBjbGFzcyBEdW1teUNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEJhc2Uge1xuICAgICAgICBwdWJsaWMgc3RyOiBzdHJpbmc7XG4gICAgICAgIHB1YmxpYyBzdHJPYnNlcnZhYmxlOiBSeC5PYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgICAgICAgcHVibGljIGFycmF5OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBwdWJsaWMgYXJyYXlPYnNlcnZhYmxlOiBSeC5PYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuICAgICAgICAvLyBAbmdJbmplY3RcbiAgICAgICAgY29uc3RydWN0b3IoJHNjb3BlOiBhbmd1bGFyLklTY29wZSkge1xuICAgICAgICAgICAgc3VwZXIoJHNjb3BlKTtcblxuICAgICAgICAgICAgdGhpcy5zdHJPYnNlcnZhYmxlID0gdGhpcy5jcmVhdGVXYXRjaE9ic2VydmFibGUoKCkgPT4gdGhpcy5zdHIpO1xuICAgICAgICAgICAgdGhpcy5hcnJheU9ic2VydmFibGUgPSB0aGlzLmNyZWF0ZVdhdGNoT2JzZXJ2YWJsZSgoKSA9PiB0aGlzLmFycmF5LCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGl0KCdzaG91bGQgcmVhY3RpdmVseSB1cGRhdGUgb24gc2hhbGxvdyBjb21wb25lbnQgY2hhbmdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgZHVtbXlDb21wb25lbnQgPSB0ZXN0ZXIuY3JlYXRlQ29tcG9uZW50PER1bW15Q29tcG9uZW50PihcbiAgICAgICAgICAgIER1bW15Q29tcG9uZW50LmFzVmlldygpLnRlbXBsYXRlXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gVGVzdCB0aGlzLnN0clxuICAgICAgICBjb25zdCBzdHJTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgnc3RyU3B5Jyk7XG4gICAgICAgIGR1bW15Q29tcG9uZW50LmN0cmwuc3RyT2JzZXJ2YWJsZVxuICAgICAgICAgICAgLmRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiBzdHJTcHkoXy5jbG9uZURlZXAodmFsdWUpKSk7XG5cbiAgICAgICAgZHVtbXlDb21wb25lbnQuY3RybC5zdHIgPSAnc29tZSB2YWx1ZSc7XG4gICAgICAgIHRlc3Rlci5kaWdlc3QoKTtcblxuICAgICAgICBleHBlY3Qoc3RyU3B5LmNhbGxzLmNvdW50KCkpLnRvQmUoMik7XG4gICAgICAgIGV4cGVjdChzdHJTcHkuY2FsbHMuZmlyc3QoKS5hcmdzWzBdKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgICAgIGV4cGVjdChzdHJTcHkuY2FsbHMubW9zdFJlY2VudCgpLmFyZ3NbMF0pLnRvQmUoJ3NvbWUgdmFsdWUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVhY3RpdmVseSB1cGRhdGUgb24gZGVlcCBjb21wb25lbnQgY2hhbmdlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgZHVtbXlDb21wb25lbnQgPSB0ZXN0ZXIuY3JlYXRlQ29tcG9uZW50PER1bW15Q29tcG9uZW50PihcbiAgICAgICAgICAgIER1bW15Q29tcG9uZW50LmFzVmlldygpLnRlbXBsYXRlXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gVGVzdCB0aGlzLmFycmF5XG4gICAgICAgIGNvbnN0IGFycmF5U3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2FycmF5U3B5Jyk7XG4gICAgICAgIGR1bW15Q29tcG9uZW50LmN0cmwuYXJyYXlPYnNlcnZhYmxlXG4gICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSkgPT4gIV8uaXNFbXB0eSh2YWx1ZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gYXJyYXlTcHkoXy5jbG9uZURlZXAodmFsdWUpKSk7XG5cbiAgICAgICAgZHVtbXlDb21wb25lbnQuY3RybC5hcnJheS5wdXNoKCdzb21lIHZhbHVlJyk7XG4gICAgICAgIHRlc3Rlci5kaWdlc3QoKTtcbiAgICAgICAgZHVtbXlDb21wb25lbnQuY3RybC5hcnJheS5wdXNoKCdzb21lIG90aGVyIHZhbHVlJyk7XG4gICAgICAgIHRlc3Rlci5kaWdlc3QoKTtcblxuICAgICAgICBleHBlY3QoYXJyYXlTcHkuY2FsbHMuYWxsKClbMF0uYXJnc1swXSkudG9FcXVhbChbJ3NvbWUgdmFsdWUnXSk7XG4gICAgICAgIGV4cGVjdChhcnJheVNweS5jYWxscy5hbGwoKVsxXS5hcmdzWzBdKS50b0VxdWFsKFsnc29tZSB2YWx1ZScsICdzb21lIG90aGVyIHZhbHVlJ10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdXBwb3J0IHdhdGNoJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBkdW1teUNvbXBvbmVudCA9IHRlc3Rlci5jcmVhdGVDb21wb25lbnQ8RHVtbXlDb21wb25lbnQ+KFxuICAgICAgICAgICAgRHVtbXlDb21wb25lbnQuYXNWaWV3KCkudGVtcGxhdGVcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBObyB3YXRjaCBzaG91bGQgYmUgY3JlYXRlZCBpZiBjb21wdXRhdGlvbiBpcyBpbW1lZGlhdGVseSB1bnN1YnNjcmliZWQuXG4gICAgICAgIGxldCBleHByZXNzaW9uID0gMDtcbiAgICAgICAgbGV0IGV4ZWN1dGVkID0gMDtcbiAgICAgICAgbGV0IHdhdGNoQ29tcHV0YXRpb24gPSBkdW1teUNvbXBvbmVudC5jdHJsLndhdGNoKCgpID0+IGV4cHJlc3Npb24sIChjb21wdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgZXhlY3V0ZWQrKztcbiAgICAgICAgICAgIGV4cGVjdChjb21wdXRhdGlvbi5pc0RvbmUoKSkudG9CZUZhbHN5KCk7XG4gICAgICAgICAgICBjb21wdXRhdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgZXhwZWN0KHdhdGNoQ29tcHV0YXRpb24uaXNEb25lKCkpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgICBleHByZXNzaW9uID0gMTtcbiAgICAgICAgdGVzdGVyLmRpZ2VzdCgpO1xuICAgICAgICBleHBlY3QoZXhlY3V0ZWQpLnRvQmUoMSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgdGhhdCB3YXRjaGluZyB3b3JrcyBjb3JyZWN0bHkuXG4gICAgICAgIGV4cHJlc3Npb24gPSAwO1xuICAgICAgICBleGVjdXRlZCA9IDA7XG4gICAgICAgIHdhdGNoQ29tcHV0YXRpb24gPSBkdW1teUNvbXBvbmVudC5jdHJsLndhdGNoKCgpID0+IGV4cHJlc3Npb24sIChjb21wdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgZXhlY3V0ZWQrKztcbiAgICAgICAgICAgIGlmIChleGVjdXRlZCA+IDIpIGNvbXB1dGF0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBleHBlY3Qod2F0Y2hDb21wdXRhdGlvbi5pc0RvbmUoKSkudG9CZUZhbHN5KCk7XG5cbiAgICAgICAgZXhwcmVzc2lvbiA9IDE7XG4gICAgICAgIHRlc3Rlci5kaWdlc3QoKTtcbiAgICAgICAgLy8gSnVzdCB0byBjaGVjayB0aGF0IHdhdGNoIGlzIG9ubHkgZXZhbHVhdGVkIHdoZW4gdGhlIGV4cHJlc3Npb24gY2hhbmdlcy5cbiAgICAgICAgdGVzdGVyLmRpZ2VzdCgpO1xuICAgICAgICBleHBlY3QoZXhlY3V0ZWQpLnRvQmUoMik7XG5cbiAgICAgICAgZXhwcmVzc2lvbiA9IDI7XG4gICAgICAgIHRlc3Rlci5kaWdlc3QoKTtcbiAgICAgICAgZXhwZWN0KGV4ZWN1dGVkKS50b0JlKDMpO1xuXG4gICAgICAgIC8vIENoZWNrIHRoYXQgdW5zdWJzY3JpYmUgYWN0dWFsbHkgc3RvcHMgdGhlIHdhdGNoLlxuICAgICAgICBleHByZXNzaW9uID0gMztcbiAgICAgICAgdGVzdGVyLmRpZ2VzdCgpO1xuICAgICAgICBleHBlY3QoZXhlY3V0ZWQpLnRvQmUoMyk7XG4gICAgfSk7XG59KTtcblxuXG4iXX0= |
@@ -78,2 +78,1 @@ import { StatefulComponentBase } from './stateful'; | ||
} | ||
//# sourceMappingURL=manager.d.ts.map |
@@ -196,2 +196,1 @@ import * as angular from 'angular'; | ||
export declare function sharedState(name?: string): (target: StatefulComponentBase, propertyKey: string) => void; | ||
//# sourceMappingURL=stateful.d.ts.map |
@@ -274,2 +274,3 @@ "use strict"; | ||
if (!store) { | ||
throw new error_1.GenError("Ignored missing store: " + storeMetadata.propertyName + " " + _this.globalStateId); | ||
} | ||
@@ -310,3 +311,3 @@ if (!store) | ||
var result = {}; | ||
var state = result[this.globalStateId] = {}; | ||
var state = result[this.globalStateId] = {}; // tslint:disable-line:no-shadowed-variable | ||
_.forOwn(this.__stateMetadata, function (metadata, key) { | ||
@@ -337,2 +338,3 @@ var value = _this[metadata.propertyName]; | ||
if (loadChildren === void 0) { loadChildren = true; } | ||
// tslint:disable-next-line:no-shadowed-variable | ||
var state = globalState[this.globalStateId]; | ||
@@ -446,2 +448,2 @@ var sharedStateChanged = false; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL2NvbXBvbmVudHMvc3RhdGVmdWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMEJBQTRCO0FBQzVCLGlDQUFtQztBQUVuQyx5Q0FBeUM7QUFHekMsK0JBQXNGO0FBR3RGO0lBQ0ksMkJBQW1CLFlBQW9CLEVBQVMsTUFBZTtRQUE1QyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVM7SUFDL0QsQ0FBQztJQUVNLHNEQUEwQixHQUFqQztRQUNJLE9BQU8sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUNuRCxDQUFDO0lBQ0wsd0JBQUM7QUFBRCxDQVBBLEFBT0MsSUFBQTtBQVBZLDhDQUFpQjtBQWlCOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1REc7QUFPSDtJQUFvRCx5Q0FBYTtJQW9CN0QsWUFBWTtJQUNaLCtCQUFZLE1BQXNCLEVBQUUsWUFBMEI7UUFBOUQsWUFDSSxrQkFBTSxNQUFNLENBQUMsU0FJaEI7UUFuQkQsOEJBQThCO1FBQ3RCLGFBQU8sR0FBMEIsSUFBSSxDQUFDO1FBQzlDLHdDQUF3QztRQUNoQyxlQUFTLEdBQTRCLEVBQUUsQ0FBQztRQUtoRCw0Q0FBNEM7UUFDcEMsbUNBQTZCLEdBQWtDLEVBQUUsQ0FBQztRQUMxRSxtQ0FBbUM7UUFDM0IsK0JBQXlCLEdBQW1CLEVBQUUsQ0FBQztRQU1uRCxLQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxLQUFJLENBQUMsbUJBQW1CLEdBQUcsWUFBWSxDQUFDLGtCQUFrQixDQUFDOztJQUMvRCxDQUFDOzhCQTFCaUIscUJBQXFCO0lBNEJoQywrQ0FBZSxHQUF0QjtRQUFBLGlCQWtDQztRQWpDRyxpQkFBTSxlQUFlLFdBQUUsQ0FBQztRQUV4QixtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLENBQUMsT0FBTyxD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QWEsR0EwVWhFO0FBMVVxQixzREFBcUI7QUE0VTNDOzs7OztHQUtHO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLElBQWEsRUFBRSxNQUF1QjtJQUF2Qix1QkFBQSxFQUFBLGNBQXVCO0lBQ3hELE9BQU8sVUFBQyxNQUE2QixFQUFFLFdBQW1CO1FBQ3RELElBQUksQ0FBQyxJQUFJO1lBQUUsSUFBSSxHQUFHLFdBQVcsQ0FBQztRQUU5QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7WUFDakIsTUFBTSxJQUFJLGdCQUFRLENBQUMsNkRBQTZELENBQUMsQ0FBQztTQUNyRjtRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFO1lBQ3pCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1NBQy9CO1FBRUQsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxnQkFBUSxDQUFDLDhCQUE4QixHQUFHLElBQUksR0FBRywyQkFBMkIsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDM0c7UUFDRCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksaUJBQWlCLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlFLENBQUMsQ0FBQztBQUNOLENBQUM7QUFqQkQsc0JBaUJDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixXQUFXLENBQUMsSUFBYTtJQUNyQyxPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUZELGtDQUVDIiwiZmlsZSI6ImNvcmUvY29tcG9uZW50cy9zdGF0ZWZ1bC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIGFuZ3VsYXIgZnJvbSAnYW5ndWxhcic7XG5cbmltcG9ydCB7R2VuRXJyb3J9IGZyb20gJy4uL2Vycm9ycy9lcnJvcic7XG5pbXBvcnQge1NoYXJlZFN0b3JlLCBTaGFyZWRTdG9yZU1hbmFnZXJ9IGZyb20gJy4uL3NoYXJlZF9zdG9yZS9pbmRleCc7XG5cbmltcG9ydCB7Q29tcG9uZW50QmFzZSwgY29tcG9uZW50LCBDb21wb25lbnRDb25maWd1cmF0aW9uLCBTdWJzY3JpcHRpb259IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge1N0YXRlTWFuYWdlcn0gZnJvbSAnLi9tYW5hZ2VyJztcblxuZXhwb3J0IGNsYXNzIFN0YXRlSXRlbU1ldGFkYXRhIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHB1YmxpYyBzaGFyZWQ6IGJvb2xlYW4pIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2hhcmVkU3RvcmVOYW1lUHJvcGVydHkoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdfc2hhcmVkU3RvcmVOYW1lXycgKyB0aGlzLnByb3BlcnR5TmFtZTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGVNZXRhZGF0YSB7XG4gICAgW2luZGV4OiBzdHJpbmddOiBTdGF0ZUl0ZW1NZXRhZGF0YTtcbn1cblxuaW50ZXJmYWNlIFNoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdCB7XG4gICAgKCk6IHZvaWQ7XG59XG5cbi8qKlxuICogQSBjb21wb25lbnQgd2hpY2ggY29udGFpbnMgc3RhdGUgdGhhdCBtYXkgYmUgc2F2ZWQgYW5kIHJlbG9hZGVkIGxhdGVyLiBTdWNoXG4gKiBzdGF0ZWZ1bCBjb21wb25lbnRzIGFyZSBhdXRvbWF0aWNhbGx5IG9yZ2FuaXplZCBpbnRvIGEgaGllcmFyY2h5LCBzbyB0aGF0XG4gKiBwYXJlbnRzIGFsc28gc3RvcmUgc3RhdGUgZm9yIGFsbCB0aGVpciBjaGlsZHJlbi4gQ2FsbGluZyBgc2F2ZVN0YXRlYCBvbiB0aGVcbiAqIHRvcC1sZXZlbCBjb21wb25lbnQgd2lsbCB0aGVyZWZvcmUgc2F2ZSB0aGUgc3RhdGUgb2YgdGhlIGNvbXBsZXRlIGFwcGxpY2F0aW9uLlxuICpcbiAqIENvbXBvbmVudCBzdGF0ZSBpcyBkZWZpbmVkIGJ5IHVzaW5nIHByb3BlcnR5IGRlY29yYXRvcnMgYXMgZm9sbG93czpcbiAqIGBgYFxuICogZXhwb3J0IGNsYXNzIFByb2Nlc3NHcm91cHMgZXh0ZW5kcyBWaWV3Q29tcG9uZW50IHtcbiAqICAgICBAc3RhdGUoKSBwdWJsaWMgc2VsZWN0ZWRHcm91cDogbnVtYmVyO1xuICpcbiAqICAgICAvLyAuLi5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEl0IG1heSBiZSB0aGVuIHJlZmVyZW5jZWQgYW5kIHdhdGNoZWQgZnJvbSB0aGUgY29udHJvbGxlciBvciB0ZW1wbGF0ZXMgYW5kXG4gKiB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc2F2ZWQgd2hlbiBjYWxsaW5nIFtbU3RhdGVmdWxDb21wb25lbnRCYXNlLnNhdmVTdGF0ZV1dXG4gKiBhbmQgcmVsb2FkZWQgd2hlbiBjYWxsaW5nIFtbU3RhdGVmdWxDb21wb25lbnRCYXNlLmxvYWRTdGF0ZV1dLlxuICpcbiAqIEEgcmVsYXRlZCBkZWNvcmF0b3IgbWF5IGJlIHVzZWQgdG8gZGVjbGFyZSBzdGF0ZSwgd2hpY2ggaXMgc2hhcmVkIGJldHdlZW5cbiAqIG11bHRpcGxlIGNvbXBvbmVudHM6XG4gKiBgYGBcbiAqIGV4cG9ydCBjbGFzcyBXaWRnZXRSb3NlMiBleHRlbmRzIFdpZGdldEJhc2Uge1xuICogICAgIEBzaGFyZWRTdGF0ZSgpIHB1YmxpYyBzZWxlY3RlZFZhbHVlOiBTaGFyZWRTdG9yZTx0eXBlcy5EYXRhPjtcbiAqXG4gKiAgICAgLy8gLi4uXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBTZWUgW1tTaGFyZWRTdG9yZU1hbmFnZXJdXSBhbmQgW1tTaGFyZWRTdG9yZV1dIGZvciBtb3JlIGRvY3VtZW50YXRpb24gb25cbiAqIGRlZmluaW5nIHNoYXJlZCBzdGF0ZSB1c2luZyBzaGFyZWQgc3RvcmVzLlxuICpcbiAqIEZvciBleGFtcGxlLCBpZiBhIHN0YXRlZnVsIGNvbXBvbmVudCBkZWZpbmVzIGEgc2hhcmVkIHN0YXRlIHByb3BlcnR5IGNhbGxlZFxuICogYHNlbGVjdGVkVmFsdWVgIChhcyBzaG93biBhYm92ZSkgYW5kIHlvdSB3YW50IHRvIGxpbmsgaXQgd2l0aCB0aGUgc2hhcmVkIHN0b3JlXG4gKiBuYW1lZCBgcm9zZTItc2VsZWN0ZWQtZGF0YS1pdGVtYCwgeW91IGNhbiBkbyB0aGUgZm9sbG93aW5nIGluIHlvdXIgdGVtcGxhdGU6XG4gKiBgYGBodG1sXG4gKiA8Z2VuLXdpZGdldC1yb3NlMiBzdG9yZS1zZWxlY3RlZC12YWx1ZT1cInJvc2UyLXNlbGVjdGVkLWRhdGEtaXRlbVwiPjwvZ2VuLXdpZGdldC1yb3NlMj5cbiAqIGBgYFxuICpcbiAqIE5vdGUgdGhhdCB0aGUgdGVtcGxhdGUgYXR0cmlidXRlIG5hbWUgaXMgcHJlZml4ZWQgd2l0aCBgc3RvcmVgIGV2ZW4gd2hlbiB0aGVcbiAqIHByb3BlcnR5IGlzIGNhbGxlZCBqdXN0IGBzZWxlY3RlZFZhbHVlYC4gVGhpcyBpcyBkb25lIGJlY2F1c2Ugd2hhdCB5b3UgcGFzc1xuICogaW4gdGhlIHRlbXBsYXRlIGlzIGp1c3QgYSBuYW1lIG9mIHRoZSBzdG9yZSwgd2hpY2ggbXVzdCBiZSByZXNvbHZlZCB1c2luZyB0aGVcbiAqIHNoYXJlZCBzdG9yZSBtYW5hZ2VyLlxuICpcbiAqIEluc2lkZSB0aGUgY29tcG9uZW50cyB5b3UgY2FuIHRoZW4gZGlzcGF0Y2ggYW5kIHN1YnNjcmliZSB0byB0aGUgdW5kZXJseWluZ1xuICogc3RvcmU6XG4gKiBgYGBcbiAqIC8vIFB1Ymxpc2ggc29tZXRoaW5nIGJ5IGRpc3BhdGNoaW5nIGFuIGFjdGlvbiB0byB0aGUgc2hhcmVkIHN0b3JlLlxuICogdGhpcy5zZWxlY3RlZFZhbHVlLmRpc3BhdGNoKHt0eXBlOiBBY3Rpb25zLlNFVCwgdmFsdWU6IDQyfSk7XG4gKlxuICogLy8gU3Vic2NyaWJlIHRvIHVwZGF0ZXMgb2YgdGhlIHNoYXJlZCBzdG9yZS5cbiAqIHRoaXMuc3Vic2NyaWJlU2hhcmVkU3RhdGUoJ3NlbGVjdGVkVmFsdWUnLCAoZGF0YSkgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKFwiU2hhcmVkIHN0YXRlICdzZWxlY3RlZFZhbHVlJyBpcyBub3dcIiwgZGF0YSk7XG4gKiB9KTtcbiAqIGBgYFxuICovXG5AY29tcG9uZW50KHtcbiAgICBhYnN0cmFjdDogdHJ1ZSxcbiAgICBiaW5kaW5nczoge1xuICAgICAgICBzdGF0ZUlkOiAnQHN0YXRlSWQnLFxuICAgIH0sXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YXRlZnVsQ29tcG9uZW50QmFzZSBleHRlbmRzIENvbXBvbmVudEJhc2Uge1xuICAgIC8vLyBNZXRhZGF0YSBhYm91dCB0aGUgc3RhdGUgZGVmaW5lZCBvbiB0aGUgY29tcG9uZW50LlxuICAgIHB1YmxpYyBfX3N0YXRlTWV0YWRhdGE6IFN0YXRlTWV0YWRhdGE7XG4gICAgLy8vIFRoaXMgY29tcG9uZW50J3MgbG9jYWwgc3RhdGUgaWRlbnRpZmllci5cbiAgICBwdWJsaWMgc3RhdGVJZDogc3RyaW5nO1xuICAgIC8vLyBUaGlzIGNvbXBvbmVudCdzIGdsb2JhbCBzdGF0ZSBpZGVudGlmaWVyLlxuICAgIHB1YmxpYyBnbG9iYWxTdGF0ZUlkOiBzdHJpbmc7XG4gICAgLy8vIFBhcmVudCBzdGF0ZWZ1bCBjb21wb25lbnQuXG4gICAgcHJpdmF0ZSBfcGFyZW50OiBTdGF0ZWZ1bENvbXBvbmVudEJhc2UgPSBudWxsO1xuICAgIC8vLyBBIGxpc3Qgb2YgY2hpbGQgc3RhdGVmdWwgY29tcG9uZW50cy5cbiAgICBwcml2YXRlIF9jaGlsZHJlbjogU3RhdGVmdWxDb21wb25lbnRCYXNlW10gPSBbXTtcbiAgICAvLy8gU3RhdGUgbWFuYWdlci5cbiAgICBwcml2YXRlIF9zdGF0ZU1hbmFnZXI6IFN0YXRlTWFuYWdlcjtcbiAgICAvLy8gU2hhcmVkIHN0b3JlIG1hbmFnZXIuXG4gICAgcHJpdmF0ZSBfc2hhcmVkU3RvcmVNYW5hZ2VyOiBTaGFyZWRTdG9yZU1hbmFnZXI7XG4gICAgLy8vIFN1YnNjcmlwdGlvbiByZXF1ZXN0cyBmb3Igc2hhcmVkIHN0b3Jlcy5cbiAgICBwcml2YXRlIF9zaGFyZWRTdG9yZVN1YnNjcmliZVJlcXVlc3RzOiBTaGFyZWRTdG9yZVN1YnNjcmliZVJlcXVlc3RbXSA9IFtdO1xuICAgIC8vLyBTdWJzY3JpcHRpb25zIHRvIHNoYXJlZCBzdG9yZXMuXG4gICAgcHJpdmF0ZSBfc2hhcmVkU3RvcmVTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgLy8gQG5nSW5qZWN0XG4gICAgY29uc3RydWN0b3IoJHNjb3BlOiBhbmd1bGFyLklTY29wZSwgc3RhdGVNYW5hZ2VyOiBTdGF0ZU1hbmFnZXIpIHtcbiAgICAgICAgc3VwZXIoJHNjb3BlKTtcblxuICAgICAgICB0aGlzLl9zdGF0ZU1hbmFnZXIgPSBzdGF0ZU1hbmFnZXI7XG4gICAgICAgIHRoaXMuX3NoYXJlZFN0b3JlTWFuYWdlciA9IHN0YXRlTWFuYWdlci5zaGFyZWRTdG9yZU1hbmFnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29tcG9uZW50SW5pdCgpIHtcbiAgICAgICAgc3VwZXIub25Db21wb25lbnRJbml0KCk7XG5cbiAgICAgICAgLy8gV2hlbiBzdGF0ZSBpZGVudGlmaWVyIGlzIG5vdCBkZWZpbmVkLCBkZWZhdWx0IHRvIGRpcmVjdGl2ZSBuYW1lLlxuICAgICAgICBpZiAoXy5pc0VtcHR5KHRoaXMuc3RhdGVJZCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVJZCA9IHRoaXMuZ2V0Q29uZmlnKCkuZGlyZWN0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIG91ciBwYXJlbnQgYW5kIHJlZ2lzdGVyIG91cnNlbHZlcyB3aXRoIGl0LlxuICAgICAgICB0aGlzLl9wYXJlbnQgPSB0aGlzLl9maW5kUGFyZW50Q29tcG9uZW50KCk7XG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhcmVudC5fcmVnaXN0ZXJDaGlsZCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsU3RhdGVJZCA9IHRoaXMuX3BhcmVudC5nbG9iYWxTdGF0ZUlkICsgJy0nICsgdGhpcy5zdGF0ZUlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVNYW5hZ2VyLmFkZFRvcExldmVsQ29tcG9uZW50KHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5nbG9iYWxTdGF0ZUlkID0gdGhpcy5zdGF0ZUlkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYW55IHBlbmRpbmcgc3RhdGUgZm9yIHVzLlxuICAgICAgICB0aGlzLl9zdGF0ZU1hbmFnZXIubG9hZFBlbmRpbmdDb21wb25lbnRTdGF0ZSh0aGlzKTtcblxuICAgICAgICAvLyBBdXRvbWF0aWNhbGx5IGxvYWQgYW55IGNvbmZpZ3VyZWQgc2hhcmVkIHN0YXRlLlxuICAgICAgICBjb25zdCBzdGF0ZU1ldGFkYXRhID0gdGhpcy5fX3N0YXRlTWV0YWRhdGE7XG4gICAgICAgIF8uZm9yT3duKHN0YXRlTWV0YWRhdGEsIChtZXRhZGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKG1ldGFkYXRhLnNoYXJlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNoYXJlZFN0b3JlTmFtZSA9IHRoaXNbbWV0YWRhdGEuZ2V0U2hhcmVkU3RvcmVOYW1lUHJvcGVydHkoKV07XG4gICAgICAgICAgICAgICAgaWYgKCFfLmlzRW1wdHkoc2hhcmVkU3RvcmVOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9IHRoaXMuX3NoYXJlZFN0b3JlTWFuYWdlci5nZXRTdG9yZShzaGFyZWRTdG9yZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzW21ldGFkYXRhLnByb3BlcnR5TmFtZV0gPSBzdG9yZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cFNoYXJlZFN0b3JlKG1ldGFkYXRhLnByb3BlcnR5TmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdXAgdGhlIHNoYXJlZCBzdG9yZS4gVGhpcyBtZXRob2QgbWF5IGJlIG92ZXJyaWRlbiBieSBzdWJjbGFzc2VzIHdoZW4gc29tZXRoaW5nXG4gICAgICogZGlmZmVyZW50IHNob3VsZCBiZSBkb25lIGhlcmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0b3JlfSBTaGFyZWQgc3RhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3NldHVwU2hhcmVkU3RvcmUoc3RvcmU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gc2hhcmVkIHN0b3JlLCBzbyB0aGF0IHRoaXMgY29tcG9uZW50J3Mgc2NvcGUgZ2V0cyB1cGRhdGVkIHdoZW4gdGhlXG4gICAgICAgIC8vIHZhbHVlIGluIHRoZSBzdG9yZSBpcyB1cGRhdGVkLlxuICAgICAgICB0aGlzLnN1YnNjcmliZVNoYXJlZFN0YXRlKHN0b3JlLCBfLm5vb3ApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN0YXRlIG1hbmFnZXIuXG4gICAgICovXG4gICAgcHVibGljIGdldCBzdGF0ZU1hbmFnZXIoKTogU3RhdGVNYW5hZ2VyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlTWFuYWdlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzaGFyZWQgc3RvcmUgbWFuYWdlci5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IHNoYXJlZFN0b3JlTWFuYWdlcigpOiBTaGFyZWRTdG9yZU1hbmFnZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hhcmVkU3RvcmVNYW5hZ2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbXBvbmVudERlc3Ryb3llZCgpOiB2b2lkIHtcbiAgICAgICAgLy8gU2F2ZSBjdXJyZW50IGNvbXBvbmVudCBzdGF0ZSwgc28gaXQgd2lsbCBiZSBhdmFpbGFibGUgd2hlbiB0aGlzIGNvbXBvbmVudFxuICAgICAgICAvLyBpcyBpbnN0YW50aWF0ZWQgYWdhaW4uXG4gICAgICAgIHRoaXMuX3N0YXRlTWFuYWdlci5zYXZlUGVuZGluZ0NvbXBvbmVudFN0YXRlKHRoaXMpO1xuXG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhcmVudC5fdW5yZWdpc3RlckNoaWxkKHRoaXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVNYW5hZ2VyLnJlbW92ZVRvcExldmVsQ29tcG9uZW50KHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIub25Db21wb25lbnREZXN0cm95ZWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBhZnRlciB0aGUgY29tcG9uZW50J3Mgc3RhdGUgaGFzIGJlZW4gbG9hZGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBvbkNvbXBvbmVudFN0YXRlQWZ0ZXJMb2FkKCk6IHZvaWQge1xuICAgICAgICAvLyBEbyBub3RoaW5nIGJ5IGRlZmF1bHQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBjb21wb25lbnQncyBzdGF0ZSBoYXMgYmVlbiBzYXZlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25Db21wb25lbnRTdGF0ZVByZVNhdmUoKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgYnkgZGVmYXVsdC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNjb3ZlcnMgdGhlIHBhcmVudCBzdGF0ZWZ1bCBjb21wb25lbnQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZmluZFBhcmVudENvbXBvbmVudCgpOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2Uge1xuICAgICAgICBsZXQgc2NvcGUgPSB0aGlzLiRzY29wZS4kcGFyZW50O1xuICAgICAgICB3aGlsZSAoc2NvcGUpIHtcbiAgICAgICAgICAgIGlmIChzY29wZVsnY3RybCddIGluc3RhbmNlb2YgU3RhdGVmdWxDb21wb25lbnRCYXNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlWydjdHJsJ107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNjb3BlID0gc2NvcGUuJHBhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhIG5ldyBjaGlsZCBvZiB0aGlzIHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RhdGVmdWxDb21wb25lbnRCYXNlfSBjaGlsZCBDaGlsZCBjb21wb25lbnQgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwcml2YXRlIF9yZWdpc3RlckNoaWxkKGNoaWxkOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2UpIHtcbiAgICAgICAgLy8gRW5zdXJlIHRoZSBjaGlsZCdzIGxvY2FsIHN0YXRlIGlkIGlzIHVuaXF1ZS5cbiAgICAgICAgaWYgKF8uYW55KHRoaXMuX2NoaWxkcmVuLCAoYykgPT4gYy5zdGF0ZUlkID09PSBjaGlsZC5zdGF0ZUlkKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKFwiRHVwbGljYXRlIHN0YXRlZnVsIGNvbXBvbmVudCBzdGF0ZSBpZGVudGlmaWVyICdcIiArIGNoaWxkLnN0YXRlSWQgKyBcIicuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW5yZWdpc3RlcnMgYW4gZXhpc3RpbmcgY2hpbGQgb2YgdGhpcyBzdGF0ZWZ1bCBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1N0YXRlZnVsQ29tcG9uZW50QmFzZX0gY2hpbGQgQ2hpbGQgY29tcG9uZW50IGluc3RhbmNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdW5yZWdpc3RlckNoaWxkKGNoaWxkOiBTdGF0ZWZ1bENvbXBvbmVudEJhc2UpIHtcbiAgICAgICAgdGhpcy5fY2hpbGRyZW4gPSBfLndpdGhvdXQodGhpcy5fY2hpbGRyZW4sIGNoaWxkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwYXJlbnQgc3RhdGVmdWwgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBwYXJlbnRDb21wb25lbnQoKTogU3RhdGVmdWxDb21wb25lbnRCYXNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBjaGlsZCBzdGF0ZWZ1bCBjb21wb25lbnRzLlxuICAgICAqL1xuICAgIHB1YmxpYyBjaGlsZENvbXBvbmVudHMoKTogU3RhdGVmdWxDb21wb25lbnRCYXNlW10ge1xuICAgICAgICByZXR1cm4gXy5jbG9uZSh0aGlzLl9jaGlsZHJlbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYSBjaGlsZCBjb21wb25lbnQgYnkgaXRzIHN0YXRlIGlkZW50aWZpZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGVJZCBDaGlsZCdzIHN0YXRlIGlkZW50aWZpZXJcbiAgICAgKiBAcmV0dXJuIHtTdGF0ZWZ1bENvbXBvbmVudEJhc2V9IENoaWxkIGNvbXBvbmVudCBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDaGlsZENvbXBvbmVudDxUIGV4dGVuZHMgU3RhdGVmdWxDb21wb25lbnRCYXNlPihzdGF0ZUlkOiBzdHJpbmcpOiBUIHtcbiAgICAgICAgcmV0dXJuIDxUPiBfLmZpbmQodGhpcy5fY2hpbGRyZW4sIChjaGlsZCkgPT4gY2hpbGQuc3RhdGVJZCA9PT0gc3RhdGVJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3Vic2NyaWJlcyB0byBzaGFyZWQgc3RhdGUuIFRoaXMgaXMgdGhlIHNhbWUgYXMgYSBub3JtYWwgc3Vic2NyaWJlLCBidXQgaW5cbiAgICAgKiBhZGRpdGlvbiBpdCBhbHNvIHByb3Blcmx5IGhhbmRsZXMgdW5kZXJseWluZyBkYXRhIHN0b3JlIGNoYW5nZXMgd2hlblxuICAgICAqIGNvbXBvbmVudCBzdGF0ZSBpcyByZWxvYWRlZC5cbiAgICAgKlxuICAgICAqIFRoZSB2YWx1ZSBvYnNlcnZlZCBmcm9tIHRoZSBzaGFyZWQgc3RvcmUgTVVTVCBOT1QgYmUgbXV0YXRlZCBpbiBhbnkgd2F5IGFzXG4gICAgICogZG9pbmcgc28gbWF5IGNhdXNlIHVuZGVmaW5lZCBiZWhhdmlvci4gSWYgeW91IG5lZWQgdG8gbXV0YXRlIHRoZSBvYnNlcnZlZFxuICAgICAqIHZhbHVlLCB1c2UgW1tzdWJzY3JpYmVTaGFyZWRTdGF0ZU11dGFibGVdXSBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiBzaGFyZWQgc3RhdGVcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gYmUgaW52b2tlZCBvbiBzdWJzY3JpcHRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgc3Vic2NyaWJlU2hhcmVkU3RhdGUobmFtZTogc3RyaW5nLCBjYWxsYmFjazogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RvcmVNZXRhZGF0YSA9IHRoaXMuX2dldFN0YXRlTWV0YWRhdGEobmFtZSk7XG4gICAgICAgIGlmICghc3RvcmVNZXRhZGF0YSB8fCAhc3RvcmVNZXRhZGF0YS5zaGFyZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihcIlNoYXJlZCBzdGF0ZSAnXCIgKyBuYW1lICsgXCInIG5vdCBmb3VuZC5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdWJzY3JpYmVyID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmU6IFNoYXJlZFN0b3JlPGFueSwgYW55PiA9IHRoaXNbc3RvcmVNZXRhZGF0YS5wcm9wZXJ0eU5hbWVdO1xuICAgICAgICAgICAgaWYgKCFzdG9yZSkge1xuICAgICAgICAgICAgICAgIC8vIEBpZm5kZWYgR0VOSlNfUFJPRFVDVElPTlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgR2VuRXJyb3IoYElnbm9yZWQgbWlzc2luZyBzdG9yZTogJHtzdG9yZU1ldGFkYXRhLnByb3BlcnR5TmFtZX0gJHt0aGlzLmdsb2JhbFN0YXRlSWR9YCk7XG4gICAgICAgICAgICAgICAgLy8gQGVuZGlmXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXN0b3JlKSByZXR1cm47XG4gICAgICAgICAgICB0aGlzLl9zaGFyZWRTdG9yZVN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN1YnNjcmliZShjYWxsYmFjaywgc3RvcmUub2JzZXJ2YWJsZSgpKSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fc2hhcmVkU3RvcmVTdWJzY3JpYmVSZXF1ZXN0cy5wdXNoKHN1YnNjcmliZXIpO1xuICAgICAgICBzdWJzY3JpYmVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSB2ZXJzaW9uIG9mIFtbc3Vic2NyaWJlU2hhcmVkU3RhdGVdXSwgd2hpY2ggZW5zdXJlcyB0aGF0IHRoZSBvYnNlcnZlZCBzaGFyZWRcbiAgICAgKiBzdG9yZSB2YWx1ZSBpcyBjb3BpZWQgYW5kIGNhbiB0aHVzIGJlIHNhZmVseSBtdXRhdGVkIGFmdGVyd2FyZHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHNoYXJlZCBzdGF0ZVxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBDYWxsYmFjayB0byBiZSBpbnZva2VkIG9uIHN1YnNjcmlwdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBzdWJzY3JpYmVTaGFyZWRTdGF0ZU11dGFibGU8VD4obmFtZTogc3RyaW5nLCBjYWxsYmFjazogKHZhbHVlOiBUKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlU2hhcmVkU3RhdGUobmFtZSwgKHZhbHVlKSA9PiBjYWxsYmFjayhhbmd1bGFyLmNvcHkodmFsdWUpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBtZXRhZGF0YSBmb3Igc3BlY2lmaWMgY29tcG9uZW50IHN0YXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiBzaGFyZWQgc3RhdGUgKG5vdCBwcm9wZXJ0eSBuYW1lKVxuICAgICAqIEByZXR1cm4ge1N0YXRlSXRlbU1ldGFkYXRhfSBTdGF0ZSBtZXRhZGF0YVxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFN0YXRlTWV0YWRhdGEobmFtZTogc3RyaW5nKTogU3RhdGVJdGVtTWV0YWRhdGEge1xuICAgICAgICByZXR1cm4gdGhpcy5fX3N0YXRlTWV0YWRhdGFbbmFtZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgdGhpcyBjb21wb25lbnQncyBjdXJyZW50IHN0YXRlIGFuZCByZXR1cm5zIGl0LlxuICAgICAqL1xuICAgIHB1YmxpYyBzYXZlU3RhdGUoc2F2ZUNoaWxkcmVuOiBib29sZWFuID0gdHJ1ZSk6IGFueSB7XG4gICAgICAgIHRoaXMub25Db21wb25lbnRTdGF0ZVByZVNhdmUoKTtcblxuICAgICAgICBsZXQgcmVzdWx0ID0ge307XG4gICAgICAgIGxldCBzdGF0ZSA9IHJlc3VsdFt0aGlzLmdsb2JhbFN0YXRlSWRdID0ge307XG4gICAgICAgIF8uZm9yT3duKHRoaXMuX19zdGF0ZU1ldGFkYXRhLCAobWV0YWRhdGEsIGtleSkgPT4ge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpc1ttZXRhZGF0YS5wcm9wZXJ0eU5hbWVdO1xuXG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuc2hhcmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBzaGFyZWQgc3RhdGUsIHNhdmUgdGhlIGlkZW50aWZpZXIgb2YgdGhlIHNoYXJlZCBzdG9yZS5cbiAgICAgICAgICAgICAgICB2YWx1ZSA9ICg8U2hhcmVkU3RvcmU8YW55LCBhbnk+PiB2YWx1ZSkuc3RvcmVJZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RhdGVba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTYXZlIGNoaWxkIHN0YXRlLlxuICAgICAgICBpZiAoc2F2ZUNoaWxkcmVuKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuX2NoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgXy5leHRlbmQocmVzdWx0LCBjaGlsZC5zYXZlU3RhdGUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWRzIHRoaXMgY29tcG9uZW50J3MgY3VycmVudCBzdGF0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7YW55fSBnbG9iYWxTdGF0ZSBHbG9iYWwgc3RhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZFN0YXRlKGdsb2JhbFN0YXRlOiBhbnksIGxvYWRDaGlsZHJlbjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBnbG9iYWxTdGF0ZVt0aGlzLmdsb2JhbFN0YXRlSWRdO1xuICAgICAgICBsZXQgc2hhcmVkU3RhdGVDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIF8uZm9yT3duKHRoaXMuX19zdGF0ZU1ldGFkYXRhLCAobWV0YWRhdGEsIGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFzdGF0ZSkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCEoa2V5IGluIHN0YXRlKSkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHN0YXRlW2tleV07XG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuc2hhcmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBzaGFyZWQgc3RvcmUgZnJvbSB0aGUgc2hhcmVkIHN0b3JlIG1hbmFnZXIuXG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdWYWx1ZTogU2hhcmVkU3RvcmU8YW55LCBhbnk+ID0gdGhpc1ttZXRhZGF0YS5wcm9wZXJ0eU5hbWVdO1xuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1ZhbHVlLnN0b3JlSWQgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNbbWV0YWRhdGEucHJvcGVydHlOYW1lXSA9IHRoaXMuX3NoYXJlZFN0b3JlTWFuYWdlci5nZXRTdG9yZTxhbnk+KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmVkU3RhdGVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXNbbWV0YWRhdGEucHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBMb2FkIGNoaWxkIHN0YXRlLlxuICAgICAgICBpZiAobG9hZENoaWxkcmVuKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuX2NoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgY2hpbGQubG9hZFN0YXRlKGdsb2JhbFN0YXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaGFyZWRTdGF0ZUNoYW5nZWQpIHtcbiAgICAgICAgICAgIC8vIENhbmNlbCBhbnkgcHJldmlvdXMgc3Vic2NyaXB0aW9ucyB0byBzaGFyZWQgc3RvcmVzLlxuICAgICAgICAgICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2YgdGhpcy5fc2hhcmVkU3RvcmVTdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFJlc3Vic2NyaWJlLCB1c2luZyB0aGUgbmV3IHN0b3Jlcy5cbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVxdWVzdCBvZiB0aGlzLl9zaGFyZWRTdG9yZVN1YnNjcmliZVJlcXVlc3RzKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNvbXBvbmVudFN0YXRlQWZ0ZXJMb2FkKCk7XG5cbiAgICAgICAgLy8gUHJvcGFnYXRlIHN0YXRlIHVwZGF0ZXMgdG8gdGhlIHZpZXcuXG4gICAgICAgIHRoaXMuJHNjb3BlLiRhcHBseUFzeW5jKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgcHJvcGVydHkgaGFzIG5vdCBiZWVuIGxvYWRlZCBmcm9tIHN0YXRlLCBvciBpc24ndCBkZWZpbmVkLiBVc3VhbGx5IHVzZWRcbiAgICAgKiBiZWZvcmUgc2V0dGluZyBhIGRlZmVycmVkIGRlZmF1bHQgdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIGlzUHJvcGVydHlOb3RMb2FkZWRGcm9tU3RhdGVPcklzVW5kZWZpbmVkPFAgZXh0ZW5kcyBrZXlvZiB0aGlzPihwcm9wZXJ0eTogUCkge1xuICAgICAgICByZXR1cm4gXy5pc1VuZGVmaW5lZCh0aGlzW3Byb3BlcnR5XSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjb25maWd1cmVDb21wb25lbnQoY29uZmlnOiBDb21wb25lbnRDb25maWd1cmF0aW9uKTogQ29tcG9uZW50Q29uZmlndXJhdGlvbiB7XG4gICAgICAgIGNvbnN0IHN0YXRlTWV0YWRhdGEgPSB0aGlzLnByb3RvdHlwZS5fX3N0YXRlTWV0YWRhdGE7XG4gICAgICAgIGlmICghY29uZmlnLmJpbmRpbmdzKSBjb25maWcuYmluZGluZ3MgPSB7fTtcblxuICAgICAgICBfLmZvck93bihzdGF0ZU1ldGFkYXRhLCAobWV0YWRhdGEsIGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKG1ldGFkYXRhLnNoYXJlZCkge1xuICAgICAgICAgICAgICAgIGNvbmZpZy5iaW5kaW5nc1ttZXRhZGF0YS5nZXRTaGFyZWRTdG9yZU5hbWVQcm9wZXJ0eSgpXSA9ICdAc3RvcmUnICsgXy5jYXBpdGFsaXplKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgIH1cbn1cblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIGJlaW5nIHBhcnQgb2YgdGhlIGNvbXBvbmVudCdzIHN0YXRlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE9wdGlvbmFsIHN0YXRlIG5hbWVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hhcmVkIERvZXMgdGhpcyBzdGF0ZSByZWZlcmVuY2UgYSBzaGFyZWQgc3RvcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlKG5hbWU/OiBzdHJpbmcsIHNoYXJlZDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgcmV0dXJuICh0YXJnZXQ6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSwgcHJvcGVydHlLZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoIW5hbWUpIG5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgICAgICBpZiAobmFtZVswXSA9PT0gJ18nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuRXJyb3IoXCJTdGF0ZSBpZGVudGlmaWVycyBzdGFydGluZyB3aXRoIGFuIHVuZGVyc2NvcmUgYXJlIHJlc2VydmVkLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fc3RhdGVNZXRhZGF0YSkge1xuICAgICAgICAgICAgdGFyZ2V0Ll9fc3RhdGVNZXRhZGF0YSA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhcmdldC5fX3N0YXRlTWV0YWRhdGFbbmFtZV0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihcIkR1cGxpY2F0ZSBzdGF0ZSBpZGVudGlmaWVyICdcIiArIG5hbWUgKyBcIicgb24gc3RhdGVmdWwgY29tcG9uZW50ICdcIiArIHRhcmdldCArIFwiJy5cIik7XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0Ll9fc3RhdGVNZXRhZGF0YVtuYW1lXSA9IG5ldyBTdGF0ZUl0ZW1NZXRhZGF0YShwcm9wZXJ0eUtleSwgc2hhcmVkKTtcbiAgICB9O1xufVxuXG4vKipcbiAqIE1hcmtzIGEgcHJvcGVydHkgYXMgYmVpbmcgcGFydCBvZiB0aGUgY29tcG9uZW50J3Mgc3RhdGUsIHdoaWNoIHJlZmVyZW5jZXNcbiAqIGEgc2hhcmVkIHN0b3JlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE9wdGlvbmFsIHN0YXRlIG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNoYXJlZFN0YXRlKG5hbWU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RhdGUobmFtZSwgdHJ1ZSk7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL2NvbXBvbmVudHMvc3RhdGVmdWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMEJBQTRCO0FBQzVCLGlDQUFtQztBQUVuQyx5Q0FBeUM7QUFHekMsK0JBQXNGO0FBR3RGO0lBQ0ksMkJBQW1CLFlBQW9CLEVBQVMsTUFBZTtRQUE1QyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVM7SUFDL0QsQ0FBQztJQUVNLHNEQUEwQixHQUFqQztRQUNJLE9BQU8sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUNuRCxDQUFDO0lBQ0wsd0JBQUM7QUFBRCxDQVBBLEFBT0MsSUFBQTtBQVBZLDhDQUFpQjtBQWlCOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1REc7QUFPSDtJQUFvRCx5Q0FBYTtJQW9CN0QsWUFBWTtJQUNaLCtCQUFZLE1BQXNCLEVBQUUsWUFBMEI7UUFBOUQsWUFDSSxrQkFBTSxNQUFNLENBQUMsU0FJaEI7UUFuQkQsOEJBQThCO1FBQ3RCLGFBQU8sR0FBMEIsSUFBSSxDQUFDO1FBQzlDLHdDQUF3QztRQUNoQyxlQUFTLEdBQTRCLEVBQUUsQ0FBQztRQUtoRCw0Q0FBNEM7UUFDcEMsbUNBQTZCLEdBQWtDLEVBQUUsQ0FBQztRQUMxRSxtQ0FBbUM7UUFDM0IsK0JBQXlCLEdBQW1CLEVBQUUsQ0FBQztRQU1uRCxLQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxLQUFJLENBQUMsbUJBQW1CLEdBQUcsWUFBWSxDQUFDLGtCQUFrQixDQUFDOztJQUMvRCxDQUFDOzhCQTFCaUIscUJBQXFCO0lBNEJoQywrQ0FBZSxHQUF0QjtRQUFBLGlCQWtDQztRQWpDRyxpQkFBTSxlQUFlLFdBQUUsQ0FBQztRQUV4QixtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLENBQUMsT0FBTyxD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O1lBQ2QsUUFBUSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxVQUFVO2FBQ3RCO1NBQ0osQ0FBQztPQUNvQixxQkFBcUIsQ0E0VTFDO0lBQUQsNEJBQUM7Q0E1VUQsQUE0VUMsQ0E1VW1ELG9CQUFhLEdBNFVoRTtBQTVVcUIsc0RBQXFCO0FBOFUzQzs7Ozs7R0FLRztBQUNILFNBQWdCLEtBQUssQ0FBQyxJQUFhLEVBQUUsTUFBdUI7SUFBdkIsdUJBQUEsRUFBQSxjQUF1QjtJQUN4RCxPQUFPLFVBQUMsTUFBNkIsRUFBRSxXQUFtQjtRQUN0RCxJQUFJLENBQUMsSUFBSTtZQUFFLElBQUksR0FBRyxXQUFXLENBQUM7UUFFOUIsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxnQkFBUSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7U0FDckY7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRTtZQUN6QixNQUFNLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztTQUMvQjtRQUVELElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5QixNQUFNLElBQUksZ0JBQVEsQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLEdBQUcsMkJBQTJCLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQzNHO1FBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5RSxDQUFDLENBQUM7QUFDTixDQUFDO0FBakJELHNCQWlCQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLElBQWE7SUFDckMsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFGRCxrQ0FFQyIsImZpbGUiOiJjb3JlL2NvbXBvbmVudHMvc3RhdGVmdWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBhbmd1bGFyIGZyb20gJ2FuZ3VsYXInO1xuXG5pbXBvcnQge0dlbkVycm9yfSBmcm9tICcuLi9lcnJvcnMvZXJyb3InO1xuaW1wb3J0IHtTaGFyZWRTdG9yZSwgU2hhcmVkU3RvcmVNYW5hZ2VyfSBmcm9tICcuLi9zaGFyZWRfc3RvcmUvaW5kZXgnO1xuXG5pbXBvcnQge0NvbXBvbmVudEJhc2UsIGNvbXBvbmVudCwgQ29tcG9uZW50Q29uZmlndXJhdGlvbiwgU3Vic2NyaXB0aW9ufSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtTdGF0ZU1hbmFnZXJ9IGZyb20gJy4vbWFuYWdlcic7XG5cbmV4cG9ydCBjbGFzcyBTdGF0ZUl0ZW1NZXRhZGF0YSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHByb3BlcnR5TmFtZTogc3RyaW5nLCBwdWJsaWMgc2hhcmVkOiBib29sZWFuKSB7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNoYXJlZFN0b3JlTmFtZVByb3BlcnR5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnX3NoYXJlZFN0b3JlTmFtZV8nICsgdGhpcy5wcm9wZXJ0eU5hbWU7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRlTWV0YWRhdGEge1xuICAgIFtpbmRleDogc3RyaW5nXTogU3RhdGVJdGVtTWV0YWRhdGE7XG59XG5cbmludGVyZmFjZSBTaGFyZWRTdG9yZVN1YnNjcmliZVJlcXVlc3Qge1xuICAgICgpOiB2b2lkO1xufVxuXG4vKipcbiAqIEEgY29tcG9uZW50IHdoaWNoIGNvbnRhaW5zIHN0YXRlIHRoYXQgbWF5IGJlIHNhdmVkIGFuZCByZWxvYWRlZCBsYXRlci4gU3VjaFxuICogc3RhdGVmdWwgY29tcG9uZW50cyBhcmUgYXV0b21hdGljYWxseSBvcmdhbml6ZWQgaW50byBhIGhpZXJhcmNoeSwgc28gdGhhdFxuICogcGFyZW50cyBhbHNvIHN0b3JlIHN0YXRlIGZvciBhbGwgdGhlaXIgY2hpbGRyZW4uIENhbGxpbmcgYHNhdmVTdGF0ZWAgb24gdGhlXG4gKiB0b3AtbGV2ZWwgY29tcG9uZW50IHdpbGwgdGhlcmVmb3JlIHNhdmUgdGhlIHN0YXRlIG9mIHRoZSBjb21wbGV0ZSBhcHBsaWNhdGlvbi5cbiAqXG4gKiBDb21wb25lbnQgc3RhdGUgaXMgZGVmaW5lZCBieSB1c2luZyBwcm9wZXJ0eSBkZWNvcmF0b3JzIGFzIGZvbGxvd3M6XG4gKiBgYGBcbiAqIGV4cG9ydCBjbGFzcyBQcm9jZXNzR3JvdXBzIGV4dGVuZHMgVmlld0NvbXBvbmVudCB7XG4gKiAgICAgQHN0YXRlKCkgcHVibGljIHNlbGVjdGVkR3JvdXA6IG51bWJlcjtcbiAqXG4gKiAgICAgLy8gLi4uXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBJdCBtYXkgYmUgdGhlbiByZWZlcmVuY2VkIGFuZCB3YXRjaGVkIGZyb20gdGhlIGNvbnRyb2xsZXIgb3IgdGVtcGxhdGVzIGFuZFxuICogd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHNhdmVkIHdoZW4gY2FsbGluZyBbW1N0YXRlZnVsQ29tcG9uZW50QmFzZS5zYXZlU3RhdGVdXVxuICogYW5kIHJlbG9hZGVkIHdoZW4gY2FsbGluZyBbW1N0YXRlZnVsQ29tcG9uZW50QmFzZS5sb2FkU3RhdGVdXS5cbiAqXG4gKiBBIHJlbGF0ZWQgZGVjb3JhdG9yIG1heSBiZSB1c2VkIHRvIGRlY2xhcmUgc3RhdGUsIHdoaWNoIGlzIHNoYXJlZCBiZXR3ZWVuXG4gKiBtdWx0aXBsZSBjb21wb25lbnRzOlxuICogYGBgXG4gKiBleHBvcnQgY2xhc3MgV2lkZ2V0Um9zZTIgZXh0ZW5kcyBXaWRnZXRCYXNlIHtcbiAqICAgICBAc2hhcmVkU3RhdGUoKSBwdWJsaWMgc2VsZWN0ZWRWYWx1ZTogU2hhcmVkU3RvcmU8dHlwZXMuRGF0YT47XG4gKlxuICogICAgIC8vIC4uLlxuICogfVxuICogYGBgXG4gKlxuICogU2VlIFtbU2hhcmVkU3RvcmVNYW5hZ2VyXV0gYW5kIFtbU2hhcmVkU3RvcmVdXSBmb3IgbW9yZSBkb2N1bWVudGF0aW9uIG9uXG4gKiBkZWZpbmluZyBzaGFyZWQgc3RhdGUgdXNpbmcgc2hhcmVkIHN0b3Jlcy5cbiAqXG4gKiBGb3IgZXhhbXBsZSwgaWYgYSBzdGF0ZWZ1bCBjb21wb25lbnQgZGVmaW5lcyBhIHNoYXJlZCBzdGF0ZSBwcm9wZXJ0eSBjYWxsZWRcbiAqIGBzZWxlY3RlZFZhbHVlYCAoYXMgc2hvd24gYWJvdmUpIGFuZCB5b3Ugd2FudCB0byBsaW5rIGl0IHdpdGggdGhlIHNoYXJlZCBzdG9yZVxuICogbmFtZWQgYHJvc2UyLXNlbGVjdGVkLWRhdGEtaXRlbWAsIHlvdSBjYW4gZG8gdGhlIGZvbGxvd2luZyBpbiB5b3VyIHRlbXBsYXRlOlxuICogYGBgaHRtbFxuICogPGdlbi13aWRnZXQtcm9zZTIgc3RvcmUtc2VsZWN0ZWQtdmFsdWU9XCJyb3NlMi1zZWxlY3RlZC1kYXRhLWl0ZW1cIj48L2dlbi13aWRnZXQtcm9zZTI+XG4gKiBgYGBcbiAqXG4gKiBOb3RlIHRoYXQgdGhlIHRlbXBsYXRlIGF0dHJpYnV0ZSBuYW1lIGlzIHByZWZpeGVkIHdpdGggYHN0b3JlYCBldmVuIHdoZW4gdGhlXG4gKiBwcm9wZXJ0eSBpcyBjYWxsZWQganVzdCBgc2VsZWN0ZWRWYWx1ZWAuIFRoaXMgaXMgZG9uZSBiZWNhdXNlIHdoYXQgeW91IHBhc3NcbiAqIGluIHRoZSB0ZW1wbGF0ZSBpcyBqdXN0IGEgbmFtZSBvZiB0aGUgc3RvcmUsIHdoaWNoIG11c3QgYmUgcmVzb2x2ZWQgdXNpbmcgdGhlXG4gKiBzaGFyZWQgc3RvcmUgbWFuYWdlci5cbiAqXG4gKiBJbnNpZGUgdGhlIGNvbXBvbmVudHMgeW91IGNhbiB0aGVuIGRpc3BhdGNoIGFuZCBzdWJzY3JpYmUgdG8gdGhlIHVuZGVybHlpbmdcbiAqIHN0b3JlOlxuICogYGBgXG4gKiAvLyBQdWJsaXNoIHNvbWV0aGluZyBieSBkaXNwYXRjaGluZyBhbiBhY3Rpb24gdG8gdGhlIHNoYXJlZCBzdG9yZS5cbiAqIHRoaXMuc2VsZWN0ZWRWYWx1ZS5kaXNwYXRjaCh7dHlwZTogQWN0aW9ucy5TRVQsIHZhbHVlOiA0Mn0pO1xuICpcbiAqIC8vIFN1YnNjcmliZSB0byB1cGRhdGVzIG9mIHRoZSBzaGFyZWQgc3RvcmUuXG4gKiB0aGlzLnN1YnNjcmliZVNoYXJlZFN0YXRlKCdzZWxlY3RlZFZhbHVlJywgKGRhdGEpID0+IHtcbiAqICAgICBjb25zb2xlLmxvZyhcIlNoYXJlZCBzdGF0ZSAnc2VsZWN0ZWRWYWx1ZScgaXMgbm93XCIsIGRhdGEpO1xuICogfSk7XG4gKiBgYGBcbiAqL1xuQGNvbXBvbmVudCh7XG4gICAgYWJzdHJhY3Q6IHRydWUsXG4gICAgYmluZGluZ3M6IHtcbiAgICAgICAgc3RhdGVJZDogJ0BzdGF0ZUlkJyxcbiAgICB9LFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGF0ZWZ1bENvbXBvbmVudEJhc2UgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHtcbiAgICAvLy8gTWV0YWRhdGEgYWJvdXQgdGhlIHN0YXRlIGRlZmluZWQgb24gdGhlIGNvbXBvbmVudC5cbiAgICBwdWJsaWMgX19zdGF0ZU1ldGFkYXRhOiBTdGF0ZU1ldGFkYXRhO1xuICAgIC8vLyBUaGlzIGNvbXBvbmVudCdzIGxvY2FsIHN0YXRlIGlkZW50aWZpZXIuXG4gICAgcHVibGljIHN0YXRlSWQ6IHN0cmluZztcbiAgICAvLy8gVGhpcyBjb21wb25lbnQncyBnbG9iYWwgc3RhdGUgaWRlbnRpZmllci5cbiAgICBwdWJsaWMgZ2xvYmFsU3RhdGVJZDogc3RyaW5nO1xuICAgIC8vLyBQYXJlbnQgc3RhdGVmdWwgY29tcG9uZW50LlxuICAgIHByaXZhdGUgX3BhcmVudDogU3RhdGVmdWxDb21wb25lbnRCYXNlID0gbnVsbDtcbiAgICAvLy8gQSBsaXN0IG9mIGNoaWxkIHN0YXRlZnVsIGNvbXBvbmVudHMuXG4gICAgcHJpdmF0ZSBfY2hpbGRyZW46IFN0YXRlZnVsQ29tcG9uZW50QmFzZVtdID0gW107XG4gICAgLy8vIFN0YXRlIG1hbmFnZXIuXG4gICAgcHJpdmF0ZSBfc3RhdGVNYW5hZ2VyOiBTdGF0ZU1hbmFnZXI7XG4gICAgLy8vIFNoYXJlZCBzdG9yZSBtYW5hZ2VyLlxuICAgIHByaXZhdGUgX3NoYXJlZFN0b3JlTWFuYWdlcjogU2hhcmVkU3RvcmVNYW5hZ2VyO1xuICAgIC8vLyBTdWJzY3JpcHRpb24gcmVxdWVzdHMgZm9yIHNoYXJlZCBzdG9yZXMuXG4gICAgcHJpdmF0ZSBfc2hhcmVkU3RvcmVTdWJzY3JpYmVSZXF1ZXN0czogU2hhcmVkU3RvcmVTdWJzY3JpYmVSZXF1ZXN0W10gPSBbXTtcbiAgICAvLy8gU3Vic2NyaXB0aW9ucyB0byBzaGFyZWQgc3RvcmVzLlxuICAgIHByaXZhdGUgX3NoYXJlZFN0b3JlU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIC8vIEBuZ0luamVjdFxuICAgIGNvbnN0cnVjdG9yKCRzY29wZTogYW5ndWxhci5JU2NvcGUsIHN0YXRlTWFuYWdlcjogU3RhdGVNYW5hZ2VyKSB7XG4gICAgICAgIHN1cGVyKCRzY29wZSk7XG5cbiAgICAgICAgdGhpcy5fc3RhdGVNYW5hZ2VyID0gc3RhdGVNYW5hZ2VyO1xuICAgICAgICB0aGlzLl9zaGFyZWRTdG9yZU1hbmFnZXIgPSBzdGF0ZU1hbmFnZXIuc2hhcmVkU3RvcmVNYW5hZ2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbXBvbmVudEluaXQoKSB7XG4gICAgICAgIHN1cGVyLm9uQ29tcG9uZW50SW5pdCgpO1xuXG4gICAgICAgIC8vIFdoZW4gc3RhdGUgaWRlbnRpZmllciBpcyBub3QgZGVmaW5lZCwgZGVmYXVsdCB0byBkaXJlY3RpdmUgbmFtZS5cbiAgICAgICAgaWYgKF8uaXNFbXB0eSh0aGlzLnN0YXRlSWQpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlSWQgPSB0aGlzLmdldENvbmZpZygpLmRpcmVjdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERldGVybWluZSBvdXIgcGFyZW50IGFuZCByZWdpc3RlciBvdXJzZWx2ZXMgd2l0aCBpdC5cbiAgICAgICAgdGhpcy5fcGFyZW50ID0gdGhpcy5fZmluZFBhcmVudENvbXBvbmVudCgpO1xuICAgICAgICBpZiAodGhpcy5fcGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9wYXJlbnQuX3JlZ2lzdGVyQ2hpbGQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmdsb2JhbFN0YXRlSWQgPSB0aGlzLl9wYXJlbnQuZ2xvYmFsU3RhdGVJZCArICctJyArIHRoaXMuc3RhdGVJZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlTWFuYWdlci5hZGRUb3BMZXZlbENvbXBvbmVudCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsU3RhdGVJZCA9IHRoaXMuc3RhdGVJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGFueSBwZW5kaW5nIHN0YXRlIGZvciB1cy5cbiAgICAgICAgdGhpcy5fc3RhdGVNYW5hZ2VyLmxvYWRQZW5kaW5nQ29tcG9uZW50U3RhdGUodGhpcyk7XG5cbiAgICAgICAgLy8gQXV0b21hdGljYWxseSBsb2FkIGFueSBjb25maWd1cmVkIHNoYXJlZCBzdGF0ZS5cbiAgICAgICAgY29uc3Qgc3RhdGVNZXRhZGF0YSA9IHRoaXMuX19zdGF0ZU1ldGFkYXRhO1xuICAgICAgICBfLmZvck93bihzdGF0ZU1ldGFkYXRhLCAobWV0YWRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zaGFyZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaGFyZWRTdG9yZU5hbWUgPSB0aGlzW21ldGFkYXRhLmdldFNoYXJlZFN0b3JlTmFtZVByb3BlcnR5KCldO1xuICAgICAgICAgICAgICAgIGlmICghXy5pc0VtcHR5KHNoYXJlZFN0b3JlTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLl9zaGFyZWRTdG9yZU1hbmFnZXIuZ2V0U3RvcmUoc2hhcmVkU3RvcmVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1ttZXRhZGF0YS5wcm9wZXJ0eU5hbWVdID0gc3RvcmU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBTaGFyZWRTdG9yZShtZXRhZGF0YS5wcm9wZXJ0eU5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHVwIHRoZSBzaGFyZWQgc3RvcmUuIFRoaXMgbWV0aG9kIG1heSBiZSBvdmVycmlkZW4gYnkgc3ViY2xhc3NlcyB3aGVuIHNvbWV0aGluZ1xuICAgICAqIGRpZmZlcmVudCBzaG91bGQgYmUgZG9uZSBoZXJlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdG9yZX0gU2hhcmVkIHN0YXRlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9zZXR1cFNoYXJlZFN0b3JlKHN0b3JlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHNoYXJlZCBzdG9yZSwgc28gdGhhdCB0aGlzIGNvbXBvbmVudCdzIHNjb3BlIGdldHMgdXBkYXRlZCB3aGVuIHRoZVxuICAgICAgICAvLyB2YWx1ZSBpbiB0aGUgc3RvcmUgaXMgdXBkYXRlZC5cbiAgICAgICAgdGhpcy5zdWJzY3JpYmVTaGFyZWRTdGF0ZShzdG9yZSwgXy5ub29wKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdGF0ZSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc3RhdGVNYW5hZ2VyKCk6IFN0YXRlTWFuYWdlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZU1hbmFnZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc2hhcmVkIHN0b3JlIG1hbmFnZXIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldCBzaGFyZWRTdG9yZU1hbmFnZXIoKTogU2hhcmVkU3RvcmVNYW5hZ2VyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NoYXJlZFN0b3JlTWFuYWdlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Db21wb25lbnREZXN0cm95ZWQoKTogdm9pZCB7XG4gICAgICAgIC8vIFNhdmUgY3VycmVudCBjb21wb25lbnQgc3RhdGUsIHNvIGl0IHdpbGwgYmUgYXZhaWxhYmxlIHdoZW4gdGhpcyBjb21wb25lbnRcbiAgICAgICAgLy8gaXMgaW5zdGFudGlhdGVkIGFnYWluLlxuICAgICAgICB0aGlzLl9zdGF0ZU1hbmFnZXIuc2F2ZVBlbmRpbmdDb21wb25lbnRTdGF0ZSh0aGlzKTtcblxuICAgICAgICBpZiAodGhpcy5fcGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9wYXJlbnQuX3VucmVnaXN0ZXJDaGlsZCh0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlTWFuYWdlci5yZW1vdmVUb3BMZXZlbENvbXBvbmVudCh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLm9uQ29tcG9uZW50RGVzdHJveWVkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBiZWVuIGxvYWRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25Db21wb25lbnRTdGF0ZUFmdGVyTG9hZCgpOiB2b2lkIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBieSBkZWZhdWx0LlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgY29tcG9uZW50J3Mgc3RhdGUgaGFzIGJlZW4gc2F2ZWQuXG4gICAgICovXG4gICAgcHVibGljIG9uQ29tcG9uZW50U3RhdGVQcmVTYXZlKCk6IHZvaWQge1xuICAgICAgICAvLyBEbyBub3RoaW5nIGJ5IGRlZmF1bHQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzY292ZXJzIHRoZSBwYXJlbnQgc3RhdGVmdWwgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZpbmRQYXJlbnRDb21wb25lbnQoKTogU3RhdGVmdWxDb21wb25lbnRCYXNlIHtcbiAgICAgICAgbGV0IHNjb3BlID0gdGhpcy4kc2NvcGUuJHBhcmVudDtcbiAgICAgICAgd2hpbGUgKHNjb3BlKSB7XG4gICAgICAgICAgICBpZiAoc2NvcGVbJ2N0cmwnXSBpbnN0YW5jZW9mIFN0YXRlZnVsQ29tcG9uZW50QmFzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzY29wZVsnY3RybCddO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzY29wZSA9IHNjb3BlLiRwYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYSBuZXcgY2hpbGQgb2YgdGhpcyBzdGF0ZWZ1bCBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1N0YXRlZnVsQ29tcG9uZW50QmFzZX0gY2hpbGQgQ2hpbGQgY29tcG9uZW50IGluc3RhbmNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcmVnaXN0ZXJDaGlsZChjaGlsZDogU3RhdGVmdWxDb21wb25lbnRCYXNlKSB7XG4gICAgICAgIC8vIEVuc3VyZSB0aGUgY2hpbGQncyBsb2NhbCBzdGF0ZSBpZCBpcyB1bmlxdWUuXG4gICAgICAgIGlmIChfLmFueSh0aGlzLl9jaGlsZHJlbiwgKGMpID0+IGMuc3RhdGVJZCA9PT0gY2hpbGQuc3RhdGVJZCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5FcnJvcihcIkR1cGxpY2F0ZSBzdGF0ZWZ1bCBjb21wb25lbnQgc3RhdGUgaWRlbnRpZmllciAnXCIgKyBjaGlsZC5zdGF0ZUlkICsgXCInLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVucmVnaXN0ZXJzIGFuIGV4aXN0aW5nIGNoaWxkIG9mIHRoaXMgc3RhdGVmdWwgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTdGF0ZWZ1bENvbXBvbmVudEJhc2V9IGNoaWxkIENoaWxkIGNvbXBvbmVudCBpbnN0YW5jZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3VucmVnaXN0ZXJDaGlsZChjaGlsZDogU3RhdGVmdWxDb21wb25lbnRCYXNlKSB7XG4gICAgICAgIHRoaXMuX2NoaWxkcmVuID0gXy53aXRob3V0KHRoaXMuX2NoaWxkcmVuLCBjaGlsZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcGFyZW50IHN0YXRlZnVsIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcGFyZW50Q29tcG9uZW50KCk6IFN0YXRlZnVsQ29tcG9uZW50QmFzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGxpc3Qgb2YgY2hpbGQgc3RhdGVmdWwgY29tcG9uZW50cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2hpbGRDb21wb25lbnRzKCk6IFN0YXRlZnVsQ29tcG9uZW50QmFzZVtdIHtcbiAgICAgICAgcmV0dXJuIF8uY2xvbmUodGhpcy5fY2hpbGRyZW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGEgY2hpbGQgY29tcG9uZW50IGJ5IGl0cyBzdGF0ZSBpZGVudGlmaWVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlSWQgQ2hpbGQncyBzdGF0ZSBpZGVudGlmaWVyXG4gICAgICogQHJldHVybiB7U3RhdGVmdWxDb21wb25lbnRCYXNlfSBDaGlsZCBjb21wb25lbnQgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2hpbGRDb21wb25lbnQ8VCBleHRlbmRzIFN0YXRlZnVsQ29tcG9uZW50QmFzZT4oc3RhdGVJZDogc3RyaW5nKTogVCB7XG4gICAgICAgIHJldHVybiA8VD4gXy5maW5kKHRoaXMuX2NoaWxkcmVuLCAoY2hpbGQpID0+IGNoaWxkLnN0YXRlSWQgPT09IHN0YXRlSWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN1YnNjcmliZXMgdG8gc2hhcmVkIHN0YXRlLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGEgbm9ybWFsIHN1YnNjcmliZSwgYnV0IGluXG4gICAgICogYWRkaXRpb24gaXQgYWxzbyBwcm9wZXJseSBoYW5kbGVzIHVuZGVybHlpbmcgZGF0YSBzdG9yZSBjaGFuZ2VzIHdoZW5cbiAgICAgKiBjb21wb25lbnQgc3RhdGUgaXMgcmVsb2FkZWQuXG4gICAgICpcbiAgICAgKiBUaGUgdmFsdWUgb2JzZXJ2ZWQgZnJvbSB0aGUgc2hhcmVkIHN0b3JlIE1VU1QgTk9UIGJlIG11dGF0ZWQgaW4gYW55IHdheSBhc1xuICAgICAqIGRvaW5nIHNvIG1heSBjYXVzZSB1bmRlZmluZWQgYmVoYXZpb3IuIElmIHlvdSBuZWVkIHRvIG11dGF0ZSB0aGUgb2JzZXJ2ZWRcbiAgICAgKiB2YWx1ZSwgdXNlIFtbc3Vic2NyaWJlU2hhcmVkU3RhdGVNdXRhYmxlXV0gaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2Ygc2hhcmVkIHN0YXRlXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIENhbGxiYWNrIHRvIGJlIGludm9rZWQgb24gc3Vic2NyaXB0aW9uXG4gICAgICovXG4gICAgcHVibGljIHN1YnNjcmliZVNoYXJlZFN0YXRlKG5hbWU6IHN0cmluZywgY2FsbGJhY2s6ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0b3JlTWV0YWRhdGEgPSB0aGlzLl9nZXRTdGF0ZU1ldGFkYXRhKG5hbWUpO1xuICAgICAgICBpZiAoIXN0b3JlTWV0YWRhdGEgfHwgIXN0b3JlTWV0YWRhdGEuc2hhcmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuRXJyb3IoXCJTaGFyZWQgc3RhdGUgJ1wiICsgbmFtZSArIFwiJyBub3QgZm91bmQuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaWJlciA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlOiBTaGFyZWRTdG9yZTxhbnksIGFueT4gPSB0aGlzW3N0b3JlTWV0YWRhdGEucHJvcGVydHlOYW1lXTtcbiAgICAgICAgICAgIGlmICghc3RvcmUpIHtcbiAgICAgICAgICAgICAgICAvLyBAaWZuZGVmIEdFTkpTX1BST0RVQ1RJT05cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKGBJZ25vcmVkIG1pc3Npbmcgc3RvcmU6ICR7c3RvcmVNZXRhZGF0YS5wcm9wZXJ0eU5hbWV9ICR7dGhpcy5nbG9iYWxTdGF0ZUlkfWApO1xuICAgICAgICAgICAgICAgIC8vIEBlbmRpZlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzdG9yZSkgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy5fc2hhcmVkU3RvcmVTdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdWJzY3JpYmUoY2FsbGJhY2ssIHN0b3JlLm9ic2VydmFibGUoKSkpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX3NoYXJlZFN0b3JlU3Vic2NyaWJlUmVxdWVzdHMucHVzaChzdWJzY3JpYmVyKTtcbiAgICAgICAgc3Vic2NyaWJlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgdmVyc2lvbiBvZiBbW3N1YnNjcmliZVNoYXJlZFN0YXRlXV0sIHdoaWNoIGVuc3VyZXMgdGhhdCB0aGUgb2JzZXJ2ZWQgc2hhcmVkXG4gICAgICogc3RvcmUgdmFsdWUgaXMgY29waWVkIGFuZCBjYW4gdGh1cyBiZSBzYWZlbHkgbXV0YXRlZCBhZnRlcndhcmRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiBzaGFyZWQgc3RhdGVcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQ2FsbGJhY2sgdG8gYmUgaW52b2tlZCBvbiBzdWJzY3JpcHRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgc3Vic2NyaWJlU2hhcmVkU3RhdGVNdXRhYmxlPFQ+KG5hbWU6IHN0cmluZywgY2FsbGJhY2s6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmliZVNoYXJlZFN0YXRlKG5hbWUsICh2YWx1ZSkgPT4gY2FsbGJhY2soYW5ndWxhci5jb3B5KHZhbHVlKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgbWV0YWRhdGEgZm9yIHNwZWNpZmljIGNvbXBvbmVudCBzdGF0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2Ygc2hhcmVkIHN0YXRlIChub3QgcHJvcGVydHkgbmFtZSlcbiAgICAgKiBAcmV0dXJuIHtTdGF0ZUl0ZW1NZXRhZGF0YX0gU3RhdGUgbWV0YWRhdGFcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRTdGF0ZU1ldGFkYXRhKG5hbWU6IHN0cmluZyk6IFN0YXRlSXRlbU1ldGFkYXRhIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX19zdGF0ZU1ldGFkYXRhW25hbWVdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIHRoaXMgY29tcG9uZW50J3MgY3VycmVudCBzdGF0ZSBhbmQgcmV0dXJucyBpdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2F2ZVN0YXRlKHNhdmVDaGlsZHJlbjogYm9vbGVhbiA9IHRydWUpOiBhbnkge1xuICAgICAgICB0aGlzLm9uQ29tcG9uZW50U3RhdGVQcmVTYXZlKCk7XG5cbiAgICAgICAgbGV0IHJlc3VsdCA9IHt9O1xuICAgICAgICBsZXQgc3RhdGUgPSByZXN1bHRbdGhpcy5nbG9iYWxTdGF0ZUlkXSA9IHt9OyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lOm5vLXNoYWRvd2VkLXZhcmlhYmxlXG4gICAgICAgIF8uZm9yT3duKHRoaXMuX19zdGF0ZU1ldGFkYXRhLCAobWV0YWRhdGEsIGtleSkgPT4ge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpc1ttZXRhZGF0YS5wcm9wZXJ0eU5hbWVdO1xuXG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuc2hhcmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBzaGFyZWQgc3RhdGUsIHNhdmUgdGhlIGlkZW50aWZpZXIgb2YgdGhlIHNoYXJlZCBzdG9yZS5cbiAgICAgICAgICAgICAgICB2YWx1ZSA9ICg8U2hhcmVkU3RvcmU8YW55LCBhbnk+PiB2YWx1ZSkuc3RvcmVJZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RhdGVba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTYXZlIGNoaWxkIHN0YXRlLlxuICAgICAgICBpZiAoc2F2ZUNoaWxkcmVuKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuX2NoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgXy5leHRlbmQocmVzdWx0LCBjaGlsZC5zYXZlU3RhdGUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWRzIHRoaXMgY29tcG9uZW50J3MgY3VycmVudCBzdGF0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7YW55fSBnbG9iYWxTdGF0ZSBHbG9iYWwgc3RhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZFN0YXRlKGdsb2JhbFN0YXRlOiBhbnksIGxvYWRDaGlsZHJlbjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXNoYWRvd2VkLXZhcmlhYmxlXG4gICAgICAgIGNvbnN0IHN0YXRlID0gZ2xvYmFsU3RhdGVbdGhpcy5nbG9iYWxTdGF0ZUlkXTtcbiAgICAgICAgbGV0IHNoYXJlZFN0YXRlQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICBfLmZvck93bih0aGlzLl9fc3RhdGVNZXRhZGF0YSwgKG1ldGFkYXRhLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICghc3RhdGUpIHJldHVybjtcbiAgICAgICAgICAgIGlmICghKGtleSBpbiBzdGF0ZSkpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBzdGF0ZVtrZXldO1xuICAgICAgICAgICAgaWYgKG1ldGFkYXRhLnNoYXJlZCkge1xuICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgc2hhcmVkIHN0b3JlIGZyb20gdGhlIHNoYXJlZCBzdG9yZSBtYW5hZ2VyLlxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nVmFsdWU6IFNoYXJlZFN0b3JlPGFueSwgYW55PiA9IHRoaXNbbWV0YWRhdGEucHJvcGVydHlOYW1lXTtcbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdWYWx1ZS5zdG9yZUlkICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzW21ldGFkYXRhLnByb3BlcnR5TmFtZV0gPSB0aGlzLl9zaGFyZWRTdG9yZU1hbmFnZXIuZ2V0U3RvcmU8YW55Pih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNoYXJlZFN0YXRlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzW21ldGFkYXRhLnByb3BlcnR5TmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gTG9hZCBjaGlsZCBzdGF0ZS5cbiAgICAgICAgaWYgKGxvYWRDaGlsZHJlbikge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLl9jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIGNoaWxkLmxvYWRTdGF0ZShnbG9iYWxTdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2hhcmVkU3RhdGVDaGFuZ2VkKSB7XG4gICAgICAgICAgICAvLyBDYW5jZWwgYW55IHByZXZpb3VzIHN1YnNjcmlwdGlvbnMgdG8gc2hhcmVkIHN0b3Jlcy5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuX3NoYXJlZFN0b3JlU3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZXN1YnNjcmliZSwgdXNpbmcgdGhlIG5ldyBzdG9yZXMuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlcXVlc3Qgb2YgdGhpcy5fc2hhcmVkU3RvcmVTdWJzY3JpYmVSZXF1ZXN0cykge1xuICAgICAgICAgICAgICAgIHJlcXVlc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25Db21wb25lbnRTdGF0ZUFmdGVyTG9hZCgpO1xuXG4gICAgICAgIC8vIFByb3BhZ2F0ZSBzdGF0ZSB1cGRhdGVzIHRvIHRoZSB2aWV3LlxuICAgICAgICB0aGlzLiRzY29wZS4kYXBwbHlBc3luYygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHByb3BlcnR5IGhhcyBub3QgYmVlbiBsb2FkZWQgZnJvbSBzdGF0ZSwgb3IgaXNuJ3QgZGVmaW5lZC4gVXN1YWxseSB1c2VkXG4gICAgICogYmVmb3JlIHNldHRpbmcgYSBkZWZlcnJlZCBkZWZhdWx0IHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc1Byb3BlcnR5Tm90TG9hZGVkRnJvbVN0YXRlT3JJc1VuZGVmaW5lZDxQIGV4dGVuZHMga2V5b2YgdGhpcz4ocHJvcGVydHk6IFApIHtcbiAgICAgICAgcmV0dXJuIF8uaXNVbmRlZmluZWQodGhpc1twcm9wZXJ0eV0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY29uZmlndXJlQ29tcG9uZW50KGNvbmZpZzogQ29tcG9uZW50Q29uZmlndXJhdGlvbik6IENvbXBvbmVudENvbmZpZ3VyYXRpb24ge1xuICAgICAgICBjb25zdCBzdGF0ZU1ldGFkYXRhID0gdGhpcy5wcm90b3R5cGUuX19zdGF0ZU1ldGFkYXRhO1xuICAgICAgICBpZiAoIWNvbmZpZy5iaW5kaW5ncykgY29uZmlnLmJpbmRpbmdzID0ge307XG5cbiAgICAgICAgXy5mb3JPd24oc3RhdGVNZXRhZGF0YSwgKG1ldGFkYXRhLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5zaGFyZWQpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuYmluZGluZ3NbbWV0YWRhdGEuZ2V0U2hhcmVkU3RvcmVOYW1lUHJvcGVydHkoKV0gPSAnQHN0b3JlJyArIF8uY2FwaXRhbGl6ZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG59XG5cbi8qKlxuICogTWFya3MgYSBwcm9wZXJ0eSBhcyBiZWluZyBwYXJ0IG9mIHRoZSBjb21wb25lbnQncyBzdGF0ZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBPcHRpb25hbCBzdGF0ZSBuYW1lXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHNoYXJlZCBEb2VzIHRoaXMgc3RhdGUgcmVmZXJlbmNlIGEgc2hhcmVkIHN0b3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZShuYW1lPzogc3RyaW5nLCBzaGFyZWQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHJldHVybiAodGFyZ2V0OiBTdGF0ZWZ1bENvbXBvbmVudEJhc2UsIHByb3BlcnR5S2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKCFuYW1lKSBuYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICAgICAgaWYgKG5hbWVbMF0gPT09ICdfJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbkVycm9yKFwiU3RhdGUgaWRlbnRpZmllcnMgc3RhcnRpbmcgd2l0aCBhbiB1bmRlcnNjb3JlIGFyZSByZXNlcnZlZC5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRhcmdldC5fX3N0YXRlTWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHRhcmdldC5fX3N0YXRlTWV0YWRhdGEgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXQuX19zdGF0ZU1ldGFkYXRhW25hbWVdKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuRXJyb3IoXCJEdXBsaWNhdGUgc3RhdGUgaWRlbnRpZmllciAnXCIgKyBuYW1lICsgXCInIG9uIHN0YXRlZnVsIGNvbXBvbmVudCAnXCIgKyB0YXJnZXQgKyBcIicuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRhcmdldC5fX3N0YXRlTWV0YWRhdGFbbmFtZV0gPSBuZXcgU3RhdGVJdGVtTWV0YWRhdGEocHJvcGVydHlLZXksIHNoYXJlZCk7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBNYXJrcyBhIHByb3BlcnR5IGFzIGJlaW5nIHBhcnQgb2YgdGhlIGNvbXBvbmVudCdzIHN0YXRlLCB3aGljaCByZWZlcmVuY2VzXG4gKiBhIHNoYXJlZCBzdG9yZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBPcHRpb25hbCBzdGF0ZSBuYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaGFyZWRTdGF0ZShuYW1lPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0YXRlKG5hbWUsIHRydWUpO1xufVxuIl19 |
import 'angular-mocks'; | ||
//# sourceMappingURL=stateful.spec.d.ts.map |
@@ -25,2 +25,1 @@ import * as angular from 'angular'; | ||
} | ||
//# sourceMappingURL=view.d.ts.map |
@@ -9,2 +9,1 @@ /** | ||
} | ||
//# sourceMappingURL=error.d.ts.map |
@@ -101,2 +101,1 @@ import * as Rx from 'rx'; | ||
} | ||
//# sourceMappingURL=api.d.ts.map |
@@ -5,2 +5,1 @@ import { APIServiceBase } from './api'; | ||
} | ||
//# sourceMappingURL=api.spec.d.ts.map |
@@ -338,2 +338,1 @@ import * as Rx from 'rx'; | ||
export {}; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -495,2 +495,2 @@ "use strict"; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL3NoYXJlZF9zdG9yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBNEI7QUFDNUIsdUJBQXlCO0FBQ3pCLGlDQUFtQztBQUVuQyxzQ0FBeUM7QUFDekMsOENBQWdEO0FBNEJoRDtJQUFBO0lBTUEsQ0FBQztJQUhVLHFCQUFHLEdBQVYsVUFBVyxLQUFVO1FBQ2pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFKRCwrREFBK0Q7SUFDakQsV0FBRyxHQUFzQixnQkFBZ0IsQ0FBQztJQUk1RCxjQUFDO0NBTkQsQUFNQyxJQUFBO0FBTlksMEJBQU87QUFRcEI7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNIO0lBT0kscUJBQVksT0FBVztRQUpmLGFBQVEsR0FBeUMsRUFBRSxDQUFDO1FBS3hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBRXhCLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBS0Qsc0JBQVcsZ0NBQU87UUFIbEI7O1dBRUc7YUFDSDtZQUNJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN6QixDQUFDOzs7T0FBQTtJQUtELHNCQUFXLGdDQUFPO1FBSGxCOztXQUVHO2FBQ0g7WUFDSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7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QUksT0FBTyxXQUFRLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLG9CQUFvQixDQUFDLFNBQWlCO0lBQzNDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBSSxTQUFTLGFBQVUsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxJQUFNLGFBQWEsR0FBb0IsT0FBTyxDQUFDLE1BQU0sQ0FBQywrQkFBK0IsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUUzRixnQ0FBZ0M7QUFDaEMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2xFLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDIiwiZmlsZSI6ImNvcmUvc2hhcmVkX3N0b3JlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgUnggZnJvbSAncngnO1xuaW1wb3J0ICogYXMgYW5ndWxhciBmcm9tICdhbmd1bGFyJztcblxuaW1wb3J0IHtpc0pzb25hYmxlfSBmcm9tICcuLi91dGlscy9sYW5nJztcbmltcG9ydCAqIGFzIGltbXV0YWJsZSBmcm9tICcuLi91dGlscy9pbW11dGFibGUnO1xuXG4vKipcbiAqIEEgc2hhcmVkIHN0b3JlIGFjdGlvbiBjb250YWlucyBhIGB0eXBlYCBwcm9wZXJ0eSBhbmQgYW55IG51bWJlciBvZiBvdGhlclxuICogY3VzdG9tIHByb3BlcnRpZXMuIEFjdGlvbiB0eXBlcyBzdGFydGluZyB3aXRoIGBAQGludGVybmFsL2AgYXJlIHJlc2VydmVkXG4gKiBmb3IgaW50ZXJuYWwgdXNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIFtwcm9wZXJ0eU5hbWU6IHN0cmluZ106IGFueTtcbn1cblxudHlwZSBNZXRob2RSZXR1cm5zPEFjdGlvbnM+ID0gQWN0aW9ucyBleHRlbmRzIHsgW2tleSBpbiBrZXlvZiBBY3Rpb25zXTogKCgpID0+IGluZmVyIFJldHVybikgfCBpbmZlciBFbHNlIH0gPyBSZXR1cm4gOiBuZXZlcjtcbnR5cGUgRmlsdGVyQWN0aW9uczxSZXR1cm4+ID0gUmV0dXJuIGV4dGVuZHMgeyB0eXBlOiBpbmZlciBSIH0gPyBSZXR1cm4gOiBuZXZlcjtcbmV4cG9ydCB0eXBlIEdldEFjdGlvbnM8QWN0aW9ucz4gPSBGaWx0ZXJBY3Rpb25zPE1ldGhvZFJldHVybnM8QWN0aW9ucz4+IHwgeyB0eXBlOiAnLi4uJyB9O1xuXG4vKipcbiAqIEEgdGh1bmsgaXMgYSBmdW5jdGlvbiwgd2hpY2ggbWVkaWF0ZXMgdGhlIGRpc3BhdGNoIG9mIGFuIGFjdGlvbi4gSXQgbWF5XG4gKiBiZSBkaXNwYXRjaGVkIGluIHRoZSBzYW1lIHdheSBhcyBhbiBhY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGh1bmsge1xuICAgIChkaXNwYXRjaGVyOiBEaXNwYXRjaGVyLCBnZXRTdGF0ZTogKCkgPT4gYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFN0b3JlUXVlcnk8VCwgVT4ge1xuICAgIChzdGF0ZTogUnguT2JzZXJ2YWJsZTxUPik6IFJ4Lk9ic2VydmFibGU8VT47XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25zIHtcbiAgICAvLy8gSW50ZXJuYWwgYWN0aW9uIGZvciBzZXR0aW5nIHRoaXMgc3RvcmUgdG8gYSBzcGVjaWZpYyB2YWx1ZS5cbiAgICBwdWJsaWMgc3RhdGljIFNFVCA9IDwnQEBpbnRlcm5hbC9TRVQnPiAnQEBpbnRlcm5hbC9TRVQnO1xuICAgIHB1YmxpYyBzZXQodmFsdWU6IGFueSkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBBY3Rpb25zLlNFVCwgdmFsdWUgfTtcbiAgICB9XG59XG5cbi8qKlxuICogQSBzaGFyZWQgc3RvcmUgcmVwcmVzZW50cyBzdGF0ZSB0aGF0IGlzIHNoYXJlZCBiZXR3ZWVuIG11bHRpcGxlIGNvbXBvbmVudHMgaW5cbiAqIGEgcHJlZGljdGFibGUgd2F5LiBDb21wb25lbnRzIHVwZGF0ZSB0aGUgc3RvcmUgYnkgZGlzcGF0Y2hpbmcgYWN0aW9ucyB0b1xuICogaXQgdXNpbmcgdGhlIGBkaXNwYXRjaGAgbWV0aG9kLlxuICpcbiAqIEVhY2ggc2hhcmVkIHN0b3JlIGFsc28gcHJvdmlkZXMgYSB3YXkgZm9yIHRoZSBjb21wb25lbnRzIHRvIHN1YnNjcmliZSB0byBhbnlcbiAqIGNoYW5nZXMgaW4gdGhlIHN0b3JlJ3Mgc3RhdGUuXG4gKlxuICogQ29uc2lkZXIgZGVmaW5pbmcgYWN0aW9ucyBmb3IgdXNlIGluIGEgc2hhcmVkIHN0b3JlIHNlcGFyYXRlbHkgZnJvbSB0aGUgc3RvcmUsXG4gKiBpbiB0aGUgYGFjdGlvbnNgIHN1YmRpcmVjdG9yeS4gU2VlIFtbU2hhcmVkU3RvcmVNYW5hZ2VyXV0gZm9yIGRldGFpbHMuXG4gKlxuICogRG9uJ3QgZm9yZ2V0IHRvIGNhbGwgY29uc3RydWN0b3Igd2l0aCBhY3Rpb25zIGFzIGFuIGFyZ3VtZW50IHdoZW4gZXh0ZW5kaW5nXG4gKiB0aGlzIGNsYXNzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2hhcmVkU3RvcmU8VCwgVT4ge1xuICAgIHByaXZhdGUgX3N1YmplY3Q6IFJ4LkJlaGF2aW9yU3ViamVjdDxUPjtcbiAgICBwcml2YXRlIF9kaXNwYXRjaGVyOiBEaXNwYXRjaGVyO1xuICAgIHByaXZhdGUgX3F1ZXJpZXM6IHtbbmFtZTogc3RyaW5nXTogUnguT2JzZXJ2YWJsZTxhbnk+fSA9IHt9O1xuICAgIHByaXZhdGUgX2FjdGlvbnM6IFU7XG4gICAgcHJpdmF0ZSBfc3RvcmVJZDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoYWN0aW9ucz86IFUpIHtcbiAgICAgICAgdGhpcy5fc3ViamVjdCA9IG5ldyBSeC5CZWhhdmlvclN1YmplY3QodGhpcy5pbml0aWFsU3RhdGUoKSk7XG4gICAgICAgIHRoaXMuX2FjdGlvbnMgPSBhY3Rpb25zO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhIGxvY2FsIGRpc3BhdGNoZXIuXG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSBuZXcgRGlzcGF0Y2hlcigpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaGVyLnNldERpc3BhdGNoZXIodGhpcy5fZGlzcGF0Y2guYmluZCh0aGlzKSwgdGhpcy52YWx1ZS5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgc2hhcmVkIHN0b3JlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc3RvcmVJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RvcmVJZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHN0b3JlIGFjdGlvbnMuXG4gICAgICovXG4gICAgcHVibGljIGdldCBhY3Rpb25zKCk6IFUge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnRlcm5hbCBkaXNwYXRjaGVyIGltcGxlbWVudGF0aW9uLlxuICAgICAqXG4gICAgICogTk9URTogVGhpcyBtZXRob2QgaXMgcHVibGljIGJlY2F1c2UgdGhlcmUgaXMgbm8gd2F5IHRvIGRlZmluZSBwcml2YXRlXG4gICAgICogYnV0IGFjY2Vzc2libGUgdG8gb3RoZXIgY2xhc3NlcyB3aXRoaW4gdGhpcyBtb2R1bGUgaW4gVHlwZVNjcmlwdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgX2Rpc3BhdGNoKGFjdGlvbjogQWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nVmFsdWUgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgIGxldCByZWR1Y2VyOiAodmFsdWU6IFQsIGFjdGlvbjogQWN0aW9uKSA9PiBUO1xuICAgICAgICBpZiAoXy5zdGFydHNXaXRoKGFjdGlvbi50eXBlLCAnQEBpbnRlcm5hbC8nKSkge1xuICAgICAgICAgICAgcmVkdWNlciA9IHRoaXMuX3JlZHVjZUludGVybmFsLmJpbmQodGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWR1Y2VyID0gdGhpcy5yZWR1Y2UuYmluZCh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IHJlZHVjZXIoZXhpc3RpbmdWYWx1ZSwgYWN0aW9uKTtcbiAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQobmV3VmFsdWUpKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGFuZ3VsYXIuZXF1YWxzKGV4aXN0aW5nVmFsdWUsIG5ld1ZhbHVlKSkgcmV0dXJuO1xuICAgICAgICB0aGlzLl9zdWJqZWN0Lm9uTmV4dChpbW11dGFibGUubWFrZUltbXV0YWJsZShuZXdWYWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BhdGNoZXMgYW4gYWN0aW9uIHRvIHRoaXMgc2hhcmVkIHN0b3JlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFjdGlvbiBBY3Rpb24gdG8gZGlzcGF0Y2hcbiAgICAgKi9cbiAgICBwdWJsaWMgZGlzcGF0Y2goYWN0aW9uOiBHZXRBY3Rpb25zPFU+IHwgR2V0QWN0aW9uczxBY3Rpb25zPiB8IFRodW5rKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZGlzcGF0Y2goPEFjdGlvbiB8IFRodW5rPiBhY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGludGVybmFsIHJlZHVjZSBhY3Rpb25zIGltcGxlbWVudGVkIGZvciBlYWNoIHNoYXJlZCBzdG9yZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGF0ZSBFeGlzdGluZyBzaGFyZWQgc3RvcmUgc3RhdGVcbiAgICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbiB0byBwZXJmb3JtXG4gICAgICogQHJldHVybiBOZXcgc2hhcmVkIHN0b3JlIHN0YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcmVkdWNlSW50ZXJuYWwoc3RhdGU6IFQsIGFjdGlvbjogQWN0aW9uKTogVCB7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQWN0aW9ucy5TRVQ6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSBhY3Rpb25bJ3ZhbHVlJ107XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub25TdGF0ZUxvYWQoc3RhdGUsIG5leHRTdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgLy8gRG8gbm90aGluZy5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIHRoZSBnaXZlbiBhY3Rpb24gb24gdGhlIHVuZGVybHlpbmcgc3RhdGUuXG4gICAgICpcbiAgICAgKiBTdWJjbGFzc2VzIG1heSBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBpbXBsZW1lbnQgYXJiaXRyYXJ5IGNvbXBsZXhcbiAgICAgKiBhY3Rpb25zIG9uIHRoZSBkYXRhIHN0b3JlLiBUaGlzIG1ldGhvZCBNVVNUIE5PVCBtdXRhdGUgdGhlIGV4aXN0aW5nXG4gICAgICogc3RhdGUuIEluc3RlYWQsIGl0IE1VU1QgcmV0dXJuIGFuIGltbXV0YWJsZSBjb3B5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIEV4aXN0aW5nIHNoYXJlZCBzdG9yZSBzdGF0ZVxuICAgICAqIEBwYXJhbSBhY3Rpb24gT3BlcmF0aW9uIHRvIHBlcmZvcm1cbiAgICAgKiBAcmV0dXJuIE5ldyBzaGFyZWQgc3RvcmUgc3RhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVkdWNlKHN0YXRlOiBULCBhY3Rpb246IEdldEFjdGlvbnM8VT4pOiBUO1xuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgdGhlIGluaXRpYWwgc3RhdGUgZm9yIHRoaXMgc2hhcmVkIHN0b3JlLiBUaGlzIHN0YXRlIGlzXG4gICAgICogdXNlZCB3aGVuIHRoZSBzdG9yZSBpcyBpbml0aWFsaXplZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5pdGlhbFN0YXRlKCk6IFQ7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBnZXRzIGNhbGxlZCB3aGVuIHRoZSBkYXRhIHN0b3JlJ3Mgc3RhdGUgaXMgbG9hZGVkIGZyb21cbiAgICAgKiBhbiBleHRlcm5hbCBzb3VyY2UgKHdoZW4gdGhlIFNFVCBhY3Rpb24gaXMgZGlzcGF0Y2hlZCB0byB0aGUgc3RvcmUpLlxuICAgICAqXG4gICAgICogSXQgaXMgY2FsbGVkIGJlZm9yZSB0aGUgbmV3IHN0YXRlIGhhcyBiZWVuIHNldC4gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25cbiAgICAgKiBkb2VzIG5vdGhpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RhdGUgT2xkIHN0YXRlXG4gICAgICogQHBhcmFtIG5leHRTdGF0ZSBOZXcgc3RhdGVcbiAgICAgKiBAcmV0dXJuIFBvc3NpYmx5IG1vZGlmaWVkIHN0YXRlIHRoYXQgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblN0YXRlTG9hZChzdGF0ZTogVCwgbmV4dFN0YXRlOiBUKTogVCB7XG4gICAgICAgIHJldHVybiBuZXh0U3RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBoZWxwZXIgbWV0aG9kIGZvciBkZWZpbmluZyBzaGFyZWQgc3RvcmUgcXVlcmllcy4gSWYgdGhlIHF1ZXJ5IGlzIGFscmVhZHlcbiAgICAgKiBkZWZpbmVkLCB0aGUgZXhpc3Rpbmcgb2JzZXJ2YWJsZSBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIFF1ZXJ5IG5hbWVcbiAgICAgKiBAcGFyYW0gcXVlcnkgUXVlcnkgZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJuIFJlc3VsdGluZyBxdWVyeSBvYnNlcnZhYmxlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGRlZmluZVF1ZXJ5PFY+KG5hbWU6IHN0cmluZywgcXVlcnk6IFNoYXJlZFN0b3JlUXVlcnk8VCwgVj4pOiBSeC5PYnNlcnZhYmxlPFY+IHtcbiAgICAgICAgbGV0IG9ic2VydmFibGU6IFJ4Lk9ic2VydmFibGU8Vj4gPSB0aGlzLl9xdWVyaWVzW25hbWVdO1xuICAgICAgICBpZiAob2JzZXJ2YWJsZSkgcmV0dXJuIG9ic2VydmFibGU7XG5cbiAgICAgICAgb2JzZXJ2YWJsZSA9IHRoaXMuX3F1ZXJpZXNbbmFtZV0gPSB0aGlzLm9ic2VydmFibGUoKS5sZXQocXVlcnkpLmRpc3RpbmN0VW50aWxDaGFuZ2VkKCk7XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgc3RvcmVkIGluIHRoZSBzdG9yZS5cbiAgICAgKlxuICAgICAqIFlvdSBNVVNUIGVuc3VyZSB0aGF0IHRoZSByZXN1bHRpbmcgb2JqZWN0IGlzIE5PVCBtdXRhdGVkIGluIGFueSB3YXkuIEFueVxuICAgICAqIG11dGF0aW9uIG1heSBjYXVzZSB1bmRlZmluZWQgYmVoYXZpb3IuXG4gICAgICovXG4gICAgcHVibGljIHZhbHVlKCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSBvZiB0aGUgc3RvcmUncyB2YWx1ZS5cbiAgICAgKlxuICAgICAqIFlvdSBNVVNUIGVuc3VyZSB0aGF0IHRoZSBvYnNlcnZlZCB2YWx1ZSBpcyBOT1QgbXV0YXRlZCBpbiBhbnkgd2F5LiBBbnlcbiAgICAgKiBtdXRhdGlvbiBtYXkgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBvYnNlcnZhYmxlKCk6IFJ4Lk9ic2VydmFibGU8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3ViamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgdmFsdWUgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIHNhdmluZyBzdG9yZSBzdGF0ZS5cbiAgICAgKlxuICAgICAqIEJ5IGRlZmF1bHQsIHRoaXMgd2lsbCByZXR1cm4gdGhlIHNhbWUgYXMgW1t2YWx1ZV1dLlxuICAgICAqL1xuICAgIHB1YmxpYyBzYXZlVmFsdWUoKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFtbU2ltcGxlU2hhcmVkU3RvcmVdXSBpcyBhIGhlbHBlciBjbGFzcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgdHlwZSBpbiBjb25qdW5jdGlvbiB3aXRoXG4gKiBbW1NoYXJlZFN0b3JlUHJvdmlkZXJdXSdzIGBjcmVhdGVgIG1ldGhvZCB3aGVyZSBvbmx5IFNFVCBhY3Rpb24gaXMgdXNlZC5cbiAqXG4gKiBJbiB0aGlzIGNhc2Ugbm8gc3ViY2xhc3Npbmcgb2Ygc3RvcmUgYW5kIGFjdGlvbnMgaXMgbmVlZGVkIGJlY2F1c2Ugb25seSBTRVQgYWN0aW9uIGlzIHVzZWQuXG4gKiBUaGlzIGlzIGNvbnZlbmllbnQgZm9yIHVzZSBjYXNlcyB3aGVyZSB5b3Ugb25seSBuZWVkIHRvIHNldCBhIHZhbHVlIHRoYXQgeW91IGNhbiBzdWJzY3JpYmVcbiAqIHRvIGZyb20gb3RoZXIgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNpbXBsZVNoYXJlZFN0b3JlPFQ+IGV4dGVuZHMgU2hhcmVkU3RvcmU8VCwgdHlwZW9mIHVuZGVmaW5lZD4geyB9XG5cbi8qKlxuICogVXNlZCB0byBkaXNwYXRjaCBhY3Rpb25zIHRvIHNoYXJlZCBzdG9yZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaXNwYXRjaGVyIGV4dGVuZHMgUnguU3ViamVjdDxBY3Rpb24+IHtcbiAgICBwcml2YXRlIF9nZXRTdGF0ZTogKCkgPT4gYW55ID0gKCkgPT4gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJlcyBhIGRpc3BhdGNoZXIgZnVuY3Rpb24gZm9yIHRoaXMgZGlzcGF0Y2hlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkaXNwYXRjaGVyIFRoZSBkaXNwYXRjaGVyIGZ1bmN0aW9uXG4gICAgICovXG4gICAgcHVibGljIHNldERpc3BhdGNoZXIoZGlzcGF0Y2hlcjogKGFjdGlvbjogQWN0aW9uKSA9PiB2b2lkLCBnZXRTdGF0ZT86ICgpID0+IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBUaGUgZGlzcGF0Y2hlciBpcyB1c2VkIHRvIGRpc3BhdGNoIGFsbCBhY3Rpb25zIHVzaW5nIGEgcXVldWUsIHNvIGFjdGlvbnNcbiAgICAgICAgLy8gbWF5IGludm9rZSB0aGUgZGlzcGF0Y2ggbWV0aG9kIHdpdGhvdXQgY2F1c2luZyByZWN1cnNpb24uIFRoZSBjdXJyZW50VGhyZWFkXG4gICAgICAgIC8vIHNjaGVkdWxlciBwdXRzIGFsbCBwZW5kaW5nIGl0ZW1zIGluc2lkZSBhIHF1ZXVlLCB3aGljaCBpcyBkaXNwYXRjaGVkIGFmdGVyXG4gICAgICAgIC8vIHJldHVybmluZyBmcm9tIGFjdGl2ZSBkaXNwYXRjaC5cbiAgICAgICAgdGhpcy5vYnNlcnZlT24oUnguU2NoZWR1bGVyLmN1cnJlbnRUaHJlYWQpLnN1YnNjcmliZShkaXNwYXRjaGVyKTtcbiAgICAgICAgaWYgKGdldFN0YXRlKSB0aGlzLl9nZXRTdGF0ZSA9IGdldFN0YXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3BhdGNoZXMgYW4gYWN0aW9uIHZpYSB0aGlzIGRpc3BhdGNoZXIuXG4gICAgICovXG4gICAgcHVibGljIGRpc3BhdGNoKGFjdGlvbjogQWN0aW9uIHwgVGh1bmspOiBhbnkge1xuICAgICAgICBpZiAoXy5pc0Z1bmN0aW9uKGFjdGlvbikpIHtcbiAgICAgICAgICAgIC8vIEEgdGh1bmsgaGFzIGJlZW4gcGFzc2VkLiBFeGVjdXRlIGl0IHdpdGggdGhlIGRpc3BhdGNoZXIgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAvLyByZXR1cm4gdGhlIHJlc3VsdC5cbiAgICAgICAgICAgIHJldHVybiBhY3Rpb24odGhpcywgdGhpcy5fZ2V0U3RhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbk5leHQoYWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuaW50ZXJmYWNlIFNoYXJlZFN0b3JlTWFwIHtcbiAgICBbaW5kZXg6IHN0cmluZ106IFNoYXJlZFN0b3JlPGFueSwgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTdG9yZUZhY3Rvcnk8VCwgVT4ge1xuICAgIG5ldyAoLi4uYXJncyk6IFNoYXJlZFN0b3JlPFQsIFU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkZhY3Rvcnkge1xuICAgIG5ldyAoLi4uYXJncyk6IGFueTtcbn1cblxuLyoqXG4gKiBTaGFyZWQgc3RvcmUgcHJvdmlkZXIsIGVuYWJsaW5nIHJlZ2lzdHJhdGlvbiBvZiBzaGFyZWQgc3RvcmVzLiBBbGwgc3RvcmVzXG4gKiBtdXN0IGJlIHJlZ2lzdGVyZWQgaW4gdGhlIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcGhhc2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBTaGFyZWRTdG9yZVByb3ZpZGVyIHtcbiAgICAvLy8gQSBsaXN0IG9mIHJlZ2lzdGVyZWQgc3RvcmVzLlxuICAgIHByaXZhdGUgX3N0b3Jlczogc3RyaW5nW10gPSBbXTtcbiAgICAvLy8gUHJvdmlkZSBzZXJ2aWNlLlxuICAgIHByaXZhdGUgX3Byb3ZpZGU6IGFuZ3VsYXIuYXV0by5JUHJvdmlkZVNlcnZpY2U7XG5cbiAgICAvLyBAbmdJbmplY3RcbiAgICBjb25zdHJ1Y3RvcigkcHJvdmlkZTogYW5ndWxhci5hdXRvLklQcm92aWRlU2VydmljZSkge1xuICAgICAgICB0aGlzLl9wcm92aWRlID0gJHByb3ZpZGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBsaXN0IG9mIHJlZ2lzdGVyZWQgc3RvcmVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc3RvcmVzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3JlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHNoYXJlZCBzdG9yZS5cbiAgICAgKlxuICAgICAqIFdoZW4gY2hvb3NpbmcgYW4gaWRlbnRpZmllciBmb3IgdGhlIHN0b3JlLCB5b3Ugc2hvdWxkIHdyaXRlIGl0IHVzaW5nXG4gICAgICoga2ViYWItY2FzZSBhbmQgbm90IGluY2x1ZGUgdGhlIHN0cmluZyAnc3RvcmUnIGVpdGhlciBhcyBhIHByZWZpeCBvclxuICAgICAqIGEgc3VmZml4LlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgbWF5IG9ubHkgYmUgY2FsbGVkIGluIHRoZSBhcHBsaWNhdGlvbidzIGNvbmZpZ3VyYXRpb25cbiAgICAgKiBwaGFzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdG9yZUlkIElkZW50aWZpZXIgb2YgdGhlIHNoYXJlZCBzdG9yZSAobXVzdCBiZSBnbG9iYWxseSB1bmlxdWUpXG4gICAgICogQHBhcmFtIGluaXRpYWxTdGF0ZSBPcHRpb25hbCBpbml0aWFsIHN0YXRlIG9mIHRoZSBzaGFyZWQgc3RvcmVcbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlPFQ+KHN0b3JlSWQ6IHN0cmluZywgaW5pdGlhbFN0YXRlOiBUID0gbnVsbCk6IHZvaWQge1xuICAgICAgICBjbGFzcyBFeHRlbmRlZCBleHRlbmRzIFNpbXBsZVNoYXJlZFN0b3JlPFQ+IHtcbiAgICAgICAgICAgIHByb3RlY3RlZCBpbml0aWFsU3RhdGUoKSB7IHJldHVybiBpbml0aWFsU3RhdGU7IH1cbiAgICAgICAgICAgIHByb3RlY3RlZCByZWR1Y2Uoc3RhdGU6IFQsIGFjdGlvbjogQWN0aW9uKTogVCB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVnaXN0ZXI8VD4oc3RvcmVJZCwgRXh0ZW5kZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhIG5ldyBzaGFyZWQgc3RvcmUuIEEgc3RvcmUgd2l0aCB0aGUgc2FtZSBuYW1lIG11c3Qgbm90IGFscmVhZHlcbiAgICAgKiBiZSByZWdpc3RlcmVkLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgbWF5IG9ubHkgYmUgY2FsbGVkIGluIHRoZSBhcHBsaWNhdGlvbidzIGNvbmZpZ3VyYXRpb25cbiAgICAgKiBwaGFzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdG9yZUlkIElkZW50aWZpZXIgb2YgdGhlIHNoYXJlZCBzdG9yZSAobXVzdCBiZSBnbG9iYWxseSB1bmlxdWUpXG4gICAgICogQHBhcmFtIFNoYXJlZCBzdG9yZSBjbGFzc1xuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3RlcjxUPihzdG9yZUlkOiBzdHJpbmcsIHN0b3JlVHlwZTogU2hhcmVkU3RvcmVGYWN0b3J5PFQsIGFueT4pOiB2b2lkIHtcbiAgICAgICAgLy8gUmVnaXN0ZXIgdGhlIHN0b3JlIGFzIGFuIGFuZ3VsYXIgc2VydmljZS4gV2UgdXNlIGZhY3RvcnkgaW5zdGVhZCBvZiBzZXJ2aWNlXG4gICAgICAgIC8vIHNvIHdlIGNhbiBzZXQgdGhlIGBfc3RvcmVJZGAgb24gdGhlIGluc3RhbmNlLlxuICAgICAgICB0aGlzLl9wcm92aWRlLmZhY3RvcnkoXG4gICAgICAgICAgICBzdG9yZUlkVG9TZXJ2aWNlSWQoc3RvcmVJZCksXG4gICAgICAgICAgICAvLyBAbmdJbmplY3RcbiAgICAgICAgICAgICgkaW5qZWN0b3I6IGFuZ3VsYXIuYXV0by5JSW5qZWN0b3JTZXJ2aWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvcmU6IGFueSA9ICRpbmplY3Rvci5pbnN0YW50aWF0ZShzdG9yZVR5cGUpO1xuICAgICAgICAgICAgICAgIHN0b3JlLl9zdG9yZUlkID0gc3RvcmVJZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3N0b3Jlcy5wdXNoKHN0b3JlSWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhIG5ldyBhY3Rpb25zIGNsYXNzLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgbWF5IG9ubHkgYmUgY2FsbGVkIGluIHRoZSBhcHBsaWNhdGlvbidzIGNvbmZpZ3VyYXRpb25cbiAgICAgKiBwaGFzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhY3Rpb25zSWQgSWRlbnRpZmllciBvZiB0aGUgYWN0aW9ucyBjbGFzcyAobXVzdCBiZSBnbG9iYWxseSB1bmlxdWUpXG4gICAgICogQHBhcmFtIEFjdGlvbnMgY2xhc3NcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVnaXN0ZXJBY3Rpb25zKGFjdGlvbnNJZDogc3RyaW5nLCBhY3Rpb25zVHlwZTogQWN0aW9uRmFjdG9yeSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcm92aWRlLnNlcnZpY2UoYWN0aW9uc0lkVG9TZXJ2aWNlSWQoYWN0aW9uc0lkKSwgYWN0aW9uc1R5cGUpO1xuICAgIH1cblxuICAgIC8vIEBuZ0luamVjdFxuICAgIHB1YmxpYyAkZ2V0KCRpbmplY3RvcjogYW5ndWxhci5hdXRvLklJbmplY3RvclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlcik6IFNoYXJlZFN0b3JlTWFuYWdlciB7XG4gICAgICAgIHJldHVybiBuZXcgU2hhcmVkU3RvcmVNYW5hZ2VyKCRpbmplY3RvciwgZGlzcGF0Y2hlciwgdGhpcyk7XG4gICAgfVxufVxuXG4vKipcbiAqIE1hbmFnZXIgb2YgYWxsIHNoYXJlZCBzdG9yZXMgKHNlZSBbW1NoYXJlZFN0b3JlXV0pIGluIGFuIGFwcGxpY2F0aW9uLiBFYWNoIHN0b3JlXG4gKiByZXF1aXJlcyBhIGdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyLCB3aGljaCBpcyBhbHNvIHVzZWQgZHVyaW5nIHN0YXRlIHNlcmlhbGl6YXRpb24uXG4gKlxuICogSW4gb3JkZXIgdG8gdXNlIHNoYXJlZCBzdG9yZXMsIHlvdSBtdXN0IGZpcnN0IGNyZWF0ZSB0aGVtLiBUaGUgYmVzdCB3YXkgdG8gZG9cbiAqIHRoaXMgaXMgaW5zaWRlIHlvdXIgbW9kdWxlJ3MgYGNvbmZpZ2AgZnVuY3Rpb24gYXMgZm9sbG93czpcbiAqIGBgYFxuICogbW9kdWxlLmNvbmZpZygoc2hhcmVkU3RvcmVNYW5hZ2VyUHJvdmlkZXI6IFNoYXJlZFN0b3JlUHJvdmlkZXIpID0+IHtcbiAqICAgICAvLyBDcmVhdGUgdGhlIHNlbGVjdGVkIFJPU0UyIGRhdGEgaXRlbXMgc2hhcmVkIHN0b3JlLlxuICogICAgIHNoYXJlZFN0b3JlTWFuYWdlclByb3ZpZGVyLmNyZWF0ZSgncm9zZTItc2VsZWN0ZWQtZGF0YS1pdGVtJyk7XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIFRoZSBzdG9yZSBtYXkgdGhlbiBiZSB1c2VkIGFzIGlucHV0IHRvIHNoYXJlZCBzdGF0ZSBkZWZpbmVkIG9uIHN0YXRlZnVsXG4gKiBjb21wb25lbnRzIChzZWUgW1tTdGF0ZWZ1bENvbXBvbmVudEJhc2VdXSkgYW5kIGNhbiBhbHNvIGJlIGluamVjdGVkIHVzaW5nXG4gKiBhIHNwZWNpZmljIHRva2VuLiBJZiBhIHN0b3JlIGlzIG5hbWVkIGBteS1uaWNlLWl0ZW1zYCwgaXQgd2lsbCBiZSBpbmplY3RhYmxlXG4gKiBieSB1c2luZyB0aGUgdG9rZW4gYG15TmljZUl0ZW1zU3RvcmVgLlxuICpcbiAqIElmIHlvdSB3aXNoIHRvIGRlZmluZSBzaGFyZWQgc3RvcmVzIHdoaWNoIHN1cHBvcnQgYWRkaXRpb25hbCBhY3Rpb25zLCB5b3VcbiAqIHNob3VsZCBzdWJjbGFzcyBbW1NoYXJlZFN0b3JlXV0gYW5kIHJlZ2lzdGVyIHlvdXIgc3RvcmUgYnkgdXNpbmcgW1tyZWdpc3Rlcl1dXG4gKiBhcyBmb2xsb3dzOlxuICogYGBgXG4gKiBjbGFzcyBDb21wbGV4QWN0aW9ucyB7XG4gKiAgICAgc3RhdGljIEFERF9JVEVNID0gJ2NvbXBsZXgvYWRkX2l0ZW0nO1xuICogICAgIHB1YmxpYyBhZGRJdGVtKHZhbHVlOiB0eXBlcy5TYW1wbGVEYXRhKSB7XG4gKiAgICAgICAgIHJldHVybiB7IHR5cGU6IENvbXBsZXhBY3Rpb25zLkFERF9JVEVNLCBpdGVtOiB2YWx1ZSB9O1xuICogICAgIH1cbiAqIH1cbiAqXG4gKiBjbGFzcyBDb21wbGV4U3RvcmUgZXh0ZW5kcyBTaGFyZWRTdG9yZTx0eXBlcy5TYW1wbGVEYXRhW10sIENvbXBsZXhBY3Rpb25zPiB7XG4gKiAgICAgLy8gQG5nSW5qZWN0XG4gKiAgICAgY29uc3RydWN0b3IoY29tcGxleEFjdGlvbnM6IENvbXBsZXhBY3Rpb25zKSB7XG4gKiAgICAgICAgIHN1cGVyKGNvbXBsZXhBY3Rpb25zKTtcbiAqICAgICB9XG4gKlxuICogICAgIHByb3RlY3RlZCBpbml0aWFsU3RhdGUoKTogdHlwZXMuU2FtcGxlRGF0YVtdIHtcbiAqICAgICAgICAgcmV0dXJuIFtdO1xuICogICAgIH1cbiAqXG4gKiAgICAgcHJvdGVjdGVkIHJlZHVjZShzdGF0ZTogdHlwZXMuU2FtcGxlRGF0YVtdLCBhY3Rpb246IGFueSk6IHZvaWQge1xuICogICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAgICAgICAgICBjYXNlIEFERF9JVEVNOiB7XG4gKiAgICAgICAgICAgICAgICAgcmV0dXJuIF8udW5pb24oc3RhdGUsIGFjdGlvbi5pdGVtKTtcbiAqICAgICAgICAgICAgIH1cbiAqICAgICAgICAgICAgIC8vIC4uLlxuICogICAgICAgICB9XG4gKiAgICAgfVxuICogfVxuICpcbiAqIG1vZHVsZS5jb25maWcoKHNoYXJlZFN0b3JlTWFuYWdlclByb3ZpZGVyOiBTaGFyZWRTdG9yZVByb3ZpZGVyKSA9PiB7XG4gKiAgICAgc2hhcmVkU3RvcmVNYW5hZ2VyUHJvdmlkZXIucmVnaXN0ZXJBY3Rpb25zKCdjb21wbGV4JywgQ29tcGxleEFjdGlvbnMpO1xuICogICAgIHNoYXJlZFN0b3JlTWFuYWdlclByb3ZpZGVyLnJlZ2lzdGVyKCdjb21wbGV4JywgQ29tcGxleFN0b3JlKTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogV2hlbiBjcmVhdGluZyBhIG5ldyBzaGFyZWQgc3RvcmUsIGEgZ29vZCBkZXNpZ24gcHJhY3RpY2UgaXMgdG8gc2VwYXJhdGVcbiAqIGFjdGlvbnMgaW50byB0aGUgYGFjdGlvbnNgIGRpcmVjdG9yeSBhbmQgaW1wbGVtZW50IGFjdGlvbnMgYXMgbWV0aG9kcyBvblxuICogdGhlIGFjdGlvbnMgY2xhc3MgbmFtZWQgYWZ0ZXIgeW91ciBzdG9yZSAoZWcuIGZvciBzdG9yZSBgRm9vU3RvcmVgIHB1dFxuICogYWN0aW9ucyBpbnRvIGBGb29BY3Rpb25zYCkuXG4gKlxuICogU3RvcmVzIHRoZW1zZWx2ZXMgc2hvdWxkIG9ubHkgaW1wbGVtZW50IHRoZSBzdGF0ZSBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdHlcbiAqIGFuZCBtb3N0IGJ1c2luZXNzIGxvZ2ljIHNob3VsZCBiZSBjb250YWluZWQgaW4gdGhlIGFjdGlvbnMgY2xhc3MuIEZvclxuICogZXhhbXBsZSwgaWYgYWN0aW9ucyByZXF1aXJlIHNvbWUgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMgdG8gYmUgcGVyZm9ybWVkXG4gKiBvbiBhIHJlbW90ZSBiYWNrZW5kIGFsbCB0aGlzIGZ1bmN0aW9uYWxpdHkgc2hvdWxkIGJlIHB1dCBpbnRvIHRoZSBhY3Rpb25zXG4gKiBjbGFzcyBhbmQgbm90IGludG8gdGhlIHN0b3JlLlxuICpcbiAqIEFsbCBhY3Rpb25zIGNsYXNzZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgdmlhIHRoZSBbW1NoYXJlZFN0b3JlUHJvdmlkZXJdXVxuICogYW5kIHN1cHBvcnQgQW5ndWxhciBkZXBlbmRlbmN5IGluamVjdGlvbi4gQWN0aW9ucyBjbGFzc2VzIGFyZSBpbmplY3RhYmxlXG4gKiB1bmRlciB0aGUgdG9rZW4gYGlkQWN0aW9uc2Agd2hlcmUgdGhlIGBpZGAgcGFydCBpcyB0aGUgdmFsdWUgZGVmaW5lZCBieVxuICogYGFjdGlvbnNJZGAsIGZvcm1hdHRlZCBpbiBjYW1lbENhc2UuIFRoZSBjb25zdHJ1Y3RvciBvZiBhbiBhY3Rpb25zXG4gKiBjbGFzcyBtYXkgYWxzbyBpbmplY3Qgb3RoZXIgZGVwZW5kZW5jaWVzLlxuICpcbiAqIEZvciBjb252ZW5pZW5jZSwgeW91IG1heSBpbmplY3QgeW91ciBhY3Rpb25zIGNsYXNzIGluIHlvdXIgc2hhcmVkIHN0b3JlXG4gKiBjbGFzcyB1bmRlciB0aGUgcHVibGljIGF0dHJpYnV0ZSBgYWN0aW9uc2AuIFRoaXMgd2F5IG9uZSBtYXkgZ2V0IHRoZVxuICogYWN0aW9ucyBjbGFzcyBzaW1wbHkgYnkgYWNjZXNzaW5nIGBzdG9yZS5hY3Rpb25zYCB3aGVuIGdpdmVuIGEgc2hhcmVkXG4gKiBzdG9yZSBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNoYXJlZFN0b3JlTWFuYWdlciB7XG4gICAgLy8vIFNoYXJlZCBzdG9yZSBwcm92aWRlci5cbiAgICBwcml2YXRlIF9wcm92aWRlcjogU2hhcmVkU3RvcmVQcm92aWRlcjtcbiAgICAvLy8gRGlzcGF0Y2hlci5cbiAgICBwcml2YXRlIF9kaXNwYXRjaGVyOiBEaXNwYXRjaGVyO1xuICAgIC8vLyBBbmd1bGFyIGluamVjdG9yLlxuICAgIHByaXZhdGUgX2luamVjdG9yOiBhbmd1bGFyLmF1dG8uSUluamVjdG9yU2VydmljZTtcblxuICAgIC8vIEBuZ0luamVjdFxuICAgIGNvbnN0cnVjdG9yKCRpbmplY3RvcjogYW5ndWxhci5hdXRvLklJbmplY3RvclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlcixcbiAgICAgICAgICAgICAgICBzaGFyZWRTdG9yZU1hbmFnZXJQcm92aWRlcjogU2hhcmVkU3RvcmVQcm92aWRlcikge1xuICAgICAgICB0aGlzLl9wcm92aWRlciA9IHNoYXJlZFN0b3JlTWFuYWdlclByb3ZpZGVyO1xuICAgICAgICB0aGlzLl9pbmplY3RvciA9ICRpbmplY3RvcjtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoZXIuc2V0RGlzcGF0Y2hlcih0aGlzLl9kaXNwYXRjaC5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIHN0b3JlLiBJdCBpcyBhbiBlcnJvciB0byByZXF1ZXN0IGEgc3RvcmVcbiAgICAgKiB3aGljaCBkb2Vzbid0IGV4aXN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0b3JlSWQgSWRlbnRpZmllciBvZiB0aGUgc2hhcmVkIHN0b3JlXG4gICAgICogQHJldHVybiBTaGFyZWQgc3RvcmUgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3RvcmU8VD4oc3RvcmVJZDogc3RyaW5nKTogU2hhcmVkU3RvcmU8VCwgYW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbmplY3Rvci5nZXQ8U2hhcmVkU3RvcmU8VCwgYW55Pj4oc3RvcmVJZFRvU2VydmljZUlkKHN0b3JlSWQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwYXRjaGVzIGFuIGFjdGlvbiB0byBhbGwgc2hhcmVkIHN0b3Jlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhY3Rpb24gQWN0aW9uIHRvIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHVibGljIGRpc3BhdGNoKGFjdGlvbjogQWN0aW9uIHwgVGh1bmspOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5kaXNwYXRjaChhY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludGVybmFsIGdsb2JhbCBkaXNwYXRjaCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9kaXNwYXRjaChhY3Rpb246IEFjdGlvbik6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IHN0b3JlSWQgb2YgdGhpcy5fcHJvdmlkZXIuc3RvcmVzKSB7XG4gICAgICAgICAgICB0aGlzLmdldFN0b3JlKHN0b3JlSWQpLl9kaXNwYXRjaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VyaWFsaXplcyB0aGUgdmFsdWVzIG9mIGFsbCBzaGFyZWQgc3RvcmVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzYXZlU3RhdGUoKTogYW55IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHN0b3JlSWQgb2YgdGhpcy5fcHJvdmlkZXIuc3RvcmVzKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmdldFN0b3JlKHN0b3JlSWQpLnNhdmVWYWx1ZSgpO1xuICAgICAgICAgICAgaWYgKGlzSnNvbmFibGUodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W3N0b3JlSWRdID0gdmFsdWUudG9KU09OKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtzdG9yZUlkXSA9IGFuZ3VsYXIuY29weSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWRzIHNlcmlhbGl6ZWQgdmFsdWVzIG9mIGFsbCBzaGFyZWQgc3RvcmVzLiBFeGlzdGluZyB2YWx1ZXMgYXJlIG92ZXJ3cml0dGVuLlxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkU3RhdGUoc3RhdGU6IGFueSk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IHN0b3JlSWQgb2YgdGhpcy5fcHJvdmlkZXIuc3RvcmVzKSB7XG4gICAgICAgICAgICBpZiAoIShzdG9yZUlkIGluIHN0YXRlKSkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc3RhdGVbc3RvcmVJZF07XG4gICAgICAgICAgICB0aGlzLmdldFN0b3JlKHN0b3JlSWQpLmRpc3BhdGNoKHt0eXBlOiBBY3Rpb25zLlNFVCwgdmFsdWU6IHZhbHVlfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgQW5ndWxhciBzZXJ2aWNlIGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBpbmplY3QgYVxuICogc3RvcmUgdmlhIGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuICpcbiAqIEBwYXJhbSBzdG9yZUlkIFN0b3JlIGlkZW50aWZpZXJcbiAqL1xuZnVuY3Rpb24gc3RvcmVJZFRvU2VydmljZUlkKHN0b3JlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIF8uY2FtZWxDYXNlKGAke3N0b3JlSWR9LXN0b3JlYCk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgQW5ndWxhciBzZXJ2aWNlIGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBpbmplY3QgYW5cbiAqIGFjdGlvbnMgb2JqZWN0IHZpYSBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAqXG4gKiBAcGFyYW0gYWN0aW9uc0lkIEFjdGlvbnMgb2JqZWN0IGlkZW50aWZpZXJcbiAqL1xuZnVuY3Rpb24gYWN0aW9uc0lkVG9TZXJ2aWNlSWQoYWN0aW9uc0lkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBfLmNhbWVsQ2FzZShgJHthY3Rpb25zSWR9LWFjdGlvbnNgKTtcbn1cblxuY29uc3QgYW5ndWxhck1vZHVsZTogYW5ndWxhci5JTW9kdWxlID0gYW5ndWxhci5tb2R1bGUoJ3Jlc29sd2Uuc2VydmljZXMuc2hhcmVkX3N0b3JlJywgW10pO1xuXG4vLyBSZWdpc3RlciBpbmplY3RhYmxlIHNlcnZpY2VzLlxuYW5ndWxhck1vZHVsZS5wcm92aWRlcignc2hhcmVkU3RvcmVNYW5hZ2VyJywgU2hhcmVkU3RvcmVQcm92aWRlcik7XG5hbmd1bGFyTW9kdWxlLnNlcnZpY2UoJ2Rpc3BhdGNoZXInLCBEaXNwYXRjaGVyKTtcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL3NoYXJlZF9zdG9yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBNEI7QUFDNUIsdUJBQXlCO0FBQ3pCLGlDQUFtQztBQUVuQyxzQ0FBeUM7QUFDekMsOENBQWdEO0FBOEJoRDtJQUFBO0lBTUEsQ0FBQztJQUhVLHFCQUFHLEdBQVYsVUFBVyxLQUFVO1FBQ2pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLE9BQUEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFKRCwrREFBK0Q7SUFDakQsV0FBRyxHQUFzQixnQkFBZ0IsQ0FBQztJQUk1RCxjQUFDO0NBTkQsQUFNQyxJQUFBO0FBTlksMEJBQU87QUFRcEI7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNIO0lBT0kscUJBQVksT0FBVztRQUpmLGFBQVEsR0FBeUMsRUFBRSxDQUFDO1FBS3hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBRXhCLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBS0Qsc0JBQVcsZ0NBQU87UUFIbEI7O1dBRUc7YUFDSDtZQUNJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN6QixDQUFDOzs7T0FBQTtJQUtELHNCQUFXLGdDQUFPO1FBSGxCOztXQUVHO2FBQ0g7WUFDSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7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QUksT0FBTyxXQUFRLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLG9CQUFvQixDQUFDLFNBQWlCO0lBQzNDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBSSxTQUFTLGFBQVUsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxJQUFNLGFBQWEsR0FBb0IsT0FBTyxDQUFDLE1BQU0sQ0FBQywrQkFBK0IsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUUzRixnQ0FBZ0M7QUFDaEMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2xFLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDIiwiZmlsZSI6ImNvcmUvc2hhcmVkX3N0b3JlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgUnggZnJvbSAncngnO1xuaW1wb3J0ICogYXMgYW5ndWxhciBmcm9tICdhbmd1bGFyJztcblxuaW1wb3J0IHtpc0pzb25hYmxlfSBmcm9tICcuLi91dGlscy9sYW5nJztcbmltcG9ydCAqIGFzIGltbXV0YWJsZSBmcm9tICcuLi91dGlscy9pbW11dGFibGUnO1xuXG4vKipcbiAqIEEgc2hhcmVkIHN0b3JlIGFjdGlvbiBjb250YWlucyBhIGB0eXBlYCBwcm9wZXJ0eSBhbmQgYW55IG51bWJlciBvZiBvdGhlclxuICogY3VzdG9tIHByb3BlcnRpZXMuIEFjdGlvbiB0eXBlcyBzdGFydGluZyB3aXRoIGBAQGludGVybmFsL2AgYXJlIHJlc2VydmVkXG4gKiBmb3IgaW50ZXJuYWwgdXNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIFtwcm9wZXJ0eU5hbWU6IHN0cmluZ106IGFueTtcbn1cblxuLy8gdHNsaW50OmRpc2FibGU6bm8tc2hhZG93ZWQtdmFyaWFibGVcbnR5cGUgTWV0aG9kUmV0dXJuczxBY3Rpb25zPiA9IEFjdGlvbnMgZXh0ZW5kcyB7IFtrZXkgaW4ga2V5b2YgQWN0aW9uc106ICgoKSA9PiBpbmZlciBSZXR1cm4pIHwgaW5mZXIgRWxzZSB9ID8gUmV0dXJuIDogbmV2ZXI7XG50eXBlIEZpbHRlckFjdGlvbnM8UmV0dXJuPiA9IFJldHVybiBleHRlbmRzIHsgdHlwZTogaW5mZXIgUiB9ID8gUmV0dXJuIDogbmV2ZXI7XG5leHBvcnQgdHlwZSBHZXRBY3Rpb25zPEFjdGlvbnM+ID0gRmlsdGVyQWN0aW9uczxNZXRob2RSZXR1cm5zPEFjdGlvbnM+PiB8IHsgdHlwZTogJy4uLicgfTtcbi8vIHRzbGludDplbmFibGU6bm8tc2hhZG93ZWQtdmFyaWFibGVcblxuLyoqXG4gKiBBIHRodW5rIGlzIGEgZnVuY3Rpb24sIHdoaWNoIG1lZGlhdGVzIHRoZSBkaXNwYXRjaCBvZiBhbiBhY3Rpb24uIEl0IG1heVxuICogYmUgZGlzcGF0Y2hlZCBpbiB0aGUgc2FtZSB3YXkgYXMgYW4gYWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRodW5rIHtcbiAgICAoZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciwgZ2V0U3RhdGU6ICgpID0+IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTdG9yZVF1ZXJ5PFQsIFU+IHtcbiAgICAoc3RhdGU6IFJ4Lk9ic2VydmFibGU8VD4pOiBSeC5PYnNlcnZhYmxlPFU+O1xufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9ucyB7XG4gICAgLy8vIEludGVybmFsIGFjdGlvbiBmb3Igc2V0dGluZyB0aGlzIHN0b3JlIHRvIGEgc3BlY2lmaWMgdmFsdWUuXG4gICAgcHVibGljIHN0YXRpYyBTRVQgPSA8J0BAaW50ZXJuYWwvU0VUJz4gJ0BAaW50ZXJuYWwvU0VUJztcbiAgICBwdWJsaWMgc2V0KHZhbHVlOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogQWN0aW9ucy5TRVQsIHZhbHVlIH07XG4gICAgfVxufVxuXG4vKipcbiAqIEEgc2hhcmVkIHN0b3JlIHJlcHJlc2VudHMgc3RhdGUgdGhhdCBpcyBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBjb21wb25lbnRzIGluXG4gKiBhIHByZWRpY3RhYmxlIHdheS4gQ29tcG9uZW50cyB1cGRhdGUgdGhlIHN0b3JlIGJ5IGRpc3BhdGNoaW5nIGFjdGlvbnMgdG9cbiAqIGl0IHVzaW5nIHRoZSBgZGlzcGF0Y2hgIG1ldGhvZC5cbiAqXG4gKiBFYWNoIHNoYXJlZCBzdG9yZSBhbHNvIHByb3ZpZGVzIGEgd2F5IGZvciB0aGUgY29tcG9uZW50cyB0byBzdWJzY3JpYmUgdG8gYW55XG4gKiBjaGFuZ2VzIGluIHRoZSBzdG9yZSdzIHN0YXRlLlxuICpcbiAqIENvbnNpZGVyIGRlZmluaW5nIGFjdGlvbnMgZm9yIHVzZSBpbiBhIHNoYXJlZCBzdG9yZSBzZXBhcmF0ZWx5IGZyb20gdGhlIHN0b3JlLFxuICogaW4gdGhlIGBhY3Rpb25zYCBzdWJkaXJlY3RvcnkuIFNlZSBbW1NoYXJlZFN0b3JlTWFuYWdlcl1dIGZvciBkZXRhaWxzLlxuICpcbiAqIERvbid0IGZvcmdldCB0byBjYWxsIGNvbnN0cnVjdG9yIHdpdGggYWN0aW9ucyBhcyBhbiBhcmd1bWVudCB3aGVuIGV4dGVuZGluZ1xuICogdGhpcyBjbGFzcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNoYXJlZFN0b3JlPFQsIFU+IHtcbiAgICBwcml2YXRlIF9zdWJqZWN0OiBSeC5CZWhhdmlvclN1YmplY3Q8VD47XG4gICAgcHJpdmF0ZSBfZGlzcGF0Y2hlcjogRGlzcGF0Y2hlcjtcbiAgICBwcml2YXRlIF9xdWVyaWVzOiB7W25hbWU6IHN0cmluZ106IFJ4Lk9ic2VydmFibGU8YW55Pn0gPSB7fTtcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBVO1xuICAgIHByaXZhdGUgX3N0b3JlSWQ6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGFjdGlvbnM/OiBVKSB7XG4gICAgICAgIHRoaXMuX3N1YmplY3QgPSBuZXcgUnguQmVoYXZpb3JTdWJqZWN0KHRoaXMuaW5pdGlhbFN0YXRlKCkpO1xuICAgICAgICB0aGlzLl9hY3Rpb25zID0gYWN0aW9ucztcblxuICAgICAgICAvLyBDcmVhdGUgYSBsb2NhbCBkaXNwYXRjaGVyLlxuICAgICAgICB0aGlzLl9kaXNwYXRjaGVyID0gbmV3IERpc3BhdGNoZXIoKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2hlci5zZXREaXNwYXRjaGVyKHRoaXMuX2Rpc3BhdGNoLmJpbmQodGhpcyksIHRoaXMudmFsdWUuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIHNoYXJlZCBzdG9yZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN0b3JlSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3JlSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBzdG9yZSBhY3Rpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYWN0aW9ucygpOiBVIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW50ZXJuYWwgZGlzcGF0Y2hlciBpbXBsZW1lbnRhdGlvbi5cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoaXMgbWV0aG9kIGlzIHB1YmxpYyBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byBkZWZpbmUgcHJpdmF0ZVxuICAgICAqIGJ1dCBhY2Nlc3NpYmxlIHRvIG90aGVyIGNsYXNzZXMgd2l0aGluIHRoaXMgbW9kdWxlIGluIFR5cGVTY3JpcHQuXG4gICAgICovXG4gICAgcHVibGljIF9kaXNwYXRjaChhY3Rpb246IEFjdGlvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBleGlzdGluZ1ZhbHVlID0gdGhpcy52YWx1ZSgpO1xuICAgICAgICBsZXQgcmVkdWNlcjogKHZhbHVlOiBULCBhY3Rpb246IEFjdGlvbikgPT4gVDtcbiAgICAgICAgaWYgKF8uc3RhcnRzV2l0aChhY3Rpb24udHlwZSwgJ0BAaW50ZXJuYWwvJykpIHtcbiAgICAgICAgICAgIHJlZHVjZXIgPSB0aGlzLl9yZWR1Y2VJbnRlcm5hbC5iaW5kKHRoaXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVkdWNlciA9IHRoaXMucmVkdWNlLmJpbmQodGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbmV3VmFsdWUgPSByZWR1Y2VyKGV4aXN0aW5nVmFsdWUsIGFjdGlvbik7XG4gICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG5ld1ZhbHVlKSkgcmV0dXJuO1xuXG4gICAgICAgIGlmIChhbmd1bGFyLmVxdWFscyhleGlzdGluZ1ZhbHVlLCBuZXdWYWx1ZSkpIHJldHVybjtcbiAgICAgICAgdGhpcy5fc3ViamVjdC5vbk5leHQoaW1tdXRhYmxlLm1ha2VJbW11dGFibGUobmV3VmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwYXRjaGVzIGFuIGFjdGlvbiB0byB0aGlzIHNoYXJlZCBzdG9yZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhY3Rpb24gQWN0aW9uIHRvIGRpc3BhdGNoXG4gICAgICovXG4gICAgcHVibGljIGRpc3BhdGNoKGFjdGlvbjogR2V0QWN0aW9uczxVPiB8IEdldEFjdGlvbnM8QWN0aW9ucz4gfCBUaHVuayk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmRpc3BhdGNoKDxBY3Rpb24gfCBUaHVuaz4gYWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBpbnRlcm5hbCByZWR1Y2UgYWN0aW9ucyBpbXBsZW1lbnRlZCBmb3IgZWFjaCBzaGFyZWQgc3RvcmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RhdGUgRXhpc3Rpbmcgc2hhcmVkIHN0b3JlIHN0YXRlXG4gICAgICogQHBhcmFtIGFjdGlvbiBBY3Rpb24gdG8gcGVyZm9ybVxuICAgICAqIEByZXR1cm4gTmV3IHNoYXJlZCBzdG9yZSBzdGF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3JlZHVjZUludGVybmFsKHN0YXRlOiBULCBhY3Rpb246IEFjdGlvbik6IFQge1xuICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEFjdGlvbnMuU0VUOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFN0YXRlID0gYWN0aW9uWyd2YWx1ZSddO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9uU3RhdGVMb2FkKHN0YXRlLCBuZXh0U3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIC8vIERvIG5vdGhpbmcuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgZ2l2ZW4gYWN0aW9uIG9uIHRoZSB1bmRlcmx5aW5nIHN0YXRlLlxuICAgICAqXG4gICAgICogU3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gaW1wbGVtZW50IGFyYml0cmFyeSBjb21wbGV4XG4gICAgICogYWN0aW9ucyBvbiB0aGUgZGF0YSBzdG9yZS4gVGhpcyBtZXRob2QgTVVTVCBOT1QgbXV0YXRlIHRoZSBleGlzdGluZ1xuICAgICAqIHN0YXRlLiBJbnN0ZWFkLCBpdCBNVVNUIHJldHVybiBhbiBpbW11dGFibGUgY29weS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBFeGlzdGluZyBzaGFyZWQgc3RvcmUgc3RhdGVcbiAgICAgKiBAcGFyYW0gYWN0aW9uIE9wZXJhdGlvbiB0byBwZXJmb3JtXG4gICAgICogQHJldHVybiBOZXcgc2hhcmVkIHN0b3JlIHN0YXRlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlZHVjZShzdGF0ZTogVCwgYWN0aW9uOiBHZXRBY3Rpb25zPFU+KTogVDtcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIHRoZSBpbml0aWFsIHN0YXRlIGZvciB0aGlzIHNoYXJlZCBzdG9yZS4gVGhpcyBzdGF0ZSBpc1xuICAgICAqIHVzZWQgd2hlbiB0aGUgc3RvcmUgaXMgaW5pdGlhbGl6ZWQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGluaXRpYWxTdGF0ZSgpOiBUO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgZ2V0cyBjYWxsZWQgd2hlbiB0aGUgZGF0YSBzdG9yZSdzIHN0YXRlIGlzIGxvYWRlZCBmcm9tXG4gICAgICogYW4gZXh0ZXJuYWwgc291cmNlICh3aGVuIHRoZSBTRVQgYWN0aW9uIGlzIGRpc3BhdGNoZWQgdG8gdGhlIHN0b3JlKS5cbiAgICAgKlxuICAgICAqIEl0IGlzIGNhbGxlZCBiZWZvcmUgdGhlIG5ldyBzdGF0ZSBoYXMgYmVlbiBzZXQuIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uXG4gICAgICogZG9lcyBub3RoaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0YXRlIE9sZCBzdGF0ZVxuICAgICAqIEBwYXJhbSBuZXh0U3RhdGUgTmV3IHN0YXRlXG4gICAgICogQHJldHVybiBQb3NzaWJseSBtb2RpZmllZCBzdGF0ZSB0aGF0IHNob3VsZCBiZSB1c2VkIGluc3RlYWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25TdGF0ZUxvYWQoc3RhdGU6IFQsIG5leHRTdGF0ZTogVCk6IFQge1xuICAgICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgaGVscGVyIG1ldGhvZCBmb3IgZGVmaW5pbmcgc2hhcmVkIHN0b3JlIHF1ZXJpZXMuIElmIHRoZSBxdWVyeSBpcyBhbHJlYWR5XG4gICAgICogZGVmaW5lZCwgdGhlIGV4aXN0aW5nIG9ic2VydmFibGUgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSBRdWVyeSBuYW1lXG4gICAgICogQHBhcmFtIHF1ZXJ5IFF1ZXJ5IGZ1bmN0aW9uXG4gICAgICogQHJldHVybiBSZXN1bHRpbmcgcXVlcnkgb2JzZXJ2YWJsZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBkZWZpbmVRdWVyeTxWPihuYW1lOiBzdHJpbmcsIHF1ZXJ5OiBTaGFyZWRTdG9yZVF1ZXJ5PFQsIFY+KTogUnguT2JzZXJ2YWJsZTxWPiB7XG4gICAgICAgIGxldCBvYnNlcnZhYmxlOiBSeC5PYnNlcnZhYmxlPFY+ID0gdGhpcy5fcXVlcmllc1tuYW1lXTtcbiAgICAgICAgaWYgKG9ic2VydmFibGUpIHJldHVybiBvYnNlcnZhYmxlO1xuXG4gICAgICAgIG9ic2VydmFibGUgPSB0aGlzLl9xdWVyaWVzW25hbWVdID0gdGhpcy5vYnNlcnZhYmxlKCkubGV0KHF1ZXJ5KS5kaXN0aW5jdFVudGlsQ2hhbmdlZCgpO1xuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIHN0b3JlZCBpbiB0aGUgc3RvcmUuXG4gICAgICpcbiAgICAgKiBZb3UgTVVTVCBlbnN1cmUgdGhhdCB0aGUgcmVzdWx0aW5nIG9iamVjdCBpcyBOT1QgbXV0YXRlZCBpbiBhbnkgd2F5LiBBbnlcbiAgICAgKiBtdXRhdGlvbiBtYXkgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yLlxuICAgICAqL1xuICAgIHB1YmxpYyB2YWx1ZSgpOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgb2YgdGhlIHN0b3JlJ3MgdmFsdWUuXG4gICAgICpcbiAgICAgKiBZb3UgTVVTVCBlbnN1cmUgdGhhdCB0aGUgb2JzZXJ2ZWQgdmFsdWUgaXMgTk9UIG11dGF0ZWQgaW4gYW55IHdheS4gQW55XG4gICAgICogbXV0YXRpb24gbWF5IGNhdXNlIHVuZGVmaW5lZCBiZWhhdmlvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgb2JzZXJ2YWJsZSgpOiBSeC5PYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1YmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHZhbHVlIHRoYXQgc2hvdWxkIGJlIHVzZWQgd2hlbiBzYXZpbmcgc3RvcmUgc3RhdGUuXG4gICAgICpcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIHdpbGwgcmV0dXJuIHRoZSBzYW1lIGFzIFtbdmFsdWVdXS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2F2ZVZhbHVlKCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSgpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBbW1NpbXBsZVNoYXJlZFN0b3JlXV0gaXMgYSBoZWxwZXIgY2xhc3MgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIHR5cGUgaW4gY29uanVuY3Rpb24gd2l0aFxuICogW1tTaGFyZWRTdG9yZVByb3ZpZGVyXV0ncyBgY3JlYXRlYCBtZXRob2Qgd2hlcmUgb25seSBTRVQgYWN0aW9uIGlzIHVzZWQuXG4gKlxuICogSW4gdGhpcyBjYXNlIG5vIHN1YmNsYXNzaW5nIG9mIHN0b3JlIGFuZCBhY3Rpb25zIGlzIG5lZWRlZCBiZWNhdXNlIG9ubHkgU0VUIGFjdGlvbiBpcyB1c2VkLlxuICogVGhpcyBpcyBjb252ZW5pZW50IGZvciB1c2UgY2FzZXMgd2hlcmUgeW91IG9ubHkgbmVlZCB0byBzZXQgYSB2YWx1ZSB0aGF0IHlvdSBjYW4gc3Vic2NyaWJlXG4gKiB0byBmcm9tIG90aGVyIGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaW1wbGVTaGFyZWRTdG9yZTxUPiBleHRlbmRzIFNoYXJlZFN0b3JlPFQsIHR5cGVvZiB1bmRlZmluZWQ+IHsgfVxuXG4vKipcbiAqIFVzZWQgdG8gZGlzcGF0Y2ggYWN0aW9ucyB0byBzaGFyZWQgc3RvcmVzLlxuICovXG5leHBvcnQgY2xhc3MgRGlzcGF0Y2hlciBleHRlbmRzIFJ4LlN1YmplY3Q8QWN0aW9uPiB7XG4gICAgcHJpdmF0ZSBfZ2V0U3RhdGU6ICgpID0+IGFueSA9ICgpID0+IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyZXMgYSBkaXNwYXRjaGVyIGZ1bmN0aW9uIGZvciB0aGlzIGRpc3BhdGNoZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGlzcGF0Y2hlciBUaGUgZGlzcGF0Y2hlciBmdW5jdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBzZXREaXNwYXRjaGVyKGRpc3BhdGNoZXI6IChhY3Rpb246IEFjdGlvbikgPT4gdm9pZCwgZ2V0U3RhdGU/OiAoKSA9PiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gVGhlIGRpc3BhdGNoZXIgaXMgdXNlZCB0byBkaXNwYXRjaCBhbGwgYWN0aW9ucyB1c2luZyBhIHF1ZXVlLCBzbyBhY3Rpb25zXG4gICAgICAgIC8vIG1heSBpbnZva2UgdGhlIGRpc3BhdGNoIG1ldGhvZCB3aXRob3V0IGNhdXNpbmcgcmVjdXJzaW9uLiBUaGUgY3VycmVudFRocmVhZFxuICAgICAgICAvLyBzY2hlZHVsZXIgcHV0cyBhbGwgcGVuZGluZyBpdGVtcyBpbnNpZGUgYSBxdWV1ZSwgd2hpY2ggaXMgZGlzcGF0Y2hlZCBhZnRlclxuICAgICAgICAvLyByZXR1cm5pbmcgZnJvbSBhY3RpdmUgZGlzcGF0Y2guXG4gICAgICAgIHRoaXMub2JzZXJ2ZU9uKFJ4LlNjaGVkdWxlci5jdXJyZW50VGhyZWFkKS5zdWJzY3JpYmUoZGlzcGF0Y2hlcik7XG4gICAgICAgIGlmIChnZXRTdGF0ZSkgdGhpcy5fZ2V0U3RhdGUgPSBnZXRTdGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwYXRjaGVzIGFuIGFjdGlvbiB2aWEgdGhpcyBkaXNwYXRjaGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBkaXNwYXRjaChhY3Rpb246IEFjdGlvbiB8IFRodW5rKTogYW55IHtcbiAgICAgICAgaWYgKF8uaXNGdW5jdGlvbihhY3Rpb24pKSB7XG4gICAgICAgICAgICAvLyBBIHRodW5rIGhhcyBiZWVuIHBhc3NlZC4gRXhlY3V0ZSBpdCB3aXRoIHRoZSBkaXNwYXRjaGVyIGFyZ3VtZW50IGFuZFxuICAgICAgICAgICAgLy8gcmV0dXJuIHRoZSByZXN1bHQuXG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uKHRoaXMsIHRoaXMuX2dldFN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25OZXh0KGFjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU3RvcmVGYWN0b3J5PFQsIFU+IHtcbiAgICBuZXcgKC4uLmFyZ3MpOiBTaGFyZWRTdG9yZTxULCBVPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25GYWN0b3J5IHtcbiAgICBuZXcgKC4uLmFyZ3MpOiBhbnk7XG59XG5cbi8qKlxuICogU2hhcmVkIHN0b3JlIHByb3ZpZGVyLCBlbmFibGluZyByZWdpc3RyYXRpb24gb2Ygc2hhcmVkIHN0b3Jlcy4gQWxsIHN0b3Jlc1xuICogbXVzdCBiZSByZWdpc3RlcmVkIGluIHRoZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIHBoYXNlLlxuICovXG5leHBvcnQgY2xhc3MgU2hhcmVkU3RvcmVQcm92aWRlciB7XG4gICAgLy8vIEEgbGlzdCBvZiByZWdpc3RlcmVkIHN0b3Jlcy5cbiAgICBwcml2YXRlIF9zdG9yZXM6IHN0cmluZ1tdID0gW107XG4gICAgLy8vIFByb3ZpZGUgc2VydmljZS5cbiAgICBwcml2YXRlIF9wcm92aWRlOiBhbmd1bGFyLmF1dG8uSVByb3ZpZGVTZXJ2aWNlO1xuXG4gICAgLy8gQG5nSW5qZWN0XG4gICAgY29uc3RydWN0b3IoJHByb3ZpZGU6IGFuZ3VsYXIuYXV0by5JUHJvdmlkZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fcHJvdmlkZSA9ICRwcm92aWRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgbGlzdCBvZiByZWdpc3RlcmVkIHN0b3Jlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN0b3JlcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdG9yZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBzaGFyZWQgc3RvcmUuXG4gICAgICpcbiAgICAgKiBXaGVuIGNob29zaW5nIGFuIGlkZW50aWZpZXIgZm9yIHRoZSBzdG9yZSwgeW91IHNob3VsZCB3cml0ZSBpdCB1c2luZ1xuICAgICAqIGtlYmFiLWNhc2UgYW5kIG5vdCBpbmNsdWRlIHRoZSBzdHJpbmcgJ3N0b3JlJyBlaXRoZXIgYXMgYSBwcmVmaXggb3JcbiAgICAgKiBhIHN1ZmZpeC5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIG1heSBvbmx5IGJlIGNhbGxlZCBpbiB0aGUgYXBwbGljYXRpb24ncyBjb25maWd1cmF0aW9uXG4gICAgICogcGhhc2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RvcmVJZCBJZGVudGlmaWVyIG9mIHRoZSBzaGFyZWQgc3RvcmUgKG11c3QgYmUgZ2xvYmFsbHkgdW5pcXVlKVxuICAgICAqIEBwYXJhbSBpbml0aWFsU3RhdGUgT3B0aW9uYWwgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgc2hhcmVkIHN0b3JlXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZTxUPihzdG9yZUlkOiBzdHJpbmcsIGluaXRpYWxTdGF0ZTogVCA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY2xhc3MgRXh0ZW5kZWQgZXh0ZW5kcyBTaW1wbGVTaGFyZWRTdG9yZTxUPiB7XG4gICAgICAgICAgICBwcm90ZWN0ZWQgaW5pdGlhbFN0YXRlKCkgeyByZXR1cm4gaW5pdGlhbFN0YXRlOyB9XG4gICAgICAgICAgICBwcm90ZWN0ZWQgcmVkdWNlKHN0YXRlOiBULCBhY3Rpb246IEFjdGlvbik6IFQgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlZ2lzdGVyPFQ+KHN0b3JlSWQsIEV4dGVuZGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYSBuZXcgc2hhcmVkIHN0b3JlLiBBIHN0b3JlIHdpdGggdGhlIHNhbWUgbmFtZSBtdXN0IG5vdCBhbHJlYWR5XG4gICAgICogYmUgcmVnaXN0ZXJlZC5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIG1heSBvbmx5IGJlIGNhbGxlZCBpbiB0aGUgYXBwbGljYXRpb24ncyBjb25maWd1cmF0aW9uXG4gICAgICogcGhhc2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RvcmVJZCBJZGVudGlmaWVyIG9mIHRoZSBzaGFyZWQgc3RvcmUgKG11c3QgYmUgZ2xvYmFsbHkgdW5pcXVlKVxuICAgICAqIEBwYXJhbSBTaGFyZWQgc3RvcmUgY2xhc3NcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVnaXN0ZXI8VD4oc3RvcmVJZDogc3RyaW5nLCBzdG9yZVR5cGU6IFNoYXJlZFN0b3JlRmFjdG9yeTxULCBhbnk+KTogdm9pZCB7XG4gICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBzdG9yZSBhcyBhbiBhbmd1bGFyIHNlcnZpY2UuIFdlIHVzZSBmYWN0b3J5IGluc3RlYWQgb2Ygc2VydmljZVxuICAgICAgICAvLyBzbyB3ZSBjYW4gc2V0IHRoZSBgX3N0b3JlSWRgIG9uIHRoZSBpbnN0YW5jZS5cbiAgICAgICAgdGhpcy5fcHJvdmlkZS5mYWN0b3J5KFxuICAgICAgICAgICAgc3RvcmVJZFRvU2VydmljZUlkKHN0b3JlSWQpLFxuICAgICAgICAgICAgLy8gQG5nSW5qZWN0XG4gICAgICAgICAgICAoJGluamVjdG9yOiBhbmd1bGFyLmF1dG8uSUluamVjdG9yU2VydmljZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlOiBhbnkgPSAkaW5qZWN0b3IuaW5zdGFudGlhdGUoc3RvcmVUeXBlKTtcbiAgICAgICAgICAgICAgICBzdG9yZS5fc3RvcmVJZCA9IHN0b3JlSWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9zdG9yZXMucHVzaChzdG9yZUlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYSBuZXcgYWN0aW9ucyBjbGFzcy5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIG1heSBvbmx5IGJlIGNhbGxlZCBpbiB0aGUgYXBwbGljYXRpb24ncyBjb25maWd1cmF0aW9uXG4gICAgICogcGhhc2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWN0aW9uc0lkIElkZW50aWZpZXIgb2YgdGhlIGFjdGlvbnMgY2xhc3MgKG11c3QgYmUgZ2xvYmFsbHkgdW5pcXVlKVxuICAgICAqIEBwYXJhbSBBY3Rpb25zIGNsYXNzXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyQWN0aW9ucyhhY3Rpb25zSWQ6IHN0cmluZywgYWN0aW9uc1R5cGU6IEFjdGlvbkZhY3RvcnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcHJvdmlkZS5zZXJ2aWNlKGFjdGlvbnNJZFRvU2VydmljZUlkKGFjdGlvbnNJZCksIGFjdGlvbnNUeXBlKTtcbiAgICB9XG5cbiAgICAvLyBAbmdJbmplY3RcbiAgICBwdWJsaWMgJGdldCgkaW5qZWN0b3I6IGFuZ3VsYXIuYXV0by5JSW5qZWN0b3JTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGRpc3BhdGNoZXI6IERpc3BhdGNoZXIpOiBTaGFyZWRTdG9yZU1hbmFnZXIge1xuICAgICAgICByZXR1cm4gbmV3IFNoYXJlZFN0b3JlTWFuYWdlcigkaW5qZWN0b3IsIGRpc3BhdGNoZXIsIHRoaXMpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBNYW5hZ2VyIG9mIGFsbCBzaGFyZWQgc3RvcmVzIChzZWUgW1tTaGFyZWRTdG9yZV1dKSBpbiBhbiBhcHBsaWNhdGlvbi4gRWFjaCBzdG9yZVxuICogcmVxdWlyZXMgYSBnbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciwgd2hpY2ggaXMgYWxzbyB1c2VkIGR1cmluZyBzdGF0ZSBzZXJpYWxpemF0aW9uLlxuICpcbiAqIEluIG9yZGVyIHRvIHVzZSBzaGFyZWQgc3RvcmVzLCB5b3UgbXVzdCBmaXJzdCBjcmVhdGUgdGhlbS4gVGhlIGJlc3Qgd2F5IHRvIGRvXG4gKiB0aGlzIGlzIGluc2lkZSB5b3VyIG1vZHVsZSdzIGBjb25maWdgIGZ1bmN0aW9uIGFzIGZvbGxvd3M6XG4gKiBgYGBcbiAqIG1vZHVsZS5jb25maWcoKHNoYXJlZFN0b3JlTWFuYWdlclByb3ZpZGVyOiBTaGFyZWRTdG9yZVByb3ZpZGVyKSA9PiB7XG4gKiAgICAgLy8gQ3JlYXRlIHRoZSBzZWxlY3RlZCBST1NFMiBkYXRhIGl0ZW1zIHNoYXJlZCBzdG9yZS5cbiAqICAgICBzaGFyZWRTdG9yZU1hbmFnZXJQcm92aWRlci5jcmVhdGUoJ3Jvc2UyLXNlbGVjdGVkLWRhdGEtaXRlbScpO1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBUaGUgc3RvcmUgbWF5IHRoZW4gYmUgdXNlZCBhcyBpbnB1dCB0byBzaGFyZWQgc3RhdGUgZGVmaW5lZCBvbiBzdGF0ZWZ1bFxuICogY29tcG9uZW50cyAoc2VlIFtbU3RhdGVmdWxDb21wb25lbnRCYXNlXV0pIGFuZCBjYW4gYWxzbyBiZSBpbmplY3RlZCB1c2luZ1xuICogYSBzcGVjaWZpYyB0b2tlbi4gSWYgYSBzdG9yZSBpcyBuYW1lZCBgbXktbmljZS1pdGVtc2AsIGl0IHdpbGwgYmUgaW5qZWN0YWJsZVxuICogYnkgdXNpbmcgdGhlIHRva2VuIGBteU5pY2VJdGVtc1N0b3JlYC5cbiAqXG4gKiBJZiB5b3Ugd2lzaCB0byBkZWZpbmUgc2hhcmVkIHN0b3JlcyB3aGljaCBzdXBwb3J0IGFkZGl0aW9uYWwgYWN0aW9ucywgeW91XG4gKiBzaG91bGQgc3ViY2xhc3MgW1tTaGFyZWRTdG9yZV1dIGFuZCByZWdpc3RlciB5b3VyIHN0b3JlIGJ5IHVzaW5nIFtbcmVnaXN0ZXJdXVxuICogYXMgZm9sbG93czpcbiAqIGBgYFxuICogY2xhc3MgQ29tcGxleEFjdGlvbnMge1xuICogICAgIHN0YXRpYyBBRERfSVRFTSA9ICdjb21wbGV4L2FkZF9pdGVtJztcbiAqICAgICBwdWJsaWMgYWRkSXRlbSh2YWx1ZTogdHlwZXMuU2FtcGxlRGF0YSkge1xuICogICAgICAgICByZXR1cm4geyB0eXBlOiBDb21wbGV4QWN0aW9ucy5BRERfSVRFTSwgaXRlbTogdmFsdWUgfTtcbiAqICAgICB9XG4gKiB9XG4gKlxuICogY2xhc3MgQ29tcGxleFN0b3JlIGV4dGVuZHMgU2hhcmVkU3RvcmU8dHlwZXMuU2FtcGxlRGF0YVtdLCBDb21wbGV4QWN0aW9ucz4ge1xuICogICAgIC8vIEBuZ0luamVjdFxuICogICAgIGNvbnN0cnVjdG9yKGNvbXBsZXhBY3Rpb25zOiBDb21wbGV4QWN0aW9ucykge1xuICogICAgICAgICBzdXBlcihjb21wbGV4QWN0aW9ucyk7XG4gKiAgICAgfVxuICpcbiAqICAgICBwcm90ZWN0ZWQgaW5pdGlhbFN0YXRlKCk6IHR5cGVzLlNhbXBsZURhdGFbXSB7XG4gKiAgICAgICAgIHJldHVybiBbXTtcbiAqICAgICB9XG4gKlxuICogICAgIHByb3RlY3RlZCByZWR1Y2Uoc3RhdGU6IHR5cGVzLlNhbXBsZURhdGFbXSwgYWN0aW9uOiBhbnkpOiB2b2lkIHtcbiAqICAgICAgICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICogICAgICAgICAgICAgY2FzZSBBRERfSVRFTToge1xuICogICAgICAgICAgICAgICAgIHJldHVybiBfLnVuaW9uKHN0YXRlLCBhY3Rpb24uaXRlbSk7XG4gKiAgICAgICAgICAgICB9XG4gKiAgICAgICAgICAgICAvLyAuLi5cbiAqICAgICAgICAgfVxuICogICAgIH1cbiAqIH1cbiAqXG4gKiBtb2R1bGUuY29uZmlnKChzaGFyZWRTdG9yZU1hbmFnZXJQcm92aWRlcjogU2hhcmVkU3RvcmVQcm92aWRlcikgPT4ge1xuICogICAgIHNoYXJlZFN0b3JlTWFuYWdlclByb3ZpZGVyLnJlZ2lzdGVyQWN0aW9ucygnY29tcGxleCcsIENvbXBsZXhBY3Rpb25zKTtcbiAqICAgICBzaGFyZWRTdG9yZU1hbmFnZXJQcm92aWRlci5yZWdpc3RlcignY29tcGxleCcsIENvbXBsZXhTdG9yZSk7XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIFdoZW4gY3JlYXRpbmcgYSBuZXcgc2hhcmVkIHN0b3JlLCBhIGdvb2QgZGVzaWduIHByYWN0aWNlIGlzIHRvIHNlcGFyYXRlXG4gKiBhY3Rpb25zIGludG8gdGhlIGBhY3Rpb25zYCBkaXJlY3RvcnkgYW5kIGltcGxlbWVudCBhY3Rpb25zIGFzIG1ldGhvZHMgb25cbiAqIHRoZSBhY3Rpb25zIGNsYXNzIG5hbWVkIGFmdGVyIHlvdXIgc3RvcmUgKGVnLiBmb3Igc3RvcmUgYEZvb1N0b3JlYCBwdXRcbiAqIGFjdGlvbnMgaW50byBgRm9vQWN0aW9uc2ApLlxuICpcbiAqIFN0b3JlcyB0aGVtc2VsdmVzIHNob3VsZCBvbmx5IGltcGxlbWVudCB0aGUgc3RhdGUgbWFuYWdlbWVudCBmdW5jdGlvbmFsaXR5XG4gKiBhbmQgbW9zdCBidXNpbmVzcyBsb2dpYyBzaG91bGQgYmUgY29udGFpbmVkIGluIHRoZSBhY3Rpb25zIGNsYXNzLiBGb3JcbiAqIGV4YW1wbGUsIGlmIGFjdGlvbnMgcmVxdWlyZSBzb21lIGFzeW5jaHJvbm91cyBvcGVyYXRpb25zIHRvIGJlIHBlcmZvcm1lZFxuICogb24gYSByZW1vdGUgYmFja2VuZCBhbGwgdGhpcyBmdW5jdGlvbmFsaXR5IHNob3VsZCBiZSBwdXQgaW50byB0aGUgYWN0aW9uc1xuICogY2xhc3MgYW5kIG5vdCBpbnRvIHRoZSBzdG9yZS5cbiAqXG4gKiBBbGwgYWN0aW9ucyBjbGFzc2VzIHNob3VsZCBiZSByZWdpc3RlcmVkIHZpYSB0aGUgW1tTaGFyZWRTdG9yZVByb3ZpZGVyXV1cbiAqIGFuZCBzdXBwb3J0IEFuZ3VsYXIgZGVwZW5kZW5jeSBpbmplY3Rpb24uIEFjdGlvbnMgY2xhc3NlcyBhcmUgaW5qZWN0YWJsZVxuICogdW5kZXIgdGhlIHRva2VuIGBpZEFjdGlvbnNgIHdoZXJlIHRoZSBgaWRgIHBhcnQgaXMgdGhlIHZhbHVlIGRlZmluZWQgYnlcbiAqIGBhY3Rpb25zSWRgLCBmb3JtYXR0ZWQgaW4gY2FtZWxDYXNlLiBUaGUgY29uc3RydWN0b3Igb2YgYW4gYWN0aW9uc1xuICogY2xhc3MgbWF5IGFsc28gaW5qZWN0IG90aGVyIGRlcGVuZGVuY2llcy5cbiAqXG4gKiBGb3IgY29udmVuaWVuY2UsIHlvdSBtYXkgaW5qZWN0IHlvdXIgYWN0aW9ucyBjbGFzcyBpbiB5b3VyIHNoYXJlZCBzdG9yZVxuICogY2xhc3MgdW5kZXIgdGhlIHB1YmxpYyBhdHRyaWJ1dGUgYGFjdGlvbnNgLiBUaGlzIHdheSBvbmUgbWF5IGdldCB0aGVcbiAqIGFjdGlvbnMgY2xhc3Mgc2ltcGx5IGJ5IGFjY2Vzc2luZyBgc3RvcmUuYWN0aW9uc2Agd2hlbiBnaXZlbiBhIHNoYXJlZFxuICogc3RvcmUgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBTaGFyZWRTdG9yZU1hbmFnZXIge1xuICAgIC8vLyBTaGFyZWQgc3RvcmUgcHJvdmlkZXIuXG4gICAgcHJpdmF0ZSBfcHJvdmlkZXI6IFNoYXJlZFN0b3JlUHJvdmlkZXI7XG4gICAgLy8vIERpc3BhdGNoZXIuXG4gICAgcHJpdmF0ZSBfZGlzcGF0Y2hlcjogRGlzcGF0Y2hlcjtcbiAgICAvLy8gQW5ndWxhciBpbmplY3Rvci5cbiAgICBwcml2YXRlIF9pbmplY3RvcjogYW5ndWxhci5hdXRvLklJbmplY3RvclNlcnZpY2U7XG5cbiAgICAvLyBAbmdJbmplY3RcbiAgICBjb25zdHJ1Y3RvcigkaW5qZWN0b3I6IGFuZ3VsYXIuYXV0by5JSW5qZWN0b3JTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGRpc3BhdGNoZXI6IERpc3BhdGNoZXIsXG4gICAgICAgICAgICAgICAgc2hhcmVkU3RvcmVNYW5hZ2VyUHJvdmlkZXI6IFNoYXJlZFN0b3JlUHJvdmlkZXIpIHtcbiAgICAgICAgdGhpcy5fcHJvdmlkZXIgPSBzaGFyZWRTdG9yZU1hbmFnZXJQcm92aWRlcjtcbiAgICAgICAgdGhpcy5faW5qZWN0b3IgPSAkaW5qZWN0b3I7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaGVyLnNldERpc3BhdGNoZXIodGhpcy5fZGlzcGF0Y2guYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBzdG9yZS4gSXQgaXMgYW4gZXJyb3IgdG8gcmVxdWVzdCBhIHN0b3JlXG4gICAgICogd2hpY2ggZG9lc24ndCBleGlzdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdG9yZUlkIElkZW50aWZpZXIgb2YgdGhlIHNoYXJlZCBzdG9yZVxuICAgICAqIEByZXR1cm4gU2hhcmVkIHN0b3JlIGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIGdldFN0b3JlPFQ+KHN0b3JlSWQ6IHN0cmluZyk6IFNoYXJlZFN0b3JlPFQsIGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5qZWN0b3IuZ2V0PFNoYXJlZFN0b3JlPFQsIGFueT4+KHN0b3JlSWRUb1NlcnZpY2VJZChzdG9yZUlkKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzcGF0Y2hlcyBhbiBhY3Rpb24gdG8gYWxsIHNoYXJlZCBzdG9yZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbiB0byBkaXNwYXRjaFxuICAgICAqL1xuICAgIHB1YmxpYyBkaXNwYXRjaChhY3Rpb246IEFjdGlvbiB8IFRodW5rKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZGlzcGF0Y2goYWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnRlcm5hbCBnbG9iYWwgZGlzcGF0Y2ggaW1wbGVtZW50YXRpb24uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZGlzcGF0Y2goYWN0aW9uOiBBY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCBzdG9yZUlkIG9mIHRoaXMuX3Byb3ZpZGVyLnN0b3Jlcykge1xuICAgICAgICAgICAgdGhpcy5nZXRTdG9yZShzdG9yZUlkKS5fZGlzcGF0Y2goYWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlcmlhbGl6ZXMgdGhlIHZhbHVlcyBvZiBhbGwgc2hhcmVkIHN0b3Jlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2F2ZVN0YXRlKCk6IGFueSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBzdG9yZUlkIG9mIHRoaXMuX3Byb3ZpZGVyLnN0b3Jlcykge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5nZXRTdG9yZShzdG9yZUlkKS5zYXZlVmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChpc0pzb25hYmxlKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtzdG9yZUlkXSA9IHZhbHVlLnRvSlNPTigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbc3RvcmVJZF0gPSBhbmd1bGFyLmNvcHkodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkcyBzZXJpYWxpemVkIHZhbHVlcyBvZiBhbGwgc2hhcmVkIHN0b3Jlcy4gRXhpc3RpbmcgdmFsdWVzIGFyZSBvdmVyd3JpdHRlbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZFN0YXRlKHN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCBzdG9yZUlkIG9mIHRoaXMuX3Byb3ZpZGVyLnN0b3Jlcykge1xuICAgICAgICAgICAgaWYgKCEoc3RvcmVJZCBpbiBzdGF0ZSkpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHN0YXRlW3N0b3JlSWRdO1xuICAgICAgICAgICAgdGhpcy5nZXRTdG9yZShzdG9yZUlkKS5kaXNwYXRjaCh7dHlwZTogQWN0aW9ucy5TRVQsIHZhbHVlOiB2YWx1ZX0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIEFuZ3VsYXIgc2VydmljZSBpZGVudGlmaWVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5qZWN0IGFcbiAqIHN0b3JlIHZpYSBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAqXG4gKiBAcGFyYW0gc3RvcmVJZCBTdG9yZSBpZGVudGlmaWVyXG4gKi9cbmZ1bmN0aW9uIHN0b3JlSWRUb1NlcnZpY2VJZChzdG9yZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBfLmNhbWVsQ2FzZShgJHtzdG9yZUlkfS1zdG9yZWApO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIEFuZ3VsYXIgc2VydmljZSBpZGVudGlmaWVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW5qZWN0IGFuXG4gKiBhY3Rpb25zIG9iamVjdCB2aWEgZGVwZW5kZW5jeSBpbmplY3Rpb24uXG4gKlxuICogQHBhcmFtIGFjdGlvbnNJZCBBY3Rpb25zIG9iamVjdCBpZGVudGlmaWVyXG4gKi9cbmZ1bmN0aW9uIGFjdGlvbnNJZFRvU2VydmljZUlkKGFjdGlvbnNJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXy5jYW1lbENhc2UoYCR7YWN0aW9uc0lkfS1hY3Rpb25zYCk7XG59XG5cbmNvbnN0IGFuZ3VsYXJNb2R1bGU6IGFuZ3VsYXIuSU1vZHVsZSA9IGFuZ3VsYXIubW9kdWxlKCdyZXNvbHdlLnNlcnZpY2VzLnNoYXJlZF9zdG9yZScsIFtdKTtcblxuLy8gUmVnaXN0ZXIgaW5qZWN0YWJsZSBzZXJ2aWNlcy5cbmFuZ3VsYXJNb2R1bGUucHJvdmlkZXIoJ3NoYXJlZFN0b3JlTWFuYWdlcicsIFNoYXJlZFN0b3JlUHJvdmlkZXIpO1xuYW5ndWxhck1vZHVsZS5zZXJ2aWNlKCdkaXNwYXRjaGVyJywgRGlzcGF0Y2hlcik7XG4iXX0= |
export {}; | ||
//# sourceMappingURL=index.spec.d.ts.map |
@@ -10,2 +10,1 @@ /** | ||
export declare function makeImmutable<T>(object: T): T; | ||
//# sourceMappingURL=immutable.d.ts.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var _ = require("lodash"); | ||
/** | ||
@@ -12,2 +13,6 @@ * Makes an object deeply immutable by using Object.freeze. The passed object | ||
function makeImmutable(object) { | ||
if (_.isObject(object)) { | ||
_.each(object, function (property) { return makeImmutable(property); }); | ||
return Object.freeze(object); | ||
} | ||
return object; | ||
@@ -17,2 +22,2 @@ } | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL3V0aWxzL2ltbXV0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixhQUFhLENBQUksTUFBUztJQUV0QyxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBSEQsc0NBR0MiLCJmaWxlIjoiY29yZS91dGlscy9pbW11dGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbi8qKlxuICogTWFrZXMgYW4gb2JqZWN0IGRlZXBseSBpbW11dGFibGUgYnkgdXNpbmcgT2JqZWN0LmZyZWV6ZS4gVGhlIHBhc3NlZCBvYmplY3RcbiAqIHdpbGwgYmUgY2hhbmdlZCBzbyB0aGF0IGl0IHdpbGwgbm93IGJlIGltbXV0YWJsZSBhbmQgdGhlIHNhbWUgb2JqZWN0IHdpbGxcbiAqIGJlIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB7VH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbWFrZSBpbW11dGFibGVcbiAqIEByZXR1cm4ge1R9IFRoZSBzYW1lIG9iamVjdCB0aGF0IHdhcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VJbW11dGFibGU8VD4ob2JqZWN0OiBUKTogVCB7XG4gICAgLy8gQGlmbmRlZiBHRU5KU19QUk9EVUNUSU9OXG4gICAgaWYgKF8uaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICBfLmVhY2gob2JqZWN0LCAocHJvcGVydHkpID0+IG1ha2VJbW11dGFibGUocHJvcGVydHkpKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcmVlemUob2JqZWN0KTtcbiAgICB9XG4gICAgLy8gQGVuZGlmXG5cbiAgICByZXR1cm4gb2JqZWN0O1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL3V0aWxzL2ltbXV0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUE0QjtBQUU1Qjs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsYUFBYSxDQUFJLE1BQVM7SUFDdEMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQUMsUUFBUSxJQUFLLE9BQUEsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUF2QixDQUF1QixDQUFDLENBQUM7UUFDdEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ2hDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQVBELHNDQU9DIiwiZmlsZSI6ImNvcmUvdXRpbHMvaW1tdXRhYmxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIE1ha2VzIGFuIG9iamVjdCBkZWVwbHkgaW1tdXRhYmxlIGJ5IHVzaW5nIE9iamVjdC5mcmVlemUuIFRoZSBwYXNzZWQgb2JqZWN0XG4gKiB3aWxsIGJlIGNoYW5nZWQgc28gdGhhdCBpdCB3aWxsIG5vdyBiZSBpbW11dGFibGUgYW5kIHRoZSBzYW1lIG9iamVjdCB3aWxsXG4gKiBiZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0ge1R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1ha2UgaW1tdXRhYmxlXG4gKiBAcmV0dXJuIHtUfSBUaGUgc2FtZSBvYmplY3QgdGhhdCB3YXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlSW1tdXRhYmxlPFQ+KG9iamVjdDogVCk6IFQge1xuICAgIC8vIEBpZm5kZWYgR0VOSlNfUFJPRFVDVElPTlxuICAgIGlmIChfLmlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgXy5lYWNoKG9iamVjdCwgKHByb3BlcnR5KSA9PiBtYWtlSW1tdXRhYmxlKHByb3BlcnR5KSk7XG4gICAgICAgIHJldHVybiBPYmplY3QuZnJlZXplKG9iamVjdCk7XG4gICAgfVxuICAgIC8vIEBlbmRpZlxuXG4gICAgcmV0dXJuIG9iamVjdDtcbn1cbiJdfQ== |
@@ -57,2 +57,1 @@ /// <reference types="angular" /> | ||
export {}; | ||
//# sourceMappingURL=lang.d.ts.map |
@@ -129,3 +129,2 @@ "use strict"; | ||
} | ||
; | ||
return class_1; | ||
@@ -160,2 +159,2 @@ }()); | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL3V0aWxzL2xhbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQkFBNEI7QUFPNUI7Ozs7R0FJRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxLQUFVO0lBQ3BDLElBQU0sT0FBTyxHQUFrQixLQUFLLENBQUM7SUFDckMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO0FBQ2hFLENBQUM7QUFIRCxzQ0FHQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixZQUFZLENBQUMsS0FBVTtJQUNuQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQztBQUNoRCxDQUFDO0FBRkQsb0NBRUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLEtBQVU7SUFDakMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDN0MsQ0FBQztBQUZELGdDQUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLEtBQVU7SUFDNUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDM0MsQ0FBQztBQUZELHNEQUVDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyxNQUFNLENBQUMsTUFBVyxFQUFFLE1BQVc7SUFDcEMsR0FBRztRQUNDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJO1lBQzVDLElBQUksSUFBSSxLQUFLLGFBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsd0JBQXdC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ICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgaW1tdXRhYmxlIGZyb20gJ2ltbXV0YWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbmFibGUge1xuICAgIHRvSlNPTigpOiBhbnk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIHByb21pc2UuXG4gKlxuICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIGNoZWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2VMaWtlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBQcm9taXNlPGFueT4gfCBhbmd1bGFyLklQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHByb21pc2UgPSA8UHJvbWlzZTxhbnk+PiB2YWx1ZTtcbiAgICByZXR1cm4gISFwcm9taXNlLnRoZW4gJiYgdHlwZW9mIHByb21pc2UudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIG9ic2VydmFibGUuXG4gKlxuICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIGNoZWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09ic2VydmFibGUodmFsdWU6IGFueSk6IHZhbHVlIGlzIFJ4Lk9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIF8uaXNPYmplY3QodmFsdWUpICYmIHZhbHVlLnN1YnNjcmliZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGhhcyBhIGB0b0pTT05gIG1ldGhvZC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSnNvbmFibGUodmFsdWU6IGFueSk6IHZhbHVlIGlzIEpzb25hYmxlIHtcbiAgICByZXR1cm4gXy5pc09iamVjdCh2YWx1ZSkgJiYgdmFsdWUudG9KU09OO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gSW1tdXRhYmxlLmpzIGNvbGxlY3Rpb24uXG4gKlxuICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIGNoZWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ltbXV0YWJsZUNvbGxlY3Rpb24odmFsdWU6IGFueSk6IHZhbHVlIGlzIGltbXV0YWJsZS5Db2xsZWN0aW9uPGFueSwgYW55PiB7XG4gICAgcmV0dXJuIF8uaXNPYmplY3QodmFsdWUpICYmIHZhbHVlLnRvSlM7XG59XG5cbi8qKlxuICogQ29weSBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3QgdG8gdGFyZ2V0IG9iamVjdCBleGNsdWRpbmcgY29uc3RydWN0b3IuXG4gKiBJZiBhIHByb3BlcnR5IHdpdGggdGhlIHNhbWUgZXhpc3RzIG9uIHRoZSB0YXJnZXQgaXQgaXMgTk9UIG92ZXJ3cml0dGVuLlxuICpcbiAqIEBwYXJhbSB0YXJnZXRcbiAqIEBwYXJhbSBzb3VyY2VcbiAqL1xuZnVuY3Rpb24gZXh0ZW5kKHRhcmdldDogYW55LCBzb3VyY2U6IGFueSkge1xuICAgIGRvIHtcbiAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc291cmNlKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBpZiAobmFtZSAhPT0gJ2NvbnN0cnVjdG9yJyAmJiAhdGFyZ2V0Lmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIG5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmVjdXJzZSB1cHdhcmRzLlxuICAgICAgICBzb3VyY2UgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc291cmNlKTtcbiAgICB9IHdoaWxlIChPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc291cmNlKSAhPT0gbnVsbCk7XG59XG5cblxuLyoqXG4gKiBDcmVhdGUgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBmb3IgYSBjbGFzcyBpbXBsZW1lbnRpbmcgdGhlIGdpdmVuIG1peGlucy5cbiAqXG4gKiBAcGFyYW0gbWl4aW5zIEFycmF5IG9mIGNsYXNzZXMgdG8gYmUgbWl4ZWQgdG9nZXRoZXJcbiAqIEBwYXJhbSBzZXBhcmF0ZUFyZ3VtZW50cyBTaG91bGQgdGhlIG5ldyBjb25zdHJ1Y3QgYWNjZXB0IHNlcGFyYXRlIGFyZ3VtZW50c1xuICogQHJldHVybiBBIGNvbnN0cnVjdG9yIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlKG1peGluczogYW55W10sIHNlcGFyYXRlQXJndW1lbnRzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAvLyBDb25zdHJ1Y3RvciBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgYSBuZXcgY29tcG9zZWQgb2JqZWN0IGlzIGNyZWF0ZWQuXG4gICAgbGV0IGN0b3IgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICAgICAgaWYgKHNlcGFyYXRlQXJndW1lbnRzKSB7XG4gICAgICAgICAgICAvLyBDYWxsIGVhY2ggY29uc3RydWN0aW9uIGZ1bmN0aW9uIHdpdGggcmVzcGVjdGl2ZSBhcmd1bWVudHMuXG4gICAgICAgICAgICBfLnppcChtaXhpbnMsIGFyZ3MpLmZvckVhY2goKFttaXhpbiwgbWl4aW5BcmdzXSkgPT4ge1xuICAgICAgICAgICAgICAgIG1peGluLmFwcGx5KHRoaXMsIG1peGluQXJncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIENhbGwgdGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIG9mIGFsbCB0aGUgbWl4aW5zLCBpbiBvcmRlci5cbiAgICAgICAgICAgIG1peGlucy5mb3JFYWNoKChtaXhpbikgPT4ge1xuICAgICAgICAgICAgICAgIG1peGluLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gQWRkIGFsbCBtaXhpbnMgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB0byB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlIGZvciBhbGxcbiAgICAvLyBjcmVhdGVkIG9iamVjdHMgdG8gaGF2ZSB0aGVtLlxuICAgIG1peGlucy5mb3JFYWNoKChtaXhpbikgPT4ge1xuICAgICAgICBleHRlbmQoY3Rvci5wcm90b3R5cGUsIG1peGluLnByb3RvdHlwZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3Rvcjtcbn1cblxuXG5pbnRlcmZhY2UgQW5ndWxhckNvbnN0cnVjdG9yIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogdm9pZDtcbiAgICAkaW5qZWN0PzogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xufVxuZnVuY3Rpb24gZ2V0SW5qZWN0cyhtaXhpbjogQW5ndWxhckNvbnN0cnVjdG9yKTogUmVhZG9ubHlBcnJheTxzdHJpbmc+IHtcbiAgICBjb25zdCBudW1Bcmd1bWVudHMgPSBtaXhpbi5sZW5ndGg7XG4gICAgLy8gSWYgbm8gYXJndW1lbnRzIGFuZCBubyBpbmplY3QsIHByZXRlbmQgdGhhdCBpbmplY3QgaXMgW10uXG4gICAgaWYgKG51bUFyZ3VtZW50cyA9PT0gMCAmJiAhbWl4aW4uJGluamVjdCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBtaXhpbi4kaW5qZWN0O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciBhIGNsYXNzIGltcGxlbWVudGluZyB0aGUgZ2l2ZW4gbWl4aW5zLiBBbGwgbWl4aW5zXG4gKiBtdXN0IGhhdmUgYW5ub3RhdGVkIGluamVjdGlvbnMgKC8vIEBuZ0luamVjdCkgd2l0aCAkaW5qZWN0IHByb3BlcnR5LCBzbyB0aGF0IHJldHVybmVkXG4gKiBjb25zdHJ1Y3RvciBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGggJGluamVjdG9yLmluc3RhbnRpYXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZ0NvbXBvc2UobWl4aW5zOiBBbmd1bGFyQ29uc3RydWN0b3JbXSkge1xuICAgIGlmICghXy5hbGwobWl4aW5zLCAobWl4aW4pID0+IGdldEluamVjdHMobWl4aW4pKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FsbCBtaXhpbnMgaW4gbmdDb21wb3NlIG11c3QgaGF2ZSAkaW5qZWN0IHByb3BlcnR5IG9yIG5vIGFyZ3VtZW50cycpO1xuICAgIH1cblxuICAgIGNvbnN0IGN0b3IgPSBjbGFzcyB7XG4gICAgICAgIGNvbnN0cnVjdG9yICguLi5mbGF0dGVuZWRBcmdzOiBhbnlbXSkge1xuICAgICAgICAgICAgbGV0IG11dGFibGVGbGF0dGVuZWRBcmdzID0gXy5jbG9uZShmbGF0dGVuZWRBcmdzKTtcbiAgICAgICAgICAgIF8uZWFjaChtaXhpbnMsIChtaXhpbikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFRha2UgYW5kIHJlbW92ZSBpdCdzIHBhcnQgb2YgZmxhdHRlbmVkIGFyZ3MuXG4gICAgICAgICAgICAgICAgY29uc3QgYXJnc1BhcnQgPSBtdXRhYmxlRmxhdHRlbmVkQXJncy5zcGxpY2UoMCwgZ2V0SW5qZWN0cyhtaXhpbikubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3RcbiAgICAgICAgICAgICAgICBtaXhpbi5hcHBseSh0aGlzLCBhcmdzUGFydCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY3Rvci4kaW5qZWN0ID0gPHN0cmluZ1tdPiBfLmZsYXR0ZW4oXy5tYXAobWl4aW5zLCAobWl4aW4pID0+IGdldEluamVjdHMobWl4aW4pKSk7XG5cbiAgICAvLyBBZGQgYWxsIG1peGlucyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIHRvIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUgZm9yIGFsbFxuICAgIC8vIGNyZWF0ZWQgb2JqZWN0cyB0byBoYXZlIHRoZW0uXG4gICAgbWl4aW5zLmZvckVhY2goKG1peGluKSA9PiB7XG4gICAgICAgIGV4dGVuZChjdG9yLnByb3RvdHlwZSwgbWl4aW4ucHJvdG90eXBlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjdG9yO1xufVxuXG5cbi8qKlxuICogVHJhdmVyc2UgYW5kIHRyYW5zZm9ybSBvYmplY3RzIGJ5IHZpc2l0aW5nIGV2ZXJ5IG5vZGUgb24gYSByZWN1cnNpdmUgd2Fsay5cbiAqIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgYF8uY2xvbmVEZWVwKHZhbHVlLCByZXBsYWNlcilgIGRyb3BzIG9iamVjdCBrZXlzIHdoZW5cbiAqIHJlcGxhY2VyIHJldHVybnMgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwVHJhdmVyc2UodHJlZTogYW55LCByZXBsYWNlcjogKHZhbHVlOiBhbnkpID0+IGFueSk6IGFueSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRUcmVlID0gcmVwbGFjZXIodHJlZSk7XG5cbiAgICBpZiAoXy5pc0FycmF5KHRyYW5zZm9ybWVkVHJlZSkpIHtcbiAgICAgICAgcmV0dXJuIF8ubWFwKHRyYW5zZm9ybWVkVHJlZSwgKGVsZW1lbnQpID0+IGRlZXBUcmF2ZXJzZShlbGVtZW50LCByZXBsYWNlcikpO1xuICAgIH1cbiAgICBpZiAoXy5pc09iamVjdCh0cmFuc2Zvcm1lZFRyZWUpICYmICFfLmlzRnVuY3Rpb24odHJhbnNmb3JtZWRUcmVlKSAmJiAhXy5pc0FycmF5KHRyYW5zZm9ybWVkVHJlZSkpIHtcbiAgICAgICAgcmV0dXJuIF8ubWFwVmFsdWVzKHRyYW5zZm9ybWVkVHJlZSwgKGVsZW1lbnQpID0+IGRlZXBUcmF2ZXJzZShlbGVtZW50LCByZXBsYWNlcikpO1xuICAgIH1cbiAgICAvLyBMZWFmIG5vZGVcbiAgICByZXR1cm4gdHJhbnNmb3JtZWRUcmVlO1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlL3V0aWxzL2xhbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQkFBNEI7QUFPNUI7Ozs7R0FJRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxLQUFVO0lBQ3BDLElBQU0sT0FBTyxHQUFrQixLQUFLLENBQUM7SUFDckMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO0FBQ2hFLENBQUM7QUFIRCxzQ0FHQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixZQUFZLENBQUMsS0FBVTtJQUNuQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQztBQUNoRCxDQUFDO0FBRkQsb0NBRUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLEtBQVU7SUFDakMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDN0MsQ0FBQztBQUZELGdDQUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLEtBQVU7SUFDNUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDM0MsQ0FBQztBQUZELHNEQUVDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyxNQUFNLENBQUMsTUFBVyxFQUFFLE1BQVc7SUFDcEMsR0FBRztRQUNDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJO1lBQzVDLElBQUksSUFBSSxLQUFLLGFBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsd0JBQXdC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QyxNQUFNLEVBQUUsVUFBQyxLQUFLLElBQUssT0FBQSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQWpCLENBQWlCLENBQUMsQ0FBQyxDQUFDO0lBRWpGLDZFQUE2RTtJQUM3RSxnQ0FBZ0M7SUFDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFDLEtBQUs7UUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQTFCRCw4QkEwQkM7QUFHRDs7OztHQUlHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLElBQVMsRUFBRSxRQUE2QjtJQUNqRSxJQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdkMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1FBQzVCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsVUFBQyxPQUFPLElBQUssT0FBQSxZQUFZLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUEvQixDQUErQixDQUFDLENBQUM7S0FDL0U7SUFDRCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUM5RixPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLFVBQUMsT0FBTyxJQUFLLE9BQUEsWUFBWSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBL0IsQ0FBK0IsQ0FBQyxDQUFDO0tBQ3JGO0lBQ0QsWUFBWTtJQUNaLE9BQU8sZUFBZSxDQUFDO0FBQzNCLENBQUM7QUFYRCxvQ0FXQyIsImZpbGUiOiJjb3JlL3V0aWxzL2xhbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBpbW11dGFibGUgZnJvbSAnaW1tdXRhYmxlJztcblxuZXhwb3J0IGludGVyZmFjZSBKc29uYWJsZSB7XG4gICAgdG9KU09OKCk6IGFueTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgcHJvbWlzZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZUxpa2UodmFsdWU6IGFueSk6IHZhbHVlIGlzIFByb21pc2U8YW55PiB8IGFuZ3VsYXIuSVByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcHJvbWlzZSA9IDxQcm9taXNlPGFueT4+IHZhbHVlO1xuICAgIHJldHVybiAhIXByb21pc2UudGhlbiAmJiB0eXBlb2YgcHJvbWlzZS50aGVuID09PSAnZnVuY3Rpb24nO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gb2JzZXJ2YWJsZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JzZXJ2YWJsZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgUnguT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gXy5pc09iamVjdCh2YWx1ZSkgJiYgdmFsdWUuc3Vic2NyaWJlO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaGFzIGEgYHRvSlNPTmAgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBjaGVja1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNKc29uYWJsZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgSnNvbmFibGUge1xuICAgIHJldHVybiBfLmlzT2JqZWN0KHZhbHVlKSAmJiB2YWx1ZS50b0pTT047XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBJbW11dGFibGUuanMgY29sbGVjdGlvbi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW1tdXRhYmxlQ29sbGVjdGlvbih2YWx1ZTogYW55KTogdmFsdWUgaXMgaW1tdXRhYmxlLkNvbGxlY3Rpb248YW55LCBhbnk+IHtcbiAgICByZXR1cm4gXy5pc09iamVjdCh2YWx1ZSkgJiYgdmFsdWUudG9KUztcbn1cblxuLyoqXG4gKiBDb3B5IHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdCB0byB0YXJnZXQgb2JqZWN0IGV4Y2x1ZGluZyBjb25zdHJ1Y3Rvci5cbiAqIElmIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBleGlzdHMgb24gdGhlIHRhcmdldCBpdCBpcyBOT1Qgb3ZlcndyaXR0ZW4uXG4gKlxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIHNvdXJjZVxuICovXG5mdW5jdGlvbiBleHRlbmQodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55KSB7XG4gICAgZG8ge1xuICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2UpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGlmIChuYW1lICE9PSAnY29uc3RydWN0b3InICYmICF0YXJnZXQuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwgbmFtZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZWN1cnNlIHVwd2FyZHMuXG4gICAgICAgIHNvdXJjZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzb3VyY2UpO1xuICAgIH0gd2hpbGUgKE9iamVjdC5nZXRQcm90b3R5cGVPZihzb3VyY2UpICE9PSBudWxsKTtcbn1cblxuXG4vKipcbiAqIENyZWF0ZSBhIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIGZvciBhIGNsYXNzIGltcGxlbWVudGluZyB0aGUgZ2l2ZW4gbWl4aW5zLlxuICpcbiAqIEBwYXJhbSBtaXhpbnMgQXJyYXkgb2YgY2xhc3NlcyB0byBiZSBtaXhlZCB0b2dldGhlclxuICogQHBhcmFtIHNlcGFyYXRlQXJndW1lbnRzIFNob3VsZCB0aGUgbmV3IGNvbnN0cnVjdCBhY2NlcHQgc2VwYXJhdGUgYXJndW1lbnRzXG4gKiBAcmV0dXJuIEEgY29uc3RydWN0b3IgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2UobWl4aW5zOiBhbnlbXSwgc2VwYXJhdGVBcmd1bWVudHM6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIC8vIENvbnN0cnVjdG9yIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgZXZlcnkgdGltZSBhIG5ldyBjb21wb3NlZCBvYmplY3QgaXMgY3JlYXRlZC5cbiAgICBsZXQgY3RvciA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICBpZiAoc2VwYXJhdGVBcmd1bWVudHMpIHtcbiAgICAgICAgICAgIC8vIENhbGwgZWFjaCBjb25zdHJ1Y3Rpb24gZnVuY3Rpb24gd2l0aCByZXNwZWN0aXZlIGFyZ3VtZW50cy5cbiAgICAgICAgICAgIF8uemlwKG1peGlucywgYXJncykuZm9yRWFjaCgoW21peGluLCBtaXhpbkFyZ3NdKSA9PiB7XG4gICAgICAgICAgICAgICAgbWl4aW4uYXBwbHkodGhpcywgbWl4aW5BcmdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2FsbCB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24gb2YgYWxsIHRoZSBtaXhpbnMsIGluIG9yZGVyLlxuICAgICAgICAgICAgbWl4aW5zLmZvckVhY2goKG1peGluKSA9PiB7XG4gICAgICAgICAgICAgICAgbWl4aW4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBBZGQgYWxsIG1peGlucyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIHRvIHRoZSBjb25zdHJ1Y3RvciBwcm90b3R5cGUgZm9yIGFsbFxuICAgIC8vIGNyZWF0ZWQgb2JqZWN0cyB0byBoYXZlIHRoZW0uXG4gICAgbWl4aW5zLmZvckVhY2goKG1peGluKSA9PiB7XG4gICAgICAgIGV4dGVuZChjdG9yLnByb3RvdHlwZSwgbWl4aW4ucHJvdG90eXBlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjdG9yO1xufVxuXG5cbmludGVyZmFjZSBBbmd1bGFyQ29uc3RydWN0b3Ige1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB2b2lkO1xuICAgICRpbmplY3Q/OiBSZWFkb25seUFycmF5PHN0cmluZz47XG59XG5mdW5jdGlvbiBnZXRJbmplY3RzKG1peGluOiBBbmd1bGFyQ29uc3RydWN0b3IpOiBSZWFkb25seUFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IG51bUFyZ3VtZW50cyA9IG1peGluLmxlbmd0aDtcbiAgICAvLyBJZiBubyBhcmd1bWVudHMgYW5kIG5vIGluamVjdCwgcHJldGVuZCB0aGF0IGluamVjdCBpcyBbXS5cbiAgICBpZiAobnVtQXJndW1lbnRzID09PSAwICYmICFtaXhpbi4kaW5qZWN0KSByZXR1cm4gW107XG4gICAgcmV0dXJuIG1peGluLiRpbmplY3Q7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgY29uc3RydWN0b3IgZnVuY3Rpb24gZm9yIGEgY2xhc3MgaW1wbGVtZW50aW5nIHRoZSBnaXZlbiBtaXhpbnMuIEFsbCBtaXhpbnNcbiAqIG11c3QgaGF2ZSBhbm5vdGF0ZWQgaW5qZWN0aW9ucyAoLy8gQG5nSW5qZWN0KSB3aXRoICRpbmplY3QgcHJvcGVydHksIHNvIHRoYXQgcmV0dXJuZWRcbiAqIGNvbnN0cnVjdG9yIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aCAkaW5qZWN0b3IuaW5zdGFudGlhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5nQ29tcG9zZShtaXhpbnM6IEFuZ3VsYXJDb25zdHJ1Y3RvcltdKSB7XG4gICAgaWYgKCFfLmFsbChtaXhpbnMsIChtaXhpbikgPT4gZ2V0SW5qZWN0cyhtaXhpbikpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQWxsIG1peGlucyBpbiBuZ0NvbXBvc2UgbXVzdCBoYXZlICRpbmplY3QgcHJvcGVydHkgb3Igbm8gYXJndW1lbnRzJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY3RvciA9IGNsYXNzIHtcbiAgICAgICAgY29uc3RydWN0b3IgKC4uLmZsYXR0ZW5lZEFyZ3M6IGFueVtdKSB7XG4gICAgICAgICAgICBsZXQgbXV0YWJsZUZsYXR0ZW5lZEFyZ3MgPSBfLmNsb25lKGZsYXR0ZW5lZEFyZ3MpO1xuICAgICAgICAgICAgXy5lYWNoKG1peGlucywgKG1peGluKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVGFrZSBhbmQgcmVtb3ZlIGl0J3MgcGFydCBvZiBmbGF0dGVuZWQgYXJncy5cbiAgICAgICAgICAgICAgICBjb25zdCBhcmdzUGFydCA9IG11dGFibGVGbGF0dGVuZWRBcmdzLnNwbGljZSgwLCBnZXRJbmplY3RzKG1peGluKS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdFxuICAgICAgICAgICAgICAgIG1peGluLmFwcGx5KHRoaXMsIGFyZ3NQYXJ0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGN0b3IuJGluamVjdCA9IDxzdHJpbmdbXT4gXy5mbGF0dGVuKF8ubWFwKG1peGlucywgKG1peGluKSA9PiBnZXRJbmplY3RzKG1peGluKSkpO1xuXG4gICAgLy8gQWRkIGFsbCBtaXhpbnMgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB0byB0aGUgY29uc3RydWN0b3IgcHJvdG90eXBlIGZvciBhbGxcbiAgICAvLyBjcmVhdGVkIG9iamVjdHMgdG8gaGF2ZSB0aGVtLlxuICAgIG1peGlucy5mb3JFYWNoKChtaXhpbikgPT4ge1xuICAgICAgICBleHRlbmQoY3Rvci5wcm90b3R5cGUsIG1peGluLnByb3RvdHlwZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3Rvcjtcbn1cblxuXG4vKipcbiAqIFRyYXZlcnNlIGFuZCB0cmFuc2Zvcm0gb2JqZWN0cyBieSB2aXNpdGluZyBldmVyeSBub2RlIG9uIGEgcmVjdXJzaXZlIHdhbGsuXG4gKiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIGBfLmNsb25lRGVlcCh2YWx1ZSwgcmVwbGFjZXIpYCBkcm9wcyBvYmplY3Qga2V5cyB3aGVuXG4gKiByZXBsYWNlciByZXR1cm5zIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcFRyYXZlcnNlKHRyZWU6IGFueSwgcmVwbGFjZXI6ICh2YWx1ZTogYW55KSA9PiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkVHJlZSA9IHJlcGxhY2VyKHRyZWUpO1xuXG4gICAgaWYgKF8uaXNBcnJheSh0cmFuc2Zvcm1lZFRyZWUpKSB7XG4gICAgICAgIHJldHVybiBfLm1hcCh0cmFuc2Zvcm1lZFRyZWUsIChlbGVtZW50KSA9PiBkZWVwVHJhdmVyc2UoZWxlbWVudCwgcmVwbGFjZXIpKTtcbiAgICB9XG4gICAgaWYgKF8uaXNPYmplY3QodHJhbnNmb3JtZWRUcmVlKSAmJiAhXy5pc0Z1bmN0aW9uKHRyYW5zZm9ybWVkVHJlZSkgJiYgIV8uaXNBcnJheSh0cmFuc2Zvcm1lZFRyZWUpKSB7XG4gICAgICAgIHJldHVybiBfLm1hcFZhbHVlcyh0cmFuc2Zvcm1lZFRyZWUsIChlbGVtZW50KSA9PiBkZWVwVHJhdmVyc2UoZWxlbWVudCwgcmVwbGFjZXIpKTtcbiAgICB9XG4gICAgLy8gTGVhZiBub2RlXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkVHJlZTtcbn1cbiJdfQ== |
@@ -5,2 +5,1 @@ /** | ||
export declare function randomUuid(): string; | ||
//# sourceMappingURL=random.d.ts.map |
@@ -19,2 +19,1 @@ export declare class SerializationError extends Error { | ||
export declare function verboseSerialize(tree: any): any; | ||
//# sourceMappingURL=serialization.d.ts.map |
export {}; | ||
//# sourceMappingURL=serialization.spec.d.ts.map |
@@ -1,1 +0,1 @@ | ||
//# sourceMappingURL=index.d.ts.map | ||
@@ -97,2 +97,1 @@ import * as angular from 'angular'; | ||
export declare function describeComponent(description: string, modules: any[], tests: (tester: ComponentTester) => void, apiClass?: MockApiFactory, baseModules?: string[]): void; | ||
//# sourceMappingURL=component.d.ts.map |
import 'jquery'; | ||
//# sourceMappingURL=initialization.d.ts.map |
@@ -15,2 +15,1 @@ export declare const ngEqualMatcher: { | ||
} | ||
//# sourceMappingURL=matchers.d.ts.map |
@@ -30,2 +30,1 @@ import * as Rx from 'rx'; | ||
} | ||
//# sourceMappingURL=mock.d.ts.map |
{ | ||
"name": "@genialis/resolwe", | ||
"author": "Genialis Inc.", | ||
"version": "11.1.0", | ||
"version": "12.0.0", | ||
"description": "Resolwe frontend libraries", | ||
@@ -15,4 +15,3 @@ "license": "Apache-2.0", | ||
"scripts": { | ||
"build": "gulp build", | ||
"prepublishOnly": "gulp build" | ||
"build": "gulp build" | ||
}, | ||
@@ -19,0 +18,0 @@ "main": "dist/index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
1034677
104
12611