@cubist-labs/cubesigner-sdk 0.4.269 → 0.4.272
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +1 -1
- package/dist/src/audit_log.d.ts +3 -3
- package/dist/src/client/api_client.d.ts +40 -3
- package/dist/src/client/api_client.d.ts.map +1 -1
- package/dist/src/client/api_client.js +63 -5
- package/dist/src/client.d.ts +9 -0
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +12 -1
- package/dist/src/key.d.ts +11 -1
- package/dist/src/key.d.ts.map +1 -1
- package/dist/src/key.js +13 -1
- package/dist/src/org.d.ts +11 -1
- package/dist/src/org.d.ts.map +1 -1
- package/dist/src/org.js +16 -3
- package/dist/src/role.d.ts +4 -1
- package/dist/src/role.d.ts.map +1 -1
- package/dist/src/role.js +3 -1
- package/dist/src/schema.d.ts +159 -40
- package/dist/src/schema.d.ts.map +1 -1
- package/dist/src/schema.js +1 -1
- package/dist/src/schema_types.d.ts +4 -0
- package/dist/src/schema_types.d.ts.map +1 -1
- package/dist/src/schema_types.js +2 -1
- package/dist/src/scopes.d.ts.map +1 -1
- package/dist/src/scopes.js +3 -2
- package/package.json +1 -1
- package/src/client/api_client.ts +88 -6
- package/src/client.ts +14 -0
- package/src/key.ts +18 -0
- package/src/org.ts +16 -2
- package/src/role.ts +5 -0
- package/src/schema.ts +160 -34
- package/src/schema_types.ts +5 -0
- package/src/scopes.ts +2 -1
package/dist/src/org.js
CHANGED
|
@@ -350,6 +350,17 @@ export class Org {
|
|
|
350
350
|
get deleteOidcUser() {
|
|
351
351
|
return __classPrivateFieldGet(this, _Org_apiClient, "f").orgUserDeleteOidc.bind(__classPrivateFieldGet(this, _Org_apiClient, "f"));
|
|
352
352
|
}
|
|
353
|
+
/**
|
|
354
|
+
* Initiate an MFA reset for a user in the org. The reset is completed by
|
|
355
|
+
* the user via {@link CubeSignerClient.resetUserMfaComplete}.
|
|
356
|
+
*
|
|
357
|
+
* Same as {@link ApiClient.resetUserMfaInit}, see its documentation for more information.
|
|
358
|
+
*
|
|
359
|
+
* @returns A function that initiates an MFA reset for a user
|
|
360
|
+
*/
|
|
361
|
+
get resetUserMfaInit() {
|
|
362
|
+
return __classPrivateFieldGet(this, _Org_apiClient, "f").resetUserMfaInit.bind(__classPrivateFieldGet(this, _Org_apiClient, "f"));
|
|
363
|
+
}
|
|
353
364
|
/**
|
|
354
365
|
* List all users in the organization.
|
|
355
366
|
*
|
|
@@ -694,11 +705,13 @@ export class Org {
|
|
|
694
705
|
/**
|
|
695
706
|
* List pending MFA requests accessible to the current user.
|
|
696
707
|
*
|
|
708
|
+
* @param page Pagination options. Defaults to fetching the entire result set.
|
|
697
709
|
* @returns The MFA requests.
|
|
698
710
|
*/
|
|
699
|
-
async mfaRequests() {
|
|
711
|
+
async mfaRequests(page) {
|
|
700
712
|
return await __classPrivateFieldGet(this, _Org_apiClient, "f")
|
|
701
|
-
.mfaList()
|
|
713
|
+
.mfaList(page)
|
|
714
|
+
.fetch()
|
|
702
715
|
.then((mfaInfos) => mfaInfos.map((mfaInfo) => new MfaRequest(__classPrivateFieldGet(this, _Org_apiClient, "f"), mfaInfo)));
|
|
703
716
|
}
|
|
704
717
|
/**
|
|
@@ -844,4 +857,4 @@ async function _Org_updateExtProps(update, opts) {
|
|
|
844
857
|
update(data);
|
|
845
858
|
return await this.update({ ext_props: data }, opts?.mfaReceipt);
|
|
846
859
|
};
|
|
847
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFrQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hFLE9BQU8sRUFFTCxXQUFXLEVBRVgsa0JBQWtCLEdBRW5CLE1BQU0sYUFBYSxDQUFDO0FBdUlyQjs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLEdBQUc7SUFNZDs7O09BR0c7SUFDSCxJQUFJLEVBQUU7UUFDSixPQUFPLHVCQUFBLElBQUksa0JBQU8sQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxNQUFNO1FBQ1IsT0FBTyx1QkFBQSxJQUFJLGlCQUFNLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxTQUFvQixFQUFFLEtBQWE7O1FBM0J0QyxpQ0FBc0I7UUFDL0IsNkJBQWM7UUFDZCwwQkFBMEI7UUFDMUIsNEJBQWdCO1FBNjdCaEIsd0RBQXdEO1FBRXhEOzs7Ozs7O1dBT0c7UUFDSCxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFFM0MsNERBQTREO1FBQzVELDhCQUF5QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUVsRDs7Ozs7V0FLRztRQUNILGlDQUE0QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQXo3QnRELHVCQUFBLElBQUksY0FBVSxLQUFLLE1BQUEsQ0FBQztRQUNwQix1QkFBQSxJQUFJLGtCQUFjLEtBQUssS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQUEsQ0FBQztJQUMzRixDQUFDO0lBRUQ7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OlsiaW1wb3J0IHR5cGUge1xuICBLZXlUeXBlLFxuICBLZXlQcm9wZXJ0aWVzLFxuICBOb3RpZmljYXRpb25FbmRwb2ludENvbmZpZ3VyYXRpb24sXG4gIFBhZ2VPcHRzLFxuICBVc2VySW5PcmdJbmZvLFxuICBBcGlDbGllbnQsXG4gIE9yZ0luZm8sXG4gIE1mYUlkLFxuICBJbXBvcnRLZXlSZXF1ZXN0LFxuICBLZXlQb2xpY3ksXG4gIFF1ZXJ5TWV0cmljc1Jlc3BvbnNlLFxuICBPcmdNZXRyaWNOYW1lLFxuICBRdWVyeU1ldHJpY3NSZXF1ZXN0LFxuICBLZXlUeXBlQW5kRGVyaXZhdGlvblBhdGgsXG4gIEpzb25WYWx1ZSxcbiAgRWRpdFBvbGljeSxcbiAgQWRkcmVzc01hcCxcbiAgQ3JlYXRlT3JnUmVxdWVzdCxcbiAgTWVtYmVyUm9sZSxcbiAgUm9sZVBvbGljeSxcbiAgQzJGQ29uZmlndXJhdGlvbixcbiAgTWZhUHJvdGVjdGVkQWN0aW9uLFxuICBNZmFUeXBlLFxuICBQb2xpY3lUeXBlLFxuICBQb2xpY3lBY2wsXG4gIENvbnRhY3RMYWJlbCxcbiAgQ29udGFjdEFkZHJlc3NEYXRhLFxuICBPcmdFeHRQcm9wcyxcbiAgT3JnRXh0RGF0YSxcbiAgQXVkaXRMb2dFbnRyeSxcbiAgQXVkaXRMb2dSZXF1ZXN0LFxuICBNZmFSZWNlaXB0cyxcbn0gZnJvbSBcIi4vaW5kZXgudHNcIjtcbmltcG9ydCB7IENvbnRhY3QgfSBmcm9tIFwiLi9jb250YWN0LnRzXCI7XG5pbXBvcnQgeyBDMkZGdW5jdGlvbiwgS2V5LCBNZmFSZXF1ZXN0LCBSb2xlIH0gZnJvbSBcIi4vaW5kZXgudHNcIjtcbmltcG9ydCB7XG4gIHR5cGUgTmFtZWRLZXlQb2xpY3ksXG4gIE5hbWVkUG9saWN5LFxuICB0eXBlIE5hbWVkUm9sZVBvbGljeSxcbiAgdXBsb2FkV2FzbUZ1bmN0aW9uLFxuICB0eXBlIEMyRkluZm8sXG59IGZyb20gXCIuL3BvbGljeS50c1wiO1xuXG4vKiogT3B0aW9ucyBwYXNlZCB0byBjcmVhdGVLZXkgYW5kIGRlcml2ZUtleSAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlS2V5UHJvcGVydGllcyA9IE9taXQ8S2V5UHJvcGVydGllcywgXCJwb2xpY3lcIj4gJiB7XG4gIC8qKlxuICAgKiBQb2xpY2llcyB0byBhcHBseSB0byB0aGUgbmV3IGtleS5cbiAgICpcbiAgICogVGhpcyB0eXBlIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGFzc2lnbiB2YWx1ZXMgbGlrZVxuICAgKiBgW0FsbG93RWlwMTkxU2lnbmluZ1BvbGljeV1gLCBidXQgcmVtYWlucyBiYWNrd2FyZHNcbiAgICogY29tcGF0aWJsZSB3aXRoIHByaW9yIHZlcnNpb25zIG9mIHRoZSBTREssIGluIHdoaWNoXG4gICAqIHRoaXMgcHJvcGVydHkgaGFkIHR5cGUgYFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbGAuXG4gICAqL1xuICBwb2xpY3k/OiBLZXlQb2xpY3kgfCB1bmtub3duW10gfCBudWxsO1xufTtcblxuLyoqIE9wdGlvbnMgcGFzc2VkIHRvIGltcG9ydEtleSBhbmQgZGVyaXZlS2V5ICovXG5leHBvcnQgdHlwZSBJbXBvcnREZXJpdmVLZXlQcm9wZXJ0aWVzID0gQ3JlYXRlS2V5UHJvcGVydGllcyAmIHtcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgcmV0dXJucyBhICdLZXknIG9iamVjdCBmb3IgYm90aCBuZXcgYW5kIGV4aXN0aW5nIGtleXMuXG4gICAqL1xuICBpZGVtcG90ZW50PzogYm9vbGVhbjtcbn07XG5cbi8qKiBPcHRpb25zIHBhc3NlZCB0byBkZXJpdmVNdWx0aXBsZUtleVR5cGVzICovXG5leHBvcnQgdHlwZSBEZXJpdmVNdWx0aXBsZUtleVR5cGVzUHJvcGVydGllcyA9IEltcG9ydERlcml2ZUtleVByb3BlcnRpZXMgJiB7XG4gIC8qKlxuICAgKiBUaGUgbWF0ZXJpYWxfaWQgb2YgdGhlIG1uZW1vbmljIHVzZWQgdG8gZGVyaXZlIG5ldyBrZXlzLlxuICAgKlxuICAgKiBJZiB0aGlzIGFyZ3VtZW50IGlzIHVuZGVmaW5lZCBvciBudWxsLCBhIG5ldyBtbmVtb25pYyBpcyBmaXJzdCBjcmVhdGVkXG4gICAqIGFuZCBhbnkgb3RoZXIgc3BlY2lmaWVkIHByb3BlcnRpZXMgYXJlIGFwcGxpZWQgdG8gaXQgKGluIGFkZGl0aW9uIHRvXG4gICAqIGJlaW5nIGFwcGxpZWQgdG8gdGhlIHNwZWNpZmllZCBrZXlzKS5cbiAgICpcbiAgICogVGhlIG5ld2x5IGNyZWF0ZWQgbW5lbW9uaWMtaWQgY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBgZGVyaXZhdGlvbl9pbmZvYFxuICAgKiBwcm9wZXJ0eSBvZiB0aGUgYEtleUluZm9gIHZhbHVlIGZvciBhIHJlc3VsdGluZyBrZXkuXG4gICAqL1xuICBtbmVtb25pY19pZD86IHN0cmluZztcbn07XG5cbi8qKiBPcmdhbml6YXRpb24gaWQgKi9cbmV4cG9ydCB0eXBlIE9yZ0lkID0gc3RyaW5nO1xuXG4vKiogT3JnLXdpZGUgcG9saWN5ICovXG5leHBvcnQgdHlwZSBPcmdQb2xpY3kgPVxuICB8IFNvdXJjZUlwQWxsb3dsaXN0UG9saWN5XG4gIHwgT2lkY0F1dGhTb3VyY2VzUG9saWN5XG4gIHwgT3JpZ2luQWxsb3dsaXN0UG9saWN5XG4gIHwgTWF4RGFpbHlVbnN0YWtlUG9saWN5XG4gIHwgV2ViQXV0aG5SZWx5aW5nUGFydGllc1BvbGljeVxuICB8IEV4Y2x1c2l2ZUtleUFjY2Vzc1BvbGljeTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGVuZm9yY2UgZXhjbHVzaXZlIGFjY2VzcyB0byBrZXlzLiAgQ29uY3JldGVseSxcbiAqIC0gaWYgXCJMaW1pdFRvS2V5T3duZXJcIiBpcyBzZXQsIG9ubHkga2V5IG93bmVycyBhcmUgcGVybWl0dGVkIHRvIGFjY2Vzc1xuICogICB0aGVpciBrZXlzIGZvciBzaWduaW5nOiBhIHVzZXIgc2Vzc2lvbiAobm90IGEgcm9sZSBzZXNzaW9uKSBpcyByZXF1aXJlZFxuICogICBmb3Igc2lnbmluZywgYW5kIGFkZGluZyBhIGtleSB0byBhIHJvbGUgaXMgbm90IHBlcm1pdHRlZC5cbiAqIC0gaWYgXCJMaW1pdFRvU2luZ2xlUm9sZVwiIGlzIHNldCwgZWFjaCBrZXkgaXMgcGVybWl0dGVkIHRvIGJlIGluIGF0IG1vc3RcbiAqICAgb25lIHJvbGUsIGFuZCBzaWduaW5nIGlzIG9ubHkgYWxsb3dlZCB3aGVuIGF1dGhlbnRpY2F0aW5nIHVzaW5nIGEgcm9sZSBzZXNzaW9uIHRva2VuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2x1c2l2ZUtleUFjY2Vzc1BvbGljeSB7XG4gIEV4Y2x1c2l2ZUtleUFjY2VzczogXCJMaW1pdFRvS2V5T3duZXJcIiB8IFwiTGltaXRUb1NpbmdsZVJvbGVcIjtcbn1cblxuLyoqXG4gKiBUaGUgc2V0IG9mIHJlbHlpbmcgcGFydGllcyB0byBhbGxvdyBmb3Igd2ViYXV0aG4gcmVnaXN0cmF0aW9uXG4gKiBUaGVzZSBjb3JyZXNwb25kIHRvIGRvbWFpbnMgZnJvbSB3aGljaCBicm93c2VycyBjYW4gc3VjY2Vzc2Z1bGx5IGNyZWF0ZSBjcmVkZW50aWFscy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJBdXRoblJlbHlpbmdQYXJ0aWVzUG9saWN5IHtcbiAgV2ViQXV0aG5SZWx5aW5nUGFydGllczogeyBpZD86IHN0cmluZzsgbmFtZTogc3RyaW5nIH1bXTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBhbiBhbGxvd2xpc3Qgb2YgT0lEQyBJc3N1ZXJzIGFuZCBhdWRpZW5jZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBhdXRoZW50aWNhdGUgaW50byB0aGlzIG9yZy5cbiAqXG4gKiBAZXhhbXBsZSB7XCJPaWRjQXV0aFNvdXJjZXNcIjogeyBcImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbVwiOiBbIFwiMTIzNC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbVwiIF19fVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9pZGNBdXRoU291cmNlc1BvbGljeSB7XG4gIE9pZGNBdXRoU291cmNlczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10gfCBJc3N1ZXJDb25maWc+O1xufVxuXG4vKiogT0lEQyBpc3N1ZXIgY29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJc3N1ZXJDb25maWcge1xuICAvKiogVGhlIHNldCBvZiBhdWRpZW5jZXMgc3VwcG9ydGVkIGZvciB0aGlzIGlzc3VlciAqL1xuICBhdWRzOiBzdHJpbmdbXTtcblxuICAvKiogVGhlIGtpbmRzIG9mIHVzZXIgYWxsb3dlZCB0byBhdXRoZW50aWNhdGUgd2l0aCB0aGlzIGlzc3VlciAqL1xuICB1c2VyczogTWVtYmVyUm9sZVtdO1xuXG4gIC8qKiBPcHRpb25hbCBuaWNrbmFtZSBmb3IgdGhpcyBwcm92aWRlciAqL1xuICBuaWNrbmFtZT86IHN0cmluZztcblxuICAvKiogV2hldGhlciB0byBtYWtlIHRoaXMgaXNzdWVyIHB1YmxpYyAqL1xuICBwdWJsaWM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9ubHkgYWxsb3cgcmVxdWVzdHMgZnJvbSB0aGUgc3BlY2lmaWVkIG9yaWdpbnMuXG4gKlxuICogQGV4YW1wbGUge1wiT3JpZ2luQWxsb3dsaXN0XCI6IFwiKlwifVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yaWdpbkFsbG93bGlzdFBvbGljeSB7XG4gIE9yaWdpbkFsbG93bGlzdDogc3RyaW5nW10gfCBcIipcIjtcbn1cblxuLyoqXG4gKiBSZXN0cmljdCBzaWduaW5nIHRvIHNwZWNpZmljIHNvdXJjZSBJUCBhZGRyZXNzZXMuXG4gKlxuICogQGV4YW1wbGUge1wiU291cmNlSXBBbGxvd2xpc3RcIjogW1wiMTAuMS4yLjMvOFwiLCBcIjE2OS4yNTQuMTcuMS8xNlwiXX1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VJcEFsbG93bGlzdFBvbGljeSB7XG4gIFNvdXJjZUlwQWxsb3dsaXN0OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSZXN0cmljdCB0aGUgbnVtYmVyIG9mIHVuc3Rha2VzIHBlciBkYXkuXG4gKlxuICogQGV4YW1wbGUge1wiTWF4RGFpbHlVbnN0YWtlXCI6IDUgfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1heERhaWx5VW5zdGFrZVBvbGljeSB7XG4gIE1heERhaWx5VW5zdGFrZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEZpbHRlciB0byB1c2Ugd2hlbiBsaXN0aW5nIGtleXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXlGaWx0ZXIge1xuICAvKiogRmlsdGVyIGJ5IGtleSB0eXBlICovXG4gIHR5cGU/OiBLZXlUeXBlO1xuICAvKiogRmlsdGVyIGJ5IGtleSBvd25lciAqL1xuICBvd25lcj86IHN0cmluZztcbiAgLyoqIFNlYXJjaCBieSBrZXkncyBtYXRlcmlhbCBpZCBhbmQgbWV0YWRhdGEgKi9cbiAgc2VhcmNoPzogc3RyaW5nO1xuICAvKiogUGFnaW5hdGlvbiBvcHRpb25zICovXG4gIHBhZ2U/OiBQYWdlT3B0cztcbn1cblxuLyoqXG4gKiBBbiBvcmdhbml6YXRpb24uXG4gKlxuICogRXh0ZW5kcyB7QGxpbmsgQ3ViZVNpZ25lckNsaWVudH0gYW5kIHByb3ZpZGVzIGEgZmV3IG9yZy1zcGVjaWZpYyBtZXRob2RzIG9uIHRvcC5cbiAqL1xuZXhwb3J0IGNsYXNzIE9yZyB7XG4gIHJlYWRvbmx5ICNhcGlDbGllbnQ6IEFwaUNsaWVudDtcbiAgI29yZ0lkOiBPcmdJZDtcbiAgLyoqIFRoZSBvcmcgaW5mb3JtYXRpb24gKi9cbiAgI2RhdGE/OiBPcmdJbmZvO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBUaGUgb3JnIGlkXG4gICAqIEBleGFtcGxlIE9yZyNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICovXG4gIGdldCBpZCgpOiBPcmdJZCB7XG4gICAgcmV0dXJuIHRoaXMuI29yZ0lkO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIFRoZSBjYWNoZWQgcHJvcGVydGllcyBvZiB0aGlzIG9yZy4gVGhlIGNhY2hlZCBwcm9wZXJ0aWVzIHJlZmxlY3QgdGhlXG4gICAqIHN0YXRlIG9mIHRoZSBsYXN0IGZldGNoIG9yIHVwZGF0ZS5cbiAgICovXG4gIGdldCBjYWNoZWQoKTogT3JnSW5mbyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI2RhdGE7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBhcGlDbGllbnQgVGhlIEFQSSBjbGllbnQgdG8gdXNlLlxuICAgKiBAcGFyYW0gb3JnSWQgVGhlIGlkIG9mIHRoZSBvcmdcbiAgICovXG4gIGNvbnN0cnVjdG9yKGFwaUNsaWVudDogQXBpQ2xpZW50LCBvcmdJZDogc3RyaW5nKSB7XG4gICAgdGhpcy4jb3JnSWQgPSBvcmdJZDtcbiAgICB0aGlzLiNhcGlDbGllbnQgPSBvcmdJZCA9PT0gYXBpQ2xpZW50Lm9yZ0lkID8gYXBpQ2xpZW50IDogYXBpQ2xpZW50LndpdGhUYXJnZXRPcmcob3JnSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBvcmdhbml6YXRpb24uIFRoZSBuZXcgb3JnIGlzIGEgY2hpbGQgb2YgdGhlXG4gICAqIGN1cnJlbnQgb3JnIGFuZCBpbmhlcml0cyBpdHMga2V5LWV4cG9ydCBwb2xpY3kuIFRoZSBuZXcgb3JnXG4gICAqIGlzIGNyZWF0ZWQgd2l0aCBvbmUgb3duZXIsIHRoZSBjYWxsZXIgb2YgdGhpcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lT3JSZXF1ZXN0IFRoZSBuYW1lIG9mIHRoZSBuZXcgb3JnIG9yIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBuZXcgb3JnLlxuICAgKiBAcmV0dXJucyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3bHkgY3JlYXRlZCBvcmcuXG4gICAqL1xuICBhc3luYyBjcmVhdGVPcmcobmFtZU9yUmVxdWVzdDogc3RyaW5nIHwgQ3JlYXRlT3JnUmVxdWVzdCk6IFByb21pc2U8T3JnSW5mbz4ge1xuICAgIGNvbnN0IHJlcSA9IHR5cGVvZiBuYW1lT3JSZXF1ZXN0ID09PSBcInN0cmluZ1wiID8geyBuYW1lOiBuYW1lT3JSZXF1ZXN0IH0gOiBuYW1lT3JSZXF1ZXN0O1xuICAgIGlmICghL15bYS16QS1aMC05X117MywzMH0kLy50ZXN0KHJlcS5uYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT3JnIG5hbWUgbXVzdCBiZSBhbHBoYW51bWVyaWMgYW5kIGJldHdlZW4gMyBhbmQgMzAgY2hhcmFjdGVyc1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI2FwaUNsaWVudC5vcmdDcmVhdGVPcmcocmVxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyeSBvcmcgbWV0cmljcy5cbiAgICpcbiAgICogQHBhcmFtIG1ldHJpY05hbWUgVGhlIG1ldHJpYyBuYW1lLlxuICAgKiBAcGFyYW0gc3RhcnRUaW1lIFRoZSBzdGFydCBkYXRlIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC5cbiAgICogQHBhcmFtIG9wdCBPdGhlciBvcHRpb25hbCBhcmd1bWVudHNcbiAgICogQHBhcmFtIG9wdC5lbmRfdGltZSBUaGUgZW5kIGRhdGUgaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoLiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byAnbm93Jy5cbiAgICogQHBhcmFtIG9wdC5wZXJpb2QgVGhlIGdyYW51bGFyaXR5LCBpbiBzZWNvbmRzLCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBwb2ludHMuXG4gICAqICAgVGhpcyB2YWx1ZSBpcyBhdXRvbWF0aWNhbGx5IHJvdW5kZWQgdXAgdG8gYSBtdWx0aXBsZSBvZiAzNjAwIChpLmUuLCAxIGhvdXIpLlxuICAgKiAgIElmIG9taXR0ZWQsIGRlZmF1bHRzIHRvIHRoZSBkdXJhdGlvbiBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgdGhlIGVuZCBkYXRlLlxuICAgKiAgIE11c3QgYmUgbm8gbGVzcyB0aGFuIDEgaG91ciwgaS5lLiwgMzYwMCBzZWNvbmRzLiBBZGRpdGlvbmFsbHksIHRoaXMgcGVyaW9kIG11c3Qgbm90XG4gICAqICAgZGl2aWRlIHRoZSBgZW5kVGltZSAtIHN0YXJ0VGltZWAgcGVyaW9kIGludG8gbW9yZSB0aGFuIDEwMCBkYXRhIHBvaW50cy5cbiAgICogQHBhcmFtIHBhZ2VPcHRzIFBhZ2luYXRpb24gb3B0aW9ucy5cbiAgICogQHJldHVybnMgTWV0cmljIHZhbHVlcyAoZGF0YSBwb2ludHMpIGZvciB0aGUgcmVxdWVzdGVkIHBlcmlvZHMuXG4gICAqL1xuICBhc3luYyBxdWVyeU1ldHJpY3MoXG4gICAgbWV0cmljTmFtZTogT3JnTWV0cmljTmFtZSxcbiAgICBzdGFydFRpbWU6IEVwb2NoVGltZVN0YW1wLFxuICAgIG9wdD86IE9taXQ8UXVlcnlNZXRyaWNzUmVxdWVzdCwgXCJtZXRyaWNfbmFtZVwiIHwgXCJzdGFydF90aW1lXCI+LFxuICAgIHBhZ2VPcHRzPzogUGFnZU9wdHMsXG4gICk6IFByb21pc2U8UXVlcnlNZXRyaWNzUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXE6IFF1ZXJ5TWV0cmljc1JlcXVlc3QgPSB7XG4gICAgICBtZXRyaWNfbmFtZTogbWV0cmljTmFtZSxcbiAgICAgIC4uLm9wdCxcbiAgICAgIHN0YXJ0X3RpbWU6IHN0YXJ0VGltZSxcbiAgICAgIC8vIE11c3Qgc2V0IGVuZF90aW1lIGJlZm9yZSBmZXRjaEFsbDogd2l0aG91dCBpdCB0aGUgYmFja2VuZCBkZWZhdWx0cyB0byBub3coKVxuICAgICAgLy8gb24gZWFjaCBwYWdlIHJlcXVlc3QsIGFuZCBhIGNoYW5naW5nIHdpbmRvdyBpbnZhbGlkYXRlcyB0aGUgcGFnaW5hdGlvbiB0b2tlbi5cbiAgICAgIGVuZF90aW1lOiBvcHQ/LmVuZF90aW1lID8/IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxuICAgIH07XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI2FwaUNsaWVudC5vcmdRdWVyeU1ldHJpY3MocmVxLCBwYWdlT3B0cykuZmV0Y2hBbGwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyeSB0aGUgb3JnIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHBhcmFtIHN0YXJ0VGltZSBUaGUgc3RhcnQgZGF0ZSBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guXG4gICAqIEBwYXJhbSBvcHQgT3RoZXIgb3B0aW9uYWwgYXJndW1lbnRzXG4gICAqIEBwYXJhbSBvcHQuZW5kX3RpbWUgVGhlIGVuZCBkYXRlIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC4gRGVmYXVsdHMgdG8gJ25vdycuXG4gICAqIEBwYXJhbSBvcHQuZXZlbnRzIEZpbHRlciBieSBldmVudCBuYW1lLiBJZiBvbWl0dGVkLCBhbGwgZXZlbnRzIGFyZSBpbmNsdWRlZC5cbiAgICogQHBhcmFtIHBhZ2VPcHRzIFBhZ2luYXRpb24gb3B0aW9ucy4gRGVmYXVsdHMgdG8gZmV0Y2hpbmcgdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgKiBAcmV0dXJucyBNYXRjaGluZyBhdWRpdCBsb2cgZW50cmllcy5cbiAgICovXG4gIGFzeW5jIHF1ZXJ5QXVkaXRMb2coXG4gICAgc3RhcnRUaW1lOiBFcG9jaFRpbWVTdGFtcCxcbiAgICBvcHQ/OiBPbWl0PEF1ZGl0TG9nUmVxdWVzdCwgXCJzdGFydF90aW1lXCI+LFxuICAgIHBhZ2VPcHRzPzogUGFnZU9wdHMsXG4gICk6IFByb21pc2U8QXVkaXRMb2dFbnRyeVtdPiB7XG4gICAgY29uc3QgcmVxOiBBdWRpdExvZ1JlcXVlc3QgPSB7XG4gICAgICAuLi5vcHQsXG4gICAgICBzdGFydF90aW1lOiBzdGFydFRpbWUsXG4gICAgICAvLyBNdXN0IHNldCBlbmRfdGltZSBiZWZvcmUgZmV0Y2hBbGw6IHdpdGhvdXQgaXQgdGhlIGJhY2tlbmQgZGVmYXVsdHMgdG8gbm93KClcbiAgICAgIC8vIG9uIGVhY2ggcGFnZSByZXF1ZXN0LCBhbmQgYSBjaGFuZ2luZyB3aW5kb3cgaW52YWxpZGF0ZXMgdGhlIHBhZ2luYXRpb24gdG9rZW4uXG4gICAgICBlbmRfdGltZTogb3B0Py5lbmRfdGltZSA/PyBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI2FwaUNsaWVudC5vcmdRdWVyeUF1ZGl0TG9nKHJlcSwgcGFnZU9wdHMpLmZldGNoQWxsKCk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggdGhlIG9yZyBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIG9yZyBpbmZvcm1hdGlvbi5cbiAgICovXG4gIGFzeW5jIGZldGNoKCk6IFByb21pc2U8T3JnSW5mbz4ge1xuICAgIHRoaXMuI2RhdGEgPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQub3JnR2V0KCk7XG4gICAgcmV0dXJuIHRoaXMuI2RhdGE7XG4gIH1cblxuICAvKiogQHJldHVybnMgVGhlIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmcgKi9cbiAgYXN5bmMgbmFtZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKCk7XG4gICAgcmV0dXJuIGRhdGEubmFtZSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiogQHJldHVybnMgV2hldGhlciB0aGUgb3JnIGlzIGVuYWJsZWQgKi9cbiAgYXN5bmMgZW5hYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiBkYXRhLmVuYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlIHRoZSBvcmcuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRzIE9wdGlvbmFsIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9wdHMubWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdHNcbiAgICogQHJldHVybnMgT3JnIGluZm9cbiAgICovXG4gIGFzeW5jIGVuYWJsZShvcHRzPzogeyBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMgfSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnVwZGF0ZSh7IGVuYWJsZWQ6IHRydWUgfSwgb3B0cz8ubWZhUmVjZWlwdCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgb3JnLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0cyBPcHRpb25hbCBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBvcHRzLm1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHRzXG4gICAqIEByZXR1cm5zIE9yZyBpbmZvXG4gICAqL1xuICBhc3luYyBkaXNhYmxlKG9wdHM/OiB7IG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyB9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudXBkYXRlKHsgZW5hYmxlZDogZmFsc2UgfSwgb3B0cz8ubWZhUmVjZWlwdCk7XG4gIH1cblxuICAvKiogQHJldHVybnMgdGhlIHBvbGljeSBmb3IgdGhlIG9yZy4gKi9cbiAgYXN5bmMgcG9saWN5KCk6IFByb21pc2U8T3JnUG9saWN5W10+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiAoZGF0YS5wb2xpY3kgPz8gW10pIGFzIHVua25vd24gYXMgT3JnUG9saWN5W107XG4gIH1cblxuICAvKiogQHJldHVybnMgdGhlIHNpZ24gcG9saWN5IGZvciB0aGUgb3JnLiAqL1xuICBhc3luYyBzaWduUG9saWN5KCk6IFByb21pc2U8Um9sZVBvbGljeT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKCk7XG4gICAgcmV0dXJuIChkYXRhLnNpZ25fcG9saWN5ID8/IFtdKSBhcyB1bmtub3duIGFzIFJvbGVQb2xpY3k7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBwb2xpY3kgZm9yIHRoZSBvcmcuXG4gICAqXG4gICAqIEBwYXJhbSBwb2xpY3kgVGhlIG5ldyBwb2xpY3kgZm9yIHRoZSBvcmcuXG4gICAqIEBwYXJhbSBvcHRzIE9wdGlvbmFsIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9wdHMubWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdHNcbiAgICogQHJldHVybnMgT3JnIGluZm9cbiAgICovXG4gIGFzeW5jIHNldFBvbGljeShwb2xpY3k6IE9yZ1BvbGljeVtdLCBvcHRzPzogeyBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMgfSkge1xuICAgIGNvbnN0IHAgPSBwb2xpY3kgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy51cGRhdGUoeyBwb2xpY3k6IHAgfSwgb3B0cz8ubWZhUmVjZWlwdCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBlZGl0IHBvbGljeSBmb3IgdGhlIG9yZy5cbiAgICpcbiAgICogQHBhcmFtIGVkaXRQb2xpY3kgVGhlIG5ldyBlZGl0IHBvbGljeSBmb3IgdGhlIG9yZy5cbiAgICogQHBhcmFtIG9wdHMgT3B0aW9uYWwgcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gb3B0cy5tZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0c1xuICAgKiBAcmV0dXJucyBPcmcgaW5mb1xuICAgKi9cbiAgYXN5bmMgc2V0RWRpdFBvbGljeShlZGl0UG9saWN5OiBFZGl0UG9saWN5LCBvcHRzPzogeyBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMgfSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnVwZGF0ZSh7IGVkaXRfcG9saWN5OiBlZGl0UG9saWN5IH0sIG9wdHM/Lm1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc2lnbiBwb2xpY3kgZm9yIHRoZSBvcmcuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBnbG9iYWwgc2lnbiBwb2xpY3kgdGhhdCBhcHBsaWVzIHRvIGV2ZXJ5IHNpZ24gb3BlcmF0aW9uIChldmVyeSBrZXksIGV2ZXJ5IHJvbGUpIGluIHRoZSBvcmcuXG4gICAqIEl0IGlzIGFuYWxvZ291cyB0byBob3cgcm9sZSBwb2xpY2llcyBhcHBseSB0byBhbGwgc2lnbiByZXF1ZXN0cyBwZXJmb3JtZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgcm9sZSBzZXNzaW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHBvbGljeSBUaGUgbmV3IHBvbGljeSBmb3IgdGhlIG9yZy5cbiAgICogQHBhcmFtIG9wdHMgT3B0aW9uYWwgcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gb3B0cy5tZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0c1xuICAgKiBAcmV0dXJucyBPcmcgaW5mb1xuICAgKi9cbiAgYXN5bmMgc2V0U2lnblBvbGljeShwb2xpY3k6IFJvbGVQb2xpY3ksIG9wdHM/OiB7IG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyB9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudXBkYXRlKHsgc2lnbl9wb2xpY3k6IHBvbGljeSB9LCBvcHRzPy5tZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgb3JnYW5pemF0aW9uJ3MgZXh0ZW5kZWQgcHJvcGVydGllcyAodW5jb21tb24gZmVhdHVyZXMgbm90IHVzZWQgYnkgbW9zdCB1c2VycykuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBleHRlbmRlZCBwcm9wZXJ0aWVzXG4gICAqL1xuICBhc3luYyBnZXRFeHRlbmRlZFByb3BlcnRpZXMoKTogUHJvbWlzZTxPcmdFeHREYXRhIHwgbnVsbD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKCk7XG4gICAgcmV0dXJuIGRhdGEuZXh0X2RhdGEgPyBkYXRhLmV4dF9kYXRhIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIG9yZ2FuaXphdGlvbidzIGV4dGVuZGVkIHByb3BlcnRpZXMgKHVuY29tbW9uIGZlYXR1cmVzIG5vdCB1c2VkIGJ5IG1vc3QgdXNlcnMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIG5ldyBwcm9wZXJ0aWVzLlxuICAgKiBAcGFyYW0gb3B0cyBPcHRpb25hbCBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBvcHRzLm1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHRzXG4gICAqIEByZXR1cm5zIE9yZyBpbmZvXG4gICAqL1xuICBhc3luYyBzZXRFeHRlbmRlZFByb3BlcnRpZXMocHJvcHM6IE9yZ0V4dFByb3BzLCBvcHRzPzogeyBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMgfSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnVwZGF0ZSh7IGV4dF9wcm9wczogcHJvcHMgfSwgb3B0cz8ubWZhUmVjZWlwdCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBwZXItYWxpZW4ga2V5IGNvdW50IHRocmVzaG9sZCwgd2hpY2gsIG9uY2UgZXhjZWVkZWQsIGRpc2FsbG93cyBmdXJ0aGVyIGtleSBjcmVhdGlvbiBieSBhbGllbiB1c2Vycy5cbiAgICpcbiAgICogVGhpcyBzZXR0aW5nIGlzIGNoZWNrZWQgb25seSB3aGVuIGFuIGFsaWVuIHVzZXIgcmVxdWVzdHMgdG8gY3JlYXRlIG9yIGltcG9ydCBhIG5ldyBrZXkuXG4gICAqIEluIG90aGVyIHdvcmRzLCBvcmcgYWRtaW5zIGNhbiBzdGlsbCBhc3NpZ24gdW5saW1pdGVkIG51bWJlciBvZiBrZXlzIHRvIHRoZWlyIGFsaWVuIHVzZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gYWxpZW5LZXlDb3VudFRocmVzaG9sZCBUaGUgbmV3IGtleSBjb3VudCB0aHJlc2hvbGQuXG4gICAqIEBwYXJhbSBvcHRzIE9wdGlvbmFsIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9wdHMubWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdHNcbiAgICogQHJldHVybnMgT3JnIGluZm9cbiAgICovXG4gIGFzeW5jIHNldEFsaWVuS2V5Q291bnRUaHJlc2hvbGQoXG4gICAgYWxpZW5LZXlDb3VudFRocmVzaG9sZDogbnVtYmVyLFxuICAgIG9wdHM/OiB7IG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyB9LFxuICApIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy4jdXBkYXRlRXh0UHJvcHMoKGRhdGEpID0+IHtcbiAgICAgIGRhdGEuYWxpZW5fa2V5X2NvdW50X3RocmVzaG9sZCA9IGFsaWVuS2V5Q291bnRUaHJlc2hvbGQ7XG4gICAgfSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHdoZXRoZXIgdGhlIGFsaWVuIHVzZXJzIHNob3VsZCBiZSBhbGxvd2VkIHRvIHVwZGF0ZSB0aGVpciBvd24ga2V5IHBvbGljaWVzLlxuICAgKlxuICAgKiBAcGFyYW0gYWxpZW5zQ2FuVXBkYXRlS2V5UG9saWN5IFdoZXRoZXIgYWxpZW4gdXNlcnMgc2hvdWxkIGJlIGFsbG93ZWQgdG8gdXBkYXRlIHRoZWlyIG93biBrZXkgcG9saWNpZXMuXG4gICAqIEBwYXJhbSBvcHRzIE9wdGlvbmFsIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9wdHMubWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdHNcbiAgICogQHJldHVybnMgT3JnIGluZm9cbiAgICovXG4gIGFzeW5jIHNldEFsaWVuc0NhblVwZGF0ZUtleVBvbGljeShcbiAgICBhbGllbnNDYW5VcGRhdGVLZXlQb2xpY3k6IGJvb2xlYW4sXG4gICAgb3B0cz86IHsgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzIH0sXG4gICkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLiN1cGRhdGVFeHRQcm9wcygoZGF0YSkgPT4ge1xuICAgICAgZGF0YS5hbGllbnNfY2FuX3VwZGF0ZV9rZXlfcG9saWN5ID0gYWxpZW5zQ2FuVXBkYXRlS2V5UG9saWN5O1xuICAgIH0sIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzZWxlY3QgZXh0ZW5kZWQgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHVwZGF0ZSBUaGUgdXBkYXRlIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSBvcHRzIE9wdGlvbmFsIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9wdHMubWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdHNcbiAgICogQHJldHVybnMgT3JnIGluZm9cbiAgICovXG4gIGFzeW5jICN1cGRhdGVFeHRQcm9wcyh1cGRhdGU6IChkYXRhOiBPcmdFeHRQcm9wcykgPT4gdm9pZCwgb3B0cz86IHsgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzIH0pIHtcbiAgICBjb25zdCBkYXRhID0geyAuLi4oKGF3YWl0IHRoaXMuZ2V0RXh0ZW5kZWRQcm9wZXJ0aWVzKCkpID8/IHt9KSB9O1xuXG4gICAgLy8gZXJhc2UgdGhlIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHVwZGF0ZWRcbiAgICBkYXRhLmNyZWF0ZWQgPSB1bmRlZmluZWQ7XG4gICAgZGF0YS5sYXN0X21vZGlmaWVkID0gdW5kZWZpbmVkO1xuXG4gICAgLy8gZXhlY3V0ZSBjbGllbnQtc3VwcGxpZWQgdXBkYXRlIGZ1bmN0aW9uXG4gICAgdXBkYXRlKGRhdGEpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudXBkYXRlKHsgZXh0X3Byb3BzOiBkYXRhIH0sIG9wdHM/Lm1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbm90aWZpY2F0aW9uIGVuZHBvaW50cyBmb3IgdGhlIG9yZy5cbiAgICpcbiAgICogQHBhcmFtIG5vdGlmaWNhdGlvbl9lbmRwb2ludHMgRW5kcG9pbnRzLlxuICAgKiBAcGFyYW0gb3B0cyBPcHRpb25hbCBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBvcHRzLm1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHRzXG4gICAqIEByZXR1cm5zIE9yZyBpbmZvXG4gICAqL1xuICBhc3luYyBzZXROb3RpZmljYXRpb25FbmRwb2ludHMoXG4gICAgbm90aWZpY2F0aW9uX2VuZHBvaW50czogTm90aWZpY2F0aW9uRW5kcG9pbnRDb25maWd1cmF0aW9uW10sXG4gICAgb3B0cz86IHsgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzIH0sXG4gICkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnVwZGF0ZSh7IG5vdGlmaWNhdGlvbl9lbmRwb2ludHMgfSwgb3B0cz8ubWZhUmVjZWlwdCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHJlcXVpcmVkIE1GQSB0eXBlcyBmb3IgYWN0aW9ucyBpbXBsaWNpdGx5IHJlcXVpcmluZyBNRkEgKHNlZSB7QGxpbmsgTWZhUHJvdGVjdGVkQWN0aW9ufSkuXG4gICAqXG4gICAqIEBwYXJhbSBhbGxvd2VkX21mYV90eXBlcyBBc3NpZ25tZW50IG9mIE1GQSB0eXBlcyB0byBhY3Rpb25zIHRoYXQgaW1wbGljaXRseSByZXF1aXJlIE1GQS5cbiAgICogQHBhcmFtIG9wdHMgT3B0aW9uYWwgcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gb3B0cy5tZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0c1xuICAgKiBAcmV0dXJucyBPcmcgaW5mb1xuICAgKi9cbiAgYXN5bmMgc2V0QWxsb3dlZE1mYVR5cGVzKFxuICAgIGFsbG93ZWRfbWZhX3R5cGVzOiBQYXJ0aWFsPFJlY29yZDxNZmFQcm90ZWN0ZWRBY3Rpb24sIE1mYVR5cGVbXT4+LFxuICAgIG9wdHM/OiB7IG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyB9LFxuICApIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy51cGRhdGUoeyBhbGxvd2VkX21mYV90eXBlcyB9LCBvcHRzPy5tZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgc2lnbmluZyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIGtleSB0byBjcmVhdGUuXG4gICAqIEBwYXJhbSBvd25lcklkIFRoZSBvd25lciBvZiB0aGUga2V5LiBEZWZhdWx0cyB0byB0aGUgc2Vzc2lvbidzIHVzZXIuXG4gICAqIEBwYXJhbSBwcm9wcyBBZGRpdGlvbmFsIHByb3BlcnRpZXMgdG8gc2V0IG9uIHRoZSBuZXcga2V5LlxuICAgKiBAcmV0dXJucyBUaGUgbmV3IGtleXMuXG4gICAqL1xuICBhc3luYyBjcmVhdGVLZXkodHlwZTogS2V5VHlwZSwgb3duZXJJZD86IHN0cmluZywgcHJvcHM/OiBDcmVhdGVLZXlQcm9wZXJ0aWVzKTogUHJvbWlzZTxLZXk+IHtcbiAgICBjb25zdCBrZXlzID0gYXdhaXQgdGhpcy4jYXBpQ2xpZW50LmtleXNDcmVhdGUodHlwZSwgMSwgb3duZXJJZCwgcHJvcHMpO1xuICAgIHJldHVybiBuZXcgS2V5KHRoaXMuI2FwaUNsaWVudCwga2V5c1swXSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIG5ldyBzaWduaW5nIGtleXMuXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIGtleSB0byBjcmVhdGUuXG4gICAqIEBwYXJhbSBjb3VudCBUaGUgbnVtYmVyIG9mIGtleXMgdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0gb3duZXJJZCBUaGUgb3duZXIgb2YgdGhlIGtleXMuIERlZmF1bHRzIHRvIHRoZSBzZXNzaW9uJ3MgdXNlci5cbiAgICogQHBhcmFtIHByb3BzIEFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBzZXQgb24gdGhlIG5ldyBrZXlzLlxuICAgKiBAcmV0dXJucyBUaGUgbmV3IGtleXMuXG4gICAqL1xuICBhc3luYyBjcmVhdGVLZXlzKFxuICAgIHR5cGU6IEtleVR5cGUsXG4gICAgY291bnQ6IG51bWJlcixcbiAgICBvd25lcklkPzogc3RyaW5nLFxuICAgIHByb3BzPzogQ3JlYXRlS2V5UHJvcGVydGllcyxcbiAgKTogUHJvbWlzZTxLZXlbXT4ge1xuICAgIGNvbnN0IGtleXMgPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQua2V5c0NyZWF0ZSh0eXBlLCBjb3VudCwgb3duZXJJZCwgcHJvcHMpO1xuICAgIHJldHVybiBrZXlzLm1hcCgoaykgPT4gbmV3IEtleSh0aGlzLiNhcGlDbGllbnQsIGspKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgKGZpcnN0LXBhcnR5KSB1c2VyIGluIHRoZSBvcmdhbml6YXRpb24gYW5kIHNlbmRzIGFuIGludml0YXRpb24gdG8gdGhhdCB1c2VyLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQub3JnVXNlckludml0ZX0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IGludml0ZXMgYSB1c2VyXG4gICAqL1xuICBnZXQgY3JlYXRlVXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50Lm9yZ1VzZXJJbnZpdGUuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQub3JnVXNlckRlbGV0ZX0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IGRlbGV0ZXMgYSB1c2VyXG4gICAqL1xuICBnZXQgZGVsZXRlVXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50Lm9yZ1VzZXJEZWxldGUuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBPSURDIHVzZXIuIFRoaXMgY2FuIGJlIGEgZmlyc3QtcGFydHkgXCJNZW1iZXJcIiBvciB0aGlyZC1wYXJ0eSBcIkFsaWVuXCIuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIEFwaUNsaWVudC5vcmdVc2VyQ3JlYXRlT2lkY30sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYW4gT0lEQyB1c2VyLCByZXNvbHZpbmcgdG8gdGhlIG5ldyB1c2VyJ3MgSURcbiAgICovXG4gIGdldCBjcmVhdGVPaWRjVXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50Lm9yZ1VzZXJDcmVhdGVPaWRjLmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYW4gZXhpc3RpbmcgT0lEQyB1c2VyLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQub3JnVXNlckRlbGV0ZU9pZGN9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCBkZWxldGVzIGFuIE9JREMgdXNlclxuICAgKi9cbiAgZ2V0IGRlbGV0ZU9pZGNVc2VyKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQub3JnVXNlckRlbGV0ZU9pZGMuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYWxsIHVzZXJzIGluIHRoZSBvcmdhbml6YXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBzZWFyY2hRdWVyeSBPcHRpb25hbCBxdWVyeSBzdHJpbmcuIElmIGRlZmluZWQsIGFsbCByZXR1cm5lZCB1c2VycyB3aWxsIGNvbnRhaW4gdGhpcyBzdHJpbmcgaW4gdGhlaXIgbmFtZSBvciBlbWFpbC5cbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgdXNlcnNcbiAgICovXG4gIGFzeW5jIHVzZXJzKHNlYXJjaFF1ZXJ5Pzogc3RyaW5nKTogUHJvbWlzZTxVc2VySW5PcmdJbmZvW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy4jYXBpQ2xpZW50Lm9yZ1VzZXJzTGlzdCh1bmRlZmluZWQsIHNlYXJjaFF1ZXJ5KS5mZXRjaEFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgdXNlcnMgaW4gdGhlIG9yZ2FuaXphdGlvbiAocGFnaW5hdGVkKS5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50Lm9yZ1VzZXJzTGlzdH0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwYWdpbmF0ZWQgbGlzdCBvZiB1c2Vyc1xuICAgKi9cbiAgZ2V0IHVzZXJzUGFnaW5hdGVkKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQub3JnVXNlcnNMaXN0LmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdXNlciBieSBpZC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50Lm9yZ1VzZXJHZXR9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0byBhIHVzZXIncyBpbmZvXG4gICAqL1xuICBnZXQgZ2V0VXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50Lm9yZ1VzZXJHZXQuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB1c2VyIGJ5IGVtYWlsLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQub3JnVXNlckdldEJ5RW1haWx9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0byBhIHVzZXIncyBpbmZvXG4gICAqL1xuICBnZXQgZ2V0VXNlckJ5RW1haWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FwaUNsaWVudC5vcmdVc2VyR2V0QnlFbWFpbC5iaW5kKHRoaXMuI2FwaUNsaWVudCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHVzZXIgYnkgT0lEQyBJRC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50Lm9yZ1VzZXJHZXRCeU9pZGN9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0byBhIHVzZXIncyBpbmZvXG4gICAqL1xuICBnZXQgZ2V0VXNlckJ5T2lkYygpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50Lm9yZ1VzZXJHZXRCeU9pZGMuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBhIHVzZXIgaW4gdGhpcyBvcmdcbiAgICpcbiAgICogQHBhcmFtIHVzZXJJZCBUaGUgdXNlciB3aG9zZSBtZW1iZXJzaGlwIHRvIGVuYWJsZVxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCB1c2VyJ3MgbWVtYmVyc2hpcFxuICAgKi9cbiAgYXN5bmMgZW5hYmxlVXNlcih1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8VXNlckluT3JnSW5mbz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLiNhcGlDbGllbnQub3JnVXBkYXRlVXNlck1lbWJlcnNoaXAodXNlcklkLCB7IGRpc2FibGVkOiBmYWxzZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIGEgdXNlciBpbiB0aGlzIG9yZ1xuICAgKlxuICAgKiBAcGFyYW0gdXNlcklkIFRoZSB1c2VyIHdob3NlIG1lbWJlcnNoaXAgdG8gZGlzYWJsZVxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCB1c2VyJ3MgbWVtYmVyc2hpcFxuICAgKi9cbiAgYXN5bmMgZGlzYWJsZVVzZXIodXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPFVzZXJJbk9yZ0luZm8+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy4jYXBpQ2xpZW50Lm9yZ1VwZGF0ZVVzZXJNZW1iZXJzaGlwKHVzZXJJZCwgeyBkaXNhYmxlZDogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGFjY2Vzc2libGUga2V5cyBpbiB0aGUgb3JnYW5pemF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBPcHRpb25hbCBmaWx0ZXJpbmcgcHJvcGVydGllcy5cbiAgICogQHJldHVybnMgVGhlIGtleXMuXG4gICAqL1xuICBhc3luYyBrZXlzKHByb3BzPzogS2V5RmlsdGVyKTogUHJvbWlzZTxLZXlbXT4ge1xuICAgIGNvbnN0IHBhZ2luYXRvciA9IHRoaXMuI2FwaUNsaWVudC5rZXlzTGlzdChcbiAgICAgIHByb3BzPy50eXBlLFxuICAgICAgcHJvcHM/LnBhZ2UsXG4gICAgICBwcm9wcz8ub3duZXIsXG4gICAgICBwcm9wcz8uc2VhcmNoLFxuICAgICk7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IHBhZ2luYXRvci5mZXRjaCgpO1xuICAgIHJldHVybiBrZXlzLm1hcCgoaykgPT4gbmV3IEtleSh0aGlzLiNhcGlDbGllbnQsIGspKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHJvbGUuXG4gICAqIEByZXR1cm5zIFRoZSBuZXcgcm9sZS5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZVJvbGUobmFtZT86IHN0cmluZyk6IFByb21pc2U8Um9sZT4ge1xuICAgIGNvbnN0IHJvbGVJZCA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5yb2xlQ3JlYXRlKG5hbWUpO1xuICAgIGNvbnN0IHJvbGVJbmZvID0gYXdhaXQgdGhpcy4jYXBpQ2xpZW50LnJvbGVHZXQocm9sZUlkKTtcbiAgICByZXR1cm4gbmV3IFJvbGUodGhpcy4jYXBpQ2xpZW50LCByb2xlSW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgcm9sZSBieSBpZCBvciBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gcm9sZUlkIFRoZSBpZCBvciBuYW1lIG9mIHRoZSByb2xlIHRvIGdldC5cbiAgICogQHJldHVybnMgVGhlIHJvbGUuXG4gICAqL1xuICBhc3luYyBnZXRSb2xlKHJvbGVJZDogc3RyaW5nKTogUHJvbWlzZTxSb2xlPiB7XG4gICAgY29uc3Qgcm9sZUluZm8gPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQucm9sZUdldChyb2xlSWQpO1xuICAgIHJldHVybiBuZXcgUm9sZSh0aGlzLiNhcGlDbGllbnQsIHJvbGVJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCB0aGUgcm9sZXMgaW4gdGhlIG9yZ1xuICAgKlxuICAgKiBAcGFyYW0gcGFnZSBUaGUgcGFnaW5hdG9yIG9wdGlvbnNcbiAgICogQHJldHVybnMgVGhlIHJvbGVzXG4gICAqL1xuICBhc3luYyByb2xlcyhwYWdlOiBQYWdlT3B0cyk6IFByb21pc2U8Um9sZVtdPiB7XG4gICAgY29uc3Qgcm9sZXMgPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQucm9sZXNMaXN0KHBhZ2UpLmZldGNoKCk7XG4gICAgcmV0dXJuIHJvbGVzLm1hcCgocikgPT4gbmV3IFJvbGUodGhpcy4jYXBpQ2xpZW50LCByKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IG5hbWVkIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHBvbGljeS5cbiAgICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgdGhlIHBvbGljeS5cbiAgICogQHBhcmFtIHJ1bGVzIFRoZSBwb2xpY3kgcnVsZXMuXG4gICAqIEBwYXJhbSBhY2wgT3B0aW9uYWwgbGlzdCBvZiBwb2xpY3kgYWNjZXNzIGNvbnRyb2wgZW50cmllcy5cbiAgICogQHJldHVybnMgVGhlIG5ldyBwb2xpY3kuXG4gICAqL1xuICBhc3luYyBjcmVhdGVQb2xpY3k8VHlwZSBleHRlbmRzIFwiS2V5XCIgfCBcIlJvbGVcIj4oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHR5cGU6IFR5cGUsXG4gICAgcnVsZXM6IFR5cGUgZXh0ZW5kcyBcIktleVwiID8gS2V5UG9saWN5IDogUm9sZVBvbGljeSxcbiAgICBhY2w/OiBQb2xpY3lBY2wsXG4gICk6IFByb21pc2U8VHlwZSBleHRlbmRzIFwiS2V5XCIgPyBOYW1lZEtleVBvbGljeSA6IE5hbWVkUm9sZVBvbGljeT4ge1xuICAgIGNvbnN0IHBvbGljeUluZm8gPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQucG9saWN5Q3JlYXRlKG5hbWUsIHR5cGUsIHJ1bGVzLCBhY2wpO1xuICAgIGNvbnN0IHBvbGljeSA9IE5hbWVkUG9saWN5LmZyb21JbmZvKHRoaXMuI2FwaUNsaWVudCwgcG9saWN5SW5mbyk7XG4gICAgcmV0dXJuIHBvbGljeSBhcyBUeXBlIGV4dGVuZHMgXCJLZXlcIiA/IE5hbWVkS2V5UG9saWN5IDogTmFtZWRSb2xlUG9saWN5O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIG5hbWVkIHBvbGljeSBieSBpZCBvciBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gcG9saWN5SWQgVGhlIGlkIG9yIG5hbWUgb2YgdGhlIHBvbGljeSB0byBnZXQuXG4gICAqIEByZXR1cm5zIFRoZSBwb2xpY3kuXG4gICAqL1xuICBhc3luYyBnZXRQb2xpY3kocG9saWN5SWQ6IHN0cmluZyk6IFByb21pc2U8TmFtZWRQb2xpY3k+IHtcbiAgICBjb25zdCBwb2xpY3lJbmZvID0gYXdhaXQgdGhpcy4jYXBpQ2xpZW50LnBvbGljeUdldChwb2xpY3lJZCwgXCJsYXRlc3RcIik7XG4gICAgcmV0dXJuIE5hbWVkUG9saWN5LmZyb21JbmZvKHRoaXMuI2FwaUNsaWVudCwgcG9saWN5SW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgQ29uZmlkZW50aWFsIENsb3VkIEZ1bmN0aW9uIGJ5IG5hbWUgb3IgbmFtZWQgcG9saWN5IElELlxuICAgKlxuICAgKiBAcGFyYW0gZnVuY3Rpb25JZCBUaGUgbmFtZSBvciBuYW1lZCBwb2xpY3kgSUQgb2YgdGhlIGZ1bmN0aW9uIHRvIGdldC5cbiAgICogQHJldHVybnMgVGhlIEMyRiBmdW5jdGlvbi5cbiAgICogQHRocm93cyBpZiBuYW1lIG9yIElEIGlzIG5vdCBhc3NvY2lhdGVkIHRvIGEgQzJGIGZ1bmN0aW9uIChpLmUuIHRoZSBuYW1lL2lkIGlzIGZvciBhIGtleSBvciByb2xlIG5hbWVkIHBvbGljeSlcbiAgICovXG4gIGFzeW5jIGdldEZ1bmN0aW9uKGZ1bmN0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8QzJGRnVuY3Rpb24+IHtcbiAgICBjb25zdCBmdW5jdGlvbkluZm8gPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQucG9saWN5R2V0KGZ1bmN0aW9uSWQsIFwibGF0ZXN0XCIpO1xuICAgIGlmIChmdW5jdGlvbkluZm8ucG9saWN5X3R5cGUgIT09IFwiV2FzbVwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGAke2Z1bmN0aW9uSWR9IGlzIG5vdCBhIFdhc20gZnVuY3Rpb24sIGl0IGlzIGEgJHtmdW5jdGlvbkluZm8ucG9saWN5X3R5cGV9IG5hbWVkIHBvbGljeWAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEMyRkZ1bmN0aW9uKHRoaXMuI2FwaUNsaWVudCwgZnVuY3Rpb25JbmZvIGFzIEMyRkluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIHRoZSBuYW1lZCBwb2xpY2llcyBpbiB0aGUgb3JnLlxuICAgKlxuICAgKiBAcGFyYW0gcGFnZSBQYWdpbmF0aW9uIG9wdGlvbnMuIERlZmF1bHRzIHRvIGZldGNoaW5nIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICogQHBhcmFtIHBvbGljeVR5cGUgVGhlIG9wdGlvbmFsIHR5cGUgb2YgcG9saWNpZXMgdG8gZmV0Y2guIERlZmF1bHRzIHRvIGZldGNoaW5nIGFsbCBuYW1lZCBwb2xpY2llcyByZWdhcmRsZXNzIG9mIHR5cGUuXG4gICAqIEByZXR1cm5zIFRoZSBwb2xpY2llcy5cbiAgICovXG4gIGFzeW5jIHBvbGljaWVzKHBhZ2U/OiBQYWdlT3B0cywgcG9saWN5VHlwZT86IFBvbGljeVR5cGUpOiBQcm9taXNlPE5hbWVkUG9saWN5W10+IHtcbiAgICBjb25zdCBwb2xpY2llcyA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5wb2xpY2llc0xpc3QocGFnZSwgcG9saWN5VHlwZSkuZmV0Y2goKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwKSA9PiBOYW1lZFBvbGljeS5mcm9tSW5mbyh0aGlzLiNhcGlDbGllbnQsIHApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCB0aGUgQzJGIGZ1bmN0aW9ucyBpbiB0aGUgb3JnLlxuICAgKlxuICAgKiBAcGFyYW0gcGFnZSBUaGUgcGFnaW5hdG9yIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIFRoZSBDMkYgZnVuY3Rpb25zLlxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb25zKHBhZ2U/OiBQYWdlT3B0cyk6IFByb21pc2U8QzJGRnVuY3Rpb25bXT4ge1xuICAgIGNvbnN0IHBvbGljaWVzID0gYXdhaXQgdGhpcy4jYXBpQ2xpZW50LnBvbGljaWVzTGlzdChwYWdlLCBcIldhc21cIikuZmV0Y2goKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChkYXRhKSA9PiBuZXcgQzJGRnVuY3Rpb24odGhpcy4jYXBpQ2xpZW50LCBkYXRhIGFzIEMyRkluZm8pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgQ29uZmlkZW50aWFsIENsb3VkIEZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBwb2xpY3kgVGhlIFdhc20gZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBhY2wgT3B0aW9uYWwgbGlzdCBvZiBwb2xpY3kgYWNjZXNzIGNvbnRyb2wgZW50cmllcy5cbiAgICogQHJldHVybnMgVGhlIEMyRiBmdW5jdGlvblxuICAgKi9cbiAgYXN5bmMgY3JlYXRlV2FzbUZ1bmN0aW9uKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBwb2xpY3k6IFVpbnQ4QXJyYXksXG4gICAgYWNsPzogUG9saWN5QWNsLFxuICApOiBQcm9taXNlPEMyRkZ1bmN0aW9uPiB7XG4gICAgY29uc3QgaGFzaCA9IGF3YWl0IHVwbG9hZFdhc21GdW5jdGlvbih0aGlzLiNhcGlDbGllbnQsIHBvbGljeSk7XG4gICAgY29uc3QgcG9saWN5SW5mbyA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5wb2xpY3lDcmVhdGUoXG4gICAgICBuYW1lLFxuICAgICAgXCJXYXNtXCIsXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBoYXNoLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjbCxcbiAgICApO1xuICAgIHJldHVybiBuZXcgQzJGRnVuY3Rpb24odGhpcy4jYXBpQ2xpZW50LCBwb2xpY3lJbmZvIGFzIEMyRkluZm8pO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHRoZSBDb25maWRlbnRpYWwgQ2xvdWQgRnVuY3Rpb25zIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBvcmcuICovXG4gIGFzeW5jIGMyZkNvbmZpZ3VyYXRpb24oKTogUHJvbWlzZTxDMkZDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goKTtcbiAgICByZXR1cm4gZGF0YS5wb2xpY3lfZW5naW5lX2NvbmZpZ3VyYXRpb247XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBDb25maWRlbnRpYWwgQ2xvdWQgRnVuY3Rpb25zIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBvcmcuXG4gICAqIE5vdGUgdGhhdCB0aGlzIG92ZXJ3cml0ZXMgYW55IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdzIENvbmZpZGVudGlhbCBDbG91ZCBGdW5jdGlvbnMgY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIG9wdHMgT3B0aW9uYWwgcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gb3B0cy5tZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0c1xuICAgKiBAcmV0dXJucyBPcmcgaW5mb1xuICAgKi9cbiAgYXN5bmMgc2V0QzJGQ29uZmlndXJhdGlvbihjb25maWdzOiBDMkZDb25maWd1cmF0aW9uLCBvcHRzPzogeyBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMgfSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnVwZGF0ZShcbiAgICAgIHtcbiAgICAgICAgcG9saWN5X2VuZ2luZV9jb25maWd1cmF0aW9uOiBjb25maWdzLFxuICAgICAgfSxcbiAgICAgIG9wdHM/Lm1mYVJlY2VpcHQsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXJpdmUgYSBrZXkgb2YgdGhlIGdpdmVuIHR5cGUgdXNpbmcgdGhlIGdpdmVuIGRlcml2YXRpb24gcGF0aCBhbmQgbW5lbW9uaWMuXG4gICAqIFRoZSBvd25lciBvZiB0aGUgZGVyaXZlZCBrZXkgd2lsbCBiZSB0aGUgb3duZXIgb2YgdGhlIG1uZW1vbmljLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIGtleSB0byBkZXJpdmUgZnJvbSB0aGUgbW5lbW9uaWMuXG4gICAqIEBwYXJhbSBkZXJpdmF0aW9uUGF0aCBNbmVtb25pYyBkZXJpdmF0aW9uIHBhdGggdXNlZCB0byBnZW5lcmF0ZSBuZXcga2V5LlxuICAgKiBAcGFyYW0gbW5lbW9uaWNJZCBtYXRlcmlhbF9pZCBvZiBtbmVtb25pYyBrZXkgdXNlZCB0byBkZXJpdmUgdGhlIG5ldyBrZXkuXG4gICAqIEBwYXJhbSBwcm9wcyBBZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIGRlcml2YXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIG5ld2x5IGRlcml2ZWQga2V5IG9yIHVuZGVmaW5lZCBpZiBpdCBhbHJlYWR5IGV4aXN0cy5cbiAgICovXG4gIGFzeW5jIGRlcml2ZUtleShcbiAgICB0eXBlOiBLZXlUeXBlLFxuICAgIGRlcml2YXRpb25QYXRoOiBzdHJpbmcsXG4gICAgbW5lbW9uaWNJZDogc3RyaW5nLFxuICAgIHByb3BzPzogSW1wb3J0RGVyaXZlS2V5UHJvcGVydGllcyxcbiAgKTogUHJvbWlzZTxLZXkgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuZGVyaXZlS2V5cyh0eXBlLCBbZGVyaXZhdGlvblBhdGhdLCBtbmVtb25pY0lkLCBwcm9wcykpWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcml2ZSBhIHNldCBvZiBrZXlzIG9mIHRoZSBnaXZlbiB0eXBlIHVzaW5nIHRoZSBnaXZlbiBkZXJpdmF0aW9uIHBhdGhzIGFuZCBtbmVtb25pYy5cbiAgICpcbiAgICogVGhlIG93bmVyIG9mIHRoZSBkZXJpdmVkIGtleXMgd2lsbCBiZSB0aGUgb3duZXIgb2YgdGhlIG1uZW1vbmljLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIGtleSB0byBkZXJpdmUgZnJvbSB0aGUgbW5lbW9uaWMuXG4gICAqIEBwYXJhbSBkZXJpdmF0aW9uUGF0aHMgTW5lbW9uaWMgZGVyaXZhdGlvbiBwYXRocyB1c2VkIHRvIGdlbmVyYXRlIG5ldyBrZXkuXG4gICAqIEBwYXJhbSBtbmVtb25pY0lkIG1hdGVyaWFsX2lkIG9mIG1uZW1vbmljIGtleSB1c2VkIHRvIGRlcml2ZSB0aGUgbmV3IGtleS5cbiAgICogQHBhcmFtIHByb3BzIEFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgZGVyaXZhdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgbmV3bHkgZGVyaXZlZCBrZXlzLlxuICAgKi9cbiAgYXN5bmMgZGVyaXZlS2V5cyhcbiAgICB0eXBlOiBLZXlUeXBlLFxuICAgIGRlcml2YXRpb25QYXRoczogc3RyaW5nW10sXG4gICAgbW5lbW9uaWNJZDogc3RyaW5nLFxuICAgIHByb3BzPzogSW1wb3J0RGVyaXZlS2V5UHJvcGVydGllcyxcbiAgKTogUHJvbWlzZTxLZXlbXT4ge1xuICAgIGNvbnN0IGtleXMgPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQua2V5c0Rlcml2ZSh0eXBlLCBkZXJpdmF0aW9uUGF0aHMsIG1uZW1vbmljSWQsIHByb3BzKTtcbiAgICByZXR1cm4ga2V5cy5tYXAoKGspID0+IG5ldyBLZXkodGhpcy4jYXBpQ2xpZW50LCBrKSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIGVpdGhlciBhIG5ldyBvciBleGlzdGluZyBtbmVtb25pYyB0byBkZXJpdmUga2V5cyBvZiBvbmUgb3IgbW9yZVxuICAgKiBzcGVjaWZpZWQgdHlwZXMgdmlhIHNwZWNpZmllZCBkZXJpdmF0aW9uIHBhdGhzLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5VHlwZXNBbmREZXJpdmF0aW9uUGF0aHMgQSBsaXN0IG9mIGBLZXlUeXBlQW5kRGVyaXZhdGlvblBhdGhgIG9iamVjdHMgc3BlY2lmeWluZyB0aGUga2V5cyB0byBiZSBkZXJpdmVkXG4gICAqIEBwYXJhbSBwcm9wcyBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGRlcml2YXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBuZXdseSBkZXJpdmVkIGtleXMuXG4gICAqL1xuICBhc3luYyBkZXJpdmVNdWx0aXBsZUtleVR5cGVzKFxuICAgIGtleVR5cGVzQW5kRGVyaXZhdGlvblBhdGhzOiBLZXlUeXBlQW5kRGVyaXZhdGlvblBhdGhbXSxcbiAgICBwcm9wcz86IERlcml2ZU11bHRpcGxlS2V5VHlwZXNQcm9wZXJ0aWVzLFxuICApOiBQcm9taXNlPEtleVtdPiB7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5rZXlzRGVyaXZlTXVsdGkoa2V5VHlwZXNBbmREZXJpdmF0aW9uUGF0aHMsIHByb3BzKTtcbiAgICByZXR1cm4ga2V5cy5tYXAoKGspID0+IG5ldyBLZXkodGhpcy4jYXBpQ2xpZW50LCBrKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEga2V5IGJ5IGlkLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5SWQgVGhlIGlkIG9mIHRoZSBrZXkgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBUaGUga2V5LlxuICAgKi9cbiAgYXN5bmMgZ2V0S2V5KGtleUlkOiBzdHJpbmcpOiBQcm9taXNlPEtleT4ge1xuICAgIGNvbnN0IGtleUluZm8gPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQua2V5R2V0KGtleUlkKTtcbiAgICByZXR1cm4gbmV3IEtleSh0aGlzLiNhcGlDbGllbnQsIGtleUluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGtleSBieSBpdHMgbWF0ZXJpYWwgaWQgKGUuZy4sIGFkZHJlc3MpLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5VHlwZSBUaGUga2V5IHR5cGUuXG4gICAqIEBwYXJhbSBtYXRlcmlhbElkIFRoZSBtYXRlcmlhbCBpZCBvZiB0aGUga2V5IHRvIGdldC5cbiAgICogQHJldHVybnMgVGhlIGtleS5cbiAgICovXG4gIGFzeW5jIGdldEtleUJ5TWF0ZXJpYWxJZChrZXlUeXBlOiBLZXlUeXBlLCBtYXRlcmlhbElkOiBzdHJpbmcpOiBQcm9taXNlPEtleT4ge1xuICAgIGNvbnN0IGtleUluZm8gPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQua2V5R2V0QnlNYXRlcmlhbElkKGtleVR5cGUsIG1hdGVyaWFsSWQpO1xuICAgIHJldHVybiBuZXcgS2V5KHRoaXMuI2FwaUNsaWVudCwga2V5SW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY29udGFjdC5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgZm9yIHRoZSBuZXcgY29udGFjdC5cbiAgICogQHBhcmFtIGFkZHJlc3NlcyBUaGUgYWRkcmVzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGFjdC5cbiAgICogQHBhcmFtIG1ldGFkYXRhIE1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGFjdC4gSW50ZW5kZWQgZm9yIHVzZSBhcyBhIGRlc2NyaXB0aW9uLlxuICAgKiBAcGFyYW0gZWRpdFBvbGljeSBUaGUgZWRpdCBwb2xpY3kgZm9yIHRoZSBjb250YWN0LCBkZXRlcm1pbmluZyB3aGVuIGFuZCB3aG8gY2FuIGVkaXQgdGhpcyBjb250YWN0LlxuICAgKiBAcGFyYW0gbGFiZWxzIFRoZSBvcHRpb25hbCBsYWJlbHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250YWN0LlxuICAgKiBAcmV0dXJucyBUaGUgbmV3bHktY3JlYXRlZCBjb250YWN0LlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlQ29udGFjdChcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgYWRkcmVzc2VzPzogQWRkcmVzc01hcCxcbiAgICBtZXRhZGF0YT86IEpzb25WYWx1ZSxcbiAgICBlZGl0UG9saWN5PzogRWRpdFBvbGljeSxcbiAgICBsYWJlbHM/OiBDb250YWN0TGFiZWxbXSxcbiAgKTogUHJvbWlzZTxDb250YWN0PiB7XG4gICAgY29uc3QgY29udGFjdEluZm8gPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQuY29udGFjdENyZWF0ZShcbiAgICAgIG5hbWUsXG4gICAgICBhZGRyZXNzZXMsXG4gICAgICBtZXRhZGF0YSxcbiAgICAgIGVkaXRQb2xpY3ksXG4gICAgICBsYWJlbHMsXG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgQ29udGFjdCh0aGlzLiNhcGlDbGllbnQsIGNvbnRhY3RJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBjb250YWN0IGJ5IGl0cyBpZC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRhY3RJZCBUaGUgaWQgb2YgdGhlIGNvbnRhY3QgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBUaGUgY29udGFjdC5cbiAgICovXG4gIGFzeW5jIGdldENvbnRhY3QoY29udGFjdElkOiBzdHJpbmcpOiBQcm9taXNlPENvbnRhY3Q+IHtcbiAgICBjb25zdCBjb250YWN0SW5mbyA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5jb250YWN0R2V0KGNvbnRhY3RJZCk7XG5cbiAgICByZXR1cm4gbmV3IENvbnRhY3QodGhpcy4jYXBpQ2xpZW50LCBjb250YWN0SW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBjb250YWN0cyBpbiB0aGUgb3JnYW5pemF0aW9uLCBvcHRpb25hbGx5IG1hdGNoaW5nIHRoZSBzZWFyY2ggcXVlcnkuXG4gICAqXG4gICAqIEBwYXJhbSBzZWFyY2ggVGhlIG9wdGlvbmFsIHNlYXJjaCBxdWVyeS4gRWl0aGVyOlxuICAgKiAgLSBgbGFiZWw6Li4uYCwgd2hpY2ggd2lsbCByZXR1cm4gY29udGFjdHMgd2l0aCB0aGUgbGFiZWwgcHJvdmlkZWQgYWZ0ZXIgdGhlICc6JyxcbiAgICogIC0gYW4gZXhhY3QgYWRkcmVzcyBzZWFyY2gsIHdoaWNoIHJldHVybnMgY29udGFjdHMgd2l0aCB0aGUgcHJvdmlkZWQgQ29udGFjdEFkZHJlc3NEYXRhLFxuICAgKiAgLSBvciBhbiBhZGRyZXNzIHByZWZpeCBzZWFyY2gsIHdoZXJlIGFsbCByZXR1cm5lZCBjb250YWN0cyB3aWxsIGhhdmUgYW4gYWRkcmVzcyBzdGFydGluZyB3aXRoLCBvciBlcXVhbGluZywgdGhlIGdpdmVuIHNlYXJjaCBzdHJpbmcuXG4gICAqIEByZXR1cm5zIEFsbCBjb250YWN0cy5cbiAgICovXG4gIGFzeW5jIGNvbnRhY3RzKFxuICAgIHNlYXJjaD86IGBsYWJlbCR7Q29udGFjdExhYmVsfWAgfCBDb250YWN0QWRkcmVzc0RhdGEgfCBzdHJpbmcsXG4gICk6IFByb21pc2U8Q29udGFjdFtdPiB7XG4gICAgbGV0IGNvbnRhY3RzO1xuXG4gICAgaWYgKHNlYXJjaCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBzZWFyY2ggIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnRhY3RzID0gYXdhaXQgdGhpcy4jYXBpQ2xpZW50LmNvbnRhY3RMb29rdXBCeUFkZHJlc3Moc2VhcmNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGFnaW5hdG9yID0gdGhpcy4jYXBpQ2xpZW50LmNvbnRhY3RzTGlzdCh1bmRlZmluZWQsIHNlYXJjaCk7XG4gICAgICBjb250YWN0cyA9IGF3YWl0IHBhZ2luYXRvci5mZXRjaCgpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250YWN0cy5tYXAoKGMpID0+IG5ldyBDb250YWN0KHRoaXMuI2FwaUNsaWVudCwgYykpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGFpbiBhIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQuaWRlbnRpdHlQcm92ZX0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRvIGFuIGlkZW50aXR5IHByb29mXG4gICAqL1xuICBnZXQgcHJvdmVJZGVudGl0eSgpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50LmlkZW50aXR5UHJvdmUuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgZ2l2ZW4gcHJvb2Ygb2YgT0lEQyBhdXRoZW50aWNhdGlvbiBpcyB2YWxpZC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50LmlkZW50aXR5VmVyaWZ5fSwgc2VlIGl0cyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdmVyaWZpZXMgYSBwcm9vZiBvZiBpZGVudGl0eSwgdGhyb3dpbmcgaWYgaW52YWxpZFxuICAgKi9cbiAgZ2V0IHZlcmlmeUlkZW50aXR5KCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQuaWRlbnRpdHlWZXJpZnkuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnkgaXRzIGlkLlxuICAgKlxuICAgKiBAcGFyYW0gbWZhSWQgTUZBIHJlcXVlc3QgSURcbiAgICogQHJldHVybnMgVGhlIE1GQSByZXF1ZXN0XG4gICAqL1xuICBnZXRNZmFSZXF1ZXN0KG1mYUlkOiBNZmFJZCk6IE1mYVJlcXVlc3Qge1xuICAgIHJldHVybiBuZXcgTWZhUmVxdWVzdCh0aGlzLiNhcGlDbGllbnQsIG1mYUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgdXNlci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIE1GQSByZXF1ZXN0cy5cbiAgICovXG4gIGFzeW5jIG1mYVJlcXVlc3RzKCk6IFByb21pc2U8TWZhUmVxdWVzdFtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI2FwaUNsaWVudFxuICAgICAgLm1mYUxpc3QoKVxuICAgICAgLnRoZW4oKG1mYUluZm9zKSA9PiBtZmFJbmZvcy5tYXAoKG1mYUluZm8pID0+IG5ldyBNZmFSZXF1ZXN0KHRoaXMuI2FwaUNsaWVudCwgbWZhSW5mbykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIGFuIEV0aDIvQmVhY29uLWNoYWluIGRlcG9zaXQgKG9yIHN0YWtpbmcpIG1lc3NhZ2UuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIEFwaUNsaWVudC5zaWduU3Rha2V9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0byBhIHN0YWtlIHJlc3BvbnNlLlxuICAgKi9cbiAgZ2V0IHN0YWtlKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQuc2lnblN0YWtlLmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZykuIFRoZSBsaWZldGltZSBvZlxuICAgKiB0aGUgbmV3IHNlc3Npb24gaXMgc2lsZW50bHkgdHJ1bmNhdGVkIHRvIHRoYXQgb2YgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50LnNlc3Npb25DcmVhdGV9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0byBuZXcgc2lnbmVyIHNlc3Npb24gaW5mby5cbiAgICovXG4gIGdldCBjcmVhdGVTZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQuc2Vzc2lvbkNyZWF0ZS5iaW5kKHRoaXMuI2FwaUNsaWVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpIHdob3NlIGxpZmV0aW1lIHBvdGVudGlhbGx5XG4gICAqIGV4dGVuZHMgdGhlIGxpZmV0aW1lIG9mIHRoZSBjdXJyZW50IHNlc3Npb24uICBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQuc2Vzc2lvbkNyZWF0ZUV4dGVuZGVkfSwgc2VlIGl0cyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdG8gbmV3IHNpZ25lciBzZXNzaW9uIGluZm8uXG4gICAqL1xuICBnZXQgY3JlYXRlRXh0ZW5kZWRTZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQuc2Vzc2lvbkNyZWF0ZUV4dGVuZGVkLmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZva2UgYSBzZXNzaW9uLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQuc2Vzc2lvblJldm9rZX0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgcmV2b2tlcyBhIHNlc3Npb25cbiAgICovXG4gIGdldCByZXZva2VTZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQuc2Vzc2lvblJldm9rZS5iaW5kKHRoaXMuI2FwaUNsaWVudCk7XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBhIGhlYXJ0YmVhdCAvIHVwY2hlY2sgcmVxdWVzdC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50LmhlYXJ0YmVhdH0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgc2VuZHMgYSBoZWFydGJlYXRcbiAgICovXG4gIGdldCBoZWFydGJlYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FwaUNsaWVudC5oZWFydGJlYXQuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHMuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIEFwaUNsaWVudC51c2VyRXhwb3J0TGlzdH0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdG8gYSBwYWdpbmF0b3Igb2YgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICovXG4gIGdldCBleHBvcnRzKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQudXNlckV4cG9ydExpc3QuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0LlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQudXNlckV4cG9ydERlbGV0ZX0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgZGVsZXRlcyBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICovXG4gIGdldCBkZWxldGVFeHBvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FwaUNsaWVudC51c2VyRXhwb3J0RGVsZXRlLmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3QuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIEFwaUNsaWVudC51c2VyRXhwb3J0SW5pdH0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlcXVlc3QgcmVzcG9uc2UuXG4gICAqL1xuICBnZXQgaW5pdEV4cG9ydCgpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50LnVzZXJFeHBvcnRJbml0LmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3QuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIEFwaUNsaWVudC51c2VyRXhwb3J0Q29tcGxldGV9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cbiAgICpcbiAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXF1ZXN0IHJlc3BvbnNlLlxuICAgKi9cbiAgZ2V0IGNvbXBsZXRlRXhwb3J0KCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQudXNlckV4cG9ydENvbXBsZXRlLmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIG9yZy5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50Lm9yZ1VwZGF0ZX0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdXBkYXRlcyBhbiBvcmcgYW5kIHJldHVybnMgdXBkYXRlZCBvcmcgaW5mb3JtYXRpb25cbiAgICovXG4gIGdldCB1cGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FwaUNsaWVudC5vcmdVcGRhdGUuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgYSBmcmVzaCBrZXktaW1wb3J0IGtleS5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50LmNyZWF0ZUtleUltcG9ydEtleX0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdG8gYSBmcmVzaCBrZXktaW1wb3J0IGtleVxuICAgKi9cbiAgZ2V0IGNyZWF0ZUtleUltcG9ydEtleSgpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50LmNyZWF0ZUtleUltcG9ydEtleS5iaW5kKHRoaXMuI2FwaUNsaWVudCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IG9uZSBvciBtb3JlIGtleXMuIFRvIHVzZSB0aGlzIGZ1bmN0aW9uYWxpdHksIHlvdSBtdXN0IGZpcnN0IGNyZWF0ZSBhblxuICAgKiBlbmNyeXB0ZWQga2V5LWltcG9ydCByZXF1ZXN0IHVzaW5nIHRoZSBgQGN1YmlzdC1kZXYvY3ViZXNpZ25lci1zZGsta2V5LWltcG9ydGBcbiAgICogbGlicmFyeS4gU2VlIHRoYXQgbGlicmFyeSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cbiAgICpcbiAgICogQHBhcmFtIGJvZHkgQW4gZW5jcnlwdGVkIGtleS1pbXBvcnQgcmVxdWVzdC5cbiAgICogQHJldHVybnMgVGhlIG5ld2x5IGltcG9ydGVkIGtleXMuXG4gICAqL1xuICBhc3luYyBpbXBvcnRLZXlzKGJvZHk6IEltcG9ydEtleVJlcXVlc3QpOiBQcm9taXNlPEtleVtdPiB7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5pbXBvcnRLZXlzKGJvZHkpO1xuICAgIHJldHVybiBrZXlzLm1hcCgoaykgPT4gbmV3IEtleSh0aGlzLiNhcGlDbGllbnQsIGspKTtcbiAgfVxuXG4gIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGFsaWFzZXMgZm9yIE5hbWVkIFdhc20gUG9saWN5XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBXYXNtIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHBvbGljeS5cbiAgICogQHBhcmFtIHBvbGljeSBUaGUgV2FzbSBwb2xpY3kgb2JqZWN0LlxuICAgKiBAcGFyYW0gYWNsIE9wdGlvbmFsIGxpc3Qgb2YgcG9saWN5IGFjY2VzcyBjb250cm9sIGVudHJpZXMuXG4gICAqIEByZXR1cm5zIFRoZSBuZXcgcG9saWN5LlxuICAgKi9cbiAgY3JlYXRlV2FzbVBvbGljeSA9IHRoaXMuY3JlYXRlV2FzbUZ1bmN0aW9uO1xuXG4gIC8qKiBAcmV0dXJucyB0aGUgUG9saWN5IEVuZ2luZSBjb25maWd1cmF0aW9uIGZvciB0aGUgb3JnLiAqL1xuICBwb2xpY3lFbmdpbmVDb25maWd1cmF0aW9uID0gdGhpcy5jMmZDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIFBvbGljeSBFbmdpbmUgY29uZmlndXJhdGlvbiBmb3IgdGhlIG9yZy5cbiAgICogTm90ZSB0aGF0IHRoaXMgb3ZlcndyaXRlcyBhbnkgZXhpc3RpbmcgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ3MgVGhlIFBvbGljeSBFbmdpbmUgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHNldFBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb24gPSB0aGlzLnNldEMyRkNvbmZpZ3VyYXRpb247XG59XG4iXX0=
|
|
860
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFrQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hFLE9BQU8sRUFFTCxXQUFXLEVBRVgsa0JBQWtCLEdBRW5CLE1BQU0sYUFBYSxDQUFDO0FBdUlyQjs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLEdBQUc7SUFNZDs7O09BR0c7SUFDSCxJQUFJLEVBQUU7UUFDSixPQUFPLHVCQUFBLElBQUksa0JBQU8sQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxNQUFNO1FBQ1IsT0FBTyx1QkFBQSxJQUFJLGlCQUFNLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxTQUFvQixFQUFFLEtBQWE7O1FBM0J0QyxpQ0FBc0I7UUFDL0IsNkJBQWM7UUFDZCwwQkFBMEI7UUFDMUIsNEJBQWdCO1FBMjhCaEIsd0RBQXdEO1FBRXhEOzs7Ozs7O1dBT0c7UUFDSCxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFFM0MsNERBQTREO1FBQzVELDhCQUF5QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUVsRDs7Ozs7V0FLRztRQUNILGlDQUE0QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQXY4QnRELHVCQUFBLElBQUksY0FBVSxLQUFLLE1BQUEsQ0FBQztRQUNwQix1QkFBQSxJQUFJLGtCQUFjLEtBQUssS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQUEsQ0FBQztJQUMzRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQUMsYUFBd0M7UUFDdEQsTUFBTSxHQUFHLEdBQUcsT0FBTyxhQUFhLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFDRCxPQUFPLE1BQU0sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxLQUFLLENBQUMsWUFBWSxDQUNoQixVQUF5QixFQUN6QixTQUF5QixFQUN6QixHQUE2RCxFQUM3RCxRQUFtQjtRQUVuQixNQUFNLEdBQUcsR0FBd0I7WUFDL0IsV0FBVyxFQUFFLFVBQVU7WUFDdkIsR0FBRyxHQUFHO1lBQ04sVUFBVSxFQUFFLFNBQVM7WUFDckIsOEVBQThFO1lBQzlFLGdGQUFnRjtZQUNoRixRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7U0FDekQsQ0FBQztRQUNGLE9BQU8sTUFBTSx1QkFBQSxJQUFJLHNCQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FDakIsU0FBeUIsRUFDekIsR0FBeUMsRUFDekMsUUFBbUI7UUFFbkIsTUFBTSxHQUFHLEdBQW9CO1lBQzNCLEdBQUcsR0FBRztZQUNOLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLDhFQUE4RTtZQUM5RSxnRkFBZ0Y7WUFDaEYsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1NBQ3pELENBQUM7UUFFRixPQUFPLE1BQU0sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsdUJBQUEsSUFBSSxhQUFTLE1BQU0sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLE1BQU0sRUFBRSxNQUFBLENBQUM7UUFDNUMsT0FBTyx1QkFBQSxJQUFJLGlCQUFNLENBQUM7SUFDcEIsQ0FBQztJQUVELG1EQUFtRDtJQUNuRCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFtQztRQUM5QyxPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBbUM7UUFDL0MsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsS0FBSyxDQUFDLE1BQU07UUFDVixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQTJCLENBQUM7SUFDdkQsQ0FBQztJQUVELDRDQUE0QztJQUM1QyxLQUFLLENBQUMsVUFBVTtRQUNkLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBMEIsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBbUIsRUFBRSxJQUFtQztRQUN0RSxNQUFNLENBQUMsR0FBRyxNQUE0QyxDQUFDO1FBQ3ZELE9BQU8sTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBc0IsRUFBRSxJQUFtQztRQUM3RSxPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQWtCLEVBQUUsSUFBbUM7UUFDekUsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLHFCQUFxQjtRQUN6QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxLQUFrQixFQUFFLElBQW1DO1FBQ2pGLE9BQU8sTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyx5QkFBeUIsQ0FDN0Isc0JBQThCLEVBQzlCLElBQW1DO1FBRW5DLE9BQU8sTUFBTSx1QkFBQSxJQUFJLDJDQUFnQixNQUFwQixJQUFJLEVBQWlCLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLHNCQUFzQixDQUFDO1FBQzFELENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLDJCQUEyQixDQUMvQix3QkFBaUMsRUFDakMsSUFBbUM7UUFFbkMsT0FBTyxNQUFNLHVCQUFBLElBQUksMkNBQWdCLE1BQXBCLElBQUksRUFBaUIsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsd0JBQXdCLENBQUM7UUFDL0QsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQXVCRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLHdCQUF3QixDQUM1QixzQkFBMkQsRUFDM0QsSUFBbUM7UUFFbkMsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FDdEIsaUJBQWlFLEVBQ2pFLElBQW1DO1FBRW5DLE9BQU8sTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQWEsRUFBRSxPQUFnQixFQUFFLEtBQTJCO1FBQzFFLE1BQU0sSUFBSSxHQUFHLE1BQU0sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RSxPQUFPLElBQUksR0FBRyxDQUFDLHVCQUFBLElBQUksc0JBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUNkLElBQWEsRUFDYixLQUFhLEVBQ2IsT0FBZ0IsRUFDaEIsS0FBMkI7UUFFM0IsTUFBTSxJQUFJLEdBQUcsTUFBTSx1QkFBQSxJQUFJLHNCQUFXLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksY0FBYztRQUNoQixPQUFPLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksY0FBYztRQUNoQixPQUFPLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFvQjtRQUM5QixPQUFPLE1BQU0sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0UsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksY0FBYztRQUNoQixPQUFPLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLGNBQWM7UUFDaEIsT0FBTyx1QkFBQSxJQUFJLHNCQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLGFBQWE7UUFDZixPQUFPLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFjO1FBQzdCLE9BQU8sTUFBTSx1QkFBQSxJQUFJLHNCQUFXLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFjO1FBQzlCLE9BQU8sTUFBTSx1QkFBQSxJQUFJLHNCQUFXLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFpQjtRQUMxQixNQUFNLFNBQVMsR0FBRyx1QkFBQSxJQUFJLHNCQUFXLENBQUMsUUFBUSxDQUN4QyxLQUFLLEVBQUUsSUFBSSxFQUNYLEtBQUssRUFBRSxJQUFJLEVBQ1gsS0FBSyxFQUFFLEtBQUssRUFDWixLQUFLLEVBQUUsTUFBTSxDQUNkLENBQUM7UUFDRixNQUFNLElBQUksR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLHVCQUFBLElBQUksc0JBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBYTtRQUM1QixNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsTUFBTSxRQUFRLEdBQUcsTUFBTSx1QkFBQSxJQUFJLHNCQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBYztRQUMxQixNQUFNLFFBQVEsR0FBRyxNQUFNLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLElBQUksQ0FBQyx1QkFBQSxJQUFJLHNCQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFjO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1RCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLHVCQUFBLElBQUksc0JBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQ2hCLElBQVksRUFDWixJQUFVLEVBQ1YsS0FBa0QsRUFDbEQsR0FBZTtRQUVmLE1BQU0sVUFBVSxHQUFHLE1BQU0sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RSxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLHVCQUFBLElBQUksc0JBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNqRSxPQUFPLE1BQStELENBQUM7SUFDekUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFnQjtRQUM5QixNQUFNLFVBQVUsR0FBRyxNQUFNLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyx1QkFBQSxJQUFJLHNCQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBa0I7UUFDbEMsTUFBTSxZQUFZLEdBQUcsTUFBTSx1QkFBQSxJQUFJLHNCQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzRSxJQUFJLFlBQVksQ0FBQyxXQUFXLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLFVBQVUsb0NBQW9DLFlBQVksQ0FBQyxXQUFXLGVBQWUsQ0FDekYsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksV0FBVyxDQUFDLHVCQUFBLElBQUksc0JBQVcsRUFBRSxZQUF1QixDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBZSxFQUFFLFVBQXVCO1FBQ3JELE1BQU0sUUFBUSxHQUFHLE1BQU0sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLHVCQUFBLElBQUksc0JBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBZTtRQUM3QixNQUFNLFFBQVEsR0FBRyxNQUFNLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFFLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxFQUFFLElBQWUsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQ3RCLElBQVksRUFDWixNQUFrQixFQUNsQixHQUFlO1FBRWYsTUFBTSxJQUFJLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyx1QkFBQSxJQUFJLHNCQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0QsTUFBTSxVQUFVLEdBQUcsTUFBTSx1QkFBQSxJQUFJLHNCQUFXLENBQUMsWUFBWSxDQUNuRCxJQUFJLEVBQ0osTUFBTSxFQUNOO1lBQ0U7Z0JBQ0UsSUFBSTthQUNMO1NBQ0YsRUFDRCxHQUFHLENBQ0osQ0FBQztRQUNGLE9BQU8sSUFBSSxXQUFXLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxFQUFFLFVBQXFCLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsMkVBQTJFO0lBQzNFLEtBQUssQ0FBQyxnQkFBZ0I7UUFDcEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQXlCLEVBQUUsSUFBbUM7UUFDdEYsT0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQ3RCO1lBQ0UsMkJBQTJCLEVBQUUsT0FBTztTQUNyQyxFQUNELElBQUksRUFBRSxVQUFVLENBQ2pCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQ2IsSUFBYSxFQUNiLGNBQXNCLEVBQ3RCLFVBQWtCLEVBQ2xCLEtBQWlDO1FBRWpDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FDZCxJQUFhLEVBQ2IsZUFBeUIsRUFDekIsVUFBa0IsRUFDbEIsS0FBaUM7UUFFakMsTUFBTSxJQUFJLEdBQUcsTUFBTSx1QkFBQSxJQUFJLHNCQUFXLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQixDQUMxQiwwQkFBc0QsRUFDdEQsS0FBd0M7UUFFeEMsTUFBTSxJQUFJLEdBQUcsTUFBTSx1QkFBQSxJQUFJLHNCQUFXLENBQUMsZUFBZSxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFhO1FBQ3hCLE1BQU0sT0FBTyxHQUFHLE1BQU0sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksR0FBRyxDQUFDLHVCQUFBLElBQUksc0JBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQWdCLEVBQUUsVUFBa0I7UUFDM0QsTUFBTSxPQUFPLEdBQUcsTUFBTSx1QkFBQSxJQUFJLHNCQUFXLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlFLE9BQU8sSUFBSSxHQUFHLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUNqQixJQUFZLEVBQ1osU0FBc0IsRUFDdEIsUUFBb0IsRUFDcEIsVUFBdUIsRUFDdkIsTUFBdUI7UUFFdkIsTUFBTSxXQUFXLEdBQUcsTUFBTSx1QkFBQSxJQUFJLHNCQUFXLENBQUMsYUFBYSxDQUNyRCxJQUFJLEVBQ0osU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxDQUNQLENBQUM7UUFFRixPQUFPLElBQUksT0FBTyxDQUFDLHVCQUFBLElBQUksc0JBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQWlCO1FBQ2hDLE1BQU0sV0FBVyxHQUFHLE1BQU0sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVoRSxPQUFPLElBQUksT0FBTyxDQUFDLHVCQUFBLElBQUksc0JBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUNaLE1BQTZEO1FBRTdELElBQUksUUFBUSxDQUFDO1FBRWIsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3ZELFFBQVEsR0FBRyxNQUFNLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sU0FBUyxHQUFHLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xFLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyx1QkFBQSxJQUFJLHNCQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsT0FBTyx1QkFBQSxJQUFJLHNCQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyx1QkFBQSxJQUFJLHNCQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLEtBQVk7UUFDeEIsT0FBTyxJQUFJLFVBQVUsQ0FBQyx1QkFBQSxJQUFJLHNCQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFlO1FBQy9CLE9BQU8sTUFBTSx1QkFBQSxJQUFJLHNCQUFXO2FBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUM7YUFDYixLQUFLLEVBQUU7YUFDUCxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLHVCQUFBLElBQUksc0JBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksS0FBSztRQUNQLE9BQU8sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFJLGFBQWE7UUFDZixPQUFPLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyx1QkFBQSxJQUFJLHNCQUFXLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLGFBQWE7UUFDZixPQUFPLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLFNBQVM7UUFDWCxPQUFPLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLFlBQVk7UUFDZCxPQUFPLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksY0FBYztRQUNoQixPQUFPLHVCQUFBLElBQUksc0JBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sdUJBQUEsSUFBSSxzQkFBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyx1QkFBQSxJQUFJLHNCQUFXLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBc0I7UUFDckMsTUFBTSxJQUFJLEdBQUcsTUFBTSx1QkFBQSxJQUFJLHNCQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsdUJBQUEsSUFBSSxzQkFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQXdCRjs7QUEvdEJDOzs7Ozs7O0dBT0c7QUFDSCxLQUFLLDhCQUFpQixNQUFtQyxFQUFFLElBQW1DO0lBQzVGLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFakUsNENBQTRDO0lBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO0lBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0lBRS9CLDBDQUEwQztJQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFYixPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDbEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgS2V5VHlwZSxcbiAgS2V5UHJvcGVydGllcyxcbiAgTm90aWZpY2F0aW9uRW5kcG9pbnRDb25maWd1cmF0aW9uLFxuICBQYWdlT3B0cyxcbiAgVXNlckluT3JnSW5mbyxcbiAgQXBpQ2xpZW50LFxuICBPcmdJbmZvLFxuICBNZmFJZCxcbiAgSW1wb3J0S2V5UmVxdWVzdCxcbiAgS2V5UG9saWN5LFxuICBRdWVyeU1ldHJpY3NSZXNwb25zZSxcbiAgT3JnTWV0cmljTmFtZSxcbiAgUXVlcnlNZXRyaWNzUmVxdWVzdCxcbiAgS2V5VHlwZUFuZERlcml2YXRpb25QYXRoLFxuICBKc29uVmFsdWUsXG4gIEVkaXRQb2xpY3ksXG4gIEFkZHJlc3NNYXAsXG4gIENyZWF0ZU9yZ1JlcXVlc3QsXG4gIE1lbWJlclJvbGUsXG4gIFJvbGVQb2xpY3ksXG4gIEMyRkNvbmZpZ3VyYXRpb24sXG4gIE1mYVByb3RlY3RlZEFjdGlvbixcbiAgTWZhVHlwZSxcbiAgUG9saWN5VHlwZSxcbiAgUG9saWN5QWNsLFxuICBDb250YWN0TGFiZWwsXG4gIENvbnRhY3RBZGRyZXNzRGF0YSxcbiAgT3JnRXh0UHJvcHMsXG4gIE9yZ0V4dERhdGEsXG4gIEF1ZGl0TG9nRW50cnksXG4gIEF1ZGl0TG9nUmVxdWVzdCxcbiAgTWZhUmVjZWlwdHMsXG59IGZyb20gXCIuL2luZGV4LnRzXCI7XG5pbXBvcnQgeyBDb250YWN0IH0gZnJvbSBcIi4vY29udGFjdC50c1wiO1xuaW1wb3J0IHsgQzJGRnVuY3Rpb24sIEtleSwgTWZhUmVxdWVzdCwgUm9sZSB9IGZyb20gXCIuL2luZGV4LnRzXCI7XG5pbXBvcnQge1xuICB0eXBlIE5hbWVkS2V5UG9saWN5LFxuICBOYW1lZFBvbGljeSxcbiAgdHlwZSBOYW1lZFJvbGVQb2xpY3ksXG4gIHVwbG9hZFdhc21GdW5jdGlvbixcbiAgdHlwZSBDMkZJbmZvLFxufSBmcm9tIFwiLi9wb2xpY3kudHNcIjtcblxuLyoqIE9wdGlvbnMgcGFzZWQgdG8gY3JlYXRlS2V5IGFuZCBkZXJpdmVLZXkgKi9cbmV4cG9ydCB0eXBlIENyZWF0ZUtleVByb3BlcnRpZXMgPSBPbWl0PEtleVByb3BlcnRpZXMsIFwicG9saWN5XCI+ICYge1xuICAvKipcbiAgICogUG9saWNpZXMgdG8gYXBwbHkgdG8gdGhlIG5ldyBrZXkuXG4gICAqXG4gICAqIFRoaXMgdHlwZSBtYWtlcyBpdCBwb3NzaWJsZSB0byBhc3NpZ24gdmFsdWVzIGxpa2VcbiAgICogYFtBbGxvd0VpcDE5MVNpZ25pbmdQb2xpY3ldYCwgYnV0IHJlbWFpbnMgYmFja3dhcmRzXG4gICAqIGNvbXBhdGlibGUgd2l0aCBwcmlvciB2ZXJzaW9ucyBvZiB0aGUgU0RLLCBpbiB3aGljaFxuICAgKiB0aGlzIHByb3BlcnR5IGhhZCB0eXBlIGBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGxgLlxuICAgKi9cbiAgcG9saWN5PzogS2V5UG9saWN5IHwgdW5rbm93bltdIHwgbnVsbDtcbn07XG5cbi8qKiBPcHRpb25zIHBhc3NlZCB0byBpbXBvcnRLZXkgYW5kIGRlcml2ZUtleSAqL1xuZXhwb3J0IHR5cGUgSW1wb3J0RGVyaXZlS2V5UHJvcGVydGllcyA9IENyZWF0ZUtleVByb3BlcnRpZXMgJiB7XG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHJldHVybnMgYSAnS2V5JyBvYmplY3QgZm9yIGJvdGggbmV3IGFuZCBleGlzdGluZyBrZXlzLlxuICAgKi9cbiAgaWRlbXBvdGVudD86IGJvb2xlYW47XG59O1xuXG4vKiogT3B0aW9ucyBwYXNzZWQgdG8gZGVyaXZlTXVsdGlwbGVLZXlUeXBlcyAqL1xuZXhwb3J0IHR5cGUgRGVyaXZlTXVsdGlwbGVLZXlUeXBlc1Byb3BlcnRpZXMgPSBJbXBvcnREZXJpdmVLZXlQcm9wZXJ0aWVzICYge1xuICAvKipcbiAgICogVGhlIG1hdGVyaWFsX2lkIG9mIHRoZSBtbmVtb25pYyB1c2VkIHRvIGRlcml2ZSBuZXcga2V5cy5cbiAgICpcbiAgICogSWYgdGhpcyBhcmd1bWVudCBpcyB1bmRlZmluZWQgb3IgbnVsbCwgYSBuZXcgbW5lbW9uaWMgaXMgZmlyc3QgY3JlYXRlZFxuICAgKiBhbmQgYW55IG90aGVyIHNwZWNpZmllZCBwcm9wZXJ0aWVzIGFyZSBhcHBsaWVkIHRvIGl0IChpbiBhZGRpdGlvbiB0b1xuICAgKiBiZWluZyBhcHBsaWVkIHRvIHRoZSBzcGVjaWZpZWQga2V5cykuXG4gICAqXG4gICAqIFRoZSBuZXdseSBjcmVhdGVkIG1uZW1vbmljLWlkIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgYGRlcml2YXRpb25faW5mb2BcbiAgICogcHJvcGVydHkgb2YgdGhlIGBLZXlJbmZvYCB2YWx1ZSBmb3IgYSByZXN1bHRpbmcga2V5LlxuICAgKi9cbiAgbW5lbW9uaWNfaWQ/OiBzdHJpbmc7XG59O1xuXG4vKiogT3JnYW5pemF0aW9uIGlkICovXG5leHBvcnQgdHlwZSBPcmdJZCA9IHN0cmluZztcblxuLyoqIE9yZy13aWRlIHBvbGljeSAqL1xuZXhwb3J0IHR5cGUgT3JnUG9saWN5ID1cbiAgfCBTb3VyY2VJcEFsbG93bGlzdFBvbGljeVxuICB8IE9pZGNBdXRoU291cmNlc1BvbGljeVxuICB8IE9yaWdpbkFsbG93bGlzdFBvbGljeVxuICB8IE1heERhaWx5VW5zdGFrZVBvbGljeVxuICB8IFdlYkF1dGhuUmVseWluZ1BhcnRpZXNQb2xpY3lcbiAgfCBFeGNsdXNpdmVLZXlBY2Nlc3NQb2xpY3k7XG5cbi8qKlxuICogV2hldGhlciB0byBlbmZvcmNlIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8ga2V5cy4gIENvbmNyZXRlbHksXG4gKiAtIGlmIFwiTGltaXRUb0tleU93bmVyXCIgaXMgc2V0LCBvbmx5IGtleSBvd25lcnMgYXJlIHBlcm1pdHRlZCB0byBhY2Nlc3NcbiAqICAgdGhlaXIga2V5cyBmb3Igc2lnbmluZzogYSB1c2VyIHNlc3Npb24gKG5vdCBhIHJvbGUgc2Vzc2lvbikgaXMgcmVxdWlyZWRcbiAqICAgZm9yIHNpZ25pbmcsIGFuZCBhZGRpbmcgYSBrZXkgdG8gYSByb2xlIGlzIG5vdCBwZXJtaXR0ZWQuXG4gKiAtIGlmIFwiTGltaXRUb1NpbmdsZVJvbGVcIiBpcyBzZXQsIGVhY2gga2V5IGlzIHBlcm1pdHRlZCB0byBiZSBpbiBhdCBtb3N0XG4gKiAgIG9uZSByb2xlLCBhbmQgc2lnbmluZyBpcyBvbmx5IGFsbG93ZWQgd2hlbiBhdXRoZW50aWNhdGluZyB1c2luZyBhIHJvbGUgc2Vzc2lvbiB0b2tlbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGNsdXNpdmVLZXlBY2Nlc3NQb2xpY3kge1xuICBFeGNsdXNpdmVLZXlBY2Nlc3M6IFwiTGltaXRUb0tleU93bmVyXCIgfCBcIkxpbWl0VG9TaW5nbGVSb2xlXCI7XG59XG5cbi8qKlxuICogVGhlIHNldCBvZiByZWx5aW5nIHBhcnRpZXMgdG8gYWxsb3cgZm9yIHdlYmF1dGhuIHJlZ2lzdHJhdGlvblxuICogVGhlc2UgY29ycmVzcG9uZCB0byBkb21haW5zIGZyb20gd2hpY2ggYnJvd3NlcnMgY2FuIHN1Y2Nlc3NmdWxseSBjcmVhdGUgY3JlZGVudGlhbHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2ViQXV0aG5SZWx5aW5nUGFydGllc1BvbGljeSB7XG4gIFdlYkF1dGhuUmVseWluZ1BhcnRpZXM6IHsgaWQ/OiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9W107XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYW4gYWxsb3dsaXN0IG9mIE9JREMgSXNzdWVycyBhbmQgYXVkaWVuY2VzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYXV0aGVudGljYXRlIGludG8gdGhpcyBvcmcuXG4gKlxuICogQGV4YW1wbGUge1wiT2lkY0F1dGhTb3VyY2VzXCI6IHsgXCJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb21cIjogWyBcIjEyMzQuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb21cIiBdfX1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPaWRjQXV0aFNvdXJjZXNQb2xpY3kge1xuICBPaWRjQXV0aFNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdIHwgSXNzdWVyQ29uZmlnPjtcbn1cblxuLyoqIE9JREMgaXNzdWVyIGNvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXNzdWVyQ29uZmlnIHtcbiAgLyoqIFRoZSBzZXQgb2YgYXVkaWVuY2VzIHN1cHBvcnRlZCBmb3IgdGhpcyBpc3N1ZXIgKi9cbiAgYXVkczogc3RyaW5nW107XG5cbiAgLyoqIFRoZSBraW5kcyBvZiB1c2VyIGFsbG93ZWQgdG8gYXV0aGVudGljYXRlIHdpdGggdGhpcyBpc3N1ZXIgKi9cbiAgdXNlcnM6IE1lbWJlclJvbGVbXTtcblxuICAvKiogT3B0aW9uYWwgbmlja25hbWUgZm9yIHRoaXMgcHJvdmlkZXIgKi9cbiAgbmlja25hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIFdoZXRoZXIgdG8gbWFrZSB0aGlzIGlzc3VlciBwdWJsaWMgKi9cbiAgcHVibGljPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPbmx5IGFsbG93IHJlcXVlc3RzIGZyb20gdGhlIHNwZWNpZmllZCBvcmlnaW5zLlxuICpcbiAqIEBleGFtcGxlIHtcIk9yaWdpbkFsbG93bGlzdFwiOiBcIipcIn1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcmlnaW5BbGxvd2xpc3RQb2xpY3kge1xuICBPcmlnaW5BbGxvd2xpc3Q6IHN0cmluZ1tdIHwgXCIqXCI7XG59XG5cbi8qKlxuICogUmVzdHJpY3Qgc2lnbmluZyB0byBzcGVjaWZpYyBzb3VyY2UgSVAgYWRkcmVzc2VzLlxuICpcbiAqIEBleGFtcGxlIHtcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcIjEwLjEuMi4zLzhcIiwgXCIxNjkuMjU0LjE3LjEvMTZcIl19XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlSXBBbGxvd2xpc3RQb2xpY3kge1xuICBTb3VyY2VJcEFsbG93bGlzdDogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVzdHJpY3QgdGhlIG51bWJlciBvZiB1bnN0YWtlcyBwZXIgZGF5LlxuICpcbiAqIEBleGFtcGxlIHtcIk1heERhaWx5VW5zdGFrZVwiOiA1IH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXhEYWlseVVuc3Rha2VQb2xpY3kge1xuICBNYXhEYWlseVVuc3Rha2U6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBGaWx0ZXIgdG8gdXNlIHdoZW4gbGlzdGluZyBrZXlzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5RmlsdGVyIHtcbiAgLyoqIEZpbHRlciBieSBrZXkgdHlwZSAqL1xuICB0eXBlPzogS2V5VHlwZTtcbiAgLyoqIEZpbHRlciBieSBrZXkgb3duZXIgKi9cbiAgb3duZXI/OiBzdHJpbmc7XG4gIC8qKiBTZWFyY2ggYnkga2V5J3MgbWF0ZXJpYWwgaWQgYW5kIG1ldGFkYXRhICovXG4gIHNlYXJjaD86IHN0cmluZztcbiAgLyoqIFBhZ2luYXRpb24gb3B0aW9ucyAqL1xuICBwYWdlPzogUGFnZU9wdHM7XG59XG5cbi8qKlxuICogQW4gb3JnYW5pemF0aW9uLlxuICpcbiAqIEV4dGVuZHMge0BsaW5rIEN1YmVTaWduZXJDbGllbnR9IGFuZCBwcm92aWRlcyBhIGZldyBvcmctc3BlY2lmaWMgbWV0aG9kcyBvbiB0b3AuXG4gKi9cbmV4cG9ydCBjbGFzcyBPcmcge1xuICByZWFkb25seSAjYXBpQ2xpZW50OiBBcGlDbGllbnQ7XG4gICNvcmdJZDogT3JnSWQ7XG4gIC8qKiBUaGUgb3JnIGluZm9ybWF0aW9uICovXG4gICNkYXRhPzogT3JnSW5mbztcblxuICAvKipcbiAgICogQHJldHVybnMgVGhlIG9yZyBpZFxuICAgKiBAZXhhbXBsZSBPcmcjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAqL1xuICBnZXQgaWQoKTogT3JnSWQge1xuICAgIHJldHVybiB0aGlzLiNvcmdJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBUaGUgY2FjaGVkIHByb3BlcnRpZXMgb2YgdGhpcyBvcmcuIFRoZSBjYWNoZWQgcHJvcGVydGllcyByZWZsZWN0IHRoZVxuICAgKiBzdGF0ZSBvZiB0aGUgbGFzdCBmZXRjaCBvciB1cGRhdGUuXG4gICAqL1xuICBnZXQgY2FjaGVkKCk6IE9yZ0luZm8gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gYXBpQ2xpZW50IFRoZSBBUEkgY2xpZW50IHRvIHVzZS5cbiAgICogQHBhcmFtIG9yZ0lkIFRoZSBpZCBvZiB0aGUgb3JnXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcGlDbGllbnQ6IEFwaUNsaWVudCwgb3JnSWQ6IHN0cmluZykge1xuICAgIHRoaXMuI29yZ0lkID0gb3JnSWQ7XG4gICAgdGhpcy4jYXBpQ2xpZW50ID0gb3JnSWQgPT09IGFwaUNsaWVudC5vcmdJZCA/IGFwaUNsaWVudCA6IGFwaUNsaWVudC53aXRoVGFyZ2V0T3JnKG9yZ0lkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgb3JnYW5pemF0aW9uLiBUaGUgbmV3IG9yZyBpcyBhIGNoaWxkIG9mIHRoZVxuICAgKiBjdXJyZW50IG9yZyBhbmQgaW5oZXJpdHMgaXRzIGtleS1leHBvcnQgcG9saWN5LiBUaGUgbmV3IG9yZ1xuICAgKiBpcyBjcmVhdGVkIHdpdGggb25lIG93bmVyLCB0aGUgY2FsbGVyIG9mIHRoaXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZU9yUmVxdWVzdCBUaGUgbmFtZSBvZiB0aGUgbmV3IG9yZyBvciB0aGUgcHJvcGVydGllcyBvZiB0aGUgbmV3IG9yZy5cbiAgICogQHJldHVybnMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIG5ld2x5IGNyZWF0ZWQgb3JnLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlT3JnKG5hbWVPclJlcXVlc3Q6IHN0cmluZyB8IENyZWF0ZU9yZ1JlcXVlc3QpOiBQcm9taXNlPE9yZ0luZm8+IHtcbiAgICBjb25zdCByZXEgPSB0eXBlb2YgbmFtZU9yUmVxdWVzdCA9PT0gXCJzdHJpbmdcIiA/IHsgbmFtZTogbmFtZU9yUmVxdWVzdCB9IDogbmFtZU9yUmVxdWVzdDtcbiAgICBpZiAoIS9eW2EtekEtWjAtOV9dezMsMzB9JC8udGVzdChyZXEubmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk9yZyBuYW1lIG11c3QgYmUgYWxwaGFudW1lcmljIGFuZCBiZXR3ZWVuIDMgYW5kIDMwIGNoYXJhY3RlcnNcIik7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLiNhcGlDbGllbnQub3JnQ3JlYXRlT3JnKHJlcSk7XG4gIH1cblxuICAvKipcbiAgICogUXVlcnkgb3JnIG1ldHJpY3MuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRyaWNOYW1lIFRoZSBtZXRyaWMgbmFtZS5cbiAgICogQHBhcmFtIHN0YXJ0VGltZSBUaGUgc3RhcnQgZGF0ZSBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guXG4gICAqIEBwYXJhbSBvcHQgT3RoZXIgb3B0aW9uYWwgYXJndW1lbnRzXG4gICAqIEBwYXJhbSBvcHQuZW5kX3RpbWUgVGhlIGVuZCBkYXRlIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gJ25vdycuXG4gICAqIEBwYXJhbSBvcHQucGVyaW9kIFRoZSBncmFudWxhcml0eSwgaW4gc2Vjb25kcywgb2YgdGhlIHJldHVybmVkIGRhdGEgcG9pbnRzLlxuICAgKiAgIFRoaXMgdmFsdWUgaXMgYXV0b21hdGljYWxseSByb3VuZGVkIHVwIHRvIGEgbXVsdGlwbGUgb2YgMzYwMCAoaS5lLiwgMSBob3VyKS5cbiAgICogICBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byB0aGUgZHVyYXRpb24gYmV0d2VlbiB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgZGF0ZS5cbiAgICogICBNdXN0IGJlIG5vIGxlc3MgdGhhbiAxIGhvdXIsIGkuZS4sIDM2MDAgc2Vjb25kcy4gQWRkaXRpb25hbGx5LCB0aGlzIHBlcmlvZCBtdXN0IG5vdFxuICAgKiAgIGRpdmlkZSB0aGUgYGVuZFRpbWUgLSBzdGFydFRpbWVgIHBlcmlvZCBpbnRvIG1vcmUgdGhhbiAxMDAgZGF0YSBwb2ludHMuXG4gICAqIEBwYXJhbSBwYWdlT3B0cyBQYWdpbmF0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIE1ldHJpYyB2YWx1ZXMgKGRhdGEgcG9pbnRzKSBmb3IgdGhlIHJlcXVlc3RlZCBwZXJpb2RzLlxuICAgKi9cbiAgYXN5bmMgcXVlcnlNZXRyaWNzKFxuICAgIG1ldHJpY05hbWU6IE9yZ01ldHJpY05hbWUsXG4gICAgc3RhcnRUaW1lOiBFcG9jaFRpbWVTdGFtcCxcbiAgICBvcHQ/OiBPbWl0PFF1ZXJ5TWV0cmljc1JlcXVlc3QsIFwibWV0cmljX25hbWVcIiB8IFwic3RhcnRfdGltZVwiPixcbiAgICBwYWdlT3B0cz86IFBhZ2VPcHRzLFxuICApOiBQcm9taXNlPFF1ZXJ5TWV0cmljc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxOiBRdWVyeU1ldHJpY3NSZXF1ZXN0ID0ge1xuICAgICAgbWV0cmljX25hbWU6IG1ldHJpY05hbWUsXG4gICAgICAuLi5vcHQsXG4gICAgICBzdGFydF90aW1lOiBzdGFydFRpbWUsXG4gICAgICAvLyBNdXN0IHNldCBlbmRfdGltZSBiZWZvcmUgZmV0Y2hBbGw6IHdpdGhvdXQgaXQgdGhlIGJhY2tlbmQgZGVmYXVsdHMgdG8gbm93KClcbiAgICAgIC8vIG9uIGVhY2ggcGFnZSByZXF1ZXN0LCBhbmQgYSBjaGFuZ2luZyB3aW5kb3cgaW52YWxpZGF0ZXMgdGhlIHBhZ2luYXRpb24gdG9rZW4uXG4gICAgICBlbmRfdGltZTogb3B0Py5lbmRfdGltZSA/PyBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLiNhcGlDbGllbnQub3JnUXVlcnlNZXRyaWNzKHJlcSwgcGFnZU9wdHMpLmZldGNoQWxsKCk7XG4gIH1cblxuICAvKipcbiAgICogUXVlcnkgdGhlIG9yZyBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEBwYXJhbSBzdGFydFRpbWUgVGhlIHN0YXJ0IGRhdGUgaW4gc2Vjb25kcyBzaW5jZSB1bml4IGVwb2NoLlxuICAgKiBAcGFyYW0gb3B0IE90aGVyIG9wdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcGFyYW0gb3B0LmVuZF90aW1lIFRoZSBlbmQgZGF0ZSBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guIERlZmF1bHRzIHRvICdub3cnLlxuICAgKiBAcGFyYW0gb3B0LmV2ZW50cyBGaWx0ZXIgYnkgZXZlbnQgbmFtZS4gSWYgb21pdHRlZCwgYWxsIGV2ZW50cyBhcmUgaW5jbHVkZWQuXG4gICAqIEBwYXJhbSBwYWdlT3B0cyBQYWdpbmF0aW9uIG9wdGlvbnMuIERlZmF1bHRzIHRvIGZldGNoaW5nIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICogQHJldHVybnMgTWF0Y2hpbmcgYXVkaXQgbG9nIGVudHJpZXMuXG4gICAqL1xuICBhc3luYyBxdWVyeUF1ZGl0TG9nKFxuICAgIHN0YXJ0VGltZTogRXBvY2hUaW1lU3RhbXAsXG4gICAgb3B0PzogT21pdDxBdWRpdExvZ1JlcXVlc3QsIFwic3RhcnRfdGltZVwiPixcbiAgICBwYWdlT3B0cz86IFBhZ2VPcHRzLFxuICApOiBQcm9taXNlPEF1ZGl0TG9nRW50cnlbXT4ge1xuICAgIGNvbnN0IHJlcTogQXVkaXRMb2dSZXF1ZXN0ID0ge1xuICAgICAgLi4ub3B0LFxuICAgICAgc3RhcnRfdGltZTogc3RhcnRUaW1lLFxuICAgICAgLy8gTXVzdCBzZXQgZW5kX3RpbWUgYmVmb3JlIGZldGNoQWxsOiB3aXRob3V0IGl0IHRoZSBiYWNrZW5kIGRlZmF1bHRzIHRvIG5vdygpXG4gICAgICAvLyBvbiBlYWNoIHBhZ2UgcmVxdWVzdCwgYW5kIGEgY2hhbmdpbmcgd2luZG93IGludmFsaWRhdGVzIHRoZSBwYWdpbmF0aW9uIHRva2VuLlxuICAgICAgZW5kX3RpbWU6IG9wdD8uZW5kX3RpbWUgPz8gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLiNhcGlDbGllbnQub3JnUXVlcnlBdWRpdExvZyhyZXEsIHBhZ2VPcHRzKS5mZXRjaEFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBvcmcgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBvcmcgaW5mb3JtYXRpb24uXG4gICAqL1xuICBhc3luYyBmZXRjaCgpOiBQcm9taXNlPE9yZ0luZm8+IHtcbiAgICB0aGlzLiNkYXRhID0gYXdhaXQgdGhpcy4jYXBpQ2xpZW50Lm9yZ0dldCgpO1xuICAgIHJldHVybiB0aGlzLiNkYXRhO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnICovXG4gIGFzeW5jIG5hbWUoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiBkYXRhLm5hbWUgPz8gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIFdoZXRoZXIgdGhlIG9yZyBpcyBlbmFibGVkICovXG4gIGFzeW5jIGVuYWJsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goKTtcbiAgICByZXR1cm4gZGF0YS5lbmFibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSB0aGUgb3JnLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0cyBPcHRpb25hbCBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBvcHRzLm1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHRzXG4gICAqIEByZXR1cm5zIE9yZyBpbmZvXG4gICAqL1xuICBhc3luYyBlbmFibGUob3B0cz86IHsgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzIH0pIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy51cGRhdGUoeyBlbmFibGVkOiB0cnVlIH0sIG9wdHM/Lm1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIG9yZy5cbiAgICpcbiAgICogQHBhcmFtIG9wdHMgT3B0aW9uYWwgcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gb3B0cy5tZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0c1xuICAgKiBAcmV0dXJucyBPcmcgaW5mb1xuICAgKi9cbiAgYXN5bmMgZGlzYWJsZShvcHRzPzogeyBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMgfSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnVwZGF0ZSh7IGVuYWJsZWQ6IGZhbHNlIH0sIG9wdHM/Lm1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHRoZSBwb2xpY3kgZm9yIHRoZSBvcmcuICovXG4gIGFzeW5jIHBvbGljeSgpOiBQcm9taXNlPE9yZ1BvbGljeVtdPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goKTtcbiAgICByZXR1cm4gKGRhdGEucG9saWN5ID8/IFtdKSBhcyB1bmtub3duIGFzIE9yZ1BvbGljeVtdO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHRoZSBzaWduIHBvbGljeSBmb3IgdGhlIG9yZy4gKi9cbiAgYXN5bmMgc2lnblBvbGljeSgpOiBQcm9taXNlPFJvbGVQb2xpY3k+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiAoZGF0YS5zaWduX3BvbGljeSA/PyBbXSkgYXMgdW5rbm93biBhcyBSb2xlUG9saWN5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcG9saWN5IGZvciB0aGUgb3JnLlxuICAgKlxuICAgKiBAcGFyYW0gcG9saWN5IFRoZSBuZXcgcG9saWN5IGZvciB0aGUgb3JnLlxuICAgKiBAcGFyYW0gb3B0cyBPcHRpb25hbCBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBvcHRzLm1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHRzXG4gICAqIEByZXR1cm5zIE9yZyBpbmZvXG4gICAqL1xuICBhc3luYyBzZXRQb2xpY3kocG9saWN5OiBPcmdQb2xpY3lbXSwgb3B0cz86IHsgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzIH0pIHtcbiAgICBjb25zdCBwID0gcG9saWN5IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudXBkYXRlKHsgcG9saWN5OiBwIH0sIG9wdHM/Lm1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZWRpdCBwb2xpY3kgZm9yIHRoZSBvcmcuXG4gICAqXG4gICAqIEBwYXJhbSBlZGl0UG9saWN5IFRoZSBuZXcgZWRpdCBwb2xpY3kgZm9yIHRoZSBvcmcuXG4gICAqIEBwYXJhbSBvcHRzIE9wdGlvbmFsIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9wdHMubWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdHNcbiAgICogQHJldHVybnMgT3JnIGluZm9cbiAgICovXG4gIGFzeW5jIHNldEVkaXRQb2xpY3koZWRpdFBvbGljeTogRWRpdFBvbGljeSwgb3B0cz86IHsgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzIH0pIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy51cGRhdGUoeyBlZGl0X3BvbGljeTogZWRpdFBvbGljeSB9LCBvcHRzPy5tZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHNpZ24gcG9saWN5IGZvciB0aGUgb3JnLlxuICAgKlxuICAgKiBUaGlzIGlzIGEgZ2xvYmFsIHNpZ24gcG9saWN5IHRoYXQgYXBwbGllcyB0byBldmVyeSBzaWduIG9wZXJhdGlvbiAoZXZlcnkga2V5LCBldmVyeSByb2xlKSBpbiB0aGUgb3JnLlxuICAgKiBJdCBpcyBhbmFsb2dvdXMgdG8gaG93IHJvbGUgcG9saWNpZXMgYXBwbHkgdG8gYWxsIHNpZ24gcmVxdWVzdHMgcGVyZm9ybWVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHJvbGUgc2Vzc2lvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBwb2xpY3kgVGhlIG5ldyBwb2xpY3kgZm9yIHRoZSBvcmcuXG4gICAqIEBwYXJhbSBvcHRzIE9wdGlvbmFsIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9wdHMubWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdHNcbiAgICogQHJldHVybnMgT3JnIGluZm9cbiAgICovXG4gIGFzeW5jIHNldFNpZ25Qb2xpY3kocG9saWN5OiBSb2xlUG9saWN5LCBvcHRzPzogeyBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMgfSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnVwZGF0ZSh7IHNpZ25fcG9saWN5OiBwb2xpY3kgfSwgb3B0cz8ubWZhUmVjZWlwdCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIG9yZ2FuaXphdGlvbidzIGV4dGVuZGVkIHByb3BlcnRpZXMgKHVuY29tbW9uIGZlYXR1cmVzIG5vdCB1c2VkIGJ5IG1vc3QgdXNlcnMpLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZXh0ZW5kZWQgcHJvcGVydGllc1xuICAgKi9cbiAgYXN5bmMgZ2V0RXh0ZW5kZWRQcm9wZXJ0aWVzKCk6IFByb21pc2U8T3JnRXh0RGF0YSB8IG51bGw+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiBkYXRhLmV4dF9kYXRhID8gZGF0YS5leHRfZGF0YSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBvcmdhbml6YXRpb24ncyBleHRlbmRlZCBwcm9wZXJ0aWVzICh1bmNvbW1vbiBmZWF0dXJlcyBub3QgdXNlZCBieSBtb3N0IHVzZXJzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFRoZSBuZXcgcHJvcGVydGllcy5cbiAgICogQHBhcmFtIG9wdHMgT3B0aW9uYWwgcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gb3B0cy5tZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0c1xuICAgKiBAcmV0dXJucyBPcmcgaW5mb1xuICAgKi9cbiAgYXN5bmMgc2V0RXh0ZW5kZWRQcm9wZXJ0aWVzKHByb3BzOiBPcmdFeHRQcm9wcywgb3B0cz86IHsgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzIH0pIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy51cGRhdGUoeyBleHRfcHJvcHM6IHByb3BzIH0sIG9wdHM/Lm1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcGVyLWFsaWVuIGtleSBjb3VudCB0aHJlc2hvbGQsIHdoaWNoLCBvbmNlIGV4Y2VlZGVkLCBkaXNhbGxvd3MgZnVydGhlciBrZXkgY3JlYXRpb24gYnkgYWxpZW4gdXNlcnMuXG4gICAqXG4gICAqIFRoaXMgc2V0dGluZyBpcyBjaGVja2VkIG9ubHkgd2hlbiBhbiBhbGllbiB1c2VyIHJlcXVlc3RzIHRvIGNyZWF0ZSBvciBpbXBvcnQgYSBuZXcga2V5LlxuICAgKiBJbiBvdGhlciB3b3Jkcywgb3JnIGFkbWlucyBjYW4gc3RpbGwgYXNzaWduIHVubGltaXRlZCBudW1iZXIgb2Yga2V5cyB0byB0aGVpciBhbGllbiB1c2Vycy5cbiAgICpcbiAgICogQHBhcmFtIGFsaWVuS2V5Q291bnRUaHJlc2hvbGQgVGhlIG5ldyBrZXkgY291bnQgdGhyZXNob2xkLlxuICAgKiBAcGFyYW0gb3B0cyBPcHRpb25hbCBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBvcHRzLm1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHRzXG4gICAqIEByZXR1cm5zIE9yZyBpbmZvXG4gICAqL1xuICBhc3luYyBzZXRBbGllbktleUNvdW50VGhyZXNob2xkKFxuICAgIGFsaWVuS2V5Q291bnRUaHJlc2hvbGQ6IG51bWJlcixcbiAgICBvcHRzPzogeyBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMgfSxcbiAgKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI3VwZGF0ZUV4dFByb3BzKChkYXRhKSA9PiB7XG4gICAgICBkYXRhLmFsaWVuX2tleV9jb3VudF90aHJlc2hvbGQgPSBhbGllbktleUNvdW50VGhyZXNob2xkO1xuICAgIH0sIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB3aGV0aGVyIHRoZSBhbGllbiB1c2VycyBzaG91bGQgYmUgYWxsb3dlZCB0byB1cGRhdGUgdGhlaXIgb3duIGtleSBwb2xpY2llcy5cbiAgICpcbiAgICogQHBhcmFtIGFsaWVuc0NhblVwZGF0ZUtleVBvbGljeSBXaGV0aGVyIGFsaWVuIHVzZXJzIHNob3VsZCBiZSBhbGxvd2VkIHRvIHVwZGF0ZSB0aGVpciBvd24ga2V5IHBvbGljaWVzLlxuICAgKiBAcGFyYW0gb3B0cyBPcHRpb25hbCBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBvcHRzLm1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHRzXG4gICAqIEByZXR1cm5zIE9yZyBpbmZvXG4gICAqL1xuICBhc3luYyBzZXRBbGllbnNDYW5VcGRhdGVLZXlQb2xpY3koXG4gICAgYWxpZW5zQ2FuVXBkYXRlS2V5UG9saWN5OiBib29sZWFuLFxuICAgIG9wdHM/OiB7IG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyB9LFxuICApIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy4jdXBkYXRlRXh0UHJvcHMoKGRhdGEpID0+IHtcbiAgICAgIGRhdGEuYWxpZW5zX2Nhbl91cGRhdGVfa2V5X3BvbGljeSA9IGFsaWVuc0NhblVwZGF0ZUtleVBvbGljeTtcbiAgICB9LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgc2VsZWN0IGV4dGVuZGVkIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB1cGRhdGUgVGhlIHVwZGF0ZSBmdW5jdGlvblxuICAgKiBAcGFyYW0gb3B0cyBPcHRpb25hbCBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBvcHRzLm1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHRzXG4gICAqIEByZXR1cm5zIE9yZyBpbmZvXG4gICAqL1xuICBhc3luYyAjdXBkYXRlRXh0UHJvcHModXBkYXRlOiAoZGF0YTogT3JnRXh0UHJvcHMpID0+IHZvaWQsIG9wdHM/OiB7IG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyB9KSB7XG4gICAgY29uc3QgZGF0YSA9IHsgLi4uKChhd2FpdCB0aGlzLmdldEV4dGVuZGVkUHJvcGVydGllcygpKSA/PyB7fSkgfTtcblxuICAgIC8vIGVyYXNlIHRoZSBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSB1cGRhdGVkXG4gICAgZGF0YS5jcmVhdGVkID0gdW5kZWZpbmVkO1xuICAgIGRhdGEubGFzdF9tb2RpZmllZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIGV4ZWN1dGUgY2xpZW50LXN1cHBsaWVkIHVwZGF0ZSBmdW5jdGlvblxuICAgIHVwZGF0ZShkYXRhKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnVwZGF0ZSh7IGV4dF9wcm9wczogZGF0YSB9LCBvcHRzPy5tZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG5vdGlmaWNhdGlvbiBlbmRwb2ludHMgZm9yIHRoZSBvcmcuXG4gICAqXG4gICAqIEBwYXJhbSBub3RpZmljYXRpb25fZW5kcG9pbnRzIEVuZHBvaW50cy5cbiAgICogQHBhcmFtIG9wdHMgT3B0aW9uYWwgcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gb3B0cy5tZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0c1xuICAgKiBAcmV0dXJucyBPcmcgaW5mb1xuICAgKi9cbiAgYXN5bmMgc2V0Tm90aWZpY2F0aW9uRW5kcG9pbnRzKFxuICAgIG5vdGlmaWNhdGlvbl9lbmRwb2ludHM6IE5vdGlmaWNhdGlvbkVuZHBvaW50Q29uZmlndXJhdGlvbltdLFxuICAgIG9wdHM/OiB7IG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyB9LFxuICApIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy51cGRhdGUoeyBub3RpZmljYXRpb25fZW5kcG9pbnRzIH0sIG9wdHM/Lm1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCByZXF1aXJlZCBNRkEgdHlwZXMgZm9yIGFjdGlvbnMgaW1wbGljaXRseSByZXF1aXJpbmcgTUZBIChzZWUge0BsaW5rIE1mYVByb3RlY3RlZEFjdGlvbn0pLlxuICAgKlxuICAgKiBAcGFyYW0gYWxsb3dlZF9tZmFfdHlwZXMgQXNzaWdubWVudCBvZiBNRkEgdHlwZXMgdG8gYWN0aW9ucyB0aGF0IGltcGxpY2l0bHkgcmVxdWlyZSBNRkEuXG4gICAqIEBwYXJhbSBvcHRzIE9wdGlvbmFsIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9wdHMubWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdHNcbiAgICogQHJldHVybnMgT3JnIGluZm9cbiAgICovXG4gIGFzeW5jIHNldEFsbG93ZWRNZmFUeXBlcyhcbiAgICBhbGxvd2VkX21mYV90eXBlczogUGFydGlhbDxSZWNvcmQ8TWZhUHJvdGVjdGVkQWN0aW9uLCBNZmFUeXBlW10+PixcbiAgICBvcHRzPzogeyBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMgfSxcbiAgKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudXBkYXRlKHsgYWxsb3dlZF9tZmFfdHlwZXMgfSwgb3B0cz8ubWZhUmVjZWlwdCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHNpZ25pbmcga2V5LlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiBrZXkgdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0gb3duZXJJZCBUaGUgb3duZXIgb2YgdGhlIGtleS4gRGVmYXVsdHMgdG8gdGhlIHNlc3Npb24ncyB1c2VyLlxuICAgKiBAcGFyYW0gcHJvcHMgQWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIHNldCBvbiB0aGUgbmV3IGtleS5cbiAgICogQHJldHVybnMgVGhlIG5ldyBrZXlzLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlS2V5KHR5cGU6IEtleVR5cGUsIG93bmVySWQ/OiBzdHJpbmcsIHByb3BzPzogQ3JlYXRlS2V5UHJvcGVydGllcyk6IFByb21pc2U8S2V5PiB7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5rZXlzQ3JlYXRlKHR5cGUsIDEsIG93bmVySWQsIHByb3BzKTtcbiAgICByZXR1cm4gbmV3IEtleSh0aGlzLiNhcGlDbGllbnQsIGtleXNbMF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgc2lnbmluZyBrZXlzLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiBrZXkgdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0gY291bnQgVGhlIG51bWJlciBvZiBrZXlzIHRvIGNyZWF0ZS5cbiAgICogQHBhcmFtIG93bmVySWQgVGhlIG93bmVyIG9mIHRoZSBrZXlzLiBEZWZhdWx0cyB0byB0aGUgc2Vzc2lvbidzIHVzZXIuXG4gICAqIEBwYXJhbSBwcm9wcyBBZGRpdGlvbmFsIHByb3BlcnRpZXMgdG8gc2V0IG9uIHRoZSBuZXcga2V5cy5cbiAgICogQHJldHVybnMgVGhlIG5ldyBrZXlzLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlS2V5cyhcbiAgICB0eXBlOiBLZXlUeXBlLFxuICAgIGNvdW50OiBudW1iZXIsXG4gICAgb3duZXJJZD86IHN0cmluZyxcbiAgICBwcm9wcz86IENyZWF0ZUtleVByb3BlcnRpZXMsXG4gICk6IFByb21pc2U8S2V5W10+IHtcbiAgICBjb25zdCBrZXlzID0gYXdhaXQgdGhpcy4jYXBpQ2xpZW50LmtleXNDcmVhdGUodHlwZSwgY291bnQsIG93bmVySWQsIHByb3BzKTtcbiAgICByZXR1cm4ga2V5cy5tYXAoKGspID0+IG5ldyBLZXkodGhpcy4jYXBpQ2xpZW50LCBrKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IChmaXJzdC1wYXJ0eSkgdXNlciBpbiB0aGUgb3JnYW5pemF0aW9uIGFuZCBzZW5kcyBhbiBpbnZpdGF0aW9uIHRvIHRoYXQgdXNlci5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50Lm9yZ1VzZXJJbnZpdGV9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCBpbnZpdGVzIGEgdXNlclxuICAgKi9cbiAgZ2V0IGNyZWF0ZVVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FwaUNsaWVudC5vcmdVc2VySW52aXRlLmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYW4gZXhpc3RpbmcgdXNlci5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50Lm9yZ1VzZXJEZWxldGV9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCBkZWxldGVzIGEgdXNlclxuICAgKi9cbiAgZ2V0IGRlbGV0ZVVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FwaUNsaWVudC5vcmdVc2VyRGVsZXRlLmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgT0lEQyB1c2VyLiBUaGlzIGNhbiBiZSBhIGZpcnN0LXBhcnR5IFwiTWVtYmVyXCIgb3IgdGhpcmQtcGFydHkgXCJBbGllblwiLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQub3JnVXNlckNyZWF0ZU9pZGN9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGFuIE9JREMgdXNlciwgcmVzb2x2aW5nIHRvIHRoZSBuZXcgdXNlcidzIElEXG4gICAqL1xuICBnZXQgY3JlYXRlT2lkY1VzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FwaUNsaWVudC5vcmdVc2VyQ3JlYXRlT2lkYy5iaW5kKHRoaXMuI2FwaUNsaWVudCk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGFuIGV4aXN0aW5nIE9JREMgdXNlci5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50Lm9yZ1VzZXJEZWxldGVPaWRjfSwgc2VlIGl0cyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgZGVsZXRlcyBhbiBPSURDIHVzZXJcbiAgICovXG4gIGdldCBkZWxldGVPaWRjVXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50Lm9yZ1VzZXJEZWxldGVPaWRjLmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhbiBNRkEgcmVzZXQgZm9yIGEgdXNlciBpbiB0aGUgb3JnLiBUaGUgcmVzZXQgaXMgY29tcGxldGVkIGJ5XG4gICAqIHRoZSB1c2VyIHZpYSB7QGxpbmsgQ3ViZVNpZ25lckNsaWVudC5yZXNldFVzZXJNZmFDb21wbGV0ZX0uXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIEFwaUNsaWVudC5yZXNldFVzZXJNZmFJbml0fSwgc2VlIGl0cyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgaW5pdGlhdGVzIGFuIE1GQSByZXNldCBmb3IgYSB1c2VyXG4gICAqL1xuICBnZXQgcmVzZXRVc2VyTWZhSW5pdCgpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50LnJlc2V0VXNlck1mYUluaXQuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYWxsIHVzZXJzIGluIHRoZSBvcmdhbml6YXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBzZWFyY2hRdWVyeSBPcHRpb25hbCBxdWVyeSBzdHJpbmcuIElmIGRlZmluZWQsIGFsbCByZXR1cm5lZCB1c2VycyB3aWxsIGNvbnRhaW4gdGhpcyBzdHJpbmcgaW4gdGhlaXIgbmFtZSBvciBlbWFpbC5cbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgdXNlcnNcbiAgICovXG4gIGFzeW5jIHVzZXJzKHNlYXJjaFF1ZXJ5Pzogc3RyaW5nKTogUHJvbWlzZTxVc2VySW5PcmdJbmZvW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy4jYXBpQ2xpZW50Lm9yZ1VzZXJzTGlzdCh1bmRlZmluZWQsIHNlYXJjaFF1ZXJ5KS5mZXRjaEFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgdXNlcnMgaW4gdGhlIG9yZ2FuaXphdGlvbiAocGFnaW5hdGVkKS5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50Lm9yZ1VzZXJzTGlzdH0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwYWdpbmF0ZWQgbGlzdCBvZiB1c2Vyc1xuICAgKi9cbiAgZ2V0IHVzZXJzUGFnaW5hdGVkKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQub3JnVXNlcnNMaXN0LmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdXNlciBieSBpZC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50Lm9yZ1VzZXJHZXR9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0byBhIHVzZXIncyBpbmZvXG4gICAqL1xuICBnZXQgZ2V0VXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50Lm9yZ1VzZXJHZXQuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB1c2VyIGJ5IGVtYWlsLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQub3JnVXNlckdldEJ5RW1haWx9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0byBhIHVzZXIncyBpbmZvXG4gICAqL1xuICBnZXQgZ2V0VXNlckJ5RW1haWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FwaUNsaWVudC5vcmdVc2VyR2V0QnlFbWFpbC5iaW5kKHRoaXMuI2FwaUNsaWVudCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHVzZXIgYnkgT0lEQyBJRC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50Lm9yZ1VzZXJHZXRCeU9pZGN9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0byBhIHVzZXIncyBpbmZvXG4gICAqL1xuICBnZXQgZ2V0VXNlckJ5T2lkYygpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50Lm9yZ1VzZXJHZXRCeU9pZGMuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBhIHVzZXIgaW4gdGhpcyBvcmdcbiAgICpcbiAgICogQHBhcmFtIHVzZXJJZCBUaGUgdXNlciB3aG9zZSBtZW1iZXJzaGlwIHRvIGVuYWJsZVxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCB1c2VyJ3MgbWVtYmVyc2hpcFxuICAgKi9cbiAgYXN5bmMgZW5hYmxlVXNlcih1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8VXNlckluT3JnSW5mbz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLiNhcGlDbGllbnQub3JnVXBkYXRlVXNlck1lbWJlcnNoaXAodXNlcklkLCB7IGRpc2FibGVkOiBmYWxzZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIGEgdXNlciBpbiB0aGlzIG9yZ1xuICAgKlxuICAgKiBAcGFyYW0gdXNlcklkIFRoZSB1c2VyIHdob3NlIG1lbWJlcnNoaXAgdG8gZGlzYWJsZVxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCB1c2VyJ3MgbWVtYmVyc2hpcFxuICAgKi9cbiAgYXN5bmMgZGlzYWJsZVVzZXIodXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPFVzZXJJbk9yZ0luZm8+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy4jYXBpQ2xpZW50Lm9yZ1VwZGF0ZVVzZXJNZW1iZXJzaGlwKHVzZXJJZCwgeyBkaXNhYmxlZDogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGFjY2Vzc2libGUga2V5cyBpbiB0aGUgb3JnYW5pemF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBPcHRpb25hbCBmaWx0ZXJpbmcgcHJvcGVydGllcy5cbiAgICogQHJldHVybnMgVGhlIGtleXMuXG4gICAqL1xuICBhc3luYyBrZXlzKHByb3BzPzogS2V5RmlsdGVyKTogUHJvbWlzZTxLZXlbXT4ge1xuICAgIGNvbnN0IHBhZ2luYXRvciA9IHRoaXMuI2FwaUNsaWVudC5rZXlzTGlzdChcbiAgICAgIHByb3BzPy50eXBlLFxuICAgICAgcHJvcHM/LnBhZ2UsXG4gICAgICBwcm9wcz8ub3duZXIsXG4gICAgICBwcm9wcz8uc2VhcmNoLFxuICAgICk7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IHBhZ2luYXRvci5mZXRjaCgpO1xuICAgIHJldHVybiBrZXlzLm1hcCgoaykgPT4gbmV3IEtleSh0aGlzLiNhcGlDbGllbnQsIGspKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHJvbGUuXG4gICAqIEByZXR1cm5zIFRoZSBuZXcgcm9sZS5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZVJvbGUobmFtZT86IHN0cmluZyk6IFByb21pc2U8Um9sZT4ge1xuICAgIGNvbnN0IHJvbGVJZCA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5yb2xlQ3JlYXRlKG5hbWUpO1xuICAgIGNvbnN0IHJvbGVJbmZvID0gYXdhaXQgdGhpcy4jYXBpQ2xpZW50LnJvbGVHZXQocm9sZUlkKTtcbiAgICByZXR1cm4gbmV3IFJvbGUodGhpcy4jYXBpQ2xpZW50LCByb2xlSW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgcm9sZSBieSBpZCBvciBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gcm9sZUlkIFRoZSBpZCBvciBuYW1lIG9mIHRoZSByb2xlIHRvIGdldC5cbiAgICogQHJldHVybnMgVGhlIHJvbGUuXG4gICAqL1xuICBhc3luYyBnZXRSb2xlKHJvbGVJZDogc3RyaW5nKTogUHJvbWlzZTxSb2xlPiB7XG4gICAgY29uc3Qgcm9sZUluZm8gPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQucm9sZUdldChyb2xlSWQpO1xuICAgIHJldHVybiBuZXcgUm9sZSh0aGlzLiNhcGlDbGllbnQsIHJvbGVJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCB0aGUgcm9sZXMgaW4gdGhlIG9yZ1xuICAgKlxuICAgKiBAcGFyYW0gcGFnZSBUaGUgcGFnaW5hdG9yIG9wdGlvbnNcbiAgICogQHJldHVybnMgVGhlIHJvbGVzXG4gICAqL1xuICBhc3luYyByb2xlcyhwYWdlOiBQYWdlT3B0cyk6IFByb21pc2U8Um9sZVtdPiB7XG4gICAgY29uc3Qgcm9sZXMgPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQucm9sZXNMaXN0KHBhZ2UpLmZldGNoKCk7XG4gICAgcmV0dXJuIHJvbGVzLm1hcCgocikgPT4gbmV3IFJvbGUodGhpcy4jYXBpQ2xpZW50LCByKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IG5hbWVkIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHBvbGljeS5cbiAgICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgdGhlIHBvbGljeS5cbiAgICogQHBhcmFtIHJ1bGVzIFRoZSBwb2xpY3kgcnVsZXMuXG4gICAqIEBwYXJhbSBhY2wgT3B0aW9uYWwgbGlzdCBvZiBwb2xpY3kgYWNjZXNzIGNvbnRyb2wgZW50cmllcy5cbiAgICogQHJldHVybnMgVGhlIG5ldyBwb2xpY3kuXG4gICAqL1xuICBhc3luYyBjcmVhdGVQb2xpY3k8VHlwZSBleHRlbmRzIFwiS2V5XCIgfCBcIlJvbGVcIj4oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHR5cGU6IFR5cGUsXG4gICAgcnVsZXM6IFR5cGUgZXh0ZW5kcyBcIktleVwiID8gS2V5UG9saWN5IDogUm9sZVBvbGljeSxcbiAgICBhY2w/OiBQb2xpY3lBY2wsXG4gICk6IFByb21pc2U8VHlwZSBleHRlbmRzIFwiS2V5XCIgPyBOYW1lZEtleVBvbGljeSA6IE5hbWVkUm9sZVBvbGljeT4ge1xuICAgIGNvbnN0IHBvbGljeUluZm8gPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQucG9saWN5Q3JlYXRlKG5hbWUsIHR5cGUsIHJ1bGVzLCBhY2wpO1xuICAgIGNvbnN0IHBvbGljeSA9IE5hbWVkUG9saWN5LmZyb21JbmZvKHRoaXMuI2FwaUNsaWVudCwgcG9saWN5SW5mbyk7XG4gICAgcmV0dXJuIHBvbGljeSBhcyBUeXBlIGV4dGVuZHMgXCJLZXlcIiA/IE5hbWVkS2V5UG9saWN5IDogTmFtZWRSb2xlUG9saWN5O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIG5hbWVkIHBvbGljeSBieSBpZCBvciBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gcG9saWN5SWQgVGhlIGlkIG9yIG5hbWUgb2YgdGhlIHBvbGljeSB0byBnZXQuXG4gICAqIEByZXR1cm5zIFRoZSBwb2xpY3kuXG4gICAqL1xuICBhc3luYyBnZXRQb2xpY3kocG9saWN5SWQ6IHN0cmluZyk6IFByb21pc2U8TmFtZWRQb2xpY3k+IHtcbiAgICBjb25zdCBwb2xpY3lJbmZvID0gYXdhaXQgdGhpcy4jYXBpQ2xpZW50LnBvbGljeUdldChwb2xpY3lJZCwgXCJsYXRlc3RcIik7XG4gICAgcmV0dXJuIE5hbWVkUG9saWN5LmZyb21JbmZvKHRoaXMuI2FwaUNsaWVudCwgcG9saWN5SW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgQ29uZmlkZW50aWFsIENsb3VkIEZ1bmN0aW9uIGJ5IG5hbWUgb3IgbmFtZWQgcG9saWN5IElELlxuICAgKlxuICAgKiBAcGFyYW0gZnVuY3Rpb25JZCBUaGUgbmFtZSBvciBuYW1lZCBwb2xpY3kgSUQgb2YgdGhlIGZ1bmN0aW9uIHRvIGdldC5cbiAgICogQHJldHVybnMgVGhlIEMyRiBmdW5jdGlvbi5cbiAgICogQHRocm93cyBpZiBuYW1lIG9yIElEIGlzIG5vdCBhc3NvY2lhdGVkIHRvIGEgQzJGIGZ1bmN0aW9uIChpLmUuIHRoZSBuYW1lL2lkIGlzIGZvciBhIGtleSBvciByb2xlIG5hbWVkIHBvbGljeSlcbiAgICovXG4gIGFzeW5jIGdldEZ1bmN0aW9uKGZ1bmN0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8QzJGRnVuY3Rpb24+IHtcbiAgICBjb25zdCBmdW5jdGlvbkluZm8gPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQucG9saWN5R2V0KGZ1bmN0aW9uSWQsIFwibGF0ZXN0XCIpO1xuICAgIGlmIChmdW5jdGlvbkluZm8ucG9saWN5X3R5cGUgIT09IFwiV2FzbVwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGAke2Z1bmN0aW9uSWR9IGlzIG5vdCBhIFdhc20gZnVuY3Rpb24sIGl0IGlzIGEgJHtmdW5jdGlvbkluZm8ucG9saWN5X3R5cGV9IG5hbWVkIHBvbGljeWAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEMyRkZ1bmN0aW9uKHRoaXMuI2FwaUNsaWVudCwgZnVuY3Rpb25JbmZvIGFzIEMyRkluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIHRoZSBuYW1lZCBwb2xpY2llcyBpbiB0aGUgb3JnLlxuICAgKlxuICAgKiBAcGFyYW0gcGFnZSBQYWdpbmF0aW9uIG9wdGlvbnMuIERlZmF1bHRzIHRvIGZldGNoaW5nIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICogQHBhcmFtIHBvbGljeVR5cGUgVGhlIG9wdGlvbmFsIHR5cGUgb2YgcG9saWNpZXMgdG8gZmV0Y2guIERlZmF1bHRzIHRvIGZldGNoaW5nIGFsbCBuYW1lZCBwb2xpY2llcyByZWdhcmRsZXNzIG9mIHR5cGUuXG4gICAqIEByZXR1cm5zIFRoZSBwb2xpY2llcy5cbiAgICovXG4gIGFzeW5jIHBvbGljaWVzKHBhZ2U/OiBQYWdlT3B0cywgcG9saWN5VHlwZT86IFBvbGljeVR5cGUpOiBQcm9taXNlPE5hbWVkUG9saWN5W10+IHtcbiAgICBjb25zdCBwb2xpY2llcyA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5wb2xpY2llc0xpc3QocGFnZSwgcG9saWN5VHlwZSkuZmV0Y2goKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwKSA9PiBOYW1lZFBvbGljeS5mcm9tSW5mbyh0aGlzLiNhcGlDbGllbnQsIHApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCB0aGUgQzJGIGZ1bmN0aW9ucyBpbiB0aGUgb3JnLlxuICAgKlxuICAgKiBAcGFyYW0gcGFnZSBUaGUgcGFnaW5hdG9yIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIFRoZSBDMkYgZnVuY3Rpb25zLlxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb25zKHBhZ2U/OiBQYWdlT3B0cyk6IFByb21pc2U8QzJGRnVuY3Rpb25bXT4ge1xuICAgIGNvbnN0IHBvbGljaWVzID0gYXdhaXQgdGhpcy4jYXBpQ2xpZW50LnBvbGljaWVzTGlzdChwYWdlLCBcIldhc21cIikuZmV0Y2goKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChkYXRhKSA9PiBuZXcgQzJGRnVuY3Rpb24odGhpcy4jYXBpQ2xpZW50LCBkYXRhIGFzIEMyRkluZm8pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgQ29uZmlkZW50aWFsIENsb3VkIEZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBwb2xpY3kgVGhlIFdhc20gZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBhY2wgT3B0aW9uYWwgbGlzdCBvZiBwb2xpY3kgYWNjZXNzIGNvbnRyb2wgZW50cmllcy5cbiAgICogQHJldHVybnMgVGhlIEMyRiBmdW5jdGlvblxuICAgKi9cbiAgYXN5bmMgY3JlYXRlV2FzbUZ1bmN0aW9uKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBwb2xpY3k6IFVpbnQ4QXJyYXksXG4gICAgYWNsPzogUG9saWN5QWNsLFxuICApOiBQcm9taXNlPEMyRkZ1bmN0aW9uPiB7XG4gICAgY29uc3QgaGFzaCA9IGF3YWl0IHVwbG9hZFdhc21GdW5jdGlvbih0aGlzLiNhcGlDbGllbnQsIHBvbGljeSk7XG4gICAgY29uc3QgcG9saWN5SW5mbyA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5wb2xpY3lDcmVhdGUoXG4gICAgICBuYW1lLFxuICAgICAgXCJXYXNtXCIsXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBoYXNoLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjbCxcbiAgICApO1xuICAgIHJldHVybiBuZXcgQzJGRnVuY3Rpb24odGhpcy4jYXBpQ2xpZW50LCBwb2xpY3lJbmZvIGFzIEMyRkluZm8pO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHRoZSBDb25maWRlbnRpYWwgQ2xvdWQgRnVuY3Rpb25zIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBvcmcuICovXG4gIGFzeW5jIGMyZkNvbmZpZ3VyYXRpb24oKTogUHJvbWlzZTxDMkZDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goKTtcbiAgICByZXR1cm4gZGF0YS5wb2xpY3lfZW5naW5lX2NvbmZpZ3VyYXRpb247XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBDb25maWRlbnRpYWwgQ2xvdWQgRnVuY3Rpb25zIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBvcmcuXG4gICAqIE5vdGUgdGhhdCB0aGlzIG92ZXJ3cml0ZXMgYW55IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdzIENvbmZpZGVudGlhbCBDbG91ZCBGdW5jdGlvbnMgY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIG9wdHMgT3B0aW9uYWwgcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gb3B0cy5tZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0c1xuICAgKiBAcmV0dXJucyBPcmcgaW5mb1xuICAgKi9cbiAgYXN5bmMgc2V0QzJGQ29uZmlndXJhdGlvbihjb25maWdzOiBDMkZDb25maWd1cmF0aW9uLCBvcHRzPzogeyBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMgfSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnVwZGF0ZShcbiAgICAgIHtcbiAgICAgICAgcG9saWN5X2VuZ2luZV9jb25maWd1cmF0aW9uOiBjb25maWdzLFxuICAgICAgfSxcbiAgICAgIG9wdHM/Lm1mYVJlY2VpcHQsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXJpdmUgYSBrZXkgb2YgdGhlIGdpdmVuIHR5cGUgdXNpbmcgdGhlIGdpdmVuIGRlcml2YXRpb24gcGF0aCBhbmQgbW5lbW9uaWMuXG4gICAqIFRoZSBvd25lciBvZiB0aGUgZGVyaXZlZCBrZXkgd2lsbCBiZSB0aGUgb3duZXIgb2YgdGhlIG1uZW1vbmljLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIGtleSB0byBkZXJpdmUgZnJvbSB0aGUgbW5lbW9uaWMuXG4gICAqIEBwYXJhbSBkZXJpdmF0aW9uUGF0aCBNbmVtb25pYyBkZXJpdmF0aW9uIHBhdGggdXNlZCB0byBnZW5lcmF0ZSBuZXcga2V5LlxuICAgKiBAcGFyYW0gbW5lbW9uaWNJZCBtYXRlcmlhbF9pZCBvZiBtbmVtb25pYyBrZXkgdXNlZCB0byBkZXJpdmUgdGhlIG5ldyBrZXkuXG4gICAqIEBwYXJhbSBwcm9wcyBBZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIGRlcml2YXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIG5ld2x5IGRlcml2ZWQga2V5IG9yIHVuZGVmaW5lZCBpZiBpdCBhbHJlYWR5IGV4aXN0cy5cbiAgICovXG4gIGFzeW5jIGRlcml2ZUtleShcbiAgICB0eXBlOiBLZXlUeXBlLFxuICAgIGRlcml2YXRpb25QYXRoOiBzdHJpbmcsXG4gICAgbW5lbW9uaWNJZDogc3RyaW5nLFxuICAgIHByb3BzPzogSW1wb3J0RGVyaXZlS2V5UHJvcGVydGllcyxcbiAgKTogUHJvbWlzZTxLZXkgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuZGVyaXZlS2V5cyh0eXBlLCBbZGVyaXZhdGlvblBhdGhdLCBtbmVtb25pY0lkLCBwcm9wcykpWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcml2ZSBhIHNldCBvZiBrZXlzIG9mIHRoZSBnaXZlbiB0eXBlIHVzaW5nIHRoZSBnaXZlbiBkZXJpdmF0aW9uIHBhdGhzIGFuZCBtbmVtb25pYy5cbiAgICpcbiAgICogVGhlIG93bmVyIG9mIHRoZSBkZXJpdmVkIGtleXMgd2lsbCBiZSB0aGUgb3duZXIgb2YgdGhlIG1uZW1vbmljLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIGtleSB0byBkZXJpdmUgZnJvbSB0aGUgbW5lbW9uaWMuXG4gICAqIEBwYXJhbSBkZXJpdmF0aW9uUGF0aHMgTW5lbW9uaWMgZGVyaXZhdGlvbiBwYXRocyB1c2VkIHRvIGdlbmVyYXRlIG5ldyBrZXkuXG4gICAqIEBwYXJhbSBtbmVtb25pY0lkIG1hdGVyaWFsX2lkIG9mIG1uZW1vbmljIGtleSB1c2VkIHRvIGRlcml2ZSB0aGUgbmV3IGtleS5cbiAgICogQHBhcmFtIHByb3BzIEFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgZGVyaXZhdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgbmV3bHkgZGVyaXZlZCBrZXlzLlxuICAgKi9cbiAgYXN5bmMgZGVyaXZlS2V5cyhcbiAgICB0eXBlOiBLZXlUeXBlLFxuICAgIGRlcml2YXRpb25QYXRoczogc3RyaW5nW10sXG4gICAgbW5lbW9uaWNJZDogc3RyaW5nLFxuICAgIHByb3BzPzogSW1wb3J0RGVyaXZlS2V5UHJvcGVydGllcyxcbiAgKTogUHJvbWlzZTxLZXlbXT4ge1xuICAgIGNvbnN0IGtleXMgPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQua2V5c0Rlcml2ZSh0eXBlLCBkZXJpdmF0aW9uUGF0aHMsIG1uZW1vbmljSWQsIHByb3BzKTtcbiAgICByZXR1cm4ga2V5cy5tYXAoKGspID0+IG5ldyBLZXkodGhpcy4jYXBpQ2xpZW50LCBrKSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIGVpdGhlciBhIG5ldyBvciBleGlzdGluZyBtbmVtb25pYyB0byBkZXJpdmUga2V5cyBvZiBvbmUgb3IgbW9yZVxuICAgKiBzcGVjaWZpZWQgdHlwZXMgdmlhIHNwZWNpZmllZCBkZXJpdmF0aW9uIHBhdGhzLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5VHlwZXNBbmREZXJpdmF0aW9uUGF0aHMgQSBsaXN0IG9mIGBLZXlUeXBlQW5kRGVyaXZhdGlvblBhdGhgIG9iamVjdHMgc3BlY2lmeWluZyB0aGUga2V5cyB0byBiZSBkZXJpdmVkXG4gICAqIEBwYXJhbSBwcm9wcyBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGRlcml2YXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBuZXdseSBkZXJpdmVkIGtleXMuXG4gICAqL1xuICBhc3luYyBkZXJpdmVNdWx0aXBsZUtleVR5cGVzKFxuICAgIGtleVR5cGVzQW5kRGVyaXZhdGlvblBhdGhzOiBLZXlUeXBlQW5kRGVyaXZhdGlvblBhdGhbXSxcbiAgICBwcm9wcz86IERlcml2ZU11bHRpcGxlS2V5VHlwZXNQcm9wZXJ0aWVzLFxuICApOiBQcm9taXNlPEtleVtdPiB7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5rZXlzRGVyaXZlTXVsdGkoa2V5VHlwZXNBbmREZXJpdmF0aW9uUGF0aHMsIHByb3BzKTtcbiAgICByZXR1cm4ga2V5cy5tYXAoKGspID0+IG5ldyBLZXkodGhpcy4jYXBpQ2xpZW50LCBrKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEga2V5IGJ5IGlkLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5SWQgVGhlIGlkIG9mIHRoZSBrZXkgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBUaGUga2V5LlxuICAgKi9cbiAgYXN5bmMgZ2V0S2V5KGtleUlkOiBzdHJpbmcpOiBQcm9taXNlPEtleT4ge1xuICAgIGNvbnN0IGtleUluZm8gPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQua2V5R2V0KGtleUlkKTtcbiAgICByZXR1cm4gbmV3IEtleSh0aGlzLiNhcGlDbGllbnQsIGtleUluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGtleSBieSBpdHMgbWF0ZXJpYWwgaWQgKGUuZy4sIGFkZHJlc3MpLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5VHlwZSBUaGUga2V5IHR5cGUuXG4gICAqIEBwYXJhbSBtYXRlcmlhbElkIFRoZSBtYXRlcmlhbCBpZCBvZiB0aGUga2V5IHRvIGdldC5cbiAgICogQHJldHVybnMgVGhlIGtleS5cbiAgICovXG4gIGFzeW5jIGdldEtleUJ5TWF0ZXJpYWxJZChrZXlUeXBlOiBLZXlUeXBlLCBtYXRlcmlhbElkOiBzdHJpbmcpOiBQcm9taXNlPEtleT4ge1xuICAgIGNvbnN0IGtleUluZm8gPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQua2V5R2V0QnlNYXRlcmlhbElkKGtleVR5cGUsIG1hdGVyaWFsSWQpO1xuICAgIHJldHVybiBuZXcgS2V5KHRoaXMuI2FwaUNsaWVudCwga2V5SW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY29udGFjdC5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgZm9yIHRoZSBuZXcgY29udGFjdC5cbiAgICogQHBhcmFtIGFkZHJlc3NlcyBUaGUgYWRkcmVzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGFjdC5cbiAgICogQHBhcmFtIG1ldGFkYXRhIE1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGFjdC4gSW50ZW5kZWQgZm9yIHVzZSBhcyBhIGRlc2NyaXB0aW9uLlxuICAgKiBAcGFyYW0gZWRpdFBvbGljeSBUaGUgZWRpdCBwb2xpY3kgZm9yIHRoZSBjb250YWN0LCBkZXRlcm1pbmluZyB3aGVuIGFuZCB3aG8gY2FuIGVkaXQgdGhpcyBjb250YWN0LlxuICAgKiBAcGFyYW0gbGFiZWxzIFRoZSBvcHRpb25hbCBsYWJlbHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250YWN0LlxuICAgKiBAcmV0dXJucyBUaGUgbmV3bHktY3JlYXRlZCBjb250YWN0LlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlQ29udGFjdChcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgYWRkcmVzc2VzPzogQWRkcmVzc01hcCxcbiAgICBtZXRhZGF0YT86IEpzb25WYWx1ZSxcbiAgICBlZGl0UG9saWN5PzogRWRpdFBvbGljeSxcbiAgICBsYWJlbHM/OiBDb250YWN0TGFiZWxbXSxcbiAgKTogUHJvbWlzZTxDb250YWN0PiB7XG4gICAgY29uc3QgY29udGFjdEluZm8gPSBhd2FpdCB0aGlzLiNhcGlDbGllbnQuY29udGFjdENyZWF0ZShcbiAgICAgIG5hbWUsXG4gICAgICBhZGRyZXNzZXMsXG4gICAgICBtZXRhZGF0YSxcbiAgICAgIGVkaXRQb2xpY3ksXG4gICAgICBsYWJlbHMsXG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgQ29udGFjdCh0aGlzLiNhcGlDbGllbnQsIGNvbnRhY3RJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBjb250YWN0IGJ5IGl0cyBpZC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRhY3RJZCBUaGUgaWQgb2YgdGhlIGNvbnRhY3QgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBUaGUgY29udGFjdC5cbiAgICovXG4gIGFzeW5jIGdldENvbnRhY3QoY29udGFjdElkOiBzdHJpbmcpOiBQcm9taXNlPENvbnRhY3Q+IHtcbiAgICBjb25zdCBjb250YWN0SW5mbyA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5jb250YWN0R2V0KGNvbnRhY3RJZCk7XG5cbiAgICByZXR1cm4gbmV3IENvbnRhY3QodGhpcy4jYXBpQ2xpZW50LCBjb250YWN0SW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBjb250YWN0cyBpbiB0aGUgb3JnYW5pemF0aW9uLCBvcHRpb25hbGx5IG1hdGNoaW5nIHRoZSBzZWFyY2ggcXVlcnkuXG4gICAqXG4gICAqIEBwYXJhbSBzZWFyY2ggVGhlIG9wdGlvbmFsIHNlYXJjaCBxdWVyeS4gRWl0aGVyOlxuICAgKiAgLSBgbGFiZWw6Li4uYCwgd2hpY2ggd2lsbCByZXR1cm4gY29udGFjdHMgd2l0aCB0aGUgbGFiZWwgcHJvdmlkZWQgYWZ0ZXIgdGhlICc6JyxcbiAgICogIC0gYW4gZXhhY3QgYWRkcmVzcyBzZWFyY2gsIHdoaWNoIHJldHVybnMgY29udGFjdHMgd2l0aCB0aGUgcHJvdmlkZWQgQ29udGFjdEFkZHJlc3NEYXRhLFxuICAgKiAgLSBvciBhbiBhZGRyZXNzIHByZWZpeCBzZWFyY2gsIHdoZXJlIGFsbCByZXR1cm5lZCBjb250YWN0cyB3aWxsIGhhdmUgYW4gYWRkcmVzcyBzdGFydGluZyB3aXRoLCBvciBlcXVhbGluZywgdGhlIGdpdmVuIHNlYXJjaCBzdHJpbmcuXG4gICAqIEByZXR1cm5zIEFsbCBjb250YWN0cy5cbiAgICovXG4gIGFzeW5jIGNvbnRhY3RzKFxuICAgIHNlYXJjaD86IGBsYWJlbCR7Q29udGFjdExhYmVsfWAgfCBDb250YWN0QWRkcmVzc0RhdGEgfCBzdHJpbmcsXG4gICk6IFByb21pc2U8Q29udGFjdFtdPiB7XG4gICAgbGV0IGNvbnRhY3RzO1xuXG4gICAgaWYgKHNlYXJjaCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBzZWFyY2ggIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnRhY3RzID0gYXdhaXQgdGhpcy4jYXBpQ2xpZW50LmNvbnRhY3RMb29rdXBCeUFkZHJlc3Moc2VhcmNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGFnaW5hdG9yID0gdGhpcy4jYXBpQ2xpZW50LmNvbnRhY3RzTGlzdCh1bmRlZmluZWQsIHNlYXJjaCk7XG4gICAgICBjb250YWN0cyA9IGF3YWl0IHBhZ2luYXRvci5mZXRjaCgpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250YWN0cy5tYXAoKGMpID0+IG5ldyBDb250YWN0KHRoaXMuI2FwaUNsaWVudCwgYykpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGFpbiBhIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQuaWRlbnRpdHlQcm92ZX0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRvIGFuIGlkZW50aXR5IHByb29mXG4gICAqL1xuICBnZXQgcHJvdmVJZGVudGl0eSgpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50LmlkZW50aXR5UHJvdmUuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgZ2l2ZW4gcHJvb2Ygb2YgT0lEQyBhdXRoZW50aWNhdGlvbiBpcyB2YWxpZC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50LmlkZW50aXR5VmVyaWZ5fSwgc2VlIGl0cyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdmVyaWZpZXMgYSBwcm9vZiBvZiBpZGVudGl0eSwgdGhyb3dpbmcgaWYgaW52YWxpZFxuICAgKi9cbiAgZ2V0IHZlcmlmeUlkZW50aXR5KCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQuaWRlbnRpdHlWZXJpZnkuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnkgaXRzIGlkLlxuICAgKlxuICAgKiBAcGFyYW0gbWZhSWQgTUZBIHJlcXVlc3QgSURcbiAgICogQHJldHVybnMgVGhlIE1GQSByZXF1ZXN0XG4gICAqL1xuICBnZXRNZmFSZXF1ZXN0KG1mYUlkOiBNZmFJZCk6IE1mYVJlcXVlc3Qge1xuICAgIHJldHVybiBuZXcgTWZhUmVxdWVzdCh0aGlzLiNhcGlDbGllbnQsIG1mYUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IHBlbmRpbmcgTUZBIHJlcXVlc3RzIGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgdXNlci5cbiAgICpcbiAgICogQHBhcmFtIHBhZ2UgUGFnaW5hdGlvbiBvcHRpb25zLiBEZWZhdWx0cyB0byBmZXRjaGluZyB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAqIEByZXR1cm5zIFRoZSBNRkEgcmVxdWVzdHMuXG4gICAqL1xuICBhc3luYyBtZmFSZXF1ZXN0cyhwYWdlPzogUGFnZU9wdHMpOiBQcm9taXNlPE1mYVJlcXVlc3RbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLiNhcGlDbGllbnRcbiAgICAgIC5tZmFMaXN0KHBhZ2UpXG4gICAgICAuZmV0Y2goKVxuICAgICAgLnRoZW4oKG1mYUluZm9zKSA9PiBtZmFJbmZvcy5tYXAoKG1mYUluZm8pID0+IG5ldyBNZmFSZXF1ZXN0KHRoaXMuI2FwaUNsaWVudCwgbWZhSW5mbykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIGFuIEV0aDIvQmVhY29uLWNoYWluIGRlcG9zaXQgKG9yIHN0YWtpbmcpIG1lc3NhZ2UuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIEFwaUNsaWVudC5zaWduU3Rha2V9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0byBhIHN0YWtlIHJlc3BvbnNlLlxuICAgKi9cbiAgZ2V0IHN0YWtlKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQuc2lnblN0YWtlLmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZykuIFRoZSBsaWZldGltZSBvZlxuICAgKiB0aGUgbmV3IHNlc3Npb24gaXMgc2lsZW50bHkgdHJ1bmNhdGVkIHRvIHRoYXQgb2YgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50LnNlc3Npb25DcmVhdGV9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0byBuZXcgc2lnbmVyIHNlc3Npb24gaW5mby5cbiAgICovXG4gIGdldCBjcmVhdGVTZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQuc2Vzc2lvbkNyZWF0ZS5iaW5kKHRoaXMuI2FwaUNsaWVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpIHdob3NlIGxpZmV0aW1lIHBvdGVudGlhbGx5XG4gICAqIGV4dGVuZHMgdGhlIGxpZmV0aW1lIG9mIHRoZSBjdXJyZW50IHNlc3Npb24uICBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQuc2Vzc2lvbkNyZWF0ZUV4dGVuZGVkfSwgc2VlIGl0cyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdG8gbmV3IHNpZ25lciBzZXNzaW9uIGluZm8uXG4gICAqL1xuICBnZXQgY3JlYXRlRXh0ZW5kZWRTZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQuc2Vzc2lvbkNyZWF0ZUV4dGVuZGVkLmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZva2UgYSBzZXNzaW9uLlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQuc2Vzc2lvblJldm9rZX0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgcmV2b2tlcyBhIHNlc3Npb25cbiAgICovXG4gIGdldCByZXZva2VTZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQuc2Vzc2lvblJldm9rZS5iaW5kKHRoaXMuI2FwaUNsaWVudCk7XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBhIGhlYXJ0YmVhdCAvIHVwY2hlY2sgcmVxdWVzdC5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50LmhlYXJ0YmVhdH0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgc2VuZHMgYSBoZWFydGJlYXRcbiAgICovXG4gIGdldCBoZWFydGJlYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FwaUNsaWVudC5oZWFydGJlYXQuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHMuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIEFwaUNsaWVudC51c2VyRXhwb3J0TGlzdH0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdG8gYSBwYWdpbmF0b3Igb2YgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICovXG4gIGdldCBleHBvcnRzKCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQudXNlckV4cG9ydExpc3QuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0LlxuICAgKlxuICAgKiBTYW1lIGFzIHtAbGluayBBcGlDbGllbnQudXNlckV4cG9ydERlbGV0ZX0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgZGVsZXRlcyBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICovXG4gIGdldCBkZWxldGVFeHBvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FwaUNsaWVudC51c2VyRXhwb3J0RGVsZXRlLmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3QuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIEFwaUNsaWVudC51c2VyRXhwb3J0SW5pdH0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJlcXVlc3QgcmVzcG9uc2UuXG4gICAqL1xuICBnZXQgaW5pdEV4cG9ydCgpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50LnVzZXJFeHBvcnRJbml0LmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3QuXG4gICAqXG4gICAqIFNhbWUgYXMge0BsaW5rIEFwaUNsaWVudC51c2VyRXhwb3J0Q29tcGxldGV9LCBzZWUgaXRzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cbiAgICpcbiAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXF1ZXN0IHJlc3BvbnNlLlxuICAgKi9cbiAgZ2V0IGNvbXBsZXRlRXhwb3J0KCkge1xuICAgIHJldHVybiB0aGlzLiNhcGlDbGllbnQudXNlckV4cG9ydENvbXBsZXRlLmJpbmQodGhpcy4jYXBpQ2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIG9yZy5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50Lm9yZ1VwZGF0ZX0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdXBkYXRlcyBhbiBvcmcgYW5kIHJldHVybnMgdXBkYXRlZCBvcmcgaW5mb3JtYXRpb25cbiAgICovXG4gIGdldCB1cGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2FwaUNsaWVudC5vcmdVcGRhdGUuYmluZCh0aGlzLiNhcGlDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgYSBmcmVzaCBrZXktaW1wb3J0IGtleS5cbiAgICpcbiAgICogU2FtZSBhcyB7QGxpbmsgQXBpQ2xpZW50LmNyZWF0ZUtleUltcG9ydEtleX0sIHNlZSBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdG8gYSBmcmVzaCBrZXktaW1wb3J0IGtleVxuICAgKi9cbiAgZ2V0IGNyZWF0ZUtleUltcG9ydEtleSgpIHtcbiAgICByZXR1cm4gdGhpcy4jYXBpQ2xpZW50LmNyZWF0ZUtleUltcG9ydEtleS5iaW5kKHRoaXMuI2FwaUNsaWVudCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IG9uZSBvciBtb3JlIGtleXMuIFRvIHVzZSB0aGlzIGZ1bmN0aW9uYWxpdHksIHlvdSBtdXN0IGZpcnN0IGNyZWF0ZSBhblxuICAgKiBlbmNyeXB0ZWQga2V5LWltcG9ydCByZXF1ZXN0IHVzaW5nIHRoZSBgQGN1YmlzdC1kZXYvY3ViZXNpZ25lci1zZGsta2V5LWltcG9ydGBcbiAgICogbGlicmFyeS4gU2VlIHRoYXQgbGlicmFyeSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cbiAgICpcbiAgICogQHBhcmFtIGJvZHkgQW4gZW5jcnlwdGVkIGtleS1pbXBvcnQgcmVxdWVzdC5cbiAgICogQHJldHVybnMgVGhlIG5ld2x5IGltcG9ydGVkIGtleXMuXG4gICAqL1xuICBhc3luYyBpbXBvcnRLZXlzKGJvZHk6IEltcG9ydEtleVJlcXVlc3QpOiBQcm9taXNlPEtleVtdPiB7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IHRoaXMuI2FwaUNsaWVudC5pbXBvcnRLZXlzKGJvZHkpO1xuICAgIHJldHVybiBrZXlzLm1hcCgoaykgPT4gbmV3IEtleSh0aGlzLiNhcGlDbGllbnQsIGspKTtcbiAgfVxuXG4gIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGFsaWFzZXMgZm9yIE5hbWVkIFdhc20gUG9saWN5XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBXYXNtIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHBvbGljeS5cbiAgICogQHBhcmFtIHBvbGljeSBUaGUgV2FzbSBwb2xpY3kgb2JqZWN0LlxuICAgKiBAcGFyYW0gYWNsIE9wdGlvbmFsIGxpc3Qgb2YgcG9saWN5IGFjY2VzcyBjb250cm9sIGVudHJpZXMuXG4gICAqIEByZXR1cm5zIFRoZSBuZXcgcG9saWN5LlxuICAgKi9cbiAgY3JlYXRlV2FzbVBvbGljeSA9IHRoaXMuY3JlYXRlV2FzbUZ1bmN0aW9uO1xuXG4gIC8qKiBAcmV0dXJucyB0aGUgUG9saWN5IEVuZ2luZSBjb25maWd1cmF0aW9uIGZvciB0aGUgb3JnLiAqL1xuICBwb2xpY3lFbmdpbmVDb25maWd1cmF0aW9uID0gdGhpcy5jMmZDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIFBvbGljeSBFbmdpbmUgY29uZmlndXJhdGlvbiBmb3IgdGhlIG9yZy5cbiAgICogTm90ZSB0aGF0IHRoaXMgb3ZlcndyaXRlcyBhbnkgZXhpc3RpbmcgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ3MgVGhlIFBvbGljeSBFbmdpbmUgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHNldFBvbGljeUVuZ2luZUNvbmZpZ3VyYXRpb24gPSB0aGlzLnNldEMyRkNvbmZpZ3VyYXRpb247XG59XG4iXX0=
|
package/dist/src/role.d.ts
CHANGED
|
@@ -412,10 +412,13 @@ export type AllowEip191Signing = typeof AllowEip191Signing;
|
|
|
412
412
|
/** Allow EIP-712 signing */
|
|
413
413
|
export declare const AllowEip712Signing: "AllowEip712Signing";
|
|
414
414
|
export type AllowEip712Signing = typeof AllowEip712Signing;
|
|
415
|
+
/** Allow EIP-7702 signing */
|
|
416
|
+
export declare const AllowEip7702Signing: "AllowEip7702Signing";
|
|
417
|
+
export type AllowEip7702Signing = typeof AllowEip7702Signing;
|
|
415
418
|
/** Allow BTC message signing */
|
|
416
419
|
export declare const AllowBtcMessageSigning: "AllowBtcMessageSigning";
|
|
417
420
|
export type AllowBtcMessageSigning = typeof AllowBtcMessageSigning;
|
|
418
|
-
export type AllowPolicy = AllowRawBlobSigning | AllowDiffieHellmanExchange | AllowEip191Signing | AllowEip712Signing | AllowBtcMessageSigning;
|
|
421
|
+
export type AllowPolicy = AllowRawBlobSigning | AllowDiffieHellmanExchange | AllowEip191Signing | AllowEip712Signing | AllowEip7702Signing | AllowBtcMessageSigning;
|
|
419
422
|
/** A reference to an org-level named policy, using its name/id and its version */
|
|
420
423
|
export type PolicyReference = `${string}/v${number}` | `${string}/latest`;
|
|
421
424
|
/**
|
package/dist/src/role.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"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"}
|