@remult/core
Advanced tools
Comparing version 1.0.20 to 1.0.21
@@ -134,7 +134,3 @@ /** | ||
/** @type {?} */ | ||
let classType = (/** @type {?} */ (c)); | ||
/** @type {?} */ | ||
let classKey = classType.__key; | ||
/** @type {?} */ | ||
let r = (/** @type {?} */ (dsCache.get(classKey))); | ||
let r = (/** @type {?} */ (dsCache.get(c))); | ||
if (!r) { | ||
@@ -150,3 +146,3 @@ r = new SpecificEntityHelper((/** | ||
}), this._lookupCache, this, dataSource); | ||
dsCache.set(classKey, r); | ||
dsCache.set(c, r); | ||
} | ||
@@ -595,7 +591,2 @@ return r; | ||
export function EntityType() { } | ||
if (false) { | ||
/** @type {?} */ | ||
EntityType.prototype.__key; | ||
/* Skipping unhandled member: new(...args: any[]): Entity<T>;*/ | ||
} | ||
/** @type {?} */ | ||
@@ -623,3 +614,2 @@ export const allEntities = []; | ||
allEntities.push(f); | ||
f.__key = theEntityClass.name + allEntities.indexOf(f); | ||
return f; | ||
@@ -702,2 +692,2 @@ } | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByZW11bHQvY29yZS8iLCJzb3VyY2VzIjpbInNyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQTRILG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEwsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFpQixZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFPekMsTUFBTSxPQUFPLE9BQU87Ozs7O0lBU2hCLFlBQVksSUFBaUIsRUFBVSxPQUFtQjtRQUFuQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBMEJoRCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBMkM1QixVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXFFLENBQUM7UUFvQ3JGLGlCQUFZLEdBQXVCLEVBQUUsQ0FBQztRQXhHbEMsSUFBSSxJQUFJLFlBQVksVUFBVSxFQUFFOztnQkFDeEIsSUFBSSxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFB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QVUsV0FBVyxDQUE0QixjQUFpQjs7UUFDaEUsUUFBUSxHQUFHLGNBQWM7O1FBQ3pCLENBQUMsR0FBRyxRQUFRO0lBQ2hCOzs7Ozs7OztPQVFHO0lBQ0gsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxPQUFPLENBQUMsQ0FBQztBQUNiLENBQUM7Ozs7QUFDRCw4QkFJQzs7O0lBSEcsc0JBQVc7O0lBQ1gsd0JBQWE7O0lBQ2IseUJBQWdCOzs7QUFLcEIsTUFBTSxPQUFPLElBQUk7Ozs7SUFDYixZQUFtQixHQUFXO1FBQVgsUUFBRyxHQUFILEdBQUcsQ0FBUTtJQUU5QixDQUFDOzs7OztJQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBZ0I7UUFDdkI7Ozs7UUFBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBQztJQUN0QyxDQUFDO0NBQ0o7OztJQU5lLG1CQUFrQjs7QUFPNkMsQ0FBQzs7Ozs7QUFJaEYsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUF1QjtJQUNoRDs7OztJQUFPLFVBQVUsTUFBTTtRQUNuQixNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDcEMsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQyxFQUFDO0FBQ04sQ0FBQzs7TUFHSyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUM7Ozs7O0FBRXZELDBCQUdDOzs7SUFGRywwQkFBWTs7SUFDWiw2QkFBdUI7Ozs7O0FBRTNCLGlDQUdDOzs7Ozs7SUFERyx1REFBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRGF0YVByb3ZpZGVyLCBGaW5kT3B0aW9ucywgRW50aXR5RGF0YVByb3ZpZGVyLCBFbnRpdHlEYXRhUHJvdmlkZXJGaW5kT3B0aW9ucywgRW50aXR5UHJvdmlkZXIsIEVudGl0eU9yZGVyQnksIEVudGl0eVdoZXJlLCBlbnRpdHlPcmRlckJ5VG9Tb3J0IH0gZnJvbSBcIi4vZGF0YS1pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IFJlc3REYXRhUHJvdmlkZXIgfSBmcm9tIFwiLi9kYXRhLXByb3ZpZGVycy9yZXN0LWRhdGEtcHJvdmlkZXJcIjtcclxuaW1wb3J0IHsgQW5ndWxhckh0dHBQcm92aWRlciB9IGZyb20gXCIuL2FuZ3VsYXIvQW5ndWxhckh0dHBQcm92aWRlclwiO1xyXG5cclxuaW1wb3J0IHsgSW5NZW1vcnlEYXRhUHJvdmlkZXIgfSBmcm9tIFwiLi9kYXRhLXByb3ZpZGVycy9pbi1tZW1vcnktZGF0YWJhc2VcIjtcclxuaW1wb3J0IHsgRGF0YUFwaVJlcXVlc3QsIERhdGFBcGlTZXR0aW5ncyB9IGZyb20gXCIuL2RhdGEtYXBpXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNTdHJpbmcsIGlzQm9vbGVhbiB9IGZyb20gXCJ1dGlsXCI7XHJcblxyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuL2NvbHVtblwiO1xyXG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tIFwiLi9lbnRpdHlcIjtcclxuaW1wb3J0IHsgTG9va3VwIH0gZnJvbSBcIi4vbG9va3VwXCI7XHJcbmltcG9ydCB7IElEYXRhU2V0dGluZ3MsIEdyaWRTZXR0aW5ncyB9IGZyb20gXCIuL2dyaWQtc2V0dGluZ3NcIjtcclxuXHJcbmltcG9ydCB7IEZpbHRlckJhc2UgfSBmcm9tICcuL2ZpbHRlci9maWx0ZXItaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4vc2VydmVyLWFjdGlvbic7XHJcbmltcG9ydCB7IFZhbHVlTGlzdEl0ZW0gfSBmcm9tICcuL2NvbHVtbi1pbnRlcmZhY2VzJztcclxuXHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENvbnRleHQge1xyXG4gICAgY2xlYXJBbGxDYWNoZSgpOiBhbnkge1xyXG4gICAgICAgIHRoaXMuY2FjaGUuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLl9sb29rdXBDYWNoZSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU2lnbmVkSW4oKSB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy51c2VyO1xyXG4gICAgfVxyXG4gICAgY29uc3RydWN0b3IoaHR0cD86IEh0dHBDbGllbnQsIHByaXZhdGUgX2RpYWxvZz86IE1hdERpYWxvZykge1xyXG4gICAgICAgIGlmIChodHRwIGluc3RhbmNlb2YgSHR0cENsaWVudCkge1xyXG4gICAgICAgICAgICB2YXIgcHJvdiA9IG5ldyBBbmd1bGFySHR0cFByb3ZpZGVyKGh0dHApO1xyXG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gbmV3IFJlc3REYXRhUHJvdmlkZXIoQ29udGV4dC5hcGlCYXNlVXJsXHJcbiAgICAgICAgICAgICAgICAsIHByb3ZcclxuICAgICAgICAgICAgICAgIC8vLG5ldyByZXN0RGF0YVByb3ZpZGVySHR0cFByb3ZpZGVyVXNpbmdGZXRjaCgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIEFjdGlvbi5wcm92aWRlciA9IHByb3Y7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gbmV3IEluTWVtb3J5RGF0YVByb3ZpZGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldENvb2tpZShuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBnZXRIb3N0KCkge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIGdldFBhdGhJblVybCgpIHtcclxuICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2RhdGFTb3VyY2U6IERhdGFQcm92aWRlcjtcclxuICAgIHByb3RlY3RlZCBfb25TZXJ2ZXIgPSBmYWxzZTtcclxuICAgIGdldCBvblNlcnZlcigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fb25TZXJ2ZXI7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3VzZXI6IFVzZXJJbmZvO1xyXG4gICAgZ2V0IHVzZXIoKSB7IHJldHVybiB0aGlzLl91c2VyOyB9XHJcblxyXG4gICAgX3NldFVzZXIoaW5mbzogVXNlckluZm8pIHtcclxuICAgICAgICB0aGlzLl91c2VyID0gaW5mbztcclxuICAgIH1cclxuICAgIHN0YXRpYyBhcGlCYXNlVXJsID0gJ2FwaSc7XHJcblxyXG4gICAgaXNBbGxvd2VkKHJvbGVzOiBBbGxvd2VkKSB7XHJcbiAgICAgICAgaWYgKHJvbGVzID09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAocm9sZXMgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvbGUgb2Ygcm9sZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQWxsb3dlZChyb2xlKSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHJvbGVzKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gKDxhbnk+cm9sZXMpKHRoaXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNCb29sZWFuKHJvbGVzKSlcclxuICAgICAgICAgICAgcmV0dXJuIHJvbGVzO1xyXG5cclxuICAgICAgICBpZiAocm9sZXMgaW5zdGFuY2VvZiBSb2xlKSB7XHJcbiAgICAgICAgICAgIHJvbGVzID0gcm9sZXMua2V5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMudXNlcilcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGlmIChpc1N0cmluZyhyb2xlcykpXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXIucm9sZXMuaW5kZXhPZihyb2xlcy50b1N0cmluZygpKSA+PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY2FjaGUgPSBuZXcgTWFwPERhdGFQcm92aWRlciwgTWFwPHN0cmluZywgU3BlY2lmaWNFbnRpdHlIZWxwZXI8YW55LCBFbnRpdHk8YW55Pj4+PigpO1xyXG4gICAgcHVibGljIGZvcjxsb29rdXBJZFR5cGUsIFQgZXh0ZW5kcyBFbnRpdHk8bG9va3VwSWRUeXBlPj4oYzogeyBuZXcoLi4uYXJnczogYW55W10pOiBUOyB9LCBkYXRhU291cmNlPzogRGF0YVByb3ZpZGVyKSB7XHJcbiAgICAgICAgaWYgKCFkYXRhU291cmNlKVxyXG4gICAgICAgICAgICBkYXRhU291cmNlID0gdGhpcy5fZGF0YVNvdXJjZTtcclxuXHJcbiAgICAgICAgbGV0IGRzQ2FjaGUgPSB0aGlzLmNhY2hlLmdldChkYXRhU291cmNlKTtcclxuICAgICAgICBpZiAoIWRzQ2FjaGUpIHtcclxuICAgICAgICAgICAgZHNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBTcGVjaWZpY0VudGl0eUhlbHBlcjxhbnksIEVudGl0eTxhbnk+Pj4oKTtcclxuICAgICAgICAgICAgdGhpcy5jYWNoZS5zZXQoZGF0YVNvdXJjZSwgZHNDYWNoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBjbGFzc1R5cGUgPSBjIGFzIGFueTtcclxuICAgICAgICBsZXQgY2xhc3NLZXkgPSBjbGFzc1R5cGUuX19rZXk7XHJcbiAgICAgICAgbGV0IHIgPSBkc0NhY2hlLmdldChjbGFzc0tleSkgYXMgU3BlY2lmaWNFbnRpdHlIZWxwZXI8bG9va3VwSWRUeXBlLCBUPjtcclxuICAgICAgICBpZiAoIXIpIHtcclxuICAgICAgICAgICAgciA9IG5ldyBTcGVjaWZpY0VudGl0eUhlbHBlcjxsb29rdXBJZFR5cGUsIFQ+KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBlID0gbmV3IGModGhpcyk7XHJcbiAgICAgICAgICAgICAgICBlLl9faW5pdENvbHVtbnMoKDxhbnk+ZSkuaWQpO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBlO1xyXG4gICAgICAgICAgICB9LCB0aGlzLl9sb29rdXBDYWNoZSwgdGhpcywgZGF0YVNvdXJjZSk7XHJcbiAgICAgICAgICAgIGRzQ2FjaGUuc2V0KGNsYXNzS2V5LCByKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICB9XHJcbiAgICBhc3luYyBvcGVuRGlhbG9nPFQsIEM+KGNvbXBvbmVudDogeyBuZXcoLi4uYXJnczogYW55W10pOiBDOyB9LCBzZXRQYXJhbWV0ZXJzOiAoaXQ6IEMpID0+IHZvaWQsIHJldHVybkFWYWx1ZT86IChpdDogQykgPT4gVCkge1xyXG5cclxuICAgICAgICBsZXQgcmVmID0gdGhpcy5fZGlhbG9nLm9wZW4oY29tcG9uZW50LCBjb21wb25lbnRbZGlhbG9nQ29uZmlnTWVtYmVyXSk7XHJcbiAgICAgICAgc2V0UGFyYW1ldGVycyhyZWYuY29tcG9uZW50SW5zdGFuY2UpO1xyXG4gICAgICAgIGF3YWl0IHJlZi5iZWZvcmVDbG9zZSgpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgIGlmIChyZXR1cm5BVmFsdWUpXHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5BVmFsdWUocmVmLmNvbXBvbmVudEluc3RhbmNlKTtcclxuICAgIH1cclxuXHJcbiAgICBfbG9va3VwQ2FjaGU6IExvb2t1cENhY2hlPGFueT5bXSA9IFtdO1xyXG59XHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgRGF0YVByb3ZpZGVyRmFjdG9yeUJ1aWxkZXIgPSAocmVxOiBDb250ZXh0KSA9PiBEYXRhUHJvdmlkZXI7XHJcbmV4cG9ydCBjbGFzcyBTZXJ2ZXJDb250ZXh0IGV4dGVuZHMgQ29udGV4dCB7XHJcbiAgICBjb25zdHJ1Y3RvcihkcD86IERhdGFQcm92aWRlcikge1xyXG4gICAgICAgIHN1cGVyKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdGhpcy5fb25TZXJ2ZXIgPSB0cnVlO1xyXG4gICAgICAgIGlmIChkcClcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRhUHJvdmlkZXIoZHApO1xyXG5cclxuXHJcbiAgICB9XHJcbiAgICBnZXRIb3N0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlcS5nZXRIZWFkZXIoJ2hvc3QnKTtcclxuICAgIH1cclxuICAgIGdldFBhdGhJblVybCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXEuZ2V0QmFzZVVybCgpO1xyXG4gICAgfVxyXG4gICAgZ2V0Q29va2llKG5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIGxldCBjb29raWUgPSB0aGlzLnJlcS5nZXRIZWFkZXIoJ2Nvb2tpZScpO1xyXG4gICAgICAgIGlmIChjb29raWUpXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgY29va2llLnNwbGl0KCc7JykpIHtcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtSW5mbyA9IGl0ZXJhdG9yLnNwbGl0KCc9Jyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUluZm8gJiYgaXRlbUluZm9bMF0udHJpbSgpID09IG5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbUluZm9bMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSByZXE6IERhdGFBcGlSZXF1ZXN0O1xyXG5cclxuICAgIHNldFJlcShyZXE6IERhdGFBcGlSZXF1ZXN0KSB7XHJcbiAgICAgICAgdGhpcy5yZXEgPSByZXE7XHJcbiAgICAgICAgdGhpcy5fdXNlciA9IHJlcS51c2VyID8gcmVxLnVzZXIgOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBzZXREYXRhUHJvdmlkZXIoZGF0YVByb3ZpZGVyOiBEYXRhUHJvdmlkZXIpIHtcclxuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gZGF0YVByb3ZpZGVyO1xyXG4gICAgfVxyXG4gICAgZ2V0T3JpZ2luKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlcS5nZXRIZWFkZXIoJ29yaWdpbicpXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgU3BlY2lmaWNFbnRpdHlIZWxwZXI8bG9va3VwSWRUeXBlLCBUIGV4dGVuZHMgRW50aXR5PGxvb2t1cElkVHlwZT4+IGltcGxlbWVudHMgRW50aXR5UHJvdmlkZXI8VD57XHJcbiAgICBfZ2V0QXBpU2V0dGluZ3MoKTogRGF0YUFwaVNldHRpbmdzPFQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHkuX2dldEVudGl0eUFwaVNldHRpbmdzKHRoaXMuY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHByaXZhdGUgZW50aXR5OiBUO1xyXG4gICAgcHJpdmF0ZSBfZWRwOiBFbnRpdHlEYXRhUHJvdmlkZXI7XHJcbiAgICBwcml2YXRlIF9mYWN0b3J5OiAobmV3Um93OiBib29sZWFuKSA9PiBUO1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIGNyZWF0ZTogKCkgPT4gVCwgcHJpdmF0ZSBfbG9va3VwQ2FjaGU6IExvb2t1cENhY2hlPGFueT5bXSwgcHJpdmF0ZSBjb250ZXh0OiBDb250ZXh0LCBkYXRhU291cmNlOiBEYXRhUHJvdmlkZXIpIHtcclxuICAgICAgICB0aGlzLl9mYWN0b3J5ID0gbmV3Um93ID0+IHtcclxuICAgICAgICAgICAgbGV0IGUgPSBjcmVhdGUoKTtcclxuICAgICAgICAgICAgZS5fX2VudGl0eURhdGEuZGF0YVByb3ZpZGVyID0gdGhpcy5fZWRwO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0Lm9uU2VydmVyKVxyXG4gICAgICAgICAgICAgICAgZS5fX2VudGl0eURhdGEuaW5pdFNlcnZlckV4cHJlc3Npb25zID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGUuY29sdW1ucy50b0FycmF5KCkubWFwKGFzeW5jIGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBjLl9fY2FsY1NlcnZlckV4cHJlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChuZXdSb3cpIHtcclxuICAgICAgICAgICAgICAgIGUuY29sdW1ucy50b0FycmF5KCkuZm9yRWFjaChjID0+IHsgYy5fX3NldERlZmF1bHRGb3JOZXdSb3coKSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuY3JlYXRlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmFjdG9yeSh0cnVlKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZW50aXR5ID0gdGhpcy5fZmFjdG9yeShmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5fZWRwID0gZGF0YVNvdXJjZS5nZXRFbnRpdHlEYXRhUHJvdmlkZXIodGhpcy5lbnRpdHkpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBsb29rdXAoZmlsdGVyOiBDb2x1bW48bG9va3VwSWRUeXBlPiB8ICgoZW50aXR5VHlwZTogVCkgPT4gRmlsdGVyQmFzZSkpOiBUIHtcclxuXHJcbiAgICAgICAgbGV0IGtleSA9IHRoaXMuZW50aXR5LmRlZnMubmFtZTtcclxuICAgICAgICBsZXQgbG9va3VwOiBMb29rdXA8bG9va3VwSWRUeXBlLCBUPjtcclxuICAgICAgICB0aGlzLl9sb29rdXBDYWNoZS5mb3JFYWNoKGwgPT4ge1xyXG4gICAgICAgICAgICBpZiAobC5rZXkgPT0ga2V5KVxyXG4gICAgICAgICAgICAgICAgbG9va3VwID0gbC5sb29rdXA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFsb29rdXApIHtcclxuICAgICAgICAgICAgbG9va3VwID0gbmV3IExvb2t1cCh0aGlzLmVudGl0eSwgdGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvb2t1cENhY2hlLnB1c2goeyBrZXksIGxvb2t1cCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxvb2t1cC5nZXQoZmlsdGVyKTtcclxuXHJcbiAgICB9XHJcbiAgICBsb29rdXBBc3luYyhmaWx0ZXI6IENvbHVtbjxsb29rdXBJZFR5cGU+IHwgKChlbnRpdHlUeXBlOiBUKSA9PiBGaWx0ZXJCYXNlKSk6IFByb21pc2U8VD4ge1xyXG5cclxuICAgICAgICBsZXQga2V5ID0gdGhpcy5lbnRpdHkuZGVmcy5uYW1lO1xyXG4gICAgICAgIGxldCBsb29rdXA6IExvb2t1cDxsb29rdXBJZFR5cGUsIFQ+O1xyXG4gICAgICAgIHRoaXMuX2xvb2t1cENhY2hlLmZvckVhY2gobCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsLmtleSA9PSBrZXkpXHJcbiAgICAgICAgICAgICAgICBsb29rdXAgPSBsLmxvb2t1cDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIWxvb2t1cCkge1xyXG4gICAgICAgICAgICBsb29rdXAgPSBuZXcgTG9va3VwKHRoaXMuZW50aXR5LCB0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5fbG9va3VwQ2FjaGUucHVzaCh7IGtleSwgbG9va3VwIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbG9va3VwLndoZW5HZXQoZmlsdGVyKTtcclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIGFzeW5jIGNvdW50KHdoZXJlPzogKGVudGl0eTogVCkgPT4gRmlsdGVyQmFzZSkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9lZHAuY291bnQod2hlcmUgPyB3aGVyZSh0aGlzLmVudGl0eSkgOiB1bmRlZmluZWQpO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgZm9yZWFjaCh3aGVyZTogKGVudGl0eTogVCkgPT4gRmlsdGVyQmFzZSwgd2hhdD86IChlbnRpdHk6IFQpID0+IFByb21pc2U8dm9pZD4pIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSBhd2FpdCB0aGlzLmZpbmQoe1xyXG4gICAgICAgICAgICB3aGVyZTogd2hlcmVcclxuICAgICAgICB9KTtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgICAgICAgYXdhaXQgd2hhdChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZU9wdGlvbnMob3B0aW9uczogRmluZE9wdGlvbnM8VD4pIHtcclxuICAgICAgICBpZiAoIW9wdGlvbnMpXHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgbGV0IGdldE9wdGlvbnM6IEVudGl0eURhdGFQcm92aWRlckZpbmRPcHRpb25zID0ge307XHJcbiAgICAgICAgaWYgKG9wdGlvbnMud2hlcmUpXHJcbiAgICAgICAgICAgIGdldE9wdGlvbnMud2hlcmUgPSBvcHRpb25zLndoZXJlKHRoaXMuZW50aXR5KTtcclxuICAgICAgICBpZiAob3B0aW9ucy5vcmRlckJ5KVxyXG4gICAgICAgICAgICBnZXRPcHRpb25zLm9yZGVyQnkgPSBlbnRpdHlPcmRlckJ5VG9Tb3J0KHRoaXMuZW50aXR5LCBvcHRpb25zLm9yZGVyQnkpO1xyXG4gICAgICAgIGlmIChvcHRpb25zLmxpbWl0KVxyXG4gICAgICAgICAgICBnZXRPcHRpb25zLmxpbWl0ID0gb3B0aW9ucy5saW1pdDtcclxuICAgICAgICBpZiAob3B0aW9ucy5wYWdlKVxyXG4gICAgICAgICAgICBnZXRPcHRpb25zLnBhZ2UgPSBvcHRpb25zLnBhZ2U7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuX19jdXN0b21GaW5kRGF0YSlcclxuICAgICAgICAgICAgZ2V0T3B0aW9ucy5fX2N1c3RvbUZpbmREYXRhID0gb3B0aW9ucy5fX2N1c3RvbUZpbmREYXRhO1xyXG4gICAgICAgIHJldHVybiBnZXRPcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbmQob3B0aW9ucz86IEZpbmRPcHRpb25zPFQ+KSB7XHJcbiAgICAgICAgbGV0IHIgPSBhd2FpdCB0aGlzLl9lZHAuZmluZCh0aGlzLnRyYW5zbGF0ZU9wdGlvbnMob3B0aW9ucykpO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChyLm1hcChhc3luYyBpID0+IHtcclxuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLl9mYWN0b3J5KGZhbHNlKTtcclxuICAgICAgICAgICAgYXdhaXQgci5fX2VudGl0eURhdGEuc2V0RGF0YShpLCByKTtcclxuICAgICAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgZnJvbVBvam8ocjogYW55KTogVCB7XHJcbiAgICAgICAgbGV0IGYgPSB0aGlzLl9mYWN0b3J5KGZhbHNlKTtcclxuICAgICAgICBmLl9fZW50aXR5RGF0YS5zZXREYXRhKHIsIGYpO1xyXG4gICAgICAgIHJldHVybiBmO1xyXG4gICAgfVxyXG4gICAgdG9BcGlQb2pvKGVudGl0eTogVCk6IGFueSB7XHJcbiAgICAgICAgbGV0IHIgPSB7fTtcclxuICAgICAgICBmb3IgKGNvbnN0IGMgb2YgZW50aXR5LmNvbHVtbnMpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBjLl9fYWRkVG9Qb2pvKHIsdGhpcy5jb250ZXh0KVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcjtcclxuXHJcbiAgICB9XHJcbiAgICBfdXBkYXRlRW50aXR5QmFzZWRPbkFwaShlbnRpdHk6IFQsIGJvZHk6IGFueSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBlbnRpdHkuY29sdW1ucykge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGMuX19sb2FkRnJvbVRvUG9qbyhib2R5LHRoaXMuY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlbnRpdHk7XHJcbiAgICB9XHJcbiAgICBhc3luYyBmaW5kRmlyc3Qod2hlcmU/OiAoZW50aXR5OiBUKSA9PiBGaWx0ZXJCYXNlKSB7XHJcbiAgICAgICAgbGV0IHIgPSBhd2FpdCB0aGlzLmZpbmQoeyB3aGVyZSB9KTtcclxuICAgICAgICBpZiAoci5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICByZXR1cm4gclswXTtcclxuICAgIH1cclxuICAgIHRvUG9qb0FycmF5KGl0ZW1zOiBUW10pIHtcclxuICAgICAgICByZXR1cm4gaXRlbXMubWFwKGYgPT4gdGhpcy50b0FwaVBvam8oZikpO1xyXG4gICAgfVxyXG5cclxuICAgIGdyaWRTZXR0aW5ncyhzZXR0aW5ncz86IElEYXRhU2V0dGluZ3M8VD4pIHtcclxuICAgICAgICByZXR1cm4gbmV3IEdyaWRTZXR0aW5ncyh0aGlzLCB0aGlzLmNvbnRleHQsIHNldHRpbmdzKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRWYWx1ZUxpc3QoYXJncz86IHtcclxuICAgICAgICBpZENvbHVtbj86IChlOiBUKSA9PiBDb2x1bW48YW55PixcclxuICAgICAgICBjYXB0aW9uQ29sdW1uPzogKGU6IFQpID0+IENvbHVtbjxhbnk+LFxyXG4gICAgICAgIG9yZGVyQnk/OiBFbnRpdHlPcmRlckJ5PFQ+LFxyXG4gICAgICAgIHdoZXJlPzogRW50aXR5V2hlcmU8VD5cclxuICAgIH0pOiBQcm9taXNlPFZhbHVlTGlzdEl0ZW1bXT4ge1xyXG4gICAgICAgIGlmICghYXJncykge1xyXG4gICAgICAgICAgICBhcmdzID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYXJncy5pZENvbHVtbikge1xyXG4gICAgICAgICAgICBhcmdzLmlkQ29sdW1uID0geCA9PiB4LmNvbHVtbnMuaWRDb2x1bW47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYXJncy5jYXB0aW9uQ29sdW1uKSB7XHJcbiAgICAgICAgICAgIGxldCBpZENvbCA9IGFyZ3MuaWRDb2x1bW4odGhpcy5lbnRpdHkpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleUluSXRlbSBvZiB0aGlzLmVudGl0eS5jb2x1bW5zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5SW5JdGVtICE9IGlkQ29sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJncy5jYXB0aW9uQ29sdW1uID0geCA9PiB4LmNvbHVtbnMuZmluZChrZXlJbkl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5maW5kKHtcclxuICAgICAgICAgICAgd2hlcmU6IGFyZ3Mud2hlcmUsXHJcbiAgICAgICAgICAgIG9yZGVyQnk6IGFyZ3Mub3JkZXJCeSxcclxuICAgICAgICAgICAgbGltaXQ6IDEwMDBcclxuICAgICAgICB9KSkubWFwKHggPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IGFyZ3MuaWRDb2x1bW4oeCkudmFsdWUsXHJcbiAgICAgICAgICAgICAgICBjYXB0aW9uOiBhcmdzLmNhcHRpb25Db2x1bW4oeCkudmFsdWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5VHlwZTxUPiB7XHJcbiAgICBuZXcoLi4uYXJnczogYW55W10pOiBFbnRpdHk8VD47XHJcbiAgICBfX2tleTogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBjb25zdCBhbGxFbnRpdGllczogRW50aXR5VHlwZTxhbnk+W10gPSBbXTtcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRW50aXR5Q2xhc3M8VCBleHRlbmRzIEVudGl0eVR5cGU8YW55Pj4odGhlRW50aXR5Q2xhc3M6IFQpIHtcclxuICAgIGxldCBvcmlnaW5hbCA9IHRoZUVudGl0eUNsYXNzO1xyXG4gICAgbGV0IGYgPSBvcmlnaW5hbDtcclxuICAgIC8qZiA9IGNsYXNzIGV4dGVuZHMgdGhlRW50aXR5Q2xhc3Mge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgICAgIHN1cGVyKC4uLmFyZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLl9faW5pdENvbHVtbnMoKDxhbnk+dGhpcykuaWQpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX19vcHRpb25zLm5hbWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX19vcHRpb25zLm5hbWUgPSBvcmlnaW5hbC5uYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSovXHJcbiAgICBhbGxFbnRpdGllcy5wdXNoKGYpO1xyXG4gICAgZi5fX2tleSA9IHRoZUVudGl0eUNsYXNzLm5hbWUgKyBhbGxFbnRpdGllcy5pbmRleE9mKGYpO1xyXG4gICAgcmV0dXJuIGY7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBVc2VySW5mbyB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgcm9sZXM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIFJvbGUge1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIGtleTogc3RyaW5nKSB7XHJcblxyXG4gICAgfVxyXG4gICAgc3RhdGljIG5vdChhbGxvd2VkOiBBbGxvd2VkKTogQWxsb3dlZCB7XHJcbiAgICAgICAgcmV0dXJuIGMgPT4gIWMuaXNBbGxvd2VkKGFsbG93ZWQpO1xyXG4gICAgfVxyXG59XHJcbmRlY2xhcmUgdHlwZSBBbGxvd2VkUnVsZSA9IHN0cmluZyB8IFJvbGUgfCAoKGM6IENvbnRleHQpID0+IGJvb2xlYW4pIHwgYm9vbGVhbjs7XHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgQWxsb3dlZCA9IEFsbG93ZWRSdWxlIHwgQWxsb3dlZFJ1bGVbXTtcclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBBbmd1bGFyQ29tcG9uZW50ID0geyBuZXcoLi4uYXJnczogYW55W10pOiBhbnkgfTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBEaWFsb2dDb25maWcoY29uZmlnOiBNYXREaWFsb2dDb25maWcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0KSB7XHJcbiAgICAgICAgdGFyZ2V0W2RpYWxvZ0NvbmZpZ01lbWJlcl0gPSBjb25maWc7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH07XHJcbn1cclxuXHJcblxyXG5jb25zdCBkaWFsb2dDb25maWdNZW1iZXIgPSBTeW1ib2woXCJkaWFsb2dDb25maWdNZW1iZXJcIik7XHJcblxyXG5pbnRlcmZhY2UgTG9va3VwQ2FjaGU8VCBleHRlbmRzIEVudGl0eTxhbnk+PiB7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICAgIGxvb2t1cDogTG9va3VwPGFueSwgVD47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBSb2xlQ2hlY2tlclxyXG57XHJcbiAgICBpc0FsbG93ZWQocm9sZXM6IEFsbG93ZWQpOmJvb2xlYW47XHJcbn0iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByZW11bHQvY29yZS8iLCJzb3VyY2VzIjpbInNyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQTRILG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEwsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFpQixZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFPekMsTUFBTSxPQUFPLE9BQU87Ozs7O0lBU2hCLFlBQVksSUFBaUIsRUFBVSxPQUFtQjtRQUFuQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBMEJoRCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBMkM1QixVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWtFLENBQUM7UUFvQ2xGLGlCQUFZLEdBQXVCLEVBQUUsQ0FBQztRQXhHbEMsSUFBSSxJQUFJLFlBQVksVUFBVSxFQUFFOztnQkFDeEIsSUFBSSxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFB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O0lBQ0gsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixPQUFPLENBQUMsQ0FBQztBQUNiLENBQUM7Ozs7QUFDRCw4QkFJQzs7O0lBSEcsc0JBQVc7O0lBQ1gsd0JBQWE7O0lBQ2IseUJBQWdCOzs7QUFLcEIsTUFBTSxPQUFPLElBQUk7Ozs7SUFDYixZQUFtQixHQUFXO1FBQVgsUUFBRyxHQUFILEdBQUcsQ0FBUTtJQUU5QixDQUFDOzs7OztJQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBZ0I7UUFDdkI7Ozs7UUFBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBQztJQUN0QyxDQUFDO0NBQ0o7OztJQU5lLG1CQUFrQjs7QUFPNkMsQ0FBQzs7Ozs7QUFJaEYsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUF1QjtJQUNoRDs7OztJQUFPLFVBQVUsTUFBTTtRQUNuQixNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDcEMsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQyxFQUFDO0FBQ04sQ0FBQzs7TUFHSyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUM7Ozs7O0FBRXZELDBCQUdDOzs7SUFGRywwQkFBWTs7SUFDWiw2QkFBdUI7Ozs7O0FBRTNCLGlDQUdDOzs7Ozs7SUFERyx1REFBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRGF0YVByb3ZpZGVyLCBGaW5kT3B0aW9ucywgRW50aXR5RGF0YVByb3ZpZGVyLCBFbnRpdHlEYXRhUHJvdmlkZXJGaW5kT3B0aW9ucywgRW50aXR5UHJvdmlkZXIsIEVudGl0eU9yZGVyQnksIEVudGl0eVdoZXJlLCBlbnRpdHlPcmRlckJ5VG9Tb3J0IH0gZnJvbSBcIi4vZGF0YS1pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IFJlc3REYXRhUHJvdmlkZXIgfSBmcm9tIFwiLi9kYXRhLXByb3ZpZGVycy9yZXN0LWRhdGEtcHJvdmlkZXJcIjtcclxuaW1wb3J0IHsgQW5ndWxhckh0dHBQcm92aWRlciB9IGZyb20gXCIuL2FuZ3VsYXIvQW5ndWxhckh0dHBQcm92aWRlclwiO1xyXG5cclxuaW1wb3J0IHsgSW5NZW1vcnlEYXRhUHJvdmlkZXIgfSBmcm9tIFwiLi9kYXRhLXByb3ZpZGVycy9pbi1tZW1vcnktZGF0YWJhc2VcIjtcclxuaW1wb3J0IHsgRGF0YUFwaVJlcXVlc3QsIERhdGFBcGlTZXR0aW5ncyB9IGZyb20gXCIuL2RhdGEtYXBpXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNTdHJpbmcsIGlzQm9vbGVhbiB9IGZyb20gXCJ1dGlsXCI7XHJcblxyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuL2NvbHVtblwiO1xyXG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tIFwiLi9lbnRpdHlcIjtcclxuaW1wb3J0IHsgTG9va3VwIH0gZnJvbSBcIi4vbG9va3VwXCI7XHJcbmltcG9ydCB7IElEYXRhU2V0dGluZ3MsIEdyaWRTZXR0aW5ncyB9IGZyb20gXCIuL2dyaWQtc2V0dGluZ3NcIjtcclxuXHJcbmltcG9ydCB7IEZpbHRlckJhc2UgfSBmcm9tICcuL2ZpbHRlci9maWx0ZXItaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4vc2VydmVyLWFjdGlvbic7XHJcbmltcG9ydCB7IFZhbHVlTGlzdEl0ZW0gfSBmcm9tICcuL2NvbHVtbi1pbnRlcmZhY2VzJztcclxuXHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENvbnRleHQge1xyXG4gICAgY2xlYXJBbGxDYWNoZSgpOiBhbnkge1xyXG4gICAgICAgIHRoaXMuY2FjaGUuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLl9sb29rdXBDYWNoZSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU2lnbmVkSW4oKSB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy51c2VyO1xyXG4gICAgfVxyXG4gICAgY29uc3RydWN0b3IoaHR0cD86IEh0dHBDbGllbnQsIHByaXZhdGUgX2RpYWxvZz86IE1hdERpYWxvZykge1xyXG4gICAgICAgIGlmIChodHRwIGluc3RhbmNlb2YgSHR0cENsaWVudCkge1xyXG4gICAgICAgICAgICB2YXIgcHJvdiA9IG5ldyBBbmd1bGFySHR0cFByb3ZpZGVyKGh0dHApO1xyXG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gbmV3IFJlc3REYXRhUHJvdmlkZXIoQ29udGV4dC5hcGlCYXNlVXJsXHJcbiAgICAgICAgICAgICAgICAsIHByb3ZcclxuICAgICAgICAgICAgICAgIC8vLG5ldyByZXN0RGF0YVByb3ZpZGVySHR0cFByb3ZpZGVyVXNpbmdGZXRjaCgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIEFjdGlvbi5wcm92aWRlciA9IHByb3Y7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gbmV3IEluTWVtb3J5RGF0YVByb3ZpZGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldENvb2tpZShuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBnZXRIb3N0KCkge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIGdldFBhdGhJblVybCgpIHtcclxuICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2RhdGFTb3VyY2U6IERhdGFQcm92aWRlcjtcclxuICAgIHByb3RlY3RlZCBfb25TZXJ2ZXIgPSBmYWxzZTtcclxuICAgIGdldCBvblNlcnZlcigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fb25TZXJ2ZXI7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3VzZXI6IFVzZXJJbmZvO1xyXG4gICAgZ2V0IHVzZXIoKSB7IHJldHVybiB0aGlzLl91c2VyOyB9XHJcblxyXG4gICAgX3NldFVzZXIoaW5mbzogVXNlckluZm8pIHtcclxuICAgICAgICB0aGlzLl91c2VyID0gaW5mbztcclxuICAgIH1cclxuICAgIHN0YXRpYyBhcGlCYXNlVXJsID0gJ2FwaSc7XHJcblxyXG4gICAgaXNBbGxvd2VkKHJvbGVzOiBBbGxvd2VkKSB7XHJcbiAgICAgICAgaWYgKHJvbGVzID09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAocm9sZXMgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvbGUgb2Ygcm9sZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQWxsb3dlZChyb2xlKSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHJvbGVzKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gKDxhbnk+cm9sZXMpKHRoaXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNCb29sZWFuKHJvbGVzKSlcclxuICAgICAgICAgICAgcmV0dXJuIHJvbGVzO1xyXG5cclxuICAgICAgICBpZiAocm9sZXMgaW5zdGFuY2VvZiBSb2xlKSB7XHJcbiAgICAgICAgICAgIHJvbGVzID0gcm9sZXMua2V5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMudXNlcilcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGlmIChpc1N0cmluZyhyb2xlcykpXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXIucm9sZXMuaW5kZXhPZihyb2xlcy50b1N0cmluZygpKSA+PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY2FjaGUgPSBuZXcgTWFwPERhdGFQcm92aWRlciwgTWFwPGFueSwgU3BlY2lmaWNFbnRpdHlIZWxwZXI8YW55LCBFbnRpdHk8YW55Pj4+PigpO1xyXG4gICAgcHVibGljIGZvcjxsb29rdXBJZFR5cGUsIFQgZXh0ZW5kcyBFbnRpdHk8bG9va3VwSWRUeXBlPj4oYzogeyBuZXcoLi4uYXJnczogYW55W10pOiBUOyB9LCBkYXRhU291cmNlPzogRGF0YVByb3ZpZGVyKSB7XHJcbiAgICAgICAgaWYgKCFkYXRhU291cmNlKVxyXG4gICAgICAgICAgICBkYXRhU291cmNlID0gdGhpcy5fZGF0YVNvdXJjZTtcclxuXHJcbiAgICAgICAgbGV0IGRzQ2FjaGUgPSB0aGlzLmNhY2hlLmdldChkYXRhU291cmNlKTtcclxuICAgICAgICBpZiAoIWRzQ2FjaGUpIHtcclxuICAgICAgICAgICAgZHNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBTcGVjaWZpY0VudGl0eUhlbHBlcjxhbnksIEVudGl0eTxhbnk+Pj4oKTtcclxuICAgICAgICAgICAgdGhpcy5jYWNoZS5zZXQoZGF0YVNvdXJjZSwgZHNDYWNoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCByID0gZHNDYWNoZS5nZXQoYykgYXMgU3BlY2lmaWNFbnRpdHlIZWxwZXI8bG9va3VwSWRUeXBlLCBUPjtcclxuICAgICAgICBpZiAoIXIpIHtcclxuICAgICAgICAgICAgciA9IG5ldyBTcGVjaWZpY0VudGl0eUhlbHBlcjxsb29rdXBJZFR5cGUsIFQ+KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBlID0gbmV3IGModGhpcyk7XHJcbiAgICAgICAgICAgICAgICBlLl9faW5pdENvbHVtbnMoKDxhbnk+ZSkuaWQpO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBlO1xyXG4gICAgICAgICAgICB9LCB0aGlzLl9sb29rdXBDYWNoZSwgdGhpcywgZGF0YVNvdXJjZSk7XHJcbiAgICAgICAgICAgIGRzQ2FjaGUuc2V0KGMsIHIpO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgICByZXR1cm4gcjtcclxuICAgIH1cclxuICAgIGFzeW5jIG9wZW5EaWFsb2c8VCwgQz4oY29tcG9uZW50OiB7IG5ldyguLi5hcmdzOiBhbnlbXSk6IEM7IH0sIHNldFBhcmFtZXRlcnM6IChpdDogQykgPT4gdm9pZCwgcmV0dXJuQVZhbHVlPzogKGl0OiBDKSA9PiBUKSB7XHJcblxyXG4gICAgICAgIGxldCByZWYgPSB0aGlzLl9kaWFsb2cub3Blbihjb21wb25lbnQsIGNvbXBvbmVudFtkaWFsb2dDb25maWdNZW1iZXJdKTtcclxuICAgICAgICBzZXRQYXJhbWV0ZXJzKHJlZi5jb21wb25lbnRJbnN0YW5jZSk7XHJcbiAgICAgICAgYXdhaXQgcmVmLmJlZm9yZUNsb3NlKCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgaWYgKHJldHVybkFWYWx1ZSlcclxuICAgICAgICAgICAgcmV0dXJuIHJldHVybkFWYWx1ZShyZWYuY29tcG9uZW50SW5zdGFuY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIF9sb29rdXBDYWNoZTogTG9va3VwQ2FjaGU8YW55PltdID0gW107XHJcbn1cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBEYXRhUHJvdmlkZXJGYWN0b3J5QnVpbGRlciA9IChyZXE6IENvbnRleHQpID0+IERhdGFQcm92aWRlcjtcclxuZXhwb3J0IGNsYXNzIFNlcnZlckNvbnRleHQgZXh0ZW5kcyBDb250ZXh0IHtcclxuICAgIGNvbnN0cnVjdG9yKGRwPzogRGF0YVByb3ZpZGVyKSB7XHJcbiAgICAgICAgc3VwZXIodW5kZWZpbmVkKTtcclxuICAgICAgICB0aGlzLl9vblNlcnZlciA9IHRydWU7XHJcbiAgICAgICAgaWYgKGRwKVxyXG4gICAgICAgICAgICB0aGlzLnNldERhdGFQcm92aWRlcihkcCk7XHJcblxyXG5cclxuICAgIH1cclxuICAgIGdldEhvc3QoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxLmdldEhlYWRlcignaG9zdCcpO1xyXG4gICAgfVxyXG4gICAgZ2V0UGF0aEluVXJsKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlcS5nZXRCYXNlVXJsKCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb29raWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGNvb2tpZSA9IHRoaXMucmVxLmdldEhlYWRlcignY29va2llJyk7XHJcbiAgICAgICAgaWYgKGNvb2tpZSlcclxuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVyYXRvciBvZiBjb29raWUuc3BsaXQoJzsnKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmZvID0gaXRlcmF0b3Iuc3BsaXQoJz0nKTtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtSW5mbyAmJiBpdGVtSW5mb1swXS50cmltKCkgPT0gbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtSW5mb1sxXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIHJlcTogRGF0YUFwaVJlcXVlc3Q7XHJcblxyXG4gICAgc2V0UmVxKHJlcTogRGF0YUFwaVJlcXVlc3QpIHtcclxuICAgICAgICB0aGlzLnJlcSA9IHJlcTtcclxuICAgICAgICB0aGlzLl91c2VyID0gcmVxLnVzZXIgPyByZXEudXNlciA6IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHNldERhdGFQcm92aWRlcihkYXRhUHJvdmlkZXI6IERhdGFQcm92aWRlcikge1xyXG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBkYXRhUHJvdmlkZXI7XHJcbiAgICB9XHJcbiAgICBnZXRPcmlnaW4oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxLmdldEhlYWRlcignb3JpZ2luJylcclxuICAgIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBTcGVjaWZpY0VudGl0eUhlbHBlcjxsb29rdXBJZFR5cGUsIFQgZXh0ZW5kcyBFbnRpdHk8bG9va3VwSWRUeXBlPj4gaW1wbGVtZW50cyBFbnRpdHlQcm92aWRlcjxUPntcclxuICAgIF9nZXRBcGlTZXR0aW5ncygpOiBEYXRhQXBpU2V0dGluZ3M8VD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eS5fZ2V0RW50aXR5QXBpU2V0dGluZ3ModGhpcy5jb250ZXh0KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcHJpdmF0ZSBlbnRpdHk6IFQ7XHJcbiAgICBwcml2YXRlIF9lZHA6IEVudGl0eURhdGFQcm92aWRlcjtcclxuICAgIHByaXZhdGUgX2ZhY3Rvcnk6IChuZXdSb3c6IGJvb2xlYW4pID0+IFQ7XHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgY3JlYXRlOiAoKSA9PiBULCBwcml2YXRlIF9sb29rdXBDYWNoZTogTG9va3VwQ2FjaGU8YW55PltdLCBwcml2YXRlIGNvbnRleHQ6IENvbnRleHQsIGRhdGFTb3VyY2U6IERhdGFQcm92aWRlcikge1xyXG4gICAgICAgIHRoaXMuX2ZhY3RvcnkgPSBuZXdSb3cgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZSA9IGNyZWF0ZSgpO1xyXG4gICAgICAgICAgICBlLl9fZW50aXR5RGF0YS5kYXRhUHJvdmlkZXIgPSB0aGlzLl9lZHA7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRleHQub25TZXJ2ZXIpXHJcbiAgICAgICAgICAgICAgICBlLl9fZW50aXR5RGF0YS5pbml0U2VydmVyRXhwcmVzc2lvbnMgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoZS5jb2x1bW5zLnRvQXJyYXkoKS5tYXAoYXN5bmMgYyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGMuX19jYWxjU2VydmVyRXhwcmVzc2lvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG5ld1Jvdykge1xyXG4gICAgICAgICAgICAgICAgZS5jb2x1bW5zLnRvQXJyYXkoKS5mb3JFYWNoKGMgPT4geyBjLl9fc2V0RGVmYXVsdEZvck5ld1JvdygpIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5jcmVhdGUgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9mYWN0b3J5KHRydWUpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5lbnRpdHkgPSB0aGlzLl9mYWN0b3J5KGZhbHNlKTtcclxuICAgICAgICB0aGlzLl9lZHAgPSBkYXRhU291cmNlLmdldEVudGl0eURhdGFQcm92aWRlcih0aGlzLmVudGl0eSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGxvb2t1cChmaWx0ZXI6IENvbHVtbjxsb29rdXBJZFR5cGU+IHwgKChlbnRpdHlUeXBlOiBUKSA9PiBGaWx0ZXJCYXNlKSk6IFQge1xyXG5cclxuICAgICAgICBsZXQga2V5ID0gdGhpcy5lbnRpdHkuZGVmcy5uYW1lO1xyXG4gICAgICAgIGxldCBsb29rdXA6IExvb2t1cDxsb29rdXBJZFR5cGUsIFQ+O1xyXG4gICAgICAgIHRoaXMuX2xvb2t1cENhY2hlLmZvckVhY2gobCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsLmtleSA9PSBrZXkpXHJcbiAgICAgICAgICAgICAgICBsb29rdXAgPSBsLmxvb2t1cDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIWxvb2t1cCkge1xyXG4gICAgICAgICAgICBsb29rdXAgPSBuZXcgTG9va3VwKHRoaXMuZW50aXR5LCB0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5fbG9va3VwQ2FjaGUucHVzaCh7IGtleSwgbG9va3VwIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbG9va3VwLmdldChmaWx0ZXIpO1xyXG5cclxuICAgIH1cclxuICAgIGxvb2t1cEFzeW5jKGZpbHRlcjogQ29sdW1uPGxvb2t1cElkVHlwZT4gfCAoKGVudGl0eVR5cGU6IFQpID0+IEZpbHRlckJhc2UpKTogUHJvbWlzZTxUPiB7XHJcblxyXG4gICAgICAgIGxldCBrZXkgPSB0aGlzLmVudGl0eS5kZWZzLm5hbWU7XHJcbiAgICAgICAgbGV0IGxvb2t1cDogTG9va3VwPGxvb2t1cElkVHlwZSwgVD47XHJcbiAgICAgICAgdGhpcy5fbG9va3VwQ2FjaGUuZm9yRWFjaChsID0+IHtcclxuICAgICAgICAgICAgaWYgKGwua2V5ID09IGtleSlcclxuICAgICAgICAgICAgICAgIGxvb2t1cCA9IGwubG9va3VwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghbG9va3VwKSB7XHJcbiAgICAgICAgICAgIGxvb2t1cCA9IG5ldyBMb29rdXAodGhpcy5lbnRpdHksIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLl9sb29rdXBDYWNoZS5wdXNoKHsga2V5LCBsb29rdXAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsb29rdXAud2hlbkdldChmaWx0ZXIpO1xyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgYXN5bmMgY291bnQod2hlcmU/OiAoZW50aXR5OiBUKSA9PiBGaWx0ZXJCYXNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2VkcC5jb3VudCh3aGVyZSA/IHdoZXJlKHRoaXMuZW50aXR5KSA6IHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgICBhc3luYyBmb3JlYWNoKHdoZXJlOiAoZW50aXR5OiBUKSA9PiBGaWx0ZXJCYXNlLCB3aGF0PzogKGVudGl0eTogVCkgPT4gUHJvbWlzZTx2b2lkPikge1xyXG4gICAgICAgIGxldCBpdGVtcyA9IGF3YWl0IHRoaXMuZmluZCh7XHJcbiAgICAgICAgICAgIHdoZXJlOiB3aGVyZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICAgICAgICBhd2FpdCB3aGF0KGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgdHJhbnNsYXRlT3B0aW9ucyhvcHRpb25zOiBGaW5kT3B0aW9uczxUPikge1xyXG4gICAgICAgIGlmICghb3B0aW9ucylcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICBsZXQgZ2V0T3B0aW9uczogRW50aXR5RGF0YVByb3ZpZGVyRmluZE9wdGlvbnMgPSB7fTtcclxuICAgICAgICBpZiAob3B0aW9ucy53aGVyZSlcclxuICAgICAgICAgICAgZ2V0T3B0aW9ucy53aGVyZSA9IG9wdGlvbnMud2hlcmUodGhpcy5lbnRpdHkpO1xyXG4gICAgICAgIGlmIChvcHRpb25zLm9yZGVyQnkpXHJcbiAgICAgICAgICAgIGdldE9wdGlvbnMub3JkZXJCeSA9IGVudGl0eU9yZGVyQnlUb1NvcnQodGhpcy5lbnRpdHksIG9wdGlvbnMub3JkZXJCeSk7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpXHJcbiAgICAgICAgICAgIGdldE9wdGlvbnMubGltaXQgPSBvcHRpb25zLmxpbWl0O1xyXG4gICAgICAgIGlmIChvcHRpb25zLnBhZ2UpXHJcbiAgICAgICAgICAgIGdldE9wdGlvbnMucGFnZSA9IG9wdGlvbnMucGFnZTtcclxuICAgICAgICBpZiAob3B0aW9ucy5fX2N1c3RvbUZpbmREYXRhKVxyXG4gICAgICAgICAgICBnZXRPcHRpb25zLl9fY3VzdG9tRmluZERhdGEgPSBvcHRpb25zLl9fY3VzdG9tRmluZERhdGE7XHJcbiAgICAgICAgcmV0dXJuIGdldE9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmluZChvcHRpb25zPzogRmluZE9wdGlvbnM8VD4pIHtcclxuICAgICAgICBsZXQgciA9IGF3YWl0IHRoaXMuX2VkcC5maW5kKHRoaXMudHJhbnNsYXRlT3B0aW9ucyhvcHRpb25zKSk7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHIubWFwKGFzeW5jIGkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuX2ZhY3RvcnkoZmFsc2UpO1xyXG4gICAgICAgICAgICBhd2FpdCByLl9fZW50aXR5RGF0YS5zZXREYXRhKGksIHIpO1xyXG4gICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBmcm9tUG9qbyhyOiBhbnkpOiBUIHtcclxuICAgICAgICBsZXQgZiA9IHRoaXMuX2ZhY3RvcnkoZmFsc2UpO1xyXG4gICAgICAgIGYuX19lbnRpdHlEYXRhLnNldERhdGEociwgZik7XHJcbiAgICAgICAgcmV0dXJuIGY7XHJcbiAgICB9XHJcbiAgICB0b0FwaVBvam8oZW50aXR5OiBUKTogYW55IHtcclxuICAgICAgICBsZXQgciA9IHt9O1xyXG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBlbnRpdHkuY29sdW1ucykge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGMuX19hZGRUb1Bvam8ocix0aGlzLmNvbnRleHQpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByO1xyXG5cclxuICAgIH1cclxuICAgIF91cGRhdGVFbnRpdHlCYXNlZE9uQXBpKGVudGl0eTogVCwgYm9keTogYW55KSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjIG9mIGVudGl0eS5jb2x1bW5zKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgYy5fX2xvYWRGcm9tVG9Qb2pvKGJvZHksdGhpcy5jb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVudGl0eTtcclxuICAgIH1cclxuICAgIGFzeW5jIGZpbmRGaXJzdCh3aGVyZT86IChlbnRpdHk6IFQpID0+IEZpbHRlckJhc2UpIHtcclxuICAgICAgICBsZXQgciA9IGF3YWl0IHRoaXMuZmluZCh7IHdoZXJlIH0pO1xyXG4gICAgICAgIGlmIChyLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJldHVybiByWzBdO1xyXG4gICAgfVxyXG4gICAgdG9Qb2pvQXJyYXkoaXRlbXM6IFRbXSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtcy5tYXAoZiA9PiB0aGlzLnRvQXBpUG9qbyhmKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ3JpZFNldHRpbmdzKHNldHRpbmdzPzogSURhdGFTZXR0aW5nczxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgR3JpZFNldHRpbmdzKHRoaXMsIHRoaXMuY29udGV4dCwgc2V0dGluZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFZhbHVlTGlzdChhcmdzPzoge1xyXG4gICAgICAgIGlkQ29sdW1uPzogKGU6IFQpID0+IENvbHVtbjxhbnk+LFxyXG4gICAgICAgIGNhcHRpb25Db2x1bW4/OiAoZTogVCkgPT4gQ29sdW1uPGFueT4sXHJcbiAgICAgICAgb3JkZXJCeT86IEVudGl0eU9yZGVyQnk8VD4sXHJcbiAgICAgICAgd2hlcmU/OiBFbnRpdHlXaGVyZTxUPlxyXG4gICAgfSk6IFByb21pc2U8VmFsdWVMaXN0SXRlbVtdPiB7XHJcbiAgICAgICAgaWYgKCFhcmdzKSB7XHJcbiAgICAgICAgICAgIGFyZ3MgPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFhcmdzLmlkQ29sdW1uKSB7XHJcbiAgICAgICAgICAgIGFyZ3MuaWRDb2x1bW4gPSB4ID0+IHguY29sdW1ucy5pZENvbHVtbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFhcmdzLmNhcHRpb25Db2x1bW4pIHtcclxuICAgICAgICAgICAgbGV0IGlkQ29sID0gYXJncy5pZENvbHVtbih0aGlzLmVudGl0eSk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5SW5JdGVtIG9mIHRoaXMuZW50aXR5LmNvbHVtbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChrZXlJbkl0ZW0gIT0gaWRDb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICBhcmdzLmNhcHRpb25Db2x1bW4gPSB4ID0+IHguY29sdW1ucy5maW5kKGtleUluSXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmZpbmQoe1xyXG4gICAgICAgICAgICB3aGVyZTogYXJncy53aGVyZSxcclxuICAgICAgICAgICAgb3JkZXJCeTogYXJncy5vcmRlckJ5LFxyXG4gICAgICAgICAgICBsaW1pdDogMTAwMFxyXG4gICAgICAgIH0pKS5tYXAoeCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpZDogYXJncy5pZENvbHVtbih4KS52YWx1ZSxcclxuICAgICAgICAgICAgICAgIGNhcHRpb246IGFyZ3MuY2FwdGlvbkNvbHVtbih4KS52YWx1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlUeXBlPFQ+IHtcclxuICAgIG5ldyguLi5hcmdzOiBhbnlbXSk6IEVudGl0eTxUPjtcclxufVxyXG5leHBvcnQgY29uc3QgYWxsRW50aXRpZXM6IEVudGl0eVR5cGU8YW55PltdID0gW107XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eUNsYXNzPFQgZXh0ZW5kcyBFbnRpdHlUeXBlPGFueT4+KHRoZUVudGl0eUNsYXNzOiBUKSB7XHJcbiAgICBsZXQgb3JpZ2luYWwgPSB0aGVFbnRpdHlDbGFzcztcclxuICAgIGxldCBmID0gb3JpZ2luYWw7XHJcbiAgICAvKmYgPSBjbGFzcyBleHRlbmRzIHRoZUVudGl0eUNsYXNzIHtcclxuICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgICBzdXBlciguLi5hcmdzKTtcclxuICAgICAgICAgICAgdGhpcy5fX2luaXRDb2x1bW5zKCg8YW55PnRoaXMpLmlkKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9fb3B0aW9ucy5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9fb3B0aW9ucy5uYW1lID0gb3JpZ2luYWwubmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0qL1xyXG4gICAgYWxsRW50aXRpZXMucHVzaChmKTtcclxuICAgIHJldHVybiBmO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgVXNlckluZm8ge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIHJvbGVzOiBzdHJpbmdbXTtcclxufVxyXG5cclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBSb2xlIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBrZXk6IHN0cmluZykge1xyXG5cclxuICAgIH1cclxuICAgIHN0YXRpYyBub3QoYWxsb3dlZDogQWxsb3dlZCk6IEFsbG93ZWQge1xyXG4gICAgICAgIHJldHVybiBjID0+ICFjLmlzQWxsb3dlZChhbGxvd2VkKTtcclxuICAgIH1cclxufVxyXG5kZWNsYXJlIHR5cGUgQWxsb3dlZFJ1bGUgPSBzdHJpbmcgfCBSb2xlIHwgKChjOiBDb250ZXh0KSA9PiBib29sZWFuKSB8IGJvb2xlYW47O1xyXG5leHBvcnQgZGVjbGFyZSB0eXBlIEFsbG93ZWQgPSBBbGxvd2VkUnVsZSB8IEFsbG93ZWRSdWxlW107XHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgQW5ndWxhckNvbXBvbmVudCA9IHsgbmV3KC4uLmFyZ3M6IGFueVtdKTogYW55IH07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRGlhbG9nQ29uZmlnKGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCkge1xyXG4gICAgICAgIHRhcmdldFtkaWFsb2dDb25maWdNZW1iZXJdID0gY29uZmlnO1xyXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICB9O1xyXG59XHJcblxyXG5cclxuY29uc3QgZGlhbG9nQ29uZmlnTWVtYmVyID0gU3ltYm9sKFwiZGlhbG9nQ29uZmlnTWVtYmVyXCIpO1xyXG5cclxuaW50ZXJmYWNlIExvb2t1cENhY2hlPFQgZXh0ZW5kcyBFbnRpdHk8YW55Pj4ge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICBsb29rdXA6IExvb2t1cDxhbnksIFQ+O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUm9sZUNoZWNrZXJcclxue1xyXG4gICAgaXNBbGxvd2VkKHJvbGVzOiBBbGxvd2VkKTpib29sZWFuO1xyXG59Il19 |
@@ -303,4 +303,2 @@ /** | ||
if (false) { | ||
/** @type {?} */ | ||
Entity.__key; | ||
/** | ||
@@ -466,2 +464,2 @@ * @type {?} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJlbXVsdC9jb3JlLyIsInNvdXJjZXMiOlsic3JjL2VudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBSS9ELE1BQU0sT0FBTyxNQUFNOzs7O0lBQ2pCLFlBQVksT0FBZ0M7O1FBdUQ1QyxpQkFBWSxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQzs7UUFHM0Msa0JBQWE7OztRQUErQixHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUM7O1FBRXRELGlCQUFZOzs7UUFBK0IsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFDOztRQTBJN0MsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFyTXBDLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2FBQ3BDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO2dCQUN6QixJQUFJLE9BQU8sQ0FBQyxTQUFTO29CQUNuQixJQUFJLENBQUMsYUFBYTs7O29CQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQSxDQUFDO2dCQUNqRCxJQUFJLE9BQU8sQ0FBQyxRQUFRO29CQUNsQixJQUFJLENBQUMsWUFBWTs7O29CQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQzthQUNwRDtTQUNGO2FBQ0k7WUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHO2dCQUNmLElBQUksRUFB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LElBQUksQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7Ozs7OztJQWpCYSwrQkFBZ0M7Ozs7O0FBa0I5QyxNQUFNLE9BQU8sYUFBYTs7Ozs7SUFDeEIsWUFBb0IsU0FBd0IsRUFBa0IsUUFBbUI7UUFBN0QsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUFrQixhQUFRLEdBQVIsUUFBUSxDQUFXO0lBRWpGLENBQUM7Ozs7SUFDRCxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDM0MsQ0FBQzs7OztJQUNELE9BQU87UUFDTCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7Ozs7SUFJRCxJQUFJLENBQUMsR0FBeUI7O1lBQ3hCLE1BQWM7UUFDbEIsSUFBSSxHQUFHLFlBQVksTUFBTTtZQUN2QixNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7O1lBRXRCLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDZixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDOUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxNQUFNO2dCQUN0QixPQUFPLENBQUMsQ0FBQztTQUNaO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUVGOzs7Ozs7SUF6QmEsa0NBQWdDOztJQUFFLGlDQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQsIEFsbG93ZWQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XHJcbmltcG9ydCB7IERhdGFBcGlTZXR0aW5ncyB9IGZyb20gXCIuL2RhdGEtYXBpXCI7XHJcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuL2NvbHVtblwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJCYXNlIH0gZnJvbSAnLi9maWx0ZXIvZmlsdGVyLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBfX0VudGl0eVZhbHVlUHJvdmlkZXIgfSBmcm9tICcuL19fRW50aXR5VmFsdWVQcm92aWRlcic7XHJcbmltcG9ydCB7IHZhbHVlT3JFeHByZXNzaW9uVG9WYWx1ZSB9IGZyb20gJy4vY29sdW1uLWludGVyZmFjZXMnO1xyXG5cclxuXHJcbi8vQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEVudGl0eTxpZFR5cGU+IHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogRW50aXR5T3B0aW9ucyB8IHN0cmluZykge1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgaWYgKHR5cGVvZiAob3B0aW9ucykgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICB0aGlzLl9fb3B0aW9ucyA9IHsgbmFtZTogb3B0aW9ucyB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX19vcHRpb25zID0gb3B0aW9ucztcclxuICAgICAgICBpZiAob3B0aW9ucy5zYXZpbmdSb3cpXHJcbiAgICAgICAgICB0aGlzLl9fb25TYXZpbmdSb3cgPSAoKSA9PiBvcHRpb25zLnNhdmluZ1JvdygpO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnZhbGlkYXRlKVxyXG4gICAgICAgICAgdGhpcy5fX29uVmFsaWRhdGUgPSAoKSA9PiBvcHRpb25zLnZhbGlkYXRlKHRoaXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fX29wdGlvbnMgPSB7XHJcbiAgICAgICAgbmFtZTogdW5kZWZpbmVkXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vQGludGVybmFsXHJcbiAgc3RhdGljIF9fa2V5OiBzdHJpbmc7XHJcblxyXG5cclxuICAvL0BpbnRlcm5hbCBcclxuICBfZ2V0RW50aXR5QXBpU2V0dGluZ3MocjogQ29udGV4dCk6IERhdGFBcGlTZXR0aW5nczxFbnRpdHk8YW55Pj4ge1xyXG5cclxuICAgIGxldCBvcHRpb25zID0gdGhpcy5fX29wdGlvbnM7XHJcbiAgICBpZiAob3B0aW9ucy5hbGxvd0FwaUNSVUQpIHtcclxuICAgICAgb3B0aW9ucy5hbGxvd0FwaURlbGV0ZSA9IHRydWU7XHJcbiAgICAgIG9wdGlvbnMuYWxsb3dBcGlJbnNlcnQgPSB0cnVlO1xyXG4gICAgICBvcHRpb25zLmFsbG93QXBpVXBkYXRlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFsbG93UmVhZDogci5pc0FsbG93ZWQob3B0aW9ucy5hbGxvd0FwaVJlYWQpLFxyXG4gICAgICBhbGxvd1VwZGF0ZTogci5pc0FsbG93ZWQob3B0aW9ucy5hbGxvd0FwaVVwZGF0ZSksXHJcbiAgICAgIGFsbG93RGVsZXRlOiByLmlzQWxsb3dlZChvcHRpb25zLmFsbG93QXBpRGVsZXRlKSxcclxuICAgICAgYWxsb3dJbnNlcnQ6IHIuaXNBbGxvd2VkKG9wdGlvbnMuYWxsb3dBcGlJbnNlcnQpLFxyXG4gICAgICBnZXQ6IHtcclxuICAgICAgICB3aGVyZTogeCA9PiBvcHRpb25zLmFwaURhdGFGaWx0ZXIgPyBvcHRpb25zLmFwaURhdGFGaWx0ZXIoKSA6IHVuZGVmaW5lZFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICAvL0BpbnRlcm5hbFxyXG4gIHByaXZhdGUgX19vcHRpb25zOiBFbnRpdHlPcHRpb25zO1xyXG4gIC8vQGludGVybmFsXHJcbiAgcHJpdmF0ZSBfZGVmczogRW50aXR5RGVmcztcclxuICBnZXQgZGVmcygpIHtcclxuICAgIGlmICghdGhpcy5fZGVmcylcclxuICAgICAgdGhpcy5fZGVmcyA9IG5ldyBFbnRpdHlEZWZzKHRoaXMuX19vcHRpb25zKTtcclxuICAgIHJldHVybiB0aGlzLl9kZWZzO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvL0BpbnRlcm5hbFxyXG4gIF9fZW50aXR5RGF0YSA9IG5ldyBfX0VudGl0eVZhbHVlUHJvdmlkZXIoKTtcclxuXHJcbiAgLy9AaW50ZXJuYWxcclxuICBfX29uU2F2aW5nUm93OiAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPiA9ICgpID0+IHsgfTtcclxuICAvL0BpbnRlcm5hbFxyXG4gIF9fb25WYWxpZGF0ZTogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4gPSAoKSA9PiB7IH07XHJcblxyXG4gIHZhbGlkYXRpb25FcnJvcjogc3RyaW5nO1xyXG4gIC8vQGludGVybmFsXHJcbiAgcHJpdmF0ZSBfX2lkQ29sdW1uOiBDb2x1bW48aWRUeXBlPjtcclxuICAvL0BpbnRlcm5hbFxyXG4gIF9faW5pdENvbHVtbnMoaWRDb2x1bW4/OiBDb2x1bW48aWRUeXBlPikge1xyXG4gICAgaWYgKCF0aGlzLl9fb3B0aW9ucy5uYW1lKSB7XHJcbiAgICAgIHRoaXMuX19vcHRpb25zLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XHJcbiAgICB9XHJcbiAgICBpZiAoaWRDb2x1bW4pXHJcbiAgICAgIHRoaXMuX19pZENvbHVtbiA9IGlkQ29sdW1uO1xyXG4gICAgbGV0IHggPSA8YW55PnRoaXM7XHJcbiAgICBmb3IgKGxldCBjIGluIHgpIHtcclxuICAgICAgbGV0IHkgPSB4W2NdO1xyXG5cclxuICAgICAgaWYgKHkgaW5zdGFuY2VvZiBDb2x1bW4pIHtcclxuICAgICAgICBpZiAoIXkuZGVmcy5rZXkpXHJcbiAgICAgICAgICB5LmRlZnMua2V5ID0gYztcclxuICAgICAgICBpZiAoIXRoaXMuX19pZENvbHVtbiAmJiB5LmRlZnMua2V5ID09ICdpZCcpXHJcbiAgICAgICAgICB0aGlzLl9faWRDb2x1bW4gPSB5O1xyXG5cclxuXHJcbiAgICAgICAgdGhpcy5fX2FwcGx5Q29sdW1uKHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuX19pZENvbHVtbilcclxuICAgICAgdGhpcy5fX2lkQ29sdW1uID0gdGhpcy5fX2NvbHVtbnNbMF07XHJcbiAgfVxyXG4gIGlzVmFsaWQoKSB7XHJcbiAgICBsZXQgb2sgPSB0cnVlO1xyXG4gICAgdGhpcy5fX2NvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgaWYgKGMudmFsaWRhdGlvbkVycm9yKVxyXG4gICAgICAgIG9rID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBvaztcclxuICB9XHJcbiAgaXNOZXcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fX2VudGl0eURhdGEuaXNOZXdSb3coKTtcclxuICB9XHJcbiAgLy9AaW50ZXJuYWxcclxuICBwcml2YXRlIF9fZ2V0VmFsaWRhdGlvbkVycm9yKCkge1xyXG4gICAgbGV0IHJlc3VsdDogYW55ID0ge307XHJcbiAgICByZXN1bHQubW9kZWxTdGF0ZSA9IHt9O1xyXG4gICAgdGhpcy5fX2NvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgaWYgKGMudmFsaWRhdGlvbkVycm9yKVxyXG4gICAgICAgIHJlc3VsdC5tb2RlbFN0YXRlW2MuZGVmcy5rZXldID0gYy52YWxpZGF0aW9uRXJyb3I7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG4gIC8vQGludGVybmFsXHJcbiAgcHJpdmF0ZSBfX2Fzc2VydFZhbGlkaXR5KCkge1xyXG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xyXG5cclxuICAgICAgdGhyb3cgdGhpcy5fX2dldFZhbGlkYXRpb25FcnJvcigpO1xyXG4gICAgfVxyXG4gIH1cclxuICBhc3luYyBzYXZlKGFmdGVyVmFsaWRhdGlvbkJlZm9yZVNhdmluZz86IChyb3c6IHRoaXMpID0+IFByb21pc2U8YW55PiB8IGFueSkge1xyXG4gICAgdGhpcy5fX2NsZWFyRXJyb3JzKCk7XHJcblxyXG4gICAgdGhpcy5fX2NvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgYy5fX3BlcmZvcm1WYWxpZGF0aW9uKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5fX29uVmFsaWRhdGUpXHJcbiAgICAgIHRoaXMuX19vblZhbGlkYXRlKCk7XHJcbiAgICBpZiAoYWZ0ZXJWYWxpZGF0aW9uQmVmb3JlU2F2aW5nKVxyXG4gICAgICBhd2FpdCBhZnRlclZhbGlkYXRpb25CZWZvcmVTYXZpbmcodGhpcyk7XHJcbiAgICB0aGlzLl9fYXNzZXJ0VmFsaWRpdHkoKTtcclxuXHJcbiAgICBhd2FpdCAgdGhpcy5fX29uU2F2aW5nUm93KCk7XHJcbiAgICB0aGlzLl9fYXNzZXJ0VmFsaWRpdHkoKTtcclxuICAgIHJldHVybiBhd2FpdCAgdGhpcy5fX2VudGl0eURhdGEuc2F2ZSh0aGlzKS5jYXRjaChlID0+IHRoaXMuY2F0Y2hTYXZlRXJyb3JzKGUpKTtcclxuICB9XHJcbiAgLy9AaW50ZXJuYWxcclxuICBwcml2YXRlIGNhdGNoU2F2ZUVycm9ycyhlcnI6IGFueSk6IGFueSB7XHJcbiAgICBsZXQgZSA9IGVycjtcclxuICAgIFxyXG4gICAgaWYgKGUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgIHJldHVybiBlLnRoZW4oeCA9PiB0aGlzLmNhdGNoU2F2ZUVycm9ycyh4KSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZS5lcnJvcikge1xyXG4gICAgICBlID0gZS5lcnJvcjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZS5tZXNzYWdlKVxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvciA9IGUubWVzc2FnZTtcclxuICAgIGVsc2UgaWYgKGUuTWVzc2FnZSlcclxuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IgPSBlLk1lc3NhZ2U7XHJcbiAgICBlbHNlIHRoaXMudmFsaWRhdGlvbkVycm9yID0gZTtcclxuICAgIGxldCBzID0gZS5tb2RlbFN0YXRlO1xyXG4gICAgaWYgKCFzKVxyXG4gICAgICBzID0gZS5Nb2RlbFN0YXRlO1xyXG4gICAgaWYgKHMpIHtcclxuICAgICAgT2JqZWN0LmtleXMocykuZm9yRWFjaChrID0+IHtcclxuICAgICAgICBsZXQgYyA9IHRoaXMuY29sdW1ucy5maW5kKGspO1xyXG4gICAgICAgIGlmIChjKVxyXG4gICAgICAgICAgYy52YWxpZGF0aW9uRXJyb3IgPSBzW2tdO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRocm93IGVycjtcclxuXHJcbiAgfVxyXG5cclxuICBkZWxldGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fX2VudGl0eURhdGEuZGVsZXRlKCkuY2F0Y2goZSA9PiB0aGlzLmNhdGNoU2F2ZUVycm9ycyhlKSk7XHJcblxyXG4gIH1cclxuICB1bmRvQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuX19lbnRpdHlEYXRhLnJlc2V0KCk7XHJcbiAgICB0aGlzLl9fY2xlYXJFcnJvcnMoKTtcclxuICB9XHJcbiAgYXN5bmMgcmVsb2FkKCkge1xyXG4gICAgdGhyb3cgJ25vdCBpbXBsZW1lbnRlZCc7XHJcbiAgfVxyXG4gIC8vQGludGVybmFsXHJcbiAgX19jbGVhckVycm9ycygpIHtcclxuICAgIHRoaXMuX19jb2x1bW5zLmZvckVhY2goYyA9PiBjLl9fY2xlYXJFcnJvcnMoKSk7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25FcnJvciA9IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgd2FzQ2hhbmdlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9fZW50aXR5RGF0YS53YXNDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgLy9AaW50ZXJuYWxcclxuICBfX2FwcGx5Q29sdW1uKHk6IENvbHVtbjxhbnk+KSB7XHJcbiAgICBpZiAoIXkuZGVmcy5jYXB0aW9uKVxyXG4gICAgICB5LmRlZnMuY2FwdGlvbiA9IG1ha2VUaXRsZSh5LmRlZnMua2V5KTtcclxuICAgIHkuX192YWx1ZVByb3ZpZGVyID0gdGhpcy5fX2VudGl0eURhdGE7XHJcbiAgICBpZiAodGhpcy5fX2NvbHVtbnMuaW5kZXhPZih5KSA8IDApXHJcbiAgICAgIHRoaXMuX19jb2x1bW5zLnB1c2goeSk7XHJcbiAgfVxyXG5cclxuICAvL0BpbnRlcm5hbFxyXG4gIHByaXZhdGUgX19jb2x1bW5zOiBDb2x1bW48YW55PltdID0gW107XHJcbiAgZ2V0IGNvbHVtbnMoKSB7XHJcbiAgICByZXR1cm4gbmV3IEVudGl0eUNvbHVtbnModGhpcy5fX2NvbHVtbnMsIHRoaXMuX19pZENvbHVtbik7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlPcHRpb25zIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZGJOYW1lPzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbiAgY2FwdGlvbj86IHN0cmluZztcclxuICBhbGxvd0FwaVJlYWQ/OiBBbGxvd2VkO1xyXG4gIGFsbG93QXBpVXBkYXRlPzogQWxsb3dlZDtcclxuICBhbGxvd0FwaURlbGV0ZT86IEFsbG93ZWQ7XHJcbiAgYWxsb3dBcGlJbnNlcnQ/OiBBbGxvd2VkO1xyXG4gIGFsbG93QXBpQ1JVRD86IEFsbG93ZWQ7XHJcbiAgYXBpRGF0YUZpbHRlcj86ICgpID0+IEZpbHRlckJhc2U7XHJcbiAgc2F2aW5nUm93PzogKCkgPT4gUHJvbWlzZTxhbnk+IHwgYW55O1xyXG5cclxuICB2YWxpZGF0ZT86IChlOiBFbnRpdHk8YW55PikgPT4gUHJvbWlzZTxhbnk+IHwgYW55O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYWtlVGl0bGUobmFtZTogc3RyaW5nKSB7XHJcblxyXG4gIC8vIGluc2VydCBhIHNwYWNlIGJlZm9yZSBhbGwgY2Fwc1xyXG4gIHJldHVybiBuYW1lLnJlcGxhY2UoLyhbQS1aXSkvZywgJyAkMScpXHJcbiAgICAvLyB1cHBlcmNhc2UgdGhlIGZpcnN0IGNoYXJhY3RlclxyXG4gICAgLnJlcGxhY2UoL14uLywgKHN0cikgPT4gc3RyLnRvVXBwZXJDYXNlKCkpLnJlcGxhY2UoJ0VtYWlsJywgJ2VNYWlsJykucmVwbGFjZShcIiBJIERcIiwgXCIgSURcIik7XHJcblxyXG59XHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlEZWZzIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfX29wdGlvbnM6IEVudGl0eU9wdGlvbnMpIHtcclxuXHJcbiAgfVxyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX19vcHRpb25zLm5hbWU7XHJcbiAgfVxyXG4gIGdldCBkYk5hbWUoKSB7XHJcbiAgICBpZiAoIXRoaXMuX19vcHRpb25zLmRiTmFtZSlcclxuICAgICAgdGhpcy5fX29wdGlvbnMuZGJOYW1lID0gdGhpcy5uYW1lO1xyXG4gICAgcmV0dXJuIHZhbHVlT3JFeHByZXNzaW9uVG9WYWx1ZSh0aGlzLl9fb3B0aW9ucy5kYk5hbWUpO1xyXG4gIH1cclxuICBnZXQgY2FwdGlvbigpIHtcclxuICAgIGlmICghdGhpcy5fX29wdGlvbnMuY2FwdGlvbikge1xyXG4gICAgICB0aGlzLl9fb3B0aW9ucy5jYXB0aW9uID0gbWFrZVRpdGxlKHRoaXMubmFtZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fX29wdGlvbnMuY2FwdGlvbjtcclxuICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIEVudGl0eUNvbHVtbnM8VD57XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfX2NvbHVtbnM6IENvbHVtbjxhbnk+W10sIHB1YmxpYyByZWFkb25seSBpZENvbHVtbjogQ29sdW1uPFQ+KSB7XHJcblxyXG4gIH1cclxuICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9fY29sdW1uc1tTeW1ib2wuaXRlcmF0b3JdKCk7XHJcbiAgfVxyXG4gIHRvQXJyYXkoKSB7XHJcbiAgICByZXR1cm4gWy4uLnRoaXMuX19jb2x1bW5zXTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZmluZChrZXk6IHN0cmluZyB8IENvbHVtbjxhbnk+KSB7XHJcbiAgICBsZXQgdGhlS2V5OiBzdHJpbmc7XHJcbiAgICBpZiAoa2V5IGluc3RhbmNlb2YgQ29sdW1uKVxyXG4gICAgICB0aGVLZXkgPSBrZXkuZGVmcy5rZXk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoZUtleSA9IGtleTtcclxuICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLl9fY29sdW1ucykge1xyXG4gICAgICBpZiAoYy5kZWZzLmtleSA9PSB0aGVLZXkpXHJcbiAgICAgICAgcmV0dXJuIGM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbn1cclxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJlbXVsdC9jb3JlLyIsInNvdXJjZXMiOlsic3JjL2VudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBSS9ELE1BQU0sT0FBTyxNQUFNOzs7O0lBQ2pCLFlBQVksT0FBZ0M7O1FBc0Q1QyxpQkFBWSxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQzs7UUFHM0Msa0JBQWE7OztRQUErQixHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUM7O1FBRXRELGlCQUFZOzs7UUFBK0IsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFDOztRQTBJN0MsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFwTXBDLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2FBQ3BDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO2dCQUN6QixJQUFJLE9BQU8sQ0FBQyxTQUFTO29CQUNuQixJQUFJLENBQUMsYUFBYTs7O29CQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQSxDQUFDO2dCQUNqRCxJQUFJLE9BQU8sQ0FBQyxRQUFRO29CQUNsQixJQUFJLENBQUMsWUFBWTs7O29CQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQzthQUNwRDtTQUNGO2FBQ0k7WUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHO2dCQUNmLElBQUksRUFBRSxTQUFTO2FBQ2hCLENBQUM7U0FDSDtJQUNILENBQUM7Ozs7OztJQUtELHFCQUFxQixDQUFDLENBQVU7O1lBRTFCLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUztRQUM1QixJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDeEIsT0FBTyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDOUIsT0FBTyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDOUIsT0FBTyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDL0I7UUFDRCxPQUFPO1lBQ0wsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUM1QyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1lBQ2hELFdBQVcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDaEQsV0FBVyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztZQUNoRCxHQUFHLEVBQUU7Z0JBQ0gsS0FBSzs7OztnQkFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO2FBQ3hFO1NBQ0YsQ0FBQTtJQUVILENBQUM7Ozs7SUFLRCxJQUFJLElBQUk7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzs7Ozs7O0lBZ0JELGFBQWEsQ0FBQyxRQUF5QjtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7U0FDN0M7UUFDRCxJQUFJLFFBQVE7WUFDVixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQzs7WUFDekIsQ0FBQyxHQUFHLG1CQUFLLElBQUksRUFBQTtRQUNqQixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTs7Z0JBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFWixJQUFJLENBQUMsWUFBWSxNQUFNLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUc7b0JBQ2IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJO29CQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFHdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2QjtTQUNGO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7O0lBQ0QsT0FBTzs7WUFDRCxFQUFFLEdBQUcsSUFBSTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxDQUFDLGVBQWU7Z0JBQ25CLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDZixDQUFDLEVBQUMsQ0FBQztRQUNILE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7OztJQUNELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsQ0FBQzs7Ozs7O0lBRU8sb0JBQW9COztZQUN0QixNQUFNLEdBQVEsRUFBRTtRQUNwQixNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87Ozs7UUFBQyxDQUFDLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsQ0FBQyxlQUFlO2dCQUNuQixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQUN0RCxDQUFDLEVBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Ozs7OztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBRW5CLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDbkM7SUFDSCxDQUFDOzs7OztJQUNLLElBQUksQ0FBQywyQkFBK0Q7O1lBQ3hFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUVyQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87Ozs7WUFBQyxDQUFDLENBQUMsRUFBRTtnQkFDekIsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDMUIsQ0FBQyxFQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxZQUFZO2dCQUNuQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSwyQkFBMkI7Z0JBQzdCLE1BQU0sMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFeEIsTUFBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsT0FBTyxNQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7Ozs7WUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztRQUNqRixDQUFDO0tBQUE7Ozs7Ozs7SUFFTyxlQUFlLENBQUMsR0FBUTs7WUFDMUIsQ0FBQyxHQUFHLEdBQUc7UUFFWCxJQUFJLENBQUMsWUFBWSxPQUFPLEVBQUU7WUFDeEIsT0FBTyxDQUFDLENBQUMsSUFBSTs7OztZQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO1lBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDYjtRQUVELElBQUksQ0FBQyxDQUFDLE9BQU87WUFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7YUFDOUIsSUFBSSxDQUFDLENBQUMsT0FBTztZQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7O1lBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDOztZQUMxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVU7UUFDcEIsSUFBSSxDQUFDLENBQUM7WUFDSixDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRTtZQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTzs7OztZQUFDLENBQUMsQ0FBQyxFQUFFOztvQkFDckIsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDO29CQUNILENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUMsRUFBQyxDQUFDO1NBQ0o7UUFDRCxNQUFNLEdBQUcsQ0FBQztJQUVaLENBQUM7Ozs7SUFFRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUs7Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztJQUV4RSxDQUFDOzs7O0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7Ozs7SUFDSyxNQUFNOztZQUNWLE1BQU0saUJBQWlCLENBQUM7UUFDMUIsQ0FBQztLQUFBOzs7OztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO0lBQ25DLENBQUM7Ozs7SUFDRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3hDLENBQUM7Ozs7OztJQU9ELGFBQWEsQ0FBQyxDQUFjO1FBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDOzs7O0lBSUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1RCxDQUFDO0NBR0Y7Ozs7OztJQWpLQywyQkFBaUM7Ozs7O0lBRWpDLHVCQUEwQjs7SUFVMUIsOEJBQTJDOztJQUczQywrQkFBc0Q7O0lBRXRELDhCQUFxRDs7SUFFckQsaUNBQXdCOzs7OztJQUV4Qiw0QkFBbUM7Ozs7O0lBc0luQywyQkFBc0M7Ozs7O0FBT3hDLG1DQWFDOzs7SUFaQyw2QkFBYTs7SUFDYiwrQkFBaUM7O0lBQ2pDLGdDQUFpQjs7SUFDakIscUNBQXVCOztJQUN2Qix1Q0FBeUI7O0lBQ3pCLHVDQUF5Qjs7SUFDekIsdUNBQXlCOztJQUN6QixxQ0FBdUI7O0lBQ3ZCLHNDQUFpQzs7SUFDakMsa0NBQXFDOztJQUVyQyxpQ0FBa0Q7Ozs7OztBQUdwRCxTQUFTLFNBQVMsQ0FBQyxJQUFZO0lBRTdCLGlDQUFpQztJQUNqQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztRQUNwQyxnQ0FBZ0M7U0FDL0IsT0FBTyxDQUFDLElBQUk7Ozs7SUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRWhHLENBQUM7QUFDRCxNQUFNLE9BQU8sVUFBVTs7OztJQUVyQixZQUFvQixTQUF3QjtRQUF4QixjQUFTLEdBQVQsU0FBUyxDQUFlO0lBRTVDLENBQUM7Ozs7SUFDRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQzdCLENBQUM7Ozs7SUFDRCxJQUFJLE1BQU07UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDcEMsT0FBTyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELENBQUM7Ozs7SUFDRCxJQUFJLE9BQU87UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7SUFDaEMsQ0FBQztDQUNGOzs7Ozs7SUFqQmEsK0JBQWdDOzs7OztBQWtCOUMsTUFBTSxPQUFPLGFBQWE7Ozs7O0lBQ3hCLFlBQW9CLFNBQXdCLEVBQWtCLFFBQW1CO1FBQTdELGNBQVMsR0FBVCxTQUFTLENBQWU7UUFBa0IsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUVqRixDQUFDOzs7O0lBQ0QsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzNDLENBQUM7Ozs7SUFDRCxPQUFPO1FBQ0wsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7Ozs7O0lBSUQsSUFBSSxDQUFDLEdBQXlCOztZQUN4QixNQUFjO1FBQ2xCLElBQUksR0FBRyxZQUFZLE1BQU07WUFDdkIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDOztZQUV0QixNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2YsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzlCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTTtnQkFDdEIsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FFRjs7Ozs7O0lBekJhLGtDQUFnQzs7SUFBRSxpQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZXh0LCBBbGxvd2VkIH0gZnJvbSBcIi4vY29udGV4dFwiO1xyXG5pbXBvcnQgeyBEYXRhQXBpU2V0dGluZ3MgfSBmcm9tIFwiLi9kYXRhLWFwaVwiO1xyXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiLi9jb2x1bW5cIjtcclxuaW1wb3J0IHsgRmlsdGVyQmFzZSB9IGZyb20gJy4vZmlsdGVyL2ZpbHRlci1pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgX19FbnRpdHlWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi9fX0VudGl0eVZhbHVlUHJvdmlkZXInO1xyXG5pbXBvcnQgeyB2YWx1ZU9yRXhwcmVzc2lvblRvVmFsdWUgfSBmcm9tICcuL2NvbHVtbi1pbnRlcmZhY2VzJztcclxuXHJcblxyXG4vL0BkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHk8aWRUeXBlPiB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IEVudGl0eU9wdGlvbnMgfCBzdHJpbmcpIHtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgKG9wdGlvbnMpID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgdGhpcy5fX29wdGlvbnMgPSB7IG5hbWU6IG9wdGlvbnMgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLl9fb3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc2F2aW5nUm93KVxyXG4gICAgICAgICAgdGhpcy5fX29uU2F2aW5nUm93ID0gKCkgPT4gb3B0aW9ucy5zYXZpbmdSb3coKTtcclxuICAgICAgICBpZiAob3B0aW9ucy52YWxpZGF0ZSlcclxuICAgICAgICAgIHRoaXMuX19vblZhbGlkYXRlID0gKCkgPT4gb3B0aW9ucy52YWxpZGF0ZSh0aGlzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX19vcHRpb25zID0ge1xyXG4gICAgICAgIG5hbWU6IHVuZGVmaW5lZFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuXHJcblxyXG4gIC8vQGludGVybmFsIFxyXG4gIF9nZXRFbnRpdHlBcGlTZXR0aW5ncyhyOiBDb250ZXh0KTogRGF0YUFwaVNldHRpbmdzPEVudGl0eTxhbnk+PiB7XHJcblxyXG4gICAgbGV0IG9wdGlvbnMgPSB0aGlzLl9fb3B0aW9ucztcclxuICAgIGlmIChvcHRpb25zLmFsbG93QXBpQ1JVRCkge1xyXG4gICAgICBvcHRpb25zLmFsbG93QXBpRGVsZXRlID0gdHJ1ZTtcclxuICAgICAgb3B0aW9ucy5hbGxvd0FwaUluc2VydCA9IHRydWU7XHJcbiAgICAgIG9wdGlvbnMuYWxsb3dBcGlVcGRhdGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYWxsb3dSZWFkOiByLmlzQWxsb3dlZChvcHRpb25zLmFsbG93QXBpUmVhZCksXHJcbiAgICAgIGFsbG93VXBkYXRlOiByLmlzQWxsb3dlZChvcHRpb25zLmFsbG93QXBpVXBkYXRlKSxcclxuICAgICAgYWxsb3dEZWxldGU6IHIuaXNBbGxvd2VkKG9wdGlvbnMuYWxsb3dBcGlEZWxldGUpLFxyXG4gICAgICBhbGxvd0luc2VydDogci5pc0FsbG93ZWQob3B0aW9ucy5hbGxvd0FwaUluc2VydCksXHJcbiAgICAgIGdldDoge1xyXG4gICAgICAgIHdoZXJlOiB4ID0+IG9wdGlvbnMuYXBpRGF0YUZpbHRlciA/IG9wdGlvbnMuYXBpRGF0YUZpbHRlcigpIDogdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIC8vQGludGVybmFsXHJcbiAgcHJpdmF0ZSBfX29wdGlvbnM6IEVudGl0eU9wdGlvbnM7XHJcbiAgLy9AaW50ZXJuYWxcclxuICBwcml2YXRlIF9kZWZzOiBFbnRpdHlEZWZzO1xyXG4gIGdldCBkZWZzKCkge1xyXG4gICAgaWYgKCF0aGlzLl9kZWZzKVxyXG4gICAgICB0aGlzLl9kZWZzID0gbmV3IEVudGl0eURlZnModGhpcy5fX29wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlZnM7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vQGludGVybmFsXHJcbiAgX19lbnRpdHlEYXRhID0gbmV3IF9fRW50aXR5VmFsdWVQcm92aWRlcigpO1xyXG5cclxuICAvL0BpbnRlcm5hbFxyXG4gIF9fb25TYXZpbmdSb3c6ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+ID0gKCkgPT4geyB9O1xyXG4gIC8vQGludGVybmFsXHJcbiAgX19vblZhbGlkYXRlOiAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPiA9ICgpID0+IHsgfTtcclxuXHJcbiAgdmFsaWRhdGlvbkVycm9yOiBzdHJpbmc7XHJcbiAgLy9AaW50ZXJuYWxcclxuICBwcml2YXRlIF9faWRDb2x1bW46IENvbHVtbjxpZFR5cGU+O1xyXG4gIC8vQGludGVybmFsXHJcbiAgX19pbml0Q29sdW1ucyhpZENvbHVtbj86IENvbHVtbjxpZFR5cGU+KSB7XHJcbiAgICBpZiAoIXRoaXMuX19vcHRpb25zLm5hbWUpIHtcclxuICAgICAgdGhpcy5fX29wdGlvbnMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcclxuICAgIH1cclxuICAgIGlmIChpZENvbHVtbilcclxuICAgICAgdGhpcy5fX2lkQ29sdW1uID0gaWRDb2x1bW47XHJcbiAgICBsZXQgeCA9IDxhbnk+dGhpcztcclxuICAgIGZvciAobGV0IGMgaW4geCkge1xyXG4gICAgICBsZXQgeSA9IHhbY107XHJcblxyXG4gICAgICBpZiAoeSBpbnN0YW5jZW9mIENvbHVtbikge1xyXG4gICAgICAgIGlmICgheS5kZWZzLmtleSlcclxuICAgICAgICAgIHkuZGVmcy5rZXkgPSBjO1xyXG4gICAgICAgIGlmICghdGhpcy5fX2lkQ29sdW1uICYmIHkuZGVmcy5rZXkgPT0gJ2lkJylcclxuICAgICAgICAgIHRoaXMuX19pZENvbHVtbiA9IHk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLl9fYXBwbHlDb2x1bW4oeSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fX2lkQ29sdW1uKVxyXG4gICAgICB0aGlzLl9faWRDb2x1bW4gPSB0aGlzLl9fY29sdW1uc1swXTtcclxuICB9XHJcbiAgaXNWYWxpZCgpIHtcclxuICAgIGxldCBvayA9IHRydWU7XHJcbiAgICB0aGlzLl9fY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICBpZiAoYy52YWxpZGF0aW9uRXJyb3IpXHJcbiAgICAgICAgb2sgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG9rO1xyXG4gIH1cclxuICBpc05ldygpIHtcclxuICAgIHJldHVybiB0aGlzLl9fZW50aXR5RGF0YS5pc05ld1JvdygpO1xyXG4gIH1cclxuICAvL0BpbnRlcm5hbFxyXG4gIHByaXZhdGUgX19nZXRWYWxpZGF0aW9uRXJyb3IoKSB7XHJcbiAgICBsZXQgcmVzdWx0OiBhbnkgPSB7fTtcclxuICAgIHJlc3VsdC5tb2RlbFN0YXRlID0ge307XHJcbiAgICB0aGlzLl9fY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICBpZiAoYy52YWxpZGF0aW9uRXJyb3IpXHJcbiAgICAgICAgcmVzdWx0Lm1vZGVsU3RhdGVbYy5kZWZzLmtleV0gPSBjLnZhbGlkYXRpb25FcnJvcjtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgLy9AaW50ZXJuYWxcclxuICBwcml2YXRlIF9fYXNzZXJ0VmFsaWRpdHkoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XHJcblxyXG4gICAgICB0aHJvdyB0aGlzLl9fZ2V0VmFsaWRhdGlvbkVycm9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIHNhdmUoYWZ0ZXJWYWxpZGF0aW9uQmVmb3JlU2F2aW5nPzogKHJvdzogdGhpcykgPT4gUHJvbWlzZTxhbnk+IHwgYW55KSB7XHJcbiAgICB0aGlzLl9fY2xlYXJFcnJvcnMoKTtcclxuXHJcbiAgICB0aGlzLl9fY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICBjLl9fcGVyZm9ybVZhbGlkYXRpb24oKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLl9fb25WYWxpZGF0ZSlcclxuICAgICAgdGhpcy5fX29uVmFsaWRhdGUoKTtcclxuICAgIGlmIChhZnRlclZhbGlkYXRpb25CZWZvcmVTYXZpbmcpXHJcbiAgICAgIGF3YWl0IGFmdGVyVmFsaWRhdGlvbkJlZm9yZVNhdmluZyh0aGlzKTtcclxuICAgIHRoaXMuX19hc3NlcnRWYWxpZGl0eSgpO1xyXG5cclxuICAgIGF3YWl0ICB0aGlzLl9fb25TYXZpbmdSb3coKTtcclxuICAgIHRoaXMuX19hc3NlcnRWYWxpZGl0eSgpO1xyXG4gICAgcmV0dXJuIGF3YWl0ICB0aGlzLl9fZW50aXR5RGF0YS5zYXZlKHRoaXMpLmNhdGNoKGUgPT4gdGhpcy5jYXRjaFNhdmVFcnJvcnMoZSkpO1xyXG4gIH1cclxuICAvL0BpbnRlcm5hbFxyXG4gIHByaXZhdGUgY2F0Y2hTYXZlRXJyb3JzKGVycjogYW55KTogYW55IHtcclxuICAgIGxldCBlID0gZXJyO1xyXG4gICAgXHJcbiAgICBpZiAoZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgcmV0dXJuIGUudGhlbih4ID0+IHRoaXMuY2F0Y2hTYXZlRXJyb3JzKHgpKTtcclxuICAgIH1cclxuICAgIGlmIChlLmVycm9yKSB7XHJcbiAgICAgIGUgPSBlLmVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlLm1lc3NhZ2UpXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yID0gZS5tZXNzYWdlO1xyXG4gICAgZWxzZSBpZiAoZS5NZXNzYWdlKVxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvciA9IGUuTWVzc2FnZTtcclxuICAgIGVsc2UgdGhpcy52YWxpZGF0aW9uRXJyb3IgPSBlO1xyXG4gICAgbGV0IHMgPSBlLm1vZGVsU3RhdGU7XHJcbiAgICBpZiAoIXMpXHJcbiAgICAgIHMgPSBlLk1vZGVsU3RhdGU7XHJcbiAgICBpZiAocykge1xyXG4gICAgICBPYmplY3Qua2V5cyhzKS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICAgIGxldCBjID0gdGhpcy5jb2x1bW5zLmZpbmQoayk7XHJcbiAgICAgICAgaWYgKGMpXHJcbiAgICAgICAgICBjLnZhbGlkYXRpb25FcnJvciA9IHNba107XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhyb3cgZXJyO1xyXG5cclxuICB9XHJcblxyXG4gIGRlbGV0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9fZW50aXR5RGF0YS5kZWxldGUoKS5jYXRjaChlID0+IHRoaXMuY2F0Y2hTYXZlRXJyb3JzKGUpKTtcclxuXHJcbiAgfVxyXG4gIHVuZG9DaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5fX2VudGl0eURhdGEucmVzZXQoKTtcclxuICAgIHRoaXMuX19jbGVhckVycm9ycygpO1xyXG4gIH1cclxuICBhc3luYyByZWxvYWQoKSB7XHJcbiAgICB0aHJvdyAnbm90IGltcGxlbWVudGVkJztcclxuICB9XHJcbiAgLy9AaW50ZXJuYWxcclxuICBfX2NsZWFyRXJyb3JzKCkge1xyXG4gICAgdGhpcy5fX2NvbHVtbnMuZm9yRWFjaChjID0+IGMuX19jbGVhckVycm9ycygpKTtcclxuICAgIHRoaXMudmFsaWRhdGlvbkVycm9yID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICB3YXNDaGFuZ2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX19lbnRpdHlEYXRhLndhc0NoYW5nZWQoKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICAvL0BpbnRlcm5hbFxyXG4gIF9fYXBwbHlDb2x1bW4oeTogQ29sdW1uPGFueT4pIHtcclxuICAgIGlmICgheS5kZWZzLmNhcHRpb24pXHJcbiAgICAgIHkuZGVmcy5jYXB0aW9uID0gbWFrZVRpdGxlKHkuZGVmcy5rZXkpO1xyXG4gICAgeS5fX3ZhbHVlUHJvdmlkZXIgPSB0aGlzLl9fZW50aXR5RGF0YTtcclxuICAgIGlmICh0aGlzLl9fY29sdW1ucy5pbmRleE9mKHkpIDwgMClcclxuICAgICAgdGhpcy5fX2NvbHVtbnMucHVzaCh5KTtcclxuICB9XHJcblxyXG4gIC8vQGludGVybmFsXHJcbiAgcHJpdmF0ZSBfX2NvbHVtbnM6IENvbHVtbjxhbnk+W10gPSBbXTtcclxuICBnZXQgY29sdW1ucygpIHtcclxuICAgIHJldHVybiBuZXcgRW50aXR5Q29sdW1ucyh0aGlzLl9fY29sdW1ucywgdGhpcy5fX2lkQ29sdW1uKTtcclxuICB9XHJcblxyXG5cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eU9wdGlvbnMge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBkYk5hbWU/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuICBjYXB0aW9uPzogc3RyaW5nO1xyXG4gIGFsbG93QXBpUmVhZD86IEFsbG93ZWQ7XHJcbiAgYWxsb3dBcGlVcGRhdGU/OiBBbGxvd2VkO1xyXG4gIGFsbG93QXBpRGVsZXRlPzogQWxsb3dlZDtcclxuICBhbGxvd0FwaUluc2VydD86IEFsbG93ZWQ7XHJcbiAgYWxsb3dBcGlDUlVEPzogQWxsb3dlZDtcclxuICBhcGlEYXRhRmlsdGVyPzogKCkgPT4gRmlsdGVyQmFzZTtcclxuICBzYXZpbmdSb3c/OiAoKSA9PiBQcm9taXNlPGFueT4gfCBhbnk7XHJcblxyXG4gIHZhbGlkYXRlPzogKGU6IEVudGl0eTxhbnk+KSA9PiBQcm9taXNlPGFueT4gfCBhbnk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1ha2VUaXRsZShuYW1lOiBzdHJpbmcpIHtcclxuXHJcbiAgLy8gaW5zZXJ0IGEgc3BhY2UgYmVmb3JlIGFsbCBjYXBzXHJcbiAgcmV0dXJuIG5hbWUucmVwbGFjZSgvKFtBLVpdKS9nLCAnICQxJylcclxuICAgIC8vIHVwcGVyY2FzZSB0aGUgZmlyc3QgY2hhcmFjdGVyXHJcbiAgICAucmVwbGFjZSgvXi4vLCAoc3RyKSA9PiBzdHIudG9VcHBlckNhc2UoKSkucmVwbGFjZSgnRW1haWwnLCAnZU1haWwnKS5yZXBsYWNlKFwiIEkgRFwiLCBcIiBJRFwiKTtcclxuXHJcbn1cclxuZXhwb3J0IGNsYXNzIEVudGl0eURlZnMge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9fb3B0aW9uczogRW50aXR5T3B0aW9ucykge1xyXG5cclxuICB9XHJcbiAgZ2V0IG5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fX29wdGlvbnMubmFtZTtcclxuICB9XHJcbiAgZ2V0IGRiTmFtZSgpIHtcclxuICAgIGlmICghdGhpcy5fX29wdGlvbnMuZGJOYW1lKVxyXG4gICAgICB0aGlzLl9fb3B0aW9ucy5kYk5hbWUgPSB0aGlzLm5hbWU7XHJcbiAgICByZXR1cm4gdmFsdWVPckV4cHJlc3Npb25Ub1ZhbHVlKHRoaXMuX19vcHRpb25zLmRiTmFtZSk7XHJcbiAgfVxyXG4gIGdldCBjYXB0aW9uKCkge1xyXG4gICAgaWYgKCF0aGlzLl9fb3B0aW9ucy5jYXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuX19vcHRpb25zLmNhcHRpb24gPSBtYWtlVGl0bGUodGhpcy5uYW1lKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9fb3B0aW9ucy5jYXB0aW9uO1xyXG4gIH1cclxufVxyXG5leHBvcnQgY2xhc3MgRW50aXR5Q29sdW1uczxUPntcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9fY29sdW1uczogQ29sdW1uPGFueT5bXSwgcHVibGljIHJlYWRvbmx5IGlkQ29sdW1uOiBDb2x1bW48VD4pIHtcclxuXHJcbiAgfVxyXG4gIFtTeW1ib2wuaXRlcmF0b3JdKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX19jb2x1bW5zW1N5bWJvbC5pdGVyYXRvcl0oKTtcclxuICB9XHJcbiAgdG9BcnJheSgpIHtcclxuICAgIHJldHVybiBbLi4udGhpcy5fX2NvbHVtbnNdO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBmaW5kKGtleTogc3RyaW5nIHwgQ29sdW1uPGFueT4pIHtcclxuICAgIGxldCB0aGVLZXk6IHN0cmluZztcclxuICAgIGlmIChrZXkgaW5zdGFuY2VvZiBDb2x1bW4pXHJcbiAgICAgIHRoZUtleSA9IGtleS5kZWZzLmtleTtcclxuICAgIGVsc2VcclxuICAgICAgdGhlS2V5ID0ga2V5O1xyXG4gICAgZm9yIChjb25zdCBjIG9mIHRoaXMuX19jb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjLmRlZnMua2V5ID09IHRoZUtleSlcclxuICAgICAgICByZXR1cm4gYztcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0= |
@@ -180,7 +180,3 @@ /** | ||
/** @type {?} */ | ||
var classType = (/** @type {?} */ (c)); | ||
/** @type {?} */ | ||
var classKey = classType.__key; | ||
/** @type {?} */ | ||
var r = (/** @type {?} */ (dsCache.get(classKey))); | ||
var r = (/** @type {?} */ (dsCache.get(c))); | ||
if (!r) { | ||
@@ -196,3 +192,3 @@ r = new SpecificEntityHelper((/** | ||
}), this._lookupCache, this, dataSource); | ||
dsCache.set(classKey, r); | ||
dsCache.set(c, r); | ||
} | ||
@@ -866,7 +862,2 @@ return r; | ||
export function EntityType() { } | ||
if (false) { | ||
/** @type {?} */ | ||
EntityType.prototype.__key; | ||
/* Skipping unhandled member: new(...args: any[]): Entity<T>;*/ | ||
} | ||
/** @type {?} */ | ||
@@ -894,3 +885,2 @@ export var allEntities = []; | ||
allEntities.push(f); | ||
f.__key = theEntityClass.name + allEntities.indexOf(f); | ||
return f; | ||
@@ -979,2 +969,2 @@ } | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByZW11bHQvY29yZS8iLCJzb3VyY2VzIjpbInNyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQTRILG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEwsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFpQixZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNekM7SUFVSSxpQkFBWSxJQUFpQixFQUFVLE9BQW1CO1FBQW5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUEwQmhELGNBQVMsR0FBRyxLQUFLLENBQUM7UUEyQzVCLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBcUUsQ0FBQztRQW9DckYsaUJBQVksR0FBdUIsRUFBRSxDQUFDO1FBeEdsQyxJQUFJLElBQUksWUFBWSxVQUFVLEVBQUU7O2dCQUN4QixJQUFJLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGdCQUFnQixDQUFDLE9BQU8s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QUNILFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsT0FBTyxDQUFDLENBQUM7QUFDYixDQUFDOzs7O0FBQ0QsOEJBSUM7OztJQUhHLHNCQUFXOztJQUNYLHdCQUFhOztJQUNiLHlCQUFnQjs7O0FBS3BCOzs7SUFDSSxjQUFtQixHQUFXO1FBQVgsUUFBRyxHQUFILEdBQUcsQ0FBUTtJQUU5QixDQUFDOzs7OztJQUNNLFFBQUc7Ozs7SUFBVixVQUFXLE9BQWdCO1FBQ3ZCOzs7O1FBQU8sVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQXJCLENBQXFCLEVBQUM7SUFDdEMsQ0FBQztJQUNMLFdBQUM7QUFBRCxDQUFDLEFBUEQsSUFPQzs7Ozs7SUFOZSxtQkFBa0I7O0FBTzZDLENBQUM7Ozs7O0FBSWhGLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBdUI7SUFDaEQ7Ozs7SUFBTyxVQUFVLE1BQU07UUFDbkIsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUMsRUFBQztBQUNOLENBQUM7O0lBR0ssa0JBQWtCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDOzs7OztBQUV2RCwwQkFHQzs7O0lBRkcsMEJBQVk7O0lBQ1osNkJBQXVCOzs7OztBQUUzQixpQ0FHQzs7Ozs7O0lBREcsdURBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERhdGFQcm92aWRlciwgRmluZE9wdGlvbnMsIEVudGl0eURhdGFQcm92aWRlciwgRW50aXR5RGF0YVByb3ZpZGVyRmluZE9wdGlvbnMsIEVudGl0eVByb3ZpZGVyLCBFbnRpdHlPcmRlckJ5LCBFbnRpdHlXaGVyZSwgZW50aXR5T3JkZXJCeVRvU29ydCB9IGZyb20gXCIuL2RhdGEtaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBSZXN0RGF0YVByb3ZpZGVyIH0gZnJvbSBcIi4vZGF0YS1wcm92aWRlcnMvcmVzdC1kYXRhLXByb3ZpZGVyXCI7XHJcbmltcG9ydCB7IEFuZ3VsYXJIdHRwUHJvdmlkZXIgfSBmcm9tIFwiLi9hbmd1bGFyL0FuZ3VsYXJIdHRwUHJvdmlkZXJcIjtcclxuXHJcbmltcG9ydCB7IEluTWVtb3J5RGF0YVByb3ZpZGVyIH0gZnJvbSBcIi4vZGF0YS1wcm92aWRlcnMvaW4tbWVtb3J5LWRhdGFiYXNlXCI7XHJcbmltcG9ydCB7IERhdGFBcGlSZXF1ZXN0LCBEYXRhQXBpU2V0dGluZ3MgfSBmcm9tIFwiLi9kYXRhLWFwaVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzU3RyaW5nLCBpc0Jvb2xlYW4gfSBmcm9tIFwidXRpbFwiO1xyXG5cclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiLi9jb2x1bW5cIjtcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSBcIi4vZW50aXR5XCI7XHJcbmltcG9ydCB7IExvb2t1cCB9IGZyb20gXCIuL2xvb2t1cFwiO1xyXG5pbXBvcnQgeyBJRGF0YVNldHRpbmdzLCBHcmlkU2V0dGluZ3MgfSBmcm9tIFwiLi9ncmlkLXNldHRpbmdzXCI7XHJcblxyXG5pbXBvcnQgeyBGaWx0ZXJCYXNlIH0gZnJvbSAnLi9maWx0ZXIvZmlsdGVyLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuL3NlcnZlci1hY3Rpb24nO1xyXG5pbXBvcnQgeyBWYWx1ZUxpc3RJdGVtIH0gZnJvbSAnLi9jb2x1bW4taW50ZXJmYWNlcyc7XHJcblxyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb250ZXh0IHtcclxuICAgIGNsZWFyQWxsQ2FjaGUoKTogYW55IHtcclxuICAgICAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy5fbG9va3VwQ2FjaGUgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBpc1NpZ25lZEluKCkge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMudXNlcjtcclxuICAgIH1cclxuICAgIGNvbnN0cnVjdG9yKGh0dHA/OiBIdHRwQ2xpZW50LCBwcml2YXRlIF9kaWFsb2c/OiBNYXREaWFsb2cpIHtcclxuICAgICAgICBpZiAoaHR0cCBpbnN0YW5jZW9mIEh0dHBDbGllbnQpIHtcclxuICAgICAgICAgICAgdmFyIHByb3YgPSBuZXcgQW5ndWxhckh0dHBQcm92aWRlcihodHRwKTtcclxuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IG5ldyBSZXN0RGF0YVByb3ZpZGVyKENvbnRleHQuYXBpQmFzZVVybFxyXG4gICAgICAgICAgICAgICAgLCBwcm92XHJcbiAgICAgICAgICAgICAgICAvLyxuZXcgcmVzdERhdGFQcm92aWRlckh0dHBQcm92aWRlclVzaW5nRmV0Y2goKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBBY3Rpb24ucHJvdmlkZXIgPSBwcm92O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IG5ldyBJbk1lbW9yeURhdGFQcm92aWRlcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRDb29raWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgZ2V0SG9zdCgpIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBnZXRQYXRoSW5VcmwoKSB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJvdGVjdGVkIF9kYXRhU291cmNlOiBEYXRhUHJvdmlkZXI7XHJcbiAgICBwcm90ZWN0ZWQgX29uU2VydmVyID0gZmFsc2U7XHJcbiAgICBnZXQgb25TZXJ2ZXIoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uU2VydmVyO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF91c2VyOiBVc2VySW5mbztcclxuICAgIGdldCB1c2VyKCkgeyByZXR1cm4gdGhpcy5fdXNlcjsgfVxyXG5cclxuICAgIF9zZXRVc2VyKGluZm86IFVzZXJJbmZvKSB7XHJcbiAgICAgICAgdGhpcy5fdXNlciA9IGluZm87XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgYXBpQmFzZVVybCA9ICdhcGknO1xyXG5cclxuICAgIGlzQWxsb3dlZChyb2xlczogQWxsb3dlZCkge1xyXG4gICAgICAgIGlmIChyb2xlcyA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHJvbGVzIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCByb2xlIG9mIHJvbGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FsbG93ZWQocm9sZSkgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXNGdW5jdGlvbihyb2xlcykpIHtcclxuICAgICAgICAgICAgcmV0dXJuICg8YW55PnJvbGVzKSh0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzQm9vbGVhbihyb2xlcykpXHJcbiAgICAgICAgICAgIHJldHVybiByb2xlcztcclxuXHJcbiAgICAgICAgaWYgKHJvbGVzIGluc3RhbmNlb2YgUm9sZSkge1xyXG4gICAgICAgICAgICByb2xlcyA9IHJvbGVzLmtleTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLnVzZXIpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAoaXNTdHJpbmcocm9sZXMpKVxyXG4gICAgICAgICAgICBpZiAodGhpcy51c2VyLnJvbGVzLmluZGV4T2Yocm9sZXMudG9TdHJpbmcoKSkgPj0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNhY2hlID0gbmV3IE1hcDxEYXRhUHJvdmlkZXIsIE1hcDxzdHJpbmcsIFNwZWNpZmljRW50aXR5SGVscGVyPGFueSwgRW50aXR5PGFueT4+Pj4oKTtcclxuICAgIHB1YmxpYyBmb3I8bG9va3VwSWRUeXBlLCBUIGV4dGVuZHMgRW50aXR5PGxvb2t1cElkVHlwZT4+KGM6IHsgbmV3KC4uLmFyZ3M6IGFueVtdKTogVDsgfSwgZGF0YVNvdXJjZT86IERhdGFQcm92aWRlcikge1xyXG4gICAgICAgIGlmICghZGF0YVNvdXJjZSlcclxuICAgICAgICAgICAgZGF0YVNvdXJjZSA9IHRoaXMuX2RhdGFTb3VyY2U7XHJcblxyXG4gICAgICAgIGxldCBkc0NhY2hlID0gdGhpcy5jYWNoZS5nZXQoZGF0YVNvdXJjZSk7XHJcbiAgICAgICAgaWYgKCFkc0NhY2hlKSB7XHJcbiAgICAgICAgICAgIGRzQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgU3BlY2lmaWNFbnRpdHlIZWxwZXI8YW55LCBFbnRpdHk8YW55Pj4+KCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KGRhdGFTb3VyY2UsIGRzQ2FjaGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgY2xhc3NUeXBlID0gYyBhcyBhbnk7XHJcbiAgICAgICAgbGV0IGNsYXNzS2V5ID0gY2xhc3NUeXBlLl9fa2V5O1xyXG4gICAgICAgIGxldCByID0gZHNDYWNoZS5nZXQoY2xhc3NLZXkpIGFzIFNwZWNpZmljRW50aXR5SGVscGVyPGxvb2t1cElkVHlwZSwgVD47XHJcbiAgICAgICAgaWYgKCFyKSB7XHJcbiAgICAgICAgICAgIHIgPSBuZXcgU3BlY2lmaWNFbnRpdHlIZWxwZXI8bG9va3VwSWRUeXBlLCBUPigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZSA9IG5ldyBjKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgZS5fX2luaXRDb2x1bW5zKCg8YW55PmUpLmlkKTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZTtcclxuICAgICAgICAgICAgfSwgdGhpcy5fbG9va3VwQ2FjaGUsIHRoaXMsIGRhdGFTb3VyY2UpO1xyXG4gICAgICAgICAgICBkc0NhY2hlLnNldChjbGFzc0tleSwgcik7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgIHJldHVybiByO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgb3BlbkRpYWxvZzxULCBDPihjb21wb25lbnQ6IHsgbmV3KC4uLmFyZ3M6IGFueVtdKTogQzsgfSwgc2V0UGFyYW1ldGVyczogKGl0OiBDKSA9PiB2b2lkLCByZXR1cm5BVmFsdWU/OiAoaXQ6IEMpID0+IFQpIHtcclxuXHJcbiAgICAgICAgbGV0IHJlZiA9IHRoaXMuX2RpYWxvZy5vcGVuKGNvbXBvbmVudCwgY29tcG9uZW50W2RpYWxvZ0NvbmZpZ01lbWJlcl0pO1xyXG4gICAgICAgIHNldFBhcmFtZXRlcnMocmVmLmNvbXBvbmVudEluc3RhbmNlKTtcclxuICAgICAgICBhd2FpdCByZWYuYmVmb3JlQ2xvc2UoKS50b1Byb21pc2UoKTtcclxuICAgICAgICBpZiAocmV0dXJuQVZhbHVlKVxyXG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuQVZhbHVlKHJlZi5jb21wb25lbnRJbnN0YW5jZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2xvb2t1cENhY2hlOiBMb29rdXBDYWNoZTxhbnk+W10gPSBbXTtcclxufVxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIERhdGFQcm92aWRlckZhY3RvcnlCdWlsZGVyID0gKHJlcTogQ29udGV4dCkgPT4gRGF0YVByb3ZpZGVyO1xyXG5leHBvcnQgY2xhc3MgU2VydmVyQ29udGV4dCBleHRlbmRzIENvbnRleHQge1xyXG4gICAgY29uc3RydWN0b3IoZHA/OiBEYXRhUHJvdmlkZXIpIHtcclxuICAgICAgICBzdXBlcih1bmRlZmluZWQpO1xyXG4gICAgICAgIHRoaXMuX29uU2VydmVyID0gdHJ1ZTtcclxuICAgICAgICBpZiAoZHApXHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YVByb3ZpZGVyKGRwKTtcclxuXHJcblxyXG4gICAgfVxyXG4gICAgZ2V0SG9zdCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXEuZ2V0SGVhZGVyKCdob3N0Jyk7XHJcbiAgICB9XHJcbiAgICBnZXRQYXRoSW5VcmwoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxLmdldEJhc2VVcmwoKTtcclxuICAgIH1cclxuICAgIGdldENvb2tpZShuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgY29va2llID0gdGhpcy5yZXEuZ2V0SGVhZGVyKCdjb29raWUnKTtcclxuICAgICAgICBpZiAoY29va2llKVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZXJhdG9yIG9mIGNvb2tpZS5zcGxpdCgnOycpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbUluZm8gPSBpdGVyYXRvci5zcGxpdCgnPScpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1JbmZvICYmIGl0ZW1JbmZvWzBdLnRyaW0oKSA9PSBuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1JbmZvWzFdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHByaXZhdGUgcmVxOiBEYXRhQXBpUmVxdWVzdDtcclxuXHJcbiAgICBzZXRSZXEocmVxOiBEYXRhQXBpUmVxdWVzdCkge1xyXG4gICAgICAgIHRoaXMucmVxID0gcmVxO1xyXG4gICAgICAgIHRoaXMuX3VzZXIgPSByZXEudXNlciA/IHJlcS51c2VyIDogdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgc2V0RGF0YVByb3ZpZGVyKGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyKSB7XHJcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IGRhdGFQcm92aWRlcjtcclxuICAgIH1cclxuICAgIGdldE9yaWdpbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXEuZ2V0SGVhZGVyKCdvcmlnaW4nKVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFNwZWNpZmljRW50aXR5SGVscGVyPGxvb2t1cElkVHlwZSwgVCBleHRlbmRzIEVudGl0eTxsb29rdXBJZFR5cGU+PiBpbXBsZW1lbnRzIEVudGl0eVByb3ZpZGVyPFQ+e1xyXG4gICAgX2dldEFwaVNldHRpbmdzKCk6IERhdGFBcGlTZXR0aW5nczxUPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Ll9nZXRFbnRpdHlBcGlTZXR0aW5ncyh0aGlzLmNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBwcml2YXRlIGVudGl0eTogVDtcclxuICAgIHByaXZhdGUgX2VkcDogRW50aXR5RGF0YVByb3ZpZGVyO1xyXG4gICAgcHJpdmF0ZSBfZmFjdG9yeTogKG5ld1JvdzogYm9vbGVhbikgPT4gVDtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjcmVhdGU6ICgpID0+IFQsIHByaXZhdGUgX2xvb2t1cENhY2hlOiBMb29rdXBDYWNoZTxhbnk+W10sIHByaXZhdGUgY29udGV4dDogQ29udGV4dCwgZGF0YVNvdXJjZTogRGF0YVByb3ZpZGVyKSB7XHJcbiAgICAgICAgdGhpcy5fZmFjdG9yeSA9IG5ld1JvdyA9PiB7XHJcbiAgICAgICAgICAgIGxldCBlID0gY3JlYXRlKCk7XHJcbiAgICAgICAgICAgIGUuX19lbnRpdHlEYXRhLmRhdGFQcm92aWRlciA9IHRoaXMuX2VkcDtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dC5vblNlcnZlcilcclxuICAgICAgICAgICAgICAgIGUuX19lbnRpdHlEYXRhLmluaXRTZXJ2ZXJFeHByZXNzaW9ucyA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChlLmNvbHVtbnMudG9BcnJheSgpLm1hcChhc3luYyBjID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgYy5fX2NhbGNTZXJ2ZXJFeHByZXNzaW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobmV3Um93KSB7XHJcbiAgICAgICAgICAgICAgICBlLmNvbHVtbnMudG9BcnJheSgpLmZvckVhY2goYyA9PiB7IGMuX19zZXREZWZhdWx0Rm9yTmV3Um93KCkgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGU7XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmNyZWF0ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZhY3RvcnkodHJ1ZSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmVudGl0eSA9IHRoaXMuX2ZhY3RvcnkoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuX2VkcCA9IGRhdGFTb3VyY2UuZ2V0RW50aXR5RGF0YVByb3ZpZGVyKHRoaXMuZW50aXR5KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgbG9va3VwKGZpbHRlcjogQ29sdW1uPGxvb2t1cElkVHlwZT4gfCAoKGVudGl0eVR5cGU6IFQpID0+IEZpbHRlckJhc2UpKTogVCB7XHJcblxyXG4gICAgICAgIGxldCBrZXkgPSB0aGlzLmVudGl0eS5kZWZzLm5hbWU7XHJcbiAgICAgICAgbGV0IGxvb2t1cDogTG9va3VwPGxvb2t1cElkVHlwZSwgVD47XHJcbiAgICAgICAgdGhpcy5fbG9va3VwQ2FjaGUuZm9yRWFjaChsID0+IHtcclxuICAgICAgICAgICAgaWYgKGwua2V5ID09IGtleSlcclxuICAgICAgICAgICAgICAgIGxvb2t1cCA9IGwubG9va3VwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghbG9va3VwKSB7XHJcbiAgICAgICAgICAgIGxvb2t1cCA9IG5ldyBMb29rdXAodGhpcy5lbnRpdHksIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLl9sb29rdXBDYWNoZS5wdXNoKHsga2V5LCBsb29rdXAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsb29rdXAuZ2V0KGZpbHRlcik7XHJcblxyXG4gICAgfVxyXG4gICAgbG9va3VwQXN5bmMoZmlsdGVyOiBDb2x1bW48bG9va3VwSWRUeXBlPiB8ICgoZW50aXR5VHlwZTogVCkgPT4gRmlsdGVyQmFzZSkpOiBQcm9taXNlPFQ+IHtcclxuXHJcbiAgICAgICAgbGV0IGtleSA9IHRoaXMuZW50aXR5LmRlZnMubmFtZTtcclxuICAgICAgICBsZXQgbG9va3VwOiBMb29rdXA8bG9va3VwSWRUeXBlLCBUPjtcclxuICAgICAgICB0aGlzLl9sb29rdXBDYWNoZS5mb3JFYWNoKGwgPT4ge1xyXG4gICAgICAgICAgICBpZiAobC5rZXkgPT0ga2V5KVxyXG4gICAgICAgICAgICAgICAgbG9va3VwID0gbC5sb29rdXA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFsb29rdXApIHtcclxuICAgICAgICAgICAgbG9va3VwID0gbmV3IExvb2t1cCh0aGlzLmVudGl0eSwgdGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvb2t1cENhY2hlLnB1c2goeyBrZXksIGxvb2t1cCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxvb2t1cC53aGVuR2V0KGZpbHRlcik7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBhc3luYyBjb3VudCh3aGVyZT86IChlbnRpdHk6IFQpID0+IEZpbHRlckJhc2UpIHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fZWRwLmNvdW50KHdoZXJlID8gd2hlcmUodGhpcy5lbnRpdHkpIDogdW5kZWZpbmVkKTtcclxuICAgIH1cclxuICAgIGFzeW5jIGZvcmVhY2god2hlcmU6IChlbnRpdHk6IFQpID0+IEZpbHRlckJhc2UsIHdoYXQ/OiAoZW50aXR5OiBUKSA9PiBQcm9taXNlPHZvaWQ+KSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zID0gYXdhaXQgdGhpcy5maW5kKHtcclxuICAgICAgICAgICAgd2hlcmU6IHdoZXJlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHdoYXQoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVPcHRpb25zKG9wdGlvbnM6IEZpbmRPcHRpb25zPFQ+KSB7XHJcbiAgICAgICAgaWYgKCFvcHRpb25zKVxyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIGxldCBnZXRPcHRpb25zOiBFbnRpdHlEYXRhUHJvdmlkZXJGaW5kT3B0aW9ucyA9IHt9O1xyXG4gICAgICAgIGlmIChvcHRpb25zLndoZXJlKVxyXG4gICAgICAgICAgICBnZXRPcHRpb25zLndoZXJlID0gb3B0aW9ucy53aGVyZSh0aGlzLmVudGl0eSk7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMub3JkZXJCeSlcclxuICAgICAgICAgICAgZ2V0T3B0aW9ucy5vcmRlckJ5ID0gZW50aXR5T3JkZXJCeVRvU29ydCh0aGlzLmVudGl0eSwgb3B0aW9ucy5vcmRlckJ5KTtcclxuICAgICAgICBpZiAob3B0aW9ucy5saW1pdClcclxuICAgICAgICAgICAgZ2V0T3B0aW9ucy5saW1pdCA9IG9wdGlvbnMubGltaXQ7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMucGFnZSlcclxuICAgICAgICAgICAgZ2V0T3B0aW9ucy5wYWdlID0gb3B0aW9ucy5wYWdlO1xyXG4gICAgICAgIGlmIChvcHRpb25zLl9fY3VzdG9tRmluZERhdGEpXHJcbiAgICAgICAgICAgIGdldE9wdGlvbnMuX19jdXN0b21GaW5kRGF0YSA9IG9wdGlvbnMuX19jdXN0b21GaW5kRGF0YTtcclxuICAgICAgICByZXR1cm4gZ2V0T3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBmaW5kKG9wdGlvbnM/OiBGaW5kT3B0aW9uczxUPikge1xyXG4gICAgICAgIGxldCByID0gYXdhaXQgdGhpcy5fZWRwLmZpbmQodGhpcy50cmFuc2xhdGVPcHRpb25zKG9wdGlvbnMpKTtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoci5tYXAoYXN5bmMgaSA9PiB7XHJcbiAgICAgICAgICAgIGxldCByID0gdGhpcy5fZmFjdG9yeShmYWxzZSk7XHJcbiAgICAgICAgICAgIGF3YWl0IHIuX19lbnRpdHlEYXRhLnNldERhdGEoaSwgcik7XHJcbiAgICAgICAgICAgIHJldHVybiByO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIGZyb21Qb2pvKHI6IGFueSk6IFQge1xyXG4gICAgICAgIGxldCBmID0gdGhpcy5fZmFjdG9yeShmYWxzZSk7XHJcbiAgICAgICAgZi5fX2VudGl0eURhdGEuc2V0RGF0YShyLCBmKTtcclxuICAgICAgICByZXR1cm4gZjtcclxuICAgIH1cclxuICAgIHRvQXBpUG9qbyhlbnRpdHk6IFQpOiBhbnkge1xyXG4gICAgICAgIGxldCByID0ge307XHJcbiAgICAgICAgZm9yIChjb25zdCBjIG9mIGVudGl0eS5jb2x1bW5zKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgYy5fX2FkZFRvUG9qbyhyLHRoaXMuY29udGV4dClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHI7XHJcblxyXG4gICAgfVxyXG4gICAgX3VwZGF0ZUVudGl0eUJhc2VkT25BcGkoZW50aXR5OiBULCBib2R5OiBhbnkpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGMgb2YgZW50aXR5LmNvbHVtbnMpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBjLl9fbG9hZEZyb21Ub1Bvam8oYm9keSx0aGlzLmNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZW50aXR5O1xyXG4gICAgfVxyXG4gICAgYXN5bmMgZmluZEZpcnN0KHdoZXJlPzogKGVudGl0eTogVCkgPT4gRmlsdGVyQmFzZSkge1xyXG4gICAgICAgIGxldCByID0gYXdhaXQgdGhpcy5maW5kKHsgd2hlcmUgfSk7XHJcbiAgICAgICAgaWYgKHIubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgcmV0dXJuIHJbMF07XHJcbiAgICB9XHJcbiAgICB0b1Bvam9BcnJheShpdGVtczogVFtdKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcChmID0+IHRoaXMudG9BcGlQb2pvKGYpKTtcclxuICAgIH1cclxuXHJcbiAgICBncmlkU2V0dGluZ3Moc2V0dGluZ3M/OiBJRGF0YVNldHRpbmdzPFQ+KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBHcmlkU2V0dGluZ3ModGhpcywgdGhpcy5jb250ZXh0LCBzZXR0aW5ncyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0VmFsdWVMaXN0KGFyZ3M/OiB7XHJcbiAgICAgICAgaWRDb2x1bW4/OiAoZTogVCkgPT4gQ29sdW1uPGFueT4sXHJcbiAgICAgICAgY2FwdGlvbkNvbHVtbj86IChlOiBUKSA9PiBDb2x1bW48YW55PixcclxuICAgICAgICBvcmRlckJ5PzogRW50aXR5T3JkZXJCeTxUPixcclxuICAgICAgICB3aGVyZT86IEVudGl0eVdoZXJlPFQ+XHJcbiAgICB9KTogUHJvbWlzZTxWYWx1ZUxpc3RJdGVtW10+IHtcclxuICAgICAgICBpZiAoIWFyZ3MpIHtcclxuICAgICAgICAgICAgYXJncyA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWFyZ3MuaWRDb2x1bW4pIHtcclxuICAgICAgICAgICAgYXJncy5pZENvbHVtbiA9IHggPT4geC5jb2x1bW5zLmlkQ29sdW1uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWFyZ3MuY2FwdGlvbkNvbHVtbikge1xyXG4gICAgICAgICAgICBsZXQgaWRDb2wgPSBhcmdzLmlkQ29sdW1uKHRoaXMuZW50aXR5KTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXlJbkl0ZW0gb2YgdGhpcy5lbnRpdHkuY29sdW1ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleUluSXRlbSAhPSBpZENvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFyZ3MuY2FwdGlvbkNvbHVtbiA9IHggPT4geC5jb2x1bW5zLmZpbmQoa2V5SW5JdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuZmluZCh7XHJcbiAgICAgICAgICAgIHdoZXJlOiBhcmdzLndoZXJlLFxyXG4gICAgICAgICAgICBvcmRlckJ5OiBhcmdzLm9yZGVyQnksXHJcbiAgICAgICAgICAgIGxpbWl0OiAxMDAwXHJcbiAgICAgICAgfSkpLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGlkOiBhcmdzLmlkQ29sdW1uKHgpLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgY2FwdGlvbjogYXJncy5jYXB0aW9uQ29sdW1uKHgpLnZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVR5cGU8VD4ge1xyXG4gICAgbmV3KC4uLmFyZ3M6IGFueVtdKTogRW50aXR5PFQ+O1xyXG4gICAgX19rZXk6IHN0cmluZztcclxufVxyXG5leHBvcnQgY29uc3QgYWxsRW50aXRpZXM6IEVudGl0eVR5cGU8YW55PltdID0gW107XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eUNsYXNzPFQgZXh0ZW5kcyBFbnRpdHlUeXBlPGFueT4+KHRoZUVudGl0eUNsYXNzOiBUKSB7XHJcbiAgICBsZXQgb3JpZ2luYWwgPSB0aGVFbnRpdHlDbGFzcztcclxuICAgIGxldCBmID0gb3JpZ2luYWw7XHJcbiAgICAvKmYgPSBjbGFzcyBleHRlbmRzIHRoZUVudGl0eUNsYXNzIHtcclxuICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgICBzdXBlciguLi5hcmdzKTtcclxuICAgICAgICAgICAgdGhpcy5fX2luaXRDb2x1bW5zKCg8YW55PnRoaXMpLmlkKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9fb3B0aW9ucy5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9fb3B0aW9ucy5uYW1lID0gb3JpZ2luYWwubmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0qL1xyXG4gICAgYWxsRW50aXRpZXMucHVzaChmKTtcclxuICAgIGYuX19rZXkgPSB0aGVFbnRpdHlDbGFzcy5uYW1lICsgYWxsRW50aXRpZXMuaW5kZXhPZihmKTtcclxuICAgIHJldHVybiBmO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgVXNlckluZm8ge1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIHJvbGVzOiBzdHJpbmdbXTtcclxufVxyXG5cclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBSb2xlIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBrZXk6IHN0cmluZykge1xyXG5cclxuICAgIH1cclxuICAgIHN0YXRpYyBub3QoYWxsb3dlZDogQWxsb3dlZCk6IEFsbG93ZWQge1xyXG4gICAgICAgIHJldHVybiBjID0+ICFjLmlzQWxsb3dlZChhbGxvd2VkKTtcclxuICAgIH1cclxufVxyXG5kZWNsYXJlIHR5cGUgQWxsb3dlZFJ1bGUgPSBzdHJpbmcgfCBSb2xlIHwgKChjOiBDb250ZXh0KSA9PiBib29sZWFuKSB8IGJvb2xlYW47O1xyXG5leHBvcnQgZGVjbGFyZSB0eXBlIEFsbG93ZWQgPSBBbGxvd2VkUnVsZSB8IEFsbG93ZWRSdWxlW107XHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgQW5ndWxhckNvbXBvbmVudCA9IHsgbmV3KC4uLmFyZ3M6IGFueVtdKTogYW55IH07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRGlhbG9nQ29uZmlnKGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCkge1xyXG4gICAgICAgIHRhcmdldFtkaWFsb2dDb25maWdNZW1iZXJdID0gY29uZmlnO1xyXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICB9O1xyXG59XHJcblxyXG5cclxuY29uc3QgZGlhbG9nQ29uZmlnTWVtYmVyID0gU3ltYm9sKFwiZGlhbG9nQ29uZmlnTWVtYmVyXCIpO1xyXG5cclxuaW50ZXJmYWNlIExvb2t1cENhY2hlPFQgZXh0ZW5kcyBFbnRpdHk8YW55Pj4ge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICBsb29rdXA6IExvb2t1cDxhbnksIFQ+O1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUm9sZUNoZWNrZXJcclxue1xyXG4gICAgaXNBbGxvd2VkKHJvbGVzOiBBbGxvd2VkKTpib29sZWFuO1xyXG59Il19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByZW11bHQvY29yZS8iLCJzb3VyY2VzIjpbInNyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQTRILG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEwsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFpQixZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNekM7SUFVSSxpQkFBWSxJQUFpQixFQUFVLE9BQW1CO1FBQW5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUEwQmhELGNBQVMsR0FBRyxLQUFLLENBQUM7UUEyQzVCLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBa0UsQ0FBQztRQW9DbEYsaUJBQVksR0FBdUIsRUFBRSxDQUFDO1FBeEdsQyxJQUFJLElBQUksWUFBWSxVQUFVLEVBQUU7O2dCQUN4QixJQUFJLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGdCQUFnQixDQUFDLE9BQU8s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SUM7OztJQUhHLHNCQUFXOztJQUNYLHdCQUFhOztJQUNiLHlCQUFnQjs7O0FBS3BCOzs7SUFDSSxjQUFtQixHQUFXO1FBQVgsUUFBRyxHQUFILEdBQUcsQ0FBUTtJQUU5QixDQUFDOzs7OztJQUNNLFFBQUc7Ozs7SUFBVixVQUFXLE9BQWdCO1FBQ3ZCOzs7O1FBQU8sVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQXJCLENBQXFCLEVBQUM7SUFDdEMsQ0FBQztJQUNMLFdBQUM7QUFBRCxDQUFDLEFBUEQsSUFPQzs7Ozs7SUFOZSxtQkFBa0I7O0FBTzZDLENBQUM7Ozs7O0FBSWhGLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBdUI7SUFDaEQ7Ozs7SUFBTyxVQUFVLE1BQU07UUFDbkIsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUMsRUFBQztBQUNOLENBQUM7O0lBR0ssa0JBQWtCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDOzs7OztBQUV2RCwwQkFHQzs7O0lBRkcsMEJBQVk7O0lBQ1osNkJBQXVCOzs7OztBQUUzQixpQ0FHQzs7Ozs7O0lBREcsdURBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERhdGFQcm92aWRlciwgRmluZE9wdGlvbnMsIEVudGl0eURhdGFQcm92aWRlciwgRW50aXR5RGF0YVByb3ZpZGVyRmluZE9wdGlvbnMsIEVudGl0eVByb3ZpZGVyLCBFbnRpdHlPcmRlckJ5LCBFbnRpdHlXaGVyZSwgZW50aXR5T3JkZXJCeVRvU29ydCB9IGZyb20gXCIuL2RhdGEtaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBSZXN0RGF0YVByb3ZpZGVyIH0gZnJvbSBcIi4vZGF0YS1wcm92aWRlcnMvcmVzdC1kYXRhLXByb3ZpZGVyXCI7XHJcbmltcG9ydCB7IEFuZ3VsYXJIdHRwUHJvdmlkZXIgfSBmcm9tIFwiLi9hbmd1bGFyL0FuZ3VsYXJIdHRwUHJvdmlkZXJcIjtcclxuXHJcbmltcG9ydCB7IEluTWVtb3J5RGF0YVByb3ZpZGVyIH0gZnJvbSBcIi4vZGF0YS1wcm92aWRlcnMvaW4tbWVtb3J5LWRhdGFiYXNlXCI7XHJcbmltcG9ydCB7IERhdGFBcGlSZXF1ZXN0LCBEYXRhQXBpU2V0dGluZ3MgfSBmcm9tIFwiLi9kYXRhLWFwaVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzU3RyaW5nLCBpc0Jvb2xlYW4gfSBmcm9tIFwidXRpbFwiO1xyXG5cclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiLi9jb2x1bW5cIjtcclxuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSBcIi4vZW50aXR5XCI7XHJcbmltcG9ydCB7IExvb2t1cCB9IGZyb20gXCIuL2xvb2t1cFwiO1xyXG5pbXBvcnQgeyBJRGF0YVNldHRpbmdzLCBHcmlkU2V0dGluZ3MgfSBmcm9tIFwiLi9ncmlkLXNldHRpbmdzXCI7XHJcblxyXG5pbXBvcnQgeyBGaWx0ZXJCYXNlIH0gZnJvbSAnLi9maWx0ZXIvZmlsdGVyLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuL3NlcnZlci1hY3Rpb24nO1xyXG5pbXBvcnQgeyBWYWx1ZUxpc3RJdGVtIH0gZnJvbSAnLi9jb2x1bW4taW50ZXJmYWNlcyc7XHJcblxyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb250ZXh0IHtcclxuICAgIGNsZWFyQWxsQ2FjaGUoKTogYW55IHtcclxuICAgICAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy5fbG9va3VwQ2FjaGUgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBpc1NpZ25lZEluKCkge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMudXNlcjtcclxuICAgIH1cclxuICAgIGNvbnN0cnVjdG9yKGh0dHA/OiBIdHRwQ2xpZW50LCBwcml2YXRlIF9kaWFsb2c/OiBNYXREaWFsb2cpIHtcclxuICAgICAgICBpZiAoaHR0cCBpbnN0YW5jZW9mIEh0dHBDbGllbnQpIHtcclxuICAgICAgICAgICAgdmFyIHByb3YgPSBuZXcgQW5ndWxhckh0dHBQcm92aWRlcihodHRwKTtcclxuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IG5ldyBSZXN0RGF0YVByb3ZpZGVyKENvbnRleHQuYXBpQmFzZVVybFxyXG4gICAgICAgICAgICAgICAgLCBwcm92XHJcbiAgICAgICAgICAgICAgICAvLyxuZXcgcmVzdERhdGFQcm92aWRlckh0dHBQcm92aWRlclVzaW5nRmV0Y2goKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBBY3Rpb24ucHJvdmlkZXIgPSBwcm92O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IG5ldyBJbk1lbW9yeURhdGFQcm92aWRlcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRDb29raWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgZ2V0SG9zdCgpIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBnZXRQYXRoSW5VcmwoKSB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJvdGVjdGVkIF9kYXRhU291cmNlOiBEYXRhUHJvdmlkZXI7XHJcbiAgICBwcm90ZWN0ZWQgX29uU2VydmVyID0gZmFsc2U7XHJcbiAgICBnZXQgb25TZXJ2ZXIoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uU2VydmVyO1xyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF91c2VyOiBVc2VySW5mbztcclxuICAgIGdldCB1c2VyKCkgeyByZXR1cm4gdGhpcy5fdXNlcjsgfVxyXG5cclxuICAgIF9zZXRVc2VyKGluZm86IFVzZXJJbmZvKSB7XHJcbiAgICAgICAgdGhpcy5fdXNlciA9IGluZm87XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgYXBpQmFzZVVybCA9ICdhcGknO1xyXG5cclxuICAgIGlzQWxsb3dlZChyb2xlczogQWxsb3dlZCkge1xyXG4gICAgICAgIGlmIChyb2xlcyA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHJvbGVzIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCByb2xlIG9mIHJvbGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FsbG93ZWQocm9sZSkgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXNGdW5jdGlvbihyb2xlcykpIHtcclxuICAgICAgICAgICAgcmV0dXJuICg8YW55PnJvbGVzKSh0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzQm9vbGVhbihyb2xlcykpXHJcbiAgICAgICAgICAgIHJldHVybiByb2xlcztcclxuXHJcbiAgICAgICAgaWYgKHJvbGVzIGluc3RhbmNlb2YgUm9sZSkge1xyXG4gICAgICAgICAgICByb2xlcyA9IHJvbGVzLmtleTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLnVzZXIpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAoaXNTdHJpbmcocm9sZXMpKVxyXG4gICAgICAgICAgICBpZiAodGhpcy51c2VyLnJvbGVzLmluZGV4T2Yocm9sZXMudG9TdHJpbmcoKSkgPj0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNhY2hlID0gbmV3IE1hcDxEYXRhUHJvdmlkZXIsIE1hcDxhbnksIFNwZWNpZmljRW50aXR5SGVscGVyPGFueSwgRW50aXR5PGFueT4+Pj4oKTtcclxuICAgIHB1YmxpYyBmb3I8bG9va3VwSWRUeXBlLCBUIGV4dGVuZHMgRW50aXR5PGxvb2t1cElkVHlwZT4+KGM6IHsgbmV3KC4uLmFyZ3M6IGFueVtdKTogVDsgfSwgZGF0YVNvdXJjZT86IERhdGFQcm92aWRlcikge1xyXG4gICAgICAgIGlmICghZGF0YVNvdXJjZSlcclxuICAgICAgICAgICAgZGF0YVNvdXJjZSA9IHRoaXMuX2RhdGFTb3VyY2U7XHJcblxyXG4gICAgICAgIGxldCBkc0NhY2hlID0gdGhpcy5jYWNoZS5nZXQoZGF0YVNvdXJjZSk7XHJcbiAgICAgICAgaWYgKCFkc0NhY2hlKSB7XHJcbiAgICAgICAgICAgIGRzQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgU3BlY2lmaWNFbnRpdHlIZWxwZXI8YW55LCBFbnRpdHk8YW55Pj4+KCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KGRhdGFTb3VyY2UsIGRzQ2FjaGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICBsZXQgciA9IGRzQ2FjaGUuZ2V0KGMpIGFzIFNwZWNpZmljRW50aXR5SGVscGVyPGxvb2t1cElkVHlwZSwgVD47XHJcbiAgICAgICAgaWYgKCFyKSB7XHJcbiAgICAgICAgICAgIHIgPSBuZXcgU3BlY2lmaWNFbnRpdHlIZWxwZXI8bG9va3VwSWRUeXBlLCBUPigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZSA9IG5ldyBjKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgZS5fX2luaXRDb2x1bW5zKCg8YW55PmUpLmlkKTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZTtcclxuICAgICAgICAgICAgfSwgdGhpcy5fbG9va3VwQ2FjaGUsIHRoaXMsIGRhdGFTb3VyY2UpO1xyXG4gICAgICAgICAgICBkc0NhY2hlLnNldChjLCByKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICB9XHJcbiAgICBhc3luYyBvcGVuRGlhbG9nPFQsIEM+KGNvbXBvbmVudDogeyBuZXcoLi4uYXJnczogYW55W10pOiBDOyB9LCBzZXRQYXJhbWV0ZXJzOiAoaXQ6IEMpID0+IHZvaWQsIHJldHVybkFWYWx1ZT86IChpdDogQykgPT4gVCkge1xyXG5cclxuICAgICAgICBsZXQgcmVmID0gdGhpcy5fZGlhbG9nLm9wZW4oY29tcG9uZW50LCBjb21wb25lbnRbZGlhbG9nQ29uZmlnTWVtYmVyXSk7XHJcbiAgICAgICAgc2V0UGFyYW1ldGVycyhyZWYuY29tcG9uZW50SW5zdGFuY2UpO1xyXG4gICAgICAgIGF3YWl0IHJlZi5iZWZvcmVDbG9zZSgpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgIGlmIChyZXR1cm5BVmFsdWUpXHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5BVmFsdWUocmVmLmNvbXBvbmVudEluc3RhbmNlKTtcclxuICAgIH1cclxuXHJcbiAgICBfbG9va3VwQ2FjaGU6IExvb2t1cENhY2hlPGFueT5bXSA9IFtdO1xyXG59XHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgRGF0YVByb3ZpZGVyRmFjdG9yeUJ1aWxkZXIgPSAocmVxOiBDb250ZXh0KSA9PiBEYXRhUHJvdmlkZXI7XHJcbmV4cG9ydCBjbGFzcyBTZXJ2ZXJDb250ZXh0IGV4dGVuZHMgQ29udGV4dCB7XHJcbiAgICBjb25zdHJ1Y3RvcihkcD86IERhdGFQcm92aWRlcikge1xyXG4gICAgICAgIHN1cGVyKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdGhpcy5fb25TZXJ2ZXIgPSB0cnVlO1xyXG4gICAgICAgIGlmIChkcClcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRhUHJvdmlkZXIoZHApO1xyXG5cclxuXHJcbiAgICB9XHJcbiAgICBnZXRIb3N0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlcS5nZXRIZWFkZXIoJ2hvc3QnKTtcclxuICAgIH1cclxuICAgIGdldFBhdGhJblVybCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXEuZ2V0QmFzZVVybCgpO1xyXG4gICAgfVxyXG4gICAgZ2V0Q29va2llKG5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIGxldCBjb29raWUgPSB0aGlzLnJlcS5nZXRIZWFkZXIoJ2Nvb2tpZScpO1xyXG4gICAgICAgIGlmIChjb29raWUpXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgY29va2llLnNwbGl0KCc7JykpIHtcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtSW5mbyA9IGl0ZXJhdG9yLnNwbGl0KCc9Jyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUluZm8gJiYgaXRlbUluZm9bMF0udHJpbSgpID09IG5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbUluZm9bMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSByZXE6IERhdGFBcGlSZXF1ZXN0O1xyXG5cclxuICAgIHNldFJlcShyZXE6IERhdGFBcGlSZXF1ZXN0KSB7XHJcbiAgICAgICAgdGhpcy5yZXEgPSByZXE7XHJcbiAgICAgICAgdGhpcy5fdXNlciA9IHJlcS51c2VyID8gcmVxLnVzZXIgOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBzZXREYXRhUHJvdmlkZXIoZGF0YVByb3ZpZGVyOiBEYXRhUHJvdmlkZXIpIHtcclxuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gZGF0YVByb3ZpZGVyO1xyXG4gICAgfVxyXG4gICAgZ2V0T3JpZ2luKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlcS5nZXRIZWFkZXIoJ29yaWdpbicpXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgU3BlY2lmaWNFbnRpdHlIZWxwZXI8bG9va3VwSWRUeXBlLCBUIGV4dGVuZHMgRW50aXR5PGxvb2t1cElkVHlwZT4+IGltcGxlbWVudHMgRW50aXR5UHJvdmlkZXI8VD57XHJcbiAgICBfZ2V0QXBpU2V0dGluZ3MoKTogRGF0YUFwaVNldHRpbmdzPFQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHkuX2dldEVudGl0eUFwaVNldHRpbmdzKHRoaXMuY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHByaXZhdGUgZW50aXR5OiBUO1xyXG4gICAgcHJpdmF0ZSBfZWRwOiBFbnRpdHlEYXRhUHJvdmlkZXI7XHJcbiAgICBwcml2YXRlIF9mYWN0b3J5OiAobmV3Um93OiBib29sZWFuKSA9PiBUO1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIGNyZWF0ZTogKCkgPT4gVCwgcHJpdmF0ZSBfbG9va3VwQ2FjaGU6IExvb2t1cENhY2hlPGFueT5bXSwgcHJpdmF0ZSBjb250ZXh0OiBDb250ZXh0LCBkYXRhU291cmNlOiBEYXRhUHJvdmlkZXIpIHtcclxuICAgICAgICB0aGlzLl9mYWN0b3J5ID0gbmV3Um93ID0+IHtcclxuICAgICAgICAgICAgbGV0IGUgPSBjcmVhdGUoKTtcclxuICAgICAgICAgICAgZS5fX2VudGl0eURhdGEuZGF0YVByb3ZpZGVyID0gdGhpcy5fZWRwO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0Lm9uU2VydmVyKVxyXG4gICAgICAgICAgICAgICAgZS5fX2VudGl0eURhdGEuaW5pdFNlcnZlckV4cHJlc3Npb25zID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGUuY29sdW1ucy50b0FycmF5KCkubWFwKGFzeW5jIGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBjLl9fY2FsY1NlcnZlckV4cHJlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChuZXdSb3cpIHtcclxuICAgICAgICAgICAgICAgIGUuY29sdW1ucy50b0FycmF5KCkuZm9yRWFjaChjID0+IHsgYy5fX3NldERlZmF1bHRGb3JOZXdSb3coKSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuY3JlYXRlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmFjdG9yeSh0cnVlKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZW50aXR5ID0gdGhpcy5fZmFjdG9yeShmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5fZWRwID0gZGF0YVNvdXJjZS5nZXRFbnRpdHlEYXRhUHJvdmlkZXIodGhpcy5lbnRpdHkpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBsb29rdXAoZmlsdGVyOiBDb2x1bW48bG9va3VwSWRUeXBlPiB8ICgoZW50aXR5VHlwZTogVCkgPT4gRmlsdGVyQmFzZSkpOiBUIHtcclxuXHJcbiAgICAgICAgbGV0IGtleSA9IHRoaXMuZW50aXR5LmRlZnMubmFtZTtcclxuICAgICAgICBsZXQgbG9va3VwOiBMb29rdXA8bG9va3VwSWRUeXBlLCBUPjtcclxuICAgICAgICB0aGlzLl9sb29rdXBDYWNoZS5mb3JFYWNoKGwgPT4ge1xyXG4gICAgICAgICAgICBpZiAobC5rZXkgPT0ga2V5KVxyXG4gICAgICAgICAgICAgICAgbG9va3VwID0gbC5sb29rdXA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFsb29rdXApIHtcclxuICAgICAgICAgICAgbG9va3VwID0gbmV3IExvb2t1cCh0aGlzLmVudGl0eSwgdGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvb2t1cENhY2hlLnB1c2goeyBrZXksIGxvb2t1cCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxvb2t1cC5nZXQoZmlsdGVyKTtcclxuXHJcbiAgICB9XHJcbiAgICBsb29rdXBBc3luYyhmaWx0ZXI6IENvbHVtbjxsb29rdXBJZFR5cGU+IHwgKChlbnRpdHlUeXBlOiBUKSA9PiBGaWx0ZXJCYXNlKSk6IFByb21pc2U8VD4ge1xyXG5cclxuICAgICAgICBsZXQga2V5ID0gdGhpcy5lbnRpdHkuZGVmcy5uYW1lO1xyXG4gICAgICAgIGxldCBsb29rdXA6IExvb2t1cDxsb29rdXBJZFR5cGUsIFQ+O1xyXG4gICAgICAgIHRoaXMuX2xvb2t1cENhY2hlLmZvckVhY2gobCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsLmtleSA9PSBrZXkpXHJcbiAgICAgICAgICAgICAgICBsb29rdXAgPSBsLmxvb2t1cDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIWxvb2t1cCkge1xyXG4gICAgICAgICAgICBsb29rdXAgPSBuZXcgTG9va3VwKHRoaXMuZW50aXR5LCB0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5fbG9va3VwQ2FjaGUucHVzaCh7IGtleSwgbG9va3VwIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbG9va3VwLndoZW5HZXQoZmlsdGVyKTtcclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIGFzeW5jIGNvdW50KHdoZXJlPzogKGVudGl0eTogVCkgPT4gRmlsdGVyQmFzZSkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9lZHAuY291bnQod2hlcmUgPyB3aGVyZSh0aGlzLmVudGl0eSkgOiB1bmRlZmluZWQpO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgZm9yZWFjaCh3aGVyZTogKGVudGl0eTogVCkgPT4gRmlsdGVyQmFzZSwgd2hhdD86IChlbnRpdHk6IFQpID0+IFByb21pc2U8dm9pZD4pIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSBhd2FpdCB0aGlzLmZpbmQoe1xyXG4gICAgICAgICAgICB3aGVyZTogd2hlcmVcclxuICAgICAgICB9KTtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgICAgICAgYXdhaXQgd2hhdChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZU9wdGlvbnMob3B0aW9uczogRmluZE9wdGlvbnM8VD4pIHtcclxuICAgICAgICBpZiAoIW9wdGlvbnMpXHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgbGV0IGdldE9wdGlvbnM6IEVudGl0eURhdGFQcm92aWRlckZpbmRPcHRpb25zID0ge307XHJcbiAgICAgICAgaWYgKG9wdGlvbnMud2hlcmUpXHJcbiAgICAgICAgICAgIGdldE9wdGlvbnMud2hlcmUgPSBvcHRpb25zLndoZXJlKHRoaXMuZW50aXR5KTtcclxuICAgICAgICBpZiAob3B0aW9ucy5vcmRlckJ5KVxyXG4gICAgICAgICAgICBnZXRPcHRpb25zLm9yZGVyQnkgPSBlbnRpdHlPcmRlckJ5VG9Tb3J0KHRoaXMuZW50aXR5LCBvcHRpb25zLm9yZGVyQnkpO1xyXG4gICAgICAgIGlmIChvcHRpb25zLmxpbWl0KVxyXG4gICAgICAgICAgICBnZXRPcHRpb25zLmxpbWl0ID0gb3B0aW9ucy5saW1pdDtcclxuICAgICAgICBpZiAob3B0aW9ucy5wYWdlKVxyXG4gICAgICAgICAgICBnZXRPcHRpb25zLnBhZ2UgPSBvcHRpb25zLnBhZ2U7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuX19jdXN0b21GaW5kRGF0YSlcclxuICAgICAgICAgICAgZ2V0T3B0aW9ucy5fX2N1c3RvbUZpbmREYXRhID0gb3B0aW9ucy5fX2N1c3RvbUZpbmREYXRhO1xyXG4gICAgICAgIHJldHVybiBnZXRPcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbmQob3B0aW9ucz86IEZpbmRPcHRpb25zPFQ+KSB7XHJcbiAgICAgICAgbGV0IHIgPSBhd2FpdCB0aGlzLl9lZHAuZmluZCh0aGlzLnRyYW5zbGF0ZU9wdGlvbnMob3B0aW9ucykpO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChyLm1hcChhc3luYyBpID0+IHtcclxuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLl9mYWN0b3J5KGZhbHNlKTtcclxuICAgICAgICAgICAgYXdhaXQgci5fX2VudGl0eURhdGEuc2V0RGF0YShpLCByKTtcclxuICAgICAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgZnJvbVBvam8ocjogYW55KTogVCB7XHJcbiAgICAgICAgbGV0IGYgPSB0aGlzLl9mYWN0b3J5KGZhbHNlKTtcclxuICAgICAgICBmLl9fZW50aXR5RGF0YS5zZXREYXRhKHIsIGYpO1xyXG4gICAgICAgIHJldHVybiBmO1xyXG4gICAgfVxyXG4gICAgdG9BcGlQb2pvKGVudGl0eTogVCk6IGFueSB7XHJcbiAgICAgICAgbGV0IHIgPSB7fTtcclxuICAgICAgICBmb3IgKGNvbnN0IGMgb2YgZW50aXR5LmNvbHVtbnMpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBjLl9fYWRkVG9Qb2pvKHIsdGhpcy5jb250ZXh0KVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcjtcclxuXHJcbiAgICB9XHJcbiAgICBfdXBkYXRlRW50aXR5QmFzZWRPbkFwaShlbnRpdHk6IFQsIGJvZHk6IGFueSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBlbnRpdHkuY29sdW1ucykge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGMuX19sb2FkRnJvbVRvUG9qbyhib2R5LHRoaXMuY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlbnRpdHk7XHJcbiAgICB9XHJcbiAgICBhc3luYyBmaW5kRmlyc3Qod2hlcmU/OiAoZW50aXR5OiBUKSA9PiBGaWx0ZXJCYXNlKSB7XHJcbiAgICAgICAgbGV0IHIgPSBhd2FpdCB0aGlzLmZpbmQoeyB3aGVyZSB9KTtcclxuICAgICAgICBpZiAoci5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICByZXR1cm4gclswXTtcclxuICAgIH1cclxuICAgIHRvUG9qb0FycmF5KGl0ZW1zOiBUW10pIHtcclxuICAgICAgICByZXR1cm4gaXRlbXMubWFwKGYgPT4gdGhpcy50b0FwaVBvam8oZikpO1xyXG4gICAgfVxyXG5cclxuICAgIGdyaWRTZXR0aW5ncyhzZXR0aW5ncz86IElEYXRhU2V0dGluZ3M8VD4pIHtcclxuICAgICAgICByZXR1cm4gbmV3IEdyaWRTZXR0aW5ncyh0aGlzLCB0aGlzLmNvbnRleHQsIHNldHRpbmdzKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRWYWx1ZUxpc3QoYXJncz86IHtcclxuICAgICAgICBpZENvbHVtbj86IChlOiBUKSA9PiBDb2x1bW48YW55PixcclxuICAgICAgICBjYXB0aW9uQ29sdW1uPzogKGU6IFQpID0+IENvbHVtbjxhbnk+LFxyXG4gICAgICAgIG9yZGVyQnk/OiBFbnRpdHlPcmRlckJ5PFQ+LFxyXG4gICAgICAgIHdoZXJlPzogRW50aXR5V2hlcmU8VD5cclxuICAgIH0pOiBQcm9taXNlPFZhbHVlTGlzdEl0ZW1bXT4ge1xyXG4gICAgICAgIGlmICghYXJncykge1xyXG4gICAgICAgICAgICBhcmdzID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYXJncy5pZENvbHVtbikge1xyXG4gICAgICAgICAgICBhcmdzLmlkQ29sdW1uID0geCA9PiB4LmNvbHVtbnMuaWRDb2x1bW47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghYXJncy5jYXB0aW9uQ29sdW1uKSB7XHJcbiAgICAgICAgICAgIGxldCBpZENvbCA9IGFyZ3MuaWRDb2x1bW4odGhpcy5lbnRpdHkpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleUluSXRlbSBvZiB0aGlzLmVudGl0eS5jb2x1bW5zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5SW5JdGVtICE9IGlkQ29sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJncy5jYXB0aW9uQ29sdW1uID0geCA9PiB4LmNvbHVtbnMuZmluZChrZXlJbkl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5maW5kKHtcclxuICAgICAgICAgICAgd2hlcmU6IGFyZ3Mud2hlcmUsXHJcbiAgICAgICAgICAgIG9yZGVyQnk6IGFyZ3Mub3JkZXJCeSxcclxuICAgICAgICAgICAgbGltaXQ6IDEwMDBcclxuICAgICAgICB9KSkubWFwKHggPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IGFyZ3MuaWRDb2x1bW4oeCkudmFsdWUsXHJcbiAgICAgICAgICAgICAgICBjYXB0aW9uOiBhcmdzLmNhcHRpb25Db2x1bW4oeCkudmFsdWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5VHlwZTxUPiB7XHJcbiAgICBuZXcoLi4uYXJnczogYW55W10pOiBFbnRpdHk8VD47XHJcbn1cclxuZXhwb3J0IGNvbnN0IGFsbEVudGl0aWVzOiBFbnRpdHlUeXBlPGFueT5bXSA9IFtdO1xyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBFbnRpdHlDbGFzczxUIGV4dGVuZHMgRW50aXR5VHlwZTxhbnk+Pih0aGVFbnRpdHlDbGFzczogVCkge1xyXG4gICAgbGV0IG9yaWdpbmFsID0gdGhlRW50aXR5Q2xhc3M7XHJcbiAgICBsZXQgZiA9IG9yaWdpbmFsO1xyXG4gICAgLypmID0gY2xhc3MgZXh0ZW5kcyB0aGVFbnRpdHlDbGFzcyB7XHJcbiAgICAgICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcclxuICAgICAgICAgICAgc3VwZXIoLi4uYXJncyk7XHJcbiAgICAgICAgICAgIHRoaXMuX19pbml0Q29sdW1ucygoPGFueT50aGlzKS5pZCk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fX29wdGlvbnMubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fX29wdGlvbnMubmFtZSA9IG9yaWdpbmFsLm5hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9Ki9cclxuICAgIGFsbEVudGl0aWVzLnB1c2goZik7XHJcbiAgICByZXR1cm4gZjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJJbmZvIHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICByb2xlczogc3RyaW5nW107XHJcbn1cclxuXHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgUm9sZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMga2V5OiBzdHJpbmcpIHtcclxuXHJcbiAgICB9XHJcbiAgICBzdGF0aWMgbm90KGFsbG93ZWQ6IEFsbG93ZWQpOiBBbGxvd2VkIHtcclxuICAgICAgICByZXR1cm4gYyA9PiAhYy5pc0FsbG93ZWQoYWxsb3dlZCk7XHJcbiAgICB9XHJcbn1cclxuZGVjbGFyZSB0eXBlIEFsbG93ZWRSdWxlID0gc3RyaW5nIHwgUm9sZSB8ICgoYzogQ29udGV4dCkgPT4gYm9vbGVhbikgfCBib29sZWFuOztcclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBBbGxvd2VkID0gQWxsb3dlZFJ1bGUgfCBBbGxvd2VkUnVsZVtdO1xyXG5leHBvcnQgZGVjbGFyZSB0eXBlIEFuZ3VsYXJDb21wb25lbnQgPSB7IG5ldyguLi5hcmdzOiBhbnlbXSk6IGFueSB9O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIERpYWxvZ0NvbmZpZyhjb25maWc6IE1hdERpYWxvZ0NvbmZpZykge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQpIHtcclxuICAgICAgICB0YXJnZXRbZGlhbG9nQ29uZmlnTWVtYmVyXSA9IGNvbmZpZztcclxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xyXG4gICAgfTtcclxufVxyXG5cclxuXHJcbmNvbnN0IGRpYWxvZ0NvbmZpZ01lbWJlciA9IFN5bWJvbChcImRpYWxvZ0NvbmZpZ01lbWJlclwiKTtcclxuXHJcbmludGVyZmFjZSBMb29rdXBDYWNoZTxUIGV4dGVuZHMgRW50aXR5PGFueT4+IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgbG9va3VwOiBMb29rdXA8YW55LCBUPjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFJvbGVDaGVja2VyXHJcbntcclxuICAgIGlzQWxsb3dlZChyb2xlczogQWxsb3dlZCk6Ym9vbGVhbjtcclxufSJdfQ== |
@@ -408,4 +408,2 @@ /** | ||
if (false) { | ||
/** @type {?} */ | ||
Entity.__key; | ||
/** | ||
@@ -607,2 +605,2 @@ * @type {?} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJlbXVsdC9jb3JlLyIsInNvdXJjZXMiOlsic3JjL2VudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBSS9EOzs7Ozs7SUFDRSxnQkFBWSxPQUFnQztRQUE1QyxpQkFpQkM7O1FBc0NELGlCQUFZLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDOztRQUczQyxrQkFBYTs7O1FBQStCLGNBQVEsQ0FBQyxFQUFDOztRQUV0RCxpQkFBWTs7O1FBQStCLGNBQVEsQ0FBQyxFQUFDOztRQTBJN0MsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFyTXBDLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2FBQ3BDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO2dCQUN6QixJQUFJLE9BQU8sQ0FBQyxTQUFTO29CQUNuQixJQUFJLENBQUMsYUFBYTs7O29CQUFHLGNBQU0sT0FBQSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQW5CLENBQW1CLENBQUEsQ0FBQztnQkFDakQsSUFBSSxPQUFPLENBQUMsUUFBUTtvQkFDbEIsSUFBSSxDQUFDLFlBQVk7OztvQkFBRyxjQUFNLE9BQUEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFJLENBQUMsRUFBdEIsQ0FBc0IsQ0FBQSxDQUFDO2FBQ3BEO1NBQ0Y7YUFDSTtZQUNILElBQUksQ0FBQyxTQUFTLEdBQUc7Z0JBQ2YsSUFBSSxFQUFFLFNBQVM7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QVksTUFBTTtZQUN2QixNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7O1lBRXRCLE1BQU0sR0FBRyxHQUFHLENBQUM7O1lBQ2YsS0FBZ0IsSUFBQSxLQUFBLGlCQUFBLElBQUksQ0FBQyxTQUFTLENBQUEsZ0JBQUEsNEJBQUU7Z0JBQTNCLElBQU0sQ0FBQyxXQUFBO2dCQUNWLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTTtvQkFDdEIsT0FBTyxDQUFDLENBQUM7YUFDWjs7Ozs7Ozs7O1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVILG9CQUFDO0FBQUQsQ0FBQyxBQTFCRCxJQTBCQzs7Ozs7Ozs7OztJQXpCYSxrQ0FBZ0M7O0lBQUUsaUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCwgQWxsb3dlZCB9IGZyb20gXCIuL2NvbnRleHRcIjtcclxuaW1wb3J0IHsgRGF0YUFwaVNldHRpbmdzIH0gZnJvbSBcIi4vZGF0YS1hcGlcIjtcclxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIi4vY29sdW1uXCI7XHJcbmltcG9ydCB7IEZpbHRlckJhc2UgfSBmcm9tICcuL2ZpbHRlci9maWx0ZXItaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IF9fRW50aXR5VmFsdWVQcm92aWRlciB9IGZyb20gJy4vX19FbnRpdHlWYWx1ZVByb3ZpZGVyJztcclxuaW1wb3J0IHsgdmFsdWVPckV4cHJlc3Npb25Ub1ZhbHVlIH0gZnJvbSAnLi9jb2x1bW4taW50ZXJmYWNlcyc7XHJcblxyXG5cclxuLy9AZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgRW50aXR5PGlkVHlwZT4ge1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBFbnRpdHlPcHRpb25zIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICBpZiAodHlwZW9mIChvcHRpb25zKSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIHRoaXMuX19vcHRpb25zID0geyBuYW1lOiBvcHRpb25zIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fX29wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnNhdmluZ1JvdylcclxuICAgICAgICAgIHRoaXMuX19vblNhdmluZ1JvdyA9ICgpID0+IG9wdGlvbnMuc2F2aW5nUm93KCk7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMudmFsaWRhdGUpXHJcbiAgICAgICAgICB0aGlzLl9fb25WYWxpZGF0ZSA9ICgpID0+IG9wdGlvbnMudmFsaWRhdGUodGhpcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLl9fb3B0aW9ucyA9IHtcclxuICAgICAgICBuYW1lOiB1bmRlZmluZWRcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcbiAgLy9AaW50ZXJuYWxcclxuICBzdGF0aWMgX19rZXk6IHN0cmluZztcclxuXHJcblxyXG4gIC8vQGludGVybmFsIFxyXG4gIF9nZXRFbnRpdHlBcGlTZXR0aW5ncyhyOiBDb250ZXh0KTogRGF0YUFwaVNldHRpbmdzPEVudGl0eTxhbnk+PiB7XHJcblxyXG4gICAgbGV0IG9wdGlvbnMgPSB0aGlzLl9fb3B0aW9ucztcclxuICAgIGlmIChvcHRpb25zLmFsbG93QXBpQ1JVRCkge1xyXG4gICAgICBvcHRpb25zLmFsbG93QXBpRGVsZXRlID0gdHJ1ZTtcclxuICAgICAgb3B0aW9ucy5hbGxvd0FwaUluc2VydCA9IHRydWU7XHJcbiAgICAgIG9wdGlvbnMuYWxsb3dBcGlVcGRhdGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYWxsb3dSZWFkOiByLmlzQWxsb3dlZChvcHRpb25zLmFsbG93QXBpUmVhZCksXHJcbiAgICAgIGFsbG93VXBkYXRlOiByLmlzQWxsb3dlZChvcHRpb25zLmFsbG93QXBpVXBkYXRlKSxcclxuICAgICAgYWxsb3dEZWxldGU6IHIuaXNBbGxvd2VkKG9wdGlvbnMuYWxsb3dBcGlEZWxldGUpLFxyXG4gICAgICBhbGxvd0luc2VydDogci5pc0FsbG93ZWQob3B0aW9ucy5hbGxvd0FwaUluc2VydCksXHJcbiAgICAgIGdldDoge1xyXG4gICAgICAgIHdoZXJlOiB4ID0+IG9wdGlvbnMuYXBpRGF0YUZpbHRlciA/IG9wdGlvbnMuYXBpRGF0YUZpbHRlcigpIDogdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIC8vQGludGVybmFsXHJcbiAgcHJpdmF0ZSBfX29wdGlvbnM6IEVudGl0eU9wdGlvbnM7XHJcbiAgLy9AaW50ZXJuYWxcclxuICBwcml2YXRlIF9kZWZzOiBFbnRpdHlEZWZzO1xyXG4gIGdldCBkZWZzKCkge1xyXG4gICAgaWYgKCF0aGlzLl9kZWZzKVxyXG4gICAgICB0aGlzLl9kZWZzID0gbmV3IEVudGl0eURlZnModGhpcy5fX29wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlZnM7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vQGludGVybmFsXHJcbiAgX19lbnRpdHlEYXRhID0gbmV3IF9fRW50aXR5VmFsdWVQcm92aWRlcigpO1xyXG5cclxuICAvL0BpbnRlcm5hbFxyXG4gIF9fb25TYXZpbmdSb3c6ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+ID0gKCkgPT4geyB9O1xyXG4gIC8vQGludGVybmFsXHJcbiAgX19vblZhbGlkYXRlOiAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPiA9ICgpID0+IHsgfTtcclxuXHJcbiAgdmFsaWRhdGlvbkVycm9yOiBzdHJpbmc7XHJcbiAgLy9AaW50ZXJuYWxcclxuICBwcml2YXRlIF9faWRDb2x1bW46IENvbHVtbjxpZFR5cGU+O1xyXG4gIC8vQGludGVybmFsXHJcbiAgX19pbml0Q29sdW1ucyhpZENvbHVtbj86IENvbHVtbjxpZFR5cGU+KSB7XHJcbiAgICBpZiAoIXRoaXMuX19vcHRpb25zLm5hbWUpIHtcclxuICAgICAgdGhpcy5fX29wdGlvbnMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcclxuICAgIH1cclxuICAgIGlmIChpZENvbHVtbilcclxuICAgICAgdGhpcy5fX2lkQ29sdW1uID0gaWRDb2x1bW47XHJcbiAgICBsZXQgeCA9IDxhbnk+dGhpcztcclxuICAgIGZvciAobGV0IGMgaW4geCkge1xyXG4gICAgICBsZXQgeSA9IHhbY107XHJcblxyXG4gICAgICBpZiAoeSBpbnN0YW5jZW9mIENvbHVtbikge1xyXG4gICAgICAgIGlmICgheS5kZWZzLmtleSlcclxuICAgICAgICAgIHkuZGVmcy5rZXkgPSBjO1xyXG4gICAgICAgIGlmICghdGhpcy5fX2lkQ29sdW1uICYmIHkuZGVmcy5rZXkgPT0gJ2lkJylcclxuICAgICAgICAgIHRoaXMuX19pZENvbHVtbiA9IHk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLl9fYXBwbHlDb2x1bW4oeSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fX2lkQ29sdW1uKVxyXG4gICAgICB0aGlzLl9faWRDb2x1bW4gPSB0aGlzLl9fY29sdW1uc1swXTtcclxuICB9XHJcbiAgaXNWYWxpZCgpIHtcclxuICAgIGxldCBvayA9IHRydWU7XHJcbiAgICB0aGlzLl9fY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICBpZiAoYy52YWxpZGF0aW9uRXJyb3IpXHJcbiAgICAgICAgb2sgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG9rO1xyXG4gIH1cclxuICBpc05ldygpIHtcclxuICAgIHJldHVybiB0aGlzLl9fZW50aXR5RGF0YS5pc05ld1JvdygpO1xyXG4gIH1cclxuICAvL0BpbnRlcm5hbFxyXG4gIHByaXZhdGUgX19nZXRWYWxpZGF0aW9uRXJyb3IoKSB7XHJcbiAgICBsZXQgcmVzdWx0OiBhbnkgPSB7fTtcclxuICAgIHJlc3VsdC5tb2RlbFN0YXRlID0ge307XHJcbiAgICB0aGlzLl9fY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICBpZiAoYy52YWxpZGF0aW9uRXJyb3IpXHJcbiAgICAgICAgcmVzdWx0Lm1vZGVsU3RhdGVbYy5kZWZzLmtleV0gPSBjLnZhbGlkYXRpb25FcnJvcjtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgLy9AaW50ZXJuYWxcclxuICBwcml2YXRlIF9fYXNzZXJ0VmFsaWRpdHkoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XHJcblxyXG4gICAgICB0aHJvdyB0aGlzLl9fZ2V0VmFsaWRhdGlvbkVycm9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIHNhdmUoYWZ0ZXJWYWxpZGF0aW9uQmVmb3JlU2F2aW5nPzogKHJvdzogdGhpcykgPT4gUHJvbWlzZTxhbnk+IHwgYW55KSB7XHJcbiAgICB0aGlzLl9fY2xlYXJFcnJvcnMoKTtcclxuXHJcbiAgICB0aGlzLl9fY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICBjLl9fcGVyZm9ybVZhbGlkYXRpb24oKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLl9fb25WYWxpZGF0ZSlcclxuICAgICAgdGhpcy5fX29uVmFsaWRhdGUoKTtcclxuICAgIGlmIChhZnRlclZhbGlkYXRpb25CZWZvcmVTYXZpbmcpXHJcbiAgICAgIGF3YWl0IGFmdGVyVmFsaWRhdGlvbkJlZm9yZVNhdmluZyh0aGlzKTtcclxuICAgIHRoaXMuX19hc3NlcnRWYWxpZGl0eSgpO1xyXG5cclxuICAgIGF3YWl0ICB0aGlzLl9fb25TYXZpbmdSb3coKTtcclxuICAgIHRoaXMuX19hc3NlcnRWYWxpZGl0eSgpO1xyXG4gICAgcmV0dXJuIGF3YWl0ICB0aGlzLl9fZW50aXR5RGF0YS5zYXZlKHRoaXMpLmNhdGNoKGUgPT4gdGhpcy5jYXRjaFNhdmVFcnJvcnMoZSkpO1xyXG4gIH1cclxuICAvL0BpbnRlcm5hbFxyXG4gIHByaXZhdGUgY2F0Y2hTYXZlRXJyb3JzKGVycjogYW55KTogYW55IHtcclxuICAgIGxldCBlID0gZXJyO1xyXG4gICAgXHJcbiAgICBpZiAoZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgcmV0dXJuIGUudGhlbih4ID0+IHRoaXMuY2F0Y2hTYXZlRXJyb3JzKHgpKTtcclxuICAgIH1cclxuICAgIGlmIChlLmVycm9yKSB7XHJcbiAgICAgIGUgPSBlLmVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlLm1lc3NhZ2UpXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yID0gZS5tZXNzYWdlO1xyXG4gICAgZWxzZSBpZiAoZS5NZXNzYWdlKVxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvciA9IGUuTWVzc2FnZTtcclxuICAgIGVsc2UgdGhpcy52YWxpZGF0aW9uRXJyb3IgPSBlO1xyXG4gICAgbGV0IHMgPSBlLm1vZGVsU3RhdGU7XHJcbiAgICBpZiAoIXMpXHJcbiAgICAgIHMgPSBlLk1vZGVsU3RhdGU7XHJcbiAgICBpZiAocykge1xyXG4gICAgICBPYmplY3Qua2V5cyhzKS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICAgIGxldCBjID0gdGhpcy5jb2x1bW5zLmZpbmQoayk7XHJcbiAgICAgICAgaWYgKGMpXHJcbiAgICAgICAgICBjLnZhbGlkYXRpb25FcnJvciA9IHNba107XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhyb3cgZXJyO1xyXG5cclxuICB9XHJcblxyXG4gIGRlbGV0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9fZW50aXR5RGF0YS5kZWxldGUoKS5jYXRjaChlID0+IHRoaXMuY2F0Y2hTYXZlRXJyb3JzKGUpKTtcclxuXHJcbiAgfVxyXG4gIHVuZG9DaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5fX2VudGl0eURhdGEucmVzZXQoKTtcclxuICAgIHRoaXMuX19jbGVhckVycm9ycygpO1xyXG4gIH1cclxuICBhc3luYyByZWxvYWQoKSB7XHJcbiAgICB0aHJvdyAnbm90IGltcGxlbWVudGVkJztcclxuICB9XHJcbiAgLy9AaW50ZXJuYWxcclxuICBfX2NsZWFyRXJyb3JzKCkge1xyXG4gICAgdGhpcy5fX2NvbHVtbnMuZm9yRWFjaChjID0+IGMuX19jbGVhckVycm9ycygpKTtcclxuICAgIHRoaXMudmFsaWRhdGlvbkVycm9yID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICB3YXNDaGFuZ2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX19lbnRpdHlEYXRhLndhc0NoYW5nZWQoKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICAvL0BpbnRlcm5hbFxyXG4gIF9fYXBwbHlDb2x1bW4oeTogQ29sdW1uPGFueT4pIHtcclxuICAgIGlmICgheS5kZWZzLmNhcHRpb24pXHJcbiAgICAgIHkuZGVmcy5jYXB0aW9uID0gbWFrZVRpdGxlKHkuZGVmcy5rZXkpO1xyXG4gICAgeS5fX3ZhbHVlUHJvdmlkZXIgPSB0aGlzLl9fZW50aXR5RGF0YTtcclxuICAgIGlmICh0aGlzLl9fY29sdW1ucy5pbmRleE9mKHkpIDwgMClcclxuICAgICAgdGhpcy5fX2NvbHVtbnMucHVzaCh5KTtcclxuICB9XHJcblxyXG4gIC8vQGludGVybmFsXHJcbiAgcHJpdmF0ZSBfX2NvbHVtbnM6IENvbHVtbjxhbnk+W10gPSBbXTtcclxuICBnZXQgY29sdW1ucygpIHtcclxuICAgIHJldHVybiBuZXcgRW50aXR5Q29sdW1ucyh0aGlzLl9fY29sdW1ucywgdGhpcy5fX2lkQ29sdW1uKTtcclxuICB9XHJcblxyXG5cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eU9wdGlvbnMge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBkYk5hbWU/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuICBjYXB0aW9uPzogc3RyaW5nO1xyXG4gIGFsbG93QXBpUmVhZD86IEFsbG93ZWQ7XHJcbiAgYWxsb3dBcGlVcGRhdGU/OiBBbGxvd2VkO1xyXG4gIGFsbG93QXBpRGVsZXRlPzogQWxsb3dlZDtcclxuICBhbGxvd0FwaUluc2VydD86IEFsbG93ZWQ7XHJcbiAgYWxsb3dBcGlDUlVEPzogQWxsb3dlZDtcclxuICBhcGlEYXRhRmlsdGVyPzogKCkgPT4gRmlsdGVyQmFzZTtcclxuICBzYXZpbmdSb3c/OiAoKSA9PiBQcm9taXNlPGFueT4gfCBhbnk7XHJcblxyXG4gIHZhbGlkYXRlPzogKGU6IEVudGl0eTxhbnk+KSA9PiBQcm9taXNlPGFueT4gfCBhbnk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1ha2VUaXRsZShuYW1lOiBzdHJpbmcpIHtcclxuXHJcbiAgLy8gaW5zZXJ0IGEgc3BhY2UgYmVmb3JlIGFsbCBjYXBzXHJcbiAgcmV0dXJuIG5hbWUucmVwbGFjZSgvKFtBLVpdKS9nLCAnICQxJylcclxuICAgIC8vIHVwcGVyY2FzZSB0aGUgZmlyc3QgY2hhcmFjdGVyXHJcbiAgICAucmVwbGFjZSgvXi4vLCAoc3RyKSA9PiBzdHIudG9VcHBlckNhc2UoKSkucmVwbGFjZSgnRW1haWwnLCAnZU1haWwnKS5yZXBsYWNlKFwiIEkgRFwiLCBcIiBJRFwiKTtcclxuXHJcbn1cclxuZXhwb3J0IGNsYXNzIEVudGl0eURlZnMge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9fb3B0aW9uczogRW50aXR5T3B0aW9ucykge1xyXG5cclxuICB9XHJcbiAgZ2V0IG5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fX29wdGlvbnMubmFtZTtcclxuICB9XHJcbiAgZ2V0IGRiTmFtZSgpIHtcclxuICAgIGlmICghdGhpcy5fX29wdGlvbnMuZGJOYW1lKVxyXG4gICAgICB0aGlzLl9fb3B0aW9ucy5kYk5hbWUgPSB0aGlzLm5hbWU7XHJcbiAgICByZXR1cm4gdmFsdWVPckV4cHJlc3Npb25Ub1ZhbHVlKHRoaXMuX19vcHRpb25zLmRiTmFtZSk7XHJcbiAgfVxyXG4gIGdldCBjYXB0aW9uKCkge1xyXG4gICAgaWYgKCF0aGlzLl9fb3B0aW9ucy5jYXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuX19vcHRpb25zLmNhcHRpb24gPSBtYWtlVGl0bGUodGhpcy5uYW1lKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9fb3B0aW9ucy5jYXB0aW9uO1xyXG4gIH1cclxufVxyXG5leHBvcnQgY2xhc3MgRW50aXR5Q29sdW1uczxUPntcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9fY29sdW1uczogQ29sdW1uPGFueT5bXSwgcHVibGljIHJlYWRvbmx5IGlkQ29sdW1uOiBDb2x1bW48VD4pIHtcclxuXHJcbiAgfVxyXG4gIFtTeW1ib2wuaXRlcmF0b3JdKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX19jb2x1bW5zW1N5bWJvbC5pdGVyYXRvcl0oKTtcclxuICB9XHJcbiAgdG9BcnJheSgpIHtcclxuICAgIHJldHVybiBbLi4udGhpcy5fX2NvbHVtbnNdO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBmaW5kKGtleTogc3RyaW5nIHwgQ29sdW1uPGFueT4pIHtcclxuICAgIGxldCB0aGVLZXk6IHN0cmluZztcclxuICAgIGlmIChrZXkgaW5zdGFuY2VvZiBDb2x1bW4pXHJcbiAgICAgIHRoZUtleSA9IGtleS5kZWZzLmtleTtcclxuICAgIGVsc2VcclxuICAgICAgdGhlS2V5ID0ga2V5O1xyXG4gICAgZm9yIChjb25zdCBjIG9mIHRoaXMuX19jb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjLmRlZnMua2V5ID09IHRoZUtleSlcclxuICAgICAgICByZXR1cm4gYztcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJlbXVsdC9jb3JlLyIsInNvdXJjZXMiOlsic3JjL2VudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBSS9EOzs7Ozs7SUFDRSxnQkFBWSxPQUFnQztRQUE1QyxpQkFpQkM7O1FBcUNELGlCQUFZLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDOztRQUczQyxrQkFBYTs7O1FBQStCLGNBQVEsQ0FBQyxFQUFDOztRQUV0RCxpQkFBWTs7O1FBQStCLGNBQVEsQ0FBQyxFQUFDOztRQTBJN0MsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFwTXBDLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2FBQ3BDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO2dCQUN6QixJQUFJLE9BQU8sQ0FBQyxTQUFTO29CQUNuQixJQUFJLENBQUMsYUFBYTs7O29CQUFHLGNBQU0sT0FBQSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQW5CLENBQW1CLENBQUEsQ0FBQztnQkFDakQsSUFBSSxPQUFPLENBQUMsUUFBUTtvQkFDbEIsSUFBSSxDQUFDLFlBQVk7OztvQkFBRyxjQUFNLE9BQUEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFJLENBQUMsRUFBdEIsQ0FBc0IsQ0FBQSxDQUFDO2FBQ3BEO1NBQ0Y7YUFDSTtZQUNILElBQUksQ0FBQyxTQUFTLEdBQUc7Z0JBQ2YsSUFBSSxFQUFFLFNBQVM7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TUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDOztZQUV0QixNQUFNLEdBQUcsR0FBRyxDQUFDOztZQUNmLEtBQWdCLElBQUEsS0FBQSxpQkFBQSxJQUFJLENBQUMsU0FBUyxDQUFBLGdCQUFBLDRCQUFFO2dCQUEzQixJQUFNLENBQUMsV0FBQTtnQkFDVixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU07b0JBQ3RCLE9BQU8sQ0FBQyxDQUFDO2FBQ1o7Ozs7Ozs7OztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFSCxvQkFBQztBQUFELENBQUMsQUExQkQsSUEwQkM7Ozs7Ozs7Ozs7SUF6QmEsa0NBQWdDOztJQUFFLGlDQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQsIEFsbG93ZWQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XHJcbmltcG9ydCB7IERhdGFBcGlTZXR0aW5ncyB9IGZyb20gXCIuL2RhdGEtYXBpXCI7XHJcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuL2NvbHVtblwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJCYXNlIH0gZnJvbSAnLi9maWx0ZXIvZmlsdGVyLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBfX0VudGl0eVZhbHVlUHJvdmlkZXIgfSBmcm9tICcuL19fRW50aXR5VmFsdWVQcm92aWRlcic7XHJcbmltcG9ydCB7IHZhbHVlT3JFeHByZXNzaW9uVG9WYWx1ZSB9IGZyb20gJy4vY29sdW1uLWludGVyZmFjZXMnO1xyXG5cclxuXHJcbi8vQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEVudGl0eTxpZFR5cGU+IHtcclxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogRW50aXR5T3B0aW9ucyB8IHN0cmluZykge1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgaWYgKHR5cGVvZiAob3B0aW9ucykgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICB0aGlzLl9fb3B0aW9ucyA9IHsgbmFtZTogb3B0aW9ucyB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX19vcHRpb25zID0gb3B0aW9ucztcclxuICAgICAgICBpZiAob3B0aW9ucy5zYXZpbmdSb3cpXHJcbiAgICAgICAgICB0aGlzLl9fb25TYXZpbmdSb3cgPSAoKSA9PiBvcHRpb25zLnNhdmluZ1JvdygpO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnZhbGlkYXRlKVxyXG4gICAgICAgICAgdGhpcy5fX29uVmFsaWRhdGUgPSAoKSA9PiBvcHRpb25zLnZhbGlkYXRlKHRoaXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fX29wdGlvbnMgPSB7XHJcbiAgICAgICAgbmFtZTogdW5kZWZpbmVkXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG5cclxuXHJcbiAgLy9AaW50ZXJuYWwgXHJcbiAgX2dldEVudGl0eUFwaVNldHRpbmdzKHI6IENvbnRleHQpOiBEYXRhQXBpU2V0dGluZ3M8RW50aXR5PGFueT4+IHtcclxuXHJcbiAgICBsZXQgb3B0aW9ucyA9IHRoaXMuX19vcHRpb25zO1xyXG4gICAgaWYgKG9wdGlvbnMuYWxsb3dBcGlDUlVEKSB7XHJcbiAgICAgIG9wdGlvbnMuYWxsb3dBcGlEZWxldGUgPSB0cnVlO1xyXG4gICAgICBvcHRpb25zLmFsbG93QXBpSW5zZXJ0ID0gdHJ1ZTtcclxuICAgICAgb3B0aW9ucy5hbGxvd0FwaVVwZGF0ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhbGxvd1JlYWQ6IHIuaXNBbGxvd2VkKG9wdGlvbnMuYWxsb3dBcGlSZWFkKSxcclxuICAgICAgYWxsb3dVcGRhdGU6IHIuaXNBbGxvd2VkKG9wdGlvbnMuYWxsb3dBcGlVcGRhdGUpLFxyXG4gICAgICBhbGxvd0RlbGV0ZTogci5pc0FsbG93ZWQob3B0aW9ucy5hbGxvd0FwaURlbGV0ZSksXHJcbiAgICAgIGFsbG93SW5zZXJ0OiByLmlzQWxsb3dlZChvcHRpb25zLmFsbG93QXBpSW5zZXJ0KSxcclxuICAgICAgZ2V0OiB7XHJcbiAgICAgICAgd2hlcmU6IHggPT4gb3B0aW9ucy5hcGlEYXRhRmlsdGVyID8gb3B0aW9ucy5hcGlEYXRhRmlsdGVyKCkgOiB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgLy9AaW50ZXJuYWxcclxuICBwcml2YXRlIF9fb3B0aW9uczogRW50aXR5T3B0aW9ucztcclxuICAvL0BpbnRlcm5hbFxyXG4gIHByaXZhdGUgX2RlZnM6IEVudGl0eURlZnM7XHJcbiAgZ2V0IGRlZnMoKSB7XHJcbiAgICBpZiAoIXRoaXMuX2RlZnMpXHJcbiAgICAgIHRoaXMuX2RlZnMgPSBuZXcgRW50aXR5RGVmcyh0aGlzLl9fb3B0aW9ucyk7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVmcztcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy9AaW50ZXJuYWxcclxuICBfX2VudGl0eURhdGEgPSBuZXcgX19FbnRpdHlWYWx1ZVByb3ZpZGVyKCk7XHJcblxyXG4gIC8vQGludGVybmFsXHJcbiAgX19vblNhdmluZ1JvdzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4gPSAoKSA9PiB7IH07XHJcbiAgLy9AaW50ZXJuYWxcclxuICBfX29uVmFsaWRhdGU6ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+ID0gKCkgPT4geyB9O1xyXG5cclxuICB2YWxpZGF0aW9uRXJyb3I6IHN0cmluZztcclxuICAvL0BpbnRlcm5hbFxyXG4gIHByaXZhdGUgX19pZENvbHVtbjogQ29sdW1uPGlkVHlwZT47XHJcbiAgLy9AaW50ZXJuYWxcclxuICBfX2luaXRDb2x1bW5zKGlkQ29sdW1uPzogQ29sdW1uPGlkVHlwZT4pIHtcclxuICAgIGlmICghdGhpcy5fX29wdGlvbnMubmFtZSkge1xyXG4gICAgICB0aGlzLl9fb3B0aW9ucy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgfVxyXG4gICAgaWYgKGlkQ29sdW1uKVxyXG4gICAgICB0aGlzLl9faWRDb2x1bW4gPSBpZENvbHVtbjtcclxuICAgIGxldCB4ID0gPGFueT50aGlzO1xyXG4gICAgZm9yIChsZXQgYyBpbiB4KSB7XHJcbiAgICAgIGxldCB5ID0geFtjXTtcclxuXHJcbiAgICAgIGlmICh5IGluc3RhbmNlb2YgQ29sdW1uKSB7XHJcbiAgICAgICAgaWYgKCF5LmRlZnMua2V5KVxyXG4gICAgICAgICAgeS5kZWZzLmtleSA9IGM7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9faWRDb2x1bW4gJiYgeS5kZWZzLmtleSA9PSAnaWQnKVxyXG4gICAgICAgICAgdGhpcy5fX2lkQ29sdW1uID0geTtcclxuXHJcblxyXG4gICAgICAgIHRoaXMuX19hcHBseUNvbHVtbih5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLl9faWRDb2x1bW4pXHJcbiAgICAgIHRoaXMuX19pZENvbHVtbiA9IHRoaXMuX19jb2x1bW5zWzBdO1xyXG4gIH1cclxuICBpc1ZhbGlkKCkge1xyXG4gICAgbGV0IG9rID0gdHJ1ZTtcclxuICAgIHRoaXMuX19jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIGlmIChjLnZhbGlkYXRpb25FcnJvcilcclxuICAgICAgICBvayA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gb2s7XHJcbiAgfVxyXG4gIGlzTmV3KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX19lbnRpdHlEYXRhLmlzTmV3Um93KCk7XHJcbiAgfVxyXG4gIC8vQGludGVybmFsXHJcbiAgcHJpdmF0ZSBfX2dldFZhbGlkYXRpb25FcnJvcigpIHtcclxuICAgIGxldCByZXN1bHQ6IGFueSA9IHt9O1xyXG4gICAgcmVzdWx0Lm1vZGVsU3RhdGUgPSB7fTtcclxuICAgIHRoaXMuX19jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIGlmIChjLnZhbGlkYXRpb25FcnJvcilcclxuICAgICAgICByZXN1bHQubW9kZWxTdGF0ZVtjLmRlZnMua2V5XSA9IGMudmFsaWRhdGlvbkVycm9yO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICAvL0BpbnRlcm5hbFxyXG4gIHByaXZhdGUgX19hc3NlcnRWYWxpZGl0eSgpIHtcclxuICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcclxuXHJcbiAgICAgIHRocm93IHRoaXMuX19nZXRWYWxpZGF0aW9uRXJyb3IoKTtcclxuICAgIH1cclxuICB9XHJcbiAgYXN5bmMgc2F2ZShhZnRlclZhbGlkYXRpb25CZWZvcmVTYXZpbmc/OiAocm93OiB0aGlzKSA9PiBQcm9taXNlPGFueT4gfCBhbnkpIHtcclxuICAgIHRoaXMuX19jbGVhckVycm9ycygpO1xyXG5cclxuICAgIHRoaXMuX19jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgIGMuX19wZXJmb3JtVmFsaWRhdGlvbigpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuX19vblZhbGlkYXRlKVxyXG4gICAgICB0aGlzLl9fb25WYWxpZGF0ZSgpO1xyXG4gICAgaWYgKGFmdGVyVmFsaWRhdGlvbkJlZm9yZVNhdmluZylcclxuICAgICAgYXdhaXQgYWZ0ZXJWYWxpZGF0aW9uQmVmb3JlU2F2aW5nKHRoaXMpO1xyXG4gICAgdGhpcy5fX2Fzc2VydFZhbGlkaXR5KCk7XHJcblxyXG4gICAgYXdhaXQgIHRoaXMuX19vblNhdmluZ1JvdygpO1xyXG4gICAgdGhpcy5fX2Fzc2VydFZhbGlkaXR5KCk7XHJcbiAgICByZXR1cm4gYXdhaXQgIHRoaXMuX19lbnRpdHlEYXRhLnNhdmUodGhpcykuY2F0Y2goZSA9PiB0aGlzLmNhdGNoU2F2ZUVycm9ycyhlKSk7XHJcbiAgfVxyXG4gIC8vQGludGVybmFsXHJcbiAgcHJpdmF0ZSBjYXRjaFNhdmVFcnJvcnMoZXJyOiBhbnkpOiBhbnkge1xyXG4gICAgbGV0IGUgPSBlcnI7XHJcbiAgICBcclxuICAgIGlmIChlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICByZXR1cm4gZS50aGVuKHggPT4gdGhpcy5jYXRjaFNhdmVFcnJvcnMoeCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKGUuZXJyb3IpIHtcclxuICAgICAgZSA9IGUuZXJyb3I7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGUubWVzc2FnZSlcclxuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3IgPSBlLm1lc3NhZ2U7XHJcbiAgICBlbHNlIGlmIChlLk1lc3NhZ2UpXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yID0gZS5NZXNzYWdlO1xyXG4gICAgZWxzZSB0aGlzLnZhbGlkYXRpb25FcnJvciA9IGU7XHJcbiAgICBsZXQgcyA9IGUubW9kZWxTdGF0ZTtcclxuICAgIGlmICghcylcclxuICAgICAgcyA9IGUuTW9kZWxTdGF0ZTtcclxuICAgIGlmIChzKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKHMpLmZvckVhY2goayA9PiB7XHJcbiAgICAgICAgbGV0IGMgPSB0aGlzLmNvbHVtbnMuZmluZChrKTtcclxuICAgICAgICBpZiAoYylcclxuICAgICAgICAgIGMudmFsaWRhdGlvbkVycm9yID0gc1trXTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aHJvdyBlcnI7XHJcblxyXG4gIH1cclxuXHJcbiAgZGVsZXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX19lbnRpdHlEYXRhLmRlbGV0ZSgpLmNhdGNoKGUgPT4gdGhpcy5jYXRjaFNhdmVFcnJvcnMoZSkpO1xyXG5cclxuICB9XHJcbiAgdW5kb0NoYW5nZXMoKSB7XHJcbiAgICB0aGlzLl9fZW50aXR5RGF0YS5yZXNldCgpO1xyXG4gICAgdGhpcy5fX2NsZWFyRXJyb3JzKCk7XHJcbiAgfVxyXG4gIGFzeW5jIHJlbG9hZCgpIHtcclxuICAgIHRocm93ICdub3QgaW1wbGVtZW50ZWQnO1xyXG4gIH1cclxuICAvL0BpbnRlcm5hbFxyXG4gIF9fY2xlYXJFcnJvcnMoKSB7XHJcbiAgICB0aGlzLl9fY29sdW1ucy5mb3JFYWNoKGMgPT4gYy5fX2NsZWFyRXJyb3JzKCkpO1xyXG4gICAgdGhpcy52YWxpZGF0aW9uRXJyb3IgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIHdhc0NoYW5nZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fX2VudGl0eURhdGEud2FzQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vQGludGVybmFsXHJcbiAgX19hcHBseUNvbHVtbih5OiBDb2x1bW48YW55Pikge1xyXG4gICAgaWYgKCF5LmRlZnMuY2FwdGlvbilcclxuICAgICAgeS5kZWZzLmNhcHRpb24gPSBtYWtlVGl0bGUoeS5kZWZzLmtleSk7XHJcbiAgICB5Ll9fdmFsdWVQcm92aWRlciA9IHRoaXMuX19lbnRpdHlEYXRhO1xyXG4gICAgaWYgKHRoaXMuX19jb2x1bW5zLmluZGV4T2YoeSkgPCAwKVxyXG4gICAgICB0aGlzLl9fY29sdW1ucy5wdXNoKHkpO1xyXG4gIH1cclxuXHJcbiAgLy9AaW50ZXJuYWxcclxuICBwcml2YXRlIF9fY29sdW1uczogQ29sdW1uPGFueT5bXSA9IFtdO1xyXG4gIGdldCBjb2x1bW5zKCkge1xyXG4gICAgcmV0dXJuIG5ldyBFbnRpdHlDb2x1bW5zKHRoaXMuX19jb2x1bW5zLCB0aGlzLl9faWRDb2x1bW4pO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5T3B0aW9ucyB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGRiTmFtZT86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xyXG4gIGNhcHRpb24/OiBzdHJpbmc7XHJcbiAgYWxsb3dBcGlSZWFkPzogQWxsb3dlZDtcclxuICBhbGxvd0FwaVVwZGF0ZT86IEFsbG93ZWQ7XHJcbiAgYWxsb3dBcGlEZWxldGU/OiBBbGxvd2VkO1xyXG4gIGFsbG93QXBpSW5zZXJ0PzogQWxsb3dlZDtcclxuICBhbGxvd0FwaUNSVUQ/OiBBbGxvd2VkO1xyXG4gIGFwaURhdGFGaWx0ZXI/OiAoKSA9PiBGaWx0ZXJCYXNlO1xyXG4gIHNhdmluZ1Jvdz86ICgpID0+IFByb21pc2U8YW55PiB8IGFueTtcclxuXHJcbiAgdmFsaWRhdGU/OiAoZTogRW50aXR5PGFueT4pID0+IFByb21pc2U8YW55PiB8IGFueTtcclxufVxyXG5cclxuZnVuY3Rpb24gbWFrZVRpdGxlKG5hbWU6IHN0cmluZykge1xyXG5cclxuICAvLyBpbnNlcnQgYSBzcGFjZSBiZWZvcmUgYWxsIGNhcHNcclxuICByZXR1cm4gbmFtZS5yZXBsYWNlKC8oW0EtWl0pL2csICcgJDEnKVxyXG4gICAgLy8gdXBwZXJjYXNlIHRoZSBmaXJzdCBjaGFyYWN0ZXJcclxuICAgIC5yZXBsYWNlKC9eLi8sIChzdHIpID0+IHN0ci50b1VwcGVyQ2FzZSgpKS5yZXBsYWNlKCdFbWFpbCcsICdlTWFpbCcpLnJlcGxhY2UoXCIgSSBEXCIsIFwiIElEXCIpO1xyXG5cclxufVxyXG5leHBvcnQgY2xhc3MgRW50aXR5RGVmcyB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX19vcHRpb25zOiBFbnRpdHlPcHRpb25zKSB7XHJcblxyXG4gIH1cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9fb3B0aW9ucy5uYW1lO1xyXG4gIH1cclxuICBnZXQgZGJOYW1lKCkge1xyXG4gICAgaWYgKCF0aGlzLl9fb3B0aW9ucy5kYk5hbWUpXHJcbiAgICAgIHRoaXMuX19vcHRpb25zLmRiTmFtZSA9IHRoaXMubmFtZTtcclxuICAgIHJldHVybiB2YWx1ZU9yRXhwcmVzc2lvblRvVmFsdWUodGhpcy5fX29wdGlvbnMuZGJOYW1lKTtcclxuICB9XHJcbiAgZ2V0IGNhcHRpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuX19vcHRpb25zLmNhcHRpb24pIHtcclxuICAgICAgdGhpcy5fX29wdGlvbnMuY2FwdGlvbiA9IG1ha2VUaXRsZSh0aGlzLm5hbWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX19vcHRpb25zLmNhcHRpb247XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlDb2x1bW5zPFQ+e1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX19jb2x1bW5zOiBDb2x1bW48YW55PltdLCBwdWJsaWMgcmVhZG9ubHkgaWRDb2x1bW46IENvbHVtbjxUPikge1xyXG5cclxuICB9XHJcbiAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fX2NvbHVtbnNbU3ltYm9sLml0ZXJhdG9yXSgpO1xyXG4gIH1cclxuICB0b0FycmF5KCkge1xyXG4gICAgcmV0dXJuIFsuLi50aGlzLl9fY29sdW1uc107XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGZpbmQoa2V5OiBzdHJpbmcgfCBDb2x1bW48YW55Pikge1xyXG4gICAgbGV0IHRoZUtleTogc3RyaW5nO1xyXG4gICAgaWYgKGtleSBpbnN0YW5jZW9mIENvbHVtbilcclxuICAgICAgdGhlS2V5ID0ga2V5LmRlZnMua2V5O1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGVLZXkgPSBrZXk7XHJcbiAgICBmb3IgKGNvbnN0IGMgb2YgdGhpcy5fX2NvbHVtbnMpIHtcclxuICAgICAgaWYgKGMuZGVmcy5rZXkgPT0gdGhlS2V5KVxyXG4gICAgICAgIHJldHVybiBjO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG59XHJcbiJdfQ== |
{ | ||
"name": "@remult/core", | ||
"schematics": "./schematics/collection.json", | ||
"version": "1.0.20", | ||
"version": "1.0.21", | ||
"description": "remult core lib", | ||
@@ -6,0 +6,0 @@ "license": "MIT", |
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":4,"metadata":{"RemultModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":26,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵg"}],"imports":[{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":28,"character":12},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":28,"character":25},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":28,"character":39},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":28,"character":57},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":28,"character":83},{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"BrowserAnimationsModule","line":28,"character":100},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":29,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatButtonModule","line":30,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":31,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatIconModule","line":31,"character":20},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":31,"character":35},{"__symbolic":"reference","module":"@angular/material","name":"MatCheckboxModule","line":31,"character":56}],"providers":[{"__symbolic":"reference","name":"Context"},{"__symbolic":"reference","name":"JwtSessionManager"},{"__symbolic":"reference","name":"NotSignedInGuard"},{"__symbolic":"reference","name":"SignedInGuard"},{"__symbolic":"reference","name":"RouteHelperService"},{"__symbolic":"reference","name":"BusyService"},{"provide":{"__symbolic":"reference","module":"@angular/common/http","name":"HTTP_INTERCEPTORS","line":35,"character":15},"useClass":{"__symbolic":"reference","name":"ɵa"},"multi":true}],"exports":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵc"}],"entryComponents":[{"__symbolic":"reference","name":"ɵf"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":86,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BusyService"}]}],"intercept":[{"__symbolic":"method"}]}},"BusyService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"donotWait":[{"__symbolic":"method"}],"donotWaitNonAsync":[{"__symbolic":"method"}],"log":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material","name":"MatDialog","line":38,"character":32}]}],"doWhileShowingBusy":[{"__symbolic":"method"}],"showBusy":[{"__symbolic":"method"}]},"statics":{"singleInstance":{"__symbolic":"error","message":"Variable not initialized","line":31,"character":11}}},"RouteHelperService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":5,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":5,"character":58}]}],"navigateToComponent":[{"__symbolic":"method"}],"canNavigateToRoute":[{"__symbolic":"method"}]}},"SignedInGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":39,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Context"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":5,"character":32},{"__symbolic":"reference","name":"RouteHelperService"}]}],"isAllowed":[{"__symbolic":"method"}],"canActivate":[{"__symbolic":"method"}]},"statics":{"componentToNavigateIfNotAllowed":{"__symbolic":"error","message":"Variable not initialized","line":47,"character":11}}},"NotSignedInGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":66,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Context"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":5,"character":32}]}],"canActivate":[{"__symbolic":"method"}]}},"DataProvider":{"__symbolic":"interface"},"EntityDataProvider":{"__symbolic":"interface"},"EntityDataProviderFindOptions":{"__symbolic":"interface"},"EntityProvider":{"__symbolic":"interface"},"EntityWhere":{"__symbolic":"interface"},"EntityOrderBy":{"__symbolic":"interface"},"entityOrderByToSort":{"__symbolic":"function"},"FindOptions":{"__symbolic":"interface"},"__RowsOfDataForTesting":{"__symbolic":"interface"},"SqlImplementation":{"__symbolic":"interface"},"SqlCommand":{"__symbolic":"interface"},"SqlResult":{"__symbolic":"interface"},"ColumnStorage":{"__symbolic":"interface"},"ColumnSettings":{"__symbolic":"interface"},"ColumnOptions":{"__symbolic":"interface"},"ValueOrExpression":{"__symbolic":"interface"},"valueOrExpressionToValue":{"__symbolic":"function"},"DataControlInfo":{"__symbolic":"interface"},"DataControlSettings":{"__symbolic":"interface"},"displayOptions":{"__symbolic":"interface"},"clickable":{"__symbolic":"interface"},"ValueListItem":{"__symbolic":"interface"},"RestDataProvider":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"any"}]}],"getEntityDataProvider":[{"__symbolic":"method"}],"transaction":[{"__symbolic":"method"}]}},"RestDataProviderHttpProvider":{"__symbolic":"interface"},"RestDataProviderHttpProviderUsingFetch":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":90,"character":41,"module":"./src/data-providers/rest-data-provider"}]}],"get":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}]}},"InMemoryDataProvider":{"__symbolic":"class","members":{"transaction":[{"__symbolic":"method"}],"getEntityDataProvider":[{"__symbolic":"method"}],"toString":[{"__symbolic":"method"}]}},"ArrayEntityDataProvider":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Entity"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"count":[{"__symbolic":"method"}],"find":[{"__symbolic":"method"}],"map":[{"__symbolic":"method"}],"idMatches":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}]}},"WebSqlDataProvider":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"entityIsUsedForTheFirstTime":[{"__symbolic":"method"}],"createCommand":[{"__symbolic":"method"}],"transaction":[{"__symbolic":"method"}],"addColumnSqlSyntax":[{"__symbolic":"method"}],"toString":[{"__symbolic":"method"}]}},"SqlDatabase":{"__symbolic":"class","members":{"createCommand":[{"__symbolic":"method"}],"execute":[{"__symbolic":"method"}],"getEntityDataProvider":[{"__symbolic":"method"}],"transaction":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"SqlImplementation"}]}]},"statics":{"LogToConsole":false}},"JsonEntityStorage":{"__symbolic":"interface"},"JsonDataProvider":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}],"getEntityDataProvider":[{"__symbolic":"method"}],"transaction":[{"__symbolic":"method"}]}},"DataApi":{"__symbolic":"class","arity":1,"members":{"getRoute":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"SpecificEntityHelper"}]}],"get":[{"__symbolic":"method"}],"count":[{"__symbolic":"method"}],"getArray":[{"__symbolic":"method"}],"buildWhere":[{"__symbolic":"method"}],"doOnId":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}]}},"DataApiSettings":{"__symbolic":"interface"},"DataApiResponse":{"__symbolic":"interface"},"DataApiError":{"__symbolic":"interface"},"DataApiRequest":{"__symbolic":"interface"},"DataApiServer":{"__symbolic":"interface"},"DataList":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"EntityProvider"}]}],"map":[{"__symbolic":"method"}],"count":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}]}},"Lookup":{"__symbolic":"class","arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":12,"character":32,"context":{"typeName":"entityType"},"module":"./src/lookup"},{"__symbolic":"reference","name":"EntityProvider"}]}],"get":[{"__symbolic":"method"}],"found":[{"__symbolic":"method"}],"getInternal":[{"__symbolic":"method"}],"_internalGetByOptions":[{"__symbolic":"method"}],"whenGet":[{"__symbolic":"method"}]}},"lookupRowInfo":{"__symbolic":"class","arity":1,"members":{}},"Action":{"__symbolic":"class","arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":21,"character":90,"module":"./src/server-action"}]}],"run":[{"__symbolic":"method"}],"execute":[{"__symbolic":"method"}],"__register":[{"__symbolic":"method"}]},"statics":{"provider":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"RestDataProviderHttpProviderUsingFetch"}}}},"myServerAction":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Action"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"error","message":"Expression form not supported","line":57,"character":116,"module":"./src/server-action"}]}],"execute":[{"__symbolic":"method"}]}},"ServerFunctionOptions":{"__symbolic":"interface"},"actionInfo":{"allActions":[],"runningOnServer":false},"ServerFunction":{"__symbolic":"function","parameters":["options"],"value":{"__symbolic":"error","message":"Lambda not supported","line":106,"character":11,"module":"./src/server-action"}},"serverActionField":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Symbol"},"arguments":["serverActionField"]},"Context":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1}}],"members":{"clearAllCache":[{"__symbolic":"method"}],"isSignedIn":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":33,"character":23},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":33,"character":53}]}],"getCookie":[{"__symbolic":"method"}],"getHost":[{"__symbolic":"method"}],"getPathInUrl":[{"__symbolic":"method"}],"_setUser":[{"__symbolic":"method"}],"isAllowed":[{"__symbolic":"method"}],"for":[{"__symbolic":"method"}],"openDialog":[{"__symbolic":"method"}]},"statics":{"apiBaseUrl":"api"}},"DataProviderFactoryBuilder":{"__symbolic":"interface"},"ServerContext":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Context"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DataProvider"}]}],"getHost":[{"__symbolic":"method"}],"getPathInUrl":[{"__symbolic":"method"}],"getCookie":[{"__symbolic":"method"}],"setReq":[{"__symbolic":"method"}],"setDataProvider":[{"__symbolic":"method"}],"getOrigin":[{"__symbolic":"method"}]}},"SpecificEntityHelper":{"__symbolic":"class","arity":2,"members":{"_getApiSettings":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":190,"character":31,"module":"./src/context"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"reference","name":"any"}]}]},{"__symbolic":"reference","name":"Context"},{"__symbolic":"reference","name":"DataProvider"}]}],"lookup":[{"__symbolic":"method"}],"lookupAsync":[{"__symbolic":"method"}],"count":[{"__symbolic":"method"}],"foreach":[{"__symbolic":"method"}],"translateOptions":[{"__symbolic":"method"}],"find":[{"__symbolic":"method"}],"fromPojo":[{"__symbolic":"method"}],"toApiPojo":[{"__symbolic":"method"}],"_updateEntityBasedOnApi":[{"__symbolic":"method"}],"findFirst":[{"__symbolic":"method"}],"toPojoArray":[{"__symbolic":"method"}],"gridSettings":[{"__symbolic":"method"}],"getValueList":[{"__symbolic":"method"}]}},"EntityType":{"__symbolic":"interface"},"allEntities":[],"EntityClass":{"__symbolic":"function"},"UserInfo":{"__symbolic":"interface"},"Role":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"not":{"__symbolic":"function","parameters":["allowed"],"value":{"__symbolic":"error","message":"Lambda not supported","line":385,"character":15,"module":"./src/context"}}}},"Allowed":{"__symbolic":"interface"},"AngularComponent":{"__symbolic":"interface"},"DialogConfig":{"__symbolic":"function","parameters":["config"],"value":{"__symbolic":"error","message":"Lambda not supported","line":393,"character":11,"module":"./src/context"}},"RoleChecker":{"__symbolic":"interface"},"JwtSessionManager":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Context"}]}],"loadSessionFromCookie":[{"__symbolic":"method"}],"setToken":[{"__symbolic":"method"}],"_setToken":[{"__symbolic":"method"}],"signout":[{"__symbolic":"method"}]}},"IdEntity":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Entity"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"EntityOptions"}]}],"setEmptyIdForNewRow":[{"__symbolic":"method"}]}},"IdColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StringColumn"},"members":{"setToNewId":[{"__symbolic":"method"}]}},"DecorateDataColumnSettings":{"__symbolic":"function"},"checkForDuplicateValue":{"__symbolic":"function"},"GridSettings":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"EntityProvider"},{"__symbolic":"reference","name":"Context"},{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":16,"character":113,"context":{"typeName":"rowType"},"module":"./src/grid-settings"}]}]}],"initOrigList":[{"__symbolic":"method"}],"userChooseColumns":[{"__symbolic":"method"}],"resetColumns":[{"__symbolic":"method"}],"addCol":[{"__symbolic":"method"}],"deleteCol":[{"__symbolic":"method"}],"adjustColumns":[{"__symbolic":"method"}],"setGetOptions":[{"__symbolic":"method"}],"addNewRow":[{"__symbolic":"method"}],"addArea":[{"__symbolic":"method"}],"setCurrentRow":[{"__symbolic":"method"}],"nextRow":[{"__symbolic":"method"}],"previousRowAllowed":[{"__symbolic":"method"}],"previousRow":[{"__symbolic":"method"}],"deleteCurentRow":[{"__symbolic":"method"}],"currentRowAsRestListItemRow":[{"__symbolic":"method"}],"cancelCurrentRowChanges":[{"__symbolic":"method"}],"deleteCurrentRowAllowed":[{"__symbolic":"method"}],"currentRowChanged":[{"__symbolic":"method"}],"saveCurrentRow":[{"__symbolic":"method"}],"_doSavingRow":[{"__symbolic":"method"}],"nextPage":[{"__symbolic":"method"}],"previousPage":[{"__symbolic":"method"}],"firstPage":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"sort":[{"__symbolic":"method"}],"sortedAscending":[{"__symbolic":"method"}],"sortedDescending":[{"__symbolic":"method"}],"getRecords":[{"__symbolic":"method"}]}},"IDataSettings":{"__symbolic":"interface"},"RowButton":{"__symbolic":"interface"},"IDataAreaSettings":{"__symbolic":"interface"},"DataAreaSettings":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":15,"character":50,"context":{"typeName":"rowType"},"module":"./src/data-area-settings"}]},{"__symbolic":"reference","name":"ColumnCollection"},{"__symbolic":"error","message":"Could not resolve type","line":15,"character":113,"context":{"typeName":"rowType"},"module":"./src/data-area-settings"}]}]}},"DataArealColumnSetting":{"__symbolic":"interface"},"dataAreaSettings":{"__symbolic":"interface"},"Sort":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"SortSegment":{"__symbolic":"interface"},"ColumnCollection":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":11,"character":33,"module":"./src/column-collection"},{"__symbolic":"error","message":"Expression form not supported","line":11,"character":73,"module":"./src/column-collection"},{"__symbolic":"reference","name":"FilterHelper"},{"__symbolic":"error","message":"Expression form not supported","line":11,"character":150,"module":"./src/column-collection"},{"__symbolic":"reference","name":"Context"}]}],"__showArea":[{"__symbolic":"method"}],"__getColumn":[{"__symbolic":"method"}],"__dataControlStyle":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"buildDropDown":[{"__symbolic":"method"}],"colListChanged":[{"__symbolic":"method"}],"onColListChange":[{"__symbolic":"method"}],"moveCol":[{"__symbolic":"method"}],"filterRows":[{"__symbolic":"method"}],"clearFilter":[{"__symbolic":"method"}],"_shouldShowFilterDialog":[{"__symbolic":"method"}],"showFilterDialog":[{"__symbolic":"method"}],"deleteCol":[{"__symbolic":"method"}],"addCol":[{"__symbolic":"method"}],"_getEditable":[{"__symbolic":"method"}],"_click":[{"__symbolic":"method"}],"_getColDisplayValue":[{"__symbolic":"method"}],"_getColDataType":[{"__symbolic":"method"}],"_getColumnClass":[{"__symbolic":"method"}],"_getError":[{"__symbolic":"method"}],"autoGenerateColumnsBasedOnData":[{"__symbolic":"method"}],"__columnSettingsTypeScript":[{"__symbolic":"method"}],"__columnTypeScriptDescription":[{"__symbolic":"method"}],"__changeWidth":[{"__symbolic":"method"}],"_colValueChanged":[{"__symbolic":"method"}],"_initColumnsArrays":[{"__symbolic":"method"}],"getGridColumns":[{"__symbolic":"method"}],"getNonGridColumns":[{"__symbolic":"method"}]}},"Entity":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}],"_getEntityApiSettings":[{"__symbolic":"method"}],"__initColumns":[{"__symbolic":"method"}],"isValid":[{"__symbolic":"method"}],"isNew":[{"__symbolic":"method"}],"__getValidationError":[{"__symbolic":"method"}],"__assertValidity":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"catchSaveErrors":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"undoChanges":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"__clearErrors":[{"__symbolic":"method"}],"wasChanged":[{"__symbolic":"method"}],"__applyColumn":[{"__symbolic":"method"}]},"statics":{"__key":{"__symbolic":"error","message":"Variable not initialized","line":29,"character":9}}},"EntityOptions":{"__symbolic":"interface"},"EntityDefs":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}]}},"EntityColumns":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"Column"}]},{"__symbolic":"reference","name":"Column"}]}],"toArray":[{"__symbolic":"method"}],"find":[{"__symbolic":"method"}]}},"Column":{"__symbolic":"class","arity":1,"members":{"__setDefaultForNewRow":[{"__symbolic":"method"}],"__calcServerExpression":[{"__symbolic":"method"}],"__clearErrors":[{"__symbolic":"method"}],"__performValidation":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ColumnOptions"},{"__symbolic":"reference","name":"ColumnOptions"}]}],"__decorateDataSettings":[{"__symbolic":"method"}],"__getStorage":[{"__symbolic":"method"}],"__defaultStorage":[{"__symbolic":"method"}],"isEqualTo":[{"__symbolic":"method"}],"isDifferentFrom":[{"__symbolic":"method"}],"isGreaterOrEqualTo":[{"__symbolic":"method"}],"isGreaterThan":[{"__symbolic":"method"}],"isLessOrEqualTo":[{"__symbolic":"method"}],"isLessThan":[{"__symbolic":"method"}],"__getVal":[{"__symbolic":"method"}],"__processValue":[{"__symbolic":"method"}],"fromRawValue":[{"__symbolic":"method"}],"toRawValue":[{"__symbolic":"method"}],"__addToPojo":[{"__symbolic":"method"}],"__loadFromToPojo":[{"__symbolic":"method"}]}},"ColumnDefs":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ColumnSettings"}]}],"__isVirtual":[{"__symbolic":"method"}]}},"BoolStorage":{"__symbolic":"class","members":{"toDb":[{"__symbolic":"method"}],"fromDb":[{"__symbolic":"method"}]}},"CharDateStorage":{"__symbolic":"class","members":{"toDb":[{"__symbolic":"method"}],"fromDb":[{"__symbolic":"method"}]}},"DateTimeDateStorage":{"__symbolic":"class","members":{"toDb":[{"__symbolic":"method"}],"fromDb":[{"__symbolic":"method"}]}},"DateTimeStorage":{"__symbolic":"class","members":{"toDb":[{"__symbolic":"method"}],"fromDb":[{"__symbolic":"method"}]}},"DefaultStorage":{"__symbolic":"class","arity":1,"members":{"toDb":[{"__symbolic":"method"}],"fromDb":[{"__symbolic":"method"}]}},"ValueListColumn":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"Column"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ColumnOptions"},{"__symbolic":"reference","name":"ColumnOptions"}]}],"getOptions":[{"__symbolic":"method"}],"toRawValue":[{"__symbolic":"method"}],"fromRawValue":[{"__symbolic":"method"}],"byId":[{"__symbolic":"method"}]}},"CompoundIdColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Column"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Entity"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"Column"}]}]}],"__isVirtual":[{"__symbolic":"method"}],"isEqualTo":[{"__symbolic":"method"}],"__addIdToPojo":[{"__symbolic":"method"}],"resultIdFilter":[{"__symbolic":"method"}]}},"DateColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Column"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ColumnOptions"}]}],"getDayOfWeek":[{"__symbolic":"method"}],"__defaultStorage":[{"__symbolic":"method"}],"toRawValue":[{"__symbolic":"method"}],"fromRawValue":[{"__symbolic":"method"}]}},"DateTimeColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Column"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ColumnOptions"}]}],"getDayOfWeek":[{"__symbolic":"method"}],"__defaultStorage":[{"__symbolic":"method"}],"fromRawValue":[{"__symbolic":"method"}],"toRawValue":[{"__symbolic":"method"}]}},"NumberColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Column"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":5,"character":34,"context":{"typeName":"NumberColumnOptions"},"module":"./src/columns/number-column"}]}],"__processValue":[{"__symbolic":"method"}]}},"NumberColumnSettings":{"__symbolic":"interface"},"NumberColumnOptions":{"__symbolic":"interface"},"BoolColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Column"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ColumnOptions"}]}],"__defaultStorage":[{"__symbolic":"method"}]}},"StringColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Column"},"members":{"isContains":[{"__symbolic":"method"}],"isStartsWith":[{"__symbolic":"method"}]}},"FilterBase":{"__symbolic":"interface"},"FilterConsumer":{"__symbolic":"interface"},"Filter":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":5,"character":31,"module":"./src/filter/filter"}]}],"and":[{"__symbolic":"method"}],"__applyToConsumer":[{"__symbolic":"method"}]}},"AndFilter":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"FilterBase"},{"__symbolic":"reference","name":"FilterBase"}]}],"and":[{"__symbolic":"method"}],"__applyToConsumer":[{"__symbolic":"method"}]}},"FilterConsumerBridgeToSqlRequest":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"SqlCommand"}]}],"isEqualTo":[{"__symbolic":"method"}],"isDifferentFrom":[{"__symbolic":"method"}],"isGreaterOrEqualTo":[{"__symbolic":"method"}],"isGreaterThan":[{"__symbolic":"method"}],"isLessOrEqualTo":[{"__symbolic":"method"}],"isLessThan":[{"__symbolic":"method"}],"isContains":[{"__symbolic":"method"}],"isStartsWith":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}]}},"FilterConsumnerBridgeToUrlBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"UrlBuilder"}]}],"isEqualTo":[{"__symbolic":"method"}],"isDifferentFrom":[{"__symbolic":"method"}],"isGreaterOrEqualTo":[{"__symbolic":"method"}],"isGreaterThan":[{"__symbolic":"method"}],"isLessOrEqualTo":[{"__symbolic":"method"}],"isLessThan":[{"__symbolic":"method"}],"isContains":[{"__symbolic":"method"}],"isStartsWith":[{"__symbolic":"method"}]}},"FilterHelper":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":12,"character":36,"module":"./src/filter/filter-helper"}]}],"isFiltered":[{"__symbolic":"method"}],"filterColumn":[{"__symbolic":"method"}],"addToFindOptions":[{"__symbolic":"method"}]}},"UrlBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"add":[{"__symbolic":"method"}],"addObject":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"data-control","template":"<div class=\"data-control2\">\r\n <mat-form-field appearance=\"outline\" [floatLabel]=\"getFloatLabel()\" *ngIf=\"!showCheckbox()\"\r\n class=\"full-width-form-field dense-form-field\">\r\n <mat-label>{{map.caption}}</mat-label>\r\n <div style=\"display:flex;\" *ngIf=\"showTextBox()\">\r\n <input #theId matInput [(ngModel)]=\"_getColumn().inputValue\" type=\"{{settings._getColDataType(map)}}\"\r\n (ngModelChange)=\"settings._colValueChanged(map,record)\" [errorStateMatcher]=\"ngErrorStateMatches\"\r\n [ngStyle]=\"getStyle()\" />\r\n <div *ngIf=\"showDescription()\" style=\"white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n padding-left:10px;width:100%;\" (click)=\"click()\">\r\n {{settings._getColDisplayValue(map,record)}} </div>\r\n </div>\r\n <div *ngIf=\"isSelect()\">\r\n <select matNativeControl [(ngModel)]=\"_getColumn().inputValue\"\r\n (ngModelChange)=\"settings._colValueChanged(map,record)\">\r\n <option *ngFor=\"let v of getDropDown()\" value=\"{{v.id}}\">{{v.caption}}</option>\r\n\r\n </select>\r\n </div>\r\n\r\n <button mat-icon-button matSuffix *ngIf=\"showClick()\" (click)=\"click()\">\r\n <mat-icon>{{getClickIcon()}} </mat-icon>\r\n </button>\r\n\r\n <mat-error *ngIf=\"getError()\" [id]=\"theId\">{{getError()}}</mat-error>\r\n </mat-form-field>\r\n <div *ngIf=\"showCheckbox()\">\r\n <mat-checkbox #theId1 [(ngModel)]=\"_getColumn().inputValue\"\r\n (ngModelChange)=\"settings._colValueChanged(map,record)\" class=\"fix-label\">{{map.caption}}</mat-checkbox>\r\n <mat-error *ngIf=\"getError()\" [id]=\"theId1\">{{getError()}}</mat-error>\r\n </div>\r\n\r\n</div>","styles":[""]}]}],"members":{"map":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"column":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"record":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"notReadonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"showDescription":[{"__symbolic":"method"}],"getDropDown":[{"__symbolic":"method"}],"showClick":[{"__symbolic":"method"}],"click":[{"__symbolic":"method"}],"getClickIcon":[{"__symbolic":"method"}],"dataControlStyle":[{"__symbolic":"method"}],"_getColumn":[{"__symbolic":"method"}],"_getEditable":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"isSelect":[{"__symbolic":"method"}],"showTextBox":[{"__symbolic":"method"}],"showCheckbox":[{"__symbolic":"method"}],"getError":[{"__symbolic":"method"}],"getStyle":[{"__symbolic":"method"}],"getFloatLabel":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"data-area","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":12,"character":17},"member":"None"},"template":"\r\n<div class=\"column-container\">\r\n <div *ngFor=\"let col of theColumns()\">\r\n <ng-container *ngFor=\"let line of col\">\r\n <div class=\"one-line\">\r\n <data-control [settings]=\"settings.columns\" [map]=\"map\" [record]=\"settings.columns.currentRow()\"\r\n *ngFor=\"let map of line\">\r\n </data-control>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>","styles":[".one-line{display:flex;justify-content:space-between}.one-line>*{margin-left:.2em;margin-right:.2em;flex-basis:1px;flex-grow:1}@media only screen and (min-width:768px){.column-container{display:flex;width:100%}.column-container>div{width:100%}}"]}]}],"members":{"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"ngOnChanges":[{"__symbolic":"method"}],"theColumns":[{"__symbolic":"method"}],"columns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"Data-Filter","template":"<div *ngIf=\"this.showFilterButton\">\r\n <ul>\r\n <li *ngFor=\"let map of settings.columns.filterHelper.filterColumns\" (click)=\"this.showEditFilter(map)\">\r\n {{map.caption}}: {{this.getCurrentFilterValue(map)}}\r\n </li>\r\n <li (click)=\"this.showAddAnotherFilterDialog()\" *ngIf=\"!showAddFilter&&!editFilterVisible\">...</li>\r\n </ul>\r\n <div *ngIf=\"this.editFilterVisible\">\r\n {{this.filterColumnToAdd.caption}}:\r\n <data-control *ngIf=\"this.filterColumnToAdd\" [settings]=\"settings.columns\" [map]=\"this.filterColumnToAdd\"\r\n [record]=\"settings.columns.filterHelper.filterRow\" [notReadonly]=\"true\"></data-control>\r\n <button mat-icon-button (click)=\"this.confirmEditFilter()\">\r\n <mat-icon>check</mat-icon>\r\n </button>\r\n <button mat-icon-button (click)=\"this.clearEditFilter()\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n </div>\r\n <div *ngIf=\"this.showAddFilter\">\r\n <select [(ngModel)]=\"this.filterColumnToAdd\" class=\"form-control selectColumnCombo\"\r\n (change)=\"settings.columns.colListChanged()\">\r\n <option *ngFor=\"let o of settings.origList\" [ngValue]=\"o\">{{o.caption}} </option>\r\n </select>\r\n <data-control *ngIf=\"this.filterColumnToAdd\" [settings]=\"settings.columns\" [map]=\"this.filterColumnToAdd\"\r\n [record]=\"settings.columns.filterHelper.filterRow\" [notReadonly]=\"true\"></data-control>\r\n <button mat-icon-button (click)=\"this.addFilter()\"><mat-icon>check</mat-icon></button>\r\n <button mat-icon-button (click)=\"this.cancelAddNewFilter()\"><mat-icon>clear</mat-icon></button>\r\n </div>\r\n</div>"}]}],"members":{"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":5}}]}],"getCurrentFilterValue":[{"__symbolic":"method"}],"cancelAddFilter":[{"__symbolic":"method"}],"showEditFilter":[{"__symbolic":"method"}],"userFilterButton":[{"__symbolic":"method"}],"showAddAnotherFilterDialog":[{"__symbolic":"method"}],"confirmEditFilter":[{"__symbolic":"method"}],"clearEditFilter":[{"__symbolic":"method"}],"addFilter":[{"__symbolic":"method"}],"cancelAddNewFilter":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"data-grid","template":"<div>\r\n <div>\r\n <div class=\"dataGrid\" #dataGridDiv *ngIf=\"settings&&settings.columns\" [style.height]=\"_getHeight()\">\r\n <div class=\"inner-wrapper\">\r\n <div class=\"dataGridHeaderArea\">\r\n <div class=\"dataGridRow\">\r\n <div class=\"dataGridHeaderCell headerWithFilter\" *ngFor=\"let map of settings.columns.getGridColumns()\"\r\n [style.flex]=\"getColFlex(map)\" [style.width]=\"getColWidth(map)\" draggable=\"true\"\r\n (dragstart)=\"dragStart(map)\" (dragover)=\"dragOver(map,$event)\" (drop)=\"onDrop(map)\">\r\n\r\n <span (click)=\"settings.sort(map.column)\">{{map.caption}}</span>\r\n\r\n\r\n <span class=\"filterButton\" [class.filteredFilterButton]=\"isFiltered(map.column)\"\r\n (click)=\"settings.columns.showFilterDialog(map)\">\r\n <mat-icon>details</mat-icon>\r\n </span>\r\n <div class=\"filterDialog col-sm-4\" *ngIf=\"settings.columns._shouldShowFilterDialog(map)\">\r\n <div class=\"form-group\">\r\n <data-control [settings]=\"settings.columns\" [map]=\"map\"\r\n [record]=\"settings.columns.filterHelper.filterRow\" [notReadonly]=\"true\"></data-control>\r\n </div>\r\n <button mat-icon-button (click)=\"settings.columns.filterRows(map)\">\r\n <mat-icon>check</mat-icon>\r\n </button>\r\n <button mat-icon-button (click)=\"settings.columns.clearFilter(map)\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n\r\n </div>\r\n <mat-icon *ngIf=\"settings.sortedAscending(map.column)\">arrow_downward</mat-icon>\r\n <mat-icon class=\"glyphicon glyphicon-chevron-down pull-right\"\r\n *ngIf=\"settings.sortedDescending(map.column)\">arrow_upward</mat-icon>\r\n </div>\r\n <div class=\"dataGridButtonHeaderCell\" *ngIf=\"rowButtons&& rowButtons.length>0&&displayButtons\"\r\n [class.col-xs-1]=\"rowButtons&&rowButtons.length<3\"></div>\r\n </div>\r\n </div>\r\n <div class=\"dataGridBodyArea\">\r\n <div class=\"dataGridRow\" *ngFor=\"let record of records\" [className]=\"_getRowClass(record)\"\r\n (click)=\"rowClicked(record)\">\r\n\r\n <div class=\"dataGridDataCell\" *ngFor=\"let map of settings.columns.getGridColumns()\"\r\n [className]=\"_getRowColumnClass(map,record)\" [style.flex]=\"getColFlex(map)\"\r\n [style.width]=\"getColWidth(map)\">\r\n <data-control3 [settings]=\"settings.columns\" [map]=\"map\" [record]=\"record\" [rightToLeft]=\"rightToLeft\"></data-control3>\r\n </div>\r\n <div class=\"dataGridButtonCell\" *ngIf=\"rowButtons.length>0&&displayButtons\" style=\"white-space:nowrap\">\r\n <ng-container *ngFor=\"let b of rowButtons\">\r\n <button mat-icon-button *ngIf=\"b.visible(record)&&b.icon\" (click)=\"b.click(record)\" class=\"row-button\">\r\n <mat-icon *ngIf=\"b.icon\">{{b.icon}} </mat-icon> {{b.name}}\r\n </button>\r\n <button mat-raised-button *ngIf=\"b.visible(record)&&!b.icon\" (click)=\"b.click(record)\" class=\"row-button\">\r\n {{b.name}}\r\n </button>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"dataGridFooterArea\" *ngIf=\"records\">\r\n <div class=\"dataGridFooterButtonGroup\">\r\n <button mat-icon-button (click)=\"settings.userChooseColumns()\">\r\n <mat-icon>settings</mat-icon>\r\n </button>\r\n <button mat-icon-button (click)=\"dataFilter.userFilterButton()\">\r\n <mat-icon>details</mat-icon>\r\n </button>\r\n {{rightToLeft?'שורות בדף': 'lines per page'}}\r\n <select class=\"form-control\" style=\"width:80px;display:inline-block\" [(ngModel)]=\"settings.rowsPerPage\"\r\n (change)=\"settings.getRecords()\">\r\n <option *ngFor=\"let r of settings.rowsPerPageOptions\" value=\"{{r}}\">{{r}}</option>\r\n </select></div>\r\n <div class=\"dataGridFooterButtonGroup\">\r\n <button mat-icon-button (click)=\"settings.firstPage()\">\r\n <mat-icon>{{rightToLeft?'last_page':'first_page'}} </mat-icon>\r\n </button>\r\n <button mat-icon-button [disabled]=\"settings.page==1\" (click)=\"settings.previousPage()\">\r\n <mat-icon>{{rightToLeft?'chevron_right':'chevron_left'}}</mat-icon>\r\n </button>\r\n {{rightToLeft?'עמוד':'Page'}} {{settings.page}} {{rightToLeft?' מתוך ':' of '}} {{getTotalRows()}}\r\n <button mat-icon-button [disabled]=\"!(records.items&& records.items.length>0)\" (click)=\"settings.nextPage()\">\r\n <mat-icon>{{!rightToLeft?'chevron_right':'chevron_left'}}</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"settings.allowUpdate &&settings.allowInsert\" (click)=\"settings.addNewRow()\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n </div>\r\n \r\n\r\n\r\n <Data-Filter [settings]=\"settings\" #dataFilter></Data-Filter>\r\n <div *ngIf=\"settings.showSelectColumn\" class=\"selectColumnsArea\">\r\n Select Columns\r\n <ol>\r\n <li *ngFor=\"let c of settings.currList; let i=index\">\r\n <select [(ngModel)]=\"settings.currList[i]\" class=\"form-control selectColumnCombo\"\r\n (change)=\"settings.columns.colListChanged()\">\r\n <option *ngFor=\"let o of settings.origList\" [ngValue]=\"o\">{{o.caption}}</option>\r\n </select>\r\n <input [(ngModel)]=\"c.width\" style=\"width:50px;display:inline;\" >\r\n <button mat-icon-button *ngIf=\"settings.currList.length>1\"\r\n (click)=\"settings.deleteCol(c)\"><mat-icon>cancel</mat-icon></button>\r\n <button mat-icon-button (click)=\"settings.addCol(c)\"><mat-icon>add</mat-icon></button>\r\n <button mat-icon-button *ngIf=\"i<settings.currList.length-1\"\r\n (click)=\"settings.columns.moveCol(c,1)\"><mat-icon>keyboard_arrow_down</mat-icon></button>\r\n <button mat-icon-button *ngIf=\"i>0\"\r\n (click)=\"settings.columns.moveCol(c,-1)\"><mat-icon>keyboard_arrow_up</mat-icon></button>\r\n </li>\r\n </ol>\r\n <button (click)=\"settings.resetColumns()\" class=\"btn glyphicon glyphicon-repeat\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <data-area *ngIf=\"!settings.hideDataArea\" [settings]=\"settings\" [columns]=\"2\"></data-area>","styles":[".row-button{height:auto;line-height:normal}.inner-wrapper{display:inline-block}.dataGrid{overflow:auto;border:1px solid #e0e0e0}.dataGridRow{display:flex}.dataGridHeaderArea{position:-webkit-sticky;position:sticky;top:0;clear:both;background-color:#f5f5f5;z-index:3}.dataGridFooterButtonGroup{display:inline-block}.dataGridFooterArea{width:100%;bottom:0;left:0;background-color:#f5f5f5;border:1px solid #e0e0e0}.dataGridDataCell,.dataGridHeaderCell{padding:4px}.dataGridHeaderCell{height:36px}.dataGridDataCell{border-top:1px solid #e0e0e0}.filterDialog{background-color:#fff;position:absolute;padding:10px;z-index:800;border-radius:5px;width:200px;border:2px solid gray}.filterDialog .form-group{margin-right:0;margin-left:0}.designModeButton span{visibility:hidden}.designModeButton:hover span{visibility:visible}.selectColumnCombo{display:inline-block;width:auto}.selectColumnsArea{display:block}.headerWithFilter .filterButton{visibility:hidden}.headerWithFilter .filteredFilterButton,.headerWithFilter:hover .filterButton{visibility:visible}table input{min-width:75px}table select{min-width:100px}"]}]}],"members":{"ngAfterViewInit":[{"__symbolic":"method"}],"getColFlex":[{"__symbolic":"method"}],"getColWidth":[{"__symbolic":"method"}],"test":[{"__symbolic":"method"}],"dataGridDiv":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":40,"character":3},"arguments":["dataGridDiv"]}]}],"getTotalRows":[{"__symbolic":"method"}],"dragStart":[{"__symbolic":"method"}],"dragOver":[{"__symbolic":"method"}],"onDrop":[{"__symbolic":"method"}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"_getHeight":[{"__symbolic":"method"}],"displayButtons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"displayVCR":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"records":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":3}}]}],"isFiltered":[{"__symbolic":"method"}],"getButtonCssClass":[{"__symbolic":"method"}],"addButton":[{"__symbolic":"method"}],"rowClicked":[{"__symbolic":"method"}],"nextPage":[{"__symbolic":"method"}],"previousPage":[{"__symbolic":"method"}],"catchErrors":[{"__symbolic":"method"}],"showError":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"_getRowClass":[{"__symbolic":"method"}],"_getRowColumnClass":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-wait","template":"<mat-progress-spinner [mode]=\"'indeterminate'\" >\r\n</mat-progress-spinner>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"data-control3","template":"<div class=\"data-control3\" #myDiv>\r\n <div style=\"display:flex;width:100%;\" *ngIf=\"showTextBox()\">\r\n <input #theId matInput [(ngModel)]=\"_getColumn().inputValue\" type=\"{{settings._getColDataType(map)}}\"\r\n (ngModelChange)=\"settings._colValueChanged(map,record)\"\r\n [errorStateMatcher]=\"ngErrorStateMatches\" [ngStyle]=\"getStyle()\" />\r\n <div *ngIf=\"showDescription()\" style=\"white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n padding-left:10px; width:100%;\" (click)=\"click()\">\r\n {{settings._getColDisplayValue(map,record)}} </div>\r\n </div>\r\n <div *ngIf=\"showReadonlyText()\" style=\"\r\n overflow: hidden;\r\n padding-left:10px; width:100%;\" >\r\n {{settings._getColDisplayValue(map,record)}} </div>\r\n <div *ngIf=\"isSelect()\" class=\"my-select\" [class.rtl-select]=\"rightToLeft\">\r\n <select matNativeControl [(ngModel)]=\"_getColumn().inputValue\"\r\n (ngModelChange)=\"settings._colValueChanged(map,record)\">\r\n <option *ngFor=\"let v of getDropDown()\" value=\"{{v.id}}\">{{v.caption}}</option>\r\n\r\n </select>\r\n </div>\r\n\r\n <button mat-icon-button *ngIf=\"showClick()\" (click)=\"click()\" class=\"row-button\">\r\n <mat-icon style=\"height:19px;\">{{getClickIcon()}} </mat-icon>\r\n </button>\r\n\r\n\r\n <div *ngIf=\"showCheckbox()\">\r\n <mat-checkbox #theId1 [(ngModel)]=\"_getColumn().inputValue\"\r\n (ngModelChange)=\"settings._colValueChanged(map,record)\" class=\"fix-label\"></mat-checkbox>\r\n <mat-error *ngIf=\"getError()\" [id]=\"theId1\">{{getError()}}</mat-error>\r\n </div>\r\n\r\n</div>\r\n<mat-error *ngIf=\"getError()\" [id]=\"theId\" style=\"font-size: 75%;\">{{getError()}}</mat-error>","styles":[".my-select::after{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;position:absolute;top:50%;right:0;pointer-events:none;color:rgba(0,0,0,.54);margin-top:-5px}.rtl-select::after{right:auto;left:0}.my-select{position:relative;width:100%}.data-control3{display:flex;width:100%}.row-button{height:auto;line-height:normal}input{border:none;outline:0;padding:0;margin:0;font-size:inherit;font-family:inherit}"]}]}],"members":{"map":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"column":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"rightToLeft":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"record":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"notReadonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"showDescription":[{"__symbolic":"method"}],"showClick":[{"__symbolic":"method"}],"getClickIcon":[{"__symbolic":"method"}],"dataControlStyle":[{"__symbolic":"method"}],"_getColumn":[{"__symbolic":"method"}],"click":[{"__symbolic":"method"}],"_getEditable":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"getDropDown":[{"__symbolic":"method"}],"isSelect":[{"__symbolic":"method"}],"showTextBox":[{"__symbolic":"method"}],"showReadonlyText":[{"__symbolic":"method"}],"showCheckbox":[{"__symbolic":"method"}],"getError":[{"__symbolic":"method"}],"getStyle":[{"__symbolic":"method"}],"getFloatLabel":[{"__symbolic":"method"}]}}},"origins":{"RemultModule":"./src/angular/remult-core.module","ɵa":"./src/angular/wait/busy-service","BusyService":"./src/angular/wait/busy-service","RouteHelperService":"./src/angular/navigate-to-component-route-service","SignedInGuard":"./src/angular/navigate-to-component-route-service","NotSignedInGuard":"./src/angular/navigate-to-component-route-service","DataProvider":"./src/data-interfaces","EntityDataProvider":"./src/data-interfaces","EntityDataProviderFindOptions":"./src/data-interfaces","EntityProvider":"./src/data-interfaces","EntityWhere":"./src/data-interfaces","EntityOrderBy":"./src/data-interfaces","entityOrderByToSort":"./src/data-interfaces","FindOptions":"./src/data-interfaces","__RowsOfDataForTesting":"./src/data-interfaces","SqlImplementation":"./src/sql-command","SqlCommand":"./src/sql-command","SqlResult":"./src/sql-command","ColumnStorage":"./src/column-interfaces","ColumnSettings":"./src/column-interfaces","ColumnOptions":"./src/column-interfaces","ValueOrExpression":"./src/column-interfaces","valueOrExpressionToValue":"./src/column-interfaces","DataControlInfo":"./src/column-interfaces","DataControlSettings":"./src/column-interfaces","displayOptions":"./src/column-interfaces","clickable":"./src/column-interfaces","ValueListItem":"./src/column-interfaces","RestDataProvider":"./src/data-providers/rest-data-provider","RestDataProviderHttpProvider":"./src/data-providers/rest-data-provider","RestDataProviderHttpProviderUsingFetch":"./src/data-providers/rest-data-provider","InMemoryDataProvider":"./src/data-providers/in-memory-database","ArrayEntityDataProvider":"./src/data-providers/array-entity-data-provider","WebSqlDataProvider":"./src/data-providers/web-sql-data-provider","SqlDatabase":"./src/data-providers/sql-database","JsonEntityStorage":"./src/data-providers/json-data-provider","JsonDataProvider":"./src/data-providers/json-data-provider","DataApi":"./src/data-api","DataApiSettings":"./src/data-api","DataApiResponse":"./src/data-api","DataApiError":"./src/data-api","DataApiRequest":"./src/data-api","DataApiServer":"./src/data-api","DataList":"./src/dataList","Lookup":"./src/lookup","lookupRowInfo":"./src/lookup","Action":"./src/server-action","myServerAction":"./src/server-action","ServerFunctionOptions":"./src/server-action","actionInfo":"./src/server-action","ServerFunction":"./src/server-action","serverActionField":"./src/server-action","Context":"./src/context","DataProviderFactoryBuilder":"./src/context","ServerContext":"./src/context","SpecificEntityHelper":"./src/context","EntityType":"./src/context","allEntities":"./src/context","EntityClass":"./src/context","UserInfo":"./src/context","Role":"./src/context","Allowed":"./src/context","AngularComponent":"./src/context","DialogConfig":"./src/context","RoleChecker":"./src/context","JwtSessionManager":"./src/jwt-session-manager","IdEntity":"./src/id-entity","IdColumn":"./src/id-entity","DecorateDataColumnSettings":"./src/id-entity","checkForDuplicateValue":"./src/id-entity","GridSettings":"./src/grid-settings","IDataSettings":"./src/grid-settings","RowButton":"./src/grid-settings","IDataAreaSettings":"./src/data-area-settings","DataAreaSettings":"./src/data-area-settings","DataArealColumnSetting":"./src/data-area-settings","dataAreaSettings":"./src/data-area-settings","Sort":"./src/sort","SortSegment":"./src/sort","ColumnCollection":"./src/column-collection","Entity":"./src/entity","EntityOptions":"./src/entity","EntityDefs":"./src/entity","EntityColumns":"./src/entity","Column":"./src/column","ColumnDefs":"./src/column","BoolStorage":"./src/columns/storage/bool-storage","CharDateStorage":"./src/columns/storage/char-date-storage","DateTimeDateStorage":"./src/columns/storage/datetime-date-storage","DateTimeStorage":"./src/columns/storage/datetime-storage","DefaultStorage":"./src/columns/storage/default-storage","ValueListColumn":"./src/columns/value-list-column","CompoundIdColumn":"./src/columns/compound-id-column","DateColumn":"./src/columns/date-column","DateTimeColumn":"./src/columns/datetime-column","NumberColumn":"./src/columns/number-column","NumberColumnSettings":"./src/columns/number-column","NumberColumnOptions":"./src/columns/number-column","BoolColumn":"./src/columns/number-column","StringColumn":"./src/columns/string-column","FilterBase":"./src/filter/filter-interfaces","FilterConsumer":"./src/filter/filter-interfaces","Filter":"./src/filter/filter","AndFilter":"./src/filter/and-filter","FilterConsumerBridgeToSqlRequest":"./src/filter/filter-consumer-bridge-to-sql-request","FilterConsumnerBridgeToUrlBuilder":"./src/filter/filter-consumer-bridge-to-url-builder","FilterHelper":"./src/filter/filter-helper","UrlBuilder":"./src/url-builder","ɵb":"./src/angular/data-control/data-control2.component","ɵc":"./src/angular/data-area/dataArea2","ɵd":"./src/angular/data-filter-info/data-filter-info.component","ɵe":"./src/angular/date-grid-2/data-grid2.component","ɵf":"./src/angular/wait/wait.component","ɵg":"./src/angular/data-control/data-control3.component"},"importAs":"@remult/core"} | ||
{"__symbolic":"module","version":4,"metadata":{"RemultModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":26,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵg"}],"imports":[{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":28,"character":12},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":28,"character":25},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":28,"character":39},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":28,"character":57},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":28,"character":83},{"__symbolic":"reference","module":"@angular/platform-browser/animations","name":"BrowserAnimationsModule","line":28,"character":100},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":29,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatButtonModule","line":30,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":31,"character":4},{"__symbolic":"reference","module":"@angular/material","name":"MatIconModule","line":31,"character":20},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":31,"character":35},{"__symbolic":"reference","module":"@angular/material","name":"MatCheckboxModule","line":31,"character":56}],"providers":[{"__symbolic":"reference","name":"Context"},{"__symbolic":"reference","name":"JwtSessionManager"},{"__symbolic":"reference","name":"NotSignedInGuard"},{"__symbolic":"reference","name":"SignedInGuard"},{"__symbolic":"reference","name":"RouteHelperService"},{"__symbolic":"reference","name":"BusyService"},{"provide":{"__symbolic":"reference","module":"@angular/common/http","name":"HTTP_INTERCEPTORS","line":35,"character":15},"useClass":{"__symbolic":"reference","name":"ɵa"},"multi":true}],"exports":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵc"}],"entryComponents":[{"__symbolic":"reference","name":"ɵf"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":86,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BusyService"}]}],"intercept":[{"__symbolic":"method"}]}},"BusyService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"donotWait":[{"__symbolic":"method"}],"donotWaitNonAsync":[{"__symbolic":"method"}],"log":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material","name":"MatDialog","line":38,"character":32}]}],"doWhileShowingBusy":[{"__symbolic":"method"}],"showBusy":[{"__symbolic":"method"}]},"statics":{"singleInstance":{"__symbolic":"error","message":"Variable not initialized","line":31,"character":11}}},"RouteHelperService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":5,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":5,"character":58}]}],"navigateToComponent":[{"__symbolic":"method"}],"canNavigateToRoute":[{"__symbolic":"method"}]}},"SignedInGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":39,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Context"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":5,"character":32},{"__symbolic":"reference","name":"RouteHelperService"}]}],"isAllowed":[{"__symbolic":"method"}],"canActivate":[{"__symbolic":"method"}]},"statics":{"componentToNavigateIfNotAllowed":{"__symbolic":"error","message":"Variable not initialized","line":47,"character":11}}},"NotSignedInGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":66,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Context"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":5,"character":32}]}],"canActivate":[{"__symbolic":"method"}]}},"DataProvider":{"__symbolic":"interface"},"EntityDataProvider":{"__symbolic":"interface"},"EntityDataProviderFindOptions":{"__symbolic":"interface"},"EntityProvider":{"__symbolic":"interface"},"EntityWhere":{"__symbolic":"interface"},"EntityOrderBy":{"__symbolic":"interface"},"entityOrderByToSort":{"__symbolic":"function"},"FindOptions":{"__symbolic":"interface"},"__RowsOfDataForTesting":{"__symbolic":"interface"},"SqlImplementation":{"__symbolic":"interface"},"SqlCommand":{"__symbolic":"interface"},"SqlResult":{"__symbolic":"interface"},"ColumnStorage":{"__symbolic":"interface"},"ColumnSettings":{"__symbolic":"interface"},"ColumnOptions":{"__symbolic":"interface"},"ValueOrExpression":{"__symbolic":"interface"},"valueOrExpressionToValue":{"__symbolic":"function"},"DataControlInfo":{"__symbolic":"interface"},"DataControlSettings":{"__symbolic":"interface"},"displayOptions":{"__symbolic":"interface"},"clickable":{"__symbolic":"interface"},"ValueListItem":{"__symbolic":"interface"},"RestDataProvider":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"any"}]}],"getEntityDataProvider":[{"__symbolic":"method"}],"transaction":[{"__symbolic":"method"}]}},"RestDataProviderHttpProvider":{"__symbolic":"interface"},"RestDataProviderHttpProviderUsingFetch":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":90,"character":41,"module":"./src/data-providers/rest-data-provider"}]}],"get":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}]}},"InMemoryDataProvider":{"__symbolic":"class","members":{"transaction":[{"__symbolic":"method"}],"getEntityDataProvider":[{"__symbolic":"method"}],"toString":[{"__symbolic":"method"}]}},"ArrayEntityDataProvider":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Entity"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"count":[{"__symbolic":"method"}],"find":[{"__symbolic":"method"}],"map":[{"__symbolic":"method"}],"idMatches":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}]}},"WebSqlDataProvider":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"entityIsUsedForTheFirstTime":[{"__symbolic":"method"}],"createCommand":[{"__symbolic":"method"}],"transaction":[{"__symbolic":"method"}],"addColumnSqlSyntax":[{"__symbolic":"method"}],"toString":[{"__symbolic":"method"}]}},"SqlDatabase":{"__symbolic":"class","members":{"createCommand":[{"__symbolic":"method"}],"execute":[{"__symbolic":"method"}],"getEntityDataProvider":[{"__symbolic":"method"}],"transaction":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"SqlImplementation"}]}]},"statics":{"LogToConsole":false}},"JsonEntityStorage":{"__symbolic":"interface"},"JsonDataProvider":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}],"getEntityDataProvider":[{"__symbolic":"method"}],"transaction":[{"__symbolic":"method"}]}},"DataApi":{"__symbolic":"class","arity":1,"members":{"getRoute":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"SpecificEntityHelper"}]}],"get":[{"__symbolic":"method"}],"count":[{"__symbolic":"method"}],"getArray":[{"__symbolic":"method"}],"buildWhere":[{"__symbolic":"method"}],"doOnId":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}]}},"DataApiSettings":{"__symbolic":"interface"},"DataApiResponse":{"__symbolic":"interface"},"DataApiError":{"__symbolic":"interface"},"DataApiRequest":{"__symbolic":"interface"},"DataApiServer":{"__symbolic":"interface"},"DataList":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"EntityProvider"}]}],"map":[{"__symbolic":"method"}],"count":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}]}},"Lookup":{"__symbolic":"class","arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":12,"character":32,"context":{"typeName":"entityType"},"module":"./src/lookup"},{"__symbolic":"reference","name":"EntityProvider"}]}],"get":[{"__symbolic":"method"}],"found":[{"__symbolic":"method"}],"getInternal":[{"__symbolic":"method"}],"_internalGetByOptions":[{"__symbolic":"method"}],"whenGet":[{"__symbolic":"method"}]}},"lookupRowInfo":{"__symbolic":"class","arity":1,"members":{}},"Action":{"__symbolic":"class","arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":21,"character":90,"module":"./src/server-action"}]}],"run":[{"__symbolic":"method"}],"execute":[{"__symbolic":"method"}],"__register":[{"__symbolic":"method"}]},"statics":{"provider":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"RestDataProviderHttpProviderUsingFetch"}}}},"myServerAction":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Action"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"error","message":"Expression form not supported","line":57,"character":116,"module":"./src/server-action"}]}],"execute":[{"__symbolic":"method"}]}},"ServerFunctionOptions":{"__symbolic":"interface"},"actionInfo":{"allActions":[],"runningOnServer":false},"ServerFunction":{"__symbolic":"function","parameters":["options"],"value":{"__symbolic":"error","message":"Lambda not supported","line":106,"character":11,"module":"./src/server-action"}},"serverActionField":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"Symbol"},"arguments":["serverActionField"]},"Context":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1}}],"members":{"clearAllCache":[{"__symbolic":"method"}],"isSignedIn":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":33,"character":23},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":33,"character":53}]}],"getCookie":[{"__symbolic":"method"}],"getHost":[{"__symbolic":"method"}],"getPathInUrl":[{"__symbolic":"method"}],"_setUser":[{"__symbolic":"method"}],"isAllowed":[{"__symbolic":"method"}],"for":[{"__symbolic":"method"}],"openDialog":[{"__symbolic":"method"}]},"statics":{"apiBaseUrl":"api"}},"DataProviderFactoryBuilder":{"__symbolic":"interface"},"ServerContext":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Context"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DataProvider"}]}],"getHost":[{"__symbolic":"method"}],"getPathInUrl":[{"__symbolic":"method"}],"getCookie":[{"__symbolic":"method"}],"setReq":[{"__symbolic":"method"}],"setDataProvider":[{"__symbolic":"method"}],"getOrigin":[{"__symbolic":"method"}]}},"SpecificEntityHelper":{"__symbolic":"class","arity":2,"members":{"_getApiSettings":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":190,"character":31,"module":"./src/context"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"reference","name":"any"}]}]},{"__symbolic":"reference","name":"Context"},{"__symbolic":"reference","name":"DataProvider"}]}],"lookup":[{"__symbolic":"method"}],"lookupAsync":[{"__symbolic":"method"}],"count":[{"__symbolic":"method"}],"foreach":[{"__symbolic":"method"}],"translateOptions":[{"__symbolic":"method"}],"find":[{"__symbolic":"method"}],"fromPojo":[{"__symbolic":"method"}],"toApiPojo":[{"__symbolic":"method"}],"_updateEntityBasedOnApi":[{"__symbolic":"method"}],"findFirst":[{"__symbolic":"method"}],"toPojoArray":[{"__symbolic":"method"}],"gridSettings":[{"__symbolic":"method"}],"getValueList":[{"__symbolic":"method"}]}},"EntityType":{"__symbolic":"interface"},"allEntities":[],"EntityClass":{"__symbolic":"function"},"UserInfo":{"__symbolic":"interface"},"Role":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}]},"statics":{"not":{"__symbolic":"function","parameters":["allowed"],"value":{"__symbolic":"error","message":"Lambda not supported","line":383,"character":15,"module":"./src/context"}}}},"Allowed":{"__symbolic":"interface"},"AngularComponent":{"__symbolic":"interface"},"DialogConfig":{"__symbolic":"function","parameters":["config"],"value":{"__symbolic":"error","message":"Lambda not supported","line":391,"character":11,"module":"./src/context"}},"RoleChecker":{"__symbolic":"interface"},"JwtSessionManager":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Context"}]}],"loadSessionFromCookie":[{"__symbolic":"method"}],"setToken":[{"__symbolic":"method"}],"_setToken":[{"__symbolic":"method"}],"signout":[{"__symbolic":"method"}]}},"IdEntity":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Entity"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"EntityOptions"}]}],"setEmptyIdForNewRow":[{"__symbolic":"method"}]}},"IdColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StringColumn"},"members":{"setToNewId":[{"__symbolic":"method"}]}},"DecorateDataColumnSettings":{"__symbolic":"function"},"checkForDuplicateValue":{"__symbolic":"function"},"GridSettings":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"EntityProvider"},{"__symbolic":"reference","name":"Context"},{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":16,"character":113,"context":{"typeName":"rowType"},"module":"./src/grid-settings"}]}]}],"initOrigList":[{"__symbolic":"method"}],"userChooseColumns":[{"__symbolic":"method"}],"resetColumns":[{"__symbolic":"method"}],"addCol":[{"__symbolic":"method"}],"deleteCol":[{"__symbolic":"method"}],"adjustColumns":[{"__symbolic":"method"}],"setGetOptions":[{"__symbolic":"method"}],"addNewRow":[{"__symbolic":"method"}],"addArea":[{"__symbolic":"method"}],"setCurrentRow":[{"__symbolic":"method"}],"nextRow":[{"__symbolic":"method"}],"previousRowAllowed":[{"__symbolic":"method"}],"previousRow":[{"__symbolic":"method"}],"deleteCurentRow":[{"__symbolic":"method"}],"currentRowAsRestListItemRow":[{"__symbolic":"method"}],"cancelCurrentRowChanges":[{"__symbolic":"method"}],"deleteCurrentRowAllowed":[{"__symbolic":"method"}],"currentRowChanged":[{"__symbolic":"method"}],"saveCurrentRow":[{"__symbolic":"method"}],"_doSavingRow":[{"__symbolic":"method"}],"nextPage":[{"__symbolic":"method"}],"previousPage":[{"__symbolic":"method"}],"firstPage":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"sort":[{"__symbolic":"method"}],"sortedAscending":[{"__symbolic":"method"}],"sortedDescending":[{"__symbolic":"method"}],"getRecords":[{"__symbolic":"method"}]}},"IDataSettings":{"__symbolic":"interface"},"RowButton":{"__symbolic":"interface"},"IDataAreaSettings":{"__symbolic":"interface"},"DataAreaSettings":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":15,"character":50,"context":{"typeName":"rowType"},"module":"./src/data-area-settings"}]},{"__symbolic":"reference","name":"ColumnCollection"},{"__symbolic":"error","message":"Could not resolve type","line":15,"character":113,"context":{"typeName":"rowType"},"module":"./src/data-area-settings"}]}]}},"DataArealColumnSetting":{"__symbolic":"interface"},"dataAreaSettings":{"__symbolic":"interface"},"Sort":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"SortSegment":{"__symbolic":"interface"},"ColumnCollection":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":11,"character":33,"module":"./src/column-collection"},{"__symbolic":"error","message":"Expression form not supported","line":11,"character":73,"module":"./src/column-collection"},{"__symbolic":"reference","name":"FilterHelper"},{"__symbolic":"error","message":"Expression form not supported","line":11,"character":150,"module":"./src/column-collection"},{"__symbolic":"reference","name":"Context"}]}],"__showArea":[{"__symbolic":"method"}],"__getColumn":[{"__symbolic":"method"}],"__dataControlStyle":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"buildDropDown":[{"__symbolic":"method"}],"colListChanged":[{"__symbolic":"method"}],"onColListChange":[{"__symbolic":"method"}],"moveCol":[{"__symbolic":"method"}],"filterRows":[{"__symbolic":"method"}],"clearFilter":[{"__symbolic":"method"}],"_shouldShowFilterDialog":[{"__symbolic":"method"}],"showFilterDialog":[{"__symbolic":"method"}],"deleteCol":[{"__symbolic":"method"}],"addCol":[{"__symbolic":"method"}],"_getEditable":[{"__symbolic":"method"}],"_click":[{"__symbolic":"method"}],"_getColDisplayValue":[{"__symbolic":"method"}],"_getColDataType":[{"__symbolic":"method"}],"_getColumnClass":[{"__symbolic":"method"}],"_getError":[{"__symbolic":"method"}],"autoGenerateColumnsBasedOnData":[{"__symbolic":"method"}],"__columnSettingsTypeScript":[{"__symbolic":"method"}],"__columnTypeScriptDescription":[{"__symbolic":"method"}],"__changeWidth":[{"__symbolic":"method"}],"_colValueChanged":[{"__symbolic":"method"}],"_initColumnsArrays":[{"__symbolic":"method"}],"getGridColumns":[{"__symbolic":"method"}],"getNonGridColumns":[{"__symbolic":"method"}]}},"Entity":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}],"_getEntityApiSettings":[{"__symbolic":"method"}],"__initColumns":[{"__symbolic":"method"}],"isValid":[{"__symbolic":"method"}],"isNew":[{"__symbolic":"method"}],"__getValidationError":[{"__symbolic":"method"}],"__assertValidity":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"catchSaveErrors":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"undoChanges":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"__clearErrors":[{"__symbolic":"method"}],"wasChanged":[{"__symbolic":"method"}],"__applyColumn":[{"__symbolic":"method"}]}},"EntityOptions":{"__symbolic":"interface"},"EntityDefs":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}]}},"EntityColumns":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"Column"}]},{"__symbolic":"reference","name":"Column"}]}],"toArray":[{"__symbolic":"method"}],"find":[{"__symbolic":"method"}]}},"Column":{"__symbolic":"class","arity":1,"members":{"__setDefaultForNewRow":[{"__symbolic":"method"}],"__calcServerExpression":[{"__symbolic":"method"}],"__clearErrors":[{"__symbolic":"method"}],"__performValidation":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ColumnOptions"},{"__symbolic":"reference","name":"ColumnOptions"}]}],"__decorateDataSettings":[{"__symbolic":"method"}],"__getStorage":[{"__symbolic":"method"}],"__defaultStorage":[{"__symbolic":"method"}],"isEqualTo":[{"__symbolic":"method"}],"isDifferentFrom":[{"__symbolic":"method"}],"isGreaterOrEqualTo":[{"__symbolic":"method"}],"isGreaterThan":[{"__symbolic":"method"}],"isLessOrEqualTo":[{"__symbolic":"method"}],"isLessThan":[{"__symbolic":"method"}],"__getVal":[{"__symbolic":"method"}],"__processValue":[{"__symbolic":"method"}],"fromRawValue":[{"__symbolic":"method"}],"toRawValue":[{"__symbolic":"method"}],"__addToPojo":[{"__symbolic":"method"}],"__loadFromToPojo":[{"__symbolic":"method"}]}},"ColumnDefs":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ColumnSettings"}]}],"__isVirtual":[{"__symbolic":"method"}]}},"BoolStorage":{"__symbolic":"class","members":{"toDb":[{"__symbolic":"method"}],"fromDb":[{"__symbolic":"method"}]}},"CharDateStorage":{"__symbolic":"class","members":{"toDb":[{"__symbolic":"method"}],"fromDb":[{"__symbolic":"method"}]}},"DateTimeDateStorage":{"__symbolic":"class","members":{"toDb":[{"__symbolic":"method"}],"fromDb":[{"__symbolic":"method"}]}},"DateTimeStorage":{"__symbolic":"class","members":{"toDb":[{"__symbolic":"method"}],"fromDb":[{"__symbolic":"method"}]}},"DefaultStorage":{"__symbolic":"class","arity":1,"members":{"toDb":[{"__symbolic":"method"}],"fromDb":[{"__symbolic":"method"}]}},"ValueListColumn":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"Column"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ColumnOptions"},{"__symbolic":"reference","name":"ColumnOptions"}]}],"getOptions":[{"__symbolic":"method"}],"toRawValue":[{"__symbolic":"method"}],"fromRawValue":[{"__symbolic":"method"}],"byId":[{"__symbolic":"method"}]}},"CompoundIdColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Column"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Entity"},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"Column"}]}]}],"__isVirtual":[{"__symbolic":"method"}],"isEqualTo":[{"__symbolic":"method"}],"__addIdToPojo":[{"__symbolic":"method"}],"resultIdFilter":[{"__symbolic":"method"}]}},"DateColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Column"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ColumnOptions"}]}],"getDayOfWeek":[{"__symbolic":"method"}],"__defaultStorage":[{"__symbolic":"method"}],"toRawValue":[{"__symbolic":"method"}],"fromRawValue":[{"__symbolic":"method"}]}},"DateTimeColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Column"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ColumnOptions"}]}],"getDayOfWeek":[{"__symbolic":"method"}],"__defaultStorage":[{"__symbolic":"method"}],"fromRawValue":[{"__symbolic":"method"}],"toRawValue":[{"__symbolic":"method"}]}},"NumberColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Column"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":5,"character":34,"context":{"typeName":"NumberColumnOptions"},"module":"./src/columns/number-column"}]}],"__processValue":[{"__symbolic":"method"}]}},"NumberColumnSettings":{"__symbolic":"interface"},"NumberColumnOptions":{"__symbolic":"interface"},"BoolColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Column"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ColumnOptions"}]}],"__defaultStorage":[{"__symbolic":"method"}]}},"StringColumn":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Column"},"members":{"isContains":[{"__symbolic":"method"}],"isStartsWith":[{"__symbolic":"method"}]}},"FilterBase":{"__symbolic":"interface"},"FilterConsumer":{"__symbolic":"interface"},"Filter":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":5,"character":31,"module":"./src/filter/filter"}]}],"and":[{"__symbolic":"method"}],"__applyToConsumer":[{"__symbolic":"method"}]}},"AndFilter":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"FilterBase"},{"__symbolic":"reference","name":"FilterBase"}]}],"and":[{"__symbolic":"method"}],"__applyToConsumer":[{"__symbolic":"method"}]}},"FilterConsumerBridgeToSqlRequest":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"SqlCommand"}]}],"isEqualTo":[{"__symbolic":"method"}],"isDifferentFrom":[{"__symbolic":"method"}],"isGreaterOrEqualTo":[{"__symbolic":"method"}],"isGreaterThan":[{"__symbolic":"method"}],"isLessOrEqualTo":[{"__symbolic":"method"}],"isLessThan":[{"__symbolic":"method"}],"isContains":[{"__symbolic":"method"}],"isStartsWith":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}]}},"FilterConsumnerBridgeToUrlBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"UrlBuilder"}]}],"isEqualTo":[{"__symbolic":"method"}],"isDifferentFrom":[{"__symbolic":"method"}],"isGreaterOrEqualTo":[{"__symbolic":"method"}],"isGreaterThan":[{"__symbolic":"method"}],"isLessOrEqualTo":[{"__symbolic":"method"}],"isLessThan":[{"__symbolic":"method"}],"isContains":[{"__symbolic":"method"}],"isStartsWith":[{"__symbolic":"method"}]}},"FilterHelper":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":12,"character":36,"module":"./src/filter/filter-helper"}]}],"isFiltered":[{"__symbolic":"method"}],"filterColumn":[{"__symbolic":"method"}],"addToFindOptions":[{"__symbolic":"method"}]}},"UrlBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"add":[{"__symbolic":"method"}],"addObject":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"data-control","template":"<div class=\"data-control2\">\r\n <mat-form-field appearance=\"outline\" [floatLabel]=\"getFloatLabel()\" *ngIf=\"!showCheckbox()\"\r\n class=\"full-width-form-field dense-form-field\">\r\n <mat-label>{{map.caption}}</mat-label>\r\n <div style=\"display:flex;\" *ngIf=\"showTextBox()\">\r\n <input #theId matInput [(ngModel)]=\"_getColumn().inputValue\" type=\"{{settings._getColDataType(map)}}\"\r\n (ngModelChange)=\"settings._colValueChanged(map,record)\" [errorStateMatcher]=\"ngErrorStateMatches\"\r\n [ngStyle]=\"getStyle()\" />\r\n <div *ngIf=\"showDescription()\" style=\"white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n padding-left:10px;width:100%;\" (click)=\"click()\">\r\n {{settings._getColDisplayValue(map,record)}} </div>\r\n </div>\r\n <div *ngIf=\"isSelect()\">\r\n <select matNativeControl [(ngModel)]=\"_getColumn().inputValue\"\r\n (ngModelChange)=\"settings._colValueChanged(map,record)\">\r\n <option *ngFor=\"let v of getDropDown()\" value=\"{{v.id}}\">{{v.caption}}</option>\r\n\r\n </select>\r\n </div>\r\n\r\n <button mat-icon-button matSuffix *ngIf=\"showClick()\" (click)=\"click()\">\r\n <mat-icon>{{getClickIcon()}} </mat-icon>\r\n </button>\r\n\r\n <mat-error *ngIf=\"getError()\" [id]=\"theId\">{{getError()}}</mat-error>\r\n </mat-form-field>\r\n <div *ngIf=\"showCheckbox()\">\r\n <mat-checkbox #theId1 [(ngModel)]=\"_getColumn().inputValue\"\r\n (ngModelChange)=\"settings._colValueChanged(map,record)\" class=\"fix-label\">{{map.caption}}</mat-checkbox>\r\n <mat-error *ngIf=\"getError()\" [id]=\"theId1\">{{getError()}}</mat-error>\r\n </div>\r\n\r\n</div>","styles":[""]}]}],"members":{"map":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"column":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"record":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"notReadonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"showDescription":[{"__symbolic":"method"}],"getDropDown":[{"__symbolic":"method"}],"showClick":[{"__symbolic":"method"}],"click":[{"__symbolic":"method"}],"getClickIcon":[{"__symbolic":"method"}],"dataControlStyle":[{"__symbolic":"method"}],"_getColumn":[{"__symbolic":"method"}],"_getEditable":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"isSelect":[{"__symbolic":"method"}],"showTextBox":[{"__symbolic":"method"}],"showCheckbox":[{"__symbolic":"method"}],"getError":[{"__symbolic":"method"}],"getStyle":[{"__symbolic":"method"}],"getFloatLabel":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"data-area","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":12,"character":17},"member":"None"},"template":"\r\n<div class=\"column-container\">\r\n <div *ngFor=\"let col of theColumns()\">\r\n <ng-container *ngFor=\"let line of col\">\r\n <div class=\"one-line\">\r\n <data-control [settings]=\"settings.columns\" [map]=\"map\" [record]=\"settings.columns.currentRow()\"\r\n *ngFor=\"let map of line\">\r\n </data-control>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>","styles":[".one-line{display:flex;justify-content:space-between}.one-line>*{margin-left:.2em;margin-right:.2em;flex-basis:1px;flex-grow:1}@media only screen and (min-width:768px){.column-container{display:flex;width:100%}.column-container>div{width:100%}}"]}]}],"members":{"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"ngOnChanges":[{"__symbolic":"method"}],"theColumns":[{"__symbolic":"method"}],"columns":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"Data-Filter","template":"<div *ngIf=\"this.showFilterButton\">\r\n <ul>\r\n <li *ngFor=\"let map of settings.columns.filterHelper.filterColumns\" (click)=\"this.showEditFilter(map)\">\r\n {{map.caption}}: {{this.getCurrentFilterValue(map)}}\r\n </li>\r\n <li (click)=\"this.showAddAnotherFilterDialog()\" *ngIf=\"!showAddFilter&&!editFilterVisible\">...</li>\r\n </ul>\r\n <div *ngIf=\"this.editFilterVisible\">\r\n {{this.filterColumnToAdd.caption}}:\r\n <data-control *ngIf=\"this.filterColumnToAdd\" [settings]=\"settings.columns\" [map]=\"this.filterColumnToAdd\"\r\n [record]=\"settings.columns.filterHelper.filterRow\" [notReadonly]=\"true\"></data-control>\r\n <button mat-icon-button (click)=\"this.confirmEditFilter()\">\r\n <mat-icon>check</mat-icon>\r\n </button>\r\n <button mat-icon-button (click)=\"this.clearEditFilter()\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n </div>\r\n <div *ngIf=\"this.showAddFilter\">\r\n <select [(ngModel)]=\"this.filterColumnToAdd\" class=\"form-control selectColumnCombo\"\r\n (change)=\"settings.columns.colListChanged()\">\r\n <option *ngFor=\"let o of settings.origList\" [ngValue]=\"o\">{{o.caption}} </option>\r\n </select>\r\n <data-control *ngIf=\"this.filterColumnToAdd\" [settings]=\"settings.columns\" [map]=\"this.filterColumnToAdd\"\r\n [record]=\"settings.columns.filterHelper.filterRow\" [notReadonly]=\"true\"></data-control>\r\n <button mat-icon-button (click)=\"this.addFilter()\"><mat-icon>check</mat-icon></button>\r\n <button mat-icon-button (click)=\"this.cancelAddNewFilter()\"><mat-icon>clear</mat-icon></button>\r\n </div>\r\n</div>"}]}],"members":{"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":5}}]}],"getCurrentFilterValue":[{"__symbolic":"method"}],"cancelAddFilter":[{"__symbolic":"method"}],"showEditFilter":[{"__symbolic":"method"}],"userFilterButton":[{"__symbolic":"method"}],"showAddAnotherFilterDialog":[{"__symbolic":"method"}],"confirmEditFilter":[{"__symbolic":"method"}],"clearEditFilter":[{"__symbolic":"method"}],"addFilter":[{"__symbolic":"method"}],"cancelAddNewFilter":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"data-grid","template":"<div>\r\n <div>\r\n <div class=\"dataGrid\" #dataGridDiv *ngIf=\"settings&&settings.columns\" [style.height]=\"_getHeight()\">\r\n <div class=\"inner-wrapper\">\r\n <div class=\"dataGridHeaderArea\">\r\n <div class=\"dataGridRow\">\r\n <div class=\"dataGridHeaderCell headerWithFilter\" *ngFor=\"let map of settings.columns.getGridColumns()\"\r\n [style.flex]=\"getColFlex(map)\" [style.width]=\"getColWidth(map)\" draggable=\"true\"\r\n (dragstart)=\"dragStart(map)\" (dragover)=\"dragOver(map,$event)\" (drop)=\"onDrop(map)\">\r\n\r\n <span (click)=\"settings.sort(map.column)\">{{map.caption}}</span>\r\n\r\n\r\n <span class=\"filterButton\" [class.filteredFilterButton]=\"isFiltered(map.column)\"\r\n (click)=\"settings.columns.showFilterDialog(map)\">\r\n <mat-icon>details</mat-icon>\r\n </span>\r\n <div class=\"filterDialog col-sm-4\" *ngIf=\"settings.columns._shouldShowFilterDialog(map)\">\r\n <div class=\"form-group\">\r\n <data-control [settings]=\"settings.columns\" [map]=\"map\"\r\n [record]=\"settings.columns.filterHelper.filterRow\" [notReadonly]=\"true\"></data-control>\r\n </div>\r\n <button mat-icon-button (click)=\"settings.columns.filterRows(map)\">\r\n <mat-icon>check</mat-icon>\r\n </button>\r\n <button mat-icon-button (click)=\"settings.columns.clearFilter(map)\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n\r\n </div>\r\n <mat-icon *ngIf=\"settings.sortedAscending(map.column)\">arrow_downward</mat-icon>\r\n <mat-icon class=\"glyphicon glyphicon-chevron-down pull-right\"\r\n *ngIf=\"settings.sortedDescending(map.column)\">arrow_upward</mat-icon>\r\n </div>\r\n <div class=\"dataGridButtonHeaderCell\" *ngIf=\"rowButtons&& rowButtons.length>0&&displayButtons\"\r\n [class.col-xs-1]=\"rowButtons&&rowButtons.length<3\"></div>\r\n </div>\r\n </div>\r\n <div class=\"dataGridBodyArea\">\r\n <div class=\"dataGridRow\" *ngFor=\"let record of records\" [className]=\"_getRowClass(record)\"\r\n (click)=\"rowClicked(record)\">\r\n\r\n <div class=\"dataGridDataCell\" *ngFor=\"let map of settings.columns.getGridColumns()\"\r\n [className]=\"_getRowColumnClass(map,record)\" [style.flex]=\"getColFlex(map)\"\r\n [style.width]=\"getColWidth(map)\">\r\n <data-control3 [settings]=\"settings.columns\" [map]=\"map\" [record]=\"record\" [rightToLeft]=\"rightToLeft\"></data-control3>\r\n </div>\r\n <div class=\"dataGridButtonCell\" *ngIf=\"rowButtons.length>0&&displayButtons\" style=\"white-space:nowrap\">\r\n <ng-container *ngFor=\"let b of rowButtons\">\r\n <button mat-icon-button *ngIf=\"b.visible(record)&&b.icon\" (click)=\"b.click(record)\" class=\"row-button\">\r\n <mat-icon *ngIf=\"b.icon\">{{b.icon}} </mat-icon> {{b.name}}\r\n </button>\r\n <button mat-raised-button *ngIf=\"b.visible(record)&&!b.icon\" (click)=\"b.click(record)\" class=\"row-button\">\r\n {{b.name}}\r\n </button>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"dataGridFooterArea\" *ngIf=\"records\">\r\n <div class=\"dataGridFooterButtonGroup\">\r\n <button mat-icon-button (click)=\"settings.userChooseColumns()\">\r\n <mat-icon>settings</mat-icon>\r\n </button>\r\n <button mat-icon-button (click)=\"dataFilter.userFilterButton()\">\r\n <mat-icon>details</mat-icon>\r\n </button>\r\n {{rightToLeft?'שורות בדף': 'lines per page'}}\r\n <select class=\"form-control\" style=\"width:80px;display:inline-block\" [(ngModel)]=\"settings.rowsPerPage\"\r\n (change)=\"settings.getRecords()\">\r\n <option *ngFor=\"let r of settings.rowsPerPageOptions\" value=\"{{r}}\">{{r}}</option>\r\n </select></div>\r\n <div class=\"dataGridFooterButtonGroup\">\r\n <button mat-icon-button (click)=\"settings.firstPage()\">\r\n <mat-icon>{{rightToLeft?'last_page':'first_page'}} </mat-icon>\r\n </button>\r\n <button mat-icon-button [disabled]=\"settings.page==1\" (click)=\"settings.previousPage()\">\r\n <mat-icon>{{rightToLeft?'chevron_right':'chevron_left'}}</mat-icon>\r\n </button>\r\n {{rightToLeft?'עמוד':'Page'}} {{settings.page}} {{rightToLeft?' מתוך ':' of '}} {{getTotalRows()}}\r\n <button mat-icon-button [disabled]=\"!(records.items&& records.items.length>0)\" (click)=\"settings.nextPage()\">\r\n <mat-icon>{{!rightToLeft?'chevron_right':'chevron_left'}}</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"settings.allowUpdate &&settings.allowInsert\" (click)=\"settings.addNewRow()\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n </div>\r\n \r\n\r\n\r\n <Data-Filter [settings]=\"settings\" #dataFilter></Data-Filter>\r\n <div *ngIf=\"settings.showSelectColumn\" class=\"selectColumnsArea\">\r\n Select Columns\r\n <ol>\r\n <li *ngFor=\"let c of settings.currList; let i=index\">\r\n <select [(ngModel)]=\"settings.currList[i]\" class=\"form-control selectColumnCombo\"\r\n (change)=\"settings.columns.colListChanged()\">\r\n <option *ngFor=\"let o of settings.origList\" [ngValue]=\"o\">{{o.caption}}</option>\r\n </select>\r\n <input [(ngModel)]=\"c.width\" style=\"width:50px;display:inline;\" >\r\n <button mat-icon-button *ngIf=\"settings.currList.length>1\"\r\n (click)=\"settings.deleteCol(c)\"><mat-icon>cancel</mat-icon></button>\r\n <button mat-icon-button (click)=\"settings.addCol(c)\"><mat-icon>add</mat-icon></button>\r\n <button mat-icon-button *ngIf=\"i<settings.currList.length-1\"\r\n (click)=\"settings.columns.moveCol(c,1)\"><mat-icon>keyboard_arrow_down</mat-icon></button>\r\n <button mat-icon-button *ngIf=\"i>0\"\r\n (click)=\"settings.columns.moveCol(c,-1)\"><mat-icon>keyboard_arrow_up</mat-icon></button>\r\n </li>\r\n </ol>\r\n <button (click)=\"settings.resetColumns()\" class=\"btn glyphicon glyphicon-repeat\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <data-area *ngIf=\"!settings.hideDataArea\" [settings]=\"settings\" [columns]=\"2\"></data-area>","styles":[".row-button{height:auto;line-height:normal}.inner-wrapper{display:inline-block}.dataGrid{overflow:auto;border:1px solid #e0e0e0}.dataGridRow{display:flex}.dataGridHeaderArea{position:-webkit-sticky;position:sticky;top:0;clear:both;background-color:#f5f5f5;z-index:3}.dataGridFooterButtonGroup{display:inline-block}.dataGridFooterArea{width:100%;bottom:0;left:0;background-color:#f5f5f5;border:1px solid #e0e0e0}.dataGridDataCell,.dataGridHeaderCell{padding:4px}.dataGridHeaderCell{height:36px}.dataGridDataCell{border-top:1px solid #e0e0e0}.filterDialog{background-color:#fff;position:absolute;padding:10px;z-index:800;border-radius:5px;width:200px;border:2px solid gray}.filterDialog .form-group{margin-right:0;margin-left:0}.designModeButton span{visibility:hidden}.designModeButton:hover span{visibility:visible}.selectColumnCombo{display:inline-block;width:auto}.selectColumnsArea{display:block}.headerWithFilter .filterButton{visibility:hidden}.headerWithFilter .filteredFilterButton,.headerWithFilter:hover .filterButton{visibility:visible}table input{min-width:75px}table select{min-width:100px}"]}]}],"members":{"ngAfterViewInit":[{"__symbolic":"method"}],"getColFlex":[{"__symbolic":"method"}],"getColWidth":[{"__symbolic":"method"}],"test":[{"__symbolic":"method"}],"dataGridDiv":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":40,"character":3},"arguments":["dataGridDiv"]}]}],"getTotalRows":[{"__symbolic":"method"}],"dragStart":[{"__symbolic":"method"}],"dragOver":[{"__symbolic":"method"}],"onDrop":[{"__symbolic":"method"}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"_getHeight":[{"__symbolic":"method"}],"displayButtons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"displayVCR":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"records":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":3}}]}],"isFiltered":[{"__symbolic":"method"}],"getButtonCssClass":[{"__symbolic":"method"}],"addButton":[{"__symbolic":"method"}],"rowClicked":[{"__symbolic":"method"}],"nextPage":[{"__symbolic":"method"}],"previousPage":[{"__symbolic":"method"}],"catchErrors":[{"__symbolic":"method"}],"showError":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"_getRowClass":[{"__symbolic":"method"}],"_getRowColumnClass":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-wait","template":"<mat-progress-spinner [mode]=\"'indeterminate'\" >\r\n</mat-progress-spinner>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"data-control3","template":"<div class=\"data-control3\" #myDiv>\r\n <div style=\"display:flex;width:100%;\" *ngIf=\"showTextBox()\">\r\n <input #theId matInput [(ngModel)]=\"_getColumn().inputValue\" type=\"{{settings._getColDataType(map)}}\"\r\n (ngModelChange)=\"settings._colValueChanged(map,record)\"\r\n [errorStateMatcher]=\"ngErrorStateMatches\" [ngStyle]=\"getStyle()\" />\r\n <div *ngIf=\"showDescription()\" style=\"white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n padding-left:10px; width:100%;\" (click)=\"click()\">\r\n {{settings._getColDisplayValue(map,record)}} </div>\r\n </div>\r\n <div *ngIf=\"showReadonlyText()\" style=\"\r\n overflow: hidden;\r\n padding-left:10px; width:100%;\" >\r\n {{settings._getColDisplayValue(map,record)}} </div>\r\n <div *ngIf=\"isSelect()\" class=\"my-select\" [class.rtl-select]=\"rightToLeft\">\r\n <select matNativeControl [(ngModel)]=\"_getColumn().inputValue\"\r\n (ngModelChange)=\"settings._colValueChanged(map,record)\">\r\n <option *ngFor=\"let v of getDropDown()\" value=\"{{v.id}}\">{{v.caption}}</option>\r\n\r\n </select>\r\n </div>\r\n\r\n <button mat-icon-button *ngIf=\"showClick()\" (click)=\"click()\" class=\"row-button\">\r\n <mat-icon style=\"height:19px;\">{{getClickIcon()}} </mat-icon>\r\n </button>\r\n\r\n\r\n <div *ngIf=\"showCheckbox()\">\r\n <mat-checkbox #theId1 [(ngModel)]=\"_getColumn().inputValue\"\r\n (ngModelChange)=\"settings._colValueChanged(map,record)\" class=\"fix-label\"></mat-checkbox>\r\n <mat-error *ngIf=\"getError()\" [id]=\"theId1\">{{getError()}}</mat-error>\r\n </div>\r\n\r\n</div>\r\n<mat-error *ngIf=\"getError()\" [id]=\"theId\" style=\"font-size: 75%;\">{{getError()}}</mat-error>","styles":[".my-select::after{content:\"\";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;position:absolute;top:50%;right:0;pointer-events:none;color:rgba(0,0,0,.54);margin-top:-5px}.rtl-select::after{right:auto;left:0}.my-select{position:relative;width:100%}.data-control3{display:flex;width:100%}.row-button{height:auto;line-height:normal}input{border:none;outline:0;padding:0;margin:0;font-size:inherit;font-family:inherit}"]}]}],"members":{"map":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"column":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"rightToLeft":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"record":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"notReadonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"showDescription":[{"__symbolic":"method"}],"showClick":[{"__symbolic":"method"}],"getClickIcon":[{"__symbolic":"method"}],"dataControlStyle":[{"__symbolic":"method"}],"_getColumn":[{"__symbolic":"method"}],"click":[{"__symbolic":"method"}],"_getEditable":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"getDropDown":[{"__symbolic":"method"}],"isSelect":[{"__symbolic":"method"}],"showTextBox":[{"__symbolic":"method"}],"showReadonlyText":[{"__symbolic":"method"}],"showCheckbox":[{"__symbolic":"method"}],"getError":[{"__symbolic":"method"}],"getStyle":[{"__symbolic":"method"}],"getFloatLabel":[{"__symbolic":"method"}]}}},"origins":{"RemultModule":"./src/angular/remult-core.module","ɵa":"./src/angular/wait/busy-service","BusyService":"./src/angular/wait/busy-service","RouteHelperService":"./src/angular/navigate-to-component-route-service","SignedInGuard":"./src/angular/navigate-to-component-route-service","NotSignedInGuard":"./src/angular/navigate-to-component-route-service","DataProvider":"./src/data-interfaces","EntityDataProvider":"./src/data-interfaces","EntityDataProviderFindOptions":"./src/data-interfaces","EntityProvider":"./src/data-interfaces","EntityWhere":"./src/data-interfaces","EntityOrderBy":"./src/data-interfaces","entityOrderByToSort":"./src/data-interfaces","FindOptions":"./src/data-interfaces","__RowsOfDataForTesting":"./src/data-interfaces","SqlImplementation":"./src/sql-command","SqlCommand":"./src/sql-command","SqlResult":"./src/sql-command","ColumnStorage":"./src/column-interfaces","ColumnSettings":"./src/column-interfaces","ColumnOptions":"./src/column-interfaces","ValueOrExpression":"./src/column-interfaces","valueOrExpressionToValue":"./src/column-interfaces","DataControlInfo":"./src/column-interfaces","DataControlSettings":"./src/column-interfaces","displayOptions":"./src/column-interfaces","clickable":"./src/column-interfaces","ValueListItem":"./src/column-interfaces","RestDataProvider":"./src/data-providers/rest-data-provider","RestDataProviderHttpProvider":"./src/data-providers/rest-data-provider","RestDataProviderHttpProviderUsingFetch":"./src/data-providers/rest-data-provider","InMemoryDataProvider":"./src/data-providers/in-memory-database","ArrayEntityDataProvider":"./src/data-providers/array-entity-data-provider","WebSqlDataProvider":"./src/data-providers/web-sql-data-provider","SqlDatabase":"./src/data-providers/sql-database","JsonEntityStorage":"./src/data-providers/json-data-provider","JsonDataProvider":"./src/data-providers/json-data-provider","DataApi":"./src/data-api","DataApiSettings":"./src/data-api","DataApiResponse":"./src/data-api","DataApiError":"./src/data-api","DataApiRequest":"./src/data-api","DataApiServer":"./src/data-api","DataList":"./src/dataList","Lookup":"./src/lookup","lookupRowInfo":"./src/lookup","Action":"./src/server-action","myServerAction":"./src/server-action","ServerFunctionOptions":"./src/server-action","actionInfo":"./src/server-action","ServerFunction":"./src/server-action","serverActionField":"./src/server-action","Context":"./src/context","DataProviderFactoryBuilder":"./src/context","ServerContext":"./src/context","SpecificEntityHelper":"./src/context","EntityType":"./src/context","allEntities":"./src/context","EntityClass":"./src/context","UserInfo":"./src/context","Role":"./src/context","Allowed":"./src/context","AngularComponent":"./src/context","DialogConfig":"./src/context","RoleChecker":"./src/context","JwtSessionManager":"./src/jwt-session-manager","IdEntity":"./src/id-entity","IdColumn":"./src/id-entity","DecorateDataColumnSettings":"./src/id-entity","checkForDuplicateValue":"./src/id-entity","GridSettings":"./src/grid-settings","IDataSettings":"./src/grid-settings","RowButton":"./src/grid-settings","IDataAreaSettings":"./src/data-area-settings","DataAreaSettings":"./src/data-area-settings","DataArealColumnSetting":"./src/data-area-settings","dataAreaSettings":"./src/data-area-settings","Sort":"./src/sort","SortSegment":"./src/sort","ColumnCollection":"./src/column-collection","Entity":"./src/entity","EntityOptions":"./src/entity","EntityDefs":"./src/entity","EntityColumns":"./src/entity","Column":"./src/column","ColumnDefs":"./src/column","BoolStorage":"./src/columns/storage/bool-storage","CharDateStorage":"./src/columns/storage/char-date-storage","DateTimeDateStorage":"./src/columns/storage/datetime-date-storage","DateTimeStorage":"./src/columns/storage/datetime-storage","DefaultStorage":"./src/columns/storage/default-storage","ValueListColumn":"./src/columns/value-list-column","CompoundIdColumn":"./src/columns/compound-id-column","DateColumn":"./src/columns/date-column","DateTimeColumn":"./src/columns/datetime-column","NumberColumn":"./src/columns/number-column","NumberColumnSettings":"./src/columns/number-column","NumberColumnOptions":"./src/columns/number-column","BoolColumn":"./src/columns/number-column","StringColumn":"./src/columns/string-column","FilterBase":"./src/filter/filter-interfaces","FilterConsumer":"./src/filter/filter-interfaces","Filter":"./src/filter/filter","AndFilter":"./src/filter/and-filter","FilterConsumerBridgeToSqlRequest":"./src/filter/filter-consumer-bridge-to-sql-request","FilterConsumnerBridgeToUrlBuilder":"./src/filter/filter-consumer-bridge-to-url-builder","FilterHelper":"./src/filter/filter-helper","UrlBuilder":"./src/url-builder","ɵb":"./src/angular/data-control/data-control2.component","ɵc":"./src/angular/data-area/dataArea2","ɵd":"./src/angular/data-filter-info/data-filter-info.component","ɵe":"./src/angular/date-grid-2/data-grid2.component","ɵf":"./src/angular/wait/wait.component","ɵg":"./src/angular/data-control/data-control3.component"},"importAs":"@remult/core"} |
@@ -27,3 +27,3 @@ import { DataProvider, FindOptions, EntityProvider, EntityOrderBy, EntityWhere } from "./data-interfaces"; | ||
isAllowed(roles: Allowed): any; | ||
cache: Map<DataProvider, Map<string, SpecificEntityHelper<any, Entity<any>>>>; | ||
cache: Map<DataProvider, Map<any, SpecificEntityHelper<any, Entity<any>>>>; | ||
for<lookupIdType, T extends Entity<lookupIdType>>(c: { | ||
@@ -78,3 +78,2 @@ new (...args: any[]): T; | ||
new (...args: any[]): Entity<T>; | ||
__key: string; | ||
} | ||
@@ -81,0 +80,0 @@ export declare const allEntities: EntityType<any>[]; |
Sorry, the diff of this file is too big to display
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 not supported yet
Sorry, the diff of this file is too big to display
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 not supported yet
3692066
49031