@vendasta/social-posts 5.19.2 → 5.19.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/_internal/interfaces/api-v2.interface.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/unsplash-image.interface.mjs +1 -1
- package/esm2020/lib/_internal/objects/api-v2.mjs +7 -1
- package/esm2020/lib/_internal/objects/unsplash-image.mjs +4 -1
- package/esm2020/lib/unsplash-image.service.mjs +10 -4
- package/fesm2015/vendasta-social-posts.mjs +17 -2
- package/fesm2015/vendasta-social-posts.mjs.map +1 -1
- package/fesm2020/vendasta-social-posts.mjs +17 -2
- package/fesm2020/vendasta-social-posts.mjs.map +1 -1
- package/lib/_internal/interfaces/api-v2.interface.d.ts +2 -0
- package/lib/_internal/interfaces/unsplash-image.interface.d.ts +1 -0
- package/lib/_internal/objects/api-v2.d.ts +2 -0
- package/lib/_internal/objects/unsplash-image.d.ts +1 -0
- package/lib/unsplash-image.service.d.ts +3 -2
- package/package.json +1 -1
|
@@ -230,6 +230,9 @@ export class Photo {
|
|
|
230
230
|
if (typeof this.tags !== 'undefined' && this.tags !== null) {
|
|
231
231
|
toReturn['tags'] = 'toApiJson' in this.tags ? this.tags.toApiJson() : this.tags;
|
|
232
232
|
}
|
|
233
|
+
if (typeof this.storageUrl !== 'undefined') {
|
|
234
|
+
toReturn['storageUrl'] = this.storageUrl;
|
|
235
|
+
}
|
|
233
236
|
return toReturn;
|
|
234
237
|
}
|
|
235
238
|
}
|
|
@@ -529,4 +532,4 @@ export class UserLink {
|
|
|
529
532
|
return toReturn;
|
|
530
533
|
}
|
|
531
534
|
}
|
|
532
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zcGxhc2gtaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb2NpYWxfcG9zdHNfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvdW5zcGxhc2gtaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFLakIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FBQztRQUM3RCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFBQyxDQUFDLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQUM7UUFDekUsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUFDO1FBQ2xGLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBNEI7UUFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFN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QyxNQUFNLEVBQUU7WUFBQyxDQUFDLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDMUQsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUFDO1FBQ3RELElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtZQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FBQztRQUMxRCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFBQyxDQUFDLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDdkQsSUFBSSxLQUFLLENBQUMsc0JBQXNCLEVBQUU7WUFBQyxDQUFDLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUN0SCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQUM7UUFDdEQsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUMxRCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQXlCO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lB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QUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FBQztRQUN4RSxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUFDO1FBQ3BGLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQUM7UUFDcEYsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FBQztRQUNwRixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFuY2VzdHJ5IGltcGxlbWVudHMgaS5BbmNlc3RyeUludGVyZmFjZSB7XG4gICAgdHlwZTogU3ViQW5jZXN0cnk7XG4gICAgY2F0ZWdvcnk6IFN1YkFuY2VzdHJ5O1xuICAgIHN1YmNhdGVnb3J5OiBTdWJBbmNlc3RyeTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEFuY2VzdHJ5IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQW5jZXN0cnkoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8udHlwZSkge20udHlwZSA9IFN1YkFuY2VzdHJ5LmZyb21Qcm90byhwcm90by50eXBlKTt9XG4gICAgICAgIGlmIChwcm90by5jYXRlZ29yeSkge20uY2F0ZWdvcnkgPSBTdWJBbmNlc3RyeS5mcm9tUHJvdG8ocHJvdG8uY2F0ZWdvcnkpO31cbiAgICAgICAgaWYgKHByb3RvLnN1YmNhdGVnb3J5KSB7bS5zdWJjYXRlZ29yeSA9IFN1YkFuY2VzdHJ5LmZyb21Qcm90byhwcm90by5zdWJjYXRlZ29yeSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkFuY2VzdHJ5SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHlwZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50eXBlICE9PSBudWxsKSB7dG9SZXR1cm5bJ3R5cGUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudHlwZSA/ICh0aGlzLnR5cGUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYXRlZ29yeSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jYXRlZ29yeSAhPT0gbnVsbCkge3RvUmV0dXJuWydjYXRlZ29yeSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jYXRlZ29yeSA/ICh0aGlzLmNhdGVnb3J5IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNhdGVnb3J5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YmNhdGVnb3J5ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN1YmNhdGVnb3J5ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N1YmNhdGVnb3J5J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN1YmNhdGVnb3J5ID8gKHRoaXMuc3ViY2F0ZWdvcnkgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3ViY2F0ZWdvcnk7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvbiBpbXBsZW1lbnRzIGkuQ29sbGVjdGlvbkludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHB1Ymxpc2hlZEF0OiBzdHJpbmc7XG4gICAgbGFzdENvbGxlY3RlZEF0OiBzdHJpbmc7XG4gICAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgY292ZXJQaG90bzogc3RyaW5nO1xuICAgIHVzZXI6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENvbGxlY3Rpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBDb2xsZWN0aW9uKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Db2xsZWN0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpdGxlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0aXRsZSddID0gdGhpcy50aXRsZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wdWJsaXNoZWRBdCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHVibGlzaGVkQXQnXSA9IHRoaXMucHVibGlzaGVkQXQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGFzdENvbGxlY3RlZEF0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsYXN0Q29sbGVjdGVkQXQnXSA9IHRoaXMubGFzdENvbGxlY3RlZEF0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVwZGF0ZWRBdCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXBkYXRlZEF0J10gPSB0aGlzLnVwZGF0ZWRBdDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb3ZlclBob3RvICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb3ZlclBob3RvJ10gPSB0aGlzLmNvdmVyUGhvdG87fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXNlciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXNlciddID0gdGhpcy51c2VyO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEltYWdlIGltcGxlbWVudHMgaS5JbWFnZUludGVyZmFjZSB7XG4gICAgc21hbGw6IHN0cmluZztcbiAgICBtZWRpdW06IHN0cmluZztcbiAgICBsYXJnZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogSW1hZ2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuSW1hZ2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zbWFsbCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc21hbGwnXSA9IHRoaXMuc21hbGw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVkaXVtICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWRpdW0nXSA9IHRoaXMubWVkaXVtO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhcmdlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsYXJnZSddID0gdGhpcy5sYXJnZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5rcyBpbXBsZW1lbnRzIGkuTGlua3NJbnRlcmZhY2Uge1xuICAgIHNlbGY6IHN0cmluZztcbiAgICBodG1sOiBzdHJpbmc7XG4gICAgZG93bmxvYWQ6IHN0cmluZztcbiAgICBkb3dubG9hZExvY2F0aW9uOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaW5rcyB7XG4gICAgICAgIGxldCBtID0gbmV3IExpbmtzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaW5rc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlbGYgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlbGYnXSA9IHRoaXMuc2VsZjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5odG1sICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydodG1sJ10gPSB0aGlzLmh0bWw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZG93bmxvYWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rvd25sb2FkJ10gPSB0aGlzLmRvd25sb2FkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRvd25sb2FkTG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rvd25sb2FkTG9jYXRpb24nXSA9IHRoaXMuZG93bmxvYWRMb2NhdGlvbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQaG90byBpbXBsZW1lbnRzIGkuUGhvdG9JbnRlcmZhY2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIGNyZWF0ZWRBdDogc3RyaW5nO1xuICAgIHVwZGF0ZWRBdDogc3RyaW5nO1xuICAgIHByb21vdGVkQXQ6IHN0cmluZztcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIGNvbG9yOiBzdHJpbmc7XG4gICAgYmx1ckhhc2g6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGFsdERlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgYnJlYWRjcnVtYnM6IHN0cmluZ1tdO1xuICAgIHVybHM6IFVybHM7XG4gICAgbGlua3M6IExpbmtzO1xuICAgIGxpa2VzOiBudW1iZXI7XG4gICAgbGlrZWRCeVVzZXI6IGJvb2xlYW47XG4gICAgY3VycmVudFVzZXJDb2xsZWN0aW9uczogQ29sbGVjdGlvbltdO1xuICAgIHNwb25zb3JzaGlwOiBzdHJpbmdbXTtcbiAgICB1c2VyOiBVc2VyO1xuICAgIHRhZ3M6IFRhZ3NbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFBob3RvIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUGhvdG8oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ud2lkdGgpIHttLndpZHRoID0gcGFyc2VJbnQocHJvdG8ud2lkdGgsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5oZWlnaHQpIHttLmhlaWdodCA9IHBhcnNlSW50KHByb3RvLmhlaWdodCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnVybHMpIHttLnVybHMgPSBVcmxzLmZyb21Qcm90byhwcm90by51cmxzKTt9XG4gICAgICAgIGlmIChwcm90by5saW5rcykge20ubGlua3MgPSBMaW5rcy5mcm9tUHJvdG8ocHJvdG8ubGlua3MpO31cbiAgICAgICAgaWYgKHByb3RvLmxpa2VzKSB7bS5saWtlcyA9IHBhcnNlSW50KHByb3RvLmxpa2VzLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uY3VycmVudFVzZXJDb2xsZWN0aW9ucykge20uY3VycmVudFVzZXJDb2xsZWN0aW9ucyA9IHByb3RvLmN1cnJlbnRVc2VyQ29sbGVjdGlvbnMubWFwKENvbGxlY3Rpb24uZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by51c2VyKSB7bS51c2VyID0gVXNlci5mcm9tUHJvdG8ocHJvdG8udXNlcik7fVxuICAgICAgICBpZiAocHJvdG8udGFncykge20udGFncyA9IHByb3RvLnRhZ3MubWFwKFRhZ3MuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUGhvdG9JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2x1ZyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2x1ZyddID0gdGhpcy5zbHVnO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0ZWRBdCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3JlYXRlZEF0J10gPSB0aGlzLmNyZWF0ZWRBdDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51cGRhdGVkQXQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VwZGF0ZWRBdCddID0gdGhpcy51cGRhdGVkQXQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvbW90ZWRBdCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHJvbW90ZWRBdCddID0gdGhpcy5wcm9tb3RlZEF0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLndpZHRoICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd3aWR0aCddID0gdGhpcy53aWR0aDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oZWlnaHQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hlaWdodCddID0gdGhpcy5oZWlnaHQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29sb3IgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbG9yJ10gPSB0aGlzLmNvbG9yO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJsdXJIYXNoICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydibHVySGFzaCddID0gdGhpcy5ibHVySGFzaDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZXNjcmlwdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGVzY3JpcHRpb24nXSA9IHRoaXMuZGVzY3JpcHRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWx0RGVzY3JpcHRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FsdERlc2NyaXB0aW9uJ10gPSB0aGlzLmFsdERlc2NyaXB0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJyZWFkY3J1bWJzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydicmVhZGNydW1icyddID0gdGhpcy5icmVhZGNydW1iczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51cmxzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnVybHMgIT09IG51bGwpIHt0b1JldHVyblsndXJscyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy51cmxzID8gKHRoaXMudXJscyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy51cmxzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpbmtzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmxpbmtzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2xpbmtzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmxpbmtzID8gKHRoaXMubGlua3MgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubGlua3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGlrZXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xpa2VzJ10gPSB0aGlzLmxpa2VzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpa2VkQnlVc2VyICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsaWtlZEJ5VXNlciddID0gdGhpcy5saWtlZEJ5VXNlcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXJyZW50VXNlckNvbGxlY3Rpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmN1cnJlbnRVc2VyQ29sbGVjdGlvbnMgIT09IG51bGwpIHt0b1JldHVyblsnY3VycmVudFVzZXJDb2xsZWN0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jdXJyZW50VXNlckNvbGxlY3Rpb25zID8gKHRoaXMuY3VycmVudFVzZXJDb2xsZWN0aW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jdXJyZW50VXNlckNvbGxlY3Rpb25zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNwb25zb3JzaGlwICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzcG9uc29yc2hpcCddID0gdGhpcy5zcG9uc29yc2hpcDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VyICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnVzZXIgIT09IG51bGwpIHt0b1JldHVyblsndXNlciddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy51c2VyID8gKHRoaXMudXNlciBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy51c2VyO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRhZ3MgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGFncyAhPT0gbnVsbCkge3RvUmV0dXJuWyd0YWdzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRhZ3MgPyAodGhpcy50YWdzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRhZ3M7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU29jaWFsIGltcGxlbWVudHMgaS5Tb2NpYWxJbnRlcmZhY2Uge1xuICAgIGluc3RhZ3JhbVVzZXJuYW1lOiBzdHJpbmc7XG4gICAgcG9ydGZvbGlvVXJsOiBzdHJpbmc7XG4gICAgdHdpdHRlclVzZXJuYW1lOiBzdHJpbmc7XG4gICAgcGF5cGFsRW1haWw6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNvY2lhbCB7XG4gICAgICAgIGxldCBtID0gbmV3IFNvY2lhbCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU29jaWFsSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW5zdGFncmFtVXNlcm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2luc3RhZ3JhbVVzZXJuYW1lJ10gPSB0aGlzLmluc3RhZ3JhbVVzZXJuYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvcnRmb2xpb1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncG9ydGZvbGlvVXJsJ10gPSB0aGlzLnBvcnRmb2xpb1VybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50d2l0dGVyVXNlcm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3R3aXR0ZXJVc2VybmFtZSddID0gdGhpcy50d2l0dGVyVXNlcm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGF5cGFsRW1haWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BheXBhbEVtYWlsJ10gPSB0aGlzLnBheXBhbEVtYWlsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNvdXJjZSBpbXBsZW1lbnRzIGkuU291cmNlSW50ZXJmYWNlIHtcbiAgICBhbmNlc3RyeTogQW5jZXN0cnk7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBzdWJ0aXRsZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgbWV0YVRpdGxlOiBzdHJpbmc7XG4gICAgbWV0YURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgY292ZXJQaG90bzogUGhvdG87XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTb3VyY2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBTb3VyY2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYW5jZXN0cnkpIHttLmFuY2VzdHJ5ID0gQW5jZXN0cnkuZnJvbVByb3RvKHByb3RvLmFuY2VzdHJ5KTt9XG4gICAgICAgIGlmIChwcm90by5jb3ZlclBob3RvKSB7bS5jb3ZlclBob3RvID0gUGhvdG8uZnJvbVByb3RvKHByb3RvLmNvdmVyUGhvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Tb3VyY2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hbmNlc3RyeSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hbmNlc3RyeSAhPT0gbnVsbCkge3RvUmV0dXJuWydhbmNlc3RyeSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hbmNlc3RyeSA/ICh0aGlzLmFuY2VzdHJ5IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFuY2VzdHJ5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpdGxlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0aXRsZSddID0gdGhpcy50aXRsZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJ0aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3VidGl0bGUnXSA9IHRoaXMuc3VidGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGVzY3JpcHRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rlc2NyaXB0aW9uJ10gPSB0aGlzLmRlc2NyaXB0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1ldGFUaXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWV0YVRpdGxlJ10gPSB0aGlzLm1ldGFUaXRsZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXRhRGVzY3JpcHRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21ldGFEZXNjcmlwdGlvbiddID0gdGhpcy5tZXRhRGVzY3JpcHRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY292ZXJQaG90byAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jb3ZlclBob3RvICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NvdmVyUGhvdG8nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY292ZXJQaG90byA/ICh0aGlzLmNvdmVyUGhvdG8gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY292ZXJQaG90bzt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdWJBbmNlc3RyeSBpbXBsZW1lbnRzIGkuU3ViQW5jZXN0cnlJbnRlcmZhY2Uge1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBwcmV0dHlTbHVnOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTdWJBbmNlc3RyeSB7XG4gICAgICAgIGxldCBtID0gbmV3IFN1YkFuY2VzdHJ5KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TdWJBbmNlc3RyeUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNsdWcgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NsdWcnXSA9IHRoaXMuc2x1Zzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcmV0dHlTbHVnICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwcmV0dHlTbHVnJ10gPSB0aGlzLnByZXR0eVNsdWc7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFncyBpbXBsZW1lbnRzIGkuVGFnc0ludGVyZmFjZSB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgc291cmNlOiBTb3VyY2U7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBUYWdzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVGFncygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zb3VyY2UpIHttLnNvdXJjZSA9IFNvdXJjZS5mcm9tUHJvdG8ocHJvdG8uc291cmNlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVGFnc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3R5cGUnXSA9IHRoaXMudHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGl0bGUnXSA9IHRoaXMudGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc291cmNlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnNvdXJjZSAhPT0gbnVsbCkge3RvUmV0dXJuWydzb3VyY2UnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc291cmNlID8gKHRoaXMuc291cmNlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnNvdXJjZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcmxzIGltcGxlbWVudHMgaS5VcmxzSW50ZXJmYWNlIHtcbiAgICByYXc6IHN0cmluZztcbiAgICBmdWxsOiBzdHJpbmc7XG4gICAgcmVndWxhcjogc3RyaW5nO1xuICAgIHNtYWxsOiBzdHJpbmc7XG4gICAgdGh1bWI6IHN0cmluZztcbiAgICBzbWFsbFMzOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBVcmxzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVXJscygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVXJsc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJhdyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmF3J10gPSB0aGlzLnJhdzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mdWxsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmdWxsJ10gPSB0aGlzLmZ1bGw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVndWxhciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVndWxhciddID0gdGhpcy5yZWd1bGFyO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNtYWxsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzbWFsbCddID0gdGhpcy5zbWFsbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aHVtYiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGh1bWInXSA9IHRoaXMudGh1bWI7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc21hbGxTMyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc21hbGxTMyddID0gdGhpcy5zbWFsbFMzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVzZXIgaW1wbGVtZW50cyBpLlVzZXJJbnRlcmZhY2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gICAgbGFzdE5hbWU6IHN0cmluZztcbiAgICB0d2l0dGVyVXNlcm5hbWU6IHN0cmluZztcbiAgICBwb3J0Zm9saW9Vcmw6IHN0cmluZztcbiAgICBiaW86IHN0cmluZztcbiAgICBsb2NhdGlvbjogc3RyaW5nO1xuICAgIGxpbmtzOiBVc2VyTGluaztcbiAgICBwcm9maWxlSW1hZ2U6IEltYWdlO1xuICAgIGluc3RhZ3JhbVVzZXJuYW1lOiBzdHJpbmc7XG4gICAgdG90YWxDb2xsZWN0aW9uczogbnVtYmVyO1xuICAgIHRvdGFsTGlrZXM6IG51bWJlcjtcbiAgICB0b3RhbFBob3RvczogbnVtYmVyO1xuICAgIHRvdGFsUHJvbW90ZWRQaG90b3M6IG51bWJlcjtcbiAgICBhY2NlcHRlZFRvczogYm9vbGVhbjtcbiAgICBmb3JIaXJlOiBib29sZWFuO1xuICAgIHNvY2lhbDogU29jaWFsO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogVXNlciB7XG4gICAgICAgIGxldCBtID0gbmV3IFVzZXIoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubGlua3MpIHttLmxpbmtzID0gVXNlckxpbmsuZnJvbVByb3RvKHByb3RvLmxpbmtzKTt9XG4gICAgICAgIGlmIChwcm90by5wcm9maWxlSW1hZ2UpIHttLnByb2ZpbGVJbWFnZSA9IEltYWdlLmZyb21Qcm90byhwcm90by5wcm9maWxlSW1hZ2UpO31cbiAgICAgICAgaWYgKHByb3RvLnRvdGFsQ29sbGVjdGlvbnMpIHttLnRvdGFsQ29sbGVjdGlvbnMgPSBwYXJzZUludChwcm90by50b3RhbENvbGxlY3Rpb25zLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8udG90YWxMaWtlcykge20udG90YWxMaWtlcyA9IHBhcnNlSW50KHByb3RvLnRvdGFsTGlrZXMsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by50b3RhbFBob3Rvcykge20udG90YWxQaG90b3MgPSBwYXJzZUludChwcm90by50b3RhbFBob3RvcywgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnRvdGFsUHJvbW90ZWRQaG90b3MpIHttLnRvdGFsUHJvbW90ZWRQaG90b3MgPSBwYXJzZUludChwcm90by50b3RhbFByb21vdGVkUGhvdG9zLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uc29jaWFsKSB7bS5zb2NpYWwgPSBTb2NpYWwuZnJvbVByb3RvKHByb3RvLnNvY2lhbCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlVzZXJJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlZEF0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1cGRhdGVkQXQnXSA9IHRoaXMudXBkYXRlZEF0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJuYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VybmFtZSddID0gdGhpcy51c2VybmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmlyc3ROYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmaXJzdE5hbWUnXSA9IHRoaXMuZmlyc3ROYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhc3ROYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsYXN0TmFtZSddID0gdGhpcy5sYXN0TmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50d2l0dGVyVXNlcm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3R3aXR0ZXJVc2VybmFtZSddID0gdGhpcy50d2l0dGVyVXNlcm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9ydGZvbGlvVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwb3J0Zm9saW9VcmwnXSA9IHRoaXMucG9ydGZvbGlvVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJpbyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYmlvJ10gPSB0aGlzLmJpbzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbG9jYXRpb24nXSA9IHRoaXMubG9jYXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGlua3MgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubGlua3MgIT09IG51bGwpIHt0b1JldHVyblsnbGlua3MnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubGlua3MgPyAodGhpcy5saW5rcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5saW5rczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9maWxlSW1hZ2UgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucHJvZmlsZUltYWdlICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Byb2ZpbGVJbWFnZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wcm9maWxlSW1hZ2UgPyAodGhpcy5wcm9maWxlSW1hZ2UgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucHJvZmlsZUltYWdlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmluc3RhZ3JhbVVzZXJuYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbnN0YWdyYW1Vc2VybmFtZSddID0gdGhpcy5pbnN0YWdyYW1Vc2VybmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50b3RhbENvbGxlY3Rpb25zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0b3RhbENvbGxlY3Rpb25zJ10gPSB0aGlzLnRvdGFsQ29sbGVjdGlvbnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudG90YWxMaWtlcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndG90YWxMaWtlcyddID0gdGhpcy50b3RhbExpa2VzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRvdGFsUGhvdG9zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0b3RhbFBob3RvcyddID0gdGhpcy50b3RhbFBob3Rvczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50b3RhbFByb21vdGVkUGhvdG9zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0b3RhbFByb21vdGVkUGhvdG9zJ10gPSB0aGlzLnRvdGFsUHJvbW90ZWRQaG90b3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjZXB0ZWRUb3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjY2VwdGVkVG9zJ10gPSB0aGlzLmFjY2VwdGVkVG9zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZvckhpcmUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ZvckhpcmUnXSA9IHRoaXMuZm9ySGlyZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zb2NpYWwgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc29jaWFsICE9PSBudWxsKSB7dG9SZXR1cm5bJ3NvY2lhbCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zb2NpYWwgPyAodGhpcy5zb2NpYWwgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc29jaWFsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVzZXJMaW5rIGltcGxlbWVudHMgaS5Vc2VyTGlua0ludGVyZmFjZSB7XG4gICAgc2VsZjogc3RyaW5nO1xuICAgIGh0bWw6IHN0cmluZztcbiAgICBwaG90b3M6IHN0cmluZztcbiAgICBsaWtlczogc3RyaW5nO1xuICAgIHBvcnRmb2xpbzogc3RyaW5nO1xuICAgIGZvbGxvd2luZzogc3RyaW5nO1xuICAgIGZvbGxvd2Vyczogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogVXNlckxpbmsge1xuICAgICAgICBsZXQgbSA9IG5ldyBVc2VyTGluaygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVXNlckxpbmtJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZWxmICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZWxmJ10gPSB0aGlzLnNlbGY7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaHRtbCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaHRtbCddID0gdGhpcy5odG1sO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBob3RvcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGhvdG9zJ10gPSB0aGlzLnBob3Rvczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5saWtlcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGlrZXMnXSA9IHRoaXMubGlrZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9ydGZvbGlvICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwb3J0Zm9saW8nXSA9IHRoaXMucG9ydGZvbGlvO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZvbGxvd2luZyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZm9sbG93aW5nJ10gPSB0aGlzLmZvbGxvd2luZzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mb2xsb3dlcnMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ZvbGxvd2VycyddID0gdGhpcy5mb2xsb3dlcnM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=
|
|
535
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zcGxhc2gtaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb2NpYWxfcG9zdHNfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvdW5zcGxhc2gtaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFLakIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FBQztRQUM3RCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFBQyxDQUFDLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQUM7UUFDekUsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUFDO1FBQ2xGLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBNEI7UUFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFN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QyxNQUFNLEVBQUU7WUFBQyxDQUFDLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDMUQsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUFDO1FBQ3RELElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtZQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FBQztRQUMxRCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFBQyxDQUFDLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDdkQsSUFBSSxLQUFLLENBQUMsc0JBQXNCLEVBQUU7WUFBQyxDQUFDLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUN0SCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQUM7UUFDdEQsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUMxRCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQXlCO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lB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QUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FBQztRQUMzRSxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUFDO1FBQ3hFLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQUM7UUFDcEYsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FBQztRQUNwRixJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUFDO1FBQ3BGLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgQW5jZXN0cnkgaW1wbGVtZW50cyBpLkFuY2VzdHJ5SW50ZXJmYWNlIHtcbiAgICB0eXBlOiBTdWJBbmNlc3RyeTtcbiAgICBjYXRlZ29yeTogU3ViQW5jZXN0cnk7XG4gICAgc3ViY2F0ZWdvcnk6IFN1YkFuY2VzdHJ5O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQW5jZXN0cnkge1xuICAgICAgICBsZXQgbSA9IG5ldyBBbmNlc3RyeSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by50eXBlKSB7bS50eXBlID0gU3ViQW5jZXN0cnkuZnJvbVByb3RvKHByb3RvLnR5cGUpO31cbiAgICAgICAgaWYgKHByb3RvLmNhdGVnb3J5KSB7bS5jYXRlZ29yeSA9IFN1YkFuY2VzdHJ5LmZyb21Qcm90byhwcm90by5jYXRlZ29yeSk7fVxuICAgICAgICBpZiAocHJvdG8uc3ViY2F0ZWdvcnkpIHttLnN1YmNhdGVnb3J5ID0gU3ViQW5jZXN0cnkuZnJvbVByb3RvKHByb3RvLnN1YmNhdGVnb3J5KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQW5jZXN0cnlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnR5cGUgIT09IG51bGwpIHt0b1JldHVyblsndHlwZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50eXBlID8gKHRoaXMudHlwZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50eXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhdGVnb3J5ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNhdGVnb3J5ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NhdGVnb3J5J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNhdGVnb3J5ID8gKHRoaXMuY2F0ZWdvcnkgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY2F0ZWdvcnk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3ViY2F0ZWdvcnkgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3ViY2F0ZWdvcnkgIT09IG51bGwpIHt0b1JldHVyblsnc3ViY2F0ZWdvcnknXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3ViY2F0ZWdvcnkgPyAodGhpcy5zdWJjYXRlZ29yeSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdWJjYXRlZ29yeTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uIGltcGxlbWVudHMgaS5Db2xsZWN0aW9uSW50ZXJmYWNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgcHVibGlzaGVkQXQ6IHN0cmluZztcbiAgICBsYXN0Q29sbGVjdGVkQXQ6IHN0cmluZztcbiAgICB1cGRhdGVkQXQ6IHN0cmluZztcbiAgICBjb3ZlclBob3RvOiBzdHJpbmc7XG4gICAgdXNlcjogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ29sbGVjdGlvbiB7XG4gICAgICAgIGxldCBtID0gbmV3IENvbGxlY3Rpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkNvbGxlY3Rpb25JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGl0bGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RpdGxlJ10gPSB0aGlzLnRpdGxlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnB1Ymxpc2hlZEF0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwdWJsaXNoZWRBdCddID0gdGhpcy5wdWJsaXNoZWRBdDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0Q29sbGVjdGVkQXQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xhc3RDb2xsZWN0ZWRBdCddID0gdGhpcy5sYXN0Q29sbGVjdGVkQXQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlZEF0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1cGRhdGVkQXQnXSA9IHRoaXMudXBkYXRlZEF0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvdmVyUGhvdG8gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvdmVyUGhvdG8nXSA9IHRoaXMuY292ZXJQaG90bzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VyICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VyJ10gPSB0aGlzLnVzZXI7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW1hZ2UgaW1wbGVtZW50cyBpLkltYWdlSW50ZXJmYWNlIHtcbiAgICBzbWFsbDogc3RyaW5nO1xuICAgIG1lZGl1bTogc3RyaW5nO1xuICAgIGxhcmdlOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBJbWFnZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEltYWdlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5JbWFnZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNtYWxsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzbWFsbCddID0gdGhpcy5zbWFsbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWRpdW0gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZGl1bSddID0gdGhpcy5tZWRpdW07fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGFyZ2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xhcmdlJ10gPSB0aGlzLmxhcmdlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpbmtzIGltcGxlbWVudHMgaS5MaW5rc0ludGVyZmFjZSB7XG4gICAgc2VsZjogc3RyaW5nO1xuICAgIGh0bWw6IHN0cmluZztcbiAgICBkb3dubG9hZDogc3RyaW5nO1xuICAgIGRvd25sb2FkTG9jYXRpb246IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpbmtzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlua3MoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpbmtzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2VsZiddID0gdGhpcy5zZWxmO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmh0bWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2h0bWwnXSA9IHRoaXMuaHRtbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kb3dubG9hZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZG93bmxvYWQnXSA9IHRoaXMuZG93bmxvYWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZG93bmxvYWRMb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZG93bmxvYWRMb2NhdGlvbiddID0gdGhpcy5kb3dubG9hZExvY2F0aW9uO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBob3RvIGltcGxlbWVudHMgaS5QaG90b0ludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgcHJvbW90ZWRBdDogc3RyaW5nO1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgY29sb3I6IHN0cmluZztcbiAgICBibHVySGFzaDogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgYWx0RGVzY3JpcHRpb246IHN0cmluZztcbiAgICBicmVhZGNydW1iczogc3RyaW5nW107XG4gICAgdXJsczogVXJscztcbiAgICBsaW5rczogTGlua3M7XG4gICAgbGlrZXM6IG51bWJlcjtcbiAgICBsaWtlZEJ5VXNlcjogYm9vbGVhbjtcbiAgICBjdXJyZW50VXNlckNvbGxlY3Rpb25zOiBDb2xsZWN0aW9uW107XG4gICAgc3BvbnNvcnNoaXA6IHN0cmluZ1tdO1xuICAgIHVzZXI6IFVzZXI7XG4gICAgdGFnczogVGFnc1tdO1xuICAgIHN0b3JhZ2VVcmw6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFBob3RvIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUGhvdG8oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ud2lkdGgpIHttLndpZHRoID0gcGFyc2VJbnQocHJvdG8ud2lkdGgsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5oZWlnaHQpIHttLmhlaWdodCA9IHBhcnNlSW50KHByb3RvLmhlaWdodCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnVybHMpIHttLnVybHMgPSBVcmxzLmZyb21Qcm90byhwcm90by51cmxzKTt9XG4gICAgICAgIGlmIChwcm90by5saW5rcykge20ubGlua3MgPSBMaW5rcy5mcm9tUHJvdG8ocHJvdG8ubGlua3MpO31cbiAgICAgICAgaWYgKHByb3RvLmxpa2VzKSB7bS5saWtlcyA9IHBhcnNlSW50KHByb3RvLmxpa2VzLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uY3VycmVudFVzZXJDb2xsZWN0aW9ucykge20uY3VycmVudFVzZXJDb2xsZWN0aW9ucyA9IHByb3RvLmN1cnJlbnRVc2VyQ29sbGVjdGlvbnMubWFwKENvbGxlY3Rpb24uZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by51c2VyKSB7bS51c2VyID0gVXNlci5mcm9tUHJvdG8ocHJvdG8udXNlcik7fVxuICAgICAgICBpZiAocHJvdG8udGFncykge20udGFncyA9IHByb3RvLnRhZ3MubWFwKFRhZ3MuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUGhvdG9JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2x1ZyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2x1ZyddID0gdGhpcy5zbHVnO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0ZWRBdCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3JlYXRlZEF0J10gPSB0aGlzLmNyZWF0ZWRBdDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51cGRhdGVkQXQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VwZGF0ZWRBdCddID0gdGhpcy51cGRhdGVkQXQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvbW90ZWRBdCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHJvbW90ZWRBdCddID0gdGhpcy5wcm9tb3RlZEF0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLndpZHRoICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd3aWR0aCddID0gdGhpcy53aWR0aDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oZWlnaHQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hlaWdodCddID0gdGhpcy5oZWlnaHQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29sb3IgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbG9yJ10gPSB0aGlzLmNvbG9yO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJsdXJIYXNoICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydibHVySGFzaCddID0gdGhpcy5ibHVySGFzaDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZXNjcmlwdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGVzY3JpcHRpb24nXSA9IHRoaXMuZGVzY3JpcHRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWx0RGVzY3JpcHRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FsdERlc2NyaXB0aW9uJ10gPSB0aGlzLmFsdERlc2NyaXB0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJyZWFkY3J1bWJzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydicmVhZGNydW1icyddID0gdGhpcy5icmVhZGNydW1iczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51cmxzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnVybHMgIT09IG51bGwpIHt0b1JldHVyblsndXJscyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy51cmxzID8gKHRoaXMudXJscyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy51cmxzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpbmtzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmxpbmtzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2xpbmtzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmxpbmtzID8gKHRoaXMubGlua3MgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubGlua3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGlrZXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xpa2VzJ10gPSB0aGlzLmxpa2VzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpa2VkQnlVc2VyICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsaWtlZEJ5VXNlciddID0gdGhpcy5saWtlZEJ5VXNlcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXJyZW50VXNlckNvbGxlY3Rpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmN1cnJlbnRVc2VyQ29sbGVjdGlvbnMgIT09IG51bGwpIHt0b1JldHVyblsnY3VycmVudFVzZXJDb2xsZWN0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jdXJyZW50VXNlckNvbGxlY3Rpb25zID8gKHRoaXMuY3VycmVudFVzZXJDb2xsZWN0aW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jdXJyZW50VXNlckNvbGxlY3Rpb25zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNwb25zb3JzaGlwICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzcG9uc29yc2hpcCddID0gdGhpcy5zcG9uc29yc2hpcDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VyICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnVzZXIgIT09IG51bGwpIHt0b1JldHVyblsndXNlciddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy51c2VyID8gKHRoaXMudXNlciBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy51c2VyO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRhZ3MgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGFncyAhPT0gbnVsbCkge3RvUmV0dXJuWyd0YWdzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRhZ3MgPyAodGhpcy50YWdzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRhZ3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RvcmFnZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3RvcmFnZVVybCddID0gdGhpcy5zdG9yYWdlVXJsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNvY2lhbCBpbXBsZW1lbnRzIGkuU29jaWFsSW50ZXJmYWNlIHtcbiAgICBpbnN0YWdyYW1Vc2VybmFtZTogc3RyaW5nO1xuICAgIHBvcnRmb2xpb1VybDogc3RyaW5nO1xuICAgIHR3aXR0ZXJVc2VybmFtZTogc3RyaW5nO1xuICAgIHBheXBhbEVtYWlsOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTb2NpYWwge1xuICAgICAgICBsZXQgbSA9IG5ldyBTb2NpYWwoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNvY2lhbEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmluc3RhZ3JhbVVzZXJuYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbnN0YWdyYW1Vc2VybmFtZSddID0gdGhpcy5pbnN0YWdyYW1Vc2VybmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3J0Zm9saW9VcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BvcnRmb2xpb1VybCddID0gdGhpcy5wb3J0Zm9saW9Vcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHdpdHRlclVzZXJuYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0d2l0dGVyVXNlcm5hbWUnXSA9IHRoaXMudHdpdHRlclVzZXJuYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBheXBhbEVtYWlsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXlwYWxFbWFpbCddID0gdGhpcy5wYXlwYWxFbWFpbDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb3VyY2UgaW1wbGVtZW50cyBpLlNvdXJjZUludGVyZmFjZSB7XG4gICAgYW5jZXN0cnk6IEFuY2VzdHJ5O1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgc3VidGl0bGU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIG1ldGFUaXRsZTogc3RyaW5nO1xuICAgIG1ldGFEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGNvdmVyUGhvdG86IFBob3RvO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU291cmNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU291cmNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFuY2VzdHJ5KSB7bS5hbmNlc3RyeSA9IEFuY2VzdHJ5LmZyb21Qcm90byhwcm90by5hbmNlc3RyeSk7fVxuICAgICAgICBpZiAocHJvdG8uY292ZXJQaG90bykge20uY292ZXJQaG90byA9IFBob3RvLmZyb21Qcm90byhwcm90by5jb3ZlclBob3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU291cmNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYW5jZXN0cnkgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYW5jZXN0cnkgIT09IG51bGwpIHt0b1JldHVyblsnYW5jZXN0cnknXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYW5jZXN0cnkgPyAodGhpcy5hbmNlc3RyeSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hbmNlc3RyeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGl0bGUnXSA9IHRoaXMudGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3VidGl0bGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N1YnRpdGxlJ10gPSB0aGlzLnN1YnRpdGxlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlc2NyaXB0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkZXNjcmlwdGlvbiddID0gdGhpcy5kZXNjcmlwdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXRhVGl0bGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21ldGFUaXRsZSddID0gdGhpcy5tZXRhVGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWV0YURlc2NyaXB0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZXRhRGVzY3JpcHRpb24nXSA9IHRoaXMubWV0YURlc2NyaXB0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvdmVyUGhvdG8gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY292ZXJQaG90byAhPT0gbnVsbCkge3RvUmV0dXJuWydjb3ZlclBob3RvJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNvdmVyUGhvdG8gPyAodGhpcy5jb3ZlclBob3RvIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNvdmVyUGhvdG87fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3ViQW5jZXN0cnkgaW1wbGVtZW50cyBpLlN1YkFuY2VzdHJ5SW50ZXJmYWNlIHtcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgcHJldHR5U2x1Zzogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU3ViQW5jZXN0cnkge1xuICAgICAgICBsZXQgbSA9IG5ldyBTdWJBbmNlc3RyeSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU3ViQW5jZXN0cnlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zbHVnICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzbHVnJ10gPSB0aGlzLnNsdWc7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJldHR5U2x1ZyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncHJldHR5U2x1ZyddID0gdGhpcy5wcmV0dHlTbHVnO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhZ3MgaW1wbGVtZW50cyBpLlRhZ3NJbnRlcmZhY2Uge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHNvdXJjZTogU291cmNlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogVGFncyB7XG4gICAgICAgIGxldCBtID0gbmV3IFRhZ3MoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc291cmNlKSB7bS5zb3VyY2UgPSBTb3VyY2UuZnJvbVByb3RvKHByb3RvLnNvdXJjZSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlRhZ3NJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0eXBlJ10gPSB0aGlzLnR5cGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGl0bGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RpdGxlJ10gPSB0aGlzLnRpdGxlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNvdXJjZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zb3VyY2UgIT09IG51bGwpIHt0b1JldHVyblsnc291cmNlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnNvdXJjZSA/ICh0aGlzLnNvdXJjZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zb3VyY2U7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXJscyBpbXBsZW1lbnRzIGkuVXJsc0ludGVyZmFjZSB7XG4gICAgcmF3OiBzdHJpbmc7XG4gICAgZnVsbDogc3RyaW5nO1xuICAgIHJlZ3VsYXI6IHN0cmluZztcbiAgICBzbWFsbDogc3RyaW5nO1xuICAgIHRodW1iOiBzdHJpbmc7XG4gICAgc21hbGxTMzogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogVXJscyB7XG4gICAgICAgIGxldCBtID0gbmV3IFVybHMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlVybHNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yYXcgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JhdyddID0gdGhpcy5yYXc7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZnVsbCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZnVsbCddID0gdGhpcy5mdWxsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlZ3VsYXIgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlZ3VsYXInXSA9IHRoaXMucmVndWxhcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zbWFsbCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc21hbGwnXSA9IHRoaXMuc21hbGw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGh1bWIgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RodW1iJ10gPSB0aGlzLnRodW1iO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNtYWxsUzMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NtYWxsUzMnXSA9IHRoaXMuc21hbGxTMzt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVc2VyIGltcGxlbWVudHMgaS5Vc2VySW50ZXJmYWNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHVwZGF0ZWRBdDogc3RyaW5nO1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGZpcnN0TmFtZTogc3RyaW5nO1xuICAgIGxhc3ROYW1lOiBzdHJpbmc7XG4gICAgdHdpdHRlclVzZXJuYW1lOiBzdHJpbmc7XG4gICAgcG9ydGZvbGlvVXJsOiBzdHJpbmc7XG4gICAgYmlvOiBzdHJpbmc7XG4gICAgbG9jYXRpb246IHN0cmluZztcbiAgICBsaW5rczogVXNlckxpbms7XG4gICAgcHJvZmlsZUltYWdlOiBJbWFnZTtcbiAgICBpbnN0YWdyYW1Vc2VybmFtZTogc3RyaW5nO1xuICAgIHRvdGFsQ29sbGVjdGlvbnM6IG51bWJlcjtcbiAgICB0b3RhbExpa2VzOiBudW1iZXI7XG4gICAgdG90YWxQaG90b3M6IG51bWJlcjtcbiAgICB0b3RhbFByb21vdGVkUGhvdG9zOiBudW1iZXI7XG4gICAgYWNjZXB0ZWRUb3M6IGJvb2xlYW47XG4gICAgZm9ySGlyZTogYm9vbGVhbjtcbiAgICBzb2NpYWw6IFNvY2lhbDtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFVzZXIge1xuICAgICAgICBsZXQgbSA9IG5ldyBVc2VyKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmxpbmtzKSB7bS5saW5rcyA9IFVzZXJMaW5rLmZyb21Qcm90byhwcm90by5saW5rcyk7fVxuICAgICAgICBpZiAocHJvdG8ucHJvZmlsZUltYWdlKSB7bS5wcm9maWxlSW1hZ2UgPSBJbWFnZS5mcm9tUHJvdG8ocHJvdG8ucHJvZmlsZUltYWdlKTt9XG4gICAgICAgIGlmIChwcm90by50b3RhbENvbGxlY3Rpb25zKSB7bS50b3RhbENvbGxlY3Rpb25zID0gcGFyc2VJbnQocHJvdG8udG90YWxDb2xsZWN0aW9ucywgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnRvdGFsTGlrZXMpIHttLnRvdGFsTGlrZXMgPSBwYXJzZUludChwcm90by50b3RhbExpa2VzLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8udG90YWxQaG90b3MpIHttLnRvdGFsUGhvdG9zID0gcGFyc2VJbnQocHJvdG8udG90YWxQaG90b3MsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by50b3RhbFByb21vdGVkUGhvdG9zKSB7bS50b3RhbFByb21vdGVkUGhvdG9zID0gcGFyc2VJbnQocHJvdG8udG90YWxQcm9tb3RlZFBob3RvcywgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnNvY2lhbCkge20uc29jaWFsID0gU29jaWFsLmZyb21Qcm90byhwcm90by5zb2NpYWwpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Vc2VySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVwZGF0ZWRBdCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXBkYXRlZEF0J10gPSB0aGlzLnVwZGF0ZWRBdDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VybmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXNlcm5hbWUnXSA9IHRoaXMudXNlcm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZSddID0gdGhpcy5uYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpcnN0TmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZmlyc3ROYW1lJ10gPSB0aGlzLmZpcnN0TmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0TmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGFzdE5hbWUnXSA9IHRoaXMubGFzdE5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHdpdHRlclVzZXJuYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0d2l0dGVyVXNlcm5hbWUnXSA9IHRoaXMudHdpdHRlclVzZXJuYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvcnRmb2xpb1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncG9ydGZvbGlvVXJsJ10gPSB0aGlzLnBvcnRmb2xpb1VybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5iaW8gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2JpbyddID0gdGhpcy5iaW87fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvY2F0aW9uJ10gPSB0aGlzLmxvY2F0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpbmtzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmxpbmtzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2xpbmtzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmxpbmtzID8gKHRoaXMubGlua3MgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubGlua3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvZmlsZUltYWdlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnByb2ZpbGVJbWFnZSAhPT0gbnVsbCkge3RvUmV0dXJuWydwcm9maWxlSW1hZ2UnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucHJvZmlsZUltYWdlID8gKHRoaXMucHJvZmlsZUltYWdlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnByb2ZpbGVJbWFnZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pbnN0YWdyYW1Vc2VybmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaW5zdGFncmFtVXNlcm5hbWUnXSA9IHRoaXMuaW5zdGFncmFtVXNlcm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudG90YWxDb2xsZWN0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndG90YWxDb2xsZWN0aW9ucyddID0gdGhpcy50b3RhbENvbGxlY3Rpb25zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRvdGFsTGlrZXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RvdGFsTGlrZXMnXSA9IHRoaXMudG90YWxMaWtlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50b3RhbFBob3RvcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndG90YWxQaG90b3MnXSA9IHRoaXMudG90YWxQaG90b3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudG90YWxQcm9tb3RlZFBob3RvcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndG90YWxQcm9tb3RlZFBob3RvcyddID0gdGhpcy50b3RhbFByb21vdGVkUGhvdG9zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY2VwdGVkVG9zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NlcHRlZFRvcyddID0gdGhpcy5hY2NlcHRlZFRvczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mb3JIaXJlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmb3JIaXJlJ10gPSB0aGlzLmZvckhpcmU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc29jaWFsICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnNvY2lhbCAhPT0gbnVsbCkge3RvUmV0dXJuWydzb2NpYWwnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc29jaWFsID8gKHRoaXMuc29jaWFsIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnNvY2lhbDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVc2VyTGluayBpbXBsZW1lbnRzIGkuVXNlckxpbmtJbnRlcmZhY2Uge1xuICAgIHNlbGY6IHN0cmluZztcbiAgICBodG1sOiBzdHJpbmc7XG4gICAgcGhvdG9zOiBzdHJpbmc7XG4gICAgbGlrZXM6IHN0cmluZztcbiAgICBwb3J0Zm9saW86IHN0cmluZztcbiAgICBmb2xsb3dpbmc6IHN0cmluZztcbiAgICBmb2xsb3dlcnM6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFVzZXJMaW5rIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVXNlckxpbmsoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlVzZXJMaW5rSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2VsZiddID0gdGhpcy5zZWxmO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmh0bWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2h0bWwnXSA9IHRoaXMuaHRtbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5waG90b3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bob3RvcyddID0gdGhpcy5waG90b3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGlrZXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xpa2VzJ10gPSB0aGlzLmxpa2VzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvcnRmb2xpbyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncG9ydGZvbGlvJ10gPSB0aGlzLnBvcnRmb2xpbzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mb2xsb3dpbmcgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ZvbGxvd2luZyddID0gdGhpcy5mb2xsb3dpbmc7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZm9sbG93ZXJzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmb2xsb3dlcnMnXSA9IHRoaXMuZm9sbG93ZXJzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { UnsplashApiService } from './_internal/unsplash.api.service';
|
|
3
|
-
import { ListUnsplashImagesRequest } from './_internal/objects/api-v2';
|
|
3
|
+
import { ListUnsplashImagesRequest, UploadToStorageRequest } from './_internal/objects/api-v2';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "./_internal/unsplash.api.service";
|
|
6
6
|
export class UnsplashImageService {
|
|
7
7
|
constructor(unsplashApiService) {
|
|
8
8
|
this.unsplashApiService = unsplashApiService;
|
|
9
9
|
}
|
|
10
|
-
listUnsplashImages(query, page = 1, perPage = 20, orderBy = "relevent", orientation = "squarish") {
|
|
10
|
+
listUnsplashImages(query, page = 1, perPage = 20, orderBy = "relevent", orientation = "squarish", includeLocalUrl = false) {
|
|
11
11
|
const request = new ListUnsplashImagesRequest({
|
|
12
|
-
query: query, page: page, perPage: perPage, orderBy: orderBy, orientation: orientation,
|
|
12
|
+
query: query, page: page, perPage: perPage, orderBy: orderBy, orientation: orientation, includeLocalUrl: includeLocalUrl
|
|
13
13
|
});
|
|
14
14
|
return this.unsplashApiService.listUnsplashImages(request);
|
|
15
15
|
}
|
|
16
|
+
uploadToStorage(url, agid) {
|
|
17
|
+
const request = new UploadToStorageRequest({
|
|
18
|
+
url: url, agid: agid
|
|
19
|
+
});
|
|
20
|
+
return this.unsplashApiService.uploadToStorage(request);
|
|
21
|
+
}
|
|
16
22
|
}
|
|
17
23
|
UnsplashImageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UnsplashImageService, deps: [{ token: i1.UnsplashApiService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18
24
|
UnsplashImageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UnsplashImageService, providedIn: 'root' });
|
|
@@ -20,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
20
26
|
type: Injectable,
|
|
21
27
|
args: [{ providedIn: 'root' }]
|
|
22
28
|
}], ctorParameters: function () { return [{ type: i1.UnsplashApiService }]; } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zcGxhc2gtaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NvY2lhbF9wb3N0c19zZGsvc3JjL2xpYi91bnNwbGFzaC1pbWFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUE4QixzQkFBc0IsRUFBMkIsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBSXBKLE1BQU0sT0FBTyxvQkFBb0I7SUFDN0IsWUFBb0Isa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFDMUQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWEsRUFBRSxPQUFhLENBQUMsRUFBRSxVQUFnQixFQUFFLEVBQUUsT0FBTyxHQUFDLFVBQVUsRUFBRSxXQUFXLEdBQUMsVUFBVSxFQUFFLGVBQWUsR0FBQyxLQUFLO1FBRW5JLE1BQU0sT0FBTyxHQUFHLElBQUkseUJBQXlCLENBQUM7WUFDMUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUMsV0FBVyxFQUFDLGVBQWUsRUFBRSxlQUFlO1NBQ3hILENBQUMsQ0FBQTtRQUVGLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFHRCxlQUFlLENBQUMsR0FBVyxFQUFFLElBQVk7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQztZQUN2QyxHQUFHLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJO1NBQ3RCLENBQUMsQ0FBQTtRQUVGLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RCxDQUFDOztrSEFwQlEsb0JBQW9CO3NIQUFwQixvQkFBb0IsY0FGUCxNQUFNOzRGQUVuQixvQkFBb0I7a0JBRmhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVuc3BsYXNoQXBpU2VydmljZSB9IGZyb20gJy4vX2ludGVybmFsL3Vuc3BsYXNoLmFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IExpc3RVbnNwbGFzaEltYWdlc1JlcXVlc3QsIExpc3RVbnNwbGFzaEltYWdlc1Jlc3BvbnNlLCBVcGxvYWRUb1N0b3JhZ2VSZXF1ZXN0LCBVcGxvYWRUb1N0b3JhZ2VSZXNwb25zZSB9IGZyb20gJy4vX2ludGVybmFsL29iamVjdHMvYXBpLXYyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcblxuZXhwb3J0IGNsYXNzIFVuc3BsYXNoSW1hZ2VTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVuc3BsYXNoQXBpU2VydmljZTogVW5zcGxhc2hBcGlTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgbGlzdFVuc3BsYXNoSW1hZ2VzKHF1ZXJ5OiBzdHJpbmcsIHBhZ2U6IG51bWJlcj0xLCBwZXJQYWdlOiBudW1iZXI9MjAsIG9yZGVyQnk9XCJyZWxldmVudFwiLCBvcmllbnRhdGlvbj1cInNxdWFyaXNoXCIsIGluY2x1ZGVMb2NhbFVybD1mYWxzZSk6IE9ic2VydmFibGU8TGlzdFVuc3BsYXNoSW1hZ2VzUmVzcG9uc2U+IHtcblxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gbmV3IExpc3RVbnNwbGFzaEltYWdlc1JlcXVlc3Qoe1xuICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LCBwYWdlOiBwYWdlLCBwZXJQYWdlOiBwZXJQYWdlLCBvcmRlckJ5Om9yZGVyQnksIG9yaWVudGF0aW9uOm9yaWVudGF0aW9uLGluY2x1ZGVMb2NhbFVybDogaW5jbHVkZUxvY2FsVXJsXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5zcGxhc2hBcGlTZXJ2aWNlLmxpc3RVbnNwbGFzaEltYWdlcyhyZXF1ZXN0KVxuICAgIH1cblxuXG4gICAgdXBsb2FkVG9TdG9yYWdlKHVybDogc3RyaW5nLCBhZ2lkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBVcGxvYWRUb1N0b3JhZ2VSZXF1ZXN0KHtcbiAgICAgICAgICAgIHVybDp1cmwsIGFnaWQ6IGFnaWRcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gdGhpcy51bnNwbGFzaEFwaVNlcnZpY2UudXBsb2FkVG9TdG9yYWdlKHJlcXVlc3QpO1xuICAgIH1cblxuXG5cbn0iXX0=
|
|
@@ -3596,6 +3596,9 @@ class Photo {
|
|
|
3596
3596
|
if (typeof this.tags !== 'undefined' && this.tags !== null) {
|
|
3597
3597
|
toReturn['tags'] = 'toApiJson' in this.tags ? this.tags.toApiJson() : this.tags;
|
|
3598
3598
|
}
|
|
3599
|
+
if (typeof this.storageUrl !== 'undefined') {
|
|
3600
|
+
toReturn['storageUrl'] = this.storageUrl;
|
|
3601
|
+
}
|
|
3599
3602
|
return toReturn;
|
|
3600
3603
|
}
|
|
3601
3604
|
}
|
|
@@ -4296,6 +4299,9 @@ class ListUnsplashImagesRequest {
|
|
|
4296
4299
|
if (typeof this.random !== 'undefined') {
|
|
4297
4300
|
toReturn['random'] = this.random;
|
|
4298
4301
|
}
|
|
4302
|
+
if (typeof this.includeLocalUrl !== 'undefined') {
|
|
4303
|
+
toReturn['includeLocalUrl'] = this.includeLocalUrl;
|
|
4304
|
+
}
|
|
4299
4305
|
return toReturn;
|
|
4300
4306
|
}
|
|
4301
4307
|
}
|
|
@@ -4673,6 +4679,9 @@ class UploadToStorageRequest {
|
|
|
4673
4679
|
if (typeof this.mediaType !== 'undefined') {
|
|
4674
4680
|
toReturn['mediaType'] = this.mediaType;
|
|
4675
4681
|
}
|
|
4682
|
+
if (typeof this.agid !== 'undefined') {
|
|
4683
|
+
toReturn['agid'] = this.agid;
|
|
4684
|
+
}
|
|
4676
4685
|
return toReturn;
|
|
4677
4686
|
}
|
|
4678
4687
|
}
|
|
@@ -5696,12 +5705,18 @@ class UnsplashImageService {
|
|
|
5696
5705
|
constructor(unsplashApiService) {
|
|
5697
5706
|
this.unsplashApiService = unsplashApiService;
|
|
5698
5707
|
}
|
|
5699
|
-
listUnsplashImages(query, page = 1, perPage = 20, orderBy = "relevent", orientation = "squarish") {
|
|
5708
|
+
listUnsplashImages(query, page = 1, perPage = 20, orderBy = "relevent", orientation = "squarish", includeLocalUrl = false) {
|
|
5700
5709
|
const request = new ListUnsplashImagesRequest({
|
|
5701
|
-
query: query, page: page, perPage: perPage, orderBy: orderBy, orientation: orientation,
|
|
5710
|
+
query: query, page: page, perPage: perPage, orderBy: orderBy, orientation: orientation, includeLocalUrl: includeLocalUrl
|
|
5702
5711
|
});
|
|
5703
5712
|
return this.unsplashApiService.listUnsplashImages(request);
|
|
5704
5713
|
}
|
|
5714
|
+
uploadToStorage(url, agid) {
|
|
5715
|
+
const request = new UploadToStorageRequest({
|
|
5716
|
+
url: url, agid: agid
|
|
5717
|
+
});
|
|
5718
|
+
return this.unsplashApiService.uploadToStorage(request);
|
|
5719
|
+
}
|
|
5705
5720
|
}
|
|
5706
5721
|
UnsplashImageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UnsplashImageService, deps: [{ token: UnsplashApiService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5707
5722
|
UnsplashImageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UnsplashImageService, providedIn: 'root' });
|