@colijnit/transaction 12.1.2 → 12.1.3
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/app/component/core/base/transaction-base.component.d.ts +10 -0
- package/app/component/{shopping-cart → core}/characteristic-answer/characteristic-answer.component.d.ts +0 -0
- package/app/component/core/warehouse/warehouse.component.d.ts +35 -0
- package/app/component/service-order/service-order.component.d.ts +9 -4
- package/app/component/service-order/transaction-manager/transaction-manager.component.d.ts +63 -0
- package/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.d.ts +1 -1
- package/app/service/transaction.service.d.ts +14 -8
- package/bundles/colijnit-transaction.umd.js +850 -115
- package/bundles/colijnit-transaction.umd.js.map +1 -1
- package/colijnit-transaction.d.ts +20 -18
- package/colijnit-transaction.metadata.json +1 -1
- package/esm2015/app/component/core/base/transaction-base.component.js +35 -12
- package/esm2015/app/component/core/characteristic-answer/characteristic-answer.component.js +100 -0
- package/esm2015/app/component/core/warehouse/warehouse.component.js +133 -0
- package/esm2015/app/component/service-order/ione-service-order-module.js +7 -2
- package/esm2015/app/component/service-order/service-order.component.js +35 -6
- package/esm2015/app/component/service-order/transaction-article-text/transaction-article-text.component.js +16 -5
- package/esm2015/app/component/service-order/transaction-manager/transaction-manager.component.js +305 -0
- package/esm2015/app/component/shopping-cart/ione-shopping-cart.module.js +3 -3
- package/esm2015/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.js +1 -1
- package/esm2015/app/service/transaction.service.js +72 -23
- package/esm2015/assets/dictionary/text.properties.js +5 -1
- package/esm2015/colijnit-transaction.js +21 -19
- package/fesm2015/colijnit-transaction.js +584 -45
- package/fesm2015/colijnit-transaction.js.map +1 -1
- package/package.json +1 -1
- package/esm2015/app/component/shopping-cart/characteristic-answer/characteristic-answer.component.js +0 -99
package/esm2015/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.js
CHANGED
|
@@ -448,4 +448,4 @@ ShoppingCartManagerComponent.propDecorators = {
|
|
|
448
448
|
openCart: [{ type: Output }],
|
|
449
449
|
articleAdded: [{ type: Output }]
|
|
450
450
|
};
|
|
451
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcHBpbmctY2FydC1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50L3Nob3BwaW5nLWNhcnQvc2hvcHBpbmctY2FydC1tYW5hZ2VyL3Nob3BwaW5nLWNhcnQtbWFuYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUE2QixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUM5RSxPQUFPLEVBQWUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBR25GLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHdFQUF3RSxDQUFDO0FBQ3ZILE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBSW5HLE9BQU8sRUFBcUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOERBQThELENBQUM7QUFFL0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFHdEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBcUR4RSxNQUFNLE9BQU8sNEJBQTRCO0lBK0R2QyxZQUNTLE9BQTJCLEVBQzNCLGlCQUEwQyxFQUMxQyxhQUE0QixFQUM1QixrQkFBcUM7UUFIckMsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF5QjtRQUMxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1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QU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQztRQUM1SCxPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVPLDhCQUE4QixDQUFDLEtBQWE7UUFDbEQsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDMUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUN4QztJQUNILENBQUM7OztZQW5mRixTQUFTLFNBQUM7Z0JBQ1QsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVDs7YUFFRjs7O1lBckVPLGtCQUFrQjtZQUdsQix1QkFBdUI7WUFRYSxhQUFhO1lBR2pELGlCQUFpQjs7OzhCQXlEdEIsU0FBUyxTQUFDLGlCQUFpQjs0QkFHM0IsU0FBUyxTQUFDLGVBQWU7bUNBR3pCLFNBQVMsU0FBQyxzQkFBc0I7MkJBR2hDLE1BQU07dUJBR04sTUFBTTsyQkFHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtOdW1iZXJVdGlsc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9udW1iZXItdXRpbHNcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9uLCB0aHJvd0Vycm9yfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZVwiO1xuaW1wb3J0IHtDb21taXNzaW9uQ29kZVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9yZWZjb2RlL2NvbW1pc3Npb24tY29kZS10eXBlLmVudW1cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcbmltcG9ydCB7UmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWxpbmUtdHlwZS5lbnVtXCI7XG5pbXBvcnQge0NvRG9tYWluVmFsdWV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY28tZG9tYWluLXZhbHVlLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1hcnRpY2xlLXdhcmVob3VzZS5ib1wiO1xuaW1wb3J0IHtMaW5lT3BlcmF0aW9uU3RhdHVzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xpbmUtb3BlcmF0aW9uLXN0YXR1cy5ib1wiO1xuaW1wb3J0IHtDb0RpYWxvZ0NvbXBvbmVudCwgQ29HcmlkQ29tcG9uZW50LCBQcm9tcHRTZXJ2aWNlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xuaW1wb3J0IHtQZW5kaW5nUmVhc29uVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3BlbmRpbmctcmVhc29uLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtBcnRpY2xlRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWZ1bGwtb2JqZWN0XCI7XG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7TGluZU9wZXJhdGlvblJlc3BvbnNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xpbmUtb3BlcmF0aW9uLXJlc3BvbnNlLmJvXCI7XG5pbXBvcnQge0NoYXJhY3RlcmlzdGljQW5zd2VyQ29tcG9uZW50fSBmcm9tIFwiLi4vY2hhcmFjdGVyaXN0aWMtYW5zd2VyL2NoYXJhY3RlcmlzdGljLWFuc3dlci5jb21wb25lbnRcIjtcbmltcG9ydCB7UG9zaXRpb25HcmlkUm93fSBmcm9tIFwiLi4vLi4vLi4vLi4vZW51bS9wb3NpdGlvbi1ncmlkLXJvdy5lbnVtXCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogXCJzaG9wcGluZy1jYXJ0LW1hbmFnZXJcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8Y28tZGlhbG9nICN3YXJlaG91c2VEaWFsb2dcbiAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cImhpZGUoKVwiXG4gICAgICAgICAgICAgICAob3ZlcmxheUNsaWNrKT1cIm9uU3RvY2tNYW5hZ2VyQ2FuY2VsQ2xpY2soKVwiXG4gICAgICA+XG4gICAgICA8bmctY29udGFpbmVyIGhlYWRlcj57eyAnU1RPQ0tfTk9USUZJQ0FUSU9OJyB8IGxvY2FsaXplIH19PC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgY29udGVudD5cbiAgICAgICAgPGNvLWZvcm0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGVudFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZXNzYWdlXCIgY2xhc3M9XCJtZXNzYWdlLWZpZWxkXCIgW3RleHRDb250ZW50XT1cIm1lc3NhZ2UgfCBsb2NhbGl6ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1pc3Npb24tZmllbGRzXCIgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtbnVtYmVyLXBpY2tlciBjbGFzcz1cImhvcml6b250YWxcIiBbKG1vZGVsKV09XCJhbW91bnRcIiBbbWluXT1cIjBcIiBkZWNpbWFscz1cIjNcIj48L2NvLWlucHV0LW51bWJlci1waWNrZXI+XG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LWNvbWJvLWJveCBbKG1vZGVsKV09XCJjb21taXNzaW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzb3VyY2VdPVwiY29tbWlzc2lvbkNvZGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkc109XCJjb21taXNzaW9uRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidDT01NSVNTSU9OX0NPREUnIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvY28taW5wdXQtY29tYm8tYm94PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8Y28tZ3JpZCAjd2FyZWhvdXNlR3JpZFxuICAgICAgICAgICAgICAgICAgW2RhdGFdPVwidHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlc1wiXG4gICAgICAgICAgICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgIFtwYWdpbmdFbmFibGVkXT1cIid0cnVlJ1wiXG4gICAgICAgICAgICAgICAgICBbbWF4TnVtYmVyT2ZSb3dzXT1cIicyMCdcIlxuICAgICAgICAgICAgICAgICAgKHJvd3NTZWxlY3RlZCk9XCJoYW5kbGVSb3dzU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvY28tZ3JpZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvY28tZm9ybT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIGZvb3Rlcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxjby1idXR0b24gW2xhYmVsXT1cIidPSycgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJvblN0b2NrTWFuYWdlck9rQ2xpY2soKVwiPjwvY28tYnV0dG9uPlxuICAgICAgICAgICAgPGNvLWJ1dHRvbiBbbGFiZWxdPVwiJ0NBTkNFTCcgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJvblN0b2NrTWFuYWdlckNhbmNlbENsaWNrKClcIj48L2NvLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvY28tZGlhbG9nPlxuXG4gICAgPGNoYXJhY3RlcmlzdGljLWFuc3dlclxuICAgICAgI2NoYXJhY3RlcmlzdGljQW5zd2VyXG4gICAgICAob2tDbGljayk9XCJoYW5kbGVDaGFyYWN0ZXJpc3RpY0Fuc3dlck9rQ2xpY2soJGV2ZW50KVwiXG4gICAgPjwvY2hhcmFjdGVyaXN0aWMtYW5zd2VyPlxuICBgLFxuICBzdHlsZVVybHM6IFtcIi4vc2hvcHBpbmctY2FydC1tYW5hZ2VyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFNob3BwaW5nQ2FydE1hbmFnZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoXCJ3YXJlaG91c2VEaWFsb2dcIilcbiAgcHVibGljIHdhcmVob3VzZURpYWxvZzogQ29EaWFsb2dDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZChcIndhcmVob3VzZUdyaWRcIilcbiAgcHVibGljIHdhcmVob3VzZUdyaWQ6IENvR3JpZENvbXBvbmVudDxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoXCJjaGFyYWN0ZXJpc3RpY0Fuc3dlclwiKVxuICBwdWJsaWMgY2hhcmFjdGVyaXN0aWNBbnN3ZXI6IENoYXJhY3RlcmlzdGljQW5zd2VyQ29tcG9uZW50O1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgbGluZXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBvcGVuQ2FydDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgYXJ0aWNsZUFkZGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIGdldCBhbW91bnRPZkxpbmVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE51bWJlclV0aWxzLk5yT3JEZWZhdWx0KHRoaXMuc2VydmljZS5hcnRpY2xlQW1vdW50LCAwKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hvd0NoYXJhY3RlcmlzdGljRGlhbG9nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zaG93Q2hhcmFjdGVyaXN0aWM7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNob3dDaGFyYWN0ZXJpc3RpY0RpYWxvZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dDaGFyYWN0ZXJpc3RpYyA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGJyYW5jaE5yOiBzdHJpbmc7XG4gIHB1YmxpYyBuZXdBcnRpY2xlTnI6IHN0cmluZztcbiAgcHVibGljIG5ld0FydGljbGU6IEFydGljbGVGdWxsT2JqZWN0O1xuICBwdWJsaWMgc2VsZWN0ZWRXYXJlaG91c2VOcjogbnVtYmVyO1xuICBwdWJsaWMgYW1vdW50OiBudW1iZXI7XG4gIHB1YmxpYyBpc1JldHVybjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyB3YWl0Rm9yTGluZXNDaGFuZ2VkVG9PcGVuQ2FydDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgbWVzc2FnZTogc3RyaW5nID0gXCJDSEVDS19XQVJFSE9VU0VfQU5EX0NPTU1JU1NJT05DT0RFXCI7XG5cbiAgcHVibGljIGNvbW1pc3Npb25Db2RlOiBDb21taXNzaW9uQ29kZVR5cGU7XG4gIHB1YmxpYyBjb21taXNzaW9uQ29kZXM6IENvRG9tYWluVmFsdWVbXSA9IFtdO1xuICBwdWJsaWMgY29tbWlzc2lvbkZpZWxkczogT2JqZWN0ID0geyB0ZXh0OiBcImRlc2NyaXB0aW9uXCIsIHZhbHVlOiBcImNvZGVcIiB9O1xuXG4gIHB1YmxpYyB0cmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzOiBUcmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VbXSA9IFtdO1xuICBwdWJsaWMgdHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlRmllbGRzOiBPYmplY3QgPSB7IHRleHQ6IFwid2FyZWhvdXNlRGVzY1wiLCB2YWx1ZTogXCJ3YXJlaG91c2VOclwiIH07XG4gIHB1YmxpYyBjb2x1bW5zOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBjdXJyZW50UGVuZGluZ0xpbmU6IFRyYW5zYWN0aW9uTGluZUluZm87XG4gIHB1YmxpYyBjdXJyZW50UmVhc29uOiBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0O1xuICBwdWJsaWMgZWRpdGluZ0xpbmU6IFRyYW5zYWN0aW9uTGluZUluZm87XG5cbiAgcHVibGljIGRpYWxvZ1Byb21wdEhlYWRlcjogc3RyaW5nID0gXCJcIjtcblxuICBwdWJsaWMgcm9vdEVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gbnVsbDtcblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGN1cnJlbnRPcGVyYXRpb25TdGF0dXM6IExpbmVPcGVyYXRpb25TdGF0dXM7XG4gIHByaXZhdGUgX2luT3V0Q29sbGVjdGlvbjogQ29Eb21haW5WYWx1ZVtdID0gW107XG4gIHByaXZhdGUgX29rT3JDYW5jZWxDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9zaG93Q2hhcmFjdGVyaXN0aWM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyB0cmFuc2FjdGlvbkV2ZW50czogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXG4gICAgcHVibGljIHByb21wdFNlcnZpY2U6IFByb21wdFNlcnZpY2UsXG4gICAgcHVibGljIF9kaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuc2VydmljZS50cmFuc2FjdGlvblVwZGF0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5saW5lc0NoYW5nZWQuZW1pdCh0aGlzLndhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0KTtcbiAgICAgICAgdGhpcy53YWl0Rm9yTGluZXNDaGFuZ2VkVG9PcGVuQ2FydCA9IGZhbHNlO1xuICAgICAgfSksXG5cbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMuYWRkVG9DYXJ0QnlTa3Uuc3Vic2NyaWJlKChwYXJhbXM6IHtza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIHBvcENhcnQ6IGJvb2xlYW59KSA9PiB7XG4gICAgICAgICAgdGhpcy53YWl0Rm9yTGluZXNDaGFuZ2VkVG9PcGVuQ2FydCA9IHBhcmFtcy5wb3BDYXJ0O1xuICAgICAgICAgIHRoaXMuYWRkVG9DYXJ0KHBhcmFtcy5za3UsIHBhcmFtcy5hbW91bnQpLnRoZW4oKTtcbiAgICAgICAgfSksXG5cbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMuYWRkQXJ0aWNsZUxpbmVBdC5zdWJzY3JpYmUoKHBhcmFtczoge3NrdTogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30pID0+IHtcbiAgICAgICAgICB0aGlzLmFkZEFydGljbGVMaW5lVG9DYXJ0QXQocGFyYW1zLnNrdSwgcGFyYW1zLmFtb3VudCwgcGFyYW1zLmxpbmVOciwgcGFyYW1zLmJlZm9yZU9yQWZ0ZXIpLnRoZW4oKTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRzLmFkZFRleHRMaW5lQXQuc3Vic2NyaWJlKChwYXJhbXM6IHt0ZXh0OiBzdHJpbmcsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3d9KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkVGV4dExpbmVUb0NhcnRBdChwYXJhbXMudGV4dCwgcGFyYW1zLmxpbmVOciwgcGFyYW1zLmJlZm9yZU9yQWZ0ZXIpLnRoZW4oKTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRzLmNoYW5nZUxpbmVTZXF1ZW5jZS5zdWJzY3JpYmUoKHBhcmFtczoge2Zyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXJ9KSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlTGluZVNlcXVlbmNlKHBhcmFtcy5mcm9tSW5kZXgsIHBhcmFtcy50b0luZGV4KS50aGVuKCk7XG4gICAgICB9KSxcblxuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50cy5hZGRUb0NhcnRCeVNlbGVjdG9yUmVzdWx0LnN1YnNjcmliZShcbiAgICAgICAgKHBhcmFtczoge3NlbGVjdG9yUmVzdWx0OiB7Z29vZElkOiBudW1iZXIsIGJhc2VHb29kSWQ6IG51bWJlciwgc2VsZWN0b3JEYXRhOiBhbnksIHF1YW50aXR5OiBudW1iZXJ9LCBwb3BDYXJ0OiBib29sZWFufSkgPT4ge1xuICAgICAgICAgIHRoaXMud2FpdEZvckxpbmVzQ2hhbmdlZFRvT3BlbkNhcnQgPSBwYXJhbXMucG9wQ2FydDtcbiAgICAgICAgICB0aGlzLmFkZFRvQ2FydEJ5U2VsZWN0b3JSZXN1bHQocGFyYW1zLnNlbGVjdG9yUmVzdWx0KS50aGVuKCk7XG4gICAgICAgIH0pLFxuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRzLm9wZW5TaG9wcGluZ0NhcnRNb2R1bGUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuQ2FydC5lbWl0KGZhbHNlKTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRzLmFkZFVzZXJSZWxhdGlvblNob3BwaW5nQ2FydE1vZHVsZS5zdWJzY3JpYmUoKGxvZ2luOiB7dXNlcjogc3RyaW5nLCBwdzogc3RyaW5nfSkgPT4ge1xuICAgICAgICB0aGlzLmFkZFVzZXJSZWxhdGlvblRvVHJhbnNhY3Rpb25BbmRMb2dpbihsb2dpbi51c2VyLCBsb2dpbi5wdyk7XG4gICAgICB9KSxcblxuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50cy5hZGROZXdVc2VyVG9TaG9wcGluZ0NhcnRNb2R1bGUuc3Vic2NyaWJlKChlbWFpbEFkZHJlc3MpID0+IHtcbiAgICAgICAgdGhpcy5hZGRFbWFpbEFkZHJlc3NUb1RyYW5zYWN0aW9uKGVtYWlsQWRkcmVzcyk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmNvbHVtbnMucHVzaChcbiAgICAgIHtmaWVsZDogXCJ3YXJlaG91c2VOclwiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJXQVJFSE9VU0VcIiksIGFsbG93RmlsdGVyaW5nOiBmYWxzZX0sXG4gICAgICB7ZmllbGQ6IFwid2FyZWhvdXNlRGVzY1wiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJERVNDUklQVElPTlwiKX0sXG4gICAgICB7ZmllbGQ6IFwic3RvY2tBbW91bnRcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiU1RPQ0tcIil9XG4gICAgKTtcblxuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb21taXNzaW9uQ29kZXMgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0Q29tbWlzc2lvbkNvZGVzKFwiTkxcIik7XG4gICAgdGhpcy5saW5lc0NoYW5nZWQuZW1pdCh0aGlzLndhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0KTtcbiAgICB0aGlzLndhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0ID0gZmFsc2U7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLndhcmVob3VzZURpYWxvZy5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZFRvQ2FydChza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBnb29kSWQ6IG51bWJlciAgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0R29vZElkRnJvbUFydGljbGVOcihza3UpO1xuICAgIGF3YWl0IHRoaXMuX2xvYWRBcnRpY2xlKGdvb2RJZCk7XG4gICAgYXdhaXQgdGhpcy5fY3JlYXRlVHJhbnNhY3Rpb24oKTtcbiAgICBhd2FpdCB0aGlzLl9oYW5kbGVBZGRBcnRpY2xlKGFtb3VudCk7XG4gICAgdGhpcy5hcnRpY2xlQWRkZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEFydGljbGVMaW5lVG9DYXJ0QXQoc2t1OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZ29vZElkOiBudW1iZXIgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0R29vZElkRnJvbUFydGljbGVOcihza3UpO1xuICAgIGF3YWl0IHRoaXMuX2xvYWRBcnRpY2xlKGdvb2RJZCk7XG4gICAgYXdhaXQgdGhpcy5fY3JlYXRlVHJhbnNhY3Rpb24oKTtcbiAgICBhd2FpdCB0aGlzLl9oYW5kbGVBZGRBcnRpY2xlTGluZUF0KGFtb3VudCwgbGluZU5yLCBiZWZvcmVPckFmdGVyKTtcbiAgICB0aGlzLmFydGljbGVBZGRlZC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVGV4dExpbmVUb0NhcnRBdCh0ZXh0OiBzdHJpbmcsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3cpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuYWRkVGV4dExpbmVUb1RyYW5zYWN0aW9uKDAsIHRleHQsIDAsIGZhbHNlLCAwLFxuICAgICAgYmVmb3JlT3JBZnRlciA9PT0gUG9zaXRpb25HcmlkUm93LkJlZm9yZSA/IGxpbmVOciA6IHVuZGVmaW5lZCxcbiAgICAgIGJlZm9yZU9yQWZ0ZXIgPT09IFBvc2l0aW9uR3JpZFJvdy5BZnRlciA/IGxpbmVOciA6IHVuZGVmaW5lZClcbiAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHRoaXMucHJvbXB0U2VydmljZS5zaG93RXJyb3IoZXJyb3IpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VMaW5lU2VxdWVuY2UoZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBmcm9tTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyA9IHRoaXMuX2dldFRyYW5zYWN0aW9uTGluZUluZm9CeUluZGV4KGZyb21JbmRleClcbiAgICBsZXQgdG9MaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvID0gdGhpcy5fZ2V0VHJhbnNhY3Rpb25MaW5lSW5mb0J5SW5kZXgodG9JbmRleCk7XG4gICAgbGV0IGFib3ZlTGluZU5yOiBudW1iZXI7XG4gICAgbGV0IGJlbG93TGluZU5yOiBudW1iZXI7XG5cbiAgICBpZiAoZnJvbUluZGV4ID4gdG9JbmRleCkge1xuICAgICAgYWJvdmVMaW5lTnIgPSB0b0xpbmUubGluZU5yO1xuICAgIH0gZWxzZSB7XG4gICAgICBiZWxvd0xpbmVOciA9IHRvTGluZS5saW5lTnI7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmNoYW5nZUxpbmVTZXF1ZW5jZShmcm9tTGluZS51dWlkLCBhYm92ZUxpbmVOciwgYmVsb3dMaW5lTnIpXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2hhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB0aGlzLnByb21wdFNlcnZpY2Uuc2hvd0Vycm9yKGVycm9yKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVG9DYXJ0QnlTZWxlY3RvclJlc3VsdChyZXN1bHQ6IHtnb29kSWQ6IG51bWJlciwgYmFzZUdvb2RJZDogbnVtYmVyLCBzZWxlY3RvckRhdGE6IGFueSwgcXVhbnRpdHk6IG51bWJlcn0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLl9sb2FkQXJ0aWNsZShyZXN1bHQuZ29vZElkKTtcbiAgICBhd2FpdCB0aGlzLl9jcmVhdGVUcmFuc2FjdGlvbigpO1xuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUFkZEFydGljbGUocmVzdWx0LnF1YW50aXR5KTtcbiAgICB0aGlzLmFydGljbGVBZGRlZC5lbWl0KCk7XG4gIH1cblxuICAvLyBUT0RPIHB1YmxpYyB1c2VyIGxvZ3MgaW4uLi4uIGhvdyByZWNvbm5lY3QgdGhlIENvbm5lY3Rvcj9cbiAgcHVibGljIGFzeW5jIGFkZFVzZXJSZWxhdGlvblRvVHJhbnNhY3Rpb25BbmRMb2dpbih1c2VyTmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuc2VydmljZS5zZXRSZWxhdGlvbkJ5VXNlcih1c2VyTmFtZSwgcGFzc3dvcmQpO1xuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMubG9nZ2VkSW4ubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaG93U3RvY2tNYW5hZ2VyKGxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlTnIgPSBsaW5lLndhcmVob3VzZU51bWJlcjtcbiAgICB0aGlzLmFtb3VudCA9IGxpbmUuYW1vdW50O1xuICAgIHRoaXMuY29tbWlzc2lvbkNvZGUgPSBsaW5lLmNvbW1pc3Npb25Db2RlO1xuICAgIHRoaXMuc2hvdyhsaW5lLmFydGljbGVOdW1iZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhpZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX29rT3JDYW5jZWxDbGljaykge1xuICAgICAgdGhpcy5fb2tPckNhbmNlbENsaWNrID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMub25TdG9ja01hbmFnZXJDYW5jZWxDbGljaygpO1xuICB9XG5cbiAgcHVibGljIHNob3coYXJ0aWNsZU5yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWxvYWREYXRhQ29sbGVjdGlvbnMoYXJ0aWNsZU5yKS50aGVuKCk7XG5cbiAgICB0aGlzLm1lc3NhZ2UgPSB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbjtcbiAgICB0aGlzLndhcmVob3VzZUdyaWQuc2VsZWN0Um93KHRoaXMuc2VsZWN0ZWRXYXJlaG91c2VOcik7XG4gICAgdGhpcy53YXJlaG91c2VEaWFsb2cudGFyZ2V0RWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy53YXJlaG91c2VEaWFsb2cub3BlbigpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG9uU3RvY2tNYW5hZ2VyQ2FuY2VsQ2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fb2tPckNhbmNlbENsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLndhcmVob3VzZURpYWxvZy5jbG9zZSgpO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudFJlYXNvbikge1xuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmNhbmNlbEFkZFRyYW5zYWN0aW9uTGluZSh0aGlzLmN1cnJlbnRSZWFzb24ubGluZVV1aWQpO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdGluZ0xpbmUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgb25TdG9ja01hbmFnZXJPa0NsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX29rT3JDYW5jZWxDbGljayA9IHRydWU7XG4gICAgdGhpcy53YXJlaG91c2VEaWFsb2cuY2xvc2UoKTtcblxuICAgIGlmICh0aGlzLmNvbW1pc3Npb25Db2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFJlYXNvbi5jb21taXNzaW9uQ29kZSA9IHRoaXMuY29tbWlzc2lvbkNvZGUudmFsdWVPZigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFtb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRSZWFzb24ucXVhbnRpdHkgPSB0aGlzLmFtb3VudC52YWx1ZU9mKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRXYXJlaG91c2VOciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRSZWFzb24ud2FyZWhvdXNlTnIgPSB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlTnI7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudFJlYXNvbikge1xuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24pXG4gICAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZWRpdGluZ0xpbmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuYWRkVHJhbnNhY3Rpb25MaW5lKFRyYW5zYWN0aW9uTGluZVR5cGUuQXJ0aWNsZUxpbmUsIHRoaXMubmV3QXJ0aWNsZU5yLCB0aGlzLmFtb3VudCwgdGhpcy5zZWxlY3RlZFdhcmVob3VzZU5yLCB0aGlzLmNvbW1pc3Npb25Db2RlLCB0aGlzLmlzUmV0dXJuLCAwLCAwKVxuICAgICAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuY2hhbmdlVHJhbnNhY3Rpb25MaW5lUXVhbnRpdHkodGhpcy5lZGl0aW5nTGluZS51dWlkLCB0aGlzLmFtb3VudClcbiAgICAgICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZWRpdGluZ0xpbmUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUm93c1NlbGVjdGVkKHJvd3M6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRXYXJlaG91c2VOciA9IChyb3dzLmZpbmQoeCA9PiB4ICE9PSB1bmRlZmluZWQpKS53YXJlaG91c2VOcjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVDaGFyYWN0ZXJpc3RpY0Fuc3dlck9rQ2xpY2soYW5zd2VyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24gPSBuZXcgUmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMudXVpZCwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24sIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uVHlwZSk7XG4gICAgdGhpcy5jdXJyZW50UmVhc29uLnRleHR1YWxVc2VySW5wdXQgPSBhbnN3ZXI7XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24pXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3JlbG9hZERhdGFDb2xsZWN0aW9ucyhhcnRpY2xlTnI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdvb2RJZDogbnVtYmVyICA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKGFydGljbGVOcik7XG4gICAgdGhpcy50cmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMoZ29vZElkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2hhbmRsZUFkZEFydGljbGUoYW1vdW50OiBudW1iZXIgPSAxKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmFkZFRyYW5zYWN0aW9uTGluZShUcmFuc2FjdGlvbkxpbmVUeXBlLkFydGljbGVMaW5lLFxuICAgICAgdGhpcy5uZXdBcnRpY2xlTnIsXG4gICAgICBhbW91bnQsXG4gICAgICB0aGlzLm5ld0FydGljbGUuc3RhbmRhcmRXYXJlSG91c2UsXG4gICAgICB0aGlzLm5ld0FydGljbGUuY29tbWlzc2lvbkNvZGUsXG4gICAgICBmYWxzZSxcbiAgICAgIDAsXG4gICAgICAwKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4gdGhpcy5wcm9tcHRTZXJ2aWNlLnNob3dFcnJvcihlcnJvcikpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlQWRkQXJ0aWNsZUxpbmVBdChhbW91bnQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvdyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2VydmljZS5hZGRUcmFuc2FjdGlvbkxpbmUoVHJhbnNhY3Rpb25MaW5lVHlwZS5BcnRpY2xlTGluZSxcbiAgICAgIHRoaXMubmV3QXJ0aWNsZU5yLFxuICAgICAgYW1vdW50LFxuICAgICAgdGhpcy5uZXdBcnRpY2xlLnN0YW5kYXJkV2FyZUhvdXNlLFxuICAgICAgdGhpcy5uZXdBcnRpY2xlLmNvbW1pc3Npb25Db2RlLFxuICAgICAgZmFsc2UsXG4gICAgICBiZWZvcmVPckFmdGVyID09PSBQb3NpdGlvbkdyaWRSb3cuQmVmb3JlID8gbGluZU5yIDogdW5kZWZpbmVkLFxuICAgICAgYmVmb3JlT3JBZnRlciA9PT0gUG9zaXRpb25HcmlkUm93LkFmdGVyID8gbGluZU5yIDogdW5kZWZpbmVkKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4gdGhpcy5wcm9tcHRTZXJ2aWNlLnNob3dFcnJvcihlcnJvcikpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0V2FyZUhvdXNlTm9Gcm9tQXJ0aWNsZSgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLm5ld0FydGljbGUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm5ld0FydGljbGUuc3RvY2tMb2NhdGlvbnMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm5ld0FydGljbGUuc3RvY2tMb2NhdGlvbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZXdBcnRpY2xlLnN0b2NrTG9jYXRpb25zWzBdLndhcmVob3VzZU5yO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzTGluZU9wZXJhdGlvblN0YXR1cygpOiBib29sZWFuIHtcbiAgICB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMgPSB0aGlzLnNlcnZpY2UuY3VycmVudExpbmVPcGVyYXRpb25TdGF0dXM7XG4gICAgaWYgKHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tJZlNob3BwaW5nQ2FydE5lZWRzVG9EaXNwbGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uICYmIHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25Ocikge1xuICAgICAgdGhpcy5saW5lc0NoYW5nZWQuZW1pdCh0aGlzLndhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0KTtcbiAgICAgIHRoaXMud2FpdEZvckxpbmVzQ2hhbmdlZFRvT3BlbkNhcnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9jb25maXJtQWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY3VycmVudFJlYXNvbiA9IG5ldyBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy51dWlkLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbiwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKTtcbiAgICBjb25zdCBwZW5kaW5nUmVhc29uVGV4dDogc3RyaW5nID0gYXdhaXQgdGhpcy5fZ2V0UGVuZGluZ1JlYXNvblRleHQodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24pO1xuICAgIHRoaXMuY3VycmVudFJlYXNvbi5jb25maXJtYXRpb24gID0gYXdhaXQgdGhpcy5wcm9tcHRTZXJ2aWNlLnNob3dZZXNObyhwZW5kaW5nUmVhc29uVGV4dCwgXCIgXCIpO1xuICAgIGF3YWl0IHRoaXMuc2VydmljZS5yZXNvbHZlUGVuZGluZ0xpbmVSZWFzb24odGhpcy5jdXJyZW50UmVhc29uKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9zaG93SW5mb3JtYXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jdXJyZW50UmVhc29uID0gbmV3IFJlc29sdmVQZW5kaW5nTGluZVJlYXNvblJlcXVlc3QodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnV1aWQsIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpO1xuICAgIGNvbnN0IHBlbmRpbmdSZWFzb25UZXh0OiBzdHJpbmcgPSBhd2FpdCB0aGlzLl9nZXRQZW5kaW5nUmVhc29uVGV4dCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbik7XG4gICAgYXdhaXQgdGhpcy5wcm9tcHRTZXJ2aWNlLnNob3dPa01vZGFsKHBlbmRpbmdSZWFzb25UZXh0LCBcIiBcIik7XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24pXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2dldFBlbmRpbmdSZWFzb25UZXh0KHBlbmRpbmdSZWFzb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHBlbmRpbmdSZWFzb24gPT09IFwiQVJUSUNMRV9JU19ESVNDT05USU5VRURfRE9fWU9VX1dBTlRfVE9fQ09OVElOVUVfUExFQVNFX0NPTkZJUk1cIikge1xuICAgICAgcmV0dXJuIHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIkFSVElDTEVfSU5fT1VUX0NPTExFQ1RJT05cIikucmVwbGFjZShcInx+XCIsIGF3YWl0IHRoaXMuZ2V0SW5PdXRDb2xsZWN0aW9uT2ZBcnRpY2xlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KHBlbmRpbmdSZWFzb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRJbk91dENvbGxlY3Rpb25PZkFydGljbGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoIXRoaXMuX2luT3V0Q29sbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2luT3V0Q29sbGVjdGlvbiA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRJbk91dENvbGxlY3Rpb24oXCJOTFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBkb21haW5WYWx1ZTogQ29Eb21haW5WYWx1ZSA9IHRoaXMuX2luT3V0Q29sbGVjdGlvbi5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC5jb2RlID09PSB0aGlzLm5ld0FydGljbGUuaW5PdXRDb2xsZWN0aW9uKTtcbiAgICBpZiAoZG9tYWluVmFsdWUpIHtcbiAgICAgIHJldHVybiBkb21haW5WYWx1ZS5kZXNjcmlwdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9pc0xpbmVPcGVyYXRpb25TdGF0dXMoKSkge1xuICAgICAgYXdhaXQgdGhpcy5faGFuZGxlUGVuZGluZ0xpbmUodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnV1aWQpLnRoZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2hlY2tJZlNob3BwaW5nQ2FydE5lZWRzVG9EaXNwbGF5KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSAgYXN5bmMgX2hhbmRsZVBlbmRpbmdMaW5lKGxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24gPSBuZXcgUmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMudXVpZCwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24sIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uVHlwZSk7XG4gICAgdGhpcy5jdXJyZW50UGVuZGluZ0xpbmUgPSB0aGlzLnNlcnZpY2UuY3VycmVudExpbmVzLmZpbmQobCA9PiBsLnV1aWQgPT09IGxpbmVVdWlkKTtcblxuICAgIHN3aXRjaCAodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKSB7XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkFCT1JURUQ6XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkNBTkNFTExFRDpcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNhbmNlbEFkZFRyYW5zYWN0aW9uTGluZSh0aGlzLmN1cnJlbnRQZW5kaW5nTGluZS51dWlkKS50aGVuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5DT05GSVJNQVRJT05fTkVFREVEOlxuICAgICAgICBhd2FpdCB0aGlzLl9jb25maXJtQWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5JTlZBTElEX0xPR0lTVElDUzpcbiAgICAgICAgYXdhaXQgdGhpcy5zaG93U3RvY2tNYW5hZ2VyKHRoaXMuY3VycmVudFBlbmRpbmdMaW5lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLk5PTl9DUklUSUNBTF9ESVNDT05USU5VQVRJT046XG4gICAgICAgIGF3YWl0IHRoaXMuX3Nob3dJbmZvcm1hdGlvbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ0hBUkFDVEVSSVNUSUNTX0FOU1dFUl9ORUVERUQ6XG4gICAgICAgIHRoaXMuQ2hhcmFjdGVyaXN0aWNzQW5zd2VyTmVlZGVkKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5OT05FOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5jdXJyZW50UmVhc29uID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmN1cnJlbnRQZW5kaW5nTGluZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfY3JlYXRlVHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnNlcnZpY2UuY3VycmVudFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTnIpIHtcbiAgICAgIGlmICghYXdhaXQgdGhpcy5zZXJ2aWNlLmNyZWF0ZVRyYW5zYWN0aW9uKCkpIHtcbiAgICAgICAgdGhyb3dFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgdHJhbnNhY3Rpb25cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfbG9hZEFydGljbGUoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLm5ld0FydGljbGUgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ29vZElkKTtcbiAgICB0aGlzLm5ld0FydGljbGVOciA9IHRoaXMubmV3QXJ0aWNsZS5hcnRpY2xlTnI7XG4gIH1cblxuICBwcml2YXRlIGFkZEVtYWlsQWRkcmVzc1RvVHJhbnNhY3Rpb24oZW1haWxBZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UuZW1haWxBZGRyZXNzID0gZW1haWxBZGRyZXNzO1xuICB9XG5cbiAgcHJpdmF0ZSBDaGFyYWN0ZXJpc3RpY3NBbnN3ZXJOZWVkZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFyYWN0ZXJpc3RpY0Fuc3dlci5xdWVzdGlvbiA9IHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5jaGFyYWN0ZXJpc3RpYy5xdWVzdGlvbjtcbiAgICB0aGlzLmNoYXJhY3RlcmlzdGljQW5zd2VyLnRpdGxlID0gdGhpcy5uZXdBcnRpY2xlLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMuY2hhcmFjdGVyaXN0aWNBbnN3ZXIudmFsdWUgPSB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMuY2hhcmFjdGVyaXN0aWMudmFsdWU7XG4gICAgdGhpcy5jaGFyYWN0ZXJpc3RpY0Fuc3dlci5jaGFyYWN0ZXJpc3RpY3MgPSB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMuY2hhcmFjdGVyaXN0aWMudHJhbnNhY3Rpb25MaW5lQ2hhcmFjdGVyaXN0aWNDaG9pY2VzO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNoYXJhY3RlcmlzdGljQW5zd2VyLm9wZW4oKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgfSwgMTAwMCk7XG5cbiAgfVxuXG4gIHByaXZhdGUgX2dldExpbmVVdWlkQnlMaW5lTnIobGluZU5yOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mb1tdID0gdGhpcy5zZXJ2aWNlLmN1cnJlbnRMaW5lcy5maWx0ZXIodHJhbnNMaW5lcyA9PiB0cmFuc0xpbmVzLmxpbmVOciA9PT0gbGluZU5yKTtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb25MaW5lWzBdLnV1aWQ7XG4gIH1cblxuICBwcml2YXRlIF9nZXRUcmFuc2FjdGlvbkxpbmVJbmZvQnlJbmRleChpbmRleDogbnVtYmVyKTogVHJhbnNhY3Rpb25MaW5lSW5mbyB7XG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLnNlcnZpY2UuY3VycmVudExpbmVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5jdXJyZW50TGluZXNbaW5kZXhdXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
451
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcHBpbmctY2FydC1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50L3Nob3BwaW5nLWNhcnQvc2hvcHBpbmctY2FydC1tYW5hZ2VyL3Nob3BwaW5nLWNhcnQtbWFuYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUE2QixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUM5RSxPQUFPLEVBQWUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBR25GLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHdFQUF3RSxDQUFDO0FBQ3ZILE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBSW5HLE9BQU8sRUFBcUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOERBQThELENBQUM7QUFFL0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFHdEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBcUR4RSxNQUFNLE9BQU8sNEJBQTRCO0lBK0R2QyxZQUNTLE9BQTJCLEVBQzNCLGlCQUEwQyxFQUMxQyxhQUE0QixFQUM1QixrQkFBcUM7UUFIckMsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF5QjtRQUMxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBeEQ5QixpQkFBWSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBR2xFLGFBQVEsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUc5RCxpQkFBWSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBbUIzRSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLGtDQUE2QixHQUFZLEtBQUssQ0FBQztRQUMvQyxZQUFPLEdBQVcsb0NBQW9DLENBQUM7UUFHdkQsb0JBQWUsR0FBb0IsRUFBRSxDQUFDO1FBQ3RDLHFCQUFnQixHQUFXLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFFbEUsaUNBQTRCLEdBQWtDLEVBQUUsQ0FBQztRQUNqRSxzQ0FBaUMsR0FBVyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDO1FBQzVGLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFNcEIsdUJBQWtCLEdBQVcsRUFBRSxDQUFDO1FBRWhDLGdCQUFXLEdBQWdCLElBQUksQ0FBQztRQUUvQixtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFFcEMscUJBQWdCLEdBQW9CLEVBQUUsQ0FBQztRQUN2QyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBUTNDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLDZCQUE2QixHQUFHLEtBQUssQ0FBQztRQUM3QyxDQUFDLENBQUMsRUFFRixJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQXVELEVBQUUsRUFBRTtZQUN4RyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25ELENBQUMsQ0FBQyxFQUVKLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFxRixFQUFFLEVBQUU7WUFDeEksSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2RyxDQUFDLENBQUMsRUFFRixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQXNFLEVBQUUsRUFBRTtZQUN4SCxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwRixDQUFDLENBQUMsRUFFRixJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBNEMsRUFBRSxFQUFFO1lBQ25HLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRSxDQUFDLENBQUMsRUFFRixJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUN4RCxDQUFDLE1BQXFILEVBQUUsRUFBRTtZQUN4SCxJQUFJLENBQUMsNkJBQTZCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUNwRCxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9ELENBQUMsQ0FBQyxFQUVKLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxFQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFpQyxFQUFFLEVBQUU7WUFDdkcsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxFQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw4QkFBOEIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUMvRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNmLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFDLEVBQ25HLEVBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBQyxFQUNoRixFQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FDekUsQ0FBQztJQUVKLENBQUM7SUFsR0QsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFBVyx3QkFBd0I7UUFDakMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsd0JBQXdCLENBQUMsS0FBYztRQUNoRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUEwRkssUUFBUTs7WUFDWixJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsNkJBQTZCLEdBQUcsS0FBSyxDQUFDO1FBQzdDLENBQUM7S0FBQTtJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVZLFNBQVMsQ0FBQyxHQUFXLEVBQUUsTUFBYzs7WUFDaEQsTUFBTSxNQUFNLEdBQVksTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQztLQUFBO0lBRVksc0JBQXNCLENBQUMsR0FBVyxFQUFFLE1BQWMsRUFBRSxNQUFjLEVBQUUsYUFBOEI7O1lBQzdHLE1BQU0sTUFBTSxHQUFXLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RSxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQztLQUFBO0lBRVksbUJBQW1CLENBQUMsSUFBWSxFQUFFLE1BQWMsRUFBRSxhQUE4Qjs7WUFDM0YsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQzlELGFBQWEsS0FBSyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDN0QsYUFBYSxLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2lCQUM1RCxJQUFJLENBQUMsQ0FBQyxLQUE0QixFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3BDLENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO0tBQUE7SUFFWSxrQkFBa0IsQ0FBQyxTQUFpQixFQUFFLE9BQWU7O1lBQ2hFLElBQUksUUFBUSxHQUF3QixJQUFJLENBQUMsOEJBQThCLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDbEYsSUFBSSxNQUFNLEdBQXdCLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvRSxJQUFJLFdBQW1CLENBQUM7WUFDeEIsSUFBSSxXQUFtQixDQUFDO1lBRXhCLElBQUksU0FBUyxHQUFHLE9BQU8sRUFBRTtnQkFDdkIsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7YUFDN0I7WUFFRCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO2lCQUMzRSxJQUFJLENBQUMsQ0FBQyxLQUE0QixFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3BDLENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO0tBQUE7SUFFWSx5QkFBeUIsQ0FBQyxNQUFpRjs7WUFDdEgsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7S0FBQTtJQUVELDREQUE0RDtJQUMvQyxvQ0FBb0MsQ0FBQyxRQUFnQixFQUFFLFFBQWdCOztZQUNsRixNQUFNLE9BQU8sR0FBWSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xGLElBQUksT0FBTyxFQUFFO2dCQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDMUM7UUFDSCxDQUFDO0tBQUE7SUFFWSxnQkFBZ0IsQ0FBQyxJQUF5Qjs7WUFDckQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoQyxDQUFDO0tBQUE7SUFFWSxJQUFJOztZQUNmLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO2dCQUM5QixPQUFPO2FBQ1I7WUFDRCxNQUFNLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ3pDLENBQUM7S0FBQTtJQUVNLElBQUksQ0FBQyxTQUFpQjtRQUMzQixJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDO1FBQ3pELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFWSx5QkFBeUI7O1lBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUU3QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzFFO1lBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDL0IsQ0FBQztLQUFBO0lBRVkscUJBQXFCOztZQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFN0IsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNuRTtZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDckQ7WUFFRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxTQUFTLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQzthQUMzRDtZQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdEIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7cUJBQzVELElBQUksQ0FBQyxDQUFDLEtBQTRCLEVBQUUsRUFBRTtvQkFDckMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDO2FBQ047aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtvQkFDbEMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3lCQUN2SyxJQUFJLENBQUMsQ0FBQyxLQUE0QixFQUFFLEVBQUU7d0JBQ3JDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO29CQUNwQyxDQUFDLENBQUMsQ0FBQztpQkFDTjtxQkFBTTtvQkFDTCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQzt5QkFDakYsSUFBSSxDQUFDLENBQUMsS0FBNEIsRUFBRSxFQUFFO3dCQUNyQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztvQkFDcEMsQ0FBQyxDQUFDLENBQUM7aUJBQ047YUFDRjtZQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO1FBQy9CLENBQUM7S0FBQTtJQUVNLGtCQUFrQixDQUFDLElBQVM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUMzRSxDQUFDO0lBRVksaUNBQWlDLENBQUMsTUFBYzs7WUFDM0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLCtCQUErQixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNyTCxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztZQUM3QyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztpQkFDNUQsSUFBSSxDQUFDLENBQUMsS0FBNEIsRUFBRSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7S0FBQTtJQUVhLHNCQUFzQixDQUFDLFNBQWlCOztZQUNwRCxNQUFNLE1BQU0sR0FBWSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLDRCQUE0QixHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRyxDQUFDO0tBQUE7SUFFYSxpQkFBaUIsQ0FBQyxTQUFpQixDQUFDOztZQUNoRCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUNuRSxJQUFJLENBQUMsWUFBWSxFQUNqQixNQUFNLEVBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQzlCLEtBQUssRUFDTCxDQUFDLEVBQ0QsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxDQUFDLEtBQTRCLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDcEMsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7S0FBQTtJQUVhLHVCQUF1QixDQUFDLE1BQWMsRUFBRSxNQUFjLEVBQUUsYUFBOEI7O1lBQ2xHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQ25FLElBQUksQ0FBQyxZQUFZLEVBQ2pCLE1BQU0sRUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFDOUIsS0FBSyxFQUNMLGFBQWEsS0FBSyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDN0QsYUFBYSxLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2lCQUM1RCxJQUFJLENBQUMsQ0FBQyxLQUE0QixFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3BDLENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO0tBQUE7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO1lBQzFILE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1NBQ3REO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDO1FBQ3RFLElBQUksSUFBSSxDQUFDLHNCQUFzQixLQUFLLFNBQVMsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sa0NBQWtDO1FBQ3hDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRTtZQUNwRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsNkJBQTZCLEdBQUcsS0FBSyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVhLGNBQWM7O1lBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSwrQkFBK0IsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDckwsTUFBTSxpQkFBaUIsR0FBVyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDOUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUksTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM5RixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztpQkFDNUQsSUFBSSxDQUFDLENBQUMsS0FBNEIsRUFBRSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7S0FBQTtJQUVhLGdCQUFnQjs7WUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLCtCQUErQixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNyTCxNQUFNLGlCQUFpQixHQUFXLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM5RyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzdELE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2lCQUM1RCxJQUFJLENBQUMsQ0FBQyxLQUE0QixFQUFFLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztLQUFBO0lBRWEscUJBQXFCLENBQUMsYUFBcUI7O1lBQ3ZELElBQUksYUFBYSxLQUFLLGdFQUFnRSxFQUFFO2dCQUN0RixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQzthQUN6SDtZQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRCxDQUFDO0tBQUE7SUFFYSwyQkFBMkI7O1lBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JFO1lBRUQsTUFBTSxXQUFXLEdBQWtCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDM0gsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDO2FBQ2hDO1lBQ0QsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0tBQUE7SUFFYSwwQkFBMEI7O1lBQ3RDLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLEVBQUU7Z0JBQ2pDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN4RTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQzthQUMzQztRQUNILENBQUM7S0FBQTtJQUVjLGtCQUFrQixDQUFDLFFBQWdCOztZQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksK0JBQStCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3JMLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBRW5GLFFBQVEsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixFQUFFO2dCQUNyRCxLQUFLLGlCQUFpQixDQUFDLE9BQU8sQ0FBQztnQkFDL0IsS0FBSyxpQkFBaUIsQ0FBQyxTQUFTO29CQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDM0UsTUFBTTtnQkFDUixLQUFLLGlCQUFpQixDQUFDLG1CQUFtQjtvQkFDeEMsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQzVCLE1BQU07Z0JBQ1IsS0FBSyxpQkFBaUIsQ0FBQyxpQkFBaUI7b0JBQ3RDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO29CQUNyRCxNQUFNO2dCQUNSLEtBQUssaUJBQWlCLENBQUMsNEJBQTRCO29CQUNqRCxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUM5QixNQUFNO2dCQUNSLEtBQUssaUJBQWlCLENBQUMsNkJBQTZCO29CQUNsRCxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztvQkFDbkMsTUFBTTtnQkFDUixLQUFLLGlCQUFpQixDQUFDLElBQUksQ0FBQztnQkFDNUI7b0JBQ0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7b0JBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7b0JBQ3BDLE1BQU07YUFDVDtRQUNILENBQUM7S0FBQTtJQUVhLGtCQUFrQjs7WUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFO2dCQUNsRCxJQUFJLENBQUMsQ0FBQSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQSxFQUFFO29CQUMzQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztpQkFDNUM7YUFDRjtRQUNILENBQUM7S0FBQTtJQUVhLFlBQVksQ0FBQyxNQUFjOztZQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1FBQ2hELENBQUM7S0FBQTtJQUVPLDRCQUE0QixDQUFDLFlBQW9CO1FBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUMzQyxDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFDekYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztRQUM5RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQ25GLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxvQ0FBb0MsQ0FBQztRQUU1SCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLDRDQUE0QztRQUM5QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFWCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBYztRQUN6QyxNQUFNLGVBQWUsR0FBMEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQztRQUM1SCxPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVPLDhCQUE4QixDQUFDLEtBQWE7UUFDbEQsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDMUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUN4QztJQUNILENBQUM7OztZQW5mRixTQUFTLFNBQUM7Z0JBQ1QsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVDs7YUFFRjs7O1lBckVPLGtCQUFrQjtZQUdsQix1QkFBdUI7WUFRYSxhQUFhO1lBR2pELGlCQUFpQjs7OzhCQXlEdEIsU0FBUyxTQUFDLGlCQUFpQjs0QkFHM0IsU0FBUyxTQUFDLGVBQWU7bUNBR3pCLFNBQVMsU0FBQyxzQkFBc0I7MkJBR2hDLE1BQU07dUJBR04sTUFBTTsyQkFHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHtOdW1iZXJVdGlsc30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC91dGlscy9udW1iZXItdXRpbHNcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9uLCB0aHJvd0Vycm9yfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZVwiO1xuaW1wb3J0IHtDb21taXNzaW9uQ29kZVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9yZWZjb2RlL2NvbW1pc3Npb24tY29kZS10eXBlLmVudW1cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcbmltcG9ydCB7UmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWxpbmUtdHlwZS5lbnVtXCI7XG5pbXBvcnQge0NvRG9tYWluVmFsdWV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY28tZG9tYWluLXZhbHVlLmJvXCI7XG5pbXBvcnQge1RyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1hcnRpY2xlLXdhcmVob3VzZS5ib1wiO1xuaW1wb3J0IHtMaW5lT3BlcmF0aW9uU3RhdHVzfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xpbmUtb3BlcmF0aW9uLXN0YXR1cy5ib1wiO1xuaW1wb3J0IHtDb0RpYWxvZ0NvbXBvbmVudCwgQ29HcmlkQ29tcG9uZW50LCBQcm9tcHRTZXJ2aWNlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xuaW1wb3J0IHtQZW5kaW5nUmVhc29uVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3BlbmRpbmctcmVhc29uLXR5cGUuZW51bVwiO1xuaW1wb3J0IHtBcnRpY2xlRnVsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWZ1bGwtb2JqZWN0XCI7XG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7TGluZU9wZXJhdGlvblJlc3BvbnNlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2xpbmUtb3BlcmF0aW9uLXJlc3BvbnNlLmJvXCI7XG5pbXBvcnQge0NoYXJhY3RlcmlzdGljQW5zd2VyQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vY29yZS9jaGFyYWN0ZXJpc3RpYy1hbnN3ZXIvY2hhcmFjdGVyaXN0aWMtYW5zd2VyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtQb3NpdGlvbkdyaWRSb3d9IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL3Bvc2l0aW9uLWdyaWQtcm93LmVudW1cIjtcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiBcInNob3BwaW5nLWNhcnQtbWFuYWdlclwiLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxjby1kaWFsb2cgI3dhcmVob3VzZURpYWxvZ1xuICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwiaGlkZSgpXCJcbiAgICAgICAgICAgICAgIChvdmVybGF5Q2xpY2spPVwib25TdG9ja01hbmFnZXJDYW5jZWxDbGljaygpXCJcbiAgICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgaGVhZGVyPnt7ICdTVE9DS19OT1RJRklDQVRJT04nIHwgbG9jYWxpemUgfX08L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgICAgICA8Y28tZm9ybT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250ZW50XCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lc3NhZ2VcIiBjbGFzcz1cIm1lc3NhZ2UtZmllbGRcIiBbdGV4dENvbnRlbnRdPVwibWVzc2FnZSB8IGxvY2FsaXplXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWlzc2lvbi1maWVsZHNcIiBmeExheW91dD1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxjby1pbnB1dC1udW1iZXItcGlja2VyIGNsYXNzPVwiaG9yaXpvbnRhbFwiIFsobW9kZWwpXT1cImFtb3VudFwiIFttaW5dPVwiMFwiIGRlY2ltYWxzPVwiM1wiPjwvY28taW5wdXQtbnVtYmVyLXBpY2tlcj5cbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtY29tYm8tYm94IFsobW9kZWwpXT1cImNvbW1pc3Npb25Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NvdXJjZV09XCJjb21taXNzaW9uQ29kZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImNvbW1pc3Npb25GaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0NPTU1JU1NJT05fQ09ERScgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1jb21iby1ib3g+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxjby1ncmlkICN3YXJlaG91c2VHcmlkXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJ0cmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VzXCJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgW3BhZ2luZ0VuYWJsZWRdPVwiJ3RydWUnXCJcbiAgICAgICAgICAgICAgICAgIFttYXhOdW1iZXJPZlJvd3NdPVwiJzIwJ1wiXG4gICAgICAgICAgICAgICAgICAocm93c1NlbGVjdGVkKT1cImhhbmRsZVJvd3NTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9jby1ncmlkPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jby1mb3JtPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgZm9vdGVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNlbnRlclwiPlxuICAgICAgICAgICAgPGNvLWJ1dHRvbiBbbGFiZWxdPVwiJ09LJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cIm9uU3RvY2tNYW5hZ2VyT2tDbGljaygpXCI+PC9jby1idXR0b24+XG4gICAgICAgICAgICA8Y28tYnV0dG9uIFtsYWJlbF09XCInQ0FOQ0VMJyB8IGxvY2FsaXplXCIgKGNsaWNrKT1cIm9uU3RvY2tNYW5hZ2VyQ2FuY2VsQ2xpY2soKVwiPjwvY28tYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9jby1kaWFsb2c+XG5cbiAgICA8Y2hhcmFjdGVyaXN0aWMtYW5zd2VyXG4gICAgICAjY2hhcmFjdGVyaXN0aWNBbnN3ZXJcbiAgICAgIChva0NsaWNrKT1cImhhbmRsZUNoYXJhY3RlcmlzdGljQW5zd2VyT2tDbGljaygkZXZlbnQpXCJcbiAgICA+PC9jaGFyYWN0ZXJpc3RpYy1hbnN3ZXI+XG4gIGAsXG4gIHN0eWxlVXJsczogW1wiLi9zaG9wcGluZy1jYXJ0LW1hbmFnZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgU2hvcHBpbmdDYXJ0TWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChcIndhcmVob3VzZURpYWxvZ1wiKVxuICBwdWJsaWMgd2FyZWhvdXNlRGlhbG9nOiBDb0RpYWxvZ0NvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKFwid2FyZWhvdXNlR3JpZFwiKVxuICBwdWJsaWMgd2FyZWhvdXNlR3JpZDogQ29HcmlkQ29tcG9uZW50PGFueT47XG5cbiAgQFZpZXdDaGlsZChcImNoYXJhY3RlcmlzdGljQW5zd2VyXCIpXG4gIHB1YmxpYyBjaGFyYWN0ZXJpc3RpY0Fuc3dlcjogQ2hhcmFjdGVyaXN0aWNBbnN3ZXJDb21wb25lbnQ7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBsaW5lc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IG9wZW5DYXJ0OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBhcnRpY2xlQWRkZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgZ2V0IGFtb3VudE9mTGluZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTnVtYmVyVXRpbHMuTnJPckRlZmF1bHQodGhpcy5zZXJ2aWNlLmFydGljbGVBbW91bnQsIDApO1xuICB9XG5cbiAgcHVibGljIGdldCBzaG93Q2hhcmFjdGVyaXN0aWNEaWFsb2coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dDaGFyYWN0ZXJpc3RpYztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2hvd0NoYXJhY3RlcmlzdGljRGlhbG9nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0NoYXJhY3RlcmlzdGljID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgYnJhbmNoTnI6IHN0cmluZztcbiAgcHVibGljIG5ld0FydGljbGVOcjogc3RyaW5nO1xuICBwdWJsaWMgbmV3QXJ0aWNsZTogQXJ0aWNsZUZ1bGxPYmplY3Q7XG4gIHB1YmxpYyBzZWxlY3RlZFdhcmVob3VzZU5yOiBudW1iZXI7XG4gIHB1YmxpYyBhbW91bnQ6IG51bWJlcjtcbiAgcHVibGljIGlzUmV0dXJuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHdhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmcgPSBcIkNIRUNLX1dBUkVIT1VTRV9BTkRfQ09NTUlTU0lPTkNPREVcIjtcblxuICBwdWJsaWMgY29tbWlzc2lvbkNvZGU6IENvbW1pc3Npb25Db2RlVHlwZTtcbiAgcHVibGljIGNvbW1pc3Npb25Db2RlczogQ29Eb21haW5WYWx1ZVtdID0gW107XG4gIHB1YmxpYyBjb21taXNzaW9uRmllbGRzOiBPYmplY3QgPSB7IHRleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwiIH07XG5cbiAgcHVibGljIHRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXM6IFRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZVtdID0gW107XG4gIHB1YmxpYyB0cmFuc2FjdGlvbkFydGljbGVXYXJlaG91c2VGaWVsZHM6IE9iamVjdCA9IHsgdGV4dDogXCJ3YXJlaG91c2VEZXNjXCIsIHZhbHVlOiBcIndhcmVob3VzZU5yXCIgfTtcbiAgcHVibGljIGNvbHVtbnM6IGFueVtdID0gW107XG5cbiAgcHVibGljIGN1cnJlbnRQZW5kaW5nTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbztcbiAgcHVibGljIGN1cnJlbnRSZWFzb246IFJlc29sdmVQZW5kaW5nTGluZVJlYXNvblJlcXVlc3Q7XG4gIHB1YmxpYyBlZGl0aW5nTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbztcblxuICBwdWJsaWMgZGlhbG9nUHJvbXB0SGVhZGVyOiBzdHJpbmcgPSBcIlwiO1xuXG4gIHB1YmxpYyByb290RWxlbWVudDogSFRNTEVsZW1lbnQgPSBudWxsO1xuXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgY3VycmVudE9wZXJhdGlvblN0YXR1czogTGluZU9wZXJhdGlvblN0YXR1cztcbiAgcHJpdmF0ZSBfaW5PdXRDb2xsZWN0aW9uOiBDb0RvbWFpblZhbHVlW10gPSBbXTtcbiAgcHJpdmF0ZSBfb2tPckNhbmNlbENsaWNrOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3Nob3dDaGFyYWN0ZXJpc3RpYzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHVibGljIHRyYW5zYWN0aW9uRXZlbnRzOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZSxcbiAgICBwdWJsaWMgcHJvbXB0U2VydmljZTogUHJvbXB0U2VydmljZSxcbiAgICBwdWJsaWMgX2RpY3Rpb25hcnlTZXJ2aWNlOiBEaWN0aW9uYXJ5U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5zZXJ2aWNlLnRyYW5zYWN0aW9uVXBkYXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxpbmVzQ2hhbmdlZC5lbWl0KHRoaXMud2FpdEZvckxpbmVzQ2hhbmdlZFRvT3BlbkNhcnQpO1xuICAgICAgICB0aGlzLndhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0ID0gZmFsc2U7XG4gICAgICB9KSxcblxuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50cy5hZGRUb0NhcnRCeVNrdS5zdWJzY3JpYmUoKHBhcmFtczoge3NrdTogc3RyaW5nLCBhbW91bnQ6IG51bWJlciwgcG9wQ2FydDogYm9vbGVhbn0pID0+IHtcbiAgICAgICAgICB0aGlzLndhaXRGb3JMaW5lc0NoYW5nZWRUb09wZW5DYXJ0ID0gcGFyYW1zLnBvcENhcnQ7XG4gICAgICAgICAgdGhpcy5hZGRUb0NhcnQocGFyYW1zLnNrdSwgcGFyYW1zLmFtb3VudCkudGhlbigpO1xuICAgICAgICB9KSxcblxuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50cy5hZGRBcnRpY2xlTGluZUF0LnN1YnNjcmliZSgocGFyYW1zOiB7c2t1OiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93fSkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkQXJ0aWNsZUxpbmVUb0NhcnRBdChwYXJhbXMuc2t1LCBwYXJhbXMuYW1vdW50LCBwYXJhbXMubGluZU5yLCBwYXJhbXMuYmVmb3JlT3JBZnRlcikudGhlbigpO1xuICAgICAgfSksXG5cbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMuYWRkVGV4dExpbmVBdC5zdWJzY3JpYmUoKHBhcmFtczoge3RleHQ6IHN0cmluZywgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvd30pID0+IHtcbiAgICAgICAgdGhpcy5hZGRUZXh0TGluZVRvQ2FydEF0KHBhcmFtcy50ZXh0LCBwYXJhbXMubGluZU5yLCBwYXJhbXMuYmVmb3JlT3JBZnRlcikudGhlbigpO1xuICAgICAgfSksXG5cbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMuY2hhbmdlTGluZVNlcXVlbmNlLnN1YnNjcmliZSgocGFyYW1zOiB7ZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcn0pID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VMaW5lU2VxdWVuY2UocGFyYW1zLmZyb21JbmRleCwgcGFyYW1zLnRvSW5kZXgpLnRoZW4oKTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRzLmFkZFRvQ2FydEJ5U2VsZWN0b3JSZXN1bHQuc3Vic2NyaWJlKFxuICAgICAgICAocGFyYW1zOiB7c2VsZWN0b3JSZXN1bHQ6IHtnb29kSWQ6IG51bWJlciwgYmFzZUdvb2RJZDogbnVtYmVyLCBzZWxlY3RvckRhdGE6IGFueSwgcXVhbnRpdHk6IG51bWJlcn0sIHBvcENhcnQ6IGJvb2xlYW59KSA9PiB7XG4gICAgICAgICAgdGhpcy53YWl0Rm9yTGluZXNDaGFuZ2VkVG9PcGVuQ2FydCA9IHBhcmFtcy5wb3BDYXJ0O1xuICAgICAgICAgIHRoaXMuYWRkVG9DYXJ0QnlTZWxlY3RvclJlc3VsdChwYXJhbXMuc2VsZWN0b3JSZXN1bHQpLnRoZW4oKTtcbiAgICAgICAgfSksXG5cbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMub3BlblNob3BwaW5nQ2FydE1vZHVsZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm9wZW5DYXJ0LmVtaXQoZmFsc2UpO1xuICAgICAgfSksXG5cbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudHMuYWRkVXNlclJlbGF0aW9uU2hvcHBpbmdDYXJ0TW9kdWxlLnN1YnNjcmliZSgobG9naW46IHt1c2VyOiBzdHJpbmcsIHB3OiBzdHJpbmd9KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkVXNlclJlbGF0aW9uVG9UcmFuc2FjdGlvbkFuZExvZ2luKGxvZ2luLnVzZXIsIGxvZ2luLnB3KTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRzLmFkZE5ld1VzZXJUb1Nob3BwaW5nQ2FydE1vZHVsZS5zdWJzY3JpYmUoKGVtYWlsQWRkcmVzcykgPT4ge1xuICAgICAgICB0aGlzLmFkZEVtYWlsQWRkcmVzc1RvVHJhbnNhY3Rpb24oZW1haWxBZGRyZXNzKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuY29sdW1ucy5wdXNoKFxuICAgICAge2ZpZWxkOiBcIndhcmVob3VzZU5yXCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIldBUkVIT1VTRVwiKSwgYWxsb3dGaWx0ZXJpbmc6IGZhbHNlfSxcbiAgICAgIHtmaWVsZDogXCJ3YXJlaG91c2VEZXNjXCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIkRFU0NSSVBUSU9OXCIpfSxcbiAgICAgIHtmaWVsZDogXCJzdG9ja0Ftb3VudFwiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJTVE9DS1wiKX1cbiAgICApO1xuXG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNvbW1pc3Npb25Db2RlcyA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRDb21taXNzaW9uQ29kZXMoXCJOTFwiKTtcbiAgICB0aGlzLmxpbmVzQ2hhbmdlZC5lbWl0KHRoaXMud2FpdEZvckxpbmVzQ2hhbmdlZFRvT3BlbkNhcnQpO1xuICAgIHRoaXMud2FpdEZvckxpbmVzQ2hhbmdlZFRvT3BlbkNhcnQgPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMud2FyZWhvdXNlRGlhbG9nLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkVG9DYXJ0KHNrdTogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdvb2RJZDogbnVtYmVyICA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKHNrdSk7XG4gICAgYXdhaXQgdGhpcy5fbG9hZEFydGljbGUoZ29vZElkKTtcbiAgICBhd2FpdCB0aGlzLl9jcmVhdGVUcmFuc2FjdGlvbigpO1xuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUFkZEFydGljbGUoYW1vdW50KTtcbiAgICB0aGlzLmFydGljbGVBZGRlZC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkQXJ0aWNsZUxpbmVUb0NhcnRBdChza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3cpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBnb29kSWQ6IG51bWJlciA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKHNrdSk7XG4gICAgYXdhaXQgdGhpcy5fbG9hZEFydGljbGUoZ29vZElkKTtcbiAgICBhd2FpdCB0aGlzLl9jcmVhdGVUcmFuc2FjdGlvbigpO1xuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUFkZEFydGljbGVMaW5lQXQoYW1vdW50LCBsaW5lTnIsIGJlZm9yZU9yQWZ0ZXIpO1xuICAgIHRoaXMuYXJ0aWNsZUFkZGVkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRUZXh0TGluZVRvQ2FydEF0KHRleHQ6IHN0cmluZywgbGluZU5yOiBudW1iZXIsIGJlZm9yZU9yQWZ0ZXI6IFBvc2l0aW9uR3JpZFJvdyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2VydmljZS5hZGRUZXh0TGluZVRvVHJhbnNhY3Rpb24oMCwgdGV4dCwgMCwgZmFsc2UsIDAsXG4gICAgICBiZWZvcmVPckFmdGVyID09PSBQb3NpdGlvbkdyaWRSb3cuQmVmb3JlID8gbGluZU5yIDogdW5kZWZpbmVkLFxuICAgICAgYmVmb3JlT3JBZnRlciA9PT0gUG9zaXRpb25HcmlkUm93LkFmdGVyID8gbGluZU5yIDogdW5kZWZpbmVkKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4gdGhpcy5wcm9tcHRTZXJ2aWNlLnNob3dFcnJvcihlcnJvcikpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUxpbmVTZXF1ZW5jZShmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGZyb21MaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvID0gdGhpcy5fZ2V0VHJhbnNhY3Rpb25MaW5lSW5mb0J5SW5kZXgoZnJvbUluZGV4KVxuICAgIGxldCB0b0xpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8gPSB0aGlzLl9nZXRUcmFuc2FjdGlvbkxpbmVJbmZvQnlJbmRleCh0b0luZGV4KTtcbiAgICBsZXQgYWJvdmVMaW5lTnI6IG51bWJlcjtcbiAgICBsZXQgYmVsb3dMaW5lTnI6IG51bWJlcjtcblxuICAgIGlmIChmcm9tSW5kZXggPiB0b0luZGV4KSB7XG4gICAgICBhYm92ZUxpbmVOciA9IHRvTGluZS5saW5lTnI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJlbG93TGluZU5yID0gdG9MaW5lLmxpbmVOcjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuY2hhbmdlTGluZVNlcXVlbmNlKGZyb21MaW5lLnV1aWQsIGFib3ZlTGluZU5yLCBiZWxvd0xpbmVOcilcbiAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5faGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cygpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHRoaXMucHJvbXB0U2VydmljZS5zaG93RXJyb3IoZXJyb3IpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRUb0NhcnRCeVNlbGVjdG9yUmVzdWx0KHJlc3VsdDoge2dvb2RJZDogbnVtYmVyLCBiYXNlR29vZElkOiBudW1iZXIsIHNlbGVjdG9yRGF0YTogYW55LCBxdWFudGl0eTogbnVtYmVyfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX2xvYWRBcnRpY2xlKHJlc3VsdC5nb29kSWQpO1xuICAgIGF3YWl0IHRoaXMuX2NyZWF0ZVRyYW5zYWN0aW9uKCk7XG4gICAgYXdhaXQgdGhpcy5faGFuZGxlQWRkQXJ0aWNsZShyZXN1bHQucXVhbnRpdHkpO1xuICAgIHRoaXMuYXJ0aWNsZUFkZGVkLmVtaXQoKTtcbiAgfVxuXG4gIC8vIFRPRE8gcHVibGljIHVzZXIgbG9ncyBpbi4uLi4gaG93IHJlY29ubmVjdCB0aGUgQ29ubmVjdG9yP1xuICBwdWJsaWMgYXN5bmMgYWRkVXNlclJlbGF0aW9uVG9UcmFuc2FjdGlvbkFuZExvZ2luKHVzZXJOYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnNldFJlbGF0aW9uQnlVc2VyKHVzZXJOYW1lLCBwYXNzd29yZCk7XG4gICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50cy5sb2dnZWRJbi5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHNob3dTdG9ja01hbmFnZXIobGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2VsZWN0ZWRXYXJlaG91c2VOciA9IGxpbmUud2FyZWhvdXNlTnVtYmVyO1xuICAgIHRoaXMuYW1vdW50ID0gbGluZS5hbW91bnQ7XG4gICAgdGhpcy5jb21taXNzaW9uQ29kZSA9IGxpbmUuY29tbWlzc2lvbkNvZGU7XG4gICAgdGhpcy5zaG93KGxpbmUuYXJ0aWNsZU51bWJlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fb2tPckNhbmNlbENsaWNrKSB7XG4gICAgICB0aGlzLl9va09yQ2FuY2VsQ2xpY2sgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5vblN0b2NrTWFuYWdlckNhbmNlbENsaWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvdyhhcnRpY2xlTnI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3JlbG9hZERhdGFDb2xsZWN0aW9ucyhhcnRpY2xlTnIpLnRoZW4oKTtcblxuICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uO1xuICAgIHRoaXMud2FyZWhvdXNlR3JpZC5zZWxlY3RSb3codGhpcy5zZWxlY3RlZFdhcmVob3VzZU5yKTtcbiAgICB0aGlzLndhcmVob3VzZURpYWxvZy50YXJnZXRFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLndhcmVob3VzZURpYWxvZy5vcGVuKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgb25TdG9ja01hbmFnZXJDYW5jZWxDbGljaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9va09yQ2FuY2VsQ2xpY2sgPSB0cnVlO1xuICAgIHRoaXMud2FyZWhvdXNlRGlhbG9nLmNsb3NlKCk7XG5cbiAgICBpZiAodGhpcy5jdXJyZW50UmVhc29uKSB7XG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuY2FuY2VsQWRkVHJhbnNhY3Rpb25MaW5lKHRoaXMuY3VycmVudFJlYXNvbi5saW5lVXVpZCk7XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0aW5nTGluZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBvblN0b2NrTWFuYWdlck9rQ2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fb2tPckNhbmNlbENsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLndhcmVob3VzZURpYWxvZy5jbG9zZSgpO1xuXG4gICAgaWYgKHRoaXMuY29tbWlzc2lvbkNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jdXJyZW50UmVhc29uLmNvbW1pc3Npb25Db2RlID0gdGhpcy5jb21taXNzaW9uQ29kZS52YWx1ZU9mKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYW1vdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFJlYXNvbi5xdWFudGl0eSA9IHRoaXMuYW1vdW50LnZhbHVlT2YoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZFdhcmVob3VzZU5yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFJlYXNvbi53YXJlaG91c2VOciA9IHRoaXMuc2VsZWN0ZWRXYXJlaG91c2VOcjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXJyZW50UmVhc29uKSB7XG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHRoaXMuY3VycmVudFJlYXNvbilcbiAgICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5lZGl0aW5nTGluZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5hZGRUcmFuc2FjdGlvbkxpbmUoVHJhbnNhY3Rpb25MaW5lVHlwZS5BcnRpY2xlTGluZSwgdGhpcy5uZXdBcnRpY2xlTnIsIHRoaXMuYW1vdW50LCB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlTnIsIHRoaXMuY29tbWlzc2lvbkNvZGUsIHRoaXMuaXNSZXR1cm4sIDAsIDApXG4gICAgICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5jaGFuZ2VUcmFuc2FjdGlvbkxpbmVRdWFudGl0eSh0aGlzLmVkaXRpbmdMaW5lLnV1aWQsIHRoaXMuYW1vdW50KVxuICAgICAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0aW5nTGluZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVSb3dzU2VsZWN0ZWQocm93czogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFdhcmVob3VzZU5yID0gKHJvd3MuZmluZCh4ID0+IHggIT09IHVuZGVmaW5lZCkpLndhcmVob3VzZU5yO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZUNoYXJhY3RlcmlzdGljQW5zd2VyT2tDbGljayhhbnN3ZXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY3VycmVudFJlYXNvbiA9IG5ldyBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy51dWlkLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbiwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKTtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24udGV4dHVhbFVzZXJJbnB1dCA9IGFuc3dlcjtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHRoaXMuY3VycmVudFJlYXNvbilcbiAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfcmVsb2FkRGF0YUNvbGxlY3Rpb25zKGFydGljbGVOcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZ29vZElkOiBudW1iZXIgID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldEdvb2RJZEZyb21BcnRpY2xlTnIoYXJ0aWNsZU5yKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uQXJ0aWNsZVdhcmVob3VzZXMgPSBhd2FpdCB0aGlzLnNlcnZpY2UuZ2V0VHJhbnNhY3Rpb25BcnRpY2xlV2FyZWhvdXNlcyhnb29kSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlQWRkQXJ0aWNsZShhbW91bnQ6IG51bWJlciA9IDEpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuYWRkVHJhbnNhY3Rpb25MaW5lKFRyYW5zYWN0aW9uTGluZVR5cGUuQXJ0aWNsZUxpbmUsXG4gICAgICB0aGlzLm5ld0FydGljbGVOcixcbiAgICAgIGFtb3VudCxcbiAgICAgIHRoaXMubmV3QXJ0aWNsZS5zdGFuZGFyZFdhcmVIb3VzZSxcbiAgICAgIHRoaXMubmV3QXJ0aWNsZS5jb21taXNzaW9uQ29kZSxcbiAgICAgIGZhbHNlLFxuICAgICAgMCxcbiAgICAgIDApXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB0aGlzLnByb21wdFNlcnZpY2Uuc2hvd0Vycm9yKGVycm9yKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVBZGRBcnRpY2xlTGluZUF0KGFtb3VudDogbnVtYmVyLCBsaW5lTnI6IG51bWJlciwgYmVmb3JlT3JBZnRlcjogUG9zaXRpb25HcmlkUm93KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmFkZFRyYW5zYWN0aW9uTGluZShUcmFuc2FjdGlvbkxpbmVUeXBlLkFydGljbGVMaW5lLFxuICAgICAgdGhpcy5uZXdBcnRpY2xlTnIsXG4gICAgICBhbW91bnQsXG4gICAgICB0aGlzLm5ld0FydGljbGUuc3RhbmRhcmRXYXJlSG91c2UsXG4gICAgICB0aGlzLm5ld0FydGljbGUuY29tbWlzc2lvbkNvZGUsXG4gICAgICBmYWxzZSxcbiAgICAgIGJlZm9yZU9yQWZ0ZXIgPT09IFBvc2l0aW9uR3JpZFJvdy5CZWZvcmUgPyBsaW5lTnIgOiB1bmRlZmluZWQsXG4gICAgICBiZWZvcmVPckFmdGVyID09PSBQb3NpdGlvbkdyaWRSb3cuQWZ0ZXIgPyBsaW5lTnIgOiB1bmRlZmluZWQpXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2hhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB0aGlzLnByb21wdFNlcnZpY2Uuc2hvd0Vycm9yKGVycm9yKSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRXYXJlSG91c2VOb0Zyb21BcnRpY2xlKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMubmV3QXJ0aWNsZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMubmV3QXJ0aWNsZS5zdG9ja0xvY2F0aW9ucyAhPT0gdW5kZWZpbmVkICYmIHRoaXMubmV3QXJ0aWNsZS5zdG9ja0xvY2F0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLm5ld0FydGljbGUuc3RvY2tMb2NhdGlvbnNbMF0ud2FyZWhvdXNlTnI7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNMaW5lT3BlcmF0aW9uU3RhdHVzKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cyA9IHRoaXMuc2VydmljZS5jdXJyZW50TGluZU9wZXJhdGlvblN0YXR1cztcbiAgICBpZiAodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0lmU2hvcHBpbmdDYXJ0TmVlZHNUb0Rpc3BsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24gJiYgdGhpcy5zZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbk5yKSB7XG4gICAgICB0aGlzLmxpbmVzQ2hhbmdlZC5lbWl0KHRoaXMud2FpdEZvckxpbmVzQ2hhbmdlZFRvT3BlbkNhcnQpO1xuICAgICAgdGhpcy53YWl0Rm9yTGluZXNDaGFuZ2VkVG9PcGVuQ2FydCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2NvbmZpcm1BY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jdXJyZW50UmVhc29uID0gbmV3IFJlc29sdmVQZW5kaW5nTGluZVJlYXNvblJlcXVlc3QodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnV1aWQsIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpO1xuICAgIGNvbnN0IHBlbmRpbmdSZWFzb25UZXh0OiBzdHJpbmcgPSBhd2FpdCB0aGlzLl9nZXRQZW5kaW5nUmVhc29uVGV4dCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbik7XG4gICAgdGhpcy5jdXJyZW50UmVhc29uLmNvbmZpcm1hdGlvbiAgPSBhd2FpdCB0aGlzLnByb21wdFNlcnZpY2Uuc2hvd1llc05vKHBlbmRpbmdSZWFzb25UZXh0LCBcIiBcIik7XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24pXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLl9oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3Nob3dJbmZvcm1hdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24gPSBuZXcgUmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMudXVpZCwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24sIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uVHlwZSk7XG4gICAgY29uc3QgcGVuZGluZ1JlYXNvblRleHQ6IHN0cmluZyA9IGF3YWl0IHRoaXMuX2dldFBlbmRpbmdSZWFzb25UZXh0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uKTtcbiAgICBhd2FpdCB0aGlzLnByb21wdFNlcnZpY2Uuc2hvd09rTW9kYWwocGVuZGluZ1JlYXNvblRleHQsIFwiIFwiKTtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHRoaXMuY3VycmVudFJlYXNvbilcbiAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZ2V0UGVuZGluZ1JlYXNvblRleHQocGVuZGluZ1JlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAocGVuZGluZ1JlYXNvbiA9PT0gXCJBUlRJQ0xFX0lTX0RJU0NPTlRJTlVFRF9ET19ZT1VfV0FOVF9UT19DT05USU5VRV9QTEVBU0VfQ09ORklSTVwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiQVJUSUNMRV9JTl9PVVRfQ09MTEVDVElPTlwiKS5yZXBsYWNlKFwifH5cIiwgYXdhaXQgdGhpcy5nZXRJbk91dENvbGxlY3Rpb25PZkFydGljbGUoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQocGVuZGluZ1JlYXNvbik7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEluT3V0Q29sbGVjdGlvbk9mQXJ0aWNsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghdGhpcy5faW5PdXRDb2xsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgdGhpcy5faW5PdXRDb2xsZWN0aW9uID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldEluT3V0Q29sbGVjdGlvbihcIk5MXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGRvbWFpblZhbHVlOiBDb0RvbWFpblZhbHVlID0gdGhpcy5faW5PdXRDb2xsZWN0aW9uLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmNvZGUgPT09IHRoaXMubmV3QXJ0aWNsZS5pbk91dENvbGxlY3Rpb24pO1xuICAgIGlmIChkb21haW5WYWx1ZSkge1xuICAgICAgcmV0dXJuIGRvbWFpblZhbHVlLmRlc2NyaXB0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2hhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX2lzTGluZU9wZXJhdGlvblN0YXR1cygpKSB7XG4gICAgICBhd2FpdCB0aGlzLl9oYW5kbGVQZW5kaW5nTGluZSh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMudXVpZCkudGhlbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jaGVja0lmU2hvcHBpbmdDYXJ0TmVlZHNUb0Rpc3BsYXkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlICBhc3luYyBfaGFuZGxlUGVuZGluZ0xpbmUobGluZVV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY3VycmVudFJlYXNvbiA9IG5ldyBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy51dWlkLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbiwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKTtcbiAgICB0aGlzLmN1cnJlbnRQZW5kaW5nTGluZSA9IHRoaXMuc2VydmljZS5jdXJyZW50TGluZXMuZmluZChsID0+IGwudXVpZCA9PT0gbGluZVV1aWQpO1xuXG4gICAgc3dpdGNoICh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpIHtcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQUJPUlRFRDpcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ0FOQ0VMTEVEOlxuICAgICAgICB0aGlzLnNlcnZpY2UuY2FuY2VsQWRkVHJhbnNhY3Rpb25MaW5lKHRoaXMuY3VycmVudFBlbmRpbmdMaW5lLnV1aWQpLnRoZW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkNPTkZJUk1BVElPTl9ORUVERUQ6XG4gICAgICAgIGF3YWl0IHRoaXMuX2NvbmZpcm1BY3Rpb24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLklOVkFMSURfTE9HSVNUSUNTOlxuICAgICAgICBhd2FpdCB0aGlzLnNob3dTdG9ja01hbmFnZXIodGhpcy5jdXJyZW50UGVuZGluZ0xpbmUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuTk9OX0NSSVRJQ0FMX0RJU0NPTlRJTlVBVElPTjpcbiAgICAgICAgYXdhaXQgdGhpcy5fc2hvd0luZm9ybWF0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5DSEFSQUNURVJJU1RJQ1NfQU5TV0VSX05FRURFRDpcbiAgICAgICAgdGhpcy5DaGFyYWN0ZXJpc3RpY3NBbnN3ZXJOZWVkZWQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLk5PTkU6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmN1cnJlbnRSZWFzb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY3VycmVudFBlbmRpbmdMaW5lID0gdW5kZWZpbmVkO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9jcmVhdGVUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuc2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25Ocikge1xuICAgICAgaWYgKCFhd2FpdCB0aGlzLnNlcnZpY2UuY3JlYXRlVHJhbnNhY3Rpb24oKSkge1xuICAgICAgICB0aHJvd0Vycm9yKFwiRmFpbGVkIHRvIGNyZWF0ZSB0cmFuc2FjdGlvblwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9sb2FkQXJ0aWNsZShnb29kSWQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubmV3QXJ0aWNsZSA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRBcnRpY2xlRnVsbE9iamVjdChnb29kSWQpO1xuICAgIHRoaXMubmV3QXJ0aWNsZU5yID0gdGhpcy5uZXdBcnRpY2xlLmFydGljbGVOcjtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRW1haWxBZGRyZXNzVG9UcmFuc2FjdGlvbihlbWFpbEFkZHJlc3M6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VydmljZS5lbWFpbEFkZHJlc3MgPSBlbWFpbEFkZHJlc3M7XG4gIH1cblxuICBwcml2YXRlIENoYXJhY3RlcmlzdGljc0Fuc3dlck5lZWRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYXJhY3RlcmlzdGljQW5zd2VyLnF1ZXN0aW9uID0gdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLmNoYXJhY3RlcmlzdGljLnF1ZXN0aW9uO1xuICAgIHRoaXMuY2hhcmFjdGVyaXN0aWNBbnN3ZXIudGl0bGUgPSB0aGlzLm5ld0FydGljbGUuZGVzY3JpcHRpb247XG4gICAgdGhpcy5jaGFyYWN0ZXJpc3RpY0Fuc3dlci52YWx1ZSA9IHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5jaGFyYWN0ZXJpc3RpYy52YWx1ZTtcbiAgICB0aGlzLmNoYXJhY3RlcmlzdGljQW5zd2VyLmNoYXJhY3RlcmlzdGljcyA9IHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5jaGFyYWN0ZXJpc3RpYy50cmFuc2FjdGlvbkxpbmVDaGFyYWN0ZXJpc3RpY0Nob2ljZXM7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyaXN0aWNBbnN3ZXIub3BlbigpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICB9LCAxMDAwKTtcblxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TGluZVV1aWRCeUxpbmVOcihsaW5lTnI6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25MaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvW10gPSB0aGlzLnNlcnZpY2UuY3VycmVudExpbmVzLmZpbHRlcih0cmFuc0xpbmVzID0+IHRyYW5zTGluZXMubGluZU5yID09PSBsaW5lTnIpO1xuICAgIHJldHVybiB0cmFuc2FjdGlvbkxpbmVbMF0udXVpZDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRyYW5zYWN0aW9uTGluZUluZm9CeUluZGV4KGluZGV4OiBudW1iZXIpOiBUcmFuc2FjdGlvbkxpbmVJbmZvIHtcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuc2VydmljZS5jdXJyZW50TGluZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmN1cnJlbnRMaW5lc1tpbmRleF1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|