@jsprismarine/prismarine 0.2.0 → 0.3.0
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/CHANGELOG.md +10 -0
- package/dist/Console.cjs.js +2 -2
- package/dist/Console.d.ts +1 -1
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.es.js +2 -2
- package/dist/Player.cjs.js +1 -1
- package/dist/Player.es.js +1 -1
- package/dist/{Protocol-C1DcF_Iw.cjs → Protocol-BVaFul30.cjs} +2 -2
- package/dist/{Protocol-9T3wX43U.js → Protocol-D9dzQTbF.js} +2 -2
- package/dist/Server-DAXmO2Rm.js +1864 -0
- package/dist/Server-nY-WO-m_.cjs +1886 -0
- package/dist/Server.cjs.js +1 -1
- package/dist/Server.d.ts.map +1 -1
- package/dist/Server.es.js +1 -1
- package/dist/block/Block.cjs.js +2 -2
- package/dist/block/Block.es.js +2 -2
- package/dist/block/blocks/Bookshelf.d.ts +1 -1
- package/dist/block/blocks/CoalOre.d.ts +1 -1
- package/dist/block/blocks/Gravel.d.ts +1 -1
- package/dist/block/blocks/WhiteBed.d.ts +1 -1
- package/dist/chat/ChatManager.cjs.js +1 -1
- package/dist/chat/ChatManager.d.ts.map +1 -1
- package/dist/chat/ChatManager.es.js +1 -1
- package/dist/command/Command.cjs.js +2 -2
- package/dist/command/Command.es.js +2 -2
- package/dist/command/CommandArguments.cjs.js +1 -1
- package/dist/command/CommandArguments.es.js +1 -1
- package/dist/command/CommandManager.cjs.js +2 -2
- package/dist/command/CommandManager.es.js +2 -2
- package/dist/command/Commands.cjs.js +1 -1
- package/dist/command/Commands.es.js +1 -1
- package/dist/command/index.cjs.js +1 -1
- package/dist/command/index.es.js +1 -1
- package/dist/command/vanilla/BanCommand.cjs.js +1 -1
- package/dist/command/vanilla/BanCommand.es.js +1 -1
- package/dist/command/vanilla/DeopCommand.cjs.js +1 -1
- package/dist/command/vanilla/DeopCommand.es.js +1 -1
- package/dist/command/vanilla/ExecuteCommand.cjs.js +1 -1
- package/dist/command/vanilla/ExecuteCommand.es.js +1 -1
- package/dist/command/vanilla/GamemodeCommand.cjs.js +1 -1
- package/dist/command/vanilla/GamemodeCommand.es.js +1 -1
- package/dist/command/vanilla/KickCommand.cjs.js +1 -1
- package/dist/command/vanilla/KickCommand.es.js +1 -1
- package/dist/command/vanilla/OpCommand.cjs.js +1 -1
- package/dist/command/vanilla/OpCommand.es.js +1 -1
- package/dist/command/vanilla/PardonCommand.cjs.js +1 -1
- package/dist/command/vanilla/PardonCommand.es.js +1 -1
- package/dist/command/vanilla/SummonCommand.cjs.js +1 -1
- package/dist/command/vanilla/SummonCommand.es.js +1 -1
- package/dist/command/vanilla/TpCommand.cjs.js +1 -1
- package/dist/command/vanilla/TpCommand.es.js +1 -1
- package/dist/config/ConfigBuilder.cjs.js +12 -4
- package/dist/config/ConfigBuilder.d.ts.map +1 -1
- package/dist/config/ConfigBuilder.es.js +12 -4
- package/dist/entity/Attribute.cjs.js +1 -1
- package/dist/entity/Attribute.d.ts.map +1 -1
- package/dist/entity/Attribute.es.js +1 -1
- package/dist/entity/Entity.cjs.js +4 -3
- package/dist/entity/Entity.d.ts.map +1 -1
- package/dist/entity/Entity.es.js +4 -3
- package/dist/entity/Metadata.cjs.js +1 -1
- package/dist/entity/Metadata.d.ts.map +1 -1
- package/dist/entity/Metadata.es.js +1 -1
- package/dist/events/EventManager.cjs.js +1 -1
- package/dist/events/EventManager.d.ts.map +1 -1
- package/dist/events/EventManager.es.js +1 -1
- package/dist/form/Form.cjs.js +2 -2
- package/dist/form/Form.d.ts +1 -1
- package/dist/form/Form.d.ts.map +1 -1
- package/dist/form/Form.es.js +2 -2
- package/dist/form/FormManager.cjs.js +1 -1
- package/dist/form/FormManager.d.ts.map +1 -1
- package/dist/form/FormManager.es.js +1 -1
- package/dist/form/IForm.d.ts.map +1 -1
- package/dist/form/ModalForm.cjs.js +1 -1
- package/dist/form/ModalForm.d.ts.map +1 -1
- package/dist/form/ModalForm.es.js +1 -1
- package/dist/{index-D7ZMTxc2.cjs → index-CVGv9HUF.cjs} +2 -2
- package/dist/{index-B3UWpR-P.js → index-O6jPg9jt.js} +2 -2
- package/dist/index.cjs.js +3 -3
- package/dist/index.es.js +3 -3
- package/dist/inventory/HumanInventory.cjs.js +1 -1
- package/dist/inventory/HumanInventory.d.ts.map +1 -1
- package/dist/inventory/HumanInventory.es.js +1 -1
- package/dist/inventory/Inventory.cjs.js +1 -1
- package/dist/inventory/Inventory.d.ts.map +1 -1
- package/dist/inventory/Inventory.es.js +1 -1
- package/dist/inventory/WindowManager.cjs.js +1 -1
- package/dist/inventory/WindowManager.d.ts.map +1 -1
- package/dist/inventory/WindowManager.es.js +1 -1
- package/dist/item/Armor.cjs.js +1 -1
- package/dist/item/Armor.d.ts +1 -1
- package/dist/item/Armor.d.ts.map +1 -1
- package/dist/item/Armor.es.js +1 -1
- package/dist/item/Item.cjs.js +2 -2
- package/dist/item/Item.es.js +2 -2
- package/dist/item/ItemManager.cjs.js +2 -2
- package/dist/item/ItemManager.d.ts +2 -2
- package/dist/item/ItemManager.d.ts.map +1 -1
- package/dist/item/ItemManager.es.js +2 -2
- package/dist/item/TieredTool.cjs.js +1 -1
- package/dist/item/TieredTool.d.ts.map +1 -1
- package/dist/item/TieredTool.es.js +1 -1
- package/dist/item/Tool.cjs.js +1 -1
- package/dist/item/Tool.d.ts +1 -1
- package/dist/item/Tool.d.ts.map +1 -1
- package/dist/item/Tool.es.js +1 -1
- package/dist/network/ClientConnection.cjs.js +1 -1
- package/dist/network/ClientConnection.d.ts +1 -1
- package/dist/network/ClientConnection.d.ts.map +1 -1
- package/dist/network/ClientConnection.es.js +1 -1
- package/dist/network/Handlers.cjs.js +1 -1
- package/dist/network/Handlers.es.js +1 -1
- package/dist/network/MinecraftSession.cjs.js +1 -1
- package/dist/network/MinecraftSession.d.ts +1 -1
- package/dist/network/MinecraftSession.d.ts.map +1 -1
- package/dist/network/MinecraftSession.es.js +1 -1
- package/dist/network/NetworkUtil.cjs.js +1 -1
- package/dist/network/NetworkUtil.d.ts.map +1 -1
- package/dist/network/NetworkUtil.es.js +1 -1
- package/dist/network/PacketRegistry.cjs.js +1 -1
- package/dist/network/PacketRegistry.d.ts +6 -6
- package/dist/network/PacketRegistry.d.ts.map +1 -1
- package/dist/network/PacketRegistry.es.js +1 -1
- package/dist/network/PlayerSession.cjs.js +1 -1
- package/dist/network/PlayerSession.d.ts.map +1 -1
- package/dist/network/PlayerSession.es.js +1 -1
- package/dist/network/Protocol.cjs.js +1 -1
- package/dist/network/Protocol.es.js +1 -1
- package/dist/network/handler/LoginHandler.cjs.js +1 -1
- package/dist/network/handler/LoginHandler.es.js +1 -1
- package/dist/permission/PermissionManager.cjs.js +4 -4
- package/dist/permission/PermissionManager.d.ts +1 -1
- package/dist/permission/PermissionManager.d.ts.map +1 -1
- package/dist/permission/PermissionManager.es.js +4 -4
- package/dist/plugin/PluginFile.cjs.js +1 -1
- package/dist/plugin/PluginFile.d.ts.map +1 -1
- package/dist/plugin/PluginFile.es.js +1 -1
- package/dist/plugin/PluginManager.cjs.js +5 -4
- package/dist/plugin/PluginManager.d.ts +2 -2
- package/dist/plugin/PluginManager.d.ts.map +1 -1
- package/dist/plugin/PluginManager.es.js +5 -4
- package/dist/query/QueryManager.cjs.js +1 -1
- package/dist/query/QueryManager.es.js +1 -1
- package/dist/utils/Logger.cjs.js +49 -38
- package/dist/utils/Logger.d.ts +4 -1
- package/dist/utils/Logger.d.ts.map +1 -1
- package/dist/utils/Logger.es.js +49 -38
- package/dist/utils/ParseTildeCaretNotation.cjs.js +1 -1
- package/dist/utils/ParseTildeCaretNotation.d.ts.map +1 -1
- package/dist/utils/ParseTildeCaretNotation.es.js +1 -1
- package/dist/utils/Timer.cjs.js +1 -1
- package/dist/utils/Timer.d.ts.map +1 -1
- package/dist/utils/Timer.es.js +1 -1
- package/dist/utils/UUID.cjs.js +2 -2
- package/dist/utils/UUID.es.js +2 -2
- package/dist/world/BaseGenerator.cjs.js +1 -1
- package/dist/world/BaseGenerator.d.ts.map +1 -1
- package/dist/world/BaseGenerator.es.js +1 -1
- package/dist/world/BlockPosition.cjs.js +1 -1
- package/dist/world/BlockPosition.d.ts.map +1 -1
- package/dist/world/BlockPosition.es.js +1 -1
- package/dist/world/GameruleManager.cjs.js +4 -4
- package/dist/world/GameruleManager.d.ts +3 -3
- package/dist/world/GameruleManager.d.ts.map +1 -1
- package/dist/world/GameruleManager.es.js +4 -4
- package/dist/world/Generator.d.ts.map +1 -1
- package/dist/world/WorldManager.cjs.js +3 -7
- package/dist/world/WorldManager.d.ts +1 -1
- package/dist/world/WorldManager.d.ts.map +1 -1
- package/dist/world/WorldManager.es.js +3 -7
- package/package.json +5 -5
- package/dist/Server-AfmPsq74.cjs +0 -1884
- package/dist/Server-Dyy9OCM8.js +0 -1862
|
@@ -225,4 +225,4 @@ class AttributeManager {
|
|
|
225
225
|
exports.Attribute = Attribute;
|
|
226
226
|
exports.AttributeIds = AttributeIds;
|
|
227
227
|
exports.default = AttributeManager;
|
|
228
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0cmlidXRlLmNqcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudGl0eS9BdHRyaWJ1dGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpbmFyeVN0cmVhbSBmcm9tICdAanNwcmlzbWFyaW5lL2pzYmluYXJ5dXRpbHMnO1xuaW1wb3J0IE1jcGVVdGlsIGZyb20gJy4uL25ldHdvcmsvTmV0d29ya1V0aWwnO1xuXG5leHBvcnQgY29uc3QgQXR0cmlidXRlSWRzID0ge1xuICAgIEFic29ycHRpb246ICdtaW5lY3JhZnQ6YWJzb3JwdGlvbicsXG4gICAgUGxheWVyU2F0dXJhdGlvbjogJ21pbmVjcmFmdDpwbGF5ZXIuc2F0dXJhdGlvbicsXG4gICAgUGxheWVyRXhoYXVzdGlvbjogJ21pbmVjcmFmdDpwbGF5ZXIuZXhoYXVzdGlvbicsXG4gICAgS25vY2tiYWNrUmVzaXN0ZW5jZTogJ21pbmVjcmFmdDprbm9ja2JhY2tfcmVzaXN0YW5jZScsXG4gICAgSGVhbHRoOiAnbWluZWNyYWZ0OmhlYWx0aCcsXG4gICAgTW92ZW1lbnQ6ICdtaW5lY3JhZnQ6bW92ZW1lbnQnLFxuICAgIEZvbGxvd1JhbmdlOiAnbWluZWNyYWZ0OmZvbGxvd19yYW5nZScsXG4gICAgUGxheWVySHVuZ2VyOiAnbWluZWNyYWZ0OnBsYXllci5odW5nZXInLFxuICAgIEF0dGFja0RhbWFnZTogJ21pbmVjcmFmdDphdHRhY2tfZGFtYWdlJyxcbiAgICBQbGF5ZXJMZXZlbDogJ21pbmVjcmFmdDpwbGF5ZXIubGV2ZWwnLFxuICAgIFBsYXllckV4cGVyaWVuY2U6ICdtaW5lY3JhZnQ6cGxheWVyLmV4cGVyaWVuY2UnLFxuICAgIFVuZGVyd2F0ZXJNb3ZlbWVudDogJ21pbmVjcmFmdDp1bmRlcndhdGVyX21vdmVtZW50JyxcbiAgICBMdWNrOiAnbWluZWNyYWZ0Omx1Y2snLFxuICAgIEZhbGxEYW1hZ2U6ICdtaW5lY3JhZnQ6ZmFsbF9kYW1hZ2UnLFxuICAgIEhvcnNlSnVtcFN0cmVuZ3RoOiAnbWluZWNyYWZ0OmhvcnNlLmp1bXBfc3RyZW5ndGgnLFxuICAgIFpvbWJpZVNwYXduUmVpbmZvcmNlbWVudHM6ICdtaW5lY3JhZnQ6em9tYmllLnNwYXduX3JlaW5mb3JjZW1lbnRzJyxcbiAgICBMYXZhTW92ZW1lbnQ6ICdtaW5lY3JhZnQ6bGF2YV9tb3ZlbWVudCdcbn07XG5cbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWluOiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXg6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBDbGFzcyB1c2VkIHRvIHN0b3JlIEF0dHJpYnV0ZSBkYXRhLlxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgLSBBdHRyaWJ1dGUgaWRlbnRpZmllclxuICAgICAqIEBwYXJhbSBtaW4gLSBBdHRyaWJ1dGUgbWluaW11bSB2YWx1ZVxuICAgICAqIEBwYXJhbSBtYXggLSBBdHRyaWJ1dGUgbWF4aW11bSB2YWx1ZVxuICAgICAqIEBwYXJhbSBkZWYgLSBBdHRyaWJ1dGUgZGVmYXVsdCB2YWx1ZVxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIEF0dHJpYnV0ZSBjdXJyZW50IHZhbHVlXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgbWluLFxuICAgICAgICBtYXgsXG4gICAgICAgIGRlZixcbiAgICAgICAgdmFsdWVcbiAgICB9OiB7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgbWluOiBudW1iZXI7XG4gICAgICAgIG1heDogbnVtYmVyO1xuICAgICAgICBkZWY6IG51bWJlcjtcbiAgICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICB9KSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMubWluID0gbWluO1xuICAgICAgICB0aGlzLm1heCA9IG1heDtcbiAgICAgICAgdGhpcy5kZWZhdWx0ID0gZGVmO1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIG5ldHdvcmtTZXJpYWxpemUoc3RyZWFtOiBCaW5hcnlTdHJlYW0pOiB2b2lkIHtcbiAgICAgICAgc3RyZWFtLndyaXRlRmxvYXRMRSh0aGlzLm1pbik7XG4gICAgICAgIHN0cmVhbS53cml0ZUZsb2F0TEUodGhpcy5tYXgpO1xuICAgICAgICBzdHJlYW0ud3JpdGVGbG9hdExFKHRoaXMudmFsdWUpO1xuICAgICAgICBzdHJlYW0ud3JpdGVGbG9hdExFKHRoaXMuZGVmYXVsdCk7XG4gICAgICAgIE1jcGVVdGlsLndyaXRlU3RyaW5nKHN0cmVhbSwgdGhpcy5uYW1lKTtcbiAgICAgICAgc3RyZWFtLndyaXRlVW5zaWduZWRWYXJJbnQoMCk7IC8vIFRPRE86IG1vZGlmaWVyIGNvdW50XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBuZXR3b3JrRGVzZXJpYWxpemUoc3RyZWFtOiBCaW5hcnlTdHJlYW0pOiBBdHRyaWJ1dGUge1xuICAgICAgICBjb25zdCBhdHRyID0gbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICBtaW46IHN0cmVhbS5yZWFkRmxvYXRMRSgpLFxuICAgICAgICAgICAgbWF4OiBzdHJlYW0ucmVhZEZsb2F0TEUoKSxcbiAgICAgICAgICAgIHZhbHVlOiBzdHJlYW0ucmVhZEZsb2F0TEUoKSxcbiAgICAgICAgICAgIGRlZjogc3RyZWFtLnJlYWRGbG9hdExFKCksXG4gICAgICAgICAgICBuYW1lOiBNY3BlVXRpbC5yZWFkU3RyaW5nKHN0cmVhbSlcbiAgICAgICAgfSk7XG4gICAgICAgIHN0cmVhbS5yZWFkVW5zaWduZWRWYXJJbnQoKTsgLy8gVE9ETzogc2tpcCBmb3Igbm93XG4gICAgICAgIHJldHVybiBhdHRyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1pbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5taW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1heCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERlZmF1bHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxufVxuXG5jb25zdCBNQVhfRkxPQVQzMiA9IDMuNDAyODIzNDY2Mzg1Mjg4NmUzODtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF0dHJpYnV0ZU1hbmFnZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXR0cmlidXRlczogQXR0cmlidXRlW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBsaXN0IG9mIGRlZmF1bHQgYXR0cmlidXRlcyB0byBzZW5kIHRoZSBmaXJzdCB0aW1lIGEgcGxheWVyIHNwYXducy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdHMoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuQWJzb3JwdGlvbixcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxNixcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllclNhdHVyYXRpb24sXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjAsXG4gICAgICAgICAgICAgICAgZGVmOiA1LFxuICAgICAgICAgICAgICAgIHZhbHVlOiA0XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJFeGhhdXN0aW9uLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIwLFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuS25vY2tiYWNrUmVzaXN0ZW5jZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuSGVhbHRoLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIwLFxuICAgICAgICAgICAgICAgIGRlZjogMjAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDIwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5Nb3ZlbWVudCxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBNQVhfRkxPQVQzMixcbiAgICAgICAgICAgICAgICBkZWY6IDAuMSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMC4xXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5Gb2xsb3dSYW5nZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyMDQ4LFxuICAgICAgICAgICAgICAgIGRlZjogMTYsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDE2XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJIdW5nZXIsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjAsXG4gICAgICAgICAgICAgICAgZGVmOiAyMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMjBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkF0dGFja0RhbWFnZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgICAgICAgIGRlZjogMSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuUGxheWVyTGV2ZWwsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjQ3OTEsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJFeHBlcmllbmNlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5VbmRlcndhdGVyTW92ZW1lbnQsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogTUFYX0ZMT0FUMzIsXG4gICAgICAgICAgICAgICAgZGVmOiAwLjAyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwLjAyXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5MdWNrLFxuICAgICAgICAgICAgICAgIG1pbjogLTEwMjQsXG4gICAgICAgICAgICAgICAgbWF4OiAxMDI0LFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuRmFsbERhbWFnZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBNQVhfRkxPQVQzMixcbiAgICAgICAgICAgICAgICBkZWY6IDEsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDFcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkhvcnNlSnVtcFN0cmVuZ3RoLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIsXG4gICAgICAgICAgICAgICAgZGVmOiAwLjcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAuN1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuWm9tYmllU3Bhd25SZWluZm9yY2VtZW50cyxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuTGF2YU1vdmVtZW50LFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IE1BWF9GTE9BVDMyLFxuICAgICAgICAgICAgICAgIGRlZjogMC4wMixcbiAgICAgICAgICAgICAgICB2YWx1ZTogMC4wMlxuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QXR0cmlidXRlcygpOiBBdHRyaWJ1dGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgcHVibGljIG5ldHdvcmtTZXJpYWxpemUoKTogdm9pZCB7fVxufVxuIl0sIm5hbWVzIjpbIk1jcGVVdGlsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHTyxNQUFNLFlBQWUsR0FBQTtBQUFBLEVBQ3hCLFVBQVksRUFBQSxzQkFBQTtBQUFBLEVBQ1osZ0JBQWtCLEVBQUEsNkJBQUE7QUFBQSxFQUNsQixnQkFBa0IsRUFBQSw2QkFBQTtBQUFBLEVBQ2xCLG1CQUFxQixFQUFBLGdDQUFBO0FBQUEsRUFDckIsTUFBUSxFQUFBLGtCQUFBO0FBQUEsRUFDUixRQUFVLEVBQUEsb0JBQUE7QUFBQSxFQUNWLFdBQWEsRUFBQSx3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QUFNLFlBQWEsQ0FBQSxNQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxFQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsRUFBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLEVBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxRQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxXQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsR0FBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLEdBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxXQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxJQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsRUFBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLEVBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxZQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxFQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsRUFBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLEVBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxZQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLENBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxXQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxLQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLENBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxnQkFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxDQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsa0JBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLFdBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxJQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsSUFBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLElBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQSxJQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsSUFBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxDQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsVUFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsV0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxDQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsaUJBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxHQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsR0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLHlCQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLENBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxZQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxXQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsSUFBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLElBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxLQUNMLENBQUE7QUFBQSxHQUNKO0FBQUEsRUFFTyxhQUE2QixHQUFBO0FBQ2hDLElBQUEsT0FBTyxJQUFLLENBQUEsVUFBQSxDQUFBO0FBQUEsR0FDaEI7QUFBQSxFQUVPLGdCQUF5QixHQUFBO0FBQUEsR0FBQztBQUNyQzs7Ozs7OyJ9
|
|
228
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0cmlidXRlLmNqcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudGl0eS9BdHRyaWJ1dGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgQmluYXJ5U3RyZWFtIGZyb20gJ0Bqc3ByaXNtYXJpbmUvanNiaW5hcnl1dGlscyc7XG5pbXBvcnQgTWNwZVV0aWwgZnJvbSAnLi4vbmV0d29yay9OZXR3b3JrVXRpbCc7XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGVJZHMgPSB7XG4gICAgQWJzb3JwdGlvbjogJ21pbmVjcmFmdDphYnNvcnB0aW9uJyxcbiAgICBQbGF5ZXJTYXR1cmF0aW9uOiAnbWluZWNyYWZ0OnBsYXllci5zYXR1cmF0aW9uJyxcbiAgICBQbGF5ZXJFeGhhdXN0aW9uOiAnbWluZWNyYWZ0OnBsYXllci5leGhhdXN0aW9uJyxcbiAgICBLbm9ja2JhY2tSZXNpc3RlbmNlOiAnbWluZWNyYWZ0Omtub2NrYmFja19yZXNpc3RhbmNlJyxcbiAgICBIZWFsdGg6ICdtaW5lY3JhZnQ6aGVhbHRoJyxcbiAgICBNb3ZlbWVudDogJ21pbmVjcmFmdDptb3ZlbWVudCcsXG4gICAgRm9sbG93UmFuZ2U6ICdtaW5lY3JhZnQ6Zm9sbG93X3JhbmdlJyxcbiAgICBQbGF5ZXJIdW5nZXI6ICdtaW5lY3JhZnQ6cGxheWVyLmh1bmdlcicsXG4gICAgQXR0YWNrRGFtYWdlOiAnbWluZWNyYWZ0OmF0dGFja19kYW1hZ2UnLFxuICAgIFBsYXllckxldmVsOiAnbWluZWNyYWZ0OnBsYXllci5sZXZlbCcsXG4gICAgUGxheWVyRXhwZXJpZW5jZTogJ21pbmVjcmFmdDpwbGF5ZXIuZXhwZXJpZW5jZScsXG4gICAgVW5kZXJ3YXRlck1vdmVtZW50OiAnbWluZWNyYWZ0OnVuZGVyd2F0ZXJfbW92ZW1lbnQnLFxuICAgIEx1Y2s6ICdtaW5lY3JhZnQ6bHVjaycsXG4gICAgRmFsbERhbWFnZTogJ21pbmVjcmFmdDpmYWxsX2RhbWFnZScsXG4gICAgSG9yc2VKdW1wU3RyZW5ndGg6ICdtaW5lY3JhZnQ6aG9yc2UuanVtcF9zdHJlbmd0aCcsXG4gICAgWm9tYmllU3Bhd25SZWluZm9yY2VtZW50czogJ21pbmVjcmFmdDp6b21iaWUuc3Bhd25fcmVpbmZvcmNlbWVudHMnLFxuICAgIExhdmFNb3ZlbWVudDogJ21pbmVjcmFmdDpsYXZhX21vdmVtZW50J1xufTtcblxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtaW46IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1heDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmFsdWU6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIENsYXNzIHVzZWQgdG8gc3RvcmUgQXR0cmlidXRlIGRhdGEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSAtIEF0dHJpYnV0ZSBpZGVudGlmaWVyXG4gICAgICogQHBhcmFtIG1pbiAtIEF0dHJpYnV0ZSBtaW5pbXVtIHZhbHVlXG4gICAgICogQHBhcmFtIG1heCAtIEF0dHJpYnV0ZSBtYXhpbXVtIHZhbHVlXG4gICAgICogQHBhcmFtIGRlZiAtIEF0dHJpYnV0ZSBkZWZhdWx0IHZhbHVlXG4gICAgICogQHBhcmFtIHZhbHVlIC0gQXR0cmlidXRlIGN1cnJlbnQgdmFsdWVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioe1xuICAgICAgICBuYW1lLFxuICAgICAgICBtaW4sXG4gICAgICAgIG1heCxcbiAgICAgICAgZGVmLFxuICAgICAgICB2YWx1ZVxuICAgIH06IHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBtaW46IG51bWJlcjtcbiAgICAgICAgbWF4OiBudW1iZXI7XG4gICAgICAgIGRlZjogbnVtYmVyO1xuICAgICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH0pIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5taW4gPSBtaW47XG4gICAgICAgIHRoaXMubWF4ID0gbWF4O1xuICAgICAgICB0aGlzLmRlZmF1bHQgPSBkZWY7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV0d29ya1NlcmlhbGl6ZShzdHJlYW06IEJpbmFyeVN0cmVhbSk6IHZvaWQge1xuICAgICAgICBzdHJlYW0ud3JpdGVGbG9hdExFKHRoaXMubWluKTtcbiAgICAgICAgc3RyZWFtLndyaXRlRmxvYXRMRSh0aGlzLm1heCk7XG4gICAgICAgIHN0cmVhbS53cml0ZUZsb2F0TEUodGhpcy52YWx1ZSk7XG4gICAgICAgIHN0cmVhbS53cml0ZUZsb2F0TEUodGhpcy5kZWZhdWx0KTtcbiAgICAgICAgTWNwZVV0aWwud3JpdGVTdHJpbmcoc3RyZWFtLCB0aGlzLm5hbWUpO1xuICAgICAgICBzdHJlYW0ud3JpdGVVbnNpZ25lZFZhckludCgwKTsgLy8gVE9ETzogbW9kaWZpZXIgY291bnRcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG5ldHdvcmtEZXNlcmlhbGl6ZShzdHJlYW06IEJpbmFyeVN0cmVhbSk6IEF0dHJpYnV0ZSB7XG4gICAgICAgIGNvbnN0IGF0dHIgPSBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgIG1pbjogc3RyZWFtLnJlYWRGbG9hdExFKCksXG4gICAgICAgICAgICBtYXg6IHN0cmVhbS5yZWFkRmxvYXRMRSgpLFxuICAgICAgICAgICAgdmFsdWU6IHN0cmVhbS5yZWFkRmxvYXRMRSgpLFxuICAgICAgICAgICAgZGVmOiBzdHJlYW0ucmVhZEZsb2F0TEUoKSxcbiAgICAgICAgICAgIG5hbWU6IE1jcGVVdGlsLnJlYWRTdHJpbmcoc3RyZWFtKVxuICAgICAgICB9KTtcbiAgICAgICAgc3RyZWFtLnJlYWRVbnNpZ25lZFZhckludCgpOyAvLyBUT0RPOiBza2lwIGZvciBub3dcbiAgICAgICAgcmV0dXJuIGF0dHI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWluKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWF4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG59XG5cbmNvbnN0IE1BWF9GTE9BVDMyID0gMy40MDI4MjM0NjYzODUyODg2ZTM4O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXR0cmlidXRlTWFuYWdlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGxpc3Qgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzIHRvIHNlbmQgdGhlIGZpcnN0IHRpbWUgYSBwbGF5ZXIgc3Bhd25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREZWZhdWx0cygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5BYnNvcnB0aW9uLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDE2LFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuUGxheWVyU2F0dXJhdGlvbixcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyMCxcbiAgICAgICAgICAgICAgICBkZWY6IDUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDRcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllckV4aGF1c3Rpb24sXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjAsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5Lbm9ja2JhY2tSZXNpc3RlbmNlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5IZWFsdGgsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjAsXG4gICAgICAgICAgICAgICAgZGVmOiAyMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMjBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLk1vdmVtZW50LFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IE1BWF9GTE9BVDMyLFxuICAgICAgICAgICAgICAgIGRlZjogMC4xLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwLjFcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkZvbGxvd1JhbmdlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIwNDgsXG4gICAgICAgICAgICAgICAgZGVmOiAxNixcbiAgICAgICAgICAgICAgICB2YWx1ZTogMTZcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllckh1bmdlcixcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyMCxcbiAgICAgICAgICAgICAgICBkZWY6IDIwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAyMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuQXR0YWNrRGFtYWdlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgZGVmOiAxLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAxXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJMZXZlbCxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyNDc5MSxcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllckV4cGVyaWVuY2UsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlVuZGVyd2F0ZXJNb3ZlbWVudCxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBNQVhfRkxPQVQzMixcbiAgICAgICAgICAgICAgICBkZWY6IDAuMDIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAuMDJcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkx1Y2ssXG4gICAgICAgICAgICAgICAgbWluOiAtMTAyNCxcbiAgICAgICAgICAgICAgICBtYXg6IDEwMjQsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5GYWxsRGFtYWdlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IE1BWF9GTE9BVDMyLFxuICAgICAgICAgICAgICAgIGRlZjogMSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuSG9yc2VKdW1wU3RyZW5ndGgsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMixcbiAgICAgICAgICAgICAgICBkZWY6IDAuNyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMC43XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5ab21iaWVTcGF3blJlaW5mb3JjZW1lbnRzLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5MYXZhTW92ZW1lbnQsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogTUFYX0ZMT0FUMzIsXG4gICAgICAgICAgICAgICAgZGVmOiAwLjAyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwLjAyXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBdHRyaWJ1dGVzKCk6IEF0dHJpYnV0ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV0d29ya1NlcmlhbGl6ZSgpOiB2b2lkIHt9XG59XG4iXSwibmFtZXMiOlsiTWNwZVV0aWwiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdPLE1BQU0sWUFBZSxHQUFBO0FBQUEsRUFDeEIsVUFBWSxFQUFBLHNCQUFBO0FBQUEsRUFDWixnQkFBa0IsRUFBQSw2QkFBQTtBQUFBLEVBQ2xCLGdCQUFrQixFQUFBLDZCQUFBO0FBQUEsRUFDbEIsbUJBQXFCLEVBQUEsZ0NBQUE7QUFBQSxFQUNyQixNQUFRLEVBQUEsa0JBQUE7QUFBQSxFQUNSLFFBQVUsRUFBQSxvQkFBQTtBQUFBLEVBQ1YsV0FBYSxFQUFBLHdCQUFBO0FBQUEsRUFDYixZQUFjLEVBQUEseUJBQUE7QUFBQSxFQUNkLFlBQWMsRUFBQSx5QkFBQTtBQUFBLEVBQ2QsV0FBYSxFQUFBLHdCQUFBO0FBQUEsRUFDYixnQkFBa0IsRUFBQSw2QkFBQTtBQUFBLEVBQ2xCLGtCQUFvQixFQUFBLCtCQUFBO0FBQUEsRUFDcEIsSUFBTSxFQUFBLGdCQUFBO0FBQUEsRUFDTixVQUFZLEVBQUEsdUJBQUE7QUFBQSxFQUNaLGlCQUFtQixFQUFBLCtCQUFBO0FBQUEsRUFDbkIseUJBQTJCLEVBQUEsdUNBQUE7QUFBQSxFQUMzQixZQUFjLEVBQUEseUJBQUE7QUFDbEIsRUFBQTtBQUVPLE1BQU0sU0FBVSxDQUFBO0FBQUEsRUFDRixJQUFBLENBQUE7QUFBQSxFQUNBLEdBQUEsQ0FBQTtBQUFBLEVBQ0EsR0FBQSxDQUFBO0FBQUEsRUFDQSxPQUFBLENBQUE7QUFBQSxFQUNBLEtBQUEsQ0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBV1YsV0FBWSxDQUFBO0FBQUEsSUFDZixJQUFBO0FBQUEsSUFDQSxHQUFBO0FBQUEsSUFDQSxHQUFBO0FBQUEsSUFDQSxHQUFBO0FBQUEsSUFDQSxLQUFBO0FBQUEsR0FPRCxFQUFBO0FBQ0MsSUFBQSxJQUFBLENBQUssSUFBTyxHQUFBLElBQUEsQ0FBQTtBQUNaLElBQUEsSUFBQSxDQUFLLEdBQU0sR0FBQSxHQUFBLENBQUE7QUFDWCxJQUFBLElBQUEsQ0FBSyxHQUFNLEdBQUEsR0FBQSxDQUFBO0FBQ1gsSUFBQSxJQUFBLENBQUssT0FBVSxHQUFBLEdBQUEsQ0FBQTtBQUNmLElBQUEsSUFBQSxDQUFLLEtBQVEsR0FBQSxLQUFBLENBQUE7QUFBQSxHQUNqQjtBQUFBLEVBRU8saUJBQWlCLE1BQTRCLEVBQUE7QUFDaEQsSUFBTyxNQUFBLENBQUEsWUFBQSxDQUFhLEtBQUssR0FBRyxDQUFBLENBQUE7QUFDNUIsSUFBTyxNQUFBLENBQUEsWUFBQSxDQUFhLEtBQUssR0FBRyxDQUFBLENBQUE7QUFDNUIsSUFBTyxNQUFBLENBQUEsWUFBQSxDQUFhLEtBQUssS0FBSyxDQUFBLENBQUE7QUFDOUIsSUFBTyxNQUFBLENBQUEsWUFBQSxDQUFhLEtBQUssT0FBTyxDQUFBLENBQUE7QUFDaEMsSUFBU0EsMkJBQUEsQ0FBQSxXQUFBLENBQVksTUFBUSxFQUFBLElBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBQTtBQUN0QyxJQUFBLE1BQUEsQ0FBTyxvQkFBb0IsQ0FBQyxDQUFBLENBQUE7QUFBQSxHQUNoQztBQUFBLEVBRUEsT0FBYyxtQkFBbUIsTUFBaUMsRUFBQTtBQUM5RCxJQUFNLE1BQUEsSUFBQSxHQUFPLElBQUksU0FBVSxDQUFBO0FBQUEsTUFDdkIsR0FBQSxFQUFLLE9BQU8sV0FBWSxFQUFBO0FBQUEsTUFDeEIsR0FBQSxFQUFLLE9BQU8sV0FBWSxFQUFBO0FBQUEsTUFDeEIsS0FBQSxFQUFPLE9BQU8sV0FBWSxFQUFBO0FBQUEsTUFDMUIsR0FBQSxFQUFLLE9BQU8sV0FBWSxFQUFBO0FBQUEsTUFDeEIsSUFBQSxFQUFNQSwyQkFBUyxDQUFBLFVBQUEsQ0FBVyxNQUFNLENBQUE7QUFBQSxLQUNuQyxDQUFBLENBQUE7QUFDRCxJQUFBLE1BQUEsQ0FBTyxrQkFBbUIsRUFBQSxDQUFBO0FBQzFCLElBQU8sT0FBQSxJQUFBLENBQUE7QUFBQSxHQUNYO0FBQUEsRUFFTyxPQUFrQixHQUFBO0FBQ3JCLElBQUEsT0FBTyxJQUFLLENBQUEsSUFBQSxDQUFBO0FBQUEsR0FDaEI7QUFBQSxFQUVPLE1BQWlCLEdBQUE7QUFDcEIsSUFBQSxPQUFPLElBQUssQ0FBQSxHQUFBLENBQUE7QUFBQSxHQUNoQjtBQUFBLEVBRU8sTUFBaUIsR0FBQTtBQUNwQixJQUFBLE9BQU8sSUFBSyxDQUFBLEdBQUEsQ0FBQTtBQUFBLEdBQ2hCO0FBQUEsRUFFTyxVQUFxQixHQUFBO0FBQ3hCLElBQUEsT0FBTyxJQUFLLENBQUEsT0FBQSxDQUFBO0FBQUEsR0FDaEI7QUFBQSxFQUVPLFFBQW1CLEdBQUE7QUFDdEIsSUFBQSxPQUFPLElBQUssQ0FBQSxLQUFBLENBQUE7QUFBQSxHQUNoQjtBQUNKLENBQUE7QUFFQSxNQUFNLFdBQWMsR0FBQSxvQkFBQSxDQUFBO0FBQ3BCLE1BQXFCLGdCQUFpQixDQUFBO0FBQUEsRUFDakIsYUFBMEIsRUFBQyxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLckMsV0FBYyxHQUFBO0FBQ2pCLElBQU8sT0FBQTtBQUFBLE1BQ0gsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFVBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEVBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsQ0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLGdCQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxFQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLENBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxnQkFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsRUFBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxDQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsbUJBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsQ0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLE1BQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEVBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxFQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsRUFBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFFBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLFdBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxHQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsR0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFdBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLElBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxFQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsRUFBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFlBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEVBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxFQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsRUFBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFlBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsQ0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFdBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEtBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsQ0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLGdCQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLENBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxrQkFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsV0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLElBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxJQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsSUFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBLElBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxJQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLENBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxVQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxXQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLENBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxpQkFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEdBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxHQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEseUJBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsQ0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFlBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLFdBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxJQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsSUFBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLEtBQ0wsQ0FBQTtBQUFBLEdBQ0o7QUFBQSxFQUVPLGFBQTZCLEdBQUE7QUFDaEMsSUFBQSxPQUFPLElBQUssQ0FBQSxVQUFBLENBQUE7QUFBQSxHQUNoQjtBQUFBLEVBRU8sZ0JBQXlCLEdBQUE7QUFBQSxHQUFDO0FBQ3JDOzs7Ozs7In0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Attribute.d.ts","sourceRoot":"","sources":["../../src/entity/Attribute.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"Attribute.d.ts","sourceRoot":"","sources":["../../src/entity/Attribute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAC;AAG5D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;CAkBxB,CAAC;AAEF,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B;;;;;;;;OAQG;gBACgB,EACf,IAAI,EACJ,GAAG,EACH,GAAG,EACH,GAAG,EACH,KAAK,EACR,EAAE;QACC,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACjB;IAQM,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;WASrC,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS;IAY1D,OAAO,IAAI,MAAM;IAIjB,MAAM,IAAI,MAAM;IAIhB,MAAM,IAAI,MAAM;IAIhB,UAAU,IAAI,MAAM;IAIpB,QAAQ,IAAI,MAAM;CAG5B;AAGD,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAE9C;;OAEG;IACI,WAAW;IA4HX,aAAa,IAAI,SAAS,EAAE;IAI5B,gBAAgB,IAAI,IAAI;CAClC"}
|
|
@@ -219,4 +219,4 @@ class AttributeManager {
|
|
|
219
219
|
}
|
|
220
220
|
|
|
221
221
|
export { Attribute, AttributeIds, AttributeManager as default };
|
|
222
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0cmlidXRlLmVzLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW50aXR5L0F0dHJpYnV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmluYXJ5U3RyZWFtIGZyb20gJ0Bqc3ByaXNtYXJpbmUvanNiaW5hcnl1dGlscyc7XG5pbXBvcnQgTWNwZVV0aWwgZnJvbSAnLi4vbmV0d29yay9OZXR3b3JrVXRpbCc7XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGVJZHMgPSB7XG4gICAgQWJzb3JwdGlvbjogJ21pbmVjcmFmdDphYnNvcnB0aW9uJyxcbiAgICBQbGF5ZXJTYXR1cmF0aW9uOiAnbWluZWNyYWZ0OnBsYXllci5zYXR1cmF0aW9uJyxcbiAgICBQbGF5ZXJFeGhhdXN0aW9uOiAnbWluZWNyYWZ0OnBsYXllci5leGhhdXN0aW9uJyxcbiAgICBLbm9ja2JhY2tSZXNpc3RlbmNlOiAnbWluZWNyYWZ0Omtub2NrYmFja19yZXNpc3RhbmNlJyxcbiAgICBIZWFsdGg6ICdtaW5lY3JhZnQ6aGVhbHRoJyxcbiAgICBNb3ZlbWVudDogJ21pbmVjcmFmdDptb3ZlbWVudCcsXG4gICAgRm9sbG93UmFuZ2U6ICdtaW5lY3JhZnQ6Zm9sbG93X3JhbmdlJyxcbiAgICBQbGF5ZXJIdW5nZXI6ICdtaW5lY3JhZnQ6cGxheWVyLmh1bmdlcicsXG4gICAgQXR0YWNrRGFtYWdlOiAnbWluZWNyYWZ0OmF0dGFja19kYW1hZ2UnLFxuICAgIFBsYXllckxldmVsOiAnbWluZWNyYWZ0OnBsYXllci5sZXZlbCcsXG4gICAgUGxheWVyRXhwZXJpZW5jZTogJ21pbmVjcmFmdDpwbGF5ZXIuZXhwZXJpZW5jZScsXG4gICAgVW5kZXJ3YXRlck1vdmVtZW50OiAnbWluZWNyYWZ0OnVuZGVyd2F0ZXJfbW92ZW1lbnQnLFxuICAgIEx1Y2s6ICdtaW5lY3JhZnQ6bHVjaycsXG4gICAgRmFsbERhbWFnZTogJ21pbmVjcmFmdDpmYWxsX2RhbWFnZScsXG4gICAgSG9yc2VKdW1wU3RyZW5ndGg6ICdtaW5lY3JhZnQ6aG9yc2UuanVtcF9zdHJlbmd0aCcsXG4gICAgWm9tYmllU3Bhd25SZWluZm9yY2VtZW50czogJ21pbmVjcmFmdDp6b21iaWUuc3Bhd25fcmVpbmZvcmNlbWVudHMnLFxuICAgIExhdmFNb3ZlbWVudDogJ21pbmVjcmFmdDpsYXZhX21vdmVtZW50J1xufTtcblxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtaW46IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1heDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmFsdWU6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIENsYXNzIHVzZWQgdG8gc3RvcmUgQXR0cmlidXRlIGRhdGEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSAtIEF0dHJpYnV0ZSBpZGVudGlmaWVyXG4gICAgICogQHBhcmFtIG1pbiAtIEF0dHJpYnV0ZSBtaW5pbXVtIHZhbHVlXG4gICAgICogQHBhcmFtIG1heCAtIEF0dHJpYnV0ZSBtYXhpbXVtIHZhbHVlXG4gICAgICogQHBhcmFtIGRlZiAtIEF0dHJpYnV0ZSBkZWZhdWx0IHZhbHVlXG4gICAgICogQHBhcmFtIHZhbHVlIC0gQXR0cmlidXRlIGN1cnJlbnQgdmFsdWVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioe1xuICAgICAgICBuYW1lLFxuICAgICAgICBtaW4sXG4gICAgICAgIG1heCxcbiAgICAgICAgZGVmLFxuICAgICAgICB2YWx1ZVxuICAgIH06IHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBtaW46IG51bWJlcjtcbiAgICAgICAgbWF4OiBudW1iZXI7XG4gICAgICAgIGRlZjogbnVtYmVyO1xuICAgICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH0pIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5taW4gPSBtaW47XG4gICAgICAgIHRoaXMubWF4ID0gbWF4O1xuICAgICAgICB0aGlzLmRlZmF1bHQgPSBkZWY7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV0d29ya1NlcmlhbGl6ZShzdHJlYW06IEJpbmFyeVN0cmVhbSk6IHZvaWQge1xuICAgICAgICBzdHJlYW0ud3JpdGVGbG9hdExFKHRoaXMubWluKTtcbiAgICAgICAgc3RyZWFtLndyaXRlRmxvYXRMRSh0aGlzLm1heCk7XG4gICAgICAgIHN0cmVhbS53cml0ZUZsb2F0TEUodGhpcy52YWx1ZSk7XG4gICAgICAgIHN0cmVhbS53cml0ZUZsb2F0TEUodGhpcy5kZWZhdWx0KTtcbiAgICAgICAgTWNwZVV0aWwud3JpdGVTdHJpbmcoc3RyZWFtLCB0aGlzLm5hbWUpO1xuICAgICAgICBzdHJlYW0ud3JpdGVVbnNpZ25lZFZhckludCgwKTsgLy8gVE9ETzogbW9kaWZpZXIgY291bnRcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG5ldHdvcmtEZXNlcmlhbGl6ZShzdHJlYW06IEJpbmFyeVN0cmVhbSk6IEF0dHJpYnV0ZSB7XG4gICAgICAgIGNvbnN0IGF0dHIgPSBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgIG1pbjogc3RyZWFtLnJlYWRGbG9hdExFKCksXG4gICAgICAgICAgICBtYXg6IHN0cmVhbS5yZWFkRmxvYXRMRSgpLFxuICAgICAgICAgICAgdmFsdWU6IHN0cmVhbS5yZWFkRmxvYXRMRSgpLFxuICAgICAgICAgICAgZGVmOiBzdHJlYW0ucmVhZEZsb2F0TEUoKSxcbiAgICAgICAgICAgIG5hbWU6IE1jcGVVdGlsLnJlYWRTdHJpbmcoc3RyZWFtKVxuICAgICAgICB9KTtcbiAgICAgICAgc3RyZWFtLnJlYWRVbnNpZ25lZFZhckludCgpOyAvLyBUT0RPOiBza2lwIGZvciBub3dcbiAgICAgICAgcmV0dXJuIGF0dHI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWluKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWF4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG59XG5cbmNvbnN0IE1BWF9GTE9BVDMyID0gMy40MDI4MjM0NjYzODUyODg2ZTM4O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXR0cmlidXRlTWFuYWdlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGxpc3Qgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzIHRvIHNlbmQgdGhlIGZpcnN0IHRpbWUgYSBwbGF5ZXIgc3Bhd25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREZWZhdWx0cygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5BYnNvcnB0aW9uLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDE2LFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuUGxheWVyU2F0dXJhdGlvbixcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyMCxcbiAgICAgICAgICAgICAgICBkZWY6IDUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDRcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllckV4aGF1c3Rpb24sXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjAsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5Lbm9ja2JhY2tSZXNpc3RlbmNlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5IZWFsdGgsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjAsXG4gICAgICAgICAgICAgICAgZGVmOiAyMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMjBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLk1vdmVtZW50LFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IE1BWF9GTE9BVDMyLFxuICAgICAgICAgICAgICAgIGRlZjogMC4xLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwLjFcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkZvbGxvd1JhbmdlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIwNDgsXG4gICAgICAgICAgICAgICAgZGVmOiAxNixcbiAgICAgICAgICAgICAgICB2YWx1ZTogMTZcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllckh1bmdlcixcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyMCxcbiAgICAgICAgICAgICAgICBkZWY6IDIwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAyMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuQXR0YWNrRGFtYWdlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgZGVmOiAxLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAxXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJMZXZlbCxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyNDc5MSxcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllckV4cGVyaWVuY2UsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlVuZGVyd2F0ZXJNb3ZlbWVudCxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBNQVhfRkxPQVQzMixcbiAgICAgICAgICAgICAgICBkZWY6IDAuMDIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAuMDJcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkx1Y2ssXG4gICAgICAgICAgICAgICAgbWluOiAtMTAyNCxcbiAgICAgICAgICAgICAgICBtYXg6IDEwMjQsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5GYWxsRGFtYWdlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IE1BWF9GTE9BVDMyLFxuICAgICAgICAgICAgICAgIGRlZjogMSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuSG9yc2VKdW1wU3RyZW5ndGgsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMixcbiAgICAgICAgICAgICAgICBkZWY6IDAuNyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMC43XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5ab21iaWVTcGF3blJlaW5mb3JjZW1lbnRzLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5MYXZhTW92ZW1lbnQsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogTUFYX0ZMT0FUMzIsXG4gICAgICAgICAgICAgICAgZGVmOiAwLjAyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwLjAyXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBdHRyaWJ1dGVzKCk6IEF0dHJpYnV0ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV0d29ya1NlcmlhbGl6ZSgpOiB2b2lkIHt9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHTyxNQUFNLFlBQWUsR0FBQTtBQUFBLEVBQ3hCLFVBQVksRUFBQSxzQkFBQTtBQUFBLEVBQ1osZ0JBQWtCLEVBQUEsNkJBQUE7QUFBQSxFQUNsQixnQkFBa0IsRUFBQSw2QkFBQTtBQUFBLEVBQ2xCLG1CQUFxQixFQUFBLGdDQUFBO0FBQUEsRUFDckIsTUFBUSxFQUFBLGtCQUFBO0FBQUEsRUFDUixRQUFVLEVBQUEsb0JBQUE7QUFBQSxFQUNWLFdBQWEsRUFBQSx3QkFBQTtBQUFBLEVBQ2Is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QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEVBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxFQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsRUFBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFFBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLFdBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxHQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsR0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFdBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLElBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxFQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsRUFBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFlBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEVBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxFQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsRUFBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFlBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsQ0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFdBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEtBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsQ0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLGdCQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLENBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxrQkFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsV0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLElBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxJQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsSUFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBLElBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxJQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLENBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxVQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxXQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLENBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxpQkFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEdBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxHQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEseUJBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsQ0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFlBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLFdBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxJQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsSUFBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLEtBQ0wsQ0FBQTtBQUFBLEdBQ0o7QUFBQSxFQUVPLGFBQTZCLEdBQUE7QUFDaEMsSUFBQSxPQUFPLElBQUssQ0FBQSxVQUFBLENBQUE7QUFBQSxHQUNoQjtBQUFBLEVBRU8sZ0JBQXlCLEdBQUE7QUFBQSxHQUFDO0FBQ3JDOzs7OyJ9
|
|
222
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0cmlidXRlLmVzLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW50aXR5L0F0dHJpYnV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBCaW5hcnlTdHJlYW0gZnJvbSAnQGpzcHJpc21hcmluZS9qc2JpbmFyeXV0aWxzJztcbmltcG9ydCBNY3BlVXRpbCBmcm9tICcuLi9uZXR3b3JrL05ldHdvcmtVdGlsJztcblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0ZUlkcyA9IHtcbiAgICBBYnNvcnB0aW9uOiAnbWluZWNyYWZ0OmFic29ycHRpb24nLFxuICAgIFBsYXllclNhdHVyYXRpb246ICdtaW5lY3JhZnQ6cGxheWVyLnNhdHVyYXRpb24nLFxuICAgIFBsYXllckV4aGF1c3Rpb246ICdtaW5lY3JhZnQ6cGxheWVyLmV4aGF1c3Rpb24nLFxuICAgIEtub2NrYmFja1Jlc2lzdGVuY2U6ICdtaW5lY3JhZnQ6a25vY2tiYWNrX3Jlc2lzdGFuY2UnLFxuICAgIEhlYWx0aDogJ21pbmVjcmFmdDpoZWFsdGgnLFxuICAgIE1vdmVtZW50OiAnbWluZWNyYWZ0Om1vdmVtZW50JyxcbiAgICBGb2xsb3dSYW5nZTogJ21pbmVjcmFmdDpmb2xsb3dfcmFuZ2UnLFxuICAgIFBsYXllckh1bmdlcjogJ21pbmVjcmFmdDpwbGF5ZXIuaHVuZ2VyJyxcbiAgICBBdHRhY2tEYW1hZ2U6ICdtaW5lY3JhZnQ6YXR0YWNrX2RhbWFnZScsXG4gICAgUGxheWVyTGV2ZWw6ICdtaW5lY3JhZnQ6cGxheWVyLmxldmVsJyxcbiAgICBQbGF5ZXJFeHBlcmllbmNlOiAnbWluZWNyYWZ0OnBsYXllci5leHBlcmllbmNlJyxcbiAgICBVbmRlcndhdGVyTW92ZW1lbnQ6ICdtaW5lY3JhZnQ6dW5kZXJ3YXRlcl9tb3ZlbWVudCcsXG4gICAgTHVjazogJ21pbmVjcmFmdDpsdWNrJyxcbiAgICBGYWxsRGFtYWdlOiAnbWluZWNyYWZ0OmZhbGxfZGFtYWdlJyxcbiAgICBIb3JzZUp1bXBTdHJlbmd0aDogJ21pbmVjcmFmdDpob3JzZS5qdW1wX3N0cmVuZ3RoJyxcbiAgICBab21iaWVTcGF3blJlaW5mb3JjZW1lbnRzOiAnbWluZWNyYWZ0OnpvbWJpZS5zcGF3bl9yZWluZm9yY2VtZW50cycsXG4gICAgTGF2YU1vdmVtZW50OiAnbWluZWNyYWZ0OmxhdmFfbW92ZW1lbnQnXG59O1xuXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1pbjogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF4OiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0OiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2YWx1ZTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQ2xhc3MgdXNlZCB0byBzdG9yZSBBdHRyaWJ1dGUgZGF0YS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIC0gQXR0cmlidXRlIGlkZW50aWZpZXJcbiAgICAgKiBAcGFyYW0gbWluIC0gQXR0cmlidXRlIG1pbmltdW0gdmFsdWVcbiAgICAgKiBAcGFyYW0gbWF4IC0gQXR0cmlidXRlIG1heGltdW0gdmFsdWVcbiAgICAgKiBAcGFyYW0gZGVmIC0gQXR0cmlidXRlIGRlZmF1bHQgdmFsdWVcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBBdHRyaWJ1dGUgY3VycmVudCB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcih7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIG1pbixcbiAgICAgICAgbWF4LFxuICAgICAgICBkZWYsXG4gICAgICAgIHZhbHVlXG4gICAgfToge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIG1pbjogbnVtYmVyO1xuICAgICAgICBtYXg6IG51bWJlcjtcbiAgICAgICAgZGVmOiBudW1iZXI7XG4gICAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgfSkge1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLm1pbiA9IG1pbjtcbiAgICAgICAgdGhpcy5tYXggPSBtYXg7XG4gICAgICAgIHRoaXMuZGVmYXVsdCA9IGRlZjtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXR3b3JrU2VyaWFsaXplKHN0cmVhbTogQmluYXJ5U3RyZWFtKTogdm9pZCB7XG4gICAgICAgIHN0cmVhbS53cml0ZUZsb2F0TEUodGhpcy5taW4pO1xuICAgICAgICBzdHJlYW0ud3JpdGVGbG9hdExFKHRoaXMubWF4KTtcbiAgICAgICAgc3RyZWFtLndyaXRlRmxvYXRMRSh0aGlzLnZhbHVlKTtcbiAgICAgICAgc3RyZWFtLndyaXRlRmxvYXRMRSh0aGlzLmRlZmF1bHQpO1xuICAgICAgICBNY3BlVXRpbC53cml0ZVN0cmluZyhzdHJlYW0sIHRoaXMubmFtZSk7XG4gICAgICAgIHN0cmVhbS53cml0ZVVuc2lnbmVkVmFySW50KDApOyAvLyBUT0RPOiBtb2RpZmllciBjb3VudFxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbmV0d29ya0Rlc2VyaWFsaXplKHN0cmVhbTogQmluYXJ5U3RyZWFtKTogQXR0cmlidXRlIHtcbiAgICAgICAgY29uc3QgYXR0ciA9IG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgbWluOiBzdHJlYW0ucmVhZEZsb2F0TEUoKSxcbiAgICAgICAgICAgIG1heDogc3RyZWFtLnJlYWRGbG9hdExFKCksXG4gICAgICAgICAgICB2YWx1ZTogc3RyZWFtLnJlYWRGbG9hdExFKCksXG4gICAgICAgICAgICBkZWY6IHN0cmVhbS5yZWFkRmxvYXRMRSgpLFxuICAgICAgICAgICAgbmFtZTogTWNwZVV0aWwucmVhZFN0cmluZyhzdHJlYW0pXG4gICAgICAgIH0pO1xuICAgICAgICBzdHJlYW0ucmVhZFVuc2lnbmVkVmFySW50KCk7IC8vIFRPRE86IHNraXAgZm9yIG5vd1xuICAgICAgICByZXR1cm4gYXR0cjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNaW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNYXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZWZhdWx0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbn1cblxuY29uc3QgTUFYX0ZMT0FUMzIgPSAzLjQwMjgyMzQ2NjM4NTI4ODZlMzg7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdHRyaWJ1dGVNYW5hZ2VyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBkZWZhdWx0IGF0dHJpYnV0ZXMgdG8gc2VuZCB0aGUgZmlyc3QgdGltZSBhIHBsYXllciBzcGF3bnMuXG4gICAgICovXG4gICAgcHVibGljIGdldERlZmF1bHRzKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkFic29ycHRpb24sXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMTYsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJTYXR1cmF0aW9uLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIwLFxuICAgICAgICAgICAgICAgIGRlZjogNSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogNFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuUGxheWVyRXhoYXVzdGlvbixcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyMCxcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLktub2NrYmFja1Jlc2lzdGVuY2UsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkhlYWx0aCxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyMCxcbiAgICAgICAgICAgICAgICBkZWY6IDIwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAyMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuTW92ZW1lbnQsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogTUFYX0ZMT0FUMzIsXG4gICAgICAgICAgICAgICAgZGVmOiAwLjEsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAuMVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuRm9sbG93UmFuZ2UsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjA0OCxcbiAgICAgICAgICAgICAgICBkZWY6IDE2LFxuICAgICAgICAgICAgICAgIHZhbHVlOiAxNlxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuUGxheWVySHVuZ2VyLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIwLFxuICAgICAgICAgICAgICAgIGRlZjogMjAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDIwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5BdHRhY2tEYW1hZ2UsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgICAgICBkZWY6IDEsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDFcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllckxldmVsLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDI0NzkxLFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuUGxheWVyRXhwZXJpZW5jZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuVW5kZXJ3YXRlck1vdmVtZW50LFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IE1BWF9GTE9BVDMyLFxuICAgICAgICAgICAgICAgIGRlZjogMC4wMixcbiAgICAgICAgICAgICAgICB2YWx1ZTogMC4wMlxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuTHVjayxcbiAgICAgICAgICAgICAgICBtaW46IC0xMDI0LFxuICAgICAgICAgICAgICAgIG1heDogMTAyNCxcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkZhbGxEYW1hZ2UsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogTUFYX0ZMT0FUMzIsXG4gICAgICAgICAgICAgICAgZGVmOiAxLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAxXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5Ib3JzZUp1bXBTdHJlbmd0aCxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyLFxuICAgICAgICAgICAgICAgIGRlZjogMC43LFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwLjdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlpvbWJpZVNwYXduUmVpbmZvcmNlbWVudHMsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkxhdmFNb3ZlbWVudCxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBNQVhfRkxPQVQzMixcbiAgICAgICAgICAgICAgICBkZWY6IDAuMDIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAuMDJcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHVibGljIGdldEF0dHJpYnV0ZXMoKTogQXR0cmlidXRlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXR3b3JrU2VyaWFsaXplKCk6IHZvaWQge31cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdPLE1BQU0sWUFBZSxHQUFBO0FBQUEsRUFDeEIsVUFBWSxFQUFBLHNCQUFBO0FBQUEsRUFDWixnQkFBa0IsRUFBQSw2QkFBQTtBQUFBLEVBQ2xCLGdCQUFrQixFQUFBLDZCQUFBO0FBQUEsRUFDbEIsbUJBQXFCLEVBQUEsZ0NBQUE7QUFBQSxFQUNyQixNQUFRLEVBQUEsa0JBQUE7QUFBQSxFQUNSLFFBQVUsRUFBQSxvQkFBQTtBQUFBLEVBQ1YsV0FBYSxFQUFBLHdCQUFBO0FBQUEs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TUFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsRUFBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEVBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxFQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsUUFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsV0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEdBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxHQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsV0FBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsSUFBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEVBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxFQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsWUFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsRUFBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLEVBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxFQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsWUFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxDQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsV0FBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsS0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxDQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsZ0JBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsQ0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLGtCQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxXQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsSUFBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLElBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSxJQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUEsSUFBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLElBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsQ0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLFVBQUE7QUFBQSxRQUNuQixHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLFdBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxLQUFPLEVBQUEsQ0FBQTtBQUFBLE9BQ1YsQ0FBQTtBQUFBLE1BQ0QsSUFBSSxTQUFVLENBQUE7QUFBQSxRQUNWLE1BQU0sWUFBYSxDQUFBLGlCQUFBO0FBQUEsUUFDbkIsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsR0FBQTtBQUFBLFFBQ0wsS0FBTyxFQUFBLEdBQUE7QUFBQSxPQUNWLENBQUE7QUFBQSxNQUNELElBQUksU0FBVSxDQUFBO0FBQUEsUUFDVixNQUFNLFlBQWEsQ0FBQSx5QkFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsQ0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLENBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxDQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsTUFDRCxJQUFJLFNBQVUsQ0FBQTtBQUFBLFFBQ1YsTUFBTSxZQUFhLENBQUEsWUFBQTtBQUFBLFFBQ25CLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxHQUFLLEVBQUEsV0FBQTtBQUFBLFFBQ0wsR0FBSyxFQUFBLElBQUE7QUFBQSxRQUNMLEtBQU8sRUFBQSxJQUFBO0FBQUEsT0FDVixDQUFBO0FBQUEsS0FDTCxDQUFBO0FBQUEsR0FDSjtBQUFBLEVBRU8sYUFBNkIsR0FBQTtBQUNoQyxJQUFBLE9BQU8sSUFBSyxDQUFBLFVBQUEsQ0FBQTtBQUFBLEdBQ2hCO0FBQUEsRUFFTyxnQkFBeUIsR0FBQTtBQUFBLEdBQUM7QUFDckM7Ozs7In0=
|
|
@@ -81,6 +81,7 @@ class Entity extends world_Position.default {
|
|
|
81
81
|
* entity.update(10);
|
|
82
82
|
* ```
|
|
83
83
|
*/
|
|
84
|
+
// eslint-disable-next-line unused-imports/no-unused-vars
|
|
84
85
|
async update(tick) {
|
|
85
86
|
const collisions = await this.getNearbyEntities(0.5);
|
|
86
87
|
await Promise.all(collisions.map(async (entity) => entity.onCollide(this)));
|
|
@@ -342,7 +343,7 @@ class Entity extends world_Position.default {
|
|
|
342
343
|
* ```
|
|
343
344
|
*/
|
|
344
345
|
getFormattedUsername() {
|
|
345
|
-
return this.metadata.getString(entity_Metadata.MetadataFlag.NAMETAG)
|
|
346
|
+
return this.metadata.getString(entity_Metadata.MetadataFlag.NAMETAG) || // Replace all '_' with a ' ' and capitalize each word afterwards,
|
|
346
347
|
// should probably be replaced with regex.
|
|
347
348
|
this.constructor.MOB_ID.split(":")[1].replaceAll("_", " ").split(" ").map((word) => word[0].toUpperCase() + word.slice(1, word.length)).join(" ");
|
|
348
349
|
}
|
|
@@ -383,7 +384,7 @@ class Entity extends world_Position.default {
|
|
|
383
384
|
position,
|
|
384
385
|
entities.filter((entity) => entity.runtimeId !== this.runtimeId)
|
|
385
386
|
)
|
|
386
|
-
]
|
|
387
|
+
];
|
|
387
388
|
}
|
|
388
389
|
/**
|
|
389
390
|
* Get entities within a radius of the current entity.
|
|
@@ -413,4 +414,4 @@ class Entity extends world_Position.default {
|
|
|
413
414
|
}
|
|
414
415
|
|
|
415
416
|
exports.default = Entity;
|
|
416
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5LmNqcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudGl0eS9FbnRpdHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1ldGFkYXRhTWFuYWdlciwgeyBGbGFnVHlwZSwgTWV0YWRhdGFGbGFnIH0gZnJvbSAnLi9NZXRhZGF0YSc7XG5pbXBvcnQgQWRkQWN0b3JQYWNrZXQgZnJvbSAnLi4vbmV0d29yay9wYWNrZXQvQWRkQWN0b3JQYWNrZXQnO1xuaW1wb3J0IEF0dHJpYnV0ZU1hbmFnZXIgZnJvbSAnLi9BdHRyaWJ1dGUnO1xuaW1wb3J0IE1vdmVBY3RvckFic29sdXRlUGFja2V0IGZyb20gJy4uL25ldHdvcmsvcGFja2V0L01vdmVBY3RvckFic29sdXRlUGFja2V0JztcbmltcG9ydCB0eXBlIFBsYXllciBmcm9tICcuLi9QbGF5ZXInO1xuaW1wb3J0IFBvc2l0aW9uIGZyb20gJy4uL3dvcmxkL1Bvc2l0aW9uJztcbmltcG9ydCBSZW1vdmVBY3RvclBhY2tldCBmcm9tICcuLi9uZXR3b3JrL3BhY2tldC9SZW1vdmVBY3RvclBhY2tldCc7XG5pbXBvcnQgdHlwZSBTZXJ2ZXIgZnJvbSAnLi4vU2VydmVyJztcbmltcG9ydCBUZXh0VHlwZSBmcm9tICcuLi9uZXR3b3JrL3R5cGUvVGV4dFR5cGUnO1xuaW1wb3J0IFZlY3RvcjMgZnJvbSAnLi4vbWF0aC9WZWN0b3IzJztcbmltcG9ydCB0eXBlIFdvcmxkIGZyb20gJy4uL3dvcmxkL1dvcmxkJztcblxuLyoqXG4gKiBUaGUgYmFzZSBjbGFzcyBmb3IgYWxsIGVudGl0aWVzIGluY2x1ZGluZyBgUGxheWVyYC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVudGl0eSBleHRlbmRzIFBvc2l0aW9uIHtcbiAgICAvKipcbiAgICAgKiBUaGUgZW50aXR5J3MgbmFtZXNwYWNlIElELlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgTU9CX0lEOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZ2xvYmFsIHJ1bnRpbWUgaWQgY291bnRlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHJ1bnRpbWVJZENvdW50ID0gMG47XG5cbiAgICBwcml2YXRlIHJ1bnRpbWVJZDogYmlnaW50O1xuXG4gICAgcHJvdGVjdGVkIHNlcnZlcjogU2VydmVyO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1ldGFkYXRhOiBNZXRhZGF0YU1hbmFnZXIgPSBuZXcgTWV0YWRhdGFNYW5hZ2VyKCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXR0cmlidXRlczogQXR0cmlidXRlTWFuYWdlciA9IG5ldyBBdHRyaWJ1dGVNYW5hZ2VyKCk7XG5cbiAgICAvKipcbiAgICAgKiBFbnRpdHkgY29uc3RydWN0b3IuXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtXb3JsZH0gd29ybGQgLSBUaGUgd29ybGQgdGhlIGVudGl0eSBiZWxvbmdzIHRvLlxuICAgICAqIEBwYXJhbSB7U2VydmVyfSBzZXJ2ZXIgLSBUaGUgc2VydmVyIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm5zIHtFbnRpdHl9IFRoZSBlbnRpdHkgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgZW50aXR5ID0gbmV3IEVudGl0eSh0aGlzLndvcmxkLCB0aGlzLnNlcnZlcik7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHdvcmxkOiBXb3JsZCwgc2VydmVyOiBTZXJ2ZXIpIHtcbiAgICAgICAgc3VwZXIoeyB3b3JsZCB9KTsgLy8gVE9ET1xuICAgICAgICBFbnRpdHkucnVudGltZUlkQ291bnQgKz0gMW47XG4gICAgICAgIHRoaXMucnVudGltZUlkID0gRW50aXR5LnJ1bnRpbWVJZENvdW50O1xuICAgICAgICB0aGlzLnNlcnZlciA9IHNlcnZlcjtcblxuICAgICAgICB0aGlzLm1ldGFkYXRhLnNldExvbmcoTWV0YWRhdGFGbGFnLklOREVYLCAwbik7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0U2hvcnQoTWV0YWRhdGFGbGFnLk1BWF9BSVIsIDMwMCk7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0TG9uZyhNZXRhZGF0YUZsYWcuRU5USVRZX0xFQURfSE9MREVSX0lELCAtMW4pO1xuICAgICAgICB0aGlzLm1ldGFkYXRhLnNldEZsb2F0KE1ldGFkYXRhRmxhZy5TQ0FMRSwgMSk7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0RmxvYXQoTWV0YWRhdGFGbGFnLkJPVU5ESU5HQk9YX1dJRFRILCAwLjYpO1xuICAgICAgICB0aGlzLm1ldGFkYXRhLnNldEZsb2F0KE1ldGFkYXRhRmxhZy5CT1VORElOR0JPWF9IRUlHSFQsIDEuOCk7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0U2hvcnQoTWV0YWRhdGFGbGFnLkFJUiwgMCk7XG5cbiAgICAgICAgdGhpcy5zZXRHZW5lcmljRmxhZyhNZXRhZGF0YUZsYWcuQUZGRUNURURfQllfR1JBVklUWSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc2V0R2VuZXJpY0ZsYWcoTWV0YWRhdGFGbGFnLkhBU19DT0xMSVNJT04sIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgZW50aXR5J3MgcnVudGltZSBpZC5cbiAgICAgKiBAcmV0dXJucyB7YmlnaW50fSBUaGUgZW50aXR5J3MgcnVudGltZSBpZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBlbnRpdHlJZCA9IGVudGl0eS5nZXRSdW50aW1lSWQoKTtcbiAgICAgKiBjb25zb2xlLmxvZyhlbnRpdHlJZCk7IC8vIEV4LiBPdXRwdXQ6IDFuXG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldFJ1bnRpbWVJZCgpOiBiaWdpbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5ydW50aW1lSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlyZWQgZXZlcnkgdGljayBmcm9tIHRoZSBldmVudCBzdWJzY3JpcHRpb24gaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aWNrIC0gVGhlIGN1cnJlbnQgdGljay5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGVudGl0eS51cGRhdGUoMTApO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyB1cGRhdGUodGljazogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNvbGxpc2lvbnMgPSBhd2FpdCB0aGlzLmdldE5lYXJieUVudGl0aWVzKDAuNSk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGNvbGxpc2lvbnMubWFwKGFzeW5jIChlbnRpdHkpID0+IGVudGl0eS5vbkNvbGxpZGUodGhpcykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHNlcnZlciBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyB7U2VydmVyfSBUaGUgc2VydmVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IHNlcnZlciA9IGVudGl0eS5nZXRTZXJ2ZXIoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2VydmVyKCk6IFNlcnZlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGVudGl0eSdzIG5hbWUgdGFnLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgdGFnLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXROYW1lVGFnKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1ldGFkYXRhLnNldFN0cmluZyhNZXRhZGF0YUZsYWcuTkFNRVRBRywgbmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcHJvcGVydHlJZCAtIFRoZSBwcm9wZXJ0eSBpZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZmxhZ0lkIC0gVGhlIGZsYWcgaWQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbdmFsdWU9dHJ1ZV0gLSBUaGUgZmxhZyB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0ZsYWdUeXBlfSBbcHJvcGVydHlUeXBlPUZsYWdUeXBlLkxPTkddIC0gVGhlIHByb3BlcnR5IHR5cGUuXG4gICAgICovXG4gICAgcHVibGljIHNldERhdGFGbGFnKHByb3BlcnR5SWQ6IG51bWJlciwgZmxhZ0lkOiBudW1iZXIsIHZhbHVlID0gdHJ1ZSwgcHJvcGVydHlUeXBlID0gRmxhZ1R5cGUuTE9ORyk6IHZvaWQge1xuICAgICAgICAvLyBBbGwgZ2VuZXJpYyBmbGFncyBhcmUgd3JpdHRlbiBhcyBMb25ncyAoYmlnaW50cykgNjRiaXRcbiAgICAgICAgY29uc3QgZmxhZ0lkNjQgPSBCaWdJbnQoZmxhZ0lkKTtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHNhbWUgdmFsdWUgaXMgYWxyZWFkeSBzZXRcbiAgICAgICAgaWYgKHRoaXMuZ2V0RGF0YUZsYWcocHJvcGVydHlJZCwgZmxhZ0lkNjQpICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZmxhZ3MgPSB0aGlzLm1ldGFkYXRhLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHlJZCkgYXMgYmlnaW50O1xuICAgICAgICAgICAgdGhpcy5tZXRhZGF0YS5zZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5SWQsIHByb3BlcnR5VHlwZSwgZmxhZ3MgXiAoMW4gPDwgZmxhZ0lkNjQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHByb3BlcnR5SWQgLSBUaGUgcHJvcGVydHkgaWQuXG4gICAgICogQHBhcmFtIHtiaWdpbnR9IGZsYWdJZCAtIFRoZSBmbGFnIGlkLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBUaGUgZmxhZyB2YWx1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGF0YUZsYWcocHJvcGVydHlJZDogbnVtYmVyLCBmbGFnSWQ6IGJpZ2ludCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKCh0aGlzLm1ldGFkYXRhLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHlJZCkgYXMgYmlnaW50KSAmICgxbiA8PCBmbGFnSWQpKSA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZmxhZ0lkIC0gVGhlIGZsYWcgaWQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbdmFsdWU9dHJ1ZV0gLSBUaGUgZmxhZyB2YWx1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0R2VuZXJpY0ZsYWcoZmxhZ0lkOiBudW1iZXIsIHZhbHVlID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldERhdGFGbGFnKGZsYWdJZCA+PSA2NCA/IDk0IDogTWV0YWRhdGFGbGFnLklOREVYLCBmbGFnSWQgJSA2NCwgdmFsdWUsIEZsYWdUeXBlLkxPTkcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQHJldHVybnMge0F0dHJpYnV0ZU1hbmFnZXJ9IFRoZSBhdHRyaWJ1dGUgbWFuYWdlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QXR0cmlidXRlTWFuYWdlcigpOiBBdHRyaWJ1dGVNYW5hZ2VyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEByZXR1cm5zIHtNZXRhZGF0YU1hbmFnZXJ9IFRoZSBtZXRhZGF0YSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRNZXRhZGF0YU1hbmFnZXIoKTogTWV0YWRhdGFNYW5hZ2VyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0YWRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3Bhd24gdGhlIGVudGl0eS5cbiAgICAgKiBAdG9kbyBgbW90aW9uYCwgYHBpdGNoYCAmIGB5YXdgIGlzIHVuaW1wbGVtZW50ZWQuXG4gICAgICogQHBhcmFtIHtQbGF5ZXJ9IFtwbGF5ZXJdIC0gVGhlIHBsYXllciB0byBzZW5kIHRoZSBwYWNrZXQgdG8uXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVudGl0eSBpcyBzcGF3bmVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZW5kU3Bhd24ocGxheWVyPzogUGxheWVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHBsYXllcnM6IFBsYXllcltdID0gcGxheWVyXG4gICAgICAgICAgICA/IFtwbGF5ZXJdXG4gICAgICAgICAgICA6ICh0aGlzLmdldFdvcmxkKClcbiAgICAgICAgICAgICAgICAgIC5nZXRFbnRpdGllcygpXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKChlbnRpdHkpID0+IGVudGl0eS5pc1BsYXllcigpKSBhcyBQbGF5ZXJbXSk7XG5cbiAgICAgICAgY29uc3QgcGFja2V0ID0gbmV3IEFkZEFjdG9yUGFja2V0KCk7XG4gICAgICAgIHBhY2tldC5ydW50aW1lRW50aXR5SWQgPSB0aGlzLmdldFJ1bnRpbWVJZCgpO1xuICAgICAgICBwYWNrZXQudHlwZSA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkuTU9CX0lEOyAvLyBUT0RPXG4gICAgICAgIHBhY2tldC5wb3NpdGlvbiA9IHRoaXM7XG4gICAgICAgIC8vIFRPRE86IG1vdGlvblxuICAgICAgICBwYWNrZXQubW90aW9uID0gbmV3IFZlY3RvcjMoMCwgMCwgMCk7XG4gICAgICAgIHBhY2tldC5waXRjaCA9IDA7XG4gICAgICAgIHBhY2tldC55YXcgPSAwO1xuICAgICAgICBwYWNrZXQuaGVhZFlhdyA9IDA7XG4gICAgICAgIHBhY2tldC5tZXRhZGF0YSA9IHRoaXMubWV0YWRhdGEuZ2V0TWV0YWRhdGEoKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocGxheWVycy5tYXAoYXN5bmMgKHApID0+IHAuZ2V0TmV0d29ya1Nlc3Npb24oKS5nZXRDb25uZWN0aW9uKCkuc2VuZERhdGFQYWNrZXQocGFja2V0KSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc3Bhd24gdGhlIGVudGl0eS5cbiAgICAgKiBAcGFyYW0ge1BsYXllcn0gW3BsYXllcl0gLSBUaGUgcGxheWVyIHRvIHNlbmQgdGhlIHBhY2tldCB0by5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZW50aXR5IGlzIGRlc3Bhd25lZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2VuZERlc3Bhd24ocGxheWVyPzogUGxheWVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHBsYXllcnM6IFBsYXllcltdID0gcGxheWVyXG4gICAgICAgICAgICA/IFtwbGF5ZXJdXG4gICAgICAgICAgICA6ICh0aGlzLmdldFdvcmxkKClcbiAgICAgICAgICAgICAgICAgIC5nZXRFbnRpdGllcygpXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKChlbnRpdHkpID0+IGVudGl0eS5pc1BsYXllcigpKSBhcyBQbGF5ZXJbXSk7XG5cbiAgICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFJlbW92ZUFjdG9yUGFja2V0KCk7XG4gICAgICAgIHBhY2tldC51bmlxdWVFbnRpdHlJZCA9IHRoaXMucnVudGltZUlkO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwbGF5ZXJzLm1hcChhc3luYyAocCkgPT4gcC5nZXROZXR3b3JrU2Vzc2lvbigpLmdldENvbm5lY3Rpb24oKS5zZW5kRGF0YVBhY2tldChwYWNrZXQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBlbnRpdHkncyBwb3NpdGlvbiBhbmQgbm90aWZ5IHRoZSBjbGllbnRzLlxuICAgICAqIEBwYXJhbSB7VmVjdG9yM30gcG9zaXRpb24gLSBUaGUgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHBvc2l0aW9uIGlzIHNldC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2V0UG9zaXRpb24ocG9zaXRpb246IFZlY3RvcjMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRYKHBvc2l0aW9uLmdldFgoKSwgdHJ1ZSk7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0WShwb3NpdGlvbi5nZXRZKCksIHRydWUpO1xuICAgICAgICBhd2FpdCB0aGlzLnNldFoocG9zaXRpb24uZ2V0WigpLCB0cnVlKTtcblxuICAgICAgICBhd2FpdCB0aGlzLnNlbmRQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbmQgdGhlIHBvc2l0aW9uIHRvIGFsbCB0aGUgcGxheWVycyBpbiB0aGUgc2FtZSB3b3JsZC5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcG9zaXRpb24gaXMgc2VudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2VuZFBvc2l0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIHRoaXMuZ2V0U2VydmVyKClcbiAgICAgICAgICAgICAgICAuZ2V0U2Vzc2lvbk1hbmFnZXIoKVxuICAgICAgICAgICAgICAgIC5nZXRBbGxQbGF5ZXJzKClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwbGF5ZXIpID0+IHBsYXllci5nZXRXb3JsZCgpLmdldFVuaXF1ZUlkKCkgPT09IHRoaXMuZ2V0V29ybGQoKS5nZXRVbmlxdWVJZCgpKVxuICAgICAgICAgICAgICAgIC5tYXAoYXN5bmMgKHBsYXllcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgTW92ZUFjdG9yQWJzb2x1dGVQYWNrZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgcGFja2V0LnJ1bnRpbWVFbnRpdHlJZCA9IHRoaXMucnVudGltZUlkO1xuICAgICAgICAgICAgICAgICAgICBwYWNrZXQucG9zaXRpb24gPSB0aGlzLmdldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgICAgICAgICBwYWNrZXQucm90YXRpb25YID0gMDtcbiAgICAgICAgICAgICAgICAgICAgcGFja2V0LnJvdGF0aW9uWSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHBhY2tldC5yb3RhdGlvblogPSAwO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBwbGF5ZXIuZ2V0TmV0d29ya1Nlc3Npb24oKS5nZXRDb25uZWN0aW9uKCkuc2VuZERhdGFQYWNrZXQocGFja2V0KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbmQgYSBtZXNzYWdlIHRvIGFuIGVudGl0eS5cbiAgICAgKiBAcmVtYXJrcyBUaGlzIHdpbGwgc2lsZW50bHkgZmFpbCBvbiBub24tY2xpZW50LWNvbnRyb2xsZWQgZW50aXRpZXMuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBUaGUgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0ge1RleHRUeXBlfSBbdHlwZT1UZXh0VHlwZS5SYXddIC0gVGhlIHRleHQgdHlwZS5cbiAgICAgKiBAZXhhbXBsZSBTZW5kIFwiSGVsbG8gV29ybGQhXCIgdG8gYSBjbGllbnQ6XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGVudGl0eS5zZW5kTWVzc2FnZSgnSGVsbG8gV29ybGQhJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNlbmRNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZywgdHlwZTogVGV4dFR5cGUgPSBUZXh0VHlwZS5SYXcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXJ2ZXJcbiAgICAgICAgICAgIC5nZXRMb2dnZXIoKVxuICAgICAgICAgICAgPy53YXJuKGBFbnRpdHkvc2VuZE1lc3NhZ2UgaXMgbm90IGltcGxlbWVudGVkOiAobWVzc2FnZTogJHttZXNzYWdlfSwgdHlwZTogJHt0eXBlfSlgLCAnRW50aXR5L3NlbmRNZXNzYWdlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBlbnRpdHkncyBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7VmVjdG9yM30gVGhlIGVudGl0eSdzIHBvc2l0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IHBvc2l0aW9uID0gZW50aXR5LmdldFBvc2l0aW9uKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldFBvc2l0aW9uKCk6IFZlY3RvcjMge1xuICAgICAgICByZXR1cm4gbmV3IFZlY3RvcjModGhpcy5nZXRYKCksIHRoaXMuZ2V0WSgpLCB0aGlzLmdldFooKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSB4IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gVGhlIHggY29vcmRpbmF0ZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtzdXBwcmVzcz1mYWxzZV0gLSBJZiB0cnVlLCB0aGUgY2xpZW50IHdvbid0IGJlIG5vdGlmaWVkIGFib3V0IHRoZSBwb3NpdGlvbiBjaGFuZ2UuXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHggcG9zaXRpb24gaXMgc2V0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGF3YWl0IGVudGl0eS5zZXRYKDEwKTtcbiAgICAgKiBgYGBcbiAgICAgKiBAcmVtYXJrcyBUaGlzIG1ldGhvZCB3aWxsIGFsc28gc2VuZCB0aGUgcG9zaXRpb24gdXBkYXRlIHRvIHRoZSBjbGllbnQgaWYgYHN1cHByZXNzYCBpcyBgZmFsc2VgLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZXRYKHg6IG51bWJlciwgc3VwcHJlc3MgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBzdXBlci5zZXRYLmJpbmQodGhpcykoeCk7XG4gICAgICAgIGlmIChzdXBwcmVzcyAmJiAhdGhpcy5pc1BsYXllcigpKSBhd2FpdCB0aGlzLnNlbmRQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgeSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSB5IGNvb3JkaW5hdGUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbc3VwcHJlc3M9ZmFsc2VdIC0gSWYgdHJ1ZSwgdGhlIGNsaWVudCB3b24ndCBiZSBub3RpZmllZCBhYm91dCB0aGUgcG9zaXRpb24gY2hhbmdlLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB5IHBvc2l0aW9uIGlzIHNldC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBhd2FpdCBlbnRpdHkuc2V0WSgxMCk7XG4gICAgICogYGBgXG4gICAgICogQHJlbWFya3MgVGhpcyBtZXRob2Qgd2lsbCBhbHNvIHNlbmQgdGhlIHBvc2l0aW9uIHVwZGF0ZSB0byB0aGUgY2xpZW50IGlmIGBzdXBwcmVzc2AgaXMgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2V0WSh5OiBudW1iZXIsIHN1cHByZXNzID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgc3VwZXIuc2V0WS5iaW5kKHRoaXMpKHkpO1xuICAgICAgICBpZiAoc3VwcHJlc3MgJiYgIXRoaXMuaXNQbGF5ZXIoKSkgYXdhaXQgdGhpcy5zZW5kUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHogcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHogLSBUaGUgeiBjb29yZGluYXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3N1cHByZXNzPWZhbHNlXSAtIElmIHRydWUsIHRoZSBjbGllbnQgd29uJ3QgYmUgbm90aWZpZWQgYWJvdXQgdGhlIHBvc2l0aW9uIGNoYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgeiBwb3NpdGlvbiBpcyBzZXQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogYXdhaXQgZW50aXR5LnNldFooMTApO1xuICAgICAqIGBgYFxuICAgICAqIEByZW1hcmtzIFRoaXMgbWV0aG9kIHdpbGwgYWxzbyBzZW5kIHRoZSBwb3NpdGlvbiB1cGRhdGUgdG8gdGhlIGNsaWVudCBpZiBgc3VwcHJlc3NgIGlzIGBmYWxzZWAuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNldFooejogbnVtYmVyLCBzdXBwcmVzcyA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHN1cGVyLnNldFouYmluZCh0aGlzKSh6KTtcbiAgICAgICAgaWYgKHN1cHByZXNzICYmICF0aGlzLmlzUGxheWVyKCkpIGF3YWl0IHRoaXMuc2VuZFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGVudGl0eSBpcyBhIHBsYXllci5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSBlbnRpdHkgaXMgcGxheWVyLWNvbnRyb2xsZWQsIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGlmIChlbnRpdHkuaXNQbGF5ZXIoKSkge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnRW50aXR5IGlzIGEgcGxheWVyJyk7XG4gICAgICogfSBlbHNlIHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ0VudGl0eSBpcyBub3QgYSBwbGF5ZXInKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGlzUGxheWVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGVudGl0eSBpcyBhIGNvbnNvbGUgaW5zdGFuY2UuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgZW50aXR5IGlzIGNvbnNvbGUtY29udHJvbGxlZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogaWYgKGVudGl0eS5pc0NvbnNvbGUoKSkge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnRW50aXR5IGlzIGEgY29uc29sZScpO1xuICAgICAqIH0gZWxzZSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdFbnRpdHkgaXMgbm90IGEgY29uc29sZScpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNDb25zb2xlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBlbnRpdHkgdHlwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW50aXR5J3MgbmFtZXNwYWNlIElELlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGVudGl0eVR5cGUgPSBlbnRpdHkuZ2V0VHlwZSgpO1xuICAgICAqIGNvbnNvbGUubG9nKGBFbnRpdHkgdHlwZTogJHtlbnRpdHlUeXBlfWApO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRUeXBlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpLk1PQl9JRDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGVudGl0eSdzIChwb3RlbnRpYWxseSBjdXN0b20pIG5hbWUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGVudGl0eSdzIG5hbWUgd2l0aG91dCBmb3JtYXR0aW5nICh1c3VhbGx5IHByZWZpeCAmIHN1ZmZpeCkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgbmFtZSA9IGVudGl0eS5nZXROYW1lKCk7XG4gICAgICogY29uc29sZS5sb2coYEVudGl0eSBuYW1lOiAke25hbWV9YCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0dGVkVXNlcm5hbWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGVudGl0eSdzIGZvcm1hdHRlZCBuYW1lLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbnRpdHkncyBmb3JtYXR0ZWQgbmFtZSAoaW5jbHVkaW5nIHByZWZpeCAmIHN1ZmZpeCkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgZm9ybWF0dGVkTmFtZSA9IGVudGl0eS5nZXRGb3JtYXR0ZWRVc2VybmFtZSgpO1xuICAgICAqIGNvbnNvbGUubG9nKGBFbnRpdHkgZm9ybWF0dGVkIG5hbWU6ICR7Zm9ybWF0dGVkTmFtZX1gKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkVXNlcm5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubWV0YWRhdGEuZ2V0U3RyaW5nKE1ldGFkYXRhRmxhZy5OQU1FVEFHKSA/P1xuICAgICAgICAgICAgLy8gUmVwbGFjZSBhbGwgJ18nIHdpdGggYSAnICcgYW5kIGNhcGl0YWxpemUgZWFjaCB3b3JkIGFmdGVyd2FyZHMsXG4gICAgICAgICAgICAvLyBzaG91bGQgcHJvYmFibHkgYmUgcmVwbGFjZWQgd2l0aCByZWdleC5cbiAgICAgICAgICAgICgodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpLk1PQl9JRCBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgICAgLnNwbGl0KCc6JylbMV0hXG4gICAgICAgICAgICAgICAgLnJlcGxhY2VBbGwoJ18nLCAnICcpXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgICAgICAgICAubWFwKCh3b3JkKSA9PiB3b3JkWzBdIS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxLCB3b3JkLmxlbmd0aCkpXG4gICAgICAgICAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpcmVkIHdoZW4gYW4gZW50aXR5IGNvbGxpZGVzIHdpdGggYW5vdGhlciBlbnRpdHkuXG4gICAgICogQHBhcmFtIHtFbnRpdHl9IGVudGl0eSAtIFRoZSBlbnRpdHkgY29sbGlkZWQgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29sbGlzaW9uIGlzIGhhbmRsZWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZW50aXR5Lm9uQ29sbGlkZShvdGhlckVudGl0eSkudGhlbigoKSA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdDb2xsaXNpb24gaGFuZGxlZCcpO1xuICAgICAqIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBvbkNvbGxpZGUoZW50aXR5OiBFbnRpdHkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdm9pZCBlbnRpdHk7IC8vIFRyaWNrIHRoZSBsaW50ZXIuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbmVhcmVzdCBlbnRpdHkgZnJvbSB0aGUgY3VycmVudCBlbnRpdHkuXG4gICAgICogQHRvZG8gQ3VzdG9taXphYmxlIHJhZGl1c1xuICAgICAqIEBwYXJhbSB7RW50aXR5W119IFtlbnRpdGllcz10aGlzLmdldFdvcmxkKCkuZ2V0RW50aXRpZXMoKV0gLSBUaGUgZW50aXRpZXMgdG8gY29tcGFyZSB0aGUgZGlzdGFuY2UgYmV0d2Vlbi5cbiAgICAgKiBAcmV0dXJucyB7RW50aXR5W119IFRoZSBuZWFyZXN0IGVudGl0eS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBuZWFyZXN0RW50aXR5ID0gZW50aXR5LmdldE5lYXJlc3RFbnRpdHkoKTtcbiAgICAgKiBjb25zb2xlLmxvZygnTmVhcmVzdCBlbnRpdHk6JywgbmVhcmVzdEVudGl0eSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldE5lYXJlc3RFbnRpdHkoZW50aXRpZXM6IEVudGl0eVtdID0gdGhpcy5nZXRXb3JsZCgpLmdldEVudGl0aWVzKCkpOiBFbnRpdHlbXSB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gbmV3IFZlY3RvcjModGhpcy5nZXRYKCksIHRoaXMuZ2V0WSgpLCB0aGlzLmdldFooKSk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlID0gKGE6IFZlY3RvcjMsIGI6IFZlY3RvcjMpID0+XG4gICAgICAgICAgICBNYXRoLmh5cG90KGIuZ2V0WCgpIC0gYS5nZXRYKCksIGIuZ2V0WSgpIC0gYS5nZXRZKCksIGIuZ2V0WigpIC0gYS5nZXRaKCkpO1xuXG4gICAgICAgIGNvbnN0IGNsb3Nlc3QgPSAodGFyZ2V0OiBWZWN0b3IzLCBwb2ludHM6IEVudGl0eVtdLCBlcHMgPSAwLjAwMDAxKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSBwb2ludHMubWFwKChlKSA9PiBkaXN0YW5jZSh0YXJnZXQsIG5ldyBWZWN0b3IzKGUuZ2V0WCgpLCBlLmdldFkoKSwgZS5nZXRaKCkpKSk7XG4gICAgICAgICAgICBjb25zdCBjbG9zZXN0ID0gTWF0aC5taW4oLi4uZGlzdGFuY2VzKTtcbiAgICAgICAgICAgIHJldHVybiBwb2ludHMuZmluZCgoX2UsIGkpID0+IGRpc3RhbmNlc1tpXSEgLSBjbG9zZXN0IDwgZXBzKSE7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIGNsb3Nlc3QoXG4gICAgICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICAgICAgZW50aXRpZXMuZmlsdGVyKChlbnRpdHkpID0+IGVudGl0eS5ydW50aW1lSWQgIT09IHRoaXMucnVudGltZUlkKVxuICAgICAgICAgICAgKVxuICAgICAgICBdLmZpbHRlcigoZW50aXR5KSA9PiBlbnRpdHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBlbnRpdGllcyB3aXRoaW4gYSByYWRpdXMgb2YgdGhlIGN1cnJlbnQgZW50aXR5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpdXMgLSBUaGUgcmFkaXVzLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPEVudGl0eVtdPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgZW50aXRpZXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgcmFkaXVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IG5lYXJieUVudGl0aWVzID0gYXdhaXQgZW50aXR5LmdldE5lYXJieUVudGl0aWVzKDEwKTtcbiAgICAgKiBjb25zb2xlLmxvZygnTmVhcmJ5IGVudGl0aWVzOicsIG5lYXJieUVudGl0aWVzKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgZ2V0TmVhcmJ5RW50aXRpZXMocmFkaXVzOiBudW1iZXIpOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgICAgIGNvbnN0IGVudGl0aWVzID0gdGhpcy5nZXRXb3JsZCgpLmdldEVudGl0aWVzKCk7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbigpO1xuXG4gICAgICAgIGNvbnN0IG1pbiA9IG5ldyBWZWN0b3IzKHBvc2l0aW9uLmdldFgoKSAtIHJhZGl1cywgcG9zaXRpb24uZ2V0WSgpIC0gcmFkaXVzLCBwb3NpdGlvbi5nZXRaKCkgLSByYWRpdXMpO1xuICAgICAgICBjb25zdCBtYXggPSBuZXcgVmVjdG9yMyhwb3NpdGlvbi5nZXRYKCkgKyByYWRpdXMsIHBvc2l0aW9uLmdldFkoKSArIHJhZGl1cywgcG9zaXRpb24uZ2V0WigpICsgcmFkaXVzKTtcblxuICAgICAgICBjb25zdCByZXMgPSBlbnRpdGllcy5maWx0ZXIoKGVudGl0eSkgPT4ge1xuICAgICAgICAgICAgaWYgKGVudGl0eS5ydW50aW1lSWQgPT09IHRoaXMucnVudGltZUlkKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gZW50aXR5LmdldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtaW4uZ2V0WCgpIDwgcG9zaXRpb24uZ2V0WCgpICYmXG4gICAgICAgICAgICAgICAgbWF4LmdldFgoKSA+IHBvc2l0aW9uLmdldFgoKSAmJlxuICAgICAgICAgICAgICAgIG1pbi5nZXRZKCkgPCBwb3NpdGlvbi5nZXRZKCkgJiZcbiAgICAgICAgICAgICAgICBtYXguZ2V0WSgpID4gcG9zaXRpb24uZ2V0WSgpICYmXG4gICAgICAgICAgICAgICAgbWluLmdldFooKSA8IHBvc2l0aW9uLmdldFooKSAmJlxuICAgICAgICAgICAgICAgIG1heC5nZXRaKCkgPiBwb3NpdGlvbi5nZXRaKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUT0RPOiBzb3J0IGVudGl0aWVzIGJhc2VkIG9uIGRpc3RhbmNlXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbIlBvc2l0aW9uIiwiTWV0YWRhdGFNYW5hZ2VyIiwiQXR0cmlidXRlTWFuYWdlciIsIk1ldGFkYXRhRmxhZyIsIkZsYWdUeXBlIiwiQWRkQWN0b3JQYWNrZXQiLCJWZWN0b3IzIiwiUmVtb3ZlQWN0b3JQYWNrZXQiLCJNb3ZlQWN0b3JBYnNvbHV0ZVBhY2tldCIsIlRleHRUeXBlIiwiY2xvc2VzdCIsInBvc2l0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxNQUFxQixlQUFlQSxzQkFBUyxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJekMsT0FBaUIsTUFBQSxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLakIsT0FBYyxjQUFpQixHQUFBLEVBQUEsQ0FBQTtBQUFBLEVBRXZCLFNBQUEsQ0FBQTtBQUFBLEVBRUUsTUFBQSxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxRQUFBLEdBQTRCLElBQUlDLHVCQUFnQixFQUFBLENBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtoRCxVQUFBLEdBQStCLElBQUlDLHdCQUFpQixFQUFBLENBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFB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QUFHLE1BQUEsTUFBTSxLQUFLLFlBQWEsRUFBQSxDQUFBO0FBQUEsR0FDOUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFhQSxNQUFhLElBQUEsQ0FBSyxDQUFXLEVBQUEsUUFBQSxHQUFXLEtBQXNCLEVBQUE7QUFDMUQsSUFBQSxLQUFBLENBQU0sSUFBSyxDQUFBLElBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQTtBQUN2QixJQUFJLElBQUEsUUFBQSxJQUFZLENBQUMsSUFBQSxDQUFLLFFBQVMsRUFBQTtBQUFHLE1BQUEsTUFBTSxLQUFLLFlBQWEsRUFBQSxDQUFBO0FBQUEsR0FDOUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFhQSxNQUFhLElBQUEsQ0FBSyxDQUFXLEVBQUEsUUFBQSxHQUFXLEtBQXNCLEVBQUE7QUFDMUQsSUFBQSxLQUFBLENBQU0sSUFBSyxDQUFBLElBQUEsQ0FBSyxJQUFJLENBQUEsQ0FBRSxDQUFDLENBQUEsQ0FBQTtBQUN2QixJQUFJLElBQUEsUUFBQSxJQUFZLENBQUMsSUFBQSxDQUFLLFFBQVMsRUFBQTtBQUFHLE1BQUEsTUFBTSxLQUFLLFlBQWEsRUFBQSxDQUFBO0FBQUEsR0FDOUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWNPLFFBQW9CLEdBQUE7QUFDdkIsSUFBTyxPQUFBLEtBQUEsQ0FBQTtBQUFBLEdBQ1g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWNPLFNBQXFCLEdBQUE7QUFDeEIsSUFBTyxPQUFBLEtBQUEsQ0FBQTtBQUFBLEdBQ1g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVdPLE9BQWtCLEdB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
|
|
417
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5LmNqcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudGl0eS9FbnRpdHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1ldGFkYXRhTWFuYWdlciwgeyBGbGFnVHlwZSwgTWV0YWRhdGFGbGFnIH0gZnJvbSAnLi9NZXRhZGF0YSc7XG5pbXBvcnQgQWRkQWN0b3JQYWNrZXQgZnJvbSAnLi4vbmV0d29yay9wYWNrZXQvQWRkQWN0b3JQYWNrZXQnO1xuaW1wb3J0IEF0dHJpYnV0ZU1hbmFnZXIgZnJvbSAnLi9BdHRyaWJ1dGUnO1xuaW1wb3J0IE1vdmVBY3RvckFic29sdXRlUGFja2V0IGZyb20gJy4uL25ldHdvcmsvcGFja2V0L01vdmVBY3RvckFic29sdXRlUGFja2V0JztcbmltcG9ydCB0eXBlIFBsYXllciBmcm9tICcuLi9QbGF5ZXInO1xuaW1wb3J0IFBvc2l0aW9uIGZyb20gJy4uL3dvcmxkL1Bvc2l0aW9uJztcbmltcG9ydCBSZW1vdmVBY3RvclBhY2tldCBmcm9tICcuLi9uZXR3b3JrL3BhY2tldC9SZW1vdmVBY3RvclBhY2tldCc7XG5pbXBvcnQgdHlwZSBTZXJ2ZXIgZnJvbSAnLi4vU2VydmVyJztcbmltcG9ydCBUZXh0VHlwZSBmcm9tICcuLi9uZXR3b3JrL3R5cGUvVGV4dFR5cGUnO1xuaW1wb3J0IFZlY3RvcjMgZnJvbSAnLi4vbWF0aC9WZWN0b3IzJztcbmltcG9ydCB0eXBlIFdvcmxkIGZyb20gJy4uL3dvcmxkL1dvcmxkJztcblxuLyoqXG4gKiBUaGUgYmFzZSBjbGFzcyBmb3IgYWxsIGVudGl0aWVzIGluY2x1ZGluZyBgUGxheWVyYC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVudGl0eSBleHRlbmRzIFBvc2l0aW9uIHtcbiAgICAvKipcbiAgICAgKiBUaGUgZW50aXR5J3MgbmFtZXNwYWNlIElELlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgTU9CX0lEOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZ2xvYmFsIHJ1bnRpbWUgaWQgY291bnRlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHJ1bnRpbWVJZENvdW50ID0gMG47XG5cbiAgICBwcml2YXRlIHJ1bnRpbWVJZDogYmlnaW50O1xuXG4gICAgcHJvdGVjdGVkIHNlcnZlcjogU2VydmVyO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1ldGFkYXRhOiBNZXRhZGF0YU1hbmFnZXIgPSBuZXcgTWV0YWRhdGFNYW5hZ2VyKCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXR0cmlidXRlczogQXR0cmlidXRlTWFuYWdlciA9IG5ldyBBdHRyaWJ1dGVNYW5hZ2VyKCk7XG5cbiAgICAvKipcbiAgICAgKiBFbnRpdHkgY29uc3RydWN0b3IuXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtXb3JsZH0gd29ybGQgLSBUaGUgd29ybGQgdGhlIGVudGl0eSBiZWxvbmdzIHRvLlxuICAgICAqIEBwYXJhbSB7U2VydmVyfSBzZXJ2ZXIgLSBUaGUgc2VydmVyIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm5zIHtFbnRpdHl9IFRoZSBlbnRpdHkgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgZW50aXR5ID0gbmV3IEVudGl0eSh0aGlzLndvcmxkLCB0aGlzLnNlcnZlcik7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHdvcmxkOiBXb3JsZCwgc2VydmVyOiBTZXJ2ZXIpIHtcbiAgICAgICAgc3VwZXIoeyB3b3JsZCB9KTsgLy8gVE9ET1xuICAgICAgICBFbnRpdHkucnVudGltZUlkQ291bnQgKz0gMW47XG4gICAgICAgIHRoaXMucnVudGltZUlkID0gRW50aXR5LnJ1bnRpbWVJZENvdW50O1xuICAgICAgICB0aGlzLnNlcnZlciA9IHNlcnZlcjtcblxuICAgICAgICB0aGlzLm1ldGFkYXRhLnNldExvbmcoTWV0YWRhdGFGbGFnLklOREVYLCAwbik7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0U2hvcnQoTWV0YWRhdGFGbGFnLk1BWF9BSVIsIDMwMCk7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0TG9uZyhNZXRhZGF0YUZsYWcuRU5USVRZX0xFQURfSE9MREVSX0lELCAtMW4pO1xuICAgICAgICB0aGlzLm1ldGFkYXRhLnNldEZsb2F0KE1ldGFkYXRhRmxhZy5TQ0FMRSwgMSk7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0RmxvYXQoTWV0YWRhdGFGbGFnLkJPVU5ESU5HQk9YX1dJRFRILCAwLjYpO1xuICAgICAgICB0aGlzLm1ldGFkYXRhLnNldEZsb2F0KE1ldGFkYXRhRmxhZy5CT1VORElOR0JPWF9IRUlHSFQsIDEuOCk7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0U2hvcnQoTWV0YWRhdGFGbGFnLkFJUiwgMCk7XG5cbiAgICAgICAgdGhpcy5zZXRHZW5lcmljRmxhZyhNZXRhZGF0YUZsYWcuQUZGRUNURURfQllfR1JBVklUWSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc2V0R2VuZXJpY0ZsYWcoTWV0YWRhdGFGbGFnLkhBU19DT0xMSVNJT04sIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgZW50aXR5J3MgcnVudGltZSBpZC5cbiAgICAgKiBAcmV0dXJucyB7YmlnaW50fSBUaGUgZW50aXR5J3MgcnVudGltZSBpZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBlbnRpdHlJZCA9IGVudGl0eS5nZXRSdW50aW1lSWQoKTtcbiAgICAgKiBjb25zb2xlLmxvZyhlbnRpdHlJZCk7IC8vIEV4LiBPdXRwdXQ6IDFuXG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldFJ1bnRpbWVJZCgpOiBiaWdpbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5ydW50aW1lSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlyZWQgZXZlcnkgdGljayBmcm9tIHRoZSBldmVudCBzdWJzY3JpcHRpb24gaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aWNrIC0gVGhlIGN1cnJlbnQgdGljay5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGVudGl0eS51cGRhdGUoMTApO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bnVzZWQtaW1wb3J0cy9uby11bnVzZWQtdmFyc1xuICAgIHB1YmxpYyBhc3luYyB1cGRhdGUodGljazogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNvbGxpc2lvbnMgPSBhd2FpdCB0aGlzLmdldE5lYXJieUVudGl0aWVzKDAuNSk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGNvbGxpc2lvbnMubWFwKGFzeW5jIChlbnRpdHkpID0+IGVudGl0eS5vbkNvbGxpZGUodGhpcykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHNlcnZlciBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyB7U2VydmVyfSBUaGUgc2VydmVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IHNlcnZlciA9IGVudGl0eS5nZXRTZXJ2ZXIoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2VydmVyKCk6IFNlcnZlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGVudGl0eSdzIG5hbWUgdGFnLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgdGFnLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXROYW1lVGFnKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1ldGFkYXRhLnNldFN0cmluZyhNZXRhZGF0YUZsYWcuTkFNRVRBRywgbmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcHJvcGVydHlJZCAtIFRoZSBwcm9wZXJ0eSBpZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZmxhZ0lkIC0gVGhlIGZsYWcgaWQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbdmFsdWU9dHJ1ZV0gLSBUaGUgZmxhZyB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0ZsYWdUeXBlfSBbcHJvcGVydHlUeXBlPUZsYWdUeXBlLkxPTkddIC0gVGhlIHByb3BlcnR5IHR5cGUuXG4gICAgICovXG4gICAgcHVibGljIHNldERhdGFGbGFnKHByb3BlcnR5SWQ6IG51bWJlciwgZmxhZ0lkOiBudW1iZXIsIHZhbHVlID0gdHJ1ZSwgcHJvcGVydHlUeXBlID0gRmxhZ1R5cGUuTE9ORyk6IHZvaWQge1xuICAgICAgICAvLyBBbGwgZ2VuZXJpYyBmbGFncyBhcmUgd3JpdHRlbiBhcyBMb25ncyAoYmlnaW50cykgNjRiaXRcbiAgICAgICAgY29uc3QgZmxhZ0lkNjQgPSBCaWdJbnQoZmxhZ0lkKTtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHNhbWUgdmFsdWUgaXMgYWxyZWFkeSBzZXRcbiAgICAgICAgaWYgKHRoaXMuZ2V0RGF0YUZsYWcocHJvcGVydHlJZCwgZmxhZ0lkNjQpICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZmxhZ3MgPSB0aGlzLm1ldGFkYXRhLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHlJZCkgYXMgYmlnaW50O1xuICAgICAgICAgICAgdGhpcy5tZXRhZGF0YS5zZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5SWQsIHByb3BlcnR5VHlwZSwgZmxhZ3MgXiAoMW4gPDwgZmxhZ0lkNjQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHByb3BlcnR5SWQgLSBUaGUgcHJvcGVydHkgaWQuXG4gICAgICogQHBhcmFtIHtiaWdpbnR9IGZsYWdJZCAtIFRoZSBmbGFnIGlkLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBUaGUgZmxhZyB2YWx1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGF0YUZsYWcocHJvcGVydHlJZDogbnVtYmVyLCBmbGFnSWQ6IGJpZ2ludCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKCh0aGlzLm1ldGFkYXRhLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHlJZCkgYXMgYmlnaW50KSAmICgxbiA8PCBmbGFnSWQpKSA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZmxhZ0lkIC0gVGhlIGZsYWcgaWQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbdmFsdWU9dHJ1ZV0gLSBUaGUgZmxhZyB2YWx1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0R2VuZXJpY0ZsYWcoZmxhZ0lkOiBudW1iZXIsIHZhbHVlID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldERhdGFGbGFnKGZsYWdJZCA+PSA2NCA/IDk0IDogTWV0YWRhdGFGbGFnLklOREVYLCBmbGFnSWQgJSA2NCwgdmFsdWUsIEZsYWdUeXBlLkxPTkcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQHJldHVybnMge0F0dHJpYnV0ZU1hbmFnZXJ9IFRoZSBhdHRyaWJ1dGUgbWFuYWdlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QXR0cmlidXRlTWFuYWdlcigpOiBBdHRyaWJ1dGVNYW5hZ2VyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEByZXR1cm5zIHtNZXRhZGF0YU1hbmFnZXJ9IFRoZSBtZXRhZGF0YSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRNZXRhZGF0YU1hbmFnZXIoKTogTWV0YWRhdGFNYW5hZ2VyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0YWRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3Bhd24gdGhlIGVudGl0eS5cbiAgICAgKiBAdG9kbyBgbW90aW9uYCwgYHBpdGNoYCAmIGB5YXdgIGlzIHVuaW1wbGVtZW50ZWQuXG4gICAgICogQHBhcmFtIHtQbGF5ZXJ9IFtwbGF5ZXJdIC0gVGhlIHBsYXllciB0byBzZW5kIHRoZSBwYWNrZXQgdG8uXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGVudGl0eSBpcyBzcGF3bmVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZW5kU3Bhd24ocGxheWVyPzogUGxheWVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHBsYXllcnM6IFBsYXllcltdID0gcGxheWVyXG4gICAgICAgICAgICA/IFtwbGF5ZXJdXG4gICAgICAgICAgICA6ICh0aGlzLmdldFdvcmxkKClcbiAgICAgICAgICAgICAgICAgIC5nZXRFbnRpdGllcygpXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKChlbnRpdHkpID0+IGVudGl0eS5pc1BsYXllcigpKSBhcyBQbGF5ZXJbXSk7XG5cbiAgICAgICAgY29uc3QgcGFja2V0ID0gbmV3IEFkZEFjdG9yUGFja2V0KCk7XG4gICAgICAgIHBhY2tldC5ydW50aW1lRW50aXR5SWQgPSB0aGlzLmdldFJ1bnRpbWVJZCgpO1xuICAgICAgICBwYWNrZXQudHlwZSA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkuTU9CX0lEOyAvLyBUT0RPXG4gICAgICAgIHBhY2tldC5wb3NpdGlvbiA9IHRoaXM7XG4gICAgICAgIC8vIFRPRE86IG1vdGlvblxuICAgICAgICBwYWNrZXQubW90aW9uID0gbmV3IFZlY3RvcjMoMCwgMCwgMCk7XG4gICAgICAgIHBhY2tldC5waXRjaCA9IDA7XG4gICAgICAgIHBhY2tldC55YXcgPSAwO1xuICAgICAgICBwYWNrZXQuaGVhZFlhdyA9IDA7XG4gICAgICAgIHBhY2tldC5tZXRhZGF0YSA9IHRoaXMubWV0YWRhdGEuZ2V0TWV0YWRhdGEoKTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocGxheWVycy5tYXAoYXN5bmMgKHApID0+IHAuZ2V0TmV0d29ya1Nlc3Npb24oKS5nZXRDb25uZWN0aW9uKCkuc2VuZERhdGFQYWNrZXQocGFja2V0KSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc3Bhd24gdGhlIGVudGl0eS5cbiAgICAgKiBAcGFyYW0ge1BsYXllcn0gW3BsYXllcl0gLSBUaGUgcGxheWVyIHRvIHNlbmQgdGhlIHBhY2tldCB0by5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZW50aXR5IGlzIGRlc3Bhd25lZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2VuZERlc3Bhd24ocGxheWVyPzogUGxheWVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHBsYXllcnM6IFBsYXllcltdID0gcGxheWVyXG4gICAgICAgICAgICA/IFtwbGF5ZXJdXG4gICAgICAgICAgICA6ICh0aGlzLmdldFdvcmxkKClcbiAgICAgICAgICAgICAgICAgIC5nZXRFbnRpdGllcygpXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKChlbnRpdHkpID0+IGVudGl0eS5pc1BsYXllcigpKSBhcyBQbGF5ZXJbXSk7XG5cbiAgICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFJlbW92ZUFjdG9yUGFja2V0KCk7XG4gICAgICAgIHBhY2tldC51bmlxdWVFbnRpdHlJZCA9IHRoaXMucnVudGltZUlkO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwbGF5ZXJzLm1hcChhc3luYyAocCkgPT4gcC5nZXROZXR3b3JrU2Vzc2lvbigpLmdldENvbm5lY3Rpb24oKS5zZW5kRGF0YVBhY2tldChwYWNrZXQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBlbnRpdHkncyBwb3NpdGlvbiBhbmQgbm90aWZ5IHRoZSBjbGllbnRzLlxuICAgICAqIEBwYXJhbSB7VmVjdG9yM30gcG9zaXRpb24gLSBUaGUgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHBvc2l0aW9uIGlzIHNldC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2V0UG9zaXRpb24ocG9zaXRpb246IFZlY3RvcjMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRYKHBvc2l0aW9uLmdldFgoKSwgdHJ1ZSk7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0WShwb3NpdGlvbi5nZXRZKCksIHRydWUpO1xuICAgICAgICBhd2FpdCB0aGlzLnNldFoocG9zaXRpb24uZ2V0WigpLCB0cnVlKTtcblxuICAgICAgICBhd2FpdCB0aGlzLnNlbmRQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbmQgdGhlIHBvc2l0aW9uIHRvIGFsbCB0aGUgcGxheWVycyBpbiB0aGUgc2FtZSB3b3JsZC5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcG9zaXRpb24gaXMgc2VudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2VuZFBvc2l0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIHRoaXMuZ2V0U2VydmVyKClcbiAgICAgICAgICAgICAgICAuZ2V0U2Vzc2lvbk1hbmFnZXIoKVxuICAgICAgICAgICAgICAgIC5nZXRBbGxQbGF5ZXJzKClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwbGF5ZXIpID0+IHBsYXllci5nZXRXb3JsZCgpLmdldFVuaXF1ZUlkKCkgPT09IHRoaXMuZ2V0V29ybGQoKS5nZXRVbmlxdWVJZCgpKVxuICAgICAgICAgICAgICAgIC5tYXAoYXN5bmMgKHBsYXllcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgTW92ZUFjdG9yQWJzb2x1dGVQYWNrZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgcGFja2V0LnJ1bnRpbWVFbnRpdHlJZCA9IHRoaXMucnVudGltZUlkO1xuICAgICAgICAgICAgICAgICAgICBwYWNrZXQucG9zaXRpb24gPSB0aGlzLmdldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgICAgICAgICBwYWNrZXQucm90YXRpb25YID0gMDtcbiAgICAgICAgICAgICAgICAgICAgcGFja2V0LnJvdGF0aW9uWSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHBhY2tldC5yb3RhdGlvblogPSAwO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBwbGF5ZXIuZ2V0TmV0d29ya1Nlc3Npb24oKS5nZXRDb25uZWN0aW9uKCkuc2VuZERhdGFQYWNrZXQocGFja2V0KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbmQgYSBtZXNzYWdlIHRvIGFuIGVudGl0eS5cbiAgICAgKiBAcmVtYXJrcyBUaGlzIHdpbGwgc2lsZW50bHkgZmFpbCBvbiBub24tY2xpZW50LWNvbnRyb2xsZWQgZW50aXRpZXMuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBUaGUgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0ge1RleHRUeXBlfSBbdHlwZT1UZXh0VHlwZS5SYXddIC0gVGhlIHRleHQgdHlwZS5cbiAgICAgKiBAZXhhbXBsZSBTZW5kIFwiSGVsbG8gV29ybGQhXCIgdG8gYSBjbGllbnQ6XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGVudGl0eS5zZW5kTWVzc2FnZSgnSGVsbG8gV29ybGQhJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNlbmRNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZywgdHlwZTogVGV4dFR5cGUgPSBUZXh0VHlwZS5SYXcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXJ2ZXJcbiAgICAgICAgICAgIC5nZXRMb2dnZXIoKVxuICAgICAgICAgICAgPy53YXJuKGBFbnRpdHkvc2VuZE1lc3NhZ2UgaXMgbm90IGltcGxlbWVudGVkOiAobWVzc2FnZTogJHttZXNzYWdlfSwgdHlwZTogJHt0eXBlfSlgLCAnRW50aXR5L3NlbmRNZXNzYWdlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBlbnRpdHkncyBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7VmVjdG9yM30gVGhlIGVudGl0eSdzIHBvc2l0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IHBvc2l0aW9uID0gZW50aXR5LmdldFBvc2l0aW9uKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldFBvc2l0aW9uKCk6IFZlY3RvcjMge1xuICAgICAgICByZXR1cm4gbmV3IFZlY3RvcjModGhpcy5nZXRYKCksIHRoaXMuZ2V0WSgpLCB0aGlzLmdldFooKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSB4IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gVGhlIHggY29vcmRpbmF0ZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtzdXBwcmVzcz1mYWxzZV0gLSBJZiB0cnVlLCB0aGUgY2xpZW50IHdvbid0IGJlIG5vdGlmaWVkIGFib3V0IHRoZSBwb3NpdGlvbiBjaGFuZ2UuXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHggcG9zaXRpb24gaXMgc2V0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGF3YWl0IGVudGl0eS5zZXRYKDEwKTtcbiAgICAgKiBgYGBcbiAgICAgKiBAcmVtYXJrcyBUaGlzIG1ldGhvZCB3aWxsIGFsc28gc2VuZCB0aGUgcG9zaXRpb24gdXBkYXRlIHRvIHRoZSBjbGllbnQgaWYgYHN1cHByZXNzYCBpcyBgZmFsc2VgLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZXRYKHg6IG51bWJlciwgc3VwcHJlc3MgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBzdXBlci5zZXRYLmJpbmQodGhpcykoeCk7XG4gICAgICAgIGlmIChzdXBwcmVzcyAmJiAhdGhpcy5pc1BsYXllcigpKSBhd2FpdCB0aGlzLnNlbmRQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgeSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSB5IGNvb3JkaW5hdGUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbc3VwcHJlc3M9ZmFsc2VdIC0gSWYgdHJ1ZSwgdGhlIGNsaWVudCB3b24ndCBiZSBub3RpZmllZCBhYm91dCB0aGUgcG9zaXRpb24gY2hhbmdlLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB5IHBvc2l0aW9uIGlzIHNldC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBhd2FpdCBlbnRpdHkuc2V0WSgxMCk7XG4gICAgICogYGBgXG4gICAgICogQHJlbWFya3MgVGhpcyBtZXRob2Qgd2lsbCBhbHNvIHNlbmQgdGhlIHBvc2l0aW9uIHVwZGF0ZSB0byB0aGUgY2xpZW50IGlmIGBzdXBwcmVzc2AgaXMgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2V0WSh5OiBudW1iZXIsIHN1cHByZXNzID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgc3VwZXIuc2V0WS5iaW5kKHRoaXMpKHkpO1xuICAgICAgICBpZiAoc3VwcHJlc3MgJiYgIXRoaXMuaXNQbGF5ZXIoKSkgYXdhaXQgdGhpcy5zZW5kUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHogcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHogLSBUaGUgeiBjb29yZGluYXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3N1cHByZXNzPWZhbHNlXSAtIElmIHRydWUsIHRoZSBjbGllbnQgd29uJ3QgYmUgbm90aWZpZWQgYWJvdXQgdGhlIHBvc2l0aW9uIGNoYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgeiBwb3NpdGlvbiBpcyBzZXQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogYXdhaXQgZW50aXR5LnNldFooMTApO1xuICAgICAqIGBgYFxuICAgICAqIEByZW1hcmtzIFRoaXMgbWV0aG9kIHdpbGwgYWxzbyBzZW5kIHRoZSBwb3NpdGlvbiB1cGRhdGUgdG8gdGhlIGNsaWVudCBpZiBgc3VwcHJlc3NgIGlzIGBmYWxzZWAuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNldFooejogbnVtYmVyLCBzdXBwcmVzcyA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHN1cGVyLnNldFouYmluZCh0aGlzKSh6KTtcbiAgICAgICAgaWYgKHN1cHByZXNzICYmICF0aGlzLmlzUGxheWVyKCkpIGF3YWl0IHRoaXMuc2VuZFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGVudGl0eSBpcyBhIHBsYXllci5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSBlbnRpdHkgaXMgcGxheWVyLWNvbnRyb2xsZWQsIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGlmIChlbnRpdHkuaXNQbGF5ZXIoKSkge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnRW50aXR5IGlzIGEgcGxheWVyJyk7XG4gICAgICogfSBlbHNlIHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ0VudGl0eSBpcyBub3QgYSBwbGF5ZXInKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGlzUGxheWVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGVudGl0eSBpcyBhIGNvbnNvbGUgaW5zdGFuY2UuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgZW50aXR5IGlzIGNvbnNvbGUtY29udHJvbGxlZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogaWYgKGVudGl0eS5pc0NvbnNvbGUoKSkge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnRW50aXR5IGlzIGEgY29uc29sZScpO1xuICAgICAqIH0gZWxzZSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdFbnRpdHkgaXMgbm90IGEgY29uc29sZScpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNDb25zb2xlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBlbnRpdHkgdHlwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW50aXR5J3MgbmFtZXNwYWNlIElELlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGVudGl0eVR5cGUgPSBlbnRpdHkuZ2V0VHlwZSgpO1xuICAgICAqIGNvbnNvbGUubG9nKGBFbnRpdHkgdHlwZTogJHtlbnRpdHlUeXBlfWApO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRUeXBlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpLk1PQl9JRDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGVudGl0eSdzIChwb3RlbnRpYWxseSBjdXN0b20pIG5hbWUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGVudGl0eSdzIG5hbWUgd2l0aG91dCBmb3JtYXR0aW5nICh1c3VhbGx5IHByZWZpeCAmIHN1ZmZpeCkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgbmFtZSA9IGVudGl0eS5nZXROYW1lKCk7XG4gICAgICogY29uc29sZS5sb2coYEVudGl0eSBuYW1lOiAke25hbWV9YCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0dGVkVXNlcm5hbWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGVudGl0eSdzIGZvcm1hdHRlZCBuYW1lLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbnRpdHkncyBmb3JtYXR0ZWQgbmFtZSAoaW5jbHVkaW5nIHByZWZpeCAmIHN1ZmZpeCkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgZm9ybWF0dGVkTmFtZSA9IGVudGl0eS5nZXRGb3JtYXR0ZWRVc2VybmFtZSgpO1xuICAgICAqIGNvbnNvbGUubG9nKGBFbnRpdHkgZm9ybWF0dGVkIG5hbWU6ICR7Zm9ybWF0dGVkTmFtZX1gKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkVXNlcm5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubWV0YWRhdGEuZ2V0U3RyaW5nKE1ldGFkYXRhRmxhZy5OQU1FVEFHKSB8fFxuICAgICAgICAgICAgLy8gUmVwbGFjZSBhbGwgJ18nIHdpdGggYSAnICcgYW5kIGNhcGl0YWxpemUgZWFjaCB3b3JkIGFmdGVyd2FyZHMsXG4gICAgICAgICAgICAvLyBzaG91bGQgcHJvYmFibHkgYmUgcmVwbGFjZWQgd2l0aCByZWdleC5cbiAgICAgICAgICAgICgodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpLk1PQl9JRCBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgICAgLnNwbGl0KCc6JylbMV0hXG4gICAgICAgICAgICAgICAgLnJlcGxhY2VBbGwoJ18nLCAnICcpXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgICAgICAgICAubWFwKCh3b3JkKSA9PiB3b3JkWzBdIS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxLCB3b3JkLmxlbmd0aCkpXG4gICAgICAgICAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpcmVkIHdoZW4gYW4gZW50aXR5IGNvbGxpZGVzIHdpdGggYW5vdGhlciBlbnRpdHkuXG4gICAgICogQHBhcmFtIHtFbnRpdHl9IGVudGl0eSAtIFRoZSBlbnRpdHkgY29sbGlkZWQgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29sbGlzaW9uIGlzIGhhbmRsZWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZW50aXR5Lm9uQ29sbGlkZShvdGhlckVudGl0eSkudGhlbigoKSA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdDb2xsaXNpb24gaGFuZGxlZCcpO1xuICAgICAqIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBvbkNvbGxpZGUoZW50aXR5OiBFbnRpdHkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdm9pZCBlbnRpdHk7IC8vIFRyaWNrIHRoZSBsaW50ZXIuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbmVhcmVzdCBlbnRpdHkgZnJvbSB0aGUgY3VycmVudCBlbnRpdHkuXG4gICAgICogQHRvZG8gQ3VzdG9taXphYmxlIHJhZGl1c1xuICAgICAqIEBwYXJhbSB7RW50aXR5W119IFtlbnRpdGllcz10aGlzLmdldFdvcmxkKCkuZ2V0RW50aXRpZXMoKV0gLSBUaGUgZW50aXRpZXMgdG8gY29tcGFyZSB0aGUgZGlzdGFuY2UgYmV0d2Vlbi5cbiAgICAgKiBAcmV0dXJucyB7RW50aXR5W119IFRoZSBuZWFyZXN0IGVudGl0eS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBuZWFyZXN0RW50aXR5ID0gZW50aXR5LmdldE5lYXJlc3RFbnRpdHkoKTtcbiAgICAgKiBjb25zb2xlLmxvZygnTmVhcmVzdCBlbnRpdHk6JywgbmVhcmVzdEVudGl0eSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldE5lYXJlc3RFbnRpdHkoZW50aXRpZXM6IEVudGl0eVtdID0gdGhpcy5nZXRXb3JsZCgpLmdldEVudGl0aWVzKCkpOiBFbnRpdHlbXSB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gbmV3IFZlY3RvcjModGhpcy5nZXRYKCksIHRoaXMuZ2V0WSgpLCB0aGlzLmdldFooKSk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlID0gKGE6IFZlY3RvcjMsIGI6IFZlY3RvcjMpID0+XG4gICAgICAgICAgICBNYXRoLmh5cG90KGIuZ2V0WCgpIC0gYS5nZXRYKCksIGIuZ2V0WSgpIC0gYS5nZXRZKCksIGIuZ2V0WigpIC0gYS5nZXRaKCkpO1xuXG4gICAgICAgIGNvbnN0IGNsb3Nlc3QgPSAodGFyZ2V0OiBWZWN0b3IzLCBwb2ludHM6IEVudGl0eVtdLCBlcHMgPSAwLjAwMDAxKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSBwb2ludHMubWFwKChlKSA9PiBkaXN0YW5jZSh0YXJnZXQsIG5ldyBWZWN0b3IzKGUuZ2V0WCgpLCBlLmdldFkoKSwgZS5nZXRaKCkpKSk7XG4gICAgICAgICAgICBjb25zdCBjbG9zZXN0ID0gTWF0aC5taW4oLi4uZGlzdGFuY2VzKTtcbiAgICAgICAgICAgIHJldHVybiBwb2ludHMuZmluZCgoX2UsIGkpID0+IGRpc3RhbmNlc1tpXSEgLSBjbG9zZXN0IDwgZXBzKSE7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIGNsb3Nlc3QoXG4gICAgICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICAgICAgZW50aXRpZXMuZmlsdGVyKChlbnRpdHkpID0+IGVudGl0eS5ydW50aW1lSWQgIT09IHRoaXMucnVudGltZUlkKVxuICAgICAgICAgICAgKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBlbnRpdGllcyB3aXRoaW4gYSByYWRpdXMgb2YgdGhlIGN1cnJlbnQgZW50aXR5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpdXMgLSBUaGUgcmFkaXVzLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPEVudGl0eVtdPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgZW50aXRpZXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgcmFkaXVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IG5lYXJieUVudGl0aWVzID0gYXdhaXQgZW50aXR5LmdldE5lYXJieUVudGl0aWVzKDEwKTtcbiAgICAgKiBjb25zb2xlLmxvZygnTmVhcmJ5IGVudGl0aWVzOicsIG5lYXJieUVudGl0aWVzKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgZ2V0TmVhcmJ5RW50aXRpZXMocmFkaXVzOiBudW1iZXIpOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgICAgIGNvbnN0IGVudGl0aWVzID0gdGhpcy5nZXRXb3JsZCgpLmdldEVudGl0aWVzKCk7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbigpO1xuXG4gICAgICAgIGNvbnN0IG1pbiA9IG5ldyBWZWN0b3IzKHBvc2l0aW9uLmdldFgoKSAtIHJhZGl1cywgcG9zaXRpb24uZ2V0WSgpIC0gcmFkaXVzLCBwb3NpdGlvbi5nZXRaKCkgLSByYWRpdXMpO1xuICAgICAgICBjb25zdCBtYXggPSBuZXcgVmVjdG9yMyhwb3NpdGlvbi5nZXRYKCkgKyByYWRpdXMsIHBvc2l0aW9uLmdldFkoKSArIHJhZGl1cywgcG9zaXRpb24uZ2V0WigpICsgcmFkaXVzKTtcblxuICAgICAgICBjb25zdCByZXMgPSBlbnRpdGllcy5maWx0ZXIoKGVudGl0eSkgPT4ge1xuICAgICAgICAgICAgaWYgKGVudGl0eS5ydW50aW1lSWQgPT09IHRoaXMucnVudGltZUlkKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gZW50aXR5LmdldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtaW4uZ2V0WCgpIDwgcG9zaXRpb24uZ2V0WCgpICYmXG4gICAgICAgICAgICAgICAgbWF4LmdldFgoKSA+IHBvc2l0aW9uLmdldFgoKSAmJlxuICAgICAgICAgICAgICAgIG1pbi5nZXRZKCkgPCBwb3NpdGlvbi5nZXRZKCkgJiZcbiAgICAgICAgICAgICAgICBtYXguZ2V0WSgpID4gcG9zaXRpb24uZ2V0WSgpICYmXG4gICAgICAgICAgICAgICAgbWluLmdldFooKSA8IHBvc2l0aW9uLmdldFooKSAmJlxuICAgICAgICAgICAgICAgIG1heC5nZXRaKCkgPiBwb3NpdGlvbi5nZXRaKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUT0RPOiBzb3J0IGVudGl0aWVzIGJhc2VkIG9uIGRpc3RhbmNlXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbIlBvc2l0aW9uIiwiTWV0YWRhdGFNYW5hZ2VyIiwiQXR0cmlidXRlTWFuYWdlciIsIk1ldGFkYXRhRmxhZyIsIkZsYWdUeXBlIiwiQWRkQWN0b3JQYWNrZXQiLCJWZWN0b3IzIiwiUmVtb3ZlQWN0b3JQYWNrZXQiLCJNb3ZlQWN0b3JBYnNvbHV0ZVBhY2tldCIsIlRleHRUeXBlIiwiY2xvc2VzdCIsInBvc2l0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxNQUFxQixlQUFlQSxzQkFBUyxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJekMsT0FBaUIsTUFBQSxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLakIsT0FBYyxjQUFpQixHQUFBLEVBQUEsQ0FBQTtBQUFBLEVBRXZCLFNBQUEsQ0FBQTtBQUFBLEVBRUUsTUFBQSxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxRQUFBLEdBQTRCLElBQUlDLHVCQUFnQixFQUFBLENBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtoRCxVQUFBLEdBQStCLElBQUlDLHdCQUFpQixFQUFBLENBQUE7QUFBQTtBQUFBO0FBQUE7QUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../src/entity/Entity.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,EAAE,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAErE,OAAO,gBAAgB,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AACpC,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAEzC,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AACpC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,OAAO,MAAM,iBAAiB,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,QAAQ;IACxC;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACH,OAAc,cAAc,SAAM;IAElC,OAAO,CAAC,SAAS,CAAS;IAE1B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IAEnE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4C;IAEvE;;;;;;;;;;OAUG;gBACgB,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IAkB/C;;;;;;;;OAQG;IACI,YAAY,IAAI,MAAM;IAI7B;;;;;;;;OAQG;
|
|
1
|
+
{"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../src/entity/Entity.ts"],"names":[],"mappings":"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"}
|
package/dist/entity/Entity.es.js
CHANGED
|
@@ -77,6 +77,7 @@ class Entity extends Position {
|
|
|
77
77
|
* entity.update(10);
|
|
78
78
|
* ```
|
|
79
79
|
*/
|
|
80
|
+
// eslint-disable-next-line unused-imports/no-unused-vars
|
|
80
81
|
async update(tick) {
|
|
81
82
|
const collisions = await this.getNearbyEntities(0.5);
|
|
82
83
|
await Promise.all(collisions.map(async (entity) => entity.onCollide(this)));
|
|
@@ -338,7 +339,7 @@ class Entity extends Position {
|
|
|
338
339
|
* ```
|
|
339
340
|
*/
|
|
340
341
|
getFormattedUsername() {
|
|
341
|
-
return this.metadata.getString(MetadataFlag.NAMETAG)
|
|
342
|
+
return this.metadata.getString(MetadataFlag.NAMETAG) || // Replace all '_' with a ' ' and capitalize each word afterwards,
|
|
342
343
|
// should probably be replaced with regex.
|
|
343
344
|
this.constructor.MOB_ID.split(":")[1].replaceAll("_", " ").split(" ").map((word) => word[0].toUpperCase() + word.slice(1, word.length)).join(" ");
|
|
344
345
|
}
|
|
@@ -379,7 +380,7 @@ class Entity extends Position {
|
|
|
379
380
|
position,
|
|
380
381
|
entities.filter((entity) => entity.runtimeId !== this.runtimeId)
|
|
381
382
|
)
|
|
382
|
-
]
|
|
383
|
+
];
|
|
383
384
|
}
|
|
384
385
|
/**
|
|
385
386
|
* Get entities within a radius of the current entity.
|
|
@@ -409,4 +410,4 @@ class Entity extends Position {
|
|
|
409
410
|
}
|
|
410
411
|
|
|
411
412
|
export { Entity as default };
|
|
412
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5LmVzLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW50aXR5L0VudGl0eS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWV0YWRhdGFNYW5hZ2VyLCB7IEZsYWdUeXBlLCBNZXRhZGF0YUZsYWcgfSBmcm9tICcuL01ldGFkYXRhJztcbmltcG9ydCBBZGRBY3RvclBhY2tldCBmcm9tICcuLi9uZXR3b3JrL3BhY2tldC9BZGRBY3RvclBhY2tldCc7XG5pbXBvcnQgQXR0cmlidXRlTWFuYWdlciBmcm9tICcuL0F0dHJpYnV0ZSc7XG5pbXBvcnQgTW92ZUFjdG9yQWJzb2x1dGVQYWNrZXQgZnJvbSAnLi4vbmV0d29yay9wYWNrZXQvTW92ZUFjdG9yQWJzb2x1dGVQYWNrZXQnO1xuaW1wb3J0IHR5cGUgUGxheWVyIGZyb20gJy4uL1BsYXllcic7XG5pbXBvcnQgUG9zaXRpb24gZnJvbSAnLi4vd29ybGQvUG9zaXRpb24nO1xuaW1wb3J0IFJlbW92ZUFjdG9yUGFja2V0IGZyb20gJy4uL25ldHdvcmsvcGFja2V0L1JlbW92ZUFjdG9yUGFja2V0JztcbmltcG9ydCB0eXBlIFNlcnZlciBmcm9tICcuLi9TZXJ2ZXInO1xuaW1wb3J0IFRleHRUeXBlIGZyb20gJy4uL25ldHdvcmsvdHlwZS9UZXh0VHlwZSc7XG5pbXBvcnQgVmVjdG9yMyBmcm9tICcuLi9tYXRoL1ZlY3RvcjMnO1xuaW1wb3J0IHR5cGUgV29ybGQgZnJvbSAnLi4vd29ybGQvV29ybGQnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGNsYXNzIGZvciBhbGwgZW50aXRpZXMgaW5jbHVkaW5nIGBQbGF5ZXJgLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW50aXR5IGV4dGVuZHMgUG9zaXRpb24ge1xuICAgIC8qKlxuICAgICAqIFRoZSBlbnRpdHkncyBuYW1lc3BhY2UgSUQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBNT0JfSUQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBnbG9iYWwgcnVudGltZSBpZCBjb3VudGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcnVudGltZUlkQ291bnQgPSAwbjtcblxuICAgIHByaXZhdGUgcnVudGltZUlkOiBiaWdpbnQ7XG5cbiAgICBwcm90ZWN0ZWQgc2VydmVyOiBTZXJ2ZXI7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGE6IE1ldGFkYXRhTWFuYWdlciA9IG5ldyBNZXRhZGF0YU1hbmFnZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVNYW5hZ2VyID0gbmV3IEF0dHJpYnV0ZU1hbmFnZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEVudGl0eSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge1dvcmxkfSB3b3JsZCAtIFRoZSB3b3JsZCB0aGUgZW50aXR5IGJlbG9uZ3MgdG8uXG4gICAgICogQHBhcmFtIHtTZXJ2ZXJ9IHNlcnZlciAtIFRoZSBzZXJ2ZXIgaW5zdGFuY2UuXG4gICAgICogQHJldHVybnMge0VudGl0eX0gVGhlIGVudGl0eSBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBlbnRpdHkgPSBuZXcgRW50aXR5KHRoaXMud29ybGQsIHRoaXMuc2VydmVyKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iod29ybGQ6IFdvcmxkLCBzZXJ2ZXI6IFNlcnZlcikge1xuICAgICAgICBzdXBlcih7IHdvcmxkIH0pOyAvLyBUT0RPXG4gICAgICAgIEVudGl0eS5ydW50aW1lSWRDb3VudCArPSAxbjtcbiAgICAgICAgdGhpcy5ydW50aW1lSWQgPSBFbnRpdHkucnVudGltZUlkQ291bnQ7XG4gICAgICAgIHRoaXMuc2VydmVyID0gc2VydmVyO1xuXG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0TG9uZyhNZXRhZGF0YUZsYWcuSU5ERVgsIDBuKTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YS5zZXRTaG9ydChNZXRhZGF0YUZsYWcuTUFYX0FJUiwgMzAwKTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YS5zZXRMb25nKE1ldGFkYXRhRmxhZy5FTlRJVFlfTEVBRF9IT0xERVJfSUQsIC0xbik7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0RmxvYXQoTWV0YWRhdGFGbGFnLlNDQUxFLCAxKTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YS5zZXRGbG9hdChNZXRhZGF0YUZsYWcuQk9VTkRJTkdCT1hfV0lEVEgsIDAuNik7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0RmxvYXQoTWV0YWRhdGFGbGFnLkJPVU5ESU5HQk9YX0hFSUdIVCwgMS44KTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YS5zZXRTaG9ydChNZXRhZGF0YUZsYWcuQUlSLCAwKTtcblxuICAgICAgICB0aGlzLnNldEdlbmVyaWNGbGFnKE1ldGFkYXRhRmxhZy5BRkZFQ1RFRF9CWV9HUkFWSVRZLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRHZW5lcmljRmxhZyhNZXRhZGF0YUZsYWcuSEFTX0NPTExJU0lPTiwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBlbnRpdHkncyBydW50aW1lIGlkLlxuICAgICAqIEByZXR1cm5zIHtiaWdpbnR9IFRoZSBlbnRpdHkncyBydW50aW1lIGlkLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGVudGl0eUlkID0gZW50aXR5LmdldFJ1bnRpbWVJZCgpO1xuICAgICAqIGNvbnNvbGUubG9nKGVudGl0eUlkKTsgLy8gRXguIE91dHB1dDogMW5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UnVudGltZUlkKCk6IGJpZ2ludCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJ1bnRpbWVJZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaXJlZCBldmVyeSB0aWNrIGZyb20gdGhlIGV2ZW50IHN1YnNjcmlwdGlvbiBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRpY2sgLSBUaGUgY3VycmVudCB0aWNrLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB1cGRhdGUgaXMgY29tcGxldGUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZW50aXR5LnVwZGF0ZSgxMCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHVwZGF0ZSh0aWNrOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY29sbGlzaW9ucyA9IGF3YWl0IHRoaXMuZ2V0TmVhcmJ5RW50aXRpZXMoMC41KTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoY29sbGlzaW9ucy5tYXAoYXN5bmMgKGVudGl0eSkgPT4gZW50aXR5Lm9uQ29sbGlkZSh0aGlzKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgc2VydmVyIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm5zIHtTZXJ2ZXJ9IFRoZSBzZXJ2ZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3Qgc2VydmVyID0gZW50aXR5LmdldFNlcnZlcigpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTZXJ2ZXIoKTogU2VydmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgZW50aXR5J3MgbmFtZSB0YWcuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSB0YWcuXG4gICAgICovXG4gICAgcHVibGljIHNldE5hbWVUYWcobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0U3RyaW5nKE1ldGFkYXRhRmxhZy5OQU1FVEFHLCBuYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wZXJ0eUlkIC0gVGhlIHByb3BlcnR5IGlkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmbGFnSWQgLSBUaGUgZmxhZyBpZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFt2YWx1ZT10cnVlXSAtIFRoZSBmbGFnIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RmxhZ1R5cGV9IFtwcm9wZXJ0eVR5cGU9RmxhZ1R5cGUuTE9OR10gLSBUaGUgcHJvcGVydHkgdHlwZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0RGF0YUZsYWcocHJvcGVydHlJZDogbnVtYmVyLCBmbGFnSWQ6IG51bWJlciwgdmFsdWUgPSB0cnVlLCBwcm9wZXJ0eVR5cGUgPSBGbGFnVHlwZS5MT05HKTogdm9pZCB7XG4gICAgICAgIC8vIEFsbCBnZW5lcmljIGZsYWdzIGFyZSB3cml0dGVuIGFzIExvbmdzIChiaWdpbnRzKSA2NGJpdFxuICAgICAgICBjb25zdCBmbGFnSWQ2NCA9IEJpZ0ludChmbGFnSWQpO1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgc2FtZSB2YWx1ZSBpcyBhbHJlYWR5IHNldFxuICAgICAgICBpZiAodGhpcy5nZXREYXRhRmxhZyhwcm9wZXJ0eUlkLCBmbGFnSWQ2NCkgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBmbGFncyA9IHRoaXMubWV0YWRhdGEuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eUlkKSBhcyBiaWdpbnQ7XG4gICAgICAgICAgICB0aGlzLm1ldGFkYXRhLnNldFByb3BlcnR5VmFsdWUocHJvcGVydHlJZCwgcHJvcGVydHlUeXBlLCBmbGFncyBeICgxbiA8PCBmbGFnSWQ2NCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcHJvcGVydHlJZCAtIFRoZSBwcm9wZXJ0eSBpZC5cbiAgICAgKiBAcGFyYW0ge2JpZ2ludH0gZmxhZ0lkIC0gVGhlIGZsYWcgaWQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRoZSBmbGFnIHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREYXRhRmxhZyhwcm9wZXJ0eUlkOiBudW1iZXIsIGZsYWdJZDogYmlnaW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoKHRoaXMubWV0YWRhdGEuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eUlkKSBhcyBiaWdpbnQpICYgKDFuIDw8IGZsYWdJZCkpID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmbGFnSWQgLSBUaGUgZmxhZyBpZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFt2YWx1ZT10cnVlXSAtIFRoZSBmbGFnIHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRHZW5lcmljRmxhZyhmbGFnSWQ6IG51bWJlciwgdmFsdWUgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RGF0YUZsYWcoZmxhZ0lkID49IDY0ID8gOTQgOiBNZXRhZGF0YUZsYWcuSU5ERVgsIGZsYWdJZCAlIDY0LCB2YWx1ZSwgRmxhZ1R5cGUuTE9ORyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAcmV0dXJucyB7QXR0cmlidXRlTWFuYWdlcn0gVGhlIGF0dHJpYnV0ZSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBdHRyaWJ1dGVNYW5hZ2VyKCk6IEF0dHJpYnV0ZU1hbmFnZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQHJldHVybnMge01ldGFkYXRhTWFuYWdlcn0gVGhlIG1ldGFkYXRhIG1hbmFnZXIuXG4gICAgICovXG4gICAgcHVibGljIGdldE1ldGFkYXRhTWFuYWdlcigpOiBNZXRhZGF0YU1hbmFnZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRhZGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcGF3biB0aGUgZW50aXR5LlxuICAgICAqIEB0b2RvIGBtb3Rpb25gLCBgcGl0Y2hgICYgYHlhd2AgaXMgdW5pbXBsZW1lbnRlZC5cbiAgICAgKiBAcGFyYW0ge1BsYXllcn0gW3BsYXllcl0gLSBUaGUgcGxheWVyIHRvIHNlbmQgdGhlIHBhY2tldCB0by5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZW50aXR5IGlzIHNwYXduZWQuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNlbmRTcGF3bihwbGF5ZXI/OiBQbGF5ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcGxheWVyczogUGxheWVyW10gPSBwbGF5ZXJcbiAgICAgICAgICAgID8gW3BsYXllcl1cbiAgICAgICAgICAgIDogKHRoaXMuZ2V0V29ybGQoKVxuICAgICAgICAgICAgICAgICAgLmdldEVudGl0aWVzKClcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVudGl0eSkgPT4gZW50aXR5LmlzUGxheWVyKCkpIGFzIFBsYXllcltdKTtcblxuICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgQWRkQWN0b3JQYWNrZXQoKTtcbiAgICAgICAgcGFja2V0LnJ1bnRpbWVFbnRpdHlJZCA9IHRoaXMuZ2V0UnVudGltZUlkKCk7XG4gICAgICAgIHBhY2tldC50eXBlID0gKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KS5NT0JfSUQ7IC8vIFRPRE9cbiAgICAgICAgcGFja2V0LnBvc2l0aW9uID0gdGhpcztcbiAgICAgICAgLy8gVE9ETzogbW90aW9uXG4gICAgICAgIHBhY2tldC5tb3Rpb24gPSBuZXcgVmVjdG9yMygwLCAwLCAwKTtcbiAgICAgICAgcGFja2V0LnBpdGNoID0gMDtcbiAgICAgICAgcGFja2V0LnlhdyA9IDA7XG4gICAgICAgIHBhY2tldC5oZWFkWWF3ID0gMDtcbiAgICAgICAgcGFja2V0Lm1ldGFkYXRhID0gdGhpcy5tZXRhZGF0YS5nZXRNZXRhZGF0YSgpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwbGF5ZXJzLm1hcChhc3luYyAocCkgPT4gcC5nZXROZXR3b3JrU2Vzc2lvbigpLmdldENvbm5lY3Rpb24oKS5zZW5kRGF0YVBhY2tldChwYWNrZXQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzcGF3biB0aGUgZW50aXR5LlxuICAgICAqIEBwYXJhbSB7UGxheWVyfSBbcGxheWVyXSAtIFRoZSBwbGF5ZXIgdG8gc2VuZCB0aGUgcGFja2V0IHRvLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBlbnRpdHkgaXMgZGVzcGF3bmVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZW5kRGVzcGF3bihwbGF5ZXI/OiBQbGF5ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcGxheWVyczogUGxheWVyW10gPSBwbGF5ZXJcbiAgICAgICAgICAgID8gW3BsYXllcl1cbiAgICAgICAgICAgIDogKHRoaXMuZ2V0V29ybGQoKVxuICAgICAgICAgICAgICAgICAgLmdldEVudGl0aWVzKClcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVudGl0eSkgPT4gZW50aXR5LmlzUGxheWVyKCkpIGFzIFBsYXllcltdKTtcblxuICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgUmVtb3ZlQWN0b3JQYWNrZXQoKTtcbiAgICAgICAgcGFja2V0LnVuaXF1ZUVudGl0eUlkID0gdGhpcy5ydW50aW1lSWQ7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHBsYXllcnMubWFwKGFzeW5jIChwKSA9PiBwLmdldE5ldHdvcmtTZXNzaW9uKCkuZ2V0Q29ubmVjdGlvbigpLnNlbmREYXRhUGFja2V0KHBhY2tldCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGVudGl0eSdzIHBvc2l0aW9uIGFuZCBub3RpZnkgdGhlIGNsaWVudHMuXG4gICAgICogQHBhcmFtIHtWZWN0b3IzfSBwb3NpdGlvbiAtIFRoZSBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcG9zaXRpb24gaXMgc2V0LlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZXRQb3NpdGlvbihwb3NpdGlvbjogVmVjdG9yMyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnNldFgocG9zaXRpb24uZ2V0WCgpLCB0cnVlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRZKHBvc2l0aW9uLmdldFkoKSwgdHJ1ZSk7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0Wihwb3NpdGlvbi5nZXRaKCksIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuc2VuZFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VuZCB0aGUgcG9zaXRpb24gdG8gYWxsIHRoZSBwbGF5ZXJzIGluIHRoZSBzYW1lIHdvcmxkLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwb3NpdGlvbiBpcyBzZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZW5kUG9zaXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdGhpcy5nZXRTZXJ2ZXIoKVxuICAgICAgICAgICAgICAgIC5nZXRTZXNzaW9uTWFuYWdlcigpXG4gICAgICAgICAgICAgICAgLmdldEFsbFBsYXllcnMoKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHBsYXllcikgPT4gcGxheWVyLmdldFdvcmxkKCkuZ2V0VW5pcXVlSWQoKSA9PT0gdGhpcy5nZXRXb3JsZCgpLmdldFVuaXF1ZUlkKCkpXG4gICAgICAgICAgICAgICAgLm1hcChhc3luYyAocGxheWVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBNb3ZlQWN0b3JBYnNvbHV0ZVBhY2tldCgpO1xuICAgICAgICAgICAgICAgICAgICBwYWNrZXQucnVudGltZUVudGl0eUlkID0gdGhpcy5ydW50aW1lSWQ7XG4gICAgICAgICAgICAgICAgICAgIHBhY2tldC5wb3NpdGlvbiA9IHRoaXMuZ2V0UG9zaXRpb24oKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICAgICAgICAgIHBhY2tldC5yb3RhdGlvblggPSAwO1xuICAgICAgICAgICAgICAgICAgICBwYWNrZXQucm90YXRpb25ZID0gMDtcbiAgICAgICAgICAgICAgICAgICAgcGFja2V0LnJvdGF0aW9uWiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHBsYXllci5nZXROZXR3b3JrU2Vzc2lvbigpLmdldENvbm5lY3Rpb24oKS5zZW5kRGF0YVBhY2tldChwYWNrZXQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VuZCBhIG1lc3NhZ2UgdG8gYW4gZW50aXR5LlxuICAgICAqIEByZW1hcmtzIFRoaXMgd2lsbCBzaWxlbnRseSBmYWlsIG9uIG5vbi1jbGllbnQtY29udHJvbGxlZCBlbnRpdGllcy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIFRoZSBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB7VGV4dFR5cGV9IFt0eXBlPVRleHRUeXBlLlJhd10gLSBUaGUgdGV4dCB0eXBlLlxuICAgICAqIEBleGFtcGxlIFNlbmQgXCJIZWxsbyBXb3JsZCFcIiB0byBhIGNsaWVudDpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZW50aXR5LnNlbmRNZXNzYWdlKCdIZWxsbyBXb3JsZCEnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VuZE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCB0eXBlOiBUZXh0VHlwZSA9IFRleHRUeXBlLlJhdyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZlclxuICAgICAgICAgICAgLmdldExvZ2dlcigpXG4gICAgICAgICAgICA/Lndhcm4oYEVudGl0eS9zZW5kTWVzc2FnZSBpcyBub3QgaW1wbGVtZW50ZWQ6IChtZXNzYWdlOiAke21lc3NhZ2V9LCB0eXBlOiAke3R5cGV9KWAsICdFbnRpdHkvc2VuZE1lc3NhZ2UnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGVudGl0eSdzIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtWZWN0b3IzfSBUaGUgZW50aXR5J3MgcG9zaXRpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgcG9zaXRpb24gPSBlbnRpdHkuZ2V0UG9zaXRpb24oKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb24oKTogVmVjdG9yMyB7XG4gICAgICAgIHJldHVybiBuZXcgVmVjdG9yMyh0aGlzLmdldFgoKSwgdGhpcy5nZXRZKCksIHRoaXMuZ2V0WigpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHggcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgeCBjb29yZGluYXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3N1cHByZXNzPWZhbHNlXSAtIElmIHRydWUsIHRoZSBjbGllbnQgd29uJ3QgYmUgbm90aWZpZWQgYWJvdXQgdGhlIHBvc2l0aW9uIGNoYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgeCBwb3NpdGlvbiBpcyBzZXQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogYXdhaXQgZW50aXR5LnNldFgoMTApO1xuICAgICAqIGBgYFxuICAgICAqIEByZW1hcmtzIFRoaXMgbWV0aG9kIHdpbGwgYWxzbyBzZW5kIHRoZSBwb3NpdGlvbiB1cGRhdGUgdG8gdGhlIGNsaWVudCBpZiBgc3VwcHJlc3NgIGlzIGBmYWxzZWAuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNldFgoeDogbnVtYmVyLCBzdXBwcmVzcyA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHN1cGVyLnNldFguYmluZCh0aGlzKSh4KTtcbiAgICAgICAgaWYgKHN1cHByZXNzICYmICF0aGlzLmlzUGxheWVyKCkpIGF3YWl0IHRoaXMuc2VuZFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSB5IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gVGhlIHkgY29vcmRpbmF0ZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtzdXBwcmVzcz1mYWxzZV0gLSBJZiB0cnVlLCB0aGUgY2xpZW50IHdvbid0IGJlIG5vdGlmaWVkIGFib3V0IHRoZSBwb3NpdGlvbiBjaGFuZ2UuXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHkgcG9zaXRpb24gaXMgc2V0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGF3YWl0IGVudGl0eS5zZXRZKDEwKTtcbiAgICAgKiBgYGBcbiAgICAgKiBAcmVtYXJrcyBUaGlzIG1ldGhvZCB3aWxsIGFsc28gc2VuZCB0aGUgcG9zaXRpb24gdXBkYXRlIHRvIHRoZSBjbGllbnQgaWYgYHN1cHByZXNzYCBpcyBgZmFsc2VgLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZXRZKHk6IG51bWJlciwgc3VwcHJlc3MgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBzdXBlci5zZXRZLmJpbmQodGhpcykoeSk7XG4gICAgICAgIGlmIChzdXBwcmVzcyAmJiAhdGhpcy5pc1BsYXllcigpKSBhd2FpdCB0aGlzLnNlbmRQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgeiBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0geiAtIFRoZSB6IGNvb3JkaW5hdGUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbc3VwcHJlc3M9ZmFsc2VdIC0gSWYgdHJ1ZSwgdGhlIGNsaWVudCB3b24ndCBiZSBub3RpZmllZCBhYm91dCB0aGUgcG9zaXRpb24gY2hhbmdlLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB6IHBvc2l0aW9uIGlzIHNldC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBhd2FpdCBlbnRpdHkuc2V0WigxMCk7XG4gICAgICogYGBgXG4gICAgICogQHJlbWFya3MgVGhpcyBtZXRob2Qgd2lsbCBhbHNvIHNlbmQgdGhlIHBvc2l0aW9uIHVwZGF0ZSB0byB0aGUgY2xpZW50IGlmIGBzdXBwcmVzc2AgaXMgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2V0Wih6OiBudW1iZXIsIHN1cHByZXNzID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgc3VwZXIuc2V0Wi5iaW5kKHRoaXMpKHopO1xuICAgICAgICBpZiAoc3VwcHJlc3MgJiYgIXRoaXMuaXNQbGF5ZXIoKSkgYXdhaXQgdGhpcy5zZW5kUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZW50aXR5IGlzIGEgcGxheWVyLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIGVudGl0eSBpcyBwbGF5ZXItY29udHJvbGxlZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogaWYgKGVudGl0eS5pc1BsYXllcigpKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdFbnRpdHkgaXMgYSBwbGF5ZXInKTtcbiAgICAgKiB9IGVsc2Uge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnRW50aXR5IGlzIG5vdCBhIHBsYXllcicpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNQbGF5ZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZW50aXR5IGlzIGEgY29uc29sZSBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSBlbnRpdHkgaXMgY29uc29sZS1jb250cm9sbGVkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBpZiAoZW50aXR5LmlzQ29uc29sZSgpKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdFbnRpdHkgaXMgYSBjb25zb2xlJyk7XG4gICAgICogfSBlbHNlIHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ0VudGl0eSBpcyBub3QgYSBjb25zb2xlJyk7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0NvbnNvbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGVudGl0eSB0eXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbnRpdHkncyBuYW1lc3BhY2UgSUQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgZW50aXR5VHlwZSA9IGVudGl0eS5nZXRUeXBlKCk7XG4gICAgICogY29uc29sZS5sb2coYEVudGl0eSB0eXBlOiAke2VudGl0eVR5cGV9YCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldFR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkuTU9CX0lEO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgZW50aXR5J3MgKHBvdGVudGlhbGx5IGN1c3RvbSkgbmFtZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW50aXR5J3MgbmFtZSB3aXRob3V0IGZvcm1hdHRpbmcgKHVzdWFsbHkgcHJlZml4ICYgc3VmZml4KS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBuYW1lID0gZW50aXR5LmdldE5hbWUoKTtcbiAgICAgKiBjb25zb2xlLmxvZyhgRW50aXR5IG5hbWU6ICR7bmFtZX1gKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRGb3JtYXR0ZWRVc2VybmFtZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgZW50aXR5J3MgZm9ybWF0dGVkIG5hbWUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGVudGl0eSdzIGZvcm1hdHRlZCBuYW1lIChpbmNsdWRpbmcgcHJlZml4ICYgc3VmZml4KS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBmb3JtYXR0ZWROYW1lID0gZW50aXR5LmdldEZvcm1hdHRlZFVzZXJuYW1lKCk7XG4gICAgICogY29uc29sZS5sb2coYEVudGl0eSBmb3JtYXR0ZWQgbmFtZTogJHtmb3JtYXR0ZWROYW1lfWApO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGb3JtYXR0ZWRVc2VybmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tZXRhZGF0YS5nZXRTdHJpbmcoTWV0YWRhdGFGbGFnLk5BTUVUQUcpID8/XG4gICAgICAgICAgICAvLyBSZXBsYWNlIGFsbCAnXycgd2l0aCBhICcgJyBhbmQgY2FwaXRhbGl6ZSBlYWNoIHdvcmQgYWZ0ZXJ3YXJkcyxcbiAgICAgICAgICAgIC8vIHNob3VsZCBwcm9iYWJseSBiZSByZXBsYWNlZCB3aXRoIHJlZ2V4LlxuICAgICAgICAgICAgKCh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkuTU9CX0lEIGFzIHN0cmluZylcbiAgICAgICAgICAgICAgICAuc3BsaXQoJzonKVsxXSFcbiAgICAgICAgICAgICAgICAucmVwbGFjZUFsbCgnXycsICcgJylcbiAgICAgICAgICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAgICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmRbMF0hLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEsIHdvcmQubGVuZ3RoKSlcbiAgICAgICAgICAgICAgICAuam9pbignICcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlyZWQgd2hlbiBhbiBlbnRpdHkgY29sbGlkZXMgd2l0aCBhbm90aGVyIGVudGl0eS5cbiAgICAgKiBAcGFyYW0ge0VudGl0eX0gZW50aXR5IC0gVGhlIGVudGl0eSBjb2xsaWRlZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb2xsaXNpb24gaXMgaGFuZGxlZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBlbnRpdHkub25Db2xsaWRlKG90aGVyRW50aXR5KS50aGVuKCgpID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ0NvbGxpc2lvbiBoYW5kbGVkJyk7XG4gICAgICogfSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIG9uQ29sbGlkZShlbnRpdHk6IEVudGl0eSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB2b2lkIGVudGl0eTsgLy8gVHJpY2sgdGhlIGxpbnRlci5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBuZWFyZXN0IGVudGl0eSBmcm9tIHRoZSBjdXJyZW50IGVudGl0eS5cbiAgICAgKiBAdG9kbyBDdXN0b21pemFibGUgcmFkaXVzXG4gICAgICogQHBhcmFtIHtFbnRpdHlbXX0gW2VudGl0aWVzPXRoaXMuZ2V0V29ybGQoKS5nZXRFbnRpdGllcygpXSAtIFRoZSBlbnRpdGllcyB0byBjb21wYXJlIHRoZSBkaXN0YW5jZSBiZXR3ZWVuLlxuICAgICAqIEByZXR1cm5zIHtFbnRpdHlbXX0gVGhlIG5lYXJlc3QgZW50aXR5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IG5lYXJlc3RFbnRpdHkgPSBlbnRpdHkuZ2V0TmVhcmVzdEVudGl0eSgpO1xuICAgICAqIGNvbnNvbGUubG9nKCdOZWFyZXN0IGVudGl0eTonLCBuZWFyZXN0RW50aXR5KTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0TmVhcmVzdEVudGl0eShlbnRpdGllczogRW50aXR5W10gPSB0aGlzLmdldFdvcmxkKCkuZ2V0RW50aXRpZXMoKSk6IEVudGl0eVtdIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBuZXcgVmVjdG9yMyh0aGlzLmdldFgoKSwgdGhpcy5nZXRZKCksIHRoaXMuZ2V0WigpKTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSAoYTogVmVjdG9yMywgYjogVmVjdG9yMykgPT5cbiAgICAgICAgICAgIE1hdGguaHlwb3QoYi5nZXRYKCkgLSBhLmdldFgoKSwgYi5nZXRZKCkgLSBhLmdldFkoKSwgYi5nZXRaKCkgLSBhLmdldFooKSk7XG5cbiAgICAgICAgY29uc3QgY2xvc2VzdCA9ICh0YXJnZXQ6IFZlY3RvcjMsIHBvaW50czogRW50aXR5W10sIGVwcyA9IDAuMDAwMDEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlcyA9IHBvaW50cy5tYXAoKGUpID0+IGRpc3RhbmNlKHRhcmdldCwgbmV3IFZlY3RvcjMoZS5nZXRYKCksIGUuZ2V0WSgpLCBlLmdldFooKSkpKTtcbiAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3QgPSBNYXRoLm1pbiguLi5kaXN0YW5jZXMpO1xuICAgICAgICAgICAgcmV0dXJuIHBvaW50cy5maW5kKChfZSwgaSkgPT4gZGlzdGFuY2VzW2ldISAtIGNsb3Nlc3QgPCBlcHMpITtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgY2xvc2VzdChcbiAgICAgICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgICAgICBlbnRpdGllcy5maWx0ZXIoKGVudGl0eSkgPT4gZW50aXR5LnJ1bnRpbWVJZCAhPT0gdGhpcy5ydW50aW1lSWQpXG4gICAgICAgICAgICApXG4gICAgICAgIF0uZmlsdGVyKChlbnRpdHkpID0+IGVudGl0eSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGVudGl0aWVzIHdpdGhpbiBhIHJhZGl1cyBvZiB0aGUgY3VycmVudCBlbnRpdHkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhZGl1cyAtIFRoZSByYWRpdXMuXG4gICAgICogQHJldHVybnMge1Byb21pc2U8RW50aXR5W10+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBlbnRpdGllcyB3aXRoaW4gdGhlIHNwZWNpZmllZCByYWRpdXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgbmVhcmJ5RW50aXRpZXMgPSBhd2FpdCBlbnRpdHkuZ2V0TmVhcmJ5RW50aXRpZXMoMTApO1xuICAgICAqIGNvbnNvbGUubG9nKCdOZWFyYnkgZW50aXRpZXM6JywgbmVhcmJ5RW50aXRpZXMpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBnZXROZWFyYnlFbnRpdGllcyhyYWRpdXM6IG51bWJlcik6IFByb21pc2U8RW50aXR5W10+IHtcbiAgICAgICAgY29uc3QgZW50aXRpZXMgPSB0aGlzLmdldFdvcmxkKCkuZ2V0RW50aXRpZXMoKTtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgbWluID0gbmV3IFZlY3RvcjMocG9zaXRpb24uZ2V0WCgpIC0gcmFkaXVzLCBwb3NpdGlvbi5nZXRZKCkgLSByYWRpdXMsIHBvc2l0aW9uLmdldFooKSAtIHJhZGl1cyk7XG4gICAgICAgIGNvbnN0IG1heCA9IG5ldyBWZWN0b3IzKHBvc2l0aW9uLmdldFgoKSArIHJhZGl1cywgcG9zaXRpb24uZ2V0WSgpICsgcmFkaXVzLCBwb3NpdGlvbi5nZXRaKCkgKyByYWRpdXMpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IGVudGl0aWVzLmZpbHRlcigoZW50aXR5KSA9PiB7XG4gICAgICAgICAgICBpZiAoZW50aXR5LnJ1bnRpbWVJZCA9PT0gdGhpcy5ydW50aW1lSWQpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBlbnRpdHkuZ2V0UG9zaXRpb24oKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG1pbi5nZXRYKCkgPCBwb3NpdGlvbi5nZXRYKCkgJiZcbiAgICAgICAgICAgICAgICBtYXguZ2V0WCgpID4gcG9zaXRpb24uZ2V0WCgpICYmXG4gICAgICAgICAgICAgICAgbWluLmdldFkoKSA8IHBvc2l0aW9uLmdldFkoKSAmJlxuICAgICAgICAgICAgICAgIG1heC5nZXRZKCkgPiBwb3NpdGlvbi5nZXRZKCkgJiZcbiAgICAgICAgICAgICAgICBtaW4uZ2V0WigpIDwgcG9zaXRpb24uZ2V0WigpICYmXG4gICAgICAgICAgICAgICAgbWF4LmdldFooKSA+IHBvc2l0aW9uLmdldFooKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRPRE86IHNvcnQgZW50aXRpZXMgYmFzZWQgb24gZGlzdGFuY2VcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59XG4iXSwibmFtZXMiOlsiY2xvc2VzdCIsInBvc2l0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBaUJBLE1BQXFCLGVBQWUsUUFBUyxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJekMsT0FBaUIsTUFBQSxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLakIsT0FBYyxjQUFpQixHQUFBLEVBQUEsQ0FBQTtBQUFBLEVBRXZCLFNBQUEsQ0FBQTtBQUFBLEVBRUUsTUFBQSxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxRQUFBLEdBQTRCLElBQUksZUFBZ0IsRUFBQSxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLaEQsVUFBQSxHQUErQixJQUFJLGdCQUFpQixFQUFBLENBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFhOUQsV0FBQSxDQUFZLE9BQWMsTUFBZ0IsRUFBQTtBQUM3QyxJQUFNLEtBQUEsQ0FBQSxFQUFFLE9BQU8sQ0FBQSxDQUFBO0FBQ2YsSUFBQSxNQUFBLENBQU8sY0FBa0IsSUFBQSxFQUFBLENBQUE7QUFDekIsSUFBQSxJQUFBLENBQUssWUFBWSxNQUFPLENBQUEsY0FBQSxDQUFBO0FB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
|
|
413
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5LmVzLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW50aXR5L0VudGl0eS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWV0YWRhdGFNYW5hZ2VyLCB7IEZsYWdUeXBlLCBNZXRhZGF0YUZsYWcgfSBmcm9tICcuL01ldGFkYXRhJztcbmltcG9ydCBBZGRBY3RvclBhY2tldCBmcm9tICcuLi9uZXR3b3JrL3BhY2tldC9BZGRBY3RvclBhY2tldCc7XG5pbXBvcnQgQXR0cmlidXRlTWFuYWdlciBmcm9tICcuL0F0dHJpYnV0ZSc7XG5pbXBvcnQgTW92ZUFjdG9yQWJzb2x1dGVQYWNrZXQgZnJvbSAnLi4vbmV0d29yay9wYWNrZXQvTW92ZUFjdG9yQWJzb2x1dGVQYWNrZXQnO1xuaW1wb3J0IHR5cGUgUGxheWVyIGZyb20gJy4uL1BsYXllcic7XG5pbXBvcnQgUG9zaXRpb24gZnJvbSAnLi4vd29ybGQvUG9zaXRpb24nO1xuaW1wb3J0IFJlbW92ZUFjdG9yUGFja2V0IGZyb20gJy4uL25ldHdvcmsvcGFja2V0L1JlbW92ZUFjdG9yUGFja2V0JztcbmltcG9ydCB0eXBlIFNlcnZlciBmcm9tICcuLi9TZXJ2ZXInO1xuaW1wb3J0IFRleHRUeXBlIGZyb20gJy4uL25ldHdvcmsvdHlwZS9UZXh0VHlwZSc7XG5pbXBvcnQgVmVjdG9yMyBmcm9tICcuLi9tYXRoL1ZlY3RvcjMnO1xuaW1wb3J0IHR5cGUgV29ybGQgZnJvbSAnLi4vd29ybGQvV29ybGQnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGNsYXNzIGZvciBhbGwgZW50aXRpZXMgaW5jbHVkaW5nIGBQbGF5ZXJgLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW50aXR5IGV4dGVuZHMgUG9zaXRpb24ge1xuICAgIC8qKlxuICAgICAqIFRoZSBlbnRpdHkncyBuYW1lc3BhY2UgSUQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBNT0JfSUQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBnbG9iYWwgcnVudGltZSBpZCBjb3VudGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcnVudGltZUlkQ291bnQgPSAwbjtcblxuICAgIHByaXZhdGUgcnVudGltZUlkOiBiaWdpbnQ7XG5cbiAgICBwcm90ZWN0ZWQgc2VydmVyOiBTZXJ2ZXI7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGE6IE1ldGFkYXRhTWFuYWdlciA9IG5ldyBNZXRhZGF0YU1hbmFnZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVNYW5hZ2VyID0gbmV3IEF0dHJpYnV0ZU1hbmFnZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEVudGl0eSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge1dvcmxkfSB3b3JsZCAtIFRoZSB3b3JsZCB0aGUgZW50aXR5IGJlbG9uZ3MgdG8uXG4gICAgICogQHBhcmFtIHtTZXJ2ZXJ9IHNlcnZlciAtIFRoZSBzZXJ2ZXIgaW5zdGFuY2UuXG4gICAgICogQHJldHVybnMge0VudGl0eX0gVGhlIGVudGl0eSBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBlbnRpdHkgPSBuZXcgRW50aXR5KHRoaXMud29ybGQsIHRoaXMuc2VydmVyKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iod29ybGQ6IFdvcmxkLCBzZXJ2ZXI6IFNlcnZlcikge1xuICAgICAgICBzdXBlcih7IHdvcmxkIH0pOyAvLyBUT0RPXG4gICAgICAgIEVudGl0eS5ydW50aW1lSWRDb3VudCArPSAxbjtcbiAgICAgICAgdGhpcy5ydW50aW1lSWQgPSBFbnRpdHkucnVudGltZUlkQ291bnQ7XG4gICAgICAgIHRoaXMuc2VydmVyID0gc2VydmVyO1xuXG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0TG9uZyhNZXRhZGF0YUZsYWcuSU5ERVgsIDBuKTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YS5zZXRTaG9ydChNZXRhZGF0YUZsYWcuTUFYX0FJUiwgMzAwKTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YS5zZXRMb25nKE1ldGFkYXRhRmxhZy5FTlRJVFlfTEVBRF9IT0xERVJfSUQsIC0xbik7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0RmxvYXQoTWV0YWRhdGFGbGFnLlNDQUxFLCAxKTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YS5zZXRGbG9hdChNZXRhZGF0YUZsYWcuQk9VTkRJTkdCT1hfV0lEVEgsIDAuNik7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0RmxvYXQoTWV0YWRhdGFGbGFnLkJPVU5ESU5HQk9YX0hFSUdIVCwgMS44KTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YS5zZXRTaG9ydChNZXRhZGF0YUZsYWcuQUlSLCAwKTtcblxuICAgICAgICB0aGlzLnNldEdlbmVyaWNGbGFnKE1ldGFkYXRhRmxhZy5BRkZFQ1RFRF9CWV9HUkFWSVRZLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRHZW5lcmljRmxhZyhNZXRhZGF0YUZsYWcuSEFTX0NPTExJU0lPTiwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBlbnRpdHkncyBydW50aW1lIGlkLlxuICAgICAqIEByZXR1cm5zIHtiaWdpbnR9IFRoZSBlbnRpdHkncyBydW50aW1lIGlkLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGVudGl0eUlkID0gZW50aXR5LmdldFJ1bnRpbWVJZCgpO1xuICAgICAqIGNvbnNvbGUubG9nKGVudGl0eUlkKTsgLy8gRXguIE91dHB1dDogMW5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UnVudGltZUlkKCk6IGJpZ2ludCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJ1bnRpbWVJZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaXJlZCBldmVyeSB0aWNrIGZyb20gdGhlIGV2ZW50IHN1YnNjcmlwdGlvbiBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRpY2sgLSBUaGUgY3VycmVudCB0aWNrLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB1cGRhdGUgaXMgY29tcGxldGUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZW50aXR5LnVwZGF0ZSgxMCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVudXNlZC1pbXBvcnRzL25vLXVudXNlZC12YXJzXG4gICAgcHVibGljIGFzeW5jIHVwZGF0ZSh0aWNrOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY29sbGlzaW9ucyA9IGF3YWl0IHRoaXMuZ2V0TmVhcmJ5RW50aXRpZXMoMC41KTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoY29sbGlzaW9ucy5tYXAoYXN5bmMgKGVudGl0eSkgPT4gZW50aXR5Lm9uQ29sbGlkZSh0aGlzKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgc2VydmVyIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm5zIHtTZXJ2ZXJ9IFRoZSBzZXJ2ZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3Qgc2VydmVyID0gZW50aXR5LmdldFNlcnZlcigpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTZXJ2ZXIoKTogU2VydmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgZW50aXR5J3MgbmFtZSB0YWcuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSB0YWcuXG4gICAgICovXG4gICAgcHVibGljIHNldE5hbWVUYWcobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWV0YWRhdGEuc2V0U3RyaW5nKE1ldGFkYXRhRmxhZy5OQU1FVEFHLCBuYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwcm9wZXJ0eUlkIC0gVGhlIHByb3BlcnR5IGlkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmbGFnSWQgLSBUaGUgZmxhZyBpZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFt2YWx1ZT10cnVlXSAtIFRoZSBmbGFnIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RmxhZ1R5cGV9IFtwcm9wZXJ0eVR5cGU9RmxhZ1R5cGUuTE9OR10gLSBUaGUgcHJvcGVydHkgdHlwZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0RGF0YUZsYWcocHJvcGVydHlJZDogbnVtYmVyLCBmbGFnSWQ6IG51bWJlciwgdmFsdWUgPSB0cnVlLCBwcm9wZXJ0eVR5cGUgPSBGbGFnVHlwZS5MT05HKTogdm9pZCB7XG4gICAgICAgIC8vIEFsbCBnZW5lcmljIGZsYWdzIGFyZSB3cml0dGVuIGFzIExvbmdzIChiaWdpbnRzKSA2NGJpdFxuICAgICAgICBjb25zdCBmbGFnSWQ2NCA9IEJpZ0ludChmbGFnSWQpO1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgc2FtZSB2YWx1ZSBpcyBhbHJlYWR5IHNldFxuICAgICAgICBpZiAodGhpcy5nZXREYXRhRmxhZyhwcm9wZXJ0eUlkLCBmbGFnSWQ2NCkgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBmbGFncyA9IHRoaXMubWV0YWRhdGEuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eUlkKSBhcyBiaWdpbnQ7XG4gICAgICAgICAgICB0aGlzLm1ldGFkYXRhLnNldFByb3BlcnR5VmFsdWUocHJvcGVydHlJZCwgcHJvcGVydHlUeXBlLCBmbGFncyBeICgxbiA8PCBmbGFnSWQ2NCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcHJvcGVydHlJZCAtIFRoZSBwcm9wZXJ0eSBpZC5cbiAgICAgKiBAcGFyYW0ge2JpZ2ludH0gZmxhZ0lkIC0gVGhlIGZsYWcgaWQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRoZSBmbGFnIHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREYXRhRmxhZyhwcm9wZXJ0eUlkOiBudW1iZXIsIGZsYWdJZDogYmlnaW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoKHRoaXMubWV0YWRhdGEuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eUlkKSBhcyBiaWdpbnQpICYgKDFuIDw8IGZsYWdJZCkpID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBmbGFnSWQgLSBUaGUgZmxhZyBpZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFt2YWx1ZT10cnVlXSAtIFRoZSBmbGFnIHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRHZW5lcmljRmxhZyhmbGFnSWQ6IG51bWJlciwgdmFsdWUgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RGF0YUZsYWcoZmxhZ0lkID49IDY0ID8gOTQgOiBNZXRhZGF0YUZsYWcuSU5ERVgsIGZsYWdJZCAlIDY0LCB2YWx1ZSwgRmxhZ1R5cGUuTE9ORyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAcmV0dXJucyB7QXR0cmlidXRlTWFuYWdlcn0gVGhlIGF0dHJpYnV0ZSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBdHRyaWJ1dGVNYW5hZ2VyKCk6IEF0dHJpYnV0ZU1hbmFnZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQHJldHVybnMge01ldGFkYXRhTWFuYWdlcn0gVGhlIG1ldGFkYXRhIG1hbmFnZXIuXG4gICAgICovXG4gICAgcHVibGljIGdldE1ldGFkYXRhTWFuYWdlcigpOiBNZXRhZGF0YU1hbmFnZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRhZGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcGF3biB0aGUgZW50aXR5LlxuICAgICAqIEB0b2RvIGBtb3Rpb25gLCBgcGl0Y2hgICYgYHlhd2AgaXMgdW5pbXBsZW1lbnRlZC5cbiAgICAgKiBAcGFyYW0ge1BsYXllcn0gW3BsYXllcl0gLSBUaGUgcGxheWVyIHRvIHNlbmQgdGhlIHBhY2tldCB0by5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZW50aXR5IGlzIHNwYXduZWQuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNlbmRTcGF3bihwbGF5ZXI/OiBQbGF5ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcGxheWVyczogUGxheWVyW10gPSBwbGF5ZXJcbiAgICAgICAgICAgID8gW3BsYXllcl1cbiAgICAgICAgICAgIDogKHRoaXMuZ2V0V29ybGQoKVxuICAgICAgICAgICAgICAgICAgLmdldEVudGl0aWVzKClcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVudGl0eSkgPT4gZW50aXR5LmlzUGxheWVyKCkpIGFzIFBsYXllcltdKTtcblxuICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgQWRkQWN0b3JQYWNrZXQoKTtcbiAgICAgICAgcGFja2V0LnJ1bnRpbWVFbnRpdHlJZCA9IHRoaXMuZ2V0UnVudGltZUlkKCk7XG4gICAgICAgIHBhY2tldC50eXBlID0gKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KS5NT0JfSUQ7IC8vIFRPRE9cbiAgICAgICAgcGFja2V0LnBvc2l0aW9uID0gdGhpcztcbiAgICAgICAgLy8gVE9ETzogbW90aW9uXG4gICAgICAgIHBhY2tldC5tb3Rpb24gPSBuZXcgVmVjdG9yMygwLCAwLCAwKTtcbiAgICAgICAgcGFja2V0LnBpdGNoID0gMDtcbiAgICAgICAgcGFja2V0LnlhdyA9IDA7XG4gICAgICAgIHBhY2tldC5oZWFkWWF3ID0gMDtcbiAgICAgICAgcGFja2V0Lm1ldGFkYXRhID0gdGhpcy5tZXRhZGF0YS5nZXRNZXRhZGF0YSgpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwbGF5ZXJzLm1hcChhc3luYyAocCkgPT4gcC5nZXROZXR3b3JrU2Vzc2lvbigpLmdldENvbm5lY3Rpb24oKS5zZW5kRGF0YVBhY2tldChwYWNrZXQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzcGF3biB0aGUgZW50aXR5LlxuICAgICAqIEBwYXJhbSB7UGxheWVyfSBbcGxheWVyXSAtIFRoZSBwbGF5ZXIgdG8gc2VuZCB0aGUgcGFja2V0IHRvLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBlbnRpdHkgaXMgZGVzcGF3bmVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZW5kRGVzcGF3bihwbGF5ZXI/OiBQbGF5ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcGxheWVyczogUGxheWVyW10gPSBwbGF5ZXJcbiAgICAgICAgICAgID8gW3BsYXllcl1cbiAgICAgICAgICAgIDogKHRoaXMuZ2V0V29ybGQoKVxuICAgICAgICAgICAgICAgICAgLmdldEVudGl0aWVzKClcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVudGl0eSkgPT4gZW50aXR5LmlzUGxheWVyKCkpIGFzIFBsYXllcltdKTtcblxuICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgUmVtb3ZlQWN0b3JQYWNrZXQoKTtcbiAgICAgICAgcGFja2V0LnVuaXF1ZUVudGl0eUlkID0gdGhpcy5ydW50aW1lSWQ7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHBsYXllcnMubWFwKGFzeW5jIChwKSA9PiBwLmdldE5ldHdvcmtTZXNzaW9uKCkuZ2V0Q29ubmVjdGlvbigpLnNlbmREYXRhUGFja2V0KHBhY2tldCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGVudGl0eSdzIHBvc2l0aW9uIGFuZCBub3RpZnkgdGhlIGNsaWVudHMuXG4gICAgICogQHBhcmFtIHtWZWN0b3IzfSBwb3NpdGlvbiAtIFRoZSBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcG9zaXRpb24gaXMgc2V0LlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZXRQb3NpdGlvbihwb3NpdGlvbjogVmVjdG9yMyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnNldFgocG9zaXRpb24uZ2V0WCgpLCB0cnVlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRZKHBvc2l0aW9uLmdldFkoKSwgdHJ1ZSk7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0Wihwb3NpdGlvbi5nZXRaKCksIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuc2VuZFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VuZCB0aGUgcG9zaXRpb24gdG8gYWxsIHRoZSBwbGF5ZXJzIGluIHRoZSBzYW1lIHdvcmxkLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwb3NpdGlvbiBpcyBzZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZW5kUG9zaXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgdGhpcy5nZXRTZXJ2ZXIoKVxuICAgICAgICAgICAgICAgIC5nZXRTZXNzaW9uTWFuYWdlcigpXG4gICAgICAgICAgICAgICAgLmdldEFsbFBsYXllcnMoKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHBsYXllcikgPT4gcGxheWVyLmdldFdvcmxkKCkuZ2V0VW5pcXVlSWQoKSA9PT0gdGhpcy5nZXRXb3JsZCgpLmdldFVuaXF1ZUlkKCkpXG4gICAgICAgICAgICAgICAgLm1hcChhc3luYyAocGxheWVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBNb3ZlQWN0b3JBYnNvbHV0ZVBhY2tldCgpO1xuICAgICAgICAgICAgICAgICAgICBwYWNrZXQucnVudGltZUVudGl0eUlkID0gdGhpcy5ydW50aW1lSWQ7XG4gICAgICAgICAgICAgICAgICAgIHBhY2tldC5wb3NpdGlvbiA9IHRoaXMuZ2V0UG9zaXRpb24oKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICAgICAgICAgIHBhY2tldC5yb3RhdGlvblggPSAwO1xuICAgICAgICAgICAgICAgICAgICBwYWNrZXQucm90YXRpb25ZID0gMDtcbiAgICAgICAgICAgICAgICAgICAgcGFja2V0LnJvdGF0aW9uWiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHBsYXllci5nZXROZXR3b3JrU2Vzc2lvbigpLmdldENvbm5lY3Rpb24oKS5zZW5kRGF0YVBhY2tldChwYWNrZXQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VuZCBhIG1lc3NhZ2UgdG8gYW4gZW50aXR5LlxuICAgICAqIEByZW1hcmtzIFRoaXMgd2lsbCBzaWxlbnRseSBmYWlsIG9uIG5vbi1jbGllbnQtY29udHJvbGxlZCBlbnRpdGllcy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIFRoZSBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB7VGV4dFR5cGV9IFt0eXBlPVRleHRUeXBlLlJhd10gLSBUaGUgdGV4dCB0eXBlLlxuICAgICAqIEBleGFtcGxlIFNlbmQgXCJIZWxsbyBXb3JsZCFcIiB0byBhIGNsaWVudDpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogZW50aXR5LnNlbmRNZXNzYWdlKCdIZWxsbyBXb3JsZCEnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VuZE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCB0eXBlOiBUZXh0VHlwZSA9IFRleHRUeXBlLlJhdyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZlclxuICAgICAgICAgICAgLmdldExvZ2dlcigpXG4gICAgICAgICAgICA/Lndhcm4oYEVudGl0eS9zZW5kTWVzc2FnZSBpcyBub3QgaW1wbGVtZW50ZWQ6IChtZXNzYWdlOiAke21lc3NhZ2V9LCB0eXBlOiAke3R5cGV9KWAsICdFbnRpdHkvc2VuZE1lc3NhZ2UnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGVudGl0eSdzIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtWZWN0b3IzfSBUaGUgZW50aXR5J3MgcG9zaXRpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgcG9zaXRpb24gPSBlbnRpdHkuZ2V0UG9zaXRpb24oKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb24oKTogVmVjdG9yMyB7XG4gICAgICAgIHJldHVybiBuZXcgVmVjdG9yMyh0aGlzLmdldFgoKSwgdGhpcy5nZXRZKCksIHRoaXMuZ2V0WigpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHggcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgeCBjb29yZGluYXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3N1cHByZXNzPWZhbHNlXSAtIElmIHRydWUsIHRoZSBjbGllbnQgd29uJ3QgYmUgbm90aWZpZWQgYWJvdXQgdGhlIHBvc2l0aW9uIGNoYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgeCBwb3NpdGlvbiBpcyBzZXQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogYXdhaXQgZW50aXR5LnNldFgoMTApO1xuICAgICAqIGBgYFxuICAgICAqIEByZW1hcmtzIFRoaXMgbWV0aG9kIHdpbGwgYWxzbyBzZW5kIHRoZSBwb3NpdGlvbiB1cGRhdGUgdG8gdGhlIGNsaWVudCBpZiBgc3VwcHJlc3NgIGlzIGBmYWxzZWAuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNldFgoeDogbnVtYmVyLCBzdXBwcmVzcyA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHN1cGVyLnNldFguYmluZCh0aGlzKSh4KTtcbiAgICAgICAgaWYgKHN1cHByZXNzICYmICF0aGlzLmlzUGxheWVyKCkpIGF3YWl0IHRoaXMuc2VuZFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSB5IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gVGhlIHkgY29vcmRpbmF0ZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtzdXBwcmVzcz1mYWxzZV0gLSBJZiB0cnVlLCB0aGUgY2xpZW50IHdvbid0IGJlIG5vdGlmaWVkIGFib3V0IHRoZSBwb3NpdGlvbiBjaGFuZ2UuXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHkgcG9zaXRpb24gaXMgc2V0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGF3YWl0IGVudGl0eS5zZXRZKDEwKTtcbiAgICAgKiBgYGBcbiAgICAgKiBAcmVtYXJrcyBUaGlzIG1ldGhvZCB3aWxsIGFsc28gc2VuZCB0aGUgcG9zaXRpb24gdXBkYXRlIHRvIHRoZSBjbGllbnQgaWYgYHN1cHByZXNzYCBpcyBgZmFsc2VgLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZXRZKHk6IG51bWJlciwgc3VwcHJlc3MgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBzdXBlci5zZXRZLmJpbmQodGhpcykoeSk7XG4gICAgICAgIGlmIChzdXBwcmVzcyAmJiAhdGhpcy5pc1BsYXllcigpKSBhd2FpdCB0aGlzLnNlbmRQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgeiBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0geiAtIFRoZSB6IGNvb3JkaW5hdGUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbc3VwcHJlc3M9ZmFsc2VdIC0gSWYgdHJ1ZSwgdGhlIGNsaWVudCB3b24ndCBiZSBub3RpZmllZCBhYm91dCB0aGUgcG9zaXRpb24gY2hhbmdlLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB6IHBvc2l0aW9uIGlzIHNldC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBhd2FpdCBlbnRpdHkuc2V0WigxMCk7XG4gICAgICogYGBgXG4gICAgICogQHJlbWFya3MgVGhpcyBtZXRob2Qgd2lsbCBhbHNvIHNlbmQgdGhlIHBvc2l0aW9uIHVwZGF0ZSB0byB0aGUgY2xpZW50IGlmIGBzdXBwcmVzc2AgaXMgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2V0Wih6OiBudW1iZXIsIHN1cHByZXNzID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgc3VwZXIuc2V0Wi5iaW5kKHRoaXMpKHopO1xuICAgICAgICBpZiAoc3VwcHJlc3MgJiYgIXRoaXMuaXNQbGF5ZXIoKSkgYXdhaXQgdGhpcy5zZW5kUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZW50aXR5IGlzIGEgcGxheWVyLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIGVudGl0eSBpcyBwbGF5ZXItY29udHJvbGxlZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogaWYgKGVudGl0eS5pc1BsYXllcigpKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdFbnRpdHkgaXMgYSBwbGF5ZXInKTtcbiAgICAgKiB9IGVsc2Uge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnRW50aXR5IGlzIG5vdCBhIHBsYXllcicpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNQbGF5ZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZW50aXR5IGlzIGEgY29uc29sZSBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSBlbnRpdHkgaXMgY29uc29sZS1jb250cm9sbGVkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBpZiAoZW50aXR5LmlzQ29uc29sZSgpKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdFbnRpdHkgaXMgYSBjb25zb2xlJyk7XG4gICAgICogfSBlbHNlIHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ0VudGl0eSBpcyBub3QgYSBjb25zb2xlJyk7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0NvbnNvbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGVudGl0eSB0eXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbnRpdHkncyBuYW1lc3BhY2UgSUQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgZW50aXR5VHlwZSA9IGVudGl0eS5nZXRUeXBlKCk7XG4gICAgICogY29uc29sZS5sb2coYEVudGl0eSB0eXBlOiAke2VudGl0eVR5cGV9YCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldFR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkuTU9CX0lEO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgZW50aXR5J3MgKHBvdGVudGlhbGx5IGN1c3RvbSkgbmFtZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW50aXR5J3MgbmFtZSB3aXRob3V0IGZvcm1hdHRpbmcgKHVzdWFsbHkgcHJlZml4ICYgc3VmZml4KS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBuYW1lID0gZW50aXR5LmdldE5hbWUoKTtcbiAgICAgKiBjb25zb2xlLmxvZyhgRW50aXR5IG5hbWU6ICR7bmFtZX1gKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRGb3JtYXR0ZWRVc2VybmFtZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgZW50aXR5J3MgZm9ybWF0dGVkIG5hbWUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGVudGl0eSdzIGZvcm1hdHRlZCBuYW1lIChpbmNsdWRpbmcgcHJlZml4ICYgc3VmZml4KS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBmb3JtYXR0ZWROYW1lID0gZW50aXR5LmdldEZvcm1hdHRlZFVzZXJuYW1lKCk7XG4gICAgICogY29uc29sZS5sb2coYEVudGl0eSBmb3JtYXR0ZWQgbmFtZTogJHtmb3JtYXR0ZWROYW1lfWApO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGb3JtYXR0ZWRVc2VybmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tZXRhZGF0YS5nZXRTdHJpbmcoTWV0YWRhdGFGbGFnLk5BTUVUQUcpIHx8XG4gICAgICAgICAgICAvLyBSZXBsYWNlIGFsbCAnXycgd2l0aCBhICcgJyBhbmQgY2FwaXRhbGl6ZSBlYWNoIHdvcmQgYWZ0ZXJ3YXJkcyxcbiAgICAgICAgICAgIC8vIHNob3VsZCBwcm9iYWJseSBiZSByZXBsYWNlZCB3aXRoIHJlZ2V4LlxuICAgICAgICAgICAgKCh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkuTU9CX0lEIGFzIHN0cmluZylcbiAgICAgICAgICAgICAgICAuc3BsaXQoJzonKVsxXSFcbiAgICAgICAgICAgICAgICAucmVwbGFjZUFsbCgnXycsICcgJylcbiAgICAgICAgICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAgICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmRbMF0hLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEsIHdvcmQubGVuZ3RoKSlcbiAgICAgICAgICAgICAgICAuam9pbignICcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlyZWQgd2hlbiBhbiBlbnRpdHkgY29sbGlkZXMgd2l0aCBhbm90aGVyIGVudGl0eS5cbiAgICAgKiBAcGFyYW0ge0VudGl0eX0gZW50aXR5IC0gVGhlIGVudGl0eSBjb2xsaWRlZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb2xsaXNpb24gaXMgaGFuZGxlZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBlbnRpdHkub25Db2xsaWRlKG90aGVyRW50aXR5KS50aGVuKCgpID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ0NvbGxpc2lvbiBoYW5kbGVkJyk7XG4gICAgICogfSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIG9uQ29sbGlkZShlbnRpdHk6IEVudGl0eSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB2b2lkIGVudGl0eTsgLy8gVHJpY2sgdGhlIGxpbnRlci5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBuZWFyZXN0IGVudGl0eSBmcm9tIHRoZSBjdXJyZW50IGVudGl0eS5cbiAgICAgKiBAdG9kbyBDdXN0b21pemFibGUgcmFkaXVzXG4gICAgICogQHBhcmFtIHtFbnRpdHlbXX0gW2VudGl0aWVzPXRoaXMuZ2V0V29ybGQoKS5nZXRFbnRpdGllcygpXSAtIFRoZSBlbnRpdGllcyB0byBjb21wYXJlIHRoZSBkaXN0YW5jZSBiZXR3ZWVuLlxuICAgICAqIEByZXR1cm5zIHtFbnRpdHlbXX0gVGhlIG5lYXJlc3QgZW50aXR5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IG5lYXJlc3RFbnRpdHkgPSBlbnRpdHkuZ2V0TmVhcmVzdEVudGl0eSgpO1xuICAgICAqIGNvbnNvbGUubG9nKCdOZWFyZXN0IGVudGl0eTonLCBuZWFyZXN0RW50aXR5KTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0TmVhcmVzdEVudGl0eShlbnRpdGllczogRW50aXR5W10gPSB0aGlzLmdldFdvcmxkKCkuZ2V0RW50aXRpZXMoKSk6IEVudGl0eVtdIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBuZXcgVmVjdG9yMyh0aGlzLmdldFgoKSwgdGhpcy5nZXRZKCksIHRoaXMuZ2V0WigpKTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSAoYTogVmVjdG9yMywgYjogVmVjdG9yMykgPT5cbiAgICAgICAgICAgIE1hdGguaHlwb3QoYi5nZXRYKCkgLSBhLmdldFgoKSwgYi5nZXRZKCkgLSBhLmdldFkoKSwgYi5nZXRaKCkgLSBhLmdldFooKSk7XG5cbiAgICAgICAgY29uc3QgY2xvc2VzdCA9ICh0YXJnZXQ6IFZlY3RvcjMsIHBvaW50czogRW50aXR5W10sIGVwcyA9IDAuMDAwMDEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlcyA9IHBvaW50cy5tYXAoKGUpID0+IGRpc3RhbmNlKHRhcmdldCwgbmV3IFZlY3RvcjMoZS5nZXRYKCksIGUuZ2V0WSgpLCBlLmdldFooKSkpKTtcbiAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3QgPSBNYXRoLm1pbiguLi5kaXN0YW5jZXMpO1xuICAgICAgICAgICAgcmV0dXJuIHBvaW50cy5maW5kKChfZSwgaSkgPT4gZGlzdGFuY2VzW2ldISAtIGNsb3Nlc3QgPCBlcHMpITtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgY2xvc2VzdChcbiAgICAgICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgICAgICBlbnRpdGllcy5maWx0ZXIoKGVudGl0eSkgPT4gZW50aXR5LnJ1bnRpbWVJZCAhPT0gdGhpcy5ydW50aW1lSWQpXG4gICAgICAgICAgICApXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGVudGl0aWVzIHdpdGhpbiBhIHJhZGl1cyBvZiB0aGUgY3VycmVudCBlbnRpdHkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhZGl1cyAtIFRoZSByYWRpdXMuXG4gICAgICogQHJldHVybnMge1Byb21pc2U8RW50aXR5W10+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBlbnRpdGllcyB3aXRoaW4gdGhlIHNwZWNpZmllZCByYWRpdXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgbmVhcmJ5RW50aXRpZXMgPSBhd2FpdCBlbnRpdHkuZ2V0TmVhcmJ5RW50aXRpZXMoMTApO1xuICAgICAqIGNvbnNvbGUubG9nKCdOZWFyYnkgZW50aXRpZXM6JywgbmVhcmJ5RW50aXRpZXMpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBnZXROZWFyYnlFbnRpdGllcyhyYWRpdXM6IG51bWJlcik6IFByb21pc2U8RW50aXR5W10+IHtcbiAgICAgICAgY29uc3QgZW50aXRpZXMgPSB0aGlzLmdldFdvcmxkKCkuZ2V0RW50aXRpZXMoKTtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgbWluID0gbmV3IFZlY3RvcjMocG9zaXRpb24uZ2V0WCgpIC0gcmFkaXVzLCBwb3NpdGlvbi5nZXRZKCkgLSByYWRpdXMsIHBvc2l0aW9uLmdldFooKSAtIHJhZGl1cyk7XG4gICAgICAgIGNvbnN0IG1heCA9IG5ldyBWZWN0b3IzKHBvc2l0aW9uLmdldFgoKSArIHJhZGl1cywgcG9zaXRpb24uZ2V0WSgpICsgcmFkaXVzLCBwb3NpdGlvbi5nZXRaKCkgKyByYWRpdXMpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IGVudGl0aWVzLmZpbHRlcigoZW50aXR5KSA9PiB7XG4gICAgICAgICAgICBpZiAoZW50aXR5LnJ1bnRpbWVJZCA9PT0gdGhpcy5ydW50aW1lSWQpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBlbnRpdHkuZ2V0UG9zaXRpb24oKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG1pbi5nZXRYKCkgPCBwb3NpdGlvbi5nZXRYKCkgJiZcbiAgICAgICAgICAgICAgICBtYXguZ2V0WCgpID4gcG9zaXRpb24uZ2V0WCgpICYmXG4gICAgICAgICAgICAgICAgbWluLmdldFkoKSA8IHBvc2l0aW9uLmdldFkoKSAmJlxuICAgICAgICAgICAgICAgIG1heC5nZXRZKCkgPiBwb3NpdGlvbi5nZXRZKCkgJiZcbiAgICAgICAgICAgICAgICBtaW4uZ2V0WigpIDwgcG9zaXRpb24uZ2V0WigpICYmXG4gICAgICAgICAgICAgICAgbWF4LmdldFooKSA+IHBvc2l0aW9uLmdldFooKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRPRE86IHNvcnQgZW50aXRpZXMgYmFzZWQgb24gZGlzdGFuY2VcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59XG4iXSwibmFtZXMiOlsiY2xvc2VzdCIsInBvc2l0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBaUJBLE1BQXFCLGVBQWUsUUFBUyxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJekMsT0FBaUIsTUFBQSxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLakIsT0FBYyxjQUFpQixHQUFBLEVBQUEsQ0FBQTtBQUFBLEVBRXZCLFNBQUEsQ0FBQTtBQUFBLEVBRUUsTUFBQSxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxRQUFBLEdBQTRCLElBQUksZUFBZ0IsRUFBQSxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLaEQsVUFBQSxHQUErQixJQUFJLGdCQUFpQixFQUFBLENBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFhOUQsV0FBQSxDQUFZLE9BQWMsTUFBZ0IsRUFBQTtBQUM3QyxJQUFNLEtBQUEsQ0FBQSxFQUFFLE9BQU8sQ0FBQSxDQUFBO0FBQ2YsSUFBQSxNQUFBLENBQU8sY0FBa0IsSUFBQSxFQUFBLENBQUE7QUFDekIsSUFBQSxJ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
|