@senior-gestao-empresarial/erpx-components 4.9.1-develop-8091f47a → 4.9.1-develop-720b37a0
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/bundles/senior-gestao-empresarial-erpx-components.umd.js +7 -8
- package/bundles/senior-gestao-empresarial-erpx-components.umd.js.map +1 -1
- package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js +1 -1
- package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js.map +1 -1
- package/esm2015/components/tributos/erp-tributos.component.js +9 -9
- package/esm5/components/tributos/erp-tributos.component.js +8 -9
- package/fesm2015/senior-gestao-empresarial-erpx-components.js +8 -8
- package/fesm2015/senior-gestao-empresarial-erpx-components.js.map +1 -1
- package/fesm5/senior-gestao-empresarial-erpx-components.js +7 -8
- package/fesm5/senior-gestao-empresarial-erpx-components.js.map +1 -1
- package/package.json +1 -1
|
@@ -3842,9 +3842,7 @@ let ErpTributosComponent = class ErpTributosComponent {
|
|
|
3842
3842
|
tributo === EnumTipoTributo.CBS_ESTORNO_CREDITO ||
|
|
3843
3843
|
tributo === EnumTipoTributo.IBS_ESTORNO_CREDITO ||
|
|
3844
3844
|
tributo === EnumTipoTributo.CBS_AJUSTE ||
|
|
3845
|
-
tributo === EnumTipoTributo.IBS_AJUSTE
|
|
3846
|
-
tributo === EnumTipoTributo.CBS_TRANSFERENCIA_CREDITO ||
|
|
3847
|
-
tributo === EnumTipoTributo.IBS_TRANSFERENCIA_CREDITO)
|
|
3845
|
+
tributo === EnumTipoTributo.IBS_AJUSTE)
|
|
3848
3846
|
defaultFilter = [
|
|
3849
3847
|
...defaultFilter,
|
|
3850
3848
|
{
|
|
@@ -3863,13 +3861,15 @@ let ErpTributosComponent = class ErpTributosComponent {
|
|
|
3863
3861
|
? EnumLogicalOperator.Eq
|
|
3864
3862
|
: EnumLogicalOperator.Ne,
|
|
3865
3863
|
values: [EnumIndicativoPadrao.EXIGE]
|
|
3866
|
-
}
|
|
3864
|
+
}
|
|
3865
|
+
];
|
|
3866
|
+
if (tributo === EnumTipoTributo.CBS_TRANSFERENCIA_CREDITO ||
|
|
3867
|
+
tributo === EnumTipoTributo.IBS_TRANSFERENCIA_CREDITO)
|
|
3868
|
+
defaultFilter = [
|
|
3869
|
+
...defaultFilter,
|
|
3867
3870
|
{
|
|
3868
3871
|
field: 'indGTransfCred',
|
|
3869
|
-
operator:
|
|
3870
|
-
tributo === EnumTipoTributo.IBS_TRANSFERENCIA_CREDITO
|
|
3871
|
-
? EnumLogicalOperator.Eq
|
|
3872
|
-
: EnumLogicalOperator.Ne,
|
|
3872
|
+
operator: EnumLogicalOperator.Eq,
|
|
3873
3873
|
values: [EnumIndicativoPadrao.EXIGE]
|
|
3874
3874
|
}
|
|
3875
3875
|
];
|
|
@@ -5116,4 +5116,4 @@ ErpTributosComponent = __decorate([
|
|
|
5116
5116
|
})
|
|
5117
5117
|
], ErpTributosComponent);
|
|
5118
5118
|
export { ErpTributosComponent };
|
|
5119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2VycHgtY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJpYnV0b3MvZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sYUFBYSxFQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZUFBZSxFQUNmLFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsNkJBQTZCLEVBQzdCLDZDQUE2QyxFQUM3QyxhQUFhLEVBQ2IsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDeEIsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsV0FBVyxFQUNYLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsV0FBVyxFQUNkLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFF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O0lBQVIsS0FBSyxFQUFFO3VEQUF1QjtBQUN0QjtJQUFSLEtBQUssRUFBRTs4REFBMEI7QUFFbEM7SUFEQyxLQUFLLEVBQUU7b0RBR1A7QUFJUTtJQUFSLEtBQUssRUFBRTtxREFBa0I7QUFDakI7SUFBUixLQUFLLEVBQUU7cURBQWtCO0FBQ2pCO0lBQVIsS0FBSyxFQUFFO21FQUlOO0FBQ087SUFBUixLQUFLLEVBQUU7b0VBQWlEO0FBQ2hEO0lBQVIsS0FBSyxFQUFFO3NFQUFvQztBQUVsQztJQUFULE1BQU0sRUFBRTs0REFBNEM7QUF0QjVDLG9CQUFvQjtJQU5oQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsY0FBYztRQUN4QixxbkhBQTRDO1FBRTVDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQzs7S0FDOUIsQ0FBQztHQUNXLG9CQUFvQixDQTJzUGhDO1NBM3NQWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJZGVudGlmaWVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gICAgQmVuZWZpY2lvRmlzY2FsTG9va3VwLFxuICAgIENsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLFxuICAgIENwbFRyaU5vdGFTYWlkYU5hdHVyZXphUmVjZWl0YVBpc0NvZmluc0xvb2t1cCxcbiAgICBFMDI3RXFpTG9va3VwLFxuICAgIEUwMjdTdHJMb29rdXAsXG4gICAgRW51bUxvZ2ljYWxPcGVyYXRvcixcbiAgICBMb29rdXBWYWxpZGF0aW9uVXRpbHNcbn0gZnJvbSAnQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gICAgQmFkZ2VDb2xvcnMsXG4gICAgQnV0dG9uQW5pbWF0aW9uLFxuICAgIEJ1dHRvblByaW9yaXR5LFxuICAgIEJ1dHRvblNpemUsXG4gICAgQ2FsZW5kYXJMb2NhbGVPcHRpb25zLFxuICAgIEZpZWxkVHlwZSxcbiAgICBGb3JtRmllbGQsXG4gICAgaXNOdWxsT3JVbmRlZmluZWQsXG4gICAgTG9jYWxlU2VydmljZSxcbiAgICBMb29rdXBGaWVsZFxufSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IEZlYXR1cmVUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL3BsYXRmb3JtLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgR1RhZ1NlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvcGxhdGZvcm0tdXRpbHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgTWVudUl0ZW0sIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaW5hbGl6ZSwgZmlyc3QsIHNjYW4sIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudW1TaXR1YWNhb0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9lbnVtLWNsYXNzaWZpY2FjYW8tdHJpYnV0YXJpYSc7XG5pbXBvcnQgeyBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9lbnVtLXRpcG8tY2FsY3Vsby1pbXBvc3RvJztcbmltcG9ydCB7IEVudW1JbmRpY2F0aXZvUGFkcmFvIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9lcnB4LWNvbS1wcm9jZXNzby1mYXR1cmFtZW50by1iYWNrZW5kL2VudW0taW5kaWNhdGl2by1wYWRyYW8nO1xuaW1wb3J0IHsgTG9hZGluZ0NvbnRleHQgfSBmcm9tICcuLi91dGlscy9sb2FkaW5nLWNvbnRleHQnO1xuaW1wb3J0IHsgVGF4QW1vdW50Q2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvdGF4LWFtb3VudC1jYWxjdWxhdG9yJztcbmltcG9ydCB7IEVycFRyaWJ1dG9zU2VydmljZSB9IGZyb20gJy4vZXJwLXRyaWJ1dG9zLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBDYW1wb1RyaWJ1dG8sXG4gICAgRW51bUFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgRW51bUNhbXBvVHJpYnV0byxcbiAgICBFbnVtRXNjcml0dXJhckFsaXF1b3RhSVNTLFxuICAgIEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8sXG4gICAgRW51bUdydXBvVHJpYnV0byxcbiAgICBFbnVtTW9kQmMsXG4gICAgRW51bU1vdERlcyxcbiAgICBFbnVtT3JpTWVyLFxuICAgIEVudW1SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zLFxuICAgIEVudW1TaXR1YWNhbyxcbiAgICBlbnVtVGlwQ3JlZFJlY3VwLFxuICAgIEVudW1UaXBJbXBDc3QsXG4gICAgRW51bVRpcE9wZSxcbiAgICBFbnVtVGlwb1RyaWJ1dG8sXG4gICAgSXRlbSxcbiAgICBTdWdlc3RhbyxcbiAgICBUYXhDYWxjdWxhdGlvbk1lbW9yeVxufSBmcm9tICcuL2VycC10cmlidXRvcy50eXBlcyc7XG5pbXBvcnQgeyBtYXBFbnVtVGlwb1RyaWJ1dG9Ub0VudW1UaXBJbXBDc3QgfSBmcm9tICcuL21hcHBpbmdzL2VudW0tdGlwLWltcC1jc3QtbWFwcGluZyc7XG5pbXBvcnQgeyBSdWxlc1NlcnZpY2UgfSBmcm9tICcuL3J1bGVzL3J1bGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGF4Um91bmRpbmdTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90YXgtcm91bmRpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBUYXhTdG9yZSB9IGZyb20gJy4vc3RvcmVzL3RheC5zdG9yZSc7XG5pbXBvcnQgeyBpc1RheEZyb21UYXhSZWZvcm0gfSBmcm9tICcuL3RheC1yZWZvcm0tdXRpbGl0aWVzJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuL3R5cGVzL2NvbnRleHQnO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tICcuL3R5cGVzL2dyb3VwJztcbmltcG9ydCB7IFRheCB9IGZyb20gJy4vdHlwZXMvdGF4JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlcnAtdHJpYnV0b3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lcnAtdHJpYnV0b3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VycC10cmlidXRvcy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0xvYWRpbmdDb250ZXh0XVxufSlcbmV4cG9ydCBjbGFzcyBFcnBUcmlidXRvc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpXG4gICAgY29udGV4dDogQ29udGV4dDtcbiAgICBASW5wdXQoKSBzdWdlc3RvZXM6IFN1Z2VzdGFvW107XG4gICAgQElucHV0KCkgY2FtcG9zQmxvcXVlYWRvcyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHRyaWJ1dG9zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmlidXRvc1ZhbHVlO1xuICAgIH1cbiAgICBzZXQgdHJpYnV0b3ModmFsKSB7XG4gICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZSA9IHZhbDtcbiAgICB9XG4gICAgQElucHV0KCkgZG9taW5pbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBzZXJ2aWNvPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGN1cnJlbmN5TG9jYWxlT3B0aW9ucz86IGFueSA9IHtcbiAgICAgICAgY3VycmVuY3lTeW1ib2w6ICcnLFxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLCcsXG4gICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nXG4gICAgfTtcbiAgICBASW5wdXQoKSBpZHNUYXhlc01lbW9yaWFDYWxjdWxvPzogVGF4Q2FsY3VsYXRpb25NZW1vcnlbXTtcbiAgICBASW5wdXQoKSBwZXJtaXNzaW9uTWVtb3JpYUNhbGN1bG8/OiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIHRyaWJ1dG9zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUYXhbXT4oKTtcblxuICAgIHJlYWRvbmx5IEJhZGdlQ29sb3JzID0gQmFkZ2VDb2xvcnM7XG4gICAgcmVhZG9ubHkgQnV0dG9uUHJpb3JpdHkgPSBCdXR0b25Qcmlvcml0eTtcbiAgICByZWFkb25seSBCdXR0b25TaXplID0gQnV0dG9uU2l6ZTtcbiAgICByZWFkb25seSBCdXR0b25BbmltYXRpb24gPSBCdXR0b25BbmltYXRpb247XG5cbiAgICBwdWJsaWMgZ3J1cG9zOiBHcm91cFtdID0gW107XG4gICAgcHVibGljIHRyaWJ1dG9zVmFsdWU6IFRheFtdID0gW107XG4gICAgcHVibGljIHJlbG9hZCA9IHRydWU7XG4gICAgcHVibGljIGluZGV4QWNjb3JkaW9uOiBudW1iZXJbXSA9IFtdO1xuICAgIHB1YmxpYyBwcmVmaXhMYWJlbDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBtZW51SXRlbVBpcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSXBpID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlzcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JbXBvcnRhY29lcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1SZXRlbmNvZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSWNtcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1DQlMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSUJTRXN0YWR1YWwgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSUJTTXVuaWNpcGFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlCU0NyZWRpdG9QcmVzdW1pZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSVMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8gPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ0JTX0lCU19BanVzdGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2JzSWJzVHJhbnNmZXJlbmNpYUNyZWRpdG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSWNtc0NyZWRpdG9QcmVzdW1pZG8gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmluc0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaURldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlPdXRyYXNEZXNwZXNhcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXNzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Jc3NSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUltcG9zdG9JbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmluc1JldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ3NsbFJldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXJyZlJldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSW5zc1JldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zU3QgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUZjcFN0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUZjcENvYnJhZG9BbnRlcmlvcm1lbnRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3AgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNEaWZlcmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbURpZmVyZW5jaWFsQWxpY290YSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzRmF0dXJlbWVudG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmlucyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zRnV0dXJvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTaW1wbGVzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNDcmVkaXRvUHJlc3VtaWRvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkRGlmYWxEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSUNNU19VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRGQ1BfVUZfRGVzdGlub19EZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZGJhc2VDYWxjdWxvQ3JlZGl0byA9IHRydWU7XG4gICAgcHJpdmF0ZSByZXF1aXJlZFBlcmNlbnR1YWxSZWR1Y2FvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc1N0U29saWRhcmlvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRGY3BTdFJlZGl0b0FudCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcGVyY2VudGFnZUxvY2FsZU9wdGlvbnM/OiBhbnk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcmVhZG9ubHkgbG9hZGluZ0NvbnRleHQ6IExvYWRpbmdDb250ZXh0LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlMDI3U3RyTG9va3VwOiBFMDI3U3RyTG9va3VwLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGJlbmVmaWNpb0Zpc2NhbExvb2t1cDogQmVuZWZpY2lvRmlzY2FsTG9va3VwLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGUwMjdlcWlMb29rdXA6IEUwMjdFcWlMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0dXJlemFSZWNlaXRhTG9va3VwOiBDcGxUcmlOb3RhU2FpZGFOYXR1cmV6YVJlY2VpdGFQaXNDb2ZpbnNMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXA6IENsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvb2t1cFV0aWxzOiBMb29rdXBWYWxpZGF0aW9uVXRpbHMsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZXJwVHJpYnV0b3NTZXJ2aWNlOiBFcnBUcmlidXRvc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZ3RhZzogR1RhZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcnVsZXNTZXJ2aWNlOiBSdWxlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YXhSb3VuZGluZ1NlcnZpY2U6IFRheFJvdW5kaW5nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YXhBbW91bnRDYWxjdWxhdG9yOiBUYXhBbW91bnRDYWxjdWxhdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVUb2dnbGVTZXJ2aWNlOiBGZWF0dXJlVG9nZ2xlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YXhTdG9yZTogVGF4U3RvcmVcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb21pbmlvID0gdGhpcy5kb21pbmlvID8gdGhpcy5kb21pbmlvIDogJ2VycHhfY3BsX2ltcCc7XG4gICAgICAgIHRoaXMuc2VydmljbyA9IHRoaXMuc2VydmljbyA/IHRoaXMuc2VydmljbyA6ICdjYWRhc3Ryb3MnO1xuXG4gICAgICAgIHRoaXMucHJlZml4TGFiZWwgPSBgJHt0aGlzLmRvbWluaW99LiR7dGhpcy5zZXJ2aWNvfWA7XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zKS5sZW5ndGggPT0gMClcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sOiAnJyxcbiAgICAgICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLCcsXG4gICAgICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiAnLidcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sOiAnJScsXG4gICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucy5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucy50aG91c2FuZHNTZXBhcmF0b3JcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmdldEFycmVkb25kYW1lbnRvQWJudCgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFyaWF2ZWlzQWx0ZXJhZGFzID0gT2JqZWN0LmtleXMoY2hhbmdlcyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF2YXJpYXZlaXNBbHRlcmFkYXMuaW5jbHVkZXMoJ3N1Z2VzdG9lcycpIHx8XG4gICAgICAgICAgICB2YXJpYXZlaXNBbHRlcmFkYXMubGVuZ3RoID4gMVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJWYXJpYWJsZXMoKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlLmxlbmd0aCA9PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdydXBvcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZSA9IFtdO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlbG9hZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3J1cG9zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUcmlidXRvcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VHJpYnV0b3MoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5jYW1wb3NCbG9xdWVhZG9zID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWRPbmx5VHJpYnV0b3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMubG9va3VwVXRpbHMucmVzZXRTdG9yZWRLZXlzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG1lbW9yaWFDYWxjdWxvKGltcG9zdG86IGFueSkge1xuICAgICAgICBsZXQgdHJpYnV0byA9IHRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsby5maW5kKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnRpcG9UcmlidXRvID09IGltcG9zdG8ubmFtZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWJyaXJXaW5kb3dVcmxNZW1vcmlhQ2FsY3Vsbyh0cmlidXRvKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VVcmxXaW5kb3cocGFyYW1zOiBJZGVudGlmaWVycywgdHJpYnV0bz86IGFueSkge1xuICAgICAgICB0aGlzLmVycFRyaWJ1dG9zU2VydmljZVxuICAgICAgICAgICAgLmdldEZyb250ZW5kKHBhcmFtcylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihgJHtyZXNwb25zZS5mcm9udGVuZHNbMF0uZW1iZWRkZWRVUkx9YCwgJ19ibGFuaycpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ndGFnLnNlbmRCdXR0b25DbGljaygnQm90w6NvIGFjZXNzYXIgcGFyYW1ldHJpemHDp8OjbycsIHtcbiAgICAgICAgICAgIGltcG9zdG9zOiB0cmlidXRvLnRpcG9UcmlidXRvXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNhYmxlZEJ1dHRvbihpdGVtOiBJdGVtKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoJ2ltcG9zdG9NYW51YWwnKS52YWx1ZSB8fFxuICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZSA9PT1cbiAgICAgICAgICAgICAgICBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTCB8fFxuICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZSA9PT1cbiAgICAgICAgICAgICAgICBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkhFUkRBRE8gfHxcbiAgICAgICAgICAgIHRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3VsbyA9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICF0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8uZmluZCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudGlwb1RyaWJ1dG8gPT0gaXRlbS5uYW1lICYmXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaWRQYXJhbWV0cm8gIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGhpZGVCdXR0b24oaW1wb3N0bzogYW55KSB7XG4gICAgICAgIHN3aXRjaCAoaW1wb3N0bykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhYnJpcldpbmRvd1VybE1lbW9yaWFDYWxjdWxvKHRyaWJ1dG86IGFueSkge1xuICAgICAgICBpZiAoIXRyaWJ1dG8/LmlkUGVyZmlsVHJpYnV0YXJpbyAmJiAhdHJpYnV0bz8uaWRQYXJhbWV0cm8pIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJyb3JfbWVtb3JpYV9jYWxjdWxvX21lc3NhZ2VfdGl0bGUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnJvcl9tZW1vcmlhX2NhbGN1bG9fbWVzc2FnZV9jb250ZW50J1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIGlkZW50aWZpZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkb21haW5OYW1lOiAnZXJweF9jcGxfaW1wJyxcbiAgICAgICAgICAgICAgICAgICAgc2VydmljZU5hbWU6ICdpbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgIGFwcE5hbWU6ICdlcnB4LWNwbC1pbXAtaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICByb3V0ZTogYCR7dGhpcy52YWxpZGFUZWxhKHRyaWJ1dG8pfWBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5tYWtlVXJsV2luZG93KHBhcmFtcywgdHJpYnV0byk7XG4gICAgfVxuXG4gICAgdmFsaWRhVGVsYSh0YXhlczogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RUYXhlcyh0YXhlcy50aXBvVHJpYnV0bykpIHtcbiAgICAgICAgICAgIGlmICh0YXhlcy5pZFBhcmFtZXRyb0VzdGFkbykge1xuICAgICAgICAgICAgICAgIHJldHVybiBgaWNtc3N0LyR7dGF4ZXMuaWRQYXJhbWV0cm9TdH0vaWNtc3N0LXBhcmFtZXRyb3MvJHt0YXhlcy5pZFBhcmFtZXRyb0VzdGFkb30/cGVyZmlsVHJpYnV0YXJpb0lkPSR7dGF4ZXMuaWRQZXJmaWxUcmlidXRhcmlvfSZwYXJhbWV0cm9JbXBvc3Rvc0lkPSR7dGF4ZXMuaWRQYXJhbWV0cm99YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpY21zc3QvJHt0YXhlcy5pZFBhcmFtZXRyb30vaWNtc3N0LXBhcmFtZXRyb3MvJHt0YXhlcy5pZFBhcmFtZXRyb1N0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGBwZXJmaWwtdHJpYnV0YXJpby8ke3RheGVzLmlkUGVyZmlsVHJpYnV0YXJpb30vcGFyYW1ldHJpemFjYW8taW1wb3N0b3MvJHt0aGlzLmdldFRyaWJ1dG9QYWkodGF4ZXMudGlwb1RyaWJ1dG8pfS8ke1xuICAgICAgICAgICAgdGF4ZXMuaWRQYXJhbWV0cm9cbiAgICAgICAgfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1N0VGF4ZXModGF4ZXM6IGFueSkge1xuICAgICAgICBzd2l0Y2ggKHRheGVzKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VHJpYnV0b1BhaSh0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgc3dpdGNoICh0cmlidXRvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Bpcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NvZmlucyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUEk6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaXBpJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpc3MnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWknO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1M6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyZXRlbmNvZXMnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUxfREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWNtcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdjaWRlJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfR09WRVJOQU1FTlRBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Nicyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0dPVkVSTkFNRU5UQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpYnMtZXN0YWR1YWwnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfRElGRVJJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfR09WRVJOQU1FTlRBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2licy1tdW5pY2lwYWwnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpcyc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhclZhcmlhYmxlcygpIHtcbiAgICAgICAgaWYgKHRoaXMucmVsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4QWNjb3JkaW9uID0gWy0xXTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DQlMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JQlNFc3RhZHVhbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlCU011bmljaXBhbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlTID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUGlzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ29maW5zID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSXBpID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSXNzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSW1wb3J0YWNvZXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JY21zID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1SZXRlbmNvZXNGdW5ydXJhbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ2JzSWJzVHJhbnNmZXJlbmNpYUNyZWRpdG8gPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ3NsbFJldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmlucyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcFVmRGVzdGlubyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNGdXR1cm8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU2ltcGxlcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmFtZW50byA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFNvbGlkYXJpbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEZjcFN0UmVkaXRvQW50ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVRyaWJ1dG9zKCkge1xuICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdC50aXBvSW1wb3N0bykge1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9ESUZFUklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSUJTRXN0YWR1YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSUJTTXVuaWNpcGFsKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlCU0NyZWRpdG9QcmVzdW1pZG8oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJUygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlNJQlNFc3Rvcm5vQ3JlZGl0bygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEU6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlNfSUJTX0FqdXN0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlNJQlNUcmFuc2ZlcmVuY2lhQ3JlZGl0bygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhUGlzKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDb2ZpbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJcGkoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJc3MoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJbXBvcnRhY29lcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1M6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVJldGVuY29lcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJY21zKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJY21zQ3JlZGl0b1ByZXN1bWlkbygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1M6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhUmV0ZW5jb2VzRnVucnVyYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZE9ubHlUcmlidXRvcygpOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiB0aGlzLmdydXBvcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwLml0ZW0pIHtcbiAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VHJpYnV0b3MoKSB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT5cbiAgICAgICAgICAgICAgICBncnVwby5pdGVtLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ubmFtZSA9PT0gaXQudGlwb0ltcG9zdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5wYXRjaFZhbHVlKGl0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybShpdC50aXBvSW1wb3N0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKGl0LnRpcG9JbXBvc3RvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuZ3J1cG9zKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwLml0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVmFsdWVDaGFuZ2VzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWxpZGF0b3JzKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBpZiAodGhpcy5ncnVwb3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcCgoZ3J1cG8pID0+IHtcbiAgICAgICAgICAgICAgICBncnVwby5pdGVtXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0KSA9PiBpdC5uYW1lID09IHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGl0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNWYWx1ZSA9IE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuZ2V0KGtleSkudmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5nZXQoa2V5KS52YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC52YWx1ZSkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsUmVkdWNhbycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxEaWZlcmltZW50bycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09PSAncGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoMTAwMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAndmFsb3InKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdzaXR1YWNhb1RyaWJ1dGFyaWEnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnb2JzZXJ2YWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnY29kaWdvQXJyZWNhZGFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdiZW5lZmljaW9GaXNjYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2luZGljYXRpdm9BcXVpc2ljYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2NvZGlnb1RyaWJ1dGFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ0ltcG9zdG9OYW9SZWN1cGVyYWRvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnYmFzZUNhbGN1bG9DcmVkaXRvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09ICduYXR1cmV6YVJlY2VpdGEnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAndmFsb3JEZWR1Y2FvJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ3JlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAncmVkdWNhb0FsaXF1b3RhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC52YWx1ZSkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsUmVkdWNhbycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxEaWZlcmltZW50bycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09PSAncGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoMTAwMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAndmFsb3InKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UodmFsaWRhdG9ycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnb2JzZXJ2YWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnY29kaWdvQXJyZWNhZGFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdiZW5lZmljaW9GaXNjYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2luZGljYXRpdm9BcXVpc2ljYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ0ltcG9zdG9OYW9SZWN1cGVyYWRvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUFsbEZvcm1GaWVsZHMoZm9ybUdyb3VwOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZmllbGQpO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbClcbiAgICAgICAgICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICAgICAgICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKVxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKGNvbnRyb2wpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRhIGEgdmFsaWRhw6fDo28gZGUgdG9kb3Mgb3MgY2FtcG9zIGRvcyBmb3JtdWzDoXJpb3MgZGVudHJvIGRvcyBncnVwb3MuXG4gICAgICpcbiAgICAgKiAqKkF0ZW7Dp8OjbzoqKiBFc3RlIG3DqXRvZG8gKipuw6NvKiogZGV2ZSBzZXIgdXRpbGl6YWRvIG5vIHRlbXBsYXRlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIHNlIHRvZG9zIG9zIGZvcm11bMOhcmlvcyBmb3JlbSB2w6FsaWRvcyBlIG5lbmh1bSB2YWxvciBkZSBpbXBvc3RvIGZvciBuZWdhdGl2bzsgY2FzbyBjb250csOhcmlvLCByZXRvcm5hIGBmYWxzZWAuXG4gICAgICovXG4gICAgdmFsaWRhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5maW5kR3JvdXBXaXRoTmVnYXRpdmVUYXhWYWx1ZSgpO1xuXG4gICAgICAgIGlmIChncm91cCkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN0aWNreTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVycm9yJyksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lcnJvcl90YXhfd2l0aF9uZWdhdGl2ZV90YXhfdmFsdWUnLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYGVycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXyR7Z3JvdXAuZ3J1cG9UcmlidXRvLnRvTG93ZXJDYXNlKCl9YFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdydXBvcy5ldmVyeSgoZ3JvdXApID0+XG4gICAgICAgICAgICBncm91cC5pdGVtXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uZm9ybUdyb3VwLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgIC5ldmVyeSgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlQWxsRm9ybUZpZWxkcyhpdGVtLmZvcm1Hcm91cCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZm9ybUdyb3VwLnZhbGlkO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmVyaWZpY2Egc2UgYWxndW0gZm9ybXVsw6FyaW8gZXN0w6EgaW52w6FsaWRvLlxuICAgICAqXG4gICAgICogRGV2ZSBzZXIgdXRpbGl6YWRvIHNvbWVudGUgbm8gdGVtcGxhdGUgcGFyYSBjb250cm9sZSBkZSBib3TDtWVzIG91IGV4aWJpw6fDo28gZGUgbWVuc2FnZW5zLlxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIHNlIGFsZ3VtIGBmb3JtR3JvdXBgIGVzdGl2ZXIgaW52w6FsaWRvIG91IHNlIGFsZ3VtIHZhbG9yIGRlIGltcG9zdG8gZm9yIG5lZ2F0aXZvLlxuICAgICAqL1xuICAgIGlzSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy5maW5kR3JvdXBXaXRoTmVnYXRpdmVUYXhWYWx1ZSgpIHx8XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5zb21lKChncm91cCkgPT5cbiAgICAgICAgICAgICAgICBncm91cC5pdGVtLnNvbWUoKGl0ZW0pID0+IGl0ZW0uZm9ybUdyb3VwLmludmFsaWQpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kR3JvdXBXaXRoTmVnYXRpdmVUYXhWYWx1ZSgpOiBHcm91cCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdydXBvc1xuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5DQlMgfHxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PSBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTCB8fFxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTCB8fFxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxfRElGRVJJRE9cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maW5kKChncm91cCkgPT5cbiAgICAgICAgICAgICAgICBncm91cC5pdGVtLnNvbWUoKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoJ3ZhbG9yJykudmFsdWUgPz8gMFxuICAgICAgICAgICAgICAgICAgICApLmlzTGVzc1RoYW4oMClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFyckl0ZW5zOiBhbnkgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoKGdydXBvKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3J1cG8uaXRlbS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoaXRlbS5mb3JtR3JvdXApO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmlidXRvc1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRldU1hdGggPSB0aGlzLnRyaWJ1dG9zVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJpYnV0bykgPT4gdHJpYnV0by50aXBvSW1wb3N0byA9PSBpdGVtLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodHJpYnV0bykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udHJpYnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXVNYXRoICYmIGRldU1hdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJySXRlbnMucHVzaChkZXVNYXRoWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJySXRlbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpcG9JbXBvc3RvOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyckl0ZW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpcG9JbXBvc3RvOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWxvYWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50cmlidXRvc0NoYW5nZS5lbWl0KGFyckl0ZW5zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdm9JbXBvc3RvTWFudWFsKGl0ZW06IEl0ZW0sIHNpbmdsZUNoYW5nZT86IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0oaXRlbS5uYW1lIGFzIEVudW1UaXBvVHJpYnV0bykpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZm9ybUZpZWxkIG9mIGl0ZW0uZm9ybUZpZWxkKSB7XG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLm9uQmx1cj8uY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2luZ2xlQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3J1cG9zLmZpbmQoKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgIGdyb3VwLml0ZW0uaW5jbHVkZXMoaXRlbSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVZhbHVlQ2hhbmdlcyh7XG4gICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICBncm91cFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWN0aW9ucygpOiBNZW51SXRlbVtdIHtcbiAgICAgICAgY29uc3QgbWVudTogTWVudUl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIG1lbnUucHVzaChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19jYnNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUNCUyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ0JTKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PSBFbnVtR3J1cG9UcmlidXRvLkNCU1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2lic19lc3RhZHVhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSUJTRXN0YWR1YWwsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlCU0VzdGFkdWFsKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2lic19tdW5pY2lwYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlCU011bmljaXBhbCxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSUJTTXVuaWNpcGFsKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pYnNfY3JlZGl0b19wcmVzdW1pZG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlCU0NyZWRpdG9QcmVzdW1pZG8sXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlCU0NyZWRpdG9QcmVzdW1pZG8oKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pc19sYWJlbCcpLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSVMsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlTKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PSBFbnVtR3J1cG9UcmlidXRvLklTXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2JzX2lic19lc3Rvcm5vX2NyZWRpdG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDQlNJQlNFc3Rvcm5vQ3JlZGl0bygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0VTVE9STk9fQ1JFRElUT1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZpc2libGU6XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JykgfHxcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5kZWJpdEludm9pY2VUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJbnZlbnRvcnkgTG9zcycpIHx8XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0NyZWRpdCcpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2Nic19pYnNfYWp1c3RlX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DQlNfSUJTX0FqdXN0ZSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ0JTX0lCU19BanVzdGUoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19BSlVTVEVcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnICYmXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRleHQuaW52b2ljZS5kZWJpdEludm9pY2VUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NyZWRpdCBDYW5jZWxsYXRpb24gRXhlbXB0IE91dHB1dHMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5kZWJpdEludm9pY2VUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZWJpdHMgVW5wcm9jZXNzZWQgSW52b2ljZXMgQXNzZXNzbWVudCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Rpc3F1YWxpZmljYXRpb24gZnJvbSBTaW1wbGVzIE5hY2lvbmFsJylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2JzX2lic190cmFuc2ZlcmVuY2lhX2NyZWRpdG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUNic0lic1RyYW5zZmVyZW5jaWFDcmVkaXRvLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDQlNJQlNUcmFuc2ZlcmVuY2lhQ3JlZGl0bygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX1RSQU5TRkVSRU5DSUFfQ1JFRElUT1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZpc2libGU6XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NyZWRpdCBUcmFuc2ZlciBDb29wZXJhdGl2ZXMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuZGViaXRJbnZvaWNlVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NyZWRpdCBUcmFuc2ZlciBTdWNjZXNzaW9uJykpIHx8XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0NyZWRpdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLmNyZWRpdEludm9pY2VUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDcmVkaXQgVHJhbnNmZXIgU3VjY2Vzc2lvbicpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAncmV0ZW5jYW9GdW5ydXJhbCcsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfcmV0ZW5jYW9fZnVucnVyYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFSZXRlbmNvZXNGdW5ydXJhbCgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdwaXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX3Bpc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtUGlzLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFQaXMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAnY29maW5zJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19jb2ZpbnNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUNvZmlucyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ29maW5zKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ2lwaScsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaXBpX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JcGksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlwaSgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdpY21zJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pY21zX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JY21zLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJY21zKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgIT09ICdTYWxlIE9yZGVyJykge1xuICAgICAgICAgICAgbWVudS5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogJ2ltcG9ydGFjb2VzJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pbXBvcnRhY29lc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSW1wb3J0YWNvZXMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUltcG9ydGFjb2VzKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuaXRlbS50eXBlID09PSAnU2VydmljZScpIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lm9yZGVyLml0ZW0udHlwZSA9PT0gJ1NlcnZpY2UnKSB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lm9yZGVyLml0ZW0udHlwZSA9PT0gJ1NlcnZpY2UnKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIG1lbnUucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6ICdpc3MnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2lzc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSXNzLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJc3MoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5vcmRlci5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJykgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5vcmRlci5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAncmV0ZW5jb2VzJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19yZXRlbmNvZXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbVJldGVuY29lcyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhUmV0ZW5jb2VzKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuaXRlbS50eXBlID09PSAnU2VydmljZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnY2lkZScsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2lkZV9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNpZGUoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JylcbiAgICAgICAgKVxuICAgICAgICAgICAgbWVudS5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pY21zX2NyZWRpdG9fcHJlc3VtaWRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSWNtc0NyZWRpdG9QcmVzdW1pZG8oKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWVudTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBvZGVNb3N0cmFySW1wb3N0b3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0NyZWRpdCcpIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJY21zQ3JlZGl0b1ByZXN1bWlkbygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2NyZWRpdG9fcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJlbmVmaWNpb0Zpc2NhbCB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ2lkZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNpZGVUZWNub2xvZ2lhID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NpZGVfdGVjbm9sb2dpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2lkZV90ZWNub2xvZ2lhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUljbXMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSWNtcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSB0cnVlO1xuXG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBESUZBTCBERVZPTFZJRE8gKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYURlc3Rpbm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19lZmV0aXZvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBASUNNU19TVCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRElGQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2RpZmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkRJRkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW1wb3N0b05hb1JlY3VwZXJhZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hRGVzdGlub1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQ01TICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVJldGVuY29lcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3BhdHJvbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ1NMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLlJFVEVOQ09FUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLlJFVEVOQ09FUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVJldGVuY29lc0Z1bnJ1cmFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfaW5zcycsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1NcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFULFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfcmF0JyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfc2VuYXInLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW5kaWNhdGl2b0FxdWlzaWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Z1bnJ1cmFsX3RvdGFsJyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkZVTlJVUkFMICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uRlVOUlVSQUwsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZ1bnJ1cmFsVG90YWwgPSBpdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gJ0ZVTlJVUkFMX1RPVEFMJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZ1bnJ1cmFsVG90YWwuZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJbXBvcnRhY29lcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUltcG9ydGFjb2VzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuY29udGV4dC5kb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbXBvc3RvX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW1wb3N0b19pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ltcG9zdG9faW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklNUE9SVEFDT0VTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSU1QT1JUQUNPRVMsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJc3MoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSXNzID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmNvbnRleHQuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgY2FzZSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Fc2NyaXR1cmFyQWxpcXVvdGFJU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklTU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JU1MgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDQlMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ0JTKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNCUyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLkNCU1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5DQlNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWwgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhbXBvc19DQlNfQ1JFRElUT19QUkVTVU1JRE8gPSBbXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zX0NCU19DUkVESVRPX1BSRVNVTUlETy5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFDcmVkaXRvUHJlc3VtaWRvXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2FtcG9zX0NCU19UUklCVVRBQ0FPX1JFR1VMQVIgPSBbXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zX0NCU19UUklCVVRBQ0FPX1JFR1VMQVIucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlMsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NicycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhjYW1wb3MsIEVudW1UaXBvVHJpYnV0by5DQlMpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfY3JlZGl0b19wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIGNhbXBvc19DQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfVFJJQlVUQUNBT19SRUdVTEFSLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBjYW1wb3NfQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzX2dvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNCUyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlCU0VzdGFkdWFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19lc3RhZHVhbF9kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX3RyaWJ1dGFjYW9fcmVndWxhcicsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX2dvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUwgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTCxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlCU011bmljaXBhbCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwpIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSUJTTXVuaWNpcGFsID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUwsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckJydXRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfbXVuaWNpcGFsX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVIsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0dPVkVSTkFNRU5UQUwsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfZ292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSUJTQ3JlZGl0b1ByZXN1bWlkbygpOiBJdGVtW10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU0NyZWRpdG9QcmVzdW1pZG8pIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSUJTQ3JlZGl0b1ByZXN1bWlkbyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhQ3JlZGl0b1ByZXN1bWlkb1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2NyZWRpdG9fcHJlc3VtaWRvJyxcbiAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoY2FtcG9zLCBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJUygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JUykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JUyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklTXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVMsXG4gICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXMnLFxuICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhjYW1wb3MsIEVudW1UaXBvVHJpYnV0by5JUylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JUyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNCU0lCU0VzdG9ybm9DcmVkaXRvKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19lc3Rvcm5vX2NyZWRpdG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0b3Jub19jcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDQlNfSUJTX0FqdXN0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1DQlNfSUJTX0FqdXN0ZSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1DQlNfSUJTX0FqdXN0ZSA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfYWp1c3RlJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmlvZG9BcHVyYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0FKVVNURVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEUsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19hanVzdGUnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0FKVVNURSArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19BSlVTVEUsXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDQlNJQlNUcmFuc2ZlcmVuY2lhQ3JlZGl0bygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1DYnNJYnNUcmFuc2ZlcmVuY2lhQ3JlZGl0bykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1DYnNJYnNUcmFuc2ZlcmVuY2lhQ3JlZGl0byA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfdHJhbnNmZXJlbmNpYV9jcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX1RSQU5TRkVSRU5DSUFfQ1JFRElUTyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX3RyYW5zZmVyZW5jaWFfY3JlZGl0bycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX1RSQU5TRkVSRU5DSUFfQ1JFRElUT1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE8gKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhUGlzKCk6IGFueVtdIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1QaXMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1QaXMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZmF0dXJhbWVudG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5QSVMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5QSVMsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDb2ZpbnMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ29maW5zID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ29maW5zID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNPRklOUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNPRklOUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlwaSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JcGkgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JcGkgPSB0cnVlO1xuXG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9jcmVkaXRhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9vdXRyYXNfZGVzcGVzYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ1Byb2R1Y3QgUmV0dXJuJ1xuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3sgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9OYW9SZWN1cGVyYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JUEkgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgc3dpdGNoICh0cmlidXRvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ2lkZVRlY25vbG9naWE7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhcjtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXI7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0Rldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGk7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGlPdXRyYXNEZXNwZXNhcztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlzcztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXNzUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUltcG9zdG9JbXBvcnRhY2FvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhckltcG9ydGFjYW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFySW1wb3J0YWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNzbGxSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlycmZSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUluc3NSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUluc3NQYXRyb25hbDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc1N0O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUZjcFN0O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0NvYnJhZG9BbnRlcmlvcm1lbnRlO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BDb2JyYWRvQW50ZXJpb3JtZW50ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtcztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNFZmV0aXZhbWVudGVDcmVkaXRhZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRmNwO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1EaWZlcmVuY2lhbEFsaWNvdGE7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzRmF0dXJlbWVudG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc0NyZWRpdG9QcmVzdW1pZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWREaWZhbERldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0ZBVFVSQU1FTlRPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19OQU9fUkVDVVBFUkFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQkFTRV9DQUxDVUxPX0NSRURJVE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRiYXNlQ2FsY3Vsb0NyZWRpdG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QRVJDRU5UVUFMX1JFRFVDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRQZXJjZW50dWFsUmVkdWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRGY3BTdFJlZGl0b0FudDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJlcXVpcmVkKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bywgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgc3dpdGNoICh0cmlidXRvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSToge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmlucyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcFVmRGVzdGlubyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc0Z1dHVybyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTaW1wbGVzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU3RTb2xpZGFyaW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU3RSZXRpZG9BbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEZjcFN0UmVkaXRvQW50ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRGlmYWxEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSUNNU19VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEZDUF9VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0ZBVFVSQU1FTlRPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmFtZW50byA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVxdWlyZWRTaXR1YWNhb1RyaWJ1dGFyaWEgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGltcG9zdG9DYWxjdWxhZG8oaW1wb3N0bzogRW51bVRpcG9UcmlidXRvKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5ESUZBTCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkZDUF9TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQgJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRNZXNzYWdlRXJyb3JCYXNlRGlmZXJlbnRlKFxuICAgICAgICBpbXBvc3Rvczogc3RyaW5nW10sXG4gICAgICAgIGdydXBvOiBhbnksXG4gICAgICAgIHN1bW1hcnlNZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGRldGFpbE1lc3NhZ2U6IHN0cmluZ1xuICAgICkge1xuICAgICAgICBjb25zdCBpbXBvc3RvRmlsdHJhZG8gPSBpbXBvc3Rvcy5maWx0ZXIoXG4gICAgICAgICAgICAoaW1wb3N0bykgPT5cbiAgICAgICAgICAgICAgICAhW1xuICAgICAgICAgICAgICAgICAgICAnQ0JTX0RJRkVSSURPJyxcbiAgICAgICAgICAgICAgICAgICAgJ0lCU19FU1RBRFVBTF9ESUZFUklETycsXG4gICAgICAgICAgICAgICAgICAgICdJQlNfTVVOSUNJUEFMX0RJRkVSSURPJ1xuICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoaW1wb3N0bylcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgY29udHJvbGVJbXBvc3RvID0gdGhpcy5jYWxjdWxhckltcG9zdG9zVG90YWwoXG4gICAgICAgICAgICBpbXBvc3RvRmlsdHJhZG8sXG4gICAgICAgICAgICBncnVwb1xuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjb250cm9sZUltcG9zdG8uYmFzZURpZmVyZW50ZSkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChzdW1tYXJ5TWVzc2FnZSksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGRldGFpbE1lc3NhZ2UpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250cm9sZUltcG9zdG87XG4gICAgfVxuXG4gICAgLy8gTsOjbyB1dGlsaXphciBlc3RlIG3DqXRvZG8gcGFyYSBjw6FsY3Vsb3MgZGUgaW1wb3N0b3MgZGEgUmVmb3JtYSBUcmlidXTDoXJpYS5cbiAgICBwcml2YXRlIGNhbGN1bGFyVmFsb3IodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT4ge1xuICAgICAgICAgICAgICAgIGdydXBvLml0ZW1cbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXQ6IEl0ZW0pID0+IGl0Lm5hbWUgPT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoYXNWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaXQuZm9ybUdyb3VwLnZhbHVlKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0LmZvcm1Hcm91cC52YWx1ZVtpdGVtXSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNWYWx1ZSAmJiB0aGlzLmltcG9zdG9DYWxjdWxhZG8odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5iYXNlQ2FsY3VsbyAhPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5hbGlxdW90YSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXQuZm9ybUdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zaXR1YWNhb1RyaWJ1dGFyaWEgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNpdHVhY2FvVHJpYnV0YXJpYS52YWx1ZSA9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRheEFtb3VudENhbGN1bGF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FsY3VsYXRlVGF4QW1vdW50KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YWJsZUJhc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihiYXNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4UmF0ZTogbmV3IEJpZ051bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihhbGlxdW90YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTnVtYmVyKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5zaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLmNvZFN0ciAhPSAnNTEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGF4QW1vdW50Q2FsY3VsYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxjdWxhdGVUYXhBbW91bnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhhYmxlQmFzZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGJhc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlOiBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGFsaXF1b3RhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9OdW1iZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TUyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9SQVQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuZ2V0KCdiYXNlQ2FsY3VsbycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUgPz8gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGlxdW90YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5nZXQoJ2FsaXF1b3RhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZSA/PyBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoYmFzZSAqIGFsaXF1b3RhKSAvIDEwMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYmFzZUNhbGN1bG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGlxdW90YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5hbGlxdW90YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlxdW90YSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRheEFtb3VudENhbGN1bGF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FsY3VsYXRlVGF4QW1vdW50KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YWJsZUJhc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihiYXNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4UmF0ZTogbmV3IEJpZ051bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihhbGlxdW90YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTnVtYmVyKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucmVzZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOdWxsT3JVbmRlZmluZWQoYmFzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTnVsbE9yVW5kZWZpbmVkKGFsaXF1b3RhKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzTnVsbE9yVW5kZWZpbmVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29kaWdvVHJpYnV0YWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5jb2RpZ29UcmlidXRhY2FvLnJlc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TUyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGltcG9zdG9zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGVU5SVVJBTF9JTlNTJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRlVOUlVSQUxfUkFUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRlVOUlVSQUxfU0VOQVInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sZUZ1bnJ1cmFsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE1lc3NhZ2VFcnJvckJhc2VEaWZlcmVudGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9zdG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXJyb3JfYmFzZV9mdW5ydXJhbF9kaWZlcmVudGVfc3VtbWFyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVycm9yX2Jhc2VfZnVucnVyYWxfZGlmZXJlbnRlX2RldGFpbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmdW5ydXJhbFRvdGFsID0gZ3J1cG8uaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09ICdGVU5SVVJBTF9UT1RBTCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bnJ1cmFsVG90YWwuZm9ybUdyb3VwLnNldFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUNhbGN1bG86IGNvbnRyb2xlRnVucnVyYWwuYmFzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsb3I6IGNvbnRyb2xlRnVucnVyYWwudmFsb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9zdG9NYW51YWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b106XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGFySW1wb3N0b3NUb3RhbChpbXBvc3RvczogYW55LCBncnVwbykge1xuICAgICAgICBsZXQgdmFsb3JlcyA9IHtcbiAgICAgICAgICAgIGJhc2U6IDAsXG4gICAgICAgICAgICB2YWxvcjogMCxcbiAgICAgICAgICAgIGJhc2VEaWZlcmVudGU6IGZhbHNlXG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGltcG9zdG9zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3QgaW1wb3N0byA9IGdydXBvLml0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBpbXBvc3Rvc1tpbmRleF1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoaW1wb3N0bz8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvKSkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdmFsb3Jlcy5iYXNlID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2UgIT0gaW1wb3N0by5mb3JtR3JvdXAudmFsdWUuYmFzZUNhbGN1bG9cbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsb3Jlcy5iYXNlRGlmZXJlbnRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2UgPVxuICAgICAgICAgICAgICAgICAgICBpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3VsbyA+IHZhbG9yZXMuYmFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWxvcmVzLmJhc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoaW1wb3N0bz8uZm9ybUdyb3VwLnZhbHVlLnZhbG9yKSkge1xuICAgICAgICAgICAgICAgIHZhbG9yZXMudmFsb3IgPSB0aGlzLnRheFJvdW5kaW5nU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuaGFsZlVwKFxuICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHZhbG9yZXMudmFsb3IpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoaW1wb3N0by5mb3JtR3JvdXAudmFsdWUudmFsb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC50b051bWJlcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbG9yZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNhbXBvcyhjYW1wb3M6IENhbXBvVHJpYnV0b1tdLCB0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgY29uc3QgcmV0b3JubzogYW55ID0ge307XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZDogRm9ybUZpZWxkW10gPSBbXTtcbiAgICAgICAgbGV0IGZvcm1Hcm91cDogYW55ID0ge307XG5cbiAgICAgICAgY2FtcG9zLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGJhc2VDYWxjdWxvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQmFzZUNhbGN1bG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Jhc2VDYWxjdWxvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19iYXNlX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgnYmFzZUNhbGN1bG8nLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTkuOTk5OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbEFsaXF1b3RhKHRyaWJ1dG8pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgnYWxpcXVvdGEnLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgW0VudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvXTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmlvZG9fYXB1cmFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldzogJ21vbnRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvOiAnYm9keScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhckxvY2FsZU9wdGlvbnM6IG5ldyBDYWxlbmRhckxvY2FsZU9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubG9jYWxlU2VydmljZS5nZXRMb2NhbGVPcHRpb25zKCkuY2FsZW5kYXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdDogJ21tL3l5J1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaWVsZFJlcXVpcmVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLlBlcmlvZG9BcHVyYWNhbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1JlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZHVjYW9fYWxpcXVvdGFfZ292ZXJuYW1lbnRhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDEwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcmVkdWNhb0FsaXF1b3RhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdSZWR1Y2FvQWxpcXVvdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZHVjYW9BbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVkdWNhb19hbGlxdW90YV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDEwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGFFZmV0aXZhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhRWZldGl2YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGFFZmV0aXZhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9lZmV0aXZhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YUludGVybmE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5Ljk5OTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YUludGVybmEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FsaXF1b3RhSW50ZXJuYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfaW50ZXJuYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hRGVzdGlubykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YUludGVybmFEZXN0aW5vOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OS45OTk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQWxpcXVvdGFJbnRlcm5hRGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGFJbnRlcm5hRGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfaW50ZXJuYV9kZXN0aW5vX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvcikge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpdC5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0byk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0ZpZWxkUmVxdWlyZWQoJ3ZhbG9yJywgdHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvckJydXRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yQnJ1dG9JbXBvc3RvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JCcnV0b0ltcG9zdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yQnJ1dG9JbXBvc3RvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9icnV0b19pbXBvc3RvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9ySXNlbnRhczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JJc2VudGFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvcklzZW50YXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2lzZW50YXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JPdXRyYXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yT3V0cmFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvck91dHJhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3Jfb3V0cmFzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBzaXR1YWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGxldCBzZWFyY2hHcmlkRmllbGRzITogRm9ybUZpZWxkW107XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJ1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb2RTdHInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rlc1N0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndGlwSW1wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX2ltcF9waXNfY29maW5zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LlBJU19DT0ZJTlNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX2lwaSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcEltcENzdC5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX2ljbXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfaXNzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LklTU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndGlwT3BlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX29wZV92X3NhaWRhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwT3BlLlZTQUlEQVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9vcGVfdl9lbnRyYWRhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwT3BlLlZFTlRSQURBXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX29wZV92X2FtYm9zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwT3BlLlZBTUJPU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0RmlsdGVyID0gW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2V4Y2x1aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ2ZhbHNlJ11cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICd0aXBJbXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFttYXBFbnVtVGlwb1RyaWJ1dG9Ub0VudW1UaXBJbXBDc3QodHJpYnV0byldXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwT3BlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBbRW51bVRpcE9wZS5WQU1CT1MsIEVudW1UaXBPcGUuVlNBSURBXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtFbnVtVGlwT3BlLlZBTUJPUywgRW51bVRpcE9wZS5WRU5UUkFEQV1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydWQVRJVk8nXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCUyB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZGVmYXVsdEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhLmluZEdFc3Rvcm5vQ3JlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBFbnVtTG9naWNhbE9wZXJhdG9yLkVxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEVudW1Mb2dpY2FsT3BlcmF0b3IuTmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bUluZGljYXRpdm9QYWRyYW8uRVhJR0VdXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaW5kR0FqdXN0ZUNvbXBldCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRW51bUxvZ2ljYWxPcGVyYXRvci5OZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtFbnVtSW5kaWNhdGl2b1BhZHJhby5FWElHRV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdpbmRHVHJhbnNmQ3JlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRW51bUxvZ2ljYWxPcGVyYXRvci5OZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtFbnVtSW5kaWNhdGl2b1BhZHJhby5FWElHRV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZTAyN1N0ckxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoR3JpZEZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnU2l0dWFjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdzaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3NpdHVhY2FvX3RyaWJ1dGFyaWFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0byk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzaWZpY2FjYW9UcmlidXRhcmlhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRGaWx0ZXIgPSBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnQVRJVk8nXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JyAmJlxuICAgICAgICAgICAgICAgICAgICAodHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE8gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlci5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaW5kR0VzdG9ybm9DcmVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bUluZGljYXRpdm9QYWRyYW8uRVhJR0VdXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlGaWVsZHM6IFsnZTAyN3N0ci5pZCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eURlcGVuZGVuY3k6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2UwMjdzdHInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRvcm5vLmZvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXR1YWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdDbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfY2xhc3NpZmljYWNhb190cmlidXRhcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWVsZFJlcXVpcmVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGkpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgZW5xdWFkcmFtZW50b0lwaTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmUwMjdlcWlMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWluaW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ2UwMjdlcWknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2VucXVhZHJhbWVudG9JcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydWQVRJVk8nXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2V4Y2x1aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ2ZhbHNlJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnRW5xdWFkcmFtZW50b0lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfZW5xdWFkcmFtZW50b19pcGlfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA2LCBsZzogNiwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnR1YWxSZWR1Y2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1BlcmNlbnR1YWxSZWR1Y2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJjZW50dWFsUmVkdWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcGVyY2VudHVhbF9yZWR1Y2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDEwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdQZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJjZW50dWFsX212YV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGRlc29uZXJhY2FvSWNtczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdNb3Rpdm9EZXNvbmVyYWNhb0ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rlc29uZXJhY2FvSWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfZGVzb25lcmFjYW9faWNtc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl81J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl84J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMTAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzExJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjEyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMTYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzkwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WOTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Rlc29uZXJhY2FvX2ljbXNfcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBvcmlnZW06IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnT3JpZ2VtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdvcmlnZW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlYwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlYzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl81J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl84J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfb3JpZ2VtX2ljbXNfcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX29yaWdlbV9pY21zX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNiwgbGc6IDYsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdQZXJjZW50dWFsRGlmZXJpbWVudG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJjZW50dWFsX2RpZmVyaW1lbnRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGFyVmFsb3IodHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF92YWxpZGF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiAxMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdQZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJjZW50dWFsX3N1cG9ydGFkb19jb25zdW1pZG9yX2ZpbmFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDEwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvclJlY29saGlkb0ljbXNTdDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JSZWNvbGhpZG9QZWxvU3Vic3RpdHV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JSZWNvbGhpZG9JY21zU3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX3JlY29saGlkb19wZWxvX3N1YnN0aXR1dG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JJY21zU3RSZXRpZG86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvckljbXNTdFJldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JJY21zU3RSZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2ljbXNfc3RfcmV0aWRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLk1vZGFsaWRhZGVCQykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBtb2RhbGlkYWRlQkM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnTW9kYWxpZGFkZUJjJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdtb2RhbGlkYWRlQkMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW9kYWxpZGFkZV9iY192XzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW9kQmMuVjBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8xJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb2RCYy5WMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW9kYWxpZGFkZV9iY192XzMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW9kQmMuVjNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21vZGFsaWRhZGVfYmNfcGxhY2Vob2xkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21vZGFsaWRhZGVfYmNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIG5hdHVyZXphUmVjZWl0YTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm5hdHVyZXphUmVjZWl0YUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnbmF0dXJlemFSZWNlaXRhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rdXBTb3J0OiBbeyBmaWVsZDogJ2NvZGlnbycsIG9yZGVyOiAxIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFNvcnQ6IFt7IGZpZWxkOiAnY29kaWdvJywgb3JkZXI6IDEgfV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdOYXR1cmV6YVJlY2VpdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX25hdHVyZXphX3JlY2VpdGFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2YWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTIwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnT2JzZXJ2YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnb2JzZXJ2YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfb2JzZXJ2YWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfbGVuZ3RoX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yRGVkdWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvckRlZHVjYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICd2YWxvckRlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yRGVkdWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfZGVkdWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGl2b0FxdWlzaWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnSW5kaWNhdGl2b0FxdWlzaWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnaW5kaWNhdGl2b0FxdWlzaWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfaW5kaWNhdGl2b19hcXVpc2ljYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3YxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlYyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192MydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WNCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3Y0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY1LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WNyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3Y3J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY29kaWdvQXJyZWNhZGFjYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNildKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0NvZGlnb0FycmVjYWRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb2RpZ29BcnJlY2FkYWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfY29kaWdvX2FycmVjYWRhY2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF9sZW5ndGhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjb2RpZ29UcmlidXRhY2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdDb2RpZ29UcmlidXRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb2RpZ29UcmlidXRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19jb2RpZ29fdHJpYnV0YWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfbGVuZ3RoX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uSW1wb3N0b05hb1JlY3VwZXJhZG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgSW1wb3N0b05hb1JlY3VwZXJhZG86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0ltcG9zdG9OYW9SZWN1cGVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdJbXBvc3RvTmFvUmVjdXBlcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfaW1wb3N0b19uYW9fcmVjdXBlcmFkbydcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGJhc2VDYWxjdWxvQ3JlZGl0bzogW3sgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH1dXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdiYXNlQ2FsY3Vsb0NyZWRpdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Jhc2VDYWxjdWxvQ3JlZGl0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlY0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlY1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlY2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlY3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlY4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlY5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzEwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjEyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzEzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE2J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19iYXNlX2NhbGN1bG9fY3JlZGl0b19wbGFjZWhvbGRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYmFzZV9jYWxjdWxvX2NyZWRpdG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA2LCBsZzogNiwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICByZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ3JlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fcmVnX3RyaWJ1dF9waXNfY29maW5zX2N1bXVsYXRpdm8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucy5DVU1VTEFUSVZPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9yZWdfdHJpYnV0X3Bpc19jb2ZpbnNfbmFvX2N1bXVsYXRpdm8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucy5OQU9fQ1VNVUxBVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVnaW1lX3RyaWJ1dGFyaW9fcGlzX2NvZmluc19wbGFjZWhvbGRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVnaW1lX3RyaWJ1dGFyaW9fcGlzX2NvZmluc19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAncGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJjZW50dWFsX3N1c3BlbnNhb19wYXJjaWFsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDEwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQmVuZWZpY2lvRmlzY2FsKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGJlbmVmaWNpb0Zpc2NhbDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuYmVuZWZpY2lvRmlzY2FsTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdiZW5lZmljaW9GaXNjYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdleGNsdWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydmYWxzZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYmVuZWZpY2lvX2Zpc2NhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQ3N0RGVzb25lcmFjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgc2l0dWFjYW9UcmlidXRhcmlhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmUwMjdTdHJMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICd0aXBPcGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwT3BlLlZFTlRSQURBLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBPcGUuVlNBSURBLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBPcGUuVkFNQk9TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtFbnVtU2l0dWFjYW8uVkFUSVZPXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2V4Y2x1aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ2ZhbHNlJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICd0aXBJbXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtFbnVtVGlwSW1wQ3N0LkNCU19JQlNdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnU2l0dWFjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnc2l0dWFjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaWduOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MuY3N0X2Rlc29uZXJhY2FvX2luZm9fc2lnbidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLnNpdHVhY2FvX3RyaWJ1dGFyaWFfZGVzb25lcmFjYW8nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhRGVzb25lcmFjYW9cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogJ2VycHhfY3BsX2ltcC5pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVNpdHVhY2FvQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEuQVRJVk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwU29ydDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NvZGlnbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTb3J0OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnY29kaWdvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eURlcGVuZGVuY3k6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2UwMjdzdHInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRvcm5vLmZvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXR1YWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdDbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpZ246IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHhfY3BsX2ltcC5pbXBvc3Rvcy5jbGFzc2lmaWNhY2FvX3RyaWJ1dGFyaWFfZGVzb25lcmFjYW9faW5mb19zaWduJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MuY2xhc3NpZmljYWNhb190cmlidXRhcmlhX2Rlc29uZXJhY2FvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgW0VudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50b106IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8uTkVOSFVNLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFwbGljYXJfdmFsb3JfbGlxdWlkb19kb2N1bWVudG8nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2FwbGljYXJfdmFsb3JfbGlxdWlkb19kb2N1bWVudG9fc3VidHJhaXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50by5TVUJUUkFJUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9hcGxpY2FyX3ZhbG9yX2xpcXVpZG9fZG9jdW1lbnRvX3NvbWFyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8uU09NQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2FwbGljYXJfdmFsb3JfbGlxdWlkb19kb2N1bWVudG9fbmVuaHVtJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8uTkVOSFVNXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5Fc2NyaXR1cmFyQWxpcXVvdGFJU1MpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgW0VudW1DYW1wb1RyaWJ1dG8uRXNjcml0dXJhckFsaXF1b3RhSVNTXTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRXNjcml0dXJhckFsaXF1b3RhSVNTLlNJTSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bUNhbXBvVHJpYnV0by5Fc2NyaXR1cmFyQWxpcXVvdGFJU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lc2NyaXR1cmFyX2FsaXF1b3RhX2lzcydcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9lc2NyaXR1cmFyX2FsaXF1b3RhX2lzc19zaW0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRXNjcml0dXJhckFsaXF1b3RhSVNTLlNJTVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZXNjcml0dXJhcl9hbGlxdW90YV9pc3NfbmFvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUVzY3JpdHVyYXJBbGlxdW90YUlTUy5OQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT1cbiAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhQ3JlZGl0b1ByZXN1bWlkb1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzaWZpY2FjYW9UcmlidXRhcmlhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAnZXJweF9jcGxfaW1wLmltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydBVElWTyddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnY3JlZGl0b1ByZXN1bWlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWyd0cnVlJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdlMDI3c3RyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLklzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbbnVsbF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdDbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfY2xhc3NpZmljYWNhb190cmlidXRhcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5zdWdlc3RvZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc3VnZXN0b2VzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoc3VnZXN0YW8pID0+IHN1Z2VzdGFvLnRpcG9UcmlidXRvID09PSB0cmlidXRvKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChzdWdlc3RhbykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhzdWdlc3RhbylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGF0cmlidXRvcykgPT4gYXRyaWJ1dG9zWzBdICE9PSAndGlwb1RyaWJ1dG8nKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKGF0cmlidXRvcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFthdHJpYnV0b3NbMF1dWzBdLnZhbHVlID0gYXRyaWJ1dG9zWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXRvcm5vLmZvcm1GaWVsZCA9IGZvcm1GaWVsZDtcbiAgICAgICAgcmV0b3Juby5mb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgIGltcG9zdG9NYW51YWw6IFtcbiAgICAgICAgICAgICAgICB7IHZhbHVlOiBmYWxzZSwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b106IFtcbiAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICBdXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXRvcm5vO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVZhbHVlQ2hhbmdlcyh7XG4gICAgICAgIGl0ZW0sXG4gICAgICAgIGdyb3VwXG4gICAgfToge1xuICAgICAgICBpdGVtOiBJdGVtO1xuICAgICAgICBncm91cDogR3JvdXA7XG4gICAgfSkge1xuICAgICAgICBpdGVtLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChpdGVtLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpKSxcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgdXNpbmcgZGVib3VuY2VUaW1lIGhlcmUgYmVjYXVzZSBvdXIgTG9va3VwIENvbXBvbmVudCBpcyBlbWl0dGluZyB0d28gZXZlbnRzIHVuZm9ydHVuYXRlbHkuXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKSxcbiAgICAgICAgICAgICAgICBzY2FuKFxuICAgICAgICAgICAgICAgICAgICAoYWNjKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdWYWx1ZTogYWNjLnN0YXJ0aW5nVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWU6IGl0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWU6IGl0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWU6IGl0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgc3RhcnRpbmdWYWx1ZSwgY3VycmVudFZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0aW5nVmFsdWUuaW1wb3N0b01hbnVhbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhzdGFydGluZ1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkgIT09ICdpbXBvc3RvTWFudWFsJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXZlcnkoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHR5cGUgfSA9IGl0ZW0uZm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBGaWVsZFR5cGUuTG9va3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXkgfSA9IGl0ZW0uZm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdWYWx1ZT8uW2tleV0/LltkYXRhS2V5XSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWU/LltrZXldPy5bZGF0YUtleV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnRpbmdWYWx1ZVtrZXldID09PSBjdXJyZW50VmFsdWVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnaW1wb3N0b01hbnVhbCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKGZhbHNlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2ltcG9zdG9NYW51YWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0cnVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0lDTVNTaW1wbGVzQXNNYW51YWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lIGFzIEVudW1UaXBvVHJpYnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9NYW51YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWVbRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9dICE9PVxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhzdGFydGluZ1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkgIT09ICdpbXBvc3RvTWFudWFsJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXZlcnkoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHR5cGUgfSA9IGl0ZW0uZm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBGaWVsZFR5cGUuTG9va3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXkgfSA9IGl0ZW0uZm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdWYWx1ZT8uW2tleV0/LltkYXRhS2V5XSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWU/LltrZXldPy5bZGF0YUtleV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnRpbmdWYWx1ZVtrZXldID09PSBjdXJyZW50VmFsdWVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nVmFsdWVbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJrSUNNU1NpbXBsZXNBc01hbnVhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm5hbWUgYXMgRW51bVRpcG9UcmlidXRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMYWJlbEFsaXF1b3RhKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0cmlidXRvID09IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8gfHxcbiAgICAgICAgICAgIHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2ludGVyZXN0YWR1YWxfbGFiZWwnXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRyaWJ1dG8udG9TdHJpbmcoKS5lbmRzV2l0aCgnX0RJRkVSSURPJykgJiZcbiAgICAgICAgICAgIHRyaWJ1dG8gIT09IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2RpZmVyaWRvX2xhYmVsJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9sYWJlbCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUcmFuc2xhdGVCdXR0b24odmFsdWU6IGFueSkge1xuICAgICAgICBsZXQgdHJhbnNsYXRlID0gJy5idXR0b25fbWVtb3JpYV9jYWxjdWxvX2VtcHR5X2xhYmVsJztcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pZHNUYXhlc01lbW9yaWFDYWxjdWxvLmZpbmQoKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudGlwb1RyaWJ1dG8gPT0gdmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5pZFBhcmFtZXRybyAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0cmFuc2xhdGUgPSAnLmJ1dHRvbl9tZW1vcmlhX2NhbGN1bG9fbGFiZWwnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJlZml4TGFiZWwgKyB0cmFuc2xhdGU7XG4gICAgfVxuXG4gICAgaXNHcm91cEludmFsaWQoZ3JvdXA6IHtcbiAgICAgICAgZ3J1cG86IHN0cmluZztcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgZm9ybUZpZWxkOiBGb3JtRmllbGRbXTtcbiAgICAgICAgICAgIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgICAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgfVtdO1xuICAgIH0pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwPy5pdGVtPy5zb21lKChpdGVtKSA9PiBpdGVtPy5mb3JtR3JvdXA/LmludmFsaWQpO1xuICAgIH1cblxuICAgIGlzQmFkZ2VWaXNpYmxlKGl0ZW06IEl0ZW0pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGlzVGF4RnJvbVRheFJlZm9ybShpdGVtLm5hbWUgYXMgRW51bVRpcG9UcmlidXRvKSAmJlxuICAgICAgICAgICAgISFpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0QmFkZ2VDb2xvcihpdGVtOiBJdGVtKTogQmFkZ2VDb2xvcnMge1xuICAgICAgICBzd2l0Y2ggKGl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5DQUxDVUxBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLkdyZWVuO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkhFUkRBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLkJsdWU7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMOlxuICAgICAgICAgICAgICAgIHJldHVybiBCYWRnZUNvbG9ycy5ZZWxsb3c7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBCYWRnZUNvbG9ycy5ZZWxsb3c7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRCYWRnZVRleHQoaXRlbTogSXRlbSk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkNBTENVTEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9fY2FsY3Vsb19hdXRvbWF0aWNvJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9fY2FsY3Vsb19nZXJhZG9fdmlhX3Byb2Nlc3NvJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX21hbnVhbCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9fY2FsY3Vsb19tYW51YWwnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0QmFkZ2VJbmZvU2lnbihpdGVtOiBJdGVtKTogeyB0ZXh0OiBzdHJpbmcgfSB7XG4gICAgICAgIGlmIChpdGVtLmZvcm1Hcm91cC5nZXQoJ2ltcG9zdG9NYW51YWwnKS52YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfbWFudWFsJ1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgc3dpdGNoIChpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uQ0FMQ1VMQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9jYWxjdWxhZG8nXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkhFUkRBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X2hlcmRhZG8nXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfbWFudWFsJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9tYW51YWwnXG4gICAgICAgICAgICApXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ludm9pY2VEb2N1bWVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWVsZFJlcXVpcmVkKGZpZWxkOiBzdHJpbmcsIHRheFR5cGU6IEVudW1UaXBvVHJpYnV0byk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5ncnVwb3NcbiAgICAgICAgICAgIC5maW5kKChncm91cCkgPT4gZ3JvdXAuaXRlbS5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IHRheFR5cGUpKVxuICAgICAgICAgICAgLml0ZW0uZmluZCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSB0YXhUeXBlKTtcblxuICAgICAgICByZXR1cm4gaXRlbS5mb3JtR3JvdXAuZ2V0KGZpZWxkKS52YWxpZGF0b3I/Lih7fSBhcyBBYnN0cmFjdENvbnRyb2wpXG4gICAgICAgICAgICA/LnJlcXVpcmVkO1xuICAgIH1cblxuICAgIC8vIFdvcmstYXJvdW5kIHByYSByZXNvbHZlciBhICNFUlBQRVEtMjA1OTUuXG4gICAgLy8gTm8gZnV0dXJvIG1vdmVyIHBhcmEgbyBNYW51YWxUYXhDYWxjdWxhdGlvblJ1bGUgZSBUYXhDYWxjdWxhdGlvblR5cGVDYWxjdWxhdGlvblJ1bGVcbiAgICAvLyBxdWFuZG8gb3MgaW1wb3N0b3MgbGVnYWRvcyBmb3JlbSBtaWdyYWRvcyBwYXJhIG8gbm92byBwYWRyw6NvLlxuICAgIHByaXZhdGUgbWFya0lDTVNTaW1wbGVzQXNNYW51YWwoXG4gICAgICAgIHRheDogRW51bVRpcG9UcmlidXRvLFxuICAgICAgICBncm91cDogR3JvdXAsXG4gICAgICAgIGZpZWxkOiBFbnVtQ2FtcG9UcmlidXRvXG4gICAgKSB7XG4gICAgICAgIGlmICh0YXggIT09IEVudW1UaXBvVHJpYnV0by5JQ01TKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgSUNNU19TSU1QTEVTX0lURU0gPSBncm91cC5pdGVtLmZpbmQoXG4gICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFJQ01TX1NJTVBMRVNfSVRFTSkgcmV0dXJuO1xuXG4gICAgICAgIGlmIChmaWVsZCA9PT0gRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTWFudWFsKSB7XG4gICAgICAgICAgICBJQ01TX1NJTVBMRVNfSVRFTS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAuZ2V0KCdpbXBvc3RvTWFudWFsJylcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWUodHJ1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkID09PSBFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykge1xuICAgICAgICAgICAgSUNNU19TSU1QTEVTX0lURU0uZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgLmdldChmaWVsZClcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWUoRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QXJyZWRvbmRhbWVudG9BYm50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRpbmdDb250ZXh0LnB1c2goKTtcblxuICAgICAgICB0aGlzLmZlYXR1cmVUb2dnbGVTZXJ2aWNlXG4gICAgICAgICAgICAuaXNFbmFibGVkKHtcbiAgICAgICAgICAgICAgICBkb21haW46ICdlcnB4X2NwbF9pbXAnLFxuICAgICAgICAgICAgICAgIHNlcnZpY2U6ICdjYWxjdWxvX2ltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnYXJyZWRvbmRhbWVudG9BYm50J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5sb2FkaW5nQ29udGV4dC5wb3AoKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChhcnJlZG9uZGFtZW50b0FibnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXhTdG9yZS5zZXRBcnJlZG9uZGFtZW50b0FibnQoYXJyZWRvbmRhbWVudG9BYm50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
5119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2VycHgtY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJpYnV0b3MvZXJwLXRyaWJ1dG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sYUFBYSxFQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZUFBZSxFQUNmLFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsNkJBQTZCLEVBQzdCLDZDQUE2QyxFQUM3QyxhQUFhLEVBQ2IsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDeEIsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsV0FBVyxFQUNYLGVBQWUsRUFDZixjQUFjLEVBQ2QsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsV0FBVyxFQUNkLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFF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QUFLLEVBQUU7b0RBR1A7QUFJUTtJQUFSLEtBQUssRUFBRTtxREFBa0I7QUFDakI7SUFBUixLQUFLLEVBQUU7cURBQWtCO0FBQ2pCO0lBQVIsS0FBSyxFQUFFO21FQUlOO0FBQ087SUFBUixLQUFLLEVBQUU7b0VBQWlEO0FBQ2hEO0lBQVIsS0FBSyxFQUFFO3NFQUFvQztBQUVsQztJQUFULE1BQU0sRUFBRTs0REFBNEM7QUF0QjVDLG9CQUFvQjtJQU5oQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsY0FBYztRQUN4QixxbkhBQTRDO1FBRTVDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQzs7S0FDOUIsQ0FBQztHQUNXLG9CQUFvQixDQTZzUGhDO1NBN3NQWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJZGVudGlmaWVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gICAgQmVuZWZpY2lvRmlzY2FsTG9va3VwLFxuICAgIENsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLFxuICAgIENwbFRyaU5vdGFTYWlkYU5hdHVyZXphUmVjZWl0YVBpc0NvZmluc0xvb2t1cCxcbiAgICBFMDI3RXFpTG9va3VwLFxuICAgIEUwMjdTdHJMb29rdXAsXG4gICAgRW51bUxvZ2ljYWxPcGVyYXRvcixcbiAgICBMb29rdXBWYWxpZGF0aW9uVXRpbHNcbn0gZnJvbSAnQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gICAgQmFkZ2VDb2xvcnMsXG4gICAgQnV0dG9uQW5pbWF0aW9uLFxuICAgIEJ1dHRvblByaW9yaXR5LFxuICAgIEJ1dHRvblNpemUsXG4gICAgQ2FsZW5kYXJMb2NhbGVPcHRpb25zLFxuICAgIEZpZWxkVHlwZSxcbiAgICBGb3JtRmllbGQsXG4gICAgaXNOdWxsT3JVbmRlZmluZWQsXG4gICAgTG9jYWxlU2VydmljZSxcbiAgICBMb29rdXBGaWVsZFxufSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IEZlYXR1cmVUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL3BsYXRmb3JtLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgR1RhZ1NlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvcGxhdGZvcm0tdXRpbHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgTWVudUl0ZW0sIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaW5hbGl6ZSwgZmlyc3QsIHNjYW4sIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudW1TaXR1YWNhb0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9lbnVtLWNsYXNzaWZpY2FjYW8tdHJpYnV0YXJpYSc7XG5pbXBvcnQgeyBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9lbnVtLXRpcG8tY2FsY3Vsby1pbXBvc3RvJztcbmltcG9ydCB7IEVudW1JbmRpY2F0aXZvUGFkcmFvIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9lcnB4LWNvbS1wcm9jZXNzby1mYXR1cmFtZW50by1iYWNrZW5kL2VudW0taW5kaWNhdGl2by1wYWRyYW8nO1xuaW1wb3J0IHsgTG9hZGluZ0NvbnRleHQgfSBmcm9tICcuLi91dGlscy9sb2FkaW5nLWNvbnRleHQnO1xuaW1wb3J0IHsgVGF4QW1vdW50Q2FsY3VsYXRvciB9IGZyb20gJy4vY2FsY3VsYXRvcnMvdGF4LWFtb3VudC1jYWxjdWxhdG9yJztcbmltcG9ydCB7IEVycFRyaWJ1dG9zU2VydmljZSB9IGZyb20gJy4vZXJwLXRyaWJ1dG9zLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBDYW1wb1RyaWJ1dG8sXG4gICAgRW51bUFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgRW51bUNhbXBvVHJpYnV0byxcbiAgICBFbnVtRXNjcml0dXJhckFsaXF1b3RhSVNTLFxuICAgIEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8sXG4gICAgRW51bUdydXBvVHJpYnV0byxcbiAgICBFbnVtTW9kQmMsXG4gICAgRW51bU1vdERlcyxcbiAgICBFbnVtT3JpTWVyLFxuICAgIEVudW1SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zLFxuICAgIEVudW1TaXR1YWNhbyxcbiAgICBlbnVtVGlwQ3JlZFJlY3VwLFxuICAgIEVudW1UaXBJbXBDc3QsXG4gICAgRW51bVRpcE9wZSxcbiAgICBFbnVtVGlwb1RyaWJ1dG8sXG4gICAgSXRlbSxcbiAgICBTdWdlc3RhbyxcbiAgICBUYXhDYWxjdWxhdGlvbk1lbW9yeVxufSBmcm9tICcuL2VycC10cmlidXRvcy50eXBlcyc7XG5pbXBvcnQgeyBtYXBFbnVtVGlwb1RyaWJ1dG9Ub0VudW1UaXBJbXBDc3QgfSBmcm9tICcuL21hcHBpbmdzL2VudW0tdGlwLWltcC1jc3QtbWFwcGluZyc7XG5pbXBvcnQgeyBSdWxlc1NlcnZpY2UgfSBmcm9tICcuL3J1bGVzL3J1bGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGF4Um91bmRpbmdTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90YXgtcm91bmRpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBUYXhTdG9yZSB9IGZyb20gJy4vc3RvcmVzL3RheC5zdG9yZSc7XG5pbXBvcnQgeyBpc1RheEZyb21UYXhSZWZvcm0gfSBmcm9tICcuL3RheC1yZWZvcm0tdXRpbGl0aWVzJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuL3R5cGVzL2NvbnRleHQnO1xuaW1wb3J0IHsgR3JvdXAgfSBmcm9tICcuL3R5cGVzL2dyb3VwJztcbmltcG9ydCB7IFRheCB9IGZyb20gJy4vdHlwZXMvdGF4JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlcnAtdHJpYnV0b3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lcnAtdHJpYnV0b3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VycC10cmlidXRvcy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0xvYWRpbmdDb250ZXh0XVxufSlcbmV4cG9ydCBjbGFzcyBFcnBUcmlidXRvc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpXG4gICAgY29udGV4dDogQ29udGV4dDtcbiAgICBASW5wdXQoKSBzdWdlc3RvZXM6IFN1Z2VzdGFvW107XG4gICAgQElucHV0KCkgY2FtcG9zQmxvcXVlYWRvcyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHRyaWJ1dG9zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmlidXRvc1ZhbHVlO1xuICAgIH1cbiAgICBzZXQgdHJpYnV0b3ModmFsKSB7XG4gICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZSA9IHZhbDtcbiAgICB9XG4gICAgQElucHV0KCkgZG9taW5pbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBzZXJ2aWNvPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGN1cnJlbmN5TG9jYWxlT3B0aW9ucz86IGFueSA9IHtcbiAgICAgICAgY3VycmVuY3lTeW1ib2w6ICcnLFxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLCcsXG4gICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogJy4nXG4gICAgfTtcbiAgICBASW5wdXQoKSBpZHNUYXhlc01lbW9yaWFDYWxjdWxvPzogVGF4Q2FsY3VsYXRpb25NZW1vcnlbXTtcbiAgICBASW5wdXQoKSBwZXJtaXNzaW9uTWVtb3JpYUNhbGN1bG8/OiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIHRyaWJ1dG9zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUYXhbXT4oKTtcblxuICAgIHJlYWRvbmx5IEJhZGdlQ29sb3JzID0gQmFkZ2VDb2xvcnM7XG4gICAgcmVhZG9ubHkgQnV0dG9uUHJpb3JpdHkgPSBCdXR0b25Qcmlvcml0eTtcbiAgICByZWFkb25seSBCdXR0b25TaXplID0gQnV0dG9uU2l6ZTtcbiAgICByZWFkb25seSBCdXR0b25BbmltYXRpb24gPSBCdXR0b25BbmltYXRpb247XG5cbiAgICBwdWJsaWMgZ3J1cG9zOiBHcm91cFtdID0gW107XG4gICAgcHVibGljIHRyaWJ1dG9zVmFsdWU6IFRheFtdID0gW107XG4gICAgcHVibGljIHJlbG9hZCA9IHRydWU7XG4gICAgcHVibGljIGluZGV4QWNjb3JkaW9uOiBudW1iZXJbXSA9IFtdO1xuICAgIHB1YmxpYyBwcmVmaXhMYWJlbDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBtZW51SXRlbVBpcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1Db2ZpbnMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSXBpID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlzcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1JbXBvcnRhY29lcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1SZXRlbmNvZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSWNtcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgIHByaXZhdGUgbWVudUl0ZW1DQlMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSUJTRXN0YWR1YWwgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSUJTTXVuaWNpcGFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtZW51SXRlbUlCU0NyZWRpdG9QcmVzdW1pZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSVMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8gPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ0JTX0lCU19BanVzdGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2JzSWJzVHJhbnNmZXJlbmNpYUNyZWRpdG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIG1lbnVJdGVtSWNtc0NyZWRpdG9QcmVzdW1pZG8gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmluc0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUlwaURldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JcGlPdXRyYXNEZXNwZXNhcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXNzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Jc3NSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUltcG9zdG9JbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1QaXNSZXRpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmluc1JldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtQ3NsbFJldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSXJyZlJldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSW5zc1JldGlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zU3QgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUZjcFN0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUZjcENvYnJhZG9BbnRlcmlvcm1lbnRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1GY3AgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUljbXNEaWZlcmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbURpZmVyZW5jaWFsQWxpY290YSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtUGlzRmF0dXJlbWVudG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbUNvZmlucyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJdGVtRmNwVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRJY21zRnV0dXJvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTaW1wbGVzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNDcmVkaXRvUHJlc3VtaWRvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkRGlmYWxEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSUNNU19VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRGQ1BfVUZfRGVzdGlub19EZXZvbHZpZG8gPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZGJhc2VDYWxjdWxvQ3JlZGl0byA9IHRydWU7XG4gICAgcHJpdmF0ZSByZXF1aXJlZFBlcmNlbnR1YWxSZWR1Y2FvID0gdHJ1ZTtcbiAgICBwcml2YXRlIHJlcXVpcmVkSWNtc1N0U29saWRhcmlvID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVxdWlyZWRGY3BTdFJlZGl0b0FudCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcGVyY2VudGFnZUxvY2FsZU9wdGlvbnM/OiBhbnk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcmVhZG9ubHkgbG9hZGluZ0NvbnRleHQ6IExvYWRpbmdDb250ZXh0LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlMDI3U3RyTG9va3VwOiBFMDI3U3RyTG9va3VwLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGJlbmVmaWNpb0Zpc2NhbExvb2t1cDogQmVuZWZpY2lvRmlzY2FsTG9va3VwLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGUwMjdlcWlMb29rdXA6IEUwMjdFcWlMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbmF0dXJlemFSZWNlaXRhTG9va3VwOiBDcGxUcmlOb3RhU2FpZGFOYXR1cmV6YVJlY2VpdGFQaXNDb2ZpbnNMb29rdXAsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFMb29rdXA6IENsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvb2t1cFV0aWxzOiBMb29rdXBWYWxpZGF0aW9uVXRpbHMsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZXJwVHJpYnV0b3NTZXJ2aWNlOiBFcnBUcmlidXRvc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZ3RhZzogR1RhZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcnVsZXNTZXJ2aWNlOiBSdWxlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YXhSb3VuZGluZ1NlcnZpY2U6IFRheFJvdW5kaW5nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YXhBbW91bnRDYWxjdWxhdG9yOiBUYXhBbW91bnRDYWxjdWxhdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVUb2dnbGVTZXJ2aWNlOiBGZWF0dXJlVG9nZ2xlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YXhTdG9yZTogVGF4U3RvcmVcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kb21pbmlvID0gdGhpcy5kb21pbmlvID8gdGhpcy5kb21pbmlvIDogJ2VycHhfY3BsX2ltcCc7XG4gICAgICAgIHRoaXMuc2VydmljbyA9IHRoaXMuc2VydmljbyA/IHRoaXMuc2VydmljbyA6ICdjYWRhc3Ryb3MnO1xuXG4gICAgICAgIHRoaXMucHJlZml4TGFiZWwgPSBgJHt0aGlzLmRvbWluaW99LiR7dGhpcy5zZXJ2aWNvfWA7XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zKS5sZW5ndGggPT0gMClcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sOiAnJyxcbiAgICAgICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLCcsXG4gICAgICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiAnLidcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sOiAnJScsXG4gICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucy5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucy50aG91c2FuZHNTZXBhcmF0b3JcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmdldEFycmVkb25kYW1lbnRvQWJudCgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFyaWF2ZWlzQWx0ZXJhZGFzID0gT2JqZWN0LmtleXMoY2hhbmdlcyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF2YXJpYXZlaXNBbHRlcmFkYXMuaW5jbHVkZXMoJ3N1Z2VzdG9lcycpIHx8XG4gICAgICAgICAgICB2YXJpYXZlaXNBbHRlcmFkYXMubGVuZ3RoID4gMVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJWYXJpYWJsZXMoKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgdGhpcy50cmlidXRvc1ZhbHVlLmxlbmd0aCA9PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdydXBvcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMudHJpYnV0b3NWYWx1ZSA9IFtdO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlbG9hZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3J1cG9zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUcmlidXRvcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VHJpYnV0b3MoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5jYW1wb3NCbG9xdWVhZG9zID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWRPbmx5VHJpYnV0b3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMubG9va3VwVXRpbHMucmVzZXRTdG9yZWRLZXlzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG1lbW9yaWFDYWxjdWxvKGltcG9zdG86IGFueSkge1xuICAgICAgICBsZXQgdHJpYnV0byA9IHRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3Vsby5maW5kKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnRpcG9UcmlidXRvID09IGltcG9zdG8ubmFtZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWJyaXJXaW5kb3dVcmxNZW1vcmlhQ2FsY3Vsbyh0cmlidXRvKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VVcmxXaW5kb3cocGFyYW1zOiBJZGVudGlmaWVycywgdHJpYnV0bz86IGFueSkge1xuICAgICAgICB0aGlzLmVycFRyaWJ1dG9zU2VydmljZVxuICAgICAgICAgICAgLmdldEZyb250ZW5kKHBhcmFtcylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihgJHtyZXNwb25zZS5mcm9udGVuZHNbMF0uZW1iZWRkZWRVUkx9YCwgJ19ibGFuaycpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ndGFnLnNlbmRCdXR0b25DbGljaygnQm90w6NvIGFjZXNzYXIgcGFyYW1ldHJpemHDp8OjbycsIHtcbiAgICAgICAgICAgIGltcG9zdG9zOiB0cmlidXRvLnRpcG9UcmlidXRvXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNhYmxlZEJ1dHRvbihpdGVtOiBJdGVtKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoJ2ltcG9zdG9NYW51YWwnKS52YWx1ZSB8fFxuICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZSA9PT1cbiAgICAgICAgICAgICAgICBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTCB8fFxuICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZSA9PT1cbiAgICAgICAgICAgICAgICBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkhFUkRBRE8gfHxcbiAgICAgICAgICAgIHRoaXMuaWRzVGF4ZXNNZW1vcmlhQ2FsY3VsbyA9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICF0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8uZmluZCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudGlwb1RyaWJ1dG8gPT0gaXRlbS5uYW1lICYmXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaWRQYXJhbWV0cm8gIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGhpZGVCdXR0b24oaW1wb3N0bzogYW55KSB7XG4gICAgICAgIHN3aXRjaCAoaW1wb3N0bykge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhYnJpcldpbmRvd1VybE1lbW9yaWFDYWxjdWxvKHRyaWJ1dG86IGFueSkge1xuICAgICAgICBpZiAoIXRyaWJ1dG8/LmlkUGVyZmlsVHJpYnV0YXJpbyAmJiAhdHJpYnV0bz8uaWRQYXJhbWV0cm8pIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJyb3JfbWVtb3JpYV9jYWxjdWxvX21lc3NhZ2VfdGl0bGUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnJvcl9tZW1vcmlhX2NhbGN1bG9fbWVzc2FnZV9jb250ZW50J1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIGlkZW50aWZpZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkb21haW5OYW1lOiAnZXJweF9jcGxfaW1wJyxcbiAgICAgICAgICAgICAgICAgICAgc2VydmljZU5hbWU6ICdpbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgIGFwcE5hbWU6ICdlcnB4LWNwbC1pbXAtaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICByb3V0ZTogYCR7dGhpcy52YWxpZGFUZWxhKHRyaWJ1dG8pfWBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5tYWtlVXJsV2luZG93KHBhcmFtcywgdHJpYnV0byk7XG4gICAgfVxuXG4gICAgdmFsaWRhVGVsYSh0YXhlczogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RUYXhlcyh0YXhlcy50aXBvVHJpYnV0bykpIHtcbiAgICAgICAgICAgIGlmICh0YXhlcy5pZFBhcmFtZXRyb0VzdGFkbykge1xuICAgICAgICAgICAgICAgIHJldHVybiBgaWNtc3N0LyR7dGF4ZXMuaWRQYXJhbWV0cm9TdH0vaWNtc3N0LXBhcmFtZXRyb3MvJHt0YXhlcy5pZFBhcmFtZXRyb0VzdGFkb30/cGVyZmlsVHJpYnV0YXJpb0lkPSR7dGF4ZXMuaWRQZXJmaWxUcmlidXRhcmlvfSZwYXJhbWV0cm9JbXBvc3Rvc0lkPSR7dGF4ZXMuaWRQYXJhbWV0cm99YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpY21zc3QvJHt0YXhlcy5pZFBhcmFtZXRyb30vaWNtc3N0LXBhcmFtZXRyb3MvJHt0YXhlcy5pZFBhcmFtZXRyb1N0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGBwZXJmaWwtdHJpYnV0YXJpby8ke3RheGVzLmlkUGVyZmlsVHJpYnV0YXJpb30vcGFyYW1ldHJpemFjYW8taW1wb3N0b3MvJHt0aGlzLmdldFRyaWJ1dG9QYWkodGF4ZXMudGlwb1RyaWJ1dG8pfS8ke1xuICAgICAgICAgICAgdGF4ZXMuaWRQYXJhbWV0cm9cbiAgICAgICAgfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1N0VGF4ZXModGF4ZXM6IGFueSkge1xuICAgICAgICBzd2l0Y2ggKHRheGVzKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VHJpYnV0b1BhaSh0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgc3dpdGNoICh0cmlidXRvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Bpcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NvZmlucyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUEk6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfT1VUUkFTX0RFU1BFU0FTOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaXBpJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpc3MnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWknO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVJSRjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1M6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfVE9UQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyZXRlbmNvZXMnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRElGQUxfREVWT0xWSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfQ09CUkFET19BTlRFUklPUk1FTlRFX1NUOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfU1Q6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWNtcyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdjaWRlJztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19ESUZFUklETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfR09WRVJOQU1FTlRBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Nicyc7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0dPVkVSTkFNRU5UQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpYnMtZXN0YWR1YWwnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfRElGRVJJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfR09WRVJOQU1FTlRBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2licy1tdW5pY2lwYWwnO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdpcyc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhclZhcmlhYmxlcygpIHtcbiAgICAgICAgaWYgKHRoaXMucmVsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4QWNjb3JkaW9uID0gWy0xXTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DQlMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JQlNFc3RhZHVhbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlCU011bmljaXBhbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUlTID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUGlzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ29maW5zID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSXBpID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSXNzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSW1wb3J0YWNvZXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JY21zID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1SZXRlbmNvZXNGdW5ydXJhbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXNDcmVkaXRvUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ2JzSWJzVHJhbnNmZXJlbmNpYUNyZWRpdG8gPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1DaWRlVGVjbm9sb2dpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlEZXZvbHZpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaU91dHJhc0Rlc3Blc2FzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW1wb3N0b0ltcG9ydGFjYW8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtUGlzUmVjdXBlcmFySW1wb3J0YWNhbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXJJbXBvcnRhY2FvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ3NsbFJldGlkbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUluc3NSZXRpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSW5zc1BhdHJvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmlucyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcFVmRGVzdGlubyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNGdXR1cm8gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU2ltcGxlcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmFtZW50byA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFNvbGlkYXJpbyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTdFJldGlkb0FudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEZjcFN0UmVkaXRvQW50ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVRyaWJ1dG9zKCkge1xuICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdC50aXBvSW1wb3N0bykge1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCUzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9ESUZFUklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSUJTRXN0YWR1YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhSUJTTXVuaWNpcGFsKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YUlCU0NyZWRpdG9QcmVzdW1pZG8oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJUygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlNJQlNFc3Rvcm5vQ3JlZGl0bygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEU6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlNfSUJTX0FqdXN0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDQlNJQlNUcmFuc2ZlcmVuY2lhQ3JlZGl0bygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhUGlzKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDb2ZpbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJcGkoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJc3MoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJbXBvcnRhY29lcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ1NMTDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklOU1M6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb250YVJldGVuY29lcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUDpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVSTzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU86XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19FRkVUSVZPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETzpcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVM6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJY21zKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUT19QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFJY21zQ3JlZGl0b1ByZXN1bWlkbygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9udGFDaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1M6XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSOlxuICAgICAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbnRhUmV0ZW5jb2VzRnVucnVyYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZE9ubHlUcmlidXRvcygpOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiB0aGlzLmdydXBvcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwLml0ZW0pIHtcbiAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VHJpYnV0b3MoKSB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT5cbiAgICAgICAgICAgICAgICBncnVwby5pdGVtLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWJ1dG9zVmFsdWUubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ubmFtZSA9PT0gaXQudGlwb0ltcG9zdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5wYXRjaFZhbHVlKGl0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybShpdC50aXBvSW1wb3N0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKGl0LnRpcG9JbXBvc3RvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuZ3J1cG9zKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwLml0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplVmFsdWVDaGFuZ2VzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWxpZGF0b3JzKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bykge1xuICAgICAgICBpZiAodGhpcy5ncnVwb3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3J1cG9zLm1hcCgoZ3J1cG8pID0+IHtcbiAgICAgICAgICAgICAgICBncnVwby5pdGVtXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0KSA9PiBpdC5uYW1lID09IHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGl0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNWYWx1ZSA9IE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuZ2V0KGtleSkudmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5nZXQoa2V5KS52YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC52YWx1ZSkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsUmVkdWNhbycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxEaWZlcmltZW50bycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09PSAncGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoMTAwMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAndmFsb3InKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdzaXR1YWNhb1RyaWJ1dGFyaWEnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnb2JzZXJ2YWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnY29kaWdvQXJyZWNhZGFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdiZW5lZmljaW9GaXNjYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2luZGljYXRpdm9BcXVpc2ljYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2NvZGlnb1RyaWJ1dGFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ0ltcG9zdG9OYW9SZWN1cGVyYWRvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnYmFzZUNhbGN1bG9DcmVkaXRvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWlyZWQodHJpYnV0bywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAnaW1wb3N0b01hbnVhbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gIT09ICduYXR1cmV6YVJlY2VpdGEnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAndmFsb3JEZWR1Y2FvJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSAhPT0gJ3JlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnMnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtICE9PSAncmVkdWNhb0FsaXF1b3RhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0LmZvcm1Hcm91cC52YWx1ZSkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09ICdwZXJjZW50dWFsUmVkdWNhbycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxEaWZlcmltZW50bycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT0gJ3BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtID09PSAncGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoMTAwMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAndmFsb3InKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UodmFsaWRhdG9ycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnb2JzZXJ2YWNhbycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tpdGVtXS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSAnY29kaWdvQXJyZWNhZGFjYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09ICdiZW5lZmljaW9GaXNjYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ2luZGljYXRpdm9BcXVpc2ljYW8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHNbaXRlbV0uc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gJ0ltcG9zdG9OYW9SZWN1cGVyYWRvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW2l0ZW1dLnNldFZhbGlkYXRvcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZXF1aXJlZCh0cmlidXRvLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVpcmVkKHRyaWJ1dG8sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUFsbEZvcm1GaWVsZHMoZm9ybUdyb3VwOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZmllbGQpO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbClcbiAgICAgICAgICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICAgICAgICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKVxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKGNvbnRyb2wpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRhIGEgdmFsaWRhw6fDo28gZGUgdG9kb3Mgb3MgY2FtcG9zIGRvcyBmb3JtdWzDoXJpb3MgZGVudHJvIGRvcyBncnVwb3MuXG4gICAgICpcbiAgICAgKiAqKkF0ZW7Dp8OjbzoqKiBFc3RlIG3DqXRvZG8gKipuw6NvKiogZGV2ZSBzZXIgdXRpbGl6YWRvIG5vIHRlbXBsYXRlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIHNlIHRvZG9zIG9zIGZvcm11bMOhcmlvcyBmb3JlbSB2w6FsaWRvcyBlIG5lbmh1bSB2YWxvciBkZSBpbXBvc3RvIGZvciBuZWdhdGl2bzsgY2FzbyBjb250csOhcmlvLCByZXRvcm5hIGBmYWxzZWAuXG4gICAgICovXG4gICAgdmFsaWRhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5maW5kR3JvdXBXaXRoTmVnYXRpdmVUYXhWYWx1ZSgpO1xuXG4gICAgICAgIGlmIChncm91cCkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIHN0aWNreTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcnB4LnRyaWJ1dG9zLmVycm9yJyksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lcnJvcl90YXhfd2l0aF9uZWdhdGl2ZV90YXhfdmFsdWUnLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYGVycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXyR7Z3JvdXAuZ3J1cG9UcmlidXRvLnRvTG93ZXJDYXNlKCl9YFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdydXBvcy5ldmVyeSgoZ3JvdXApID0+XG4gICAgICAgICAgICBncm91cC5pdGVtXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uZm9ybUdyb3VwLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgIC5ldmVyeSgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlQWxsRm9ybUZpZWxkcyhpdGVtLmZvcm1Hcm91cCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZm9ybUdyb3VwLnZhbGlkO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmVyaWZpY2Egc2UgYWxndW0gZm9ybXVsw6FyaW8gZXN0w6EgaW52w6FsaWRvLlxuICAgICAqXG4gICAgICogRGV2ZSBzZXIgdXRpbGl6YWRvIHNvbWVudGUgbm8gdGVtcGxhdGUgcGFyYSBjb250cm9sZSBkZSBib3TDtWVzIG91IGV4aWJpw6fDo28gZGUgbWVuc2FnZW5zLlxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIHNlIGFsZ3VtIGBmb3JtR3JvdXBgIGVzdGl2ZXIgaW52w6FsaWRvIG91IHNlIGFsZ3VtIHZhbG9yIGRlIGltcG9zdG8gZm9yIG5lZ2F0aXZvLlxuICAgICAqL1xuICAgIGlzSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy5maW5kR3JvdXBXaXRoTmVnYXRpdmVUYXhWYWx1ZSgpIHx8XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5zb21lKChncm91cCkgPT5cbiAgICAgICAgICAgICAgICBncm91cC5pdGVtLnNvbWUoKGl0ZW0pID0+IGl0ZW0uZm9ybUdyb3VwLmludmFsaWQpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kR3JvdXBXaXRoTmVnYXRpdmVUYXhWYWx1ZSgpOiBHcm91cCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdydXBvc1xuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT0gRW51bUdydXBvVHJpYnV0by5DQlMgfHxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PSBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTCB8fFxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTCB8fFxuICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxfRElGRVJJRE9cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maW5kKChncm91cCkgPT5cbiAgICAgICAgICAgICAgICBncm91cC5pdGVtLnNvbWUoKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmZvcm1Hcm91cC5nZXQoJ3ZhbG9yJykudmFsdWUgPz8gMFxuICAgICAgICAgICAgICAgICAgICApLmlzTGVzc1RoYW4oMClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFyckl0ZW5zOiBhbnkgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuZ3J1cG9zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdydXBvcy5tYXAoKGdydXBvKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3J1cG8uaXRlbS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoaXRlbS5mb3JtR3JvdXApO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmlidXRvc1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRldU1hdGggPSB0aGlzLnRyaWJ1dG9zVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJpYnV0bykgPT4gdHJpYnV0by50aXBvSW1wb3N0byA9PSBpdGVtLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodHJpYnV0bykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udHJpYnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXVNYXRoICYmIGRldU1hdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJySXRlbnMucHVzaChkZXVNYXRoWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJySXRlbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpcG9JbXBvc3RvOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyckl0ZW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpcG9JbXBvc3RvOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWxvYWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50cmlidXRvc0NoYW5nZS5lbWl0KGFyckl0ZW5zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdm9JbXBvc3RvTWFudWFsKGl0ZW06IEl0ZW0sIHNpbmdsZUNoYW5nZT86IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0oaXRlbS5uYW1lIGFzIEVudW1UaXBvVHJpYnV0bykpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZm9ybUZpZWxkIG9mIGl0ZW0uZm9ybUZpZWxkKSB7XG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLm9uQmx1cj8uY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2luZ2xlQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3J1cG9zLmZpbmQoKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgIGdyb3VwLml0ZW0uaW5jbHVkZXMoaXRlbSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVZhbHVlQ2hhbmdlcyh7XG4gICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICBncm91cFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWN0aW9ucygpOiBNZW51SXRlbVtdIHtcbiAgICAgICAgY29uc3QgbWVudTogTWVudUl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIG1lbnUucHVzaChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19jYnNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUNCUyxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ0JTKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PSBFbnVtR3J1cG9UcmlidXRvLkNCU1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2lic19lc3RhZHVhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSUJTRXN0YWR1YWwsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlCU0VzdGFkdWFsKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2lic19tdW5pY2lwYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlCU011bmljaXBhbCxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSUJTTXVuaWNpcGFsKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pYnNfY3JlZGl0b19wcmVzdW1pZG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUlCU0NyZWRpdG9QcmVzdW1pZG8sXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlCU0NyZWRpdG9QcmVzdW1pZG8oKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pc19sYWJlbCcpLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSVMsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlTKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlc1NlcnZpY2UuYXBwbHkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdydXBvcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLmdydXBvcy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZ3J1cG9UcmlidXRvID09PSBFbnVtR3J1cG9UcmlidXRvLklTXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2JzX2lic19lc3Rvcm5vX2NyZWRpdG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDQlNJQlNFc3Rvcm5vQ3JlZGl0bygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0VTVE9STk9fQ1JFRElUT1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZpc2libGU6XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JykgfHxcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5kZWJpdEludm9pY2VUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJbnZlbnRvcnkgTG9zcycpIHx8XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0NyZWRpdCcpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2Nic19pYnNfYWp1c3RlX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1DQlNfSUJTX0FqdXN0ZSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ0JTX0lCU19BanVzdGUoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzU2VydmljZS5hcHBseSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3J1cG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMuZ3J1cG9zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5ncnVwb1RyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19BSlVTVEVcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnICYmXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRleHQuaW52b2ljZS5kZWJpdEludm9pY2VUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NyZWRpdCBDYW5jZWxsYXRpb24gRXhlbXB0IE91dHB1dHMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS5kZWJpdEludm9pY2VUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZWJpdHMgVW5wcm9jZXNzZWQgSW52b2ljZXMgQXNzZXNzbWVudCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Rpc3F1YWxpZmljYXRpb24gZnJvbSBTaW1wbGVzIE5hY2lvbmFsJylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2JzX2lic190cmFuc2ZlcmVuY2lhX2NyZWRpdG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUNic0lic1RyYW5zZmVyZW5jaWFDcmVkaXRvLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFDQlNJQlNUcmFuc2ZlcmVuY2lhQ3JlZGl0bygpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZXNTZXJ2aWNlLmFwcGx5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogdGhpcy5ncnVwb3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogdGhpcy5ncnVwb3MuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXApID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmdydXBvVHJpYnV0byA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX1RSQU5TRkVSRU5DSUFfQ1JFRElUT1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZpc2libGU6XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udGV4dC5pbnZvaWNlLmRlYml0SW52b2ljZVR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NyZWRpdCBUcmFuc2ZlciBDb29wZXJhdGl2ZXMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuZGViaXRJbnZvaWNlVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NyZWRpdCBUcmFuc2ZlciBTdWNjZXNzaW9uJykpIHx8XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0NyZWRpdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLmNyZWRpdEludm9pY2VUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDcmVkaXQgVHJhbnNmZXIgU3VjY2Vzc2lvbicpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAncmV0ZW5jYW9GdW5ydXJhbCcsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfcmV0ZW5jYW9fZnVucnVyYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFSZXRlbmNvZXNGdW5ydXJhbCgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdwaXMnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX3Bpc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtUGlzLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFQaXMoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAnY29maW5zJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19jb2ZpbnNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbUNvZmlucyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhQ29maW5zKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJ2lwaScsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfaXBpX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JcGksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUlwaSgpLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdm9JbXBvc3RvTWFudWFsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbmRleEFjY29yZGlvbiA9IFswXSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICdpY21zJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pY21zX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JY21zLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJY21zKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgIT09ICdTYWxlIE9yZGVyJykge1xuICAgICAgICAgICAgbWVudS5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogJ2ltcG9ydGFjb2VzJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pbXBvcnRhY29lc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSW1wb3J0YWNvZXMsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUltcG9ydGFjb2VzKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuaXRlbS50eXBlID09PSAnU2VydmljZScpIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lm9yZGVyLml0ZW0udHlwZSA9PT0gJ1NlcnZpY2UnKSB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lm9yZGVyLml0ZW0udHlwZSA9PT0gJ1NlcnZpY2UnKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIG1lbnUucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6ICdpc3MnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5hY3Rpb25zX2lzc19sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtSXNzLFxuICAgICAgICAgICAgICAgIHZpc2libGU6IHRoaXMucG9kZU1vc3RyYXJJbXBvc3RvcygpLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubW9udGFJc3MoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5vcmRlci5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJykgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5vcmRlci5pdGVtLnR5cGUgPT09ICdTZXJ2aWNlJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAncmV0ZW5jb2VzJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19yZXRlbmNvZXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5tZW51SXRlbVJldGVuY29lcyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhUmV0ZW5jb2VzKCkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm92b0ltcG9zdG9NYW51YWwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmluZGV4QWNjb3JkaW9uID0gWzBdKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UuaXRlbS50eXBlID09PSAnU2VydmljZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBtZW51LnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnY2lkZScsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmFjdGlvbnNfY2lkZV9sYWJlbCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLm1lbnVJdGVtQ2lkZVRlY25vbG9naWEsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wb2RlTW9zdHJhckltcG9zdG9zKCksXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5tb250YUNpZGUoKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJyB8fFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JylcbiAgICAgICAgKVxuICAgICAgICAgICAgbWVudS5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYWN0aW9uc19pY21zX2NyZWRpdG9fcHJlc3VtaWRvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbyxcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiB0aGlzLnBvZGVNb3N0cmFySW1wb3N0b3MoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm1vbnRhSWNtc0NyZWRpdG9QcmVzdW1pZG8oKS5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3ZvSW1wb3N0b01hbnVhbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5kZXhBY2NvcmRpb24gPSBbMF0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWVudTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBvZGVNb3N0cmFySW1wb3N0b3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgKHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0NyZWRpdCcpIHx8XG4gICAgICAgICAgICAodGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJY21zQ3JlZGl0b1ByZXN1bWlkbygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JY21zQ3JlZGl0b1ByZXN1bWlkbyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2NyZWRpdG9fcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJlbmVmaWNpb0Zpc2NhbCB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhQ2lkZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1DaWRlVGVjbm9sb2dpYSA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNpZGVUZWNub2xvZ2lhID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NpZGVfdGVjbm9sb2dpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUEsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2lkZV90ZWNub2xvZ2lhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0lERV9URUNOT0xPR0lBXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNJREVfVEVDTk9MT0dJQSxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUljbXMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSWNtcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUljbXMgPSB0cnVlO1xuXG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBESUZBTCBERVZPTFZJRE8gKi9cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc191Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYURlc3Rpbm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgIT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3NpbXBsZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Rlc29uZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGlmZXJpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5ESUZBTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZGlmYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRElGQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEBJQ01TX1NUICovXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsTWFyZ2VtVmFsb3JBZGljaW9uYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3Rfc29saWRhcmlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfZnV0dXJvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yUmVjb2xoaWRvUGVsb1N1YnN0aXR1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJY21zU3RSZXRpZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3Bfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19lZmV0aXZvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfRUZFVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zaW1wbGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU0lNUExFU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbERpZmVyaW1lbnRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19mY3BfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBASUNNU19TVCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X3NvbGlkYXJpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfRlVUVVJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3N0X2Z1dHVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX0ZVVFVST1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9TVFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9yZXRpZG9fYW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFN1cG9ydGFkb0NvbnN1bWlkb3JGaW5hbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9ic2VydmFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklDTVNfREVTT05FUkFETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19kZXNvbmVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTW90aXZvRGVzb25lcmFjYW9JY21zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfdWZfZGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUludGVybmEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF91Zl9kZXN0aW5vJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk9yaWdlbSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc2ltcGxlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfZGVzb25lcmFkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk1vdGl2b0Rlc29uZXJhY2FvSWNtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ERVNPTkVSQURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRElGQUwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2RpZmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkRJRkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW1wb3N0b05hb1JlY3VwZXJhZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklDTVNfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWNtc19zdF9zb2xpZGFyaW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ZjcF9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GQ1BfU1RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ljbXNfc3RfcmV0aWRvX2FudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySWNtc1N0UmV0aWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GQ1BfU1RfUkVUSURPX0FOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3N0X3JldGlkb19hbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQ01TX1VGX0RFU1RJTk9fREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pY21zX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hRGVzdGlub1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZmNwX3VmX2Rlc3Rpbm9fZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZDUF9VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQ01TICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSUNNUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVJldGVuY29lcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1SZXRlbmNvZXMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3BhdHJvbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NfUEFUUk9OQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb1RyaWJ1dGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvVHJpYnV0YWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNTTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NzbGxfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNTTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUlJGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcnJmX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUlJGXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSU5TU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRVRJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DU0xMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jc2xsX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DU0xMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVJSRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXJyZl9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVJSRlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklOU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2luc3NfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklOU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVUSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ1NMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY3NsbF9yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ1NMTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklSUkYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lycmZfcmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklSUkZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTlNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbnNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSU5TU19QQVRST05BTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW5zc19wYXRyb25hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLlJFVEVOQ09FUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLlJFVEVOQ09FUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YVJldGVuY29lc0Z1bnJ1cmFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbVJldGVuY29lc0Z1bnJ1cmFsID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtUmV0ZW5jb2VzRnVucnVyYWwgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9JTlNTLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfaW5zcycsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5JbmRpY2F0aXZvQXF1aXNpY2FvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX0lOU1NcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFULFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfcmF0JyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkluZGljYXRpdm9BcXVpc2ljYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNvZGlnb0FycmVjYWRhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfUkFUXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fZnVucnVyYWxfc2VuYXInLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uSW5kaWNhdGl2b0FxdWlzaWNhbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ29kaWdvQXJyZWNhZGFjYW8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9TRU5BUlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9UT1RBTCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Z1bnJ1cmFsX3RvdGFsJyxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkZVTlJVUkFMICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uRlVOUlVSQUwsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZ1bnJ1cmFsVG90YWwgPSBpdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gJ0ZVTlJVUkFMX1RPVEFMJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZ1bnJ1cmFsVG90YWwuZm9ybUdyb3VwLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJbXBvcnRhY29lcygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JbXBvcnRhY29lcyA9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUltcG9ydGFjb2VzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuY29udGV4dC5kb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pbXBvc3RvX2ltcG9ydGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faW1wb3N0b19pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklNUE9TVE9fSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcl9pbXBvcnRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVJfSU1QT1JUQUNBT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2ltcG9zdG9faW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JTVBPU1RPX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXJfaW1wb3J0YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklNUE9SVEFDT0VTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uSU1QT1JUQUNPRVMsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJc3MoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtSXNzID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtSXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmNvbnRleHQuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlICdQdXJjaGFzZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgY2FzZSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pc3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5Fc2NyaXR1cmFyQWxpcXVvdGFJU1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklTU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzc19yZXRpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsUmVkdWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdDb250cm9sbGVyc2hpcCBJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXNzX3JldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxSZWR1Y2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckRlZHVjYW8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVNTX1JFVElET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JU1MgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JU1MsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDQlMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ0JTKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNCUyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLkNCU1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5DQlNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWwgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50byxcbiAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhbXBvc19DQlNfQ1JFRElUT19QUkVTVU1JRE8gPSBbXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zX0NCU19DUkVESVRPX1BSRVNVTUlETy5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFDcmVkaXRvUHJlc3VtaWRvXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2FtcG9zX0NCU19UUklCVVRBQ0FPX1JFR1VMQVIgPSBbXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNJbnZvaWNlRG9jdW1lbnQoKSkge1xuICAgICAgICAgICAgY2FtcG9zX0NCU19UUklCVVRBQ0FPX1JFR1VMQVIucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlMsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NicycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhjYW1wb3MsIEVudW1UaXBvVHJpYnV0by5DQlMpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfY3JlZGl0b19wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIGNhbXBvc19DQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfVFJJQlVUQUNBT19SRUdVTEFSLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBjYW1wb3NfQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY2JzX2dvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNCUyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlCU0VzdGFkdWFsKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUlCU0VzdGFkdWFsID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JCcnV0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19lc3RhZHVhbF9kaWZlcmlkbycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUixcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX3RyaWJ1dGFjYW9fcmVndWxhcicsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfR09WRVJOQU1FTlRBTCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2VzdGFkdWFsX2dvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQlNfRVNUQURVQUwgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLklCU19FU1RBRFVBTCxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlCU011bmljaXBhbCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JQlNNdW5pY2lwYWwpIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSUJTTXVuaWNpcGFsID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUwsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWwnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1NhbGUgT3JkZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdQdXJjaGFzZSBPcmRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvckJydXRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGFHb3Zlcm5hbWVudGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhRWZldGl2YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1cG86IEVudW1HcnVwb1RyaWJ1dG8uSUJTX01VTklDSVBBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yQnJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFFZmV0aXZhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfbXVuaWNpcGFsX2RpZmVyaWRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVIsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfdHJpYnV0YWNhb19yZWd1bGFyJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9UUklCVVRBQ0FPX1JFR1VMQVJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0dPVkVSTkFNRU5UQUwsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19tdW5pY2lwYWxfZ292ZXJuYW1lbnRhbCcsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciwgZGlzYWJsZWQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX01VTklDSVBBTF9HT1ZFUk5BTUVOVEFMXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhSUJTQ3JlZGl0b1ByZXN1bWlkbygpOiBJdGVtW10ge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUlCU0NyZWRpdG9QcmVzdW1pZG8pIHJldHVybjtcblxuICAgICAgICB0aGlzLm1lbnVJdGVtSUJTQ3JlZGl0b1ByZXN1bWlkbyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhQ3JlZGl0b1ByZXN1bWlkb1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX2NyZWRpdG9fcHJlc3VtaWRvJyxcbiAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoY2FtcG9zLCBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JQlNfQ1JFRElUT19QUkVTVU1JRE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFJUygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JUykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1JUyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG5cbiAgICAgICAgY29uc3QgY2FtcG9zOiBDYW1wb1RyaWJ1dG9bXSA9IFtcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IsIGRpc2FibGVkOiB0cnVlIH1cbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5pc0ludm9pY2VEb2N1bWVudCgpKSB7XG4gICAgICAgICAgICBjYW1wb3MucHVzaChcbiAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSB9LFxuICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgIGdydXBvOiBFbnVtR3J1cG9UcmlidXRvLklTXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVMsXG4gICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXMnLFxuICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhjYW1wb3MsIEVudW1UaXBvVHJpYnV0by5JUylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLklTICsgJ19sYWJlbCd9YCxcbiAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JUyxcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNCU0lCU0VzdG9ybm9DcmVkaXRvKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNCU19JQlNfRVNUT1JOT19DUkVESVRPID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2Nic19lc3Rvcm5vX2NyZWRpdG8nLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pYnNfZXN0b3Jub19jcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0VTVE9STk9fQ1JFRElUTyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19FU1RPUk5PX0NSRURJVE8sXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDQlNfSUJTX0FqdXN0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1DQlNfSUJTX0FqdXN0ZSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1DQlNfSUJTX0FqdXN0ZSA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfYWp1c3RlJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlBlcmlvZG9BcHVyYWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0FKVVNURVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEUsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lic19hanVzdGUnLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ3J1cG9zLnVuc2hpZnQoe1xuICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5DQlNfSUJTX0FKVVNURSArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICBncnVwb1RyaWJ1dG86IEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19BSlVTVEUsXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDQlNJQlNUcmFuc2ZlcmVuY2lhQ3JlZGl0bygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1DYnNJYnNUcmFuc2ZlcmVuY2lhQ3JlZGl0bykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1DYnNJYnNUcmFuc2ZlcmVuY2lhQ3JlZGl0byA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jYnNfdHJhbnNmZXJlbmNpYV9jcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkNsYXNzaWZpY2FjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSUJTX1RSQU5TRkVSRU5DSUFfQ1JFRElUTyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faWJzX3RyYW5zZmVyZW5jaWFfY3JlZGl0bycsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSUJTX1RSQU5TRkVSRU5DSUFfQ1JFRElUT1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIGdydXBvOiBgJHsnZXJweC50cmlidXRvcy5lbnVtX2dydXBvX3RyaWJ1dG9fJyArIEVudW1HcnVwb1RyaWJ1dG8uQ0JTX0lCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE8gKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNCU19JQlNfVFJBTlNGRVJFTkNJQV9DUkVESVRPLFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRhUGlzKCk6IGFueVtdIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1QaXMgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1QaXMgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXRlbTogSXRlbVtdID0gW107XG4gICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ0luY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfcmVjdXBlcmFyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLmJhc2VDYWxjdWxvQ3JlZGl0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdTYWxlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fcGlzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uUElTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZmF0dXJhbWVudG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLk5hdHVyZXphUmVjZWl0YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX3Bpc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uYmFzZUNhbGN1bG9DcmVkaXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLlBJU19SRUNVUEVSQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5QSVNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19waXNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uUElTX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5QSVMgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5QSVMsXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbW9udGFDb2ZpbnMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVJdGVtQ29maW5zID09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ29maW5zID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW06IEl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX3JlY3VwZXJhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19yZWN1cGVyYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnT3V0Z29pbmcgSW52b2ljZScgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSAhPT0gJ0RlYml0JzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uTmF0dXJlemFSZWNlaXRhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLkNPRklOU1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9fY29maW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19jb2ZpbnNfZGV2b2x2aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19SRUNVUEVSQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLkNPRklOU19ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2NvZmluc19kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdydXBvcy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBncnVwbzogYCR7J2VycHgudHJpYnV0b3MuZW51bV9ncnVwb190cmlidXRvXycgKyBFbnVtR3J1cG9UcmlidXRvLkNPRklOUyArICdfbGFiZWwnfWAsXG4gICAgICAgICAgICAgICAgZ3J1cG9UcmlidXRvOiBFbnVtR3J1cG9UcmlidXRvLkNPRklOUyxcbiAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUlwaSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1JcGkgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1JcGkgPSB0cnVlO1xuXG4gICAgICAgICAgICBjb25zdCBpdGVtOiBJdGVtW10gPSBbXTtcblxuICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5pbnZvaWNlLnR5cGUgPT09ICdEZWJpdCc6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yT3V0cmFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uU2l0dWFjYW9UcmlidXRhcmlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9jcmVkaXRhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0NSRURJVEFET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9PVVRSQVNfREVTUEVTQVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9vdXRyYXNfZGVzcGVzYXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfY3JlZGl0YWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9DUkVESVRBRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUElfUFJFU1VNSURPLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZXJweC50cmlidXRvcy5lbnVtX3RpcG9fdHJpYnV0b19pcGlfcHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlICE9PSAnRGViaXQnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0Lmludm9pY2UudHlwZSA9PT0gJ1Byb2R1Y3QgUmV0dXJuJ1xuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaXRlbS51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1UaXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvcklzZW50YXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5TaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkVucXVhZHJhbWVudG9JcGkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklETyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpX2Rldm9sdmlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tb250YUNhbXBvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3sgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5JUElfREVWT0xWSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtVGlwb1RyaWJ1dG8uSVBJLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5CYXNlQ2FsY3VsbyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIE91dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9kZXZvbHZpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX0RFVk9MVklET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2xsZXJzaGlwIEluY29taW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVuc2hpZnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VycHgudHJpYnV0b3MuZW51bV90aXBvX3RyaWJ1dG9faXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm1vbnRhQ2FtcG9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9yIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlZhbG9ySXNlbnRhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5WYWxvck91dHJhcyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9OYW9SZWN1cGVyYWRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbXBvOiBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5FbnF1YWRyYW1lbnRvSXBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjYW1wbzogRW51bUNhbXBvVHJpYnV0by5PYnNlcnZhY2FvIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcG9UcmlidXRvLklQSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwb190cmlidXRvX2lwaV9wcmVzdW1pZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubW9udGFDYW1wb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQmFzZUNhbGN1bG8gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgY2FtcG86IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3IgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uSVBJX1BSRVNVTUlET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncnVwb3MudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgZ3J1cG86IGAkeydlcnB4LnRyaWJ1dG9zLmVudW1fZ3J1cG9fdHJpYnV0b18nICsgRW51bUdydXBvVHJpYnV0by5JUEkgKyAnX2xhYmVsJ31gLFxuICAgICAgICAgICAgICAgIGdydXBvVHJpYnV0bzogRW51bUdydXBvVHJpYnV0by5JUEksXG4gICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgc3dpdGNoICh0cmlidXRvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ2lkZVRlY25vbG9naWE7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhcjtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZWN1cGVyYXI7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc0Rldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGk7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlwaUNyZWRpdGFkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JcGlPdXRyYXNEZXNwZXNhcztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXBpUHJlc3VtaWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlzcztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSXNzUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUltcG9zdG9JbXBvcnRhY2FvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc1JlY3VwZXJhckltcG9ydGFjYW87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFySW1wb3J0YWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzUmV0aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUNzbGxSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUlycmZSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUluc3NSZXRpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUluc3NQYXRyb25hbDtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc1N0O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUZjcFN0O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0NvYnJhZG9BbnRlcmlvcm1lbnRlO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BDb2JyYWRvQW50ZXJpb3JtZW50ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtcztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNFZmV0aXZhbWVudGVDcmVkaXRhZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtRmNwO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1JY21zRGlmZXJpZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtSWNtc0Rlc29uZXJhZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1EaWZlcmVuY2lhbEFsaWNvdGE7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtUGlzRmF0dXJlbWVudG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbUljbXNVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1BfVUZfREVTVElOTzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEl0ZW1GY3BVZkRlc3Rpbm87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkU2l0dWFjYW9UcmlidXRhcmlhO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJY21zRnV0dXJvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1NpbXBsZXM7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc0NyZWRpdG9QcmVzdW1pZG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWREaWZhbERldm9sdmlkbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRJQ01TX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkRkNQX1VGX0Rlc3Rpbm9fRGV2b2x2aWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0ZBVFVSQU1FTlRPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyYW1lbnRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19OQU9fUkVDVVBFUkFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZEltcG9zdG9OYW9SZWN1cGVyYWRvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQkFTRV9DQUxDVUxPX0NSRURJVE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRiYXNlQ2FsY3Vsb0NyZWRpdG87XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QRVJDRU5UVUFMX1JFRFVDQU86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRQZXJjZW50dWFsUmVkdWNhbztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfU09MSURBUklPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0U29saWRhcmlvO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9SRVRJRE9fQU5UOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkSWNtc1N0UmV0aWRvQW50O1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZWRGY3BTdFJlZGl0b0FudDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJlcXVpcmVkKHRyaWJ1dG86IEVudW1UaXBvVHJpYnV0bywgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgc3dpdGNoICh0cmlidXRvKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DSURFX1RFQ05PTE9HSUE6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNpZGVUZWNub2xvZ2lhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVNfUkVDVVBFUkFSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXIgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFQ1VQRVJBUjoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmVjdXBlcmFyID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Db2ZpbnNEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSToge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUElfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcGlDcmVkaXRhZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaURldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVBJX09VVFJBU19ERVNQRVNBUzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSXBpT3V0cmFzRGVzcGVzYXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklQSV9QUkVTVU1JRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlwaVByZXN1bWlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSVNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Jc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUlzc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSU1QT1NUT19JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbXBvc3RvSW1wb3J0YWNhbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX1JFQ1VQRVJBUl9JTVBPUlRBQ0FPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNSZWN1cGVyYXJJbXBvcnRhY2FvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlNfUkVDVVBFUkFSX0lNUE9SVEFDQU86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmluc1JlY3VwZXJhckltcG9ydGFjYW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLlBJU19SRVRJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc1JldGlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ09GSU5TX1JFVElETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtQ29maW5zUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DU0xMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1Dc2xsUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JUlJGOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JcnJmUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUmV0aWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JTlNTX1BBVFJPTkFMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JbnNzUGF0cm9uYWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1GY3BTdCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19DT0JSQURPX0FOVEVSSU9STUVOVEVfU1Q6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNDb2JyYWRvQW50ZXJpb3JtZW50ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRmNwQ29icmFkb0FudGVyaW9ybWVudGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXMgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfQ1JFRElUQURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zRWZldGl2YW1lbnRlQ3JlZGl0YWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5GQ1A6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtSWNtc0RpZmVyaWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX0RFU09ORVJBRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUljbXNEZXNvbmVyYWRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJdGVtRGlmZXJlbmNpYWxBbGljb3RhID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5QSVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbVBpc0ZhdHVyZW1lbnRvID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DT0ZJTlM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUNvZmlucyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSXRlbUZjcFVmRGVzdGlubyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5POiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1JY21zVWZEZXN0aW5vID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZFNpdHVhY2FvVHJpYnV0YXJpYSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19GVVRVUk86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSWNtc0Z1dHVybyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TSU1QTEVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEljbXNTaW1wbGVzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQ01TX1NUX1NPTElEQVJJTzoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU3RTb2xpZGFyaW8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfU1RfUkVUSURPX0FOVDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZWRJY21zU3RSZXRpZG9BbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkZDUF9TVF9SRVRJRE9fQU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEZjcFN0UmVkaXRvQW50ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5ESUZBTF9ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkRGlmYWxEZXZvbHZpZG8gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOT19ERVZPTFZJRE86IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVkSUNNU19VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1VGX0RFU1RJTk9fREVWT0xWSURPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEZDUF9VRl9EZXN0aW5vX0Rldm9sdmlkbyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uUElTX0ZBVFVSQU1FTlRPOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZEl0ZW1QaXNGYXR1cmFtZW50byA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVxdWlyZWRTaXR1YWNhb1RyaWJ1dGFyaWEgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGltcG9zdG9DYWxjdWxhZG8oaW1wb3N0bzogRW51bVRpcG9UcmlidXRvKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5ESUZBTCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9TT0xJREFSSU8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkZDUF9TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19TVF9GVVRVUk8gJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkRJRkFMX0RFVk9MVklETyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19ESUZFUklETyAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PICYmXG4gICAgICAgICAgICBpbXBvc3RvICE9IEVudW1UaXBvVHJpYnV0by5JQ01TX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX0NPQlJBRE9fQU5URVJJT1JNRU5URV9TVCAmJlxuICAgICAgICAgICAgaW1wb3N0byAhPSBFbnVtVGlwb1RyaWJ1dG8uRkNQX1NUX1JFVElET19BTlQgJiZcbiAgICAgICAgICAgIGltcG9zdG8gIT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1RPVEFMXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRNZXNzYWdlRXJyb3JCYXNlRGlmZXJlbnRlKFxuICAgICAgICBpbXBvc3Rvczogc3RyaW5nW10sXG4gICAgICAgIGdydXBvOiBhbnksXG4gICAgICAgIHN1bW1hcnlNZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGRldGFpbE1lc3NhZ2U6IHN0cmluZ1xuICAgICkge1xuICAgICAgICBjb25zdCBpbXBvc3RvRmlsdHJhZG8gPSBpbXBvc3Rvcy5maWx0ZXIoXG4gICAgICAgICAgICAoaW1wb3N0bykgPT5cbiAgICAgICAgICAgICAgICAhW1xuICAgICAgICAgICAgICAgICAgICAnQ0JTX0RJRkVSSURPJyxcbiAgICAgICAgICAgICAgICAgICAgJ0lCU19FU1RBRFVBTF9ESUZFUklETycsXG4gICAgICAgICAgICAgICAgICAgICdJQlNfTVVOSUNJUEFMX0RJRkVSSURPJ1xuICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoaW1wb3N0bylcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgY29udHJvbGVJbXBvc3RvID0gdGhpcy5jYWxjdWxhckltcG9zdG9zVG90YWwoXG4gICAgICAgICAgICBpbXBvc3RvRmlsdHJhZG8sXG4gICAgICAgICAgICBncnVwb1xuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjb250cm9sZUltcG9zdG8uYmFzZURpZmVyZW50ZSkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChzdW1tYXJ5TWVzc2FnZSksXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGRldGFpbE1lc3NhZ2UpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250cm9sZUltcG9zdG87XG4gICAgfVxuXG4gICAgLy8gTsOjbyB1dGlsaXphciBlc3RlIG3DqXRvZG8gcGFyYSBjw6FsY3Vsb3MgZGUgaW1wb3N0b3MgZGEgUmVmb3JtYSBUcmlidXTDoXJpYS5cbiAgICBwcml2YXRlIGNhbGN1bGFyVmFsb3IodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdydXBvcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ncnVwb3MubWFwKChncnVwbykgPT4ge1xuICAgICAgICAgICAgICAgIGdydXBvLml0ZW1cbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXQ6IEl0ZW0pID0+IGl0Lm5hbWUgPT0gdHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoYXNWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaXQuZm9ybUdyb3VwLnZhbHVlKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0LmZvcm1Hcm91cC52YWx1ZVtpdGVtXSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNWYWx1ZSAmJiB0aGlzLmltcG9zdG9DYWxjdWxhZG8odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5iYXNlQ2FsY3VsbyAhPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5hbGlxdW90YSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byAhPSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXQuZm9ybUdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zaXR1YWNhb1RyaWJ1dGFyaWEgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNpdHVhY2FvVHJpYnV0YXJpYS52YWx1ZSA9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaXF1b3RhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmFsaXF1b3RhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRheEFtb3VudENhbGN1bGF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FsY3VsYXRlVGF4QW1vdW50KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YWJsZUJhc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihiYXNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4UmF0ZTogbmV3IEJpZ051bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihhbGlxdW90YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTnVtYmVyKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNUyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5zaXR1YWNhb1RyaWJ1dGFyaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLmNvZFN0ciAhPSAnNTEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2VDYWxjdWxvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxpcXVvdGEgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYWxpcXVvdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGEgIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGF4QW1vdW50Q2FsY3VsYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxjdWxhdGVUYXhBbW91bnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhhYmxlQmFzZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGJhc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlOiBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKGFsaXF1b3RhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9OdW1iZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TUyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBvVHJpYnV0by5GVU5SVVJBTF9SQVQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfU0VOQVJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuZ2V0KCdiYXNlQ2FsY3VsbycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUgPz8gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGlxdW90YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5nZXQoJ2FsaXF1b3RhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZSA/PyBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoYmFzZSAqIGFsaXF1b3RhKSAvIDEwMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gIT0gRW51bVRpcG9UcmlidXRvLklDTVNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMuYmFzZUNhbGN1bG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGlxdW90YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5hbGlxdW90YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlxdW90YSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuZm9ybUdyb3VwLmNvbnRyb2xzLnZhbG9yLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRheEFtb3VudENhbGN1bGF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FsY3VsYXRlVGF4QW1vdW50KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YWJsZUJhc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihiYXNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4UmF0ZTogbmV3IEJpZ051bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihhbGlxdW90YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTnVtYmVyKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5mb3JtR3JvdXAuY29udHJvbHMudmFsb3IucmVzZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOdWxsT3JVbmRlZmluZWQoYmFzZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTnVsbE9yVW5kZWZpbmVkKGFsaXF1b3RhKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzTnVsbE9yVW5kZWZpbmVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29kaWdvVHJpYnV0YWNhb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LmZvcm1Hcm91cC5jb250cm9scy5jb2RpZ29UcmlidXRhY2FvLnJlc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uRlVOUlVSQUxfSU5TUyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1JBVCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkZVTlJVUkFMX1NFTkFSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGltcG9zdG9zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGVU5SVVJBTF9JTlNTJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRlVOUlVSQUxfUkFUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRlVOUlVSQUxfU0VOQVInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sZUZ1bnJ1cmFsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE1lc3NhZ2VFcnJvckJhc2VEaWZlcmVudGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9zdG9zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnVwbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZXJyb3JfYmFzZV9mdW5ydXJhbF9kaWZlcmVudGVfc3VtbWFyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVycm9yX2Jhc2VfZnVucnVyYWxfZGlmZXJlbnRlX2RldGFpbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmdW5ydXJhbFRvdGFsID0gZ3J1cG8uaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09ICdGVU5SVVJBTF9UT1RBTCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bnJ1cmFsVG90YWwuZm9ybUdyb3VwLnNldFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUNhbGN1bG86IGNvbnRyb2xlRnVucnVyYWwuYmFzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsb3I6IGNvbnRyb2xlRnVucnVyYWwudmFsb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9zdG9NYW51YWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b106XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGFySW1wb3N0b3NUb3RhbChpbXBvc3RvczogYW55LCBncnVwbykge1xuICAgICAgICBsZXQgdmFsb3JlcyA9IHtcbiAgICAgICAgICAgIGJhc2U6IDAsXG4gICAgICAgICAgICB2YWxvcjogMCxcbiAgICAgICAgICAgIGJhc2VEaWZlcmVudGU6IGZhbHNlXG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGltcG9zdG9zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3QgaW1wb3N0byA9IGdydXBvLml0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBpbXBvc3Rvc1tpbmRleF1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoaW1wb3N0bz8uZm9ybUdyb3VwLnZhbHVlLmJhc2VDYWxjdWxvKSkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdmFsb3Jlcy5iYXNlID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2UgIT0gaW1wb3N0by5mb3JtR3JvdXAudmFsdWUuYmFzZUNhbGN1bG9cbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsb3Jlcy5iYXNlRGlmZXJlbnRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YWxvcmVzLmJhc2UgPVxuICAgICAgICAgICAgICAgICAgICBpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3VsbyA+IHZhbG9yZXMuYmFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpbXBvc3RvLmZvcm1Hcm91cC52YWx1ZS5iYXNlQ2FsY3Vsb1xuICAgICAgICAgICAgICAgICAgICAgICAgOiB2YWxvcmVzLmJhc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoaW1wb3N0bz8uZm9ybUdyb3VwLnZhbHVlLnZhbG9yKSkge1xuICAgICAgICAgICAgICAgIHZhbG9yZXMudmFsb3IgPSB0aGlzLnRheFJvdW5kaW5nU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuaGFsZlVwKFxuICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHZhbG9yZXMudmFsb3IpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoaW1wb3N0by5mb3JtR3JvdXAudmFsdWUudmFsb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC50b051bWJlcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbG9yZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb250YUNhbXBvcyhjYW1wb3M6IENhbXBvVHJpYnV0b1tdLCB0cmlidXRvOiBFbnVtVGlwb1RyaWJ1dG8pIHtcbiAgICAgICAgY29uc3QgcmV0b3JubzogYW55ID0ge307XG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZDogRm9ybUZpZWxkW10gPSBbXTtcbiAgICAgICAgbGV0IGZvcm1Hcm91cDogYW55ID0ge307XG5cbiAgICAgICAgY2FtcG9zLm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkJhc2VDYWxjdWxvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGJhc2VDYWxjdWxvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQmFzZUNhbGN1bG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Jhc2VDYWxjdWxvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19iYXNlX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgnYmFzZUNhbGN1bG8nLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGFsaXF1b3RhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkID8/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTkuOTk5OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbEFsaXF1b3RhKHRyaWJ1dG8pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUYXhGcm9tVGF4UmVmb3JtKHRyaWJ1dG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZCgnYWxpcXVvdGEnLCB0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgW0VudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvXTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IEVudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmlvZG9fYXB1cmFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldzogJ21vbnRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvOiAnYm9keScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhckxvY2FsZU9wdGlvbnM6IG5ldyBDYWxlbmRhckxvY2FsZU9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubG9jYWxlU2VydmljZS5nZXRMb2NhbGVPcHRpb25zKCkuY2FsZW5kYXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdDogJ21tL3l5J1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaWVsZFJlcXVpcmVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLlBlcmlvZG9BcHVyYWNhbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uUmVkdWNhb0FsaXF1b3RhR292ZXJuYW1lbnRhbFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHJlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1JlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZHVjYW9BbGlxdW90YUdvdmVybmFtZW50YWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlZHVjYW9fYWxpcXVvdGFfZ292ZXJuYW1lbnRhbF9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDEwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5SZWR1Y2FvQWxpcXVvdGEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcmVkdWNhb0FsaXF1b3RhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdSZWR1Y2FvQWxpcXVvdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3JlZHVjYW9BbGlxdW90YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVkdWNhb19hbGlxdW90YV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDEwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5BbGlxdW90YUVmZXRpdmEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGFFZmV0aXZhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0FsaXF1b3RhRWZldGl2YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGFFZmV0aXZhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19hbGlxdW90YV9lZmV0aXZhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLkFsaXF1b3RhSW50ZXJuYSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YUludGVybmE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5Ljk5OTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdBbGlxdW90YUludGVybmEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FsaXF1b3RhSW50ZXJuYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfaW50ZXJuYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMucGVyY2VudGFnZUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQWxpcXVvdGFJbnRlcm5hRGVzdGlubykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBhbGlxdW90YUludGVybmFEZXN0aW5vOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OS45OTk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQWxpcXVvdGFJbnRlcm5hRGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGFJbnRlcm5hRGVzdGlubycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfaW50ZXJuYV9kZXN0aW5vX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvcikge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpdC5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0byk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0ZpZWxkUmVxdWlyZWQoJ3ZhbG9yJywgdHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvckJydXRvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yQnJ1dG9JbXBvc3RvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGl0LmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JCcnV0b0ltcG9zdG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3ZhbG9yQnJ1dG9JbXBvc3RvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9icnV0b19pbXBvc3RvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JJc2VudGFzKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9ySXNlbnRhczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnVmFsb3JJc2VudGFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvcklzZW50YXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3ZhbG9yX2lzZW50YXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JPdXRyYXMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgdmFsb3JPdXRyYXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9yT3V0cmFzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvck91dHJhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3Jfb3V0cmFzX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlNpdHVhY2FvVHJpYnV0YXJpYSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBzaXR1YWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGxldCBzZWFyY2hHcmlkRmllbGRzITogRm9ybUZpZWxkW107XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdDb250cm9sbGVyc2hpcCBPdXRnb2luZyBJbnZvaWNlJ1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb2RTdHInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rlc1N0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndGlwSW1wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX2ltcF9waXNfY29maW5zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LlBJU19DT0ZJTlNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX2lwaSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bVRpcEltcENzdC5JUElcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bS50aXBfaW1wX2ljbXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1UaXBJbXBDc3QuSUNNU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9pbXBfaXNzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwSW1wQ3N0LklTU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndGlwT3BlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX29wZV92X3NhaWRhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwT3BlLlZTQUlEQVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtLnRpcF9vcGVfdl9lbnRyYWRhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwT3BlLlZFTlRSQURBXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW0udGlwX29wZV92X2FtYm9zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtVGlwT3BlLlZBTUJPU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0RmlsdGVyID0gW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2V4Y2x1aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ2ZhbHNlJ11cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICd0aXBJbXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFttYXBFbnVtVGlwb1RyaWJ1dG9Ub0VudW1UaXBJbXBDc3QodHJpYnV0byldXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGlwT3BlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udHJvbGxlcnNoaXAgT3V0Z29pbmcgSW52b2ljZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBbRW51bVRpcE9wZS5WQU1CT1MsIEVudW1UaXBPcGUuVlNBSURBXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtFbnVtVGlwT3BlLlZBTUJPUywgRW51bVRpcE9wZS5WRU5UUkFEQV1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydWQVRJVk8nXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCUyB8fFxuICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfRVNUT1JOT19DUkVESVRPIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFIHx8XG4gICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZGVmYXVsdEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhLmluZEdFc3Rvcm5vQ3JlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBFbnVtTG9naWNhbE9wZXJhdG9yLkVxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEVudW1Mb2dpY2FsT3BlcmF0b3IuTmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbRW51bUluZGljYXRpdm9QYWRyYW8uRVhJR0VdXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaW5kR0FqdXN0ZUNvbXBldCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRW51bUxvZ2ljYWxPcGVyYXRvci5OZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtFbnVtSW5kaWNhdGl2b1BhZHJhby5FWElHRV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE8gfHxcbiAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19UUkFOU0ZFUkVOQ0lBX0NSRURJVE9cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kZWZhdWx0RmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnaW5kR1RyYW5zZkNyZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW0VudW1JbmRpY2F0aXZvUGFkcmFvLkVYSUdFXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5lMDI3U3RyTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hHcmlkRmllbGRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdTaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfc2l0dWFjYW9fdHJpYnV0YXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRmllbGRSZXF1aXJlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdEZpbHRlciA9IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogWydBVElWTyddXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuZG9jdW1lbnQgPT09ICdPdXRnb2luZyBJbnZvaWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2ljZS50eXBlID09PSAnRGViaXQnICYmXG4gICAgICAgICAgICAgICAgICAgICh0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJpYnV0byA9PT0gRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE8pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdpbmRHRXN0b3Jub0NyZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtFbnVtSW5kaWNhdGl2b1BhZHJhby5FWElHRV1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogJ2VycHhfY3BsX2ltcC5pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWluaW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeUZpZWxkczogWydlMDI3c3RyLmlkJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5RGVwZW5kZW5jeTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZTAyN3N0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldG9ybm8uZm9ybUdyb3VwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVGF4RnJvbVRheFJlZm9ybSh0cmlidXRvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19jbGFzc2lmaWNhY2FvX3RyaWJ1dGFyaWFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RheEZyb21UYXhSZWZvcm0odHJpYnV0bykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0byk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0ZpZWxkUmVxdWlyZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uRW5xdWFkcmFtZW50b0lwaSkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBlbnF1YWRyYW1lbnRvSXBpOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZTAyN2VxaUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW46IHRoaXMuZG9taW5pbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY28sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnZTAyN2VxaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnZW5xdWFkcmFtZW50b0lwaScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ1ZBVElWTyddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZXhjbHVpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnZmFsc2UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdFbnF1YWRyYW1lbnRvSXBpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19lbnF1YWRyYW1lbnRvX2lwaV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbFJlZHVjYW8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbFJlZHVjYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnUGVyY2VudHVhbFJlZHVjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcmNlbnR1YWxSZWR1Y2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19wZXJjZW50dWFsX3JlZHVjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uUGVyY2VudHVhbE1hcmdlbVZhbG9yQWRpY2lvbmFkb1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoMTAwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcmNlbnR1YWxNYXJnZW1WYWxvckFkaWNpb25hZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfbXZhX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiA0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5wZXJjZW50YWdlTG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDEwMDAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5Nb3Rpdm9EZXNvbmVyYWNhb0ljbXMpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgZGVzb25lcmFjYW9JY21zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ01vdGl2b0Rlc29uZXJhY2FvSWNtcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZGVzb25lcmFjYW9JY21zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19kZXNvbmVyYWNhb19pY21zX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl80J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl83J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfOSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjEwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfMTEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlYxMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW90X2Rlc192XzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vdERlcy5WMTJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vdF9kZXNfdl8xNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb3REZXMuVjE2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb3RfZGVzX3ZfOTAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW90RGVzLlY5MFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfZGVzb25lcmFjYW9faWNtc19wbGFjZWhvbGRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uT3JpZ2VtKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdlbTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdPcmlnZW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ29yaWdlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl8xJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlYyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl80J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WNFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9vcmlfbWVyX3ZfNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1PcmlNZXIuVjZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX29yaV9tZXJfdl83J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU9yaU1lci5WN1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fb3JpX21lcl92XzgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtT3JpTWVyLlY4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19vcmlnZW1faWNtc19wbGFjZWhvbGRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfb3JpZ2VtX2ljbXNfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA2LCBsZzogNiwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5QZXJjZW50dWFsRGlmZXJpbWVudG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYWxpcXVvdGE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1BlcmNlbnR1YWxEaWZlcmltZW50bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxpcXVvdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfZGlmZXJpbWVudG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXJWYWxvcih0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X3ZhbGlkYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IDEwMCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50dWFsU3Vwb3J0YWRvQ29uc3VtaWRvckZpbmFsOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDEwMCldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1BlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3BlcmNlbnR1YWxTdXBvcnRhZG9Db25zdW1pZG9yRmluYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfc3Vwb3J0YWRvX2NvbnN1bWlkb3JfZmluYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JSZWNvbGhpZG9QZWxvU3Vic3RpdHV0b1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yUmVjb2xoaWRvSWNtc1N0OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMubWF4KDk5OTk5OTk5OTk5OTkuOTkpXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdWYWxvclJlY29saGlkb1BlbG9TdWJzdGl0dXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvclJlY29saGlkb0ljbXNTdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfcmVjb2xoaWRvX3BlbG9fc3Vic3RpdHV0b19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuTW9uZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb246IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLmN1cnJlbmN5TG9jYWxlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZXF1aXJlZF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdGhpcy5zZXRWYXJpYWJsZVJlcXVpcmVkKHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5WYWxvckljbXNTdFJldGlkbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICB2YWxvckljbXNTdFJldGlkbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ1ZhbG9ySWNtc1N0UmV0aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2YWxvckljbXNTdFJldGlkbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfdmFsb3JfaWNtc19zdF9yZXRpZG9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlT3B0aW9uczogdGhpcy5jdXJyZW5jeUxvY2FsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfcmVxdWlyZWRfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IHRoaXMuc2V0VmFyaWFibGVSZXF1aXJlZCh0cmlidXRvKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09IEVudW1DYW1wb1RyaWJ1dG8uTW9kYWxpZGFkZUJDKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIG1vZGFsaWRhZGVCQzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdNb2RhbGlkYWRlQmMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ21vZGFsaWRhZGVCQycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb2RCYy5WMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fbW9kYWxpZGFkZV9iY192XzEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtTW9kQmMuVjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX21vZGFsaWRhZGVfYmNfdl8yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bU1vZEJjLlYyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9tb2RhbGlkYWRlX2JjX3ZfMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Nb2RCYy5WM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbW9kYWxpZGFkZV9iY19wbGFjZWhvbGRlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbW9kYWxpZGFkZV9iY19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3JlcXVpcmVkX3ZhbGlkYXRvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5OYXR1cmV6YVJlY2VpdGEpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgbmF0dXJlemFSZWNlaXRhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubmF0dXJlemFSZWNlaXRhTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5kb21pbmlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICduYXR1cmV6YVJlY2VpdGEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cFNvcnQ6IFt7IGZpZWxkOiAnY29kaWdvJywgb3JkZXI6IDEgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU29ydDogW3sgZmllbGQ6ICdjb2RpZ28nLCBvcmRlcjogMSB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ05hdHVyZXphUmVjZWl0YScsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbmF0dXJlemFfcmVjZWl0YV9sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uT2JzZXJ2YWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZhY2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdPYnNlcnZhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdvYnNlcnZhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19vYnNlcnZhY2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF9sZW5ndGhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uVmFsb3JEZWR1Y2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHZhbG9yRGVkdWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXgoOTk5OTk5OTk5OTk5OS45OSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ3ZhbG9yRGVkdWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmFsb3JEZWR1Y2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc192YWxvcl9kZWR1Y2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uSW5kaWNhdGl2b0FxdWlzaWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBpbmRpY2F0aXZvQXF1aXNpY2FvOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdJbmRpY2F0aXZvQXF1aXNpY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdpbmRpY2F0aXZvQXF1aXNpY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19pbmRpY2F0aXZvX2FxdWlzaWNhb19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2xlYXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlYxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192MidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3YzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1GdW5ydXJhbEluZGljYXRpdm9BcXVpc2ljYW8uVjUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9mdW5ydXJhbF9pbmRpY2F0aXZvX2FxdWlzaWNhb192NSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUZ1bnJ1cmFsSW5kaWNhdGl2b0FxdWlzaWNhby5WNixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2Z1bnJ1cmFsX2luZGljYXRpdm9fYXF1aXNpY2FvX3Y2J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRnVucnVyYWxJbmRpY2F0aXZvQXF1aXNpY2FvLlY3LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fZnVucnVyYWxfaW5kaWNhdGl2b19hcXVpc2ljYW9fdjcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5Db2RpZ29BcnJlY2FkYWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBjb2RpZ29BcnJlY2FkYWNhbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heExlbmd0aCg2KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnQ29kaWdvQXJyZWNhZGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvZGlnb0FycmVjYWRhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19jb2RpZ29fYXJyZWNhZGFjYW9fbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZXM6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfbWF4X2xlbmd0aF92YWxpZGF0b3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5Db2RpZ29UcmlidXRhY2FvKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNvZGlnb1RyaWJ1dGFjYW86IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNSldKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0NvZGlnb1RyaWJ1dGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvZGlnb1RyaWJ1dGFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2NvZGlnb190cmlidXRhY2FvX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX21heF9sZW5ndGhfdmFsaWRhdG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5JbXBvc3RvTmFvUmVjdXBlcmFkbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBJbXBvc3RvTmFvUmVjdXBlcmFkbzogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCg5OTk5OTk5OTk5OTk5Ljk5KV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAnSW1wb3N0b05hb1JlY3VwZXJhZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0ltcG9zdG9OYW9SZWN1cGVyYWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19pbXBvc3RvX25hb19yZWN1cGVyYWRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZU9wdGlvbnM6IHRoaXMuY3VycmVuY3lMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQuY2FtcG8gPT0gRW51bUNhbXBvVHJpYnV0by5iYXNlQ2FsY3Vsb0NyZWRpdG8pIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYmFzZUNhbGN1bG9DcmVkaXRvOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ2Jhc2VDYWxjdWxvQ3JlZGl0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYmFzZUNhbGN1bG9DcmVkaXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfNCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfNidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfNydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfOCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfOSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xMSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE1J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMTVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3RpcF9jcmVkX3JlY3VwX3ZfMTYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnVtVGlwQ3JlZFJlY3VwLlYxNlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fdGlwX2NyZWRfcmVjdXBfdl8xNydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudW1UaXBDcmVkUmVjdXAuVjE3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV90aXBfY3JlZF9yZWN1cF92XzE4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW51bVRpcENyZWRSZWN1cC5WMThcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX2Jhc2VfY2FsY3Vsb19jcmVkaXRvX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19iYXNlX2NhbGN1bG9fY3JlZGl0b19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDYsIGxnOiA2LCB4bDogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uUmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmluc1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIHJlZ2ltZVRyaWJ1dGFyaW9QaXNDb2ZpbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyaWJ1dG8gKyAncmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVnaW1lVHJpYnV0YXJpb1Bpc0NvZmlucycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9yZWdfdHJpYnV0X3Bpc19jb2ZpbnNfY3VtdWxhdGl2bydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zLkNVTVVMQVRJVk9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX3JlZ190cmlidXRfcGlzX2NvZmluc19uYW9fY3VtdWxhdGl2bydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1SZWdpbWVUcmlidXRhcmlvUGlzQ29maW5zLk5BT19DVU1VTEFUSVZPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZWdpbWVfdHJpYnV0YXJpb19waXNfY29maW5zX3BsYWNlaG9sZGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19yZWdpbWVfdHJpYnV0YXJpb19waXNfY29maW5zX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PSBFbnVtQ2FtcG9UcmlidXRvLlBlcmNlbnR1YWxTdXNwZW5zYW9QYXJjaWFsXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWw6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLm1heCgxMDApXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdwZXJjZW50dWFsU3VzcGVuc2FvUGFyY2lhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVyY2VudHVhbFN1c3BlbnNhb1BhcmNpYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZmllbGRzX3BlcmNlbnR1YWxfc3VzcGVuc2FvX3BhcmNpYWxfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLk1vbmV5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiA3LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDQsXG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGVPcHRpb25zOiB0aGlzLnBlcmNlbnRhZ2VMb2NhbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHdvV2F5RGF0YUJpbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnModHJpYnV0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlczogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19tYXhfdmFsaWRhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogMTAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiB0aGlzLnNldFZhcmlhYmxlUmVxdWlyZWQodHJpYnV0bylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5CZW5lZmljaW9GaXNjYWwpIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgYmVuZWZpY2lvRmlzY2FsOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5iZW5lZmljaW9GaXNjYWxMb29rdXAubW91bnRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWluaW8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogJ2JlbmVmaWNpb0Zpc2NhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2V4Y2x1aWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ2ZhbHNlJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19iZW5lZmljaW9fZmlzY2FsX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC5jYW1wbyA9PT0gRW51bUNhbXBvVHJpYnV0by5Dc3REZXNvbmVyYWNhbykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBzaXR1YWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGZvcm1GaWVsZC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZTAyN1N0ckxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogJ2VycHhfY3BsX2ltcC5pbXBvc3RvcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3RpcE9wZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1UaXBPcGUuVkVOVFJBREEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcE9wZS5WU0FJREEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bVRpcE9wZS5WQU1CT1NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdzaXR1YWNhbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW0VudW1TaXR1YWNhby5WQVRJVk9dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnZXhjbHVpZG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFsnZmFsc2UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3RpcEltcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRW51bUxvZ2ljYWxPcGVyYXRvci5FcSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogW0VudW1UaXBJbXBDc3QuQ0JTX0lCU11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUd29XYXlEYXRhQmluZGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0cmlidXRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdHJpYnV0byArICdTaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiAnc2l0dWFjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdzaXR1YWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpZ246IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHhfY3BsX2ltcC5pbXBvc3Rvcy5jc3RfZGVzb25lcmFjYW9faW5mb19zaWduJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4X2NwbF9pbXAuaW1wb3N0b3Muc2l0dWFjYW9fdHJpYnV0YXJpYV9kZXNvbmVyYWNhbydcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDQsIGxnOiA0LCB4bDogMyB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgaXQuY2FtcG8gPT09IEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFEZXNvbmVyYWNhb1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzaWZpY2FjYW9UcmlidXRhcmlhOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNsYXNzaWZpY2FjYW9UcmlidXRhcmlhTG9va3VwLm1vdW50T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiAnZXJweF9jcGxfaW1wLmltcG9zdG9zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnc2l0dWFjYW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuRXEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtU2l0dWFjYW9DbGFzc2lmaWNhY2FvVHJpYnV0YXJpYS5BVElWT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rdXBTb3J0OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnY29kaWdvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFNvcnQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjb2RpZ28nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5RGVwZW5kZW5jeTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZTAyN3N0cicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldG9ybm8uZm9ybUdyb3VwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2lnbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweF9jcGxfaW1wLmltcG9zdG9zLmNsYXNzaWZpY2FjYW9fdHJpYnV0YXJpYV9kZXNvbmVyYWNhb19pbmZvX3NpZ24nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHhfY3BsX2ltcC5pbXBvc3Rvcy5jbGFzc2lmaWNhY2FvX3RyaWJ1dGFyaWFfZGVzb25lcmFjYW8nXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG9cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBbRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvXTogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50by5ORU5IVU0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRW51bUNhbXBvVHJpYnV0by5BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYXBsaWNhcl92YWxvcl9saXF1aWRvX2RvY3VtZW50bydcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaWVsZFJlcXVpcmVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtQ2FtcG9UcmlidXRvLkFwbGljYXJWYWxvckxpcXVpZG9Eb2N1bWVudG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWJ1dG8gPT09IEVudW1UaXBvVHJpYnV0by5DQlNfQ1JFRElUT19QUkVTVU1JRE8gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0NSRURJVE9fUFJFU1VNSURPXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fYXBsaWNhcl92YWxvcl9saXF1aWRvX2RvY3VtZW50b19zdWJ0cmFpcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1BcGxpY2FyVmFsb3JMaXF1aWRvRG9jdW1lbnRvLlNVQlRSQUlSXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2FwbGljYXJfdmFsb3JfbGlxdWlkb19kb2N1bWVudG9fc29tYXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50by5TT01BUlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVudW1fYXBsaWNhcl92YWxvcl9saXF1aWRvX2RvY3VtZW50b19uZW5odW0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtQXBsaWNhclZhbG9yTGlxdWlkb0RvY3VtZW50by5ORU5IVU1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LmNhbXBvID09PSBFbnVtQ2FtcG9UcmlidXRvLkVzY3JpdHVyYXJBbGlxdW90YUlTUykge1xuICAgICAgICAgICAgICAgIGZvcm1Hcm91cCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBbRW51bUNhbXBvVHJpYnV0by5Fc2NyaXR1cmFyQWxpcXVvdGFJU1NdOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Fc2NyaXR1cmFyQWxpcXVvdGFJU1MuU0lNLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3JtRmllbGQucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBFbnVtQ2FtcG9UcmlidXRvLkVzY3JpdHVyYXJBbGlxdW90YUlTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmVzY3JpdHVyYXJfYWxpcXVvdGFfaXNzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5lbnVtX2VzY3JpdHVyYXJfYWxpcXVvdGFfaXNzX3NpbSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1Fc2NyaXR1cmFyQWxpcXVvdGFJU1MuU0lNXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuZW51bV9lc2NyaXR1cmFyX2FsaXF1b3RhX2lzc19uYW8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRXNjcml0dXJhckFsaXF1b3RhSVNTLk5BT1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IHsgc206IDEyLCBtZDogNCwgbGc6IDQsIHhsOiAzIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBpdC5jYW1wbyA9PVxuICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uQ2xhc3NpZmljYWNhb1RyaWJ1dGFyaWFDcmVkaXRvUHJlc3VtaWRvXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWE6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHVuZGVmaW5lZCwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgZm9ybUZpZWxkLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jbGFzc2lmaWNhY2FvVHJpYnV0YXJpYUxvb2t1cC5tb3VudE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg6ICdlcnB4X2NwbF9pbXAuaW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3NpdHVhY2FvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ0FUSVZPJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdjcmVkaXRvUHJlc3VtaWRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBFbnVtTG9naWNhbE9wZXJhdG9yLkVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbJ3RydWUnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2UwMjdzdHInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEVudW1Mb2dpY2FsT3BlcmF0b3IuSXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtudWxsXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKHRyaWJ1dG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0cmlidXRvICsgJ0NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmZpZWxkc19jbGFzc2lmaWNhY2FvX3RyaWJ1dGFyaWFfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogeyBzbTogMTIsIG1kOiA0LCBsZzogNCwgeGw6IDMgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaWVsZFJlcXVpcmVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlidXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLnN1Z2VzdG9lcykge1xuICAgICAgICAgICAgdGhpcy5zdWdlc3RvZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChzdWdlc3RhbykgPT4gc3VnZXN0YW8udGlwb1RyaWJ1dG8gPT09IHRyaWJ1dG8pXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKHN1Z2VzdGFvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHN1Z2VzdGFvKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoYXRyaWJ1dG9zKSA9PiBhdHJpYnV0b3NbMF0gIT09ICd0aXBvVHJpYnV0bycpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoYXRyaWJ1dG9zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwW2F0cmlidXRvc1swXV1bMF0udmFsdWUgPSBhdHJpYnV0b3NbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldG9ybm8uZm9ybUZpZWxkID0gZm9ybUZpZWxkO1xuICAgICAgICByZXRvcm5vLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgLi4uZm9ybUdyb3VwLFxuICAgICAgICAgICAgaW1wb3N0b01hbnVhbDogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6IGZhbHNlLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW0VudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXTogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJldG9ybm87XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplVmFsdWVDaGFuZ2VzKHtcbiAgICAgICAgaXRlbSxcbiAgICAgICAgZ3JvdXBcbiAgICB9OiB7XG4gICAgICAgIGl0ZW06IEl0ZW07XG4gICAgICAgIGdyb3VwOiBHcm91cDtcbiAgICB9KSB7XG4gICAgICAgIGl0ZW0uZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKGl0ZW0uZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkpLFxuICAgICAgICAgICAgICAgIC8vIFdlIGFyZSB1c2luZyBkZWJvdW5jZVRpbWUgaGVyZSBiZWNhdXNlIG91ciBMb29rdXAgQ29tcG9uZW50IGlzIGVtaXR0aW5nIHR3byBldmVudHMgdW5mb3J0dW5hdGVseS5cbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgICAgICAgICAgIHNjYW4oXG4gICAgICAgICAgICAgICAgICAgIChhY2MpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlOiBhY2Muc3RhcnRpbmdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZTogaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdWYWx1ZTogaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZTogaXRlbS5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoeyBzdGFydGluZ1ZhbHVlLCBjdXJyZW50VmFsdWUgfSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghc3RhcnRpbmdWYWx1ZS5pbXBvc3RvTWFudWFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHN0YXJ0aW5nVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gJ2ltcG9zdG9NYW51YWwnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkgIT09IEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5ldmVyeSgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdHlwZSB9ID0gaXRlbS5mb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5Mb29rdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleSB9ID0gaXRlbS5mb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlPy5ba2V5XT8uW2RhdGFLZXldID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZT8uW2tleV0/LltkYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGFydGluZ1ZhbHVlW2tleV0gPT09IGN1cnJlbnRWYWx1ZVtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdpbXBvc3RvTWFudWFsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUoZmFsc2UsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnaW1wb3N0b01hbnVhbCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRydWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXJrSUNNU1NpbXBsZXNBc01hbnVhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm5hbWUgYXMgRW51bVRpcG9UcmlidXRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uSW1wb3N0b01hbnVhbFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdWYWx1ZVtFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0b10gIT09XG4gICAgICAgICAgICAgICAgICAgIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHN0YXJ0aW5nVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSAhPT0gJ2ltcG9zdG9NYW51YWwnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkgIT09IEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5ldmVyeSgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdHlwZSB9ID0gaXRlbS5mb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5Mb29rdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleSB9ID0gaXRlbS5mb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGluZ1ZhbHVlPy5ba2V5XT8uW2RhdGFLZXldID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZT8uW2tleV0/LltkYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGFydGluZ1ZhbHVlW2tleV0gPT09IGN1cnJlbnRWYWx1ZVtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRpbmdWYWx1ZVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUoRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtJQ01TU2ltcGxlc0FzTWFudWFsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubmFtZSBhcyBFbnVtVGlwb1RyaWJ1dG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVR3b1dheURhdGFCaW5kaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhYmVsQWxpcXVvdGEodHJpYnV0bzogRW51bVRpcG9UcmlidXRvKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRyaWJ1dG8gPT0gRW51bVRpcG9UcmlidXRvLklDTVNfVUZfREVTVElOTyB8fFxuICAgICAgICAgICAgdHJpYnV0byA9PSBFbnVtVGlwb1RyaWJ1dG8uSUNNU19VRl9ERVNUSU5PX0RFVk9MVklET1xuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfaW50ZXJlc3RhZHVhbF9sYWJlbCdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHJpYnV0by50b1N0cmluZygpLmVuZHNXaXRoKCdfRElGRVJJRE8nKSAmJlxuICAgICAgICAgICAgdHJpYnV0byAhPT0gRW51bVRpcG9UcmlidXRvLklDTVNfRElGRVJJRE9cbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5maWVsZHNfYWxpcXVvdGFfZGlmZXJpZG9fbGFiZWwnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VycHgudHJpYnV0b3MuZmllbGRzX2FsaXF1b3RhX2xhYmVsJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRyYW5zbGF0ZUJ1dHRvbih2YWx1ZTogYW55KSB7XG4gICAgICAgIGxldCB0cmFuc2xhdGUgPSAnLmJ1dHRvbl9tZW1vcmlhX2NhbGN1bG9fZW1wdHlfbGFiZWwnO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlkc1RheGVzTWVtb3JpYUNhbGN1bG8uZmluZCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50aXBvVHJpYnV0byA9PSB2YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlkUGFyYW1ldHJvICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRyYW5zbGF0ZSA9ICcuYnV0dG9uX21lbW9yaWFfY2FsY3Vsb19sYWJlbCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcmVmaXhMYWJlbCArIHRyYW5zbGF0ZTtcbiAgICB9XG5cbiAgICBpc0dyb3VwSW52YWxpZChncm91cDoge1xuICAgICAgICBncnVwbzogc3RyaW5nO1xuICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICBmb3JtRmllbGQ6IEZvcm1GaWVsZFtdO1xuICAgICAgICAgICAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICB9W107XG4gICAgfSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZ3JvdXA/Lml0ZW0/LnNvbWUoKGl0ZW0pID0+IGl0ZW0/LmZvcm1Hcm91cD8uaW52YWxpZCk7XG4gICAgfVxuXG4gICAgaXNCYWRnZVZpc2libGUoaXRlbTogSXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgaXNUYXhGcm9tVGF4UmVmb3JtKGl0ZW0ubmFtZSBhcyBFbnVtVGlwb1RyaWJ1dG8pICYmXG4gICAgICAgICAgICAhIWl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCYWRnZUNvbG9yKGl0ZW06IEl0ZW0pOiBCYWRnZUNvbG9ycyB7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5mb3JtR3JvdXAuZ2V0KEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKS52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLkNBTENVTEFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQmFkZ2VDb2xvcnMuR3JlZW47XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQmFkZ2VDb2xvcnMuQmx1ZTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLlllbGxvdztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJhZGdlQ29sb3JzLlllbGxvdztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEJhZGdlVGV4dChpdGVtOiBJdGVtKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoIChpdGVtLmZvcm1Hcm91cC5nZXQoRW51bUNhbXBvVHJpYnV0by5UaXBvQ2FsY3Vsb0ltcG9zdG8pLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uQ0FMQ1VMQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX2F1dG9tYXRpY28nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5IRVJEQURPOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX2dlcmFkb192aWFfcHJvY2Vzc28nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5NQU5VQUw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fbWFudWFsJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19jYWxjdWxvX21hbnVhbCdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCYWRnZUluZm9TaWduKGl0ZW06IEl0ZW0pOiB7IHRleHQ6IHN0cmluZyB9IHtcbiAgICAgICAgaWYgKGl0ZW0uZm9ybUdyb3VwLmdldCgnaW1wb3N0b01hbnVhbCcpLnZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9tYW51YWwnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICBzd2l0Y2ggKGl0ZW0uZm9ybUdyb3VwLmdldChFbnVtQ2FtcG9UcmlidXRvLlRpcG9DYWxjdWxvSW1wb3N0bykudmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9DYWxjdWxvSW1wb3N0by5DQUxDVUxBRE86XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X2NhbGN1bGFkbydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uSEVSREFETzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2VycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfaGVyZGFkbydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvQ2FsY3Vsb0ltcG9zdG8uTUFOVUFMOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXJweC50cmlidXRvcy5iYWRnZV90aXBvX2NhbGN1bG9faW1wb3N0b19pbmZvX3NpZ25fdGV4dF9tYW51YWwnXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X21hbnVhbCdcbiAgICAgICAgICAgIClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW52b2ljZURvY3VtZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRvY3VtZW50ID09PSAnSW5jb21pbmcgSW52b2ljZScgfHxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kb2N1bWVudCA9PT0gJ091dGdvaW5nIEludm9pY2UnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpZWxkUmVxdWlyZWQoZmllbGQ6IHN0cmluZywgdGF4VHlwZTogRW51bVRpcG9UcmlidXRvKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdydXBvc1xuICAgICAgICAgICAgLmZpbmQoKGdyb3VwKSA9PiBncm91cC5pdGVtLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gdGF4VHlwZSkpXG4gICAgICAgICAgICAuaXRlbS5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IHRheFR5cGUpO1xuXG4gICAgICAgIHJldHVybiBpdGVtLmZvcm1Hcm91cC5nZXQoZmllbGQpLnZhbGlkYXRvcj8uKHt9IGFzIEFic3RyYWN0Q29udHJvbClcbiAgICAgICAgICAgID8ucmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgLy8gV29yay1hcm91bmQgcHJhIHJlc29sdmVyIGEgI0VSUFBFUS0yMDU5NS5cbiAgICAvLyBObyBmdXR1cm8gbW92ZXIgcGFyYSBvIE1hbnVhbFRheENhbGN1bGF0aW9uUnVsZSBlIFRheENhbGN1bGF0aW9uVHlwZUNhbGN1bGF0aW9uUnVsZVxuICAgIC8vIHF1YW5kbyBvcyBpbXBvc3RvcyBsZWdhZG9zIGZvcmVtIG1pZ3JhZG9zIHBhcmEgbyBub3ZvIHBhZHLDo28uXG4gICAgcHJpdmF0ZSBtYXJrSUNNU1NpbXBsZXNBc01hbnVhbChcbiAgICAgICAgdGF4OiBFbnVtVGlwb1RyaWJ1dG8sXG4gICAgICAgIGdyb3VwOiBHcm91cCxcbiAgICAgICAgZmllbGQ6IEVudW1DYW1wb1RyaWJ1dG9cbiAgICApIHtcbiAgICAgICAgaWYgKHRheCAhPT0gRW51bVRpcG9UcmlidXRvLklDTVMpIHJldHVybjtcblxuICAgICAgICBjb25zdCBJQ01TX1NJTVBMRVNfSVRFTSA9IGdyb3VwLml0ZW0uZmluZChcbiAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IEVudW1UaXBvVHJpYnV0by5JQ01TX1NJTVBMRVNcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIUlDTVNfU0lNUExFU19JVEVNKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGZpZWxkID09PSBFbnVtQ2FtcG9UcmlidXRvLkltcG9zdG9NYW51YWwpIHtcbiAgICAgICAgICAgIElDTVNfU0lNUExFU19JVEVNLmZvcm1Hcm91cFxuICAgICAgICAgICAgICAgIC5nZXQoJ2ltcG9zdG9NYW51YWwnKVxuICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0cnVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGQgPT09IEVudW1DYW1wb1RyaWJ1dG8uVGlwb0NhbGN1bG9JbXBvc3RvKSB7XG4gICAgICAgICAgICBJQ01TX1NJTVBMRVNfSVRFTS5mb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAuZ2V0KGZpZWxkKVxuICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShFbnVtVGlwb0NhbGN1bG9JbXBvc3RvLk1BTlVBTCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBcnJlZG9uZGFtZW50b0FibnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZGluZ0NvbnRleHQucHVzaCgpO1xuXG4gICAgICAgIHRoaXMuZmVhdHVyZVRvZ2dsZVNlcnZpY2VcbiAgICAgICAgICAgIC5pc0VuYWJsZWQoe1xuICAgICAgICAgICAgICAgIGRvbWFpbjogJ2VycHhfY3BsX2ltcCcsXG4gICAgICAgICAgICAgICAgc2VydmljZTogJ2NhbGN1bG9faW1wb3N0b3MnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdhcnJlZG9uZGFtZW50b0FibnQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmdDb250ZXh0LnBvcCgpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogKGFycmVkb25kYW1lbnRvQWJudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRheFN0b3JlLnNldEFycmVkb25kYW1lbnRvQWJudChhcnJlZG9uZGFtZW50b0FibnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|