{ "name": "VotingRoundApp", "structs": { "VotingPreconditions": [ { "name": "is_voting_open", "type": "uint64" }, { "name": "is_allowed_to_vote", "type": "uint64" }, { "name": "has_already_voted", "type": "uint64" }, { "name": "current_time", "type": "uint64" } ] }, "methods": [ { "name": "create", "args": [ { "type": "string", "name": "vote_id" }, { "type": "byte[]", "name": "snapshot_public_key" }, { "type": "string", "name": "metadata_ipfs_cid" }, { "type": "uint64", "name": "start_time" }, { "type": "uint64", "name": "end_time" }, { "type": "uint8[]", "name": "option_counts" }, { "type": "uint64", "name": "quorum" }, { "type": "string", "name": "nft_image_url" } ], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "bootstrap", "args": [ { "type": "pay", "name": "fund_min_bal_req" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "close", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_preconditions", "args": [ { "type": "byte[]", "name": "signature" } ], "returns": { "type": "(uint64,uint64,uint64,uint64)", "struct": "VotingPreconditions" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "vote", "args": [ { "type": "pay", "name": "fund_min_bal_req" }, { "type": "byte[]", "name": "signature" }, { "type": "uint8[]", "name": "answer_ids" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 8, "bytes": 5 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "is_bootstrapped": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "aXNfYm9vdHN0cmFwcGVk" }, "voter_count": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dm90ZXJfY291bnQ=" }, "close_time": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "Y2xvc2VfdGltZQ==" }, "vote_id": { "keyType": "AVMString", "valueType": "AVMString", "key": "dm90ZV9pZA==" }, "snapshot_public_key": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "c25hcHNob3RfcHVibGljX2tleQ==" }, "metadata_ipfs_cid": { "keyType": "AVMString", "valueType": "AVMString", "key": "bWV0YWRhdGFfaXBmc19jaWQ=" }, "start_time": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "c3RhcnRfdGltZQ==" }, "end_time": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "ZW5kX3RpbWU=" }, "quorum": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "cXVvcnVt" }, "nft_image_url": { "keyType": "AVMString", "valueType": "AVMString", "key": "bmZ0X2ltYWdlX3VybA==" }, "nft_asset_id": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "bmZ0X2Fzc2V0X2lk" }, "option_counts": { "keyType": "AVMString", "valueType": "uint8[]", "key": "b3B0aW9uX2NvdW50cw==" }, "total_options": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dG90YWxfb3B0aW9ucw==" } }, "local": {}, "box": { "tally_box": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "Vg==" } } }, "maps": { "global": {}, "local": {}, "box": { "votes_by_account": { "keyType": "AVMBytes", "valueType": "uint8[]", "prefix": "" } } } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 664 ], "errorMessage": "Already closed" }, { "pc": [ 1217 ], "errorMessage": "Already voted" }, { "pc": [ 1295 ], "errorMessage": "Answer option index invalid" }, { "pc": [ 536 ], "errorMessage": "Can't have more than 112 questions" }, { "pc": [ 577 ], "errorMessage": "Can't have more than 128 vote options" }, { "pc": [ 485 ], "errorMessage": "End time should be after start time" }, { "pc": [ 491 ], "errorMessage": "End time should be in the future" }, { "pc": [ 924 ], "errorMessage": "Index access is out of bounds" }, { "pc": [ 595 ], "errorMessage": "Must not be already bootstrapped" }, { "pc": [ 1206 ], "errorMessage": "Not allowed to vote" }, { "pc": [ 1233 ], "errorMessage": "Number of answers incorrect" }, { "pc": [ 243, 274, 301, 313, 335 ], "errorMessage": "OnCompletion is not NoOp" }, { "pc": [ 632 ], "errorMessage": "Payment must be for the exact min balance requirement" }, { "pc": [ 1261 ], "errorMessage": "Payment must be the exact min balance" }, { "pc": [ 606, 1252 ], "errorMessage": "Payment must be to app address" }, { "pc": [ 1210 ], "errorMessage": "Voting not open" }, { "pc": [ 339 ], "errorMessage": "can only call when creating" }, { "pc": [ 246, 277, 304, 316 ], "errorMessage": "can only call when not creating" }, { "pc": [ 1386 ], "errorMessage": "check self.end_time exists" }, { "pc": [ 593, 1355 ], "errorMessage": "check self.is_bootstrapped exists" }, { "pc": [ 809 ], "errorMessage": "check self.metadata_ipfs_cid exists" }, { "pc": [ 1103 ], "errorMessage": "check self.nft_image_url exists" }, { "pc": [ 898, 1221, 1286 ], "errorMessage": "check self.option_counts exists" }, { "pc": [ 845 ], "errorMessage": "check self.quorum exists" }, { "pc": [ 1416 ], "errorMessage": "check self.snapshot_public_key exists" }, { "pc": [ 1372 ], "errorMessage": "check self.start_time exists" }, { "pc": [ 611 ], "errorMessage": "check self.total_options exists" }, { "pc": [ 673, 825, 1080 ], "errorMessage": "check self.vote_id exists" }, { "pc": [ 870, 1333 ], "errorMessage": "check self.voter_count exists" }, { "pc": [ 532 ], "errorMessage": "option_counts should be non-empty" }, { "pc": [ 256, 326 ], "errorMessage": "transaction type is pay" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBleGFtcGxlcy52b3Rpbmcudm90aW5nLlZvdGluZ1JvdW5kQXBwLl9fYWxnb3B5X2VudHJ5cG9pbnRfd2l0aF9pbml0KCkgLT4gdWludDY0OgptYWluOgogICAgaW50Y2Jsb2NrIDAgMSAxMCA4CiAgICBieXRlY2Jsb2NrICJpc19ib290c3RyYXBwZWQiICJ2b3Rlcl9jb3VudCIgInZvdGVfaWQiICJvcHRpb25fY291bnRzIiAiViIgImNsb3NlX3RpbWUiIDB4MDY4MTAxIDB4MzAzMTMyMzMzNDM1MzYzNzM4MzkgInNuYXBzaG90X3B1YmxpY19rZXkiICJtZXRhZGF0YV9pcGZzX2NpZCIgInN0YXJ0X3RpbWUiICJlbmRfdGltZSIgInF1b3J1bSIgIm5mdF9pbWFnZV91cmwiICJ0b3RhbF9vcHRpb25zIgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGJueiBtYWluX2FmdGVyX2lmX2Vsc2VAMgogICAgLy8gdm90aW5nL3ZvdGluZy5weTo1MQogICAgLy8gc2VsZi5pc19ib290c3RyYXBwZWQgPSBGYWxzZQogICAgYnl0ZWNfMCAvLyAiaXNfYm9vdHN0cmFwcGVkIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjUyLTUzCiAgICAvLyAjIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2b3RlcnMgd2hvIGhhdmUgdm90ZWQKICAgIC8vIHNlbGYudm90ZXJfY291bnQgPSBVSW50NjQoMCkKICAgIGJ5dGVjXzEgLy8gInZvdGVyX2NvdW50IgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CgptYWluX2FmdGVyX2lmX2Vsc2VAMjoKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NDkKICAgIC8vIGNsYXNzIFZvdGluZ1JvdW5kQXBwKEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9hZnRlcl9pZl9lbHNlQDEwCiAgICBwdXNoYnl0ZXNzIDB4YWU4OTdmNmIgMHhhNGU4ZDE2NCAweDk2NTYwNDdhIDB4YmNiMTU4OTYgMHg4NGE1M2M2ZSAvLyBtZXRob2QgImNyZWF0ZShzdHJpbmcsYnl0ZVtdLHN0cmluZyx1aW50NjQsdWludDY0LHVpbnQ4W10sdWludDY0LHN0cmluZyl2b2lkIiwgbWV0aG9kICJib290c3RyYXAocGF5KXZvaWQiLCBtZXRob2QgImNsb3NlKCl2b2lkIiwgbWV0aG9kICJnZXRfcHJlY29uZGl0aW9ucyhieXRlW10pKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiLCBtZXRob2QgInZvdGUocGF5LGJ5dGVbXSx1aW50OFtdKXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX2NyZWF0ZV9yb3V0ZUA1IG1haW5fYm9vdHN0cmFwX3JvdXRlQDYgbWFpbl9jbG9zZV9yb3V0ZUA3IG1haW5fZ2V0X3ByZWNvbmRpdGlvbnNfcm91dGVAOCBtYWluX3ZvdGVfcm91dGVAOQoKbWFpbl9hZnRlcl9pZl9lbHNlQDEwOgogICAgLy8gdm90aW5nL3ZvdGluZy5weTo0OQogICAgLy8gY2xhc3MgVm90aW5nUm91bmRBcHAoQVJDNENvbnRyYWN0KToKICAgIGludGNfMCAvLyAwCiAgICByZXR1cm4KCm1haW5fdm90ZV9yb3V0ZUA5OgogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjQ5CiAgICAvLyBjbGFzcyBWb3RpbmdSb3VuZEFwcChBUkM0Q29udHJhY3QpOgogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBkdXAKICAgIGd0eG5zIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gcGF5CiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgcGF5CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgY2FsbHN1YiB2b3RlCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX2dldF9wcmVjb25kaXRpb25zX3JvdXRlQDg6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE2MAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NDkKICAgIC8vIGNsYXNzIFZvdGluZ1JvdW5kQXBwKEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNjAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgY2FsbHN1YiBnZXRfcHJlY29uZGl0aW9ucwogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX2Nsb3NlX3JvdXRlQDc6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjExMAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgY2xvc2UKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fYm9vdHN0cmFwX3JvdXRlQDY6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjgyCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gdm90aW5nL3ZvdGluZy5weTo0OQogICAgLy8gY2xhc3MgVm90aW5nUm91bmRBcHAoQVJDNENvbnRyYWN0KToKICAgIHR4biBHcm91cEluZGV4CiAgICBpbnRjXzEgLy8gMQogICAgLQogICAgZHVwCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18xIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgLy8gdm90aW5nL3ZvdGluZy5weTo4MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBjYWxsc3ViIGJvb3RzdHJhcAogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9jcmVhdGVfcm91dGVANToKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NTgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChjcmVhdGU9InJlcXVpcmUiKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gY3JlYXRpbmcKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NDkKICAgIC8vIGNsYXNzIFZvdGluZ1JvdW5kQXBwKEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA1CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA2CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA3CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA4CiAgICBleHRyYWN0IDIgMAogICAgLy8gdm90aW5nL3ZvdGluZy5weTo1OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGNyZWF0ZT0icmVxdWlyZSIpCiAgICBjYWxsc3ViIGNyZWF0ZQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIF9wdXlhX2xpYi51dGlsLmVuc3VyZV9idWRnZXQocmVxdWlyZWRfYnVkZ2V0OiB1aW50NjQsIGZlZV9zb3VyY2U6IHVpbnQ2NCkgLT4gdm9pZDoKZW5zdXJlX2J1ZGdldDoKICAgIHByb3RvIDIgMAogICAgZnJhbWVfZGlnIC0yCiAgICBpbnRjXzIgLy8gMTAKICAgICsKCmVuc3VyZV9idWRnZXRfd2hpbGVfdG9wQDE6CiAgICBmcmFtZV9kaWcgMAogICAgZ2xvYmFsIE9wY29kZUJ1ZGdldAogICAgPgogICAgYnogZW5zdXJlX2J1ZGdldF9hZnRlcl93aGlsZUA3CiAgICBpdHhuX2JlZ2luCiAgICBwdXNoaW50IDYgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgcHVzaGludCA1IC8vIERlbGV0ZUFwcGxpY2F0aW9uCiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgYnl0ZWMgNiAvLyAweDA2ODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KICAgIGJ5dGVjIDYgLy8gMHgwNjgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KICAgIGZyYW1lX2RpZyAtMQogICAgc3dpdGNoIGVuc3VyZV9idWRnZXRfc3dpdGNoX2Nhc2VfMEAzIGVuc3VyZV9idWRnZXRfc3dpdGNoX2Nhc2VfMUA0CgplbnN1cmVfYnVkZ2V0X3N3aXRjaF9jYXNlX25leHRANjoKICAgIGl0eG5fc3VibWl0CiAgICBiIGVuc3VyZV9idWRnZXRfd2hpbGVfdG9wQDEKCmVuc3VyZV9idWRnZXRfc3dpdGNoX2Nhc2VfMUA0OgogICAgZ2xvYmFsIE1pblR4bkZlZQogICAgaXR4bl9maWVsZCBGZWUKICAgIGIgZW5zdXJlX2J1ZGdldF9zd2l0Y2hfY2FzZV9uZXh0QDYKCmVuc3VyZV9idWRnZXRfc3dpdGNoX2Nhc2VfMEAzOgogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBiIGVuc3VyZV9idWRnZXRfc3dpdGNoX2Nhc2VfbmV4dEA2CgplbnN1cmVfYnVkZ2V0X2FmdGVyX3doaWxlQDc6CiAgICByZXRzdWIKCgovLyBleGFtcGxlcy52b3Rpbmcudm90aW5nLml0b2EoaTogdWludDY0KSAtPiBieXRlczoKaXRvYToKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjQ5LTI1MAogICAgLy8gQHN1YnJvdXRpbmUKICAgIC8vIGRlZiBpdG9hKGk6IFVJbnQ2NCkgLT4gU3RyaW5nOgogICAgcHJvdG8gMSAxCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjI1MwogICAgLy8gaWYgaSA8IHJhZGl4OgogICAgZnJhbWVfZGlnIC0xCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjI1MgogICAgLy8gcmFkaXggPSBkaWdpdHMubGVuZ3RoCiAgICBpbnRjXzIgLy8gMTAKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjUzCiAgICAvLyBpZiBpIDwgcmFkaXg6CiAgICA8CiAgICBieiBpdG9hX2FmdGVyX2lmX2Vsc2VAMgogICAgLy8gdm90aW5nL3ZvdGluZy5weToyNTEKICAgIC8vIGRpZ2l0cyA9IEJ5dGVzKGIiMDEyMzQ1Njc4OSIpCiAgICBieXRlYyA3IC8vIDB4MzAzMTMyMzMzNDM1MzYzNzM4MzkKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjU0CiAgICAvLyByZXR1cm4gU3RyaW5nLmZyb21fYnl0ZXMoZGlnaXRzW2ldKQogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzEgLy8gMQogICAgZXh0cmFjdDMKICAgIHJldHN1YgoKaXRvYV9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjI1NQogICAgLy8gcmV0dXJuIGl0b2EoaSAvLyByYWRpeCkgKyBTdHJpbmcuZnJvbV9ieXRlcyhkaWdpdHNbaSAlIHJhZGl4XSkKICAgIGZyYW1lX2RpZyAtMQogICAgLy8gdm90aW5nL3ZvdGluZy5weToyNTIKICAgIC8vIHJhZGl4ID0gZGlnaXRzLmxlbmd0aAogICAgaW50Y18yIC8vIDEwCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjI1NQogICAgLy8gcmV0dXJuIGl0b2EoaSAvLyByYWRpeCkgKyBTdHJpbmcuZnJvbV9ieXRlcyhkaWdpdHNbaSAlIHJhZGl4XSkKICAgIC8KICAgIGNhbGxzdWIgaXRvYQogICAgZnJhbWVfZGlnIC0xCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjI1MgogICAgLy8gcmFkaXggPSBkaWdpdHMubGVuZ3RoCiAgICBpbnRjXzIgLy8gMTAKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjU1CiAgICAvLyByZXR1cm4gaXRvYShpIC8vIHJhZGl4KSArIFN0cmluZy5mcm9tX2J5dGVzKGRpZ2l0c1tpICUgcmFkaXhdKQogICAgJQogICAgLy8gdm90aW5nL3ZvdGluZy5weToyNTEKICAgIC8vIGRpZ2l0cyA9IEJ5dGVzKGIiMDEyMzQ1Njc4OSIpCiAgICBieXRlYyA3IC8vIDB4MzAzMTMyMzMzNDM1MzYzNzM4MzkKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjU1CiAgICAvLyByZXR1cm4gaXRvYShpIC8vIHJhZGl4KSArIFN0cmluZy5mcm9tX2J5dGVzKGRpZ2l0c1tpICUgcmFkaXhdKQogICAgc3dhcAogICAgaW50Y18xIC8vIDEKICAgIGV4dHJhY3QzCiAgICBjb25jYXQKICAgIHJldHN1YgoKCi8vIGV4YW1wbGVzLnZvdGluZy52b3RpbmcuVm90aW5nUm91bmRBcHAuY3JlYXRlKHZvdGVfaWQ6IGJ5dGVzLCBzbmFwc2hvdF9wdWJsaWNfa2V5OiBieXRlcywgbWV0YWRhdGFfaXBmc19jaWQ6IGJ5dGVzLCBzdGFydF90aW1lOiB1aW50NjQsIGVuZF90aW1lOiB1aW50NjQsIG9wdGlvbl9jb3VudHM6IGJ5dGVzLCBxdW9ydW06IHVpbnQ2NCwgbmZ0X2ltYWdlX3VybDogYnl0ZXMpIC0+IHZvaWQ6CmNyZWF0ZToKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NTgtNjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChjcmVhdGU9InJlcXVpcmUiKQogICAgLy8gZGVmIGNyZWF0ZSgKICAgIC8vICAgICBzZWxmLAogICAgLy8gICAgIHZvdGVfaWQ6IFN0cmluZywKICAgIC8vICAgICBzbmFwc2hvdF9wdWJsaWNfa2V5OiBCeXRlcywKICAgIC8vICAgICBtZXRhZGF0YV9pcGZzX2NpZDogU3RyaW5nLAogICAgLy8gICAgIHN0YXJ0X3RpbWU6IFVJbnQ2NCwKICAgIC8vICAgICBlbmRfdGltZTogVUludDY0LAogICAgLy8gICAgIG9wdGlvbl9jb3VudHM6IFZvdGVJbmRleEFycmF5LAogICAgLy8gICAgIHF1b3J1bTogVUludDY0LAogICAgLy8gICAgIG5mdF9pbWFnZV91cmw6IFN0cmluZywKICAgIC8vICkgLT4gTm9uZToKICAgIHByb3RvIDggMAogICAgLy8gdm90aW5nL3ZvdGluZy5weTo3MAogICAgLy8gYXNzZXJ0IHN0YXJ0X3RpbWUgPCBlbmRfdGltZSwgIkVuZCB0aW1lIHNob3VsZCBiZSBhZnRlciBzdGFydCB0aW1lIgogICAgZnJhbWVfZGlnIC01CiAgICBmcmFtZV9kaWcgLTQKICAgIDwKICAgIGFzc2VydCAvLyBFbmQgdGltZSBzaG91bGQgYmUgYWZ0ZXIgc3RhcnQgdGltZQogICAgLy8gdm90aW5nL3ZvdGluZy5weTo3MQogICAgLy8gYXNzZXJ0IGVuZF90aW1lID49IEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wLCAiRW5kIHRpbWUgc2hvdWxkIGJlIGluIHRoZSBmdXR1cmUiCiAgICBmcmFtZV9kaWcgLTQKICAgIGdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKICAgID49CiAgICBhc3NlcnQgLy8gRW5kIHRpbWUgc2hvdWxkIGJlIGluIHRoZSBmdXR1cmUKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NzMKICAgIC8vIHNlbGYudm90ZV9pZCA9IHZvdGVfaWQKICAgIGJ5dGVjXzIgLy8gInZvdGVfaWQiCiAgICBmcmFtZV9kaWcgLTgKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5Ojc0CiAgICAvLyBzZWxmLnNuYXBzaG90X3B1YmxpY19rZXkgPSBzbmFwc2hvdF9wdWJsaWNfa2V5CiAgICBieXRlYyA4IC8vICJzbmFwc2hvdF9wdWJsaWNfa2V5IgogICAgZnJhbWVfZGlnIC03CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdm90aW5nL3ZvdGluZy5weTo3NQogICAgLy8gc2VsZi5tZXRhZGF0YV9pcGZzX2NpZCA9IG1ldGFkYXRhX2lwZnNfY2lkCiAgICBieXRlYyA5IC8vICJtZXRhZGF0YV9pcGZzX2NpZCIKICAgIGZyYW1lX2RpZyAtNgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NzYKICAgIC8vIHNlbGYuc3RhcnRfdGltZSA9IHN0YXJ0X3RpbWUKICAgIGJ5dGVjIDEwIC8vICJzdGFydF90aW1lIgogICAgZnJhbWVfZGlnIC01CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdm90aW5nL3ZvdGluZy5weTo3NwogICAgLy8gc2VsZi5lbmRfdGltZSA9IGVuZF90aW1lCiAgICBieXRlYyAxMSAvLyAiZW5kX3RpbWUiCiAgICBmcmFtZV9kaWcgLTQKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5Ojc4CiAgICAvLyBzZWxmLnF1b3J1bSA9IHF1b3J1bQogICAgYnl0ZWMgMTIgLy8gInF1b3J1bSIKICAgIGZyYW1lX2RpZyAtMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6NzkKICAgIC8vIHNlbGYubmZ0X2ltYWdlX3VybCA9IG5mdF9pbWFnZV91cmwKICAgIGJ5dGVjIDEzIC8vICJuZnRfaW1hZ2VfdXJsIgogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMTkKICAgIC8vIGFzc2VydCBvcHRpb25fY291bnRzLmxlbmd0aCwgIm9wdGlvbl9jb3VudHMgc2hvdWxkIGJlIG5vbi1lbXB0eSIKICAgIGZyYW1lX2RpZyAtMwogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkdXBuIDIKICAgIGFzc2VydCAvLyBvcHRpb25fY291bnRzIHNob3VsZCBiZSBub24tZW1wdHkKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjIwCiAgICAvLyBhc3NlcnQgb3B0aW9uX2NvdW50cy5sZW5ndGggPD0gMTEyLCAiQ2FuJ3QgaGF2ZSBtb3JlIHRoYW4gMTEyIHF1ZXN0aW9ucyIKICAgIHB1c2hpbnQgMTEyIC8vIDExMgogICAgPD0KICAgIGFzc2VydCAvLyBDYW4ndCBoYXZlIG1vcmUgdGhhbiAxMTIgcXVlc3Rpb25zCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIyMgogICAgLy8gdG90YWxfb3B0aW9ucyA9IFVJbnQ2NCgwKQogICAgaW50Y18wIC8vIDAKICAgIGR1cAoKY3JlYXRlX2Zvcl9oZWFkZXJAMjoKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjIzCiAgICAvLyBmb3IgaXRlbSBpbiBvcHRpb25fY291bnRzOgogICAgZnJhbWVfZGlnIDIKICAgIGZyYW1lX2RpZyAwCiAgICA8CiAgICBieiBjcmVhdGVfYWZ0ZXJfZm9yQDUKICAgIGZyYW1lX2RpZyAtMwogICAgZXh0cmFjdCAyIDAKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjI0CiAgICAvLyB0b3RhbF9vcHRpb25zICs9IGl0ZW0ubmF0aXZlCiAgICBmcmFtZV9kaWcgMgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBnZXRieXRlCiAgICBmcmFtZV9kaWcgMQogICAgKwogICAgZnJhbWVfYnVyeSAxCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAyCiAgICBiIGNyZWF0ZV9mb3JfaGVhZGVyQDIKCmNyZWF0ZV9hZnRlcl9mb3JANToKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjI1CiAgICAvLyBhc3NlcnQgdG90YWxfb3B0aW9ucyA8PSAxMjgsICJDYW4ndCBoYXZlIG1vcmUgdGhhbiAxMjggdm90ZSBvcHRpb25zIgogICAgZnJhbWVfZGlnIDEKICAgIGR1cAogICAgcHVzaGludCAxMjggLy8gMTI4CiAgICA8PQogICAgYXNzZXJ0IC8vIENhbid0IGhhdmUgbW9yZSB0aGFuIDEyOCB2b3RlIG9wdGlvbnMKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjI3CiAgICAvLyBzZWxmLm9wdGlvbl9jb3VudHMgPSBvcHRpb25fY291bnRzLmNvcHkoKQogICAgYnl0ZWNfMyAvLyAib3B0aW9uX2NvdW50cyIKICAgIGZyYW1lX2RpZyAtMwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjI4CiAgICAvLyBzZWxmLnRvdGFsX29wdGlvbnMgPSB0b3RhbF9vcHRpb25zCiAgICBieXRlYyAxNCAvLyAidG90YWxfb3B0aW9ucyIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICByZXRzdWIKCgovLyBleGFtcGxlcy52b3Rpbmcudm90aW5nLlZvdGluZ1JvdW5kQXBwLmJvb3RzdHJhcChmdW5kX21pbl9iYWxfcmVxOiB1aW50NjQpIC0+IHZvaWQ6CmJvb3RzdHJhcDoKICAgIC8vIHZvdGluZy92b3RpbmcucHk6ODItODMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgLy8gZGVmIGJvb3RzdHJhcChzZWxmLCBmdW5kX21pbl9iYWxfcmVxOiBndHhuLlBheW1lbnRUcmFuc2FjdGlvbikgLT4gTm9uZToKICAgIHByb3RvIDEgMAogICAgLy8gdm90aW5nL3ZvdGluZy5weTo4NAogICAgLy8gYXNzZXJ0IG5vdCBzZWxmLmlzX2Jvb3RzdHJhcHBlZCwgIk11c3Qgbm90IGJlIGFscmVhZHkgYm9vdHN0cmFwcGVkIgogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImlzX2Jvb3RzdHJhcHBlZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5pc19ib290c3RyYXBwZWQgZXhpc3RzCiAgICAhCiAgICBhc3NlcnQgLy8gTXVzdCBub3QgYmUgYWxyZWFkeSBib290c3RyYXBwZWQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6ODUKICAgIC8vIHNlbGYuaXNfYm9vdHN0cmFwcGVkID0gVHJ1ZQogICAgYnl0ZWNfMCAvLyAiaXNfYm9vdHN0cmFwcGVkIgogICAgaW50Y18xIC8vIDEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5Ojg4CiAgICAvLyBmdW5kX21pbl9iYWxfcmVxLnJlY2VpdmVyID09IEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgZ3R4bnMgUmVjZWl2ZXIKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICA9PQogICAgLy8gdm90aW5nL3ZvdGluZy5weTo4Ny04OQogICAgLy8gYXNzZXJ0ICgKICAgIC8vICAgICBmdW5kX21pbl9iYWxfcmVxLnJlY2VpdmVyID09IEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MKICAgIC8vICksICJQYXltZW50IG11c3QgYmUgdG8gYXBwIGFkZHJlc3MiCiAgICBhc3NlcnQgLy8gUGF5bWVudCBtdXN0IGJlIHRvIGFwcCBhZGRyZXNzCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjkxCiAgICAvLyB0YWxseV9ib3hfc2l6ZSA9IHNlbGYudG90YWxfb3B0aW9ucyAqIFZPVEVfQ09VTlRfQllURVMKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyAxNCAvLyAidG90YWxfb3B0aW9ucyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi50b3RhbF9vcHRpb25zIGV4aXN0cwogICAgaW50Y18zIC8vIDgKICAgICoKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTAxLTEwMgogICAgLy8gIyB0YWxseSBib3ggdmFsdWUKICAgIC8vICsgKHRhbGx5X2JveF9zaXplICogQk9YX0JZVEVfTUlOX0JBTEFOQ0UpCiAgICBkdXAKICAgIHB1c2hpbnQgNDAwIC8vIDQwMAogICAgKgogICAgLy8gdm90aW5nL3ZvdGluZy5weTo5My0xMDAKICAgIC8vICMgbWluaW11bSBiYWxhbmNlIHJlcSBmb3I6IEFMR09zICsgVm90ZSByZXN1bHQgTkZUIGFzc2V0CiAgICAvLyBBU1NFVF9NSU5fQkFMQU5DRSAqIDIKICAgIC8vICMgY3JlYXRlIE5GVCBmZWUKICAgIC8vICsgMTAwMAogICAgLy8gIyB0YWxseSBib3gKICAgIC8vICsgQk9YX0ZMQVRfTUlOX0JBTEFOQ0UKICAgIC8vICMgdGFsbHkgYm94IGtleSAiViIKICAgIC8vICsgQk9YX0JZVEVfTUlOX0JBTEFOQ0UKICAgIHB1c2hpbnQgMjAzOTAwIC8vIDIwMzkwMAogICAgLy8gdm90aW5nL3ZvdGluZy5weTo5My0xMDIKICAgIC8vICMgbWluaW11bSBiYWxhbmNlIHJlcSBmb3I6IEFMR09zICsgVm90ZSByZXN1bHQgTkZUIGFzc2V0CiAgICAvLyBBU1NFVF9NSU5fQkFMQU5DRSAqIDIKICAgIC8vICMgY3JlYXRlIE5GVCBmZWUKICAgIC8vICsgMTAwMAogICAgLy8gIyB0YWxseSBib3gKICAgIC8vICsgQk9YX0ZMQVRfTUlOX0JBTEFOQ0UKICAgIC8vICMgdGFsbHkgYm94IGtleSAiViIKICAgIC8vICsgQk9YX0JZVEVfTUlOX0JBTEFOQ0UKICAgIC8vICMgdGFsbHkgYm94IHZhbHVlCiAgICAvLyArICh0YWxseV9ib3hfc2l6ZSAqIEJPWF9CWVRFX01JTl9CQUxBTkNFKQogICAgKwogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMDQKICAgIC8vIGxvZyhtaW5fYmFsYW5jZV9yZXEpCiAgICBkdXAKICAgIGl0b2IKICAgIGxvZwogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMDYKICAgIC8vIGZ1bmRfbWluX2JhbF9yZXEuYW1vdW50ID09IG1pbl9iYWxhbmNlX3JlcQogICAgZnJhbWVfZGlnIC0xCiAgICBndHhucyBBbW91bnQKICAgID09CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEwNS0xMDcKICAgIC8vIGFzc2VydCAoCiAgICAvLyAgICAgZnVuZF9taW5fYmFsX3JlcS5hbW91bnQgPT0gbWluX2JhbGFuY2VfcmVxCiAgICAvLyApLCAiUGF5bWVudCBtdXN0IGJlIGZvciB0aGUgZXhhY3QgbWluIGJhbGFuY2UgcmVxdWlyZW1lbnQiCiAgICBhc3NlcnQgLy8gUGF5bWVudCBtdXN0IGJlIGZvciB0aGUgZXhhY3QgbWluIGJhbGFuY2UgcmVxdWlyZW1lbnQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTA4CiAgICAvLyBhc3NlcnQgc2VsZi50YWxseV9ib3guY3JlYXRlKHNpemU9dGFsbHlfYm94X3NpemUpCiAgICBieXRlYyA0IC8vICJWIgogICAgc3dhcAogICAgYm94X2NyZWF0ZQogICAgYXNzZXJ0CiAgICByZXRzdWIKCgovLyBleGFtcGxlcy52b3Rpbmcudm90aW5nLlZvdGluZ1JvdW5kQXBwLmNsb3NlKCkgLT4gdm9pZDoKY2xvc2U6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjExMC0xMTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgLy8gZGVmIGNsb3NlKHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIGludGNfMCAvLyAwCiAgICBkdXBuIDIKICAgIHB1c2hieXRlcyAiIgogICAgZHVwbiAyCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjExMgogICAgLy8gZW5zdXJlX2J1ZGdldCgyMDAwMCwgZmVlX3NvdXJjZT1PcFVwRmVlU291cmNlLkdyb3VwQ3JlZGl0KQogICAgcHVzaGludCAyMDAwMCAvLyAyMDAwMAogICAgaW50Y18wIC8vIDAKICAgIGNhbGxzdWIgZW5zdXJlX2J1ZGdldAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMTMKICAgIC8vIGFzc2VydCBub3Qgc2VsZi5jbG9zZV90aW1lLCAiQWxyZWFkeSBjbG9zZWQiCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNSAvLyAiY2xvc2VfdGltZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBidXJ5IDEKICAgICEKICAgIGFzc2VydCAvLyBBbHJlYWR5IGNsb3NlZAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMTQKICAgIC8vIHNlbGYuY2xvc2VfdGltZS52YWx1ZSA9IEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wCiAgICBieXRlYyA1IC8vICJjbG9zZV90aW1lIgogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTE5CiAgICAvLyArIHNlbGYudm90ZV9pZAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzIgLy8gInZvdGVfaWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudm90ZV9pZCBleGlzdHMKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTE3LTExOAogICAgLy8gJ3sic3RhbmRhcmQiOiJhcmM2OSIsJwogICAgLy8gJyJkZXNjcmlwdGlvbiI6IlRoaXMgaXMgYSB2b3RpbmcgcmVzdWx0IE5GVCBmb3Igdm90aW5nIHJvdW5kIHdpdGggSUQgJwogICAgcHVzaGJ5dGVzICJ7XCJzdGFuZGFyZFwiOlwiYXJjNjlcIixcImRlc2NyaXB0aW9uXCI6XCJUaGlzIGlzIGEgdm90aW5nIHJlc3VsdCBORlQgZm9yIHZvdGluZyByb3VuZCB3aXRoIElEICIKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTE3LTExOQogICAgLy8gJ3sic3RhbmRhcmQiOiJhcmM2OSIsJwogICAgLy8gJyJkZXNjcmlwdGlvbiI6IlRoaXMgaXMgYSB2b3RpbmcgcmVzdWx0IE5GVCBmb3Igdm90aW5nIHJvdW5kIHdpdGggSUQgJwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMjAKICAgIC8vICsgJy4iLCJwcm9wZXJ0aWVzIjp7Im1ldGFkYXRhIjoiaXBmczovLycKICAgIHB1c2hieXRlcyAiLlwiLFwicHJvcGVydGllc1wiOntcIm1ldGFkYXRhXCI6XCJpcGZzOi8vIgogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMTctMTIwCiAgICAvLyAneyJzdGFuZGFyZCI6ImFyYzY5IiwnCiAgICAvLyAnImRlc2NyaXB0aW9uIjoiVGhpcyBpcyBhIHZvdGluZyByZXN1bHQgTkZUIGZvciB2b3Rpbmcgcm91bmQgd2l0aCBJRCAnCiAgICAvLyArIHNlbGYudm90ZV9pZAogICAgLy8gKyAnLiIsInByb3BlcnRpZXMiOnsibWV0YWRhdGEiOiJpcGZzOi8vJwogICAgY29uY2F0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEyMQogICAgLy8gKyBzZWxmLm1ldGFkYXRhX2lwZnNfY2lkCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgOSAvLyAibWV0YWRhdGFfaXBmc19jaWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubWV0YWRhdGFfaXBmc19jaWQgZXhpc3RzCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjExNy0xMjEKICAgIC8vICd7InN0YW5kYXJkIjoiYXJjNjkiLCcKICAgIC8vICciZGVzY3JpcHRpb24iOiJUaGlzIGlzIGEgdm90aW5nIHJlc3VsdCBORlQgZm9yIHZvdGluZyByb3VuZCB3aXRoIElEICcKICAgIC8vICsgc2VsZi52b3RlX2lkCiAgICAvLyArICcuIiwicHJvcGVydGllcyI6eyJtZXRhZGF0YSI6ImlwZnM6Ly8nCiAgICAvLyArIHNlbGYubWV0YWRhdGFfaXBmc19jaWQKICAgIGNvbmNhdAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMjIKICAgIC8vICsgJyIsImlkIjoiJwogICAgcHVzaGJ5dGVzICJcIixcImlkXCI6XCIiCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjExNy0xMjIKICAgIC8vICd7InN0YW5kYXJkIjoiYXJjNjkiLCcKICAgIC8vICciZGVzY3JpcHRpb24iOiJUaGlzIGlzIGEgdm90aW5nIHJlc3VsdCBORlQgZm9yIHZvdGluZyByb3VuZCB3aXRoIElEICcKICAgIC8vICsgc2VsZi52b3RlX2lkCiAgICAvLyArICcuIiwicHJvcGVydGllcyI6eyJtZXRhZGF0YSI6ImlwZnM6Ly8nCiAgICAvLyArIHNlbGYubWV0YWRhdGFfaXBmc19jaWQKICAgIC8vICsgJyIsImlkIjoiJwogICAgY29uY2F0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEyMwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJ2b3RlX2lkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnZvdGVfaWQgZXhpc3RzCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjExNy0xMjMKICAgIC8vICd7InN0YW5kYXJkIjoiYXJjNjkiLCcKICAgIC8vICciZGVzY3JpcHRpb24iOiJUaGlzIGlzIGEgdm90aW5nIHJlc3VsdCBORlQgZm9yIHZvdGluZyByb3VuZCB3aXRoIElEICcKICAgIC8vICsgc2VsZi52b3RlX2lkCiAgICAvLyArICcuIiwicHJvcGVydGllcyI6eyJtZXRhZGF0YSI6ImlwZnM6Ly8nCiAgICAvLyArIHNlbGYubWV0YWRhdGFfaXBmc19jaWQKICAgIC8vICsgJyIsImlkIjoiJwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIGNvbmNhdAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMjQKICAgIC8vICsgJyIsInF1b3J1bSI6JwogICAgcHVzaGJ5dGVzICJcIixcInF1b3J1bVwiOiIKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTE3LTEyNAogICAgLy8gJ3sic3RhbmRhcmQiOiJhcmM2OSIsJwogICAgLy8gJyJkZXNjcmlwdGlvbiI6IlRoaXMgaXMgYSB2b3RpbmcgcmVzdWx0IE5GVCBmb3Igdm90aW5nIHJvdW5kIHdpdGggSUQgJwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIC8vICsgJy4iLCJwcm9wZXJ0aWVzIjp7Im1ldGFkYXRhIjoiaXBmczovLycKICAgIC8vICsgc2VsZi5tZXRhZGF0YV9pcGZzX2NpZAogICAgLy8gKyAnIiwiaWQiOiInCiAgICAvLyArIHNlbGYudm90ZV9pZAogICAgLy8gKyAnIiwicXVvcnVtIjonCiAgICBjb25jYXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTI1CiAgICAvLyArIGl0b2Eoc2VsZi5xdW9ydW0pCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgMTIgLy8gInF1b3J1bSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5xdW9ydW0gZXhpc3RzCiAgICBjYWxsc3ViIGl0b2EKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTE3LTEyNQogICAgLy8gJ3sic3RhbmRhcmQiOiJhcmM2OSIsJwogICAgLy8gJyJkZXNjcmlwdGlvbiI6IlRoaXMgaXMgYSB2b3RpbmcgcmVzdWx0IE5GVCBmb3Igdm90aW5nIHJvdW5kIHdpdGggSUQgJwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIC8vICsgJy4iLCJwcm9wZXJ0aWVzIjp7Im1ldGFkYXRhIjoiaXBmczovLycKICAgIC8vICsgc2VsZi5tZXRhZGF0YV9pcGZzX2NpZAogICAgLy8gKyAnIiwiaWQiOiInCiAgICAvLyArIHNlbGYudm90ZV9pZAogICAgLy8gKyAnIiwicXVvcnVtIjonCiAgICAvLyArIGl0b2Eoc2VsZi5xdW9ydW0pCiAgICBjb25jYXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTI2CiAgICAvLyArICcsInZvdGVyQ291bnQiOicKICAgIHB1c2hieXRlcyAiLFwidm90ZXJDb3VudFwiOiIKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTE3LTEyNgogICAgLy8gJ3sic3RhbmRhcmQiOiJhcmM2OSIsJwogICAgLy8gJyJkZXNjcmlwdGlvbiI6IlRoaXMgaXMgYSB2b3RpbmcgcmVzdWx0IE5GVCBmb3Igdm90aW5nIHJvdW5kIHdpdGggSUQgJwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIC8vICsgJy4iLCJwcm9wZXJ0aWVzIjp7Im1ldGFkYXRhIjoiaXBmczovLycKICAgIC8vICsgc2VsZi5tZXRhZGF0YV9pcGZzX2NpZAogICAgLy8gKyAnIiwiaWQiOiInCiAgICAvLyArIHNlbGYudm90ZV9pZAogICAgLy8gKyAnIiwicXVvcnVtIjonCiAgICAvLyArIGl0b2Eoc2VsZi5xdW9ydW0pCiAgICAvLyArICcsInZvdGVyQ291bnQiOicKICAgIGNvbmNhdAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMjcKICAgIC8vICsgaXRvYShzZWxmLnZvdGVyX2NvdW50KQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzEgLy8gInZvdGVyX2NvdW50IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnZvdGVyX2NvdW50IGV4aXN0cwogICAgY2FsbHN1YiBpdG9hCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjExNy0xMjcKICAgIC8vICd7InN0YW5kYXJkIjoiYXJjNjkiLCcKICAgIC8vICciZGVzY3JpcHRpb24iOiJUaGlzIGlzIGEgdm90aW5nIHJlc3VsdCBORlQgZm9yIHZvdGluZyByb3VuZCB3aXRoIElEICcKICAgIC8vICsgc2VsZi52b3RlX2lkCiAgICAvLyArICcuIiwicHJvcGVydGllcyI6eyJtZXRhZGF0YSI6ImlwZnM6Ly8nCiAgICAvLyArIHNlbGYubWV0YWRhdGFfaXBmc19jaWQKICAgIC8vICsgJyIsImlkIjoiJwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIC8vICsgJyIsInF1b3J1bSI6JwogICAgLy8gKyBpdG9hKHNlbGYucXVvcnVtKQogICAgLy8gKyAnLCJ2b3RlckNvdW50IjonCiAgICAvLyArIGl0b2Eoc2VsZi52b3Rlcl9jb3VudCkKICAgIGNvbmNhdAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMjgKICAgIC8vICsgJywidGFsbGllcyI6WycKICAgIHB1c2hieXRlcyAiLFwidGFsbGllc1wiOlsiCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjExNy0xMjgKICAgIC8vICd7InN0YW5kYXJkIjoiYXJjNjkiLCcKICAgIC8vICciZGVzY3JpcHRpb24iOiJUaGlzIGlzIGEgdm90aW5nIHJlc3VsdCBORlQgZm9yIHZvdGluZyByb3VuZCB3aXRoIElEICcKICAgIC8vICsgc2VsZi52b3RlX2lkCiAgICAvLyArICcuIiwicHJvcGVydGllcyI6eyJtZXRhZGF0YSI6ImlwZnM6Ly8nCiAgICAvLyArIHNlbGYubWV0YWRhdGFfaXBmc19jaWQKICAgIC8vICsgJyIsImlkIjoiJwogICAgLy8gKyBzZWxmLnZvdGVfaWQKICAgIC8vICsgJyIsInF1b3J1bSI6JwogICAgLy8gKyBpdG9hKHNlbGYucXVvcnVtKQogICAgLy8gKyAnLCJ2b3RlckNvdW50IjonCiAgICAvLyArIGl0b2Eoc2VsZi52b3Rlcl9jb3VudCkKICAgIC8vICsgJywidGFsbGllcyI6WycKICAgIGNvbmNhdAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMzEKICAgIC8vIGN1cnJlbnRfaW5kZXggPSBVSW50NjQoMCkKICAgIGludGNfMCAvLyAwCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzMgogICAgLy8gZm9yIHF1ZXN0aW9uX2luZGV4LCBxdWVzdGlvbl9vcHRpb25zIGluIHVlbnVtZXJhdGUoc2VsZi5vcHRpb25fY291bnRzKToKICAgIGR1cAogICAgYnl0ZWNfMyAvLyAib3B0aW9uX2NvdW50cyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYub3B0aW9uX2NvdW50cyBleGlzdHMKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgaW50Y18wIC8vIDAKCmNsb3NlX2Zvcl9oZWFkZXJAMToKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTMyCiAgICAvLyBmb3IgcXVlc3Rpb25faW5kZXgsIHF1ZXN0aW9uX29wdGlvbnMgaW4gdWVudW1lcmF0ZShzZWxmLm9wdGlvbl9jb3VudHMpOgogICAgZnJhbWVfZGlnIDEwCiAgICBmcmFtZV9kaWcgOQogICAgPAogICAgYnogY2xvc2VfYWZ0ZXJfZm9yQDE0CiAgICBmcmFtZV9kaWcgOAogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgZnJhbWVfYnVyeSAwCiAgICBmcmFtZV9kaWcgMTAKICAgIGR1cAogICAgY292ZXIgMgogICAgaW50Y18xIC8vIDEKICAgIGV4dHJhY3QzIC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgZnJhbWVfYnVyeSAyCiAgICBmcmFtZV9kaWcgNgogICAgZnJhbWVfYnVyeSAxCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzMwogICAgLy8gaWYgcXVlc3Rpb25faW5kZXggPiAwOgogICAgYnogY2xvc2VfYWZ0ZXJfaWZfZWxzZUA0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzNAogICAgLy8gbm90ZSArPSAiLCIKICAgIGZyYW1lX2RpZyA2CiAgICBwdXNoYnl0ZXMgIiwiCiAgICBjb25jYXQKICAgIGZyYW1lX2J1cnkgMQoKY2xvc2VfYWZ0ZXJfaWZfZWxzZUA0OgogICAgZnJhbWVfZGlnIDEKICAgIGR1cAogICAgZnJhbWVfYnVyeSA2CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzNQogICAgLy8gaWYgcXVlc3Rpb25fb3B0aW9ucyA+IDA6CiAgICBmcmFtZV9kaWcgMgogICAgcHVzaGJ5dGVzIDB4MDAKICAgIGI+CiAgICBmcmFtZV9kaWcgNwogICAgZnJhbWVfYnVyeSAzCiAgICBzd2FwCiAgICBmcmFtZV9idXJ5IDEKICAgIGJ6IGNsb3NlX2FmdGVyX2lmX2Vsc2VAMTIKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTM2CiAgICAvLyBub3RlICs9ICJbIgogICAgZnJhbWVfZGlnIDYKICAgIHB1c2hieXRlcyAiWyIKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSA2CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzNwogICAgLy8gZm9yIG9wdGlvbl9pbmRleCBpbiB1cmFuZ2UocXVlc3Rpb25fb3B0aW9ucy5uYXRpdmUpOgogICAgZnJhbWVfZGlnIDAKICAgIGZyYW1lX2RpZyAxMAogICAgZ2V0Ynl0ZQogICAgZnJhbWVfYnVyeSA1CiAgICBpbnRjXzAgLy8gMAogICAgZnJhbWVfYnVyeSA0CgpjbG9zZV9mb3JfaGVhZGVyQDY6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzNwogICAgLy8gZm9yIG9wdGlvbl9pbmRleCBpbiB1cmFuZ2UocXVlc3Rpb25fb3B0aW9ucy5uYXRpdmUpOgogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyA1CiAgICA8CiAgICBieiBjbG9zZV9hZnRlcl9mb3JAMTEKICAgIGZyYW1lX2RpZyA2CiAgICBmcmFtZV9idXJ5IDEKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTM4CiAgICAvLyBpZiBvcHRpb25faW5kZXggPiAwOgogICAgZnJhbWVfZGlnIDQKICAgIGJ6IGNsb3NlX2FmdGVyX2lmX2Vsc2VAOQogICAgLy8gdm90aW5nL3ZvdGluZy5weToxMzkKICAgIC8vIG5vdGUgKz0gIiwiCiAgICBmcmFtZV9kaWcgNgogICAgcHVzaGJ5dGVzICIsIgogICAgY29uY2F0CiAgICBmcmFtZV9idXJ5IDEKCmNsb3NlX2FmdGVyX2lmX2Vsc2VAOToKICAgIGZyYW1lX2RpZyAxCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjI0MQogICAgLy8gcmV0dXJuIG9wLmJ0b2koc2VsZi50YWxseV9ib3guZXh0cmFjdChpbmRleCwgVk9URV9DT1VOVF9CWVRFUykpCiAgICBieXRlYyA0IC8vICJWIgogICAgZnJhbWVfZGlnIDcKICAgIGR1cAogICAgY292ZXIgMwogICAgaW50Y18zIC8vIDgKICAgIGJveF9leHRyYWN0CiAgICBidG9pCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE0MQogICAgLy8gbm90ZSArPSBpdG9hKHZvdGVzX2Zvcl9vcHRpb24pCiAgICBjYWxsc3ViIGl0b2EKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSA2CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE0MgogICAgLy8gY3VycmVudF9pbmRleCArPSAxCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSA3CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjEzNwogICAgLy8gZm9yIG9wdGlvbl9pbmRleCBpbiB1cmFuZ2UocXVlc3Rpb25fb3B0aW9ucy5uYXRpdmUpOgogICAgZnJhbWVfZGlnIDQKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDQKICAgIGIgY2xvc2VfZm9yX2hlYWRlckA2CgpjbG9zZV9hZnRlcl9mb3JAMTE6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE0MwogICAgLy8gbm90ZSArPSAiXSIKICAgIGZyYW1lX2RpZyA2CiAgICBwdXNoYnl0ZXMgIl0iCiAgICBjb25jYXQKICAgIGZyYW1lX2RpZyA3CiAgICBmcmFtZV9idXJ5IDMKICAgIGZyYW1lX2J1cnkgMQoKY2xvc2VfYWZ0ZXJfaWZfZWxzZUAxMjoKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9idXJ5IDcKICAgIGZyYW1lX2RpZyAxCiAgICBmcmFtZV9idXJ5IDYKICAgIGZyYW1lX2RpZyAxMAogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgMTAKICAgIGIgY2xvc2VfZm9yX2hlYWRlckAxCgpjbG9zZV9hZnRlcl9mb3JAMTQ6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE0NAogICAgLy8gbm90ZSArPSAiXX19IgogICAgZnJhbWVfZGlnIDYKICAgIHB1c2hieXRlcyAiXX19IgogICAgY29uY2F0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE0Ni0xNTYKICAgIC8vIGl0eG4uQXNzZXRDb25maWcoCiAgICAvLyAgICAgdG90YWw9MSwKICAgIC8vICAgICBkZWNpbWFscz0wLAogICAgLy8gICAgIGRlZmF1bHRfZnJvemVuPUZhbHNlLAogICAgLy8gICAgIGFzc2V0X25hbWU9IltWT1RFIFJFU1VMVF0gIiArIHNlbGYudm90ZV9pZCwKICAgIC8vICAgICB1bml0X25hbWU9IlZPVEVSU0xUIiwKICAgIC8vICAgICB1cmw9c2VsZi5uZnRfaW1hZ2VfdXJsLAogICAgLy8gICAgIG5vdGU9bm90ZSwKICAgIC8vICAgICBmZWU9R2xvYmFsLm1pbl90eG5fZmVlLAogICAgLy8gKQogICAgLy8gLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE1NAogICAgLy8gZmVlPUdsb2JhbC5taW5fdHhuX2ZlZSwKICAgIGdsb2JhbCBNaW5UeG5GZWUKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTUwCiAgICAvLyBhc3NldF9uYW1lPSJbVk9URSBSRVNVTFRdICIgKyBzZWxmLnZvdGVfaWQsCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMiAvLyAidm90ZV9pZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi52b3RlX2lkIGV4aXN0cwogICAgcHVzaGJ5dGVzICJbVk9URSBSRVNVTFRdICIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNTIKICAgIC8vIHVybD1zZWxmLm5mdF9pbWFnZV91cmwsCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgMTMgLy8gIm5mdF9pbWFnZV91cmwiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubmZ0X2ltYWdlX3VybCBleGlzdHMKICAgIHVuY292ZXIgMwogICAgaXR4bl9maWVsZCBOb3RlCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VVJMCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE1MQogICAgLy8gdW5pdF9uYW1lPSJWT1RFUlNMVCIsCiAgICBwdXNoYnl0ZXMgIlZPVEVSU0xUIgogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFVuaXROYW1lCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNDkKICAgIC8vIGRlZmF1bHRfZnJvemVuPUZhbHNlLAogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWZhdWx0RnJvemVuCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE0OAogICAgLy8gZGVjaW1hbHM9MCwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0RGVjaW1hbHMKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTQ3CiAgICAvLyB0b3RhbD0xLAogICAgaW50Y18xIC8vIDEKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRUb3RhbAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNDYKICAgIC8vIGl0eG4uQXNzZXRDb25maWcoCiAgICBwdXNoaW50IDMgLy8gYWNmZwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTQ2LTE1NgogICAgLy8gaXR4bi5Bc3NldENvbmZpZygKICAgIC8vICAgICB0b3RhbD0xLAogICAgLy8gICAgIGRlY2ltYWxzPTAsCiAgICAvLyAgICAgZGVmYXVsdF9mcm96ZW49RmFsc2UsCiAgICAvLyAgICAgYXNzZXRfbmFtZT0iW1ZPVEUgUkVTVUxUXSAiICsgc2VsZi52b3RlX2lkLAogICAgLy8gICAgIHVuaXRfbmFtZT0iVk9URVJTTFQiLAogICAgLy8gICAgIHVybD1zZWxmLm5mdF9pbWFnZV91cmwsCiAgICAvLyAgICAgbm90ZT1ub3RlLAogICAgLy8gICAgIGZlZT1HbG9iYWwubWluX3R4bl9mZWUsCiAgICAvLyApCiAgICAvLyAuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE0NQogICAgLy8gc2VsZi5uZnRfYXNzZXRfaWQgPSAoCiAgICBwdXNoYnl0ZXMgIm5mdF9hc3NldF9pZCIKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTQ2LTE1NwogICAgLy8gaXR4bi5Bc3NldENvbmZpZygKICAgIC8vICAgICB0b3RhbD0xLAogICAgLy8gICAgIGRlY2ltYWxzPTAsCiAgICAvLyAgICAgZGVmYXVsdF9mcm96ZW49RmFsc2UsCiAgICAvLyAgICAgYXNzZXRfbmFtZT0iW1ZPVEUgUkVTVUxUXSAiICsgc2VsZi52b3RlX2lkLAogICAgLy8gICAgIHVuaXRfbmFtZT0iVk9URVJTTFQiLAogICAgLy8gICAgIHVybD1zZWxmLm5mdF9pbWFnZV91cmwsCiAgICAvLyAgICAgbm90ZT1ub3RlLAogICAgLy8gICAgIGZlZT1HbG9iYWwubWluX3R4bl9mZWUsCiAgICAvLyApCiAgICAvLyAuc3VibWl0KCkKICAgIC8vIC5jcmVhdGVkX2Fzc2V0LmlkCiAgICBpdHhuIENyZWF0ZWRBc3NldElECiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE0NS0xNTgKICAgIC8vIHNlbGYubmZ0X2Fzc2V0X2lkID0gKAogICAgLy8gICAgIGl0eG4uQXNzZXRDb25maWcoCiAgICAvLyAgICAgICAgIHRvdGFsPTEsCiAgICAvLyAgICAgICAgIGRlY2ltYWxzPTAsCiAgICAvLyAgICAgICAgIGRlZmF1bHRfZnJvemVuPUZhbHNlLAogICAgLy8gICAgICAgICBhc3NldF9uYW1lPSJbVk9URSBSRVNVTFRdICIgKyBzZWxmLnZvdGVfaWQsCiAgICAvLyAgICAgICAgIHVuaXRfbmFtZT0iVk9URVJTTFQiLAogICAgLy8gICAgICAgICB1cmw9c2VsZi5uZnRfaW1hZ2VfdXJsLAogICAgLy8gICAgICAgICBub3RlPW5vdGUsCiAgICAvLyAgICAgICAgIGZlZT1HbG9iYWwubWluX3R4bl9mZWUsCiAgICAvLyAgICAgKQogICAgLy8gICAgIC5zdWJtaXQoKQogICAgLy8gICAgIC5jcmVhdGVkX2Fzc2V0LmlkCiAgICAvLyApCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgcmV0c3ViCgoKLy8gZXhhbXBsZXMudm90aW5nLnZvdGluZy5Wb3RpbmdSb3VuZEFwcC5nZXRfcHJlY29uZGl0aW9ucyhzaWduYXR1cmU6IGJ5dGVzKSAtPiBieXRlczoKZ2V0X3ByZWNvbmRpdGlvbnM6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE2MC0xNjEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgLy8gZGVmIGdldF9wcmVjb25kaXRpb25zKHNlbGYsIHNpZ25hdHVyZTogQnl0ZXMpIC0+IFZvdGluZ1ByZWNvbmRpdGlvbnM6CiAgICBwcm90byAxIDEKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTYzCiAgICAvLyBpc192b3Rpbmdfb3Blbj1hcmM0LlVJbnQ2NChzZWxmLnZvdGluZ19vcGVuKCkpLAogICAgY2FsbHN1YiB2b3Rpbmdfb3BlbgogICAgaXRvYgogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNjQKICAgIC8vIGlzX2FsbG93ZWRfdG9fdm90ZT1hcmM0LlVJbnQ2NChzZWxmLmFsbG93ZWRfdG9fdm90ZShzaWduYXR1cmUpKSwKICAgIGZyYW1lX2RpZyAtMQogICAgY2FsbHN1YiBhbGxvd2VkX3RvX3ZvdGUKICAgIGl0b2IKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjE1CiAgICAvLyByZXR1cm4gVHhuLnNlbmRlciBpbiBzZWxmLnZvdGVzX2J5X2FjY291bnQKICAgIHR4biBTZW5kZXIKICAgIGJveF9sZW4KICAgIGJ1cnkgMQogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNjUKICAgIC8vIGhhc19hbHJlYWR5X3ZvdGVkPWFyYzQuVUludDY0KHNlbGYuYWxyZWFkeV92b3RlZCgpKSwKICAgIGl0b2IKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTY2CiAgICAvLyBjdXJyZW50X3RpbWU9YXJjNC5VSW50NjQoR2xvYmFsLmxhdGVzdF90aW1lc3RhbXApLAogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgaXRvYgogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNjItMTY3CiAgICAvLyByZXR1cm4gVm90aW5nUHJlY29uZGl0aW9ucygKICAgIC8vICAgICBpc192b3Rpbmdfb3Blbj1hcmM0LlVJbnQ2NChzZWxmLnZvdGluZ19vcGVuKCkpLAogICAgLy8gICAgIGlzX2FsbG93ZWRfdG9fdm90ZT1hcmM0LlVJbnQ2NChzZWxmLmFsbG93ZWRfdG9fdm90ZShzaWduYXR1cmUpKSwKICAgIC8vICAgICBoYXNfYWxyZWFkeV92b3RlZD1hcmM0LlVJbnQ2NChzZWxmLmFscmVhZHlfdm90ZWQoKSksCiAgICAvLyAgICAgY3VycmVudF90aW1lPWFyYzQuVUludDY0KEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wKSwKICAgIC8vICkKICAgIHVuY292ZXIgMwogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIHJldHN1YgoKCi8vIGV4YW1wbGVzLnZvdGluZy52b3RpbmcuVm90aW5nUm91bmRBcHAudm90ZShmdW5kX21pbl9iYWxfcmVxOiB1aW50NjQsIHNpZ25hdHVyZTogYnl0ZXMsIGFuc3dlcl9pZHM6IGJ5dGVzKSAtPiB2b2lkOgp2b3RlOgogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNjktMTc1CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIC8vIGRlZiB2b3RlKAogICAgLy8gICAgIHNlbGYsCiAgICAvLyAgICAgZnVuZF9taW5fYmFsX3JlcTogZ3R4bi5QYXltZW50VHJhbnNhY3Rpb24sCiAgICAvLyAgICAgc2lnbmF0dXJlOiBCeXRlcywKICAgIC8vICAgICBhbnN3ZXJfaWRzOiBWb3RlSW5kZXhBcnJheSwKICAgIC8vICkgLT4gTm9uZToKICAgIHByb3RvIDMgMAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxNzYKICAgIC8vIGVuc3VyZV9idWRnZXQoNzcwMCwgZmVlX3NvdXJjZT1PcFVwRmVlU291cmNlLkdyb3VwQ3JlZGl0KQogICAgcHVzaGludCA3NzAwIC8vIDc3MDAKICAgIGludGNfMCAvLyAwCiAgICBjYWxsc3ViIGVuc3VyZV9idWRnZXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTc3LTE3OAogICAgLy8gIyBDaGVjayB2b3RpbmcgcHJlY29uZGl0aW9ucwogICAgLy8gYXNzZXJ0IHNlbGYuYWxsb3dlZF90b192b3RlKHNpZ25hdHVyZSksICJOb3QgYWxsb3dlZCB0byB2b3RlIgogICAgZnJhbWVfZGlnIC0yCiAgICBjYWxsc3ViIGFsbG93ZWRfdG9fdm90ZQogICAgYXNzZXJ0IC8vIE5vdCBhbGxvd2VkIHRvIHZvdGUKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTc5CiAgICAvLyBhc3NlcnQgc2VsZi52b3Rpbmdfb3BlbigpLCAiVm90aW5nIG5vdCBvcGVuIgogICAgY2FsbHN1YiB2b3Rpbmdfb3BlbgogICAgYXNzZXJ0IC8vIFZvdGluZyBub3Qgb3BlbgogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMTUKICAgIC8vIHJldHVybiBUeG4uc2VuZGVyIGluIHNlbGYudm90ZXNfYnlfYWNjb3VudAogICAgdHhuIFNlbmRlcgogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE4MAogICAgLy8gYXNzZXJ0IG5vdCBzZWxmLmFscmVhZHlfdm90ZWQoKSwgIkFscmVhZHkgdm90ZWQiCiAgICAhCiAgICBhc3NlcnQgLy8gQWxyZWFkeSB2b3RlZAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxODEKICAgIC8vIHF1ZXN0aW9uc19jb3VudCA9IHNlbGYub3B0aW9uX2NvdW50cy5sZW5ndGgKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18zIC8vICJvcHRpb25fY291bnRzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm9wdGlvbl9jb3VudHMgZXhpc3RzCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cAogICAgLy8gdm90aW5nL3ZvdGluZy5weToxODIKICAgIC8vIGFzc2VydCBhbnN3ZXJfaWRzLmxlbmd0aCA9PSBxdWVzdGlvbnNfY291bnQsICJOdW1iZXIgb2YgYW5zd2VycyBpbmNvcnJlY3QiCiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgID09CiAgICBhc3NlcnQgLy8gTnVtYmVyIG9mIGFuc3dlcnMgaW5jb3JyZWN0CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE4NQogICAgLy8gKDMyICsgMiArIFZPVEVfSU5ERVhfQllURVMgKiBhbnN3ZXJfaWRzLmxlbmd0aCkgKiBCT1hfQllURV9NSU5fQkFMQU5DRQogICAgcHVzaGludCAzNCAvLyAzNAogICAgKwogICAgcHVzaGludCA0MDAgLy8gNDAwCiAgICAqCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE4My0xODQKICAgIC8vICMgQ2hlY2sgdm90ZXIgYm94IGlzIGZ1bmRlZAogICAgLy8gbWluX2JhbF9yZXEgPSBCT1hfRkxBVF9NSU5fQkFMQU5DRSArICgKICAgIHB1c2hpbnQgMjUwMCAvLyAyNTAwCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE4My0xODYKICAgIC8vICMgQ2hlY2sgdm90ZXIgYm94IGlzIGZ1bmRlZAogICAgLy8gbWluX2JhbF9yZXEgPSBCT1hfRkxBVF9NSU5fQkFMQU5DRSArICgKICAgIC8vICAgICAoMzIgKyAyICsgVk9URV9JTkRFWF9CWVRFUyAqIGFuc3dlcl9pZHMubGVuZ3RoKSAqIEJPWF9CWVRFX01JTl9CQUxBTkNFCiAgICAvLyApCiAgICArCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE4OAogICAgLy8gZnVuZF9taW5fYmFsX3JlcS5yZWNlaXZlciA9PSBHbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzCiAgICBmcmFtZV9kaWcgLTMKICAgIGd0eG5zIFJlY2VpdmVyCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgPT0KICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTg3LTE4OQogICAgLy8gYXNzZXJ0ICgKICAgIC8vICAgICBmdW5kX21pbl9iYWxfcmVxLnJlY2VpdmVyID09IEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MKICAgIC8vICksICJQYXltZW50IG11c3QgYmUgdG8gYXBwIGFkZHJlc3MiCiAgICBhc3NlcnQgLy8gUGF5bWVudCBtdXN0IGJlIHRvIGFwcCBhZGRyZXNzCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE5MQogICAgLy8gbG9nKG1pbl9iYWxfcmVxKQogICAgZHVwCiAgICBpdG9iCiAgICBsb2cKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTkyCiAgICAvLyBhc3NlcnQgZnVuZF9taW5fYmFsX3JlcS5hbW91bnQgPT0gbWluX2JhbF9yZXEsICJQYXltZW50IG11c3QgYmUgdGhlIGV4YWN0IG1pbiBiYWxhbmNlIgogICAgZnJhbWVfZGlnIC0zCiAgICBndHhucyBBbW91bnQKICAgID09CiAgICBhc3NlcnQgLy8gUGF5bWVudCBtdXN0IGJlIHRoZSBleGFjdCBtaW4gYmFsYW5jZQogICAgLy8gdm90aW5nL3ZvdGluZy5weToxOTMtMTk0CiAgICAvLyAjIFJlY29yZCB0aGUgdm90ZSBmb3IgZWFjaCBxdWVzdGlvbgogICAgLy8gY3VtdWxhdGl2ZV9vZmZzZXQgPSBVSW50NjQoMCkKICAgIGludGNfMCAvLyAwCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjE5NQogICAgLy8gZm9yIHF1ZXN0aW9uX2luZGV4IGluIHVyYW5nZShxdWVzdGlvbnNfY291bnQpOgogICAgZHVwCgp2b3RlX2Zvcl9oZWFkZXJAMToKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTk1CiAgICAvLyBmb3IgcXVlc3Rpb25faW5kZXggaW4gdXJhbmdlKHF1ZXN0aW9uc19jb3VudCk6CiAgICBmcmFtZV9kaWcgMgogICAgZnJhbWVfZGlnIDAKICAgIDwKICAgIGJ6IHZvdGVfYWZ0ZXJfZm9yQDQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTk2LTE5NwogICAgLy8gIyBMb2FkIHRoZSB1c2VyJ3Mgdm90ZSBmb3IgdGhpcyBxdWVzdGlvbgogICAgLy8gYW5zd2VyX29wdGlvbl9pbmRleCA9IGFuc3dlcl9pZHNbcXVlc3Rpb25faW5kZXhdLm5hdGl2ZQogICAgZnJhbWVfZGlnIC0xCiAgICBleHRyYWN0IDIgMAogICAgZnJhbWVfZGlnIDIKICAgIGR1cAogICAgY292ZXIgMgogICAgZ2V0Ynl0ZQogICAgLy8gdm90aW5nL3ZvdGluZy5weToxOTgKICAgIC8vIG9wdGlvbnNfY291bnQgPSBzZWxmLm9wdGlvbl9jb3VudHNbcXVlc3Rpb25faW5kZXhdLm5hdGl2ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzMgLy8gIm9wdGlvbl9jb3VudHMiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYub3B0aW9uX2NvdW50cyBleGlzdHMKICAgIGV4dHJhY3QgMiAwCiAgICBkaWcgMgogICAgZ2V0Ynl0ZQogICAgLy8gdm90aW5nL3ZvdGluZy5weToxOTkKICAgIC8vIGFzc2VydCBhbnN3ZXJfb3B0aW9uX2luZGV4IDwgb3B0aW9uc19jb3VudCwgIkFuc3dlciBvcHRpb24gaW5kZXggaW52YWxpZCIKICAgIGR1cDIKICAgIDwKICAgIGFzc2VydCAvLyBBbnN3ZXIgb3B0aW9uIGluZGV4IGludmFsaWQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjAwCiAgICAvLyBzZWxmLmluY3JlbWVudF92b3RlX2luX2JveChjdW11bGF0aXZlX29mZnNldCArIGFuc3dlcl9vcHRpb25faW5kZXgpCiAgICBmcmFtZV9kaWcgMQogICAgZHVwCiAgICBjb3ZlciAyCiAgICB1bmNvdmVyIDMKICAgICsKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjQxCiAgICAvLyByZXR1cm4gb3AuYnRvaShzZWxmLnRhbGx5X2JveC5leHRyYWN0KGluZGV4LCBWT1RFX0NPVU5UX0JZVEVTKSkKICAgIGJ5dGVjIDQgLy8gIlYiCiAgICBkaWcgMQogICAgaW50Y18zIC8vIDgKICAgIGJveF9leHRyYWN0CiAgICBidG9pCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjI0NgogICAgLy8gc2VsZi50YWxseV9ib3gucmVwbGFjZShpbmRleCwgb3AuaXRvYihjdXJyZW50X3ZvdGUgKyAxKSkKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBpdG9iCiAgICBieXRlYyA0IC8vICJWIgogICAgY292ZXIgMgogICAgYm94X3JlcGxhY2UKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjAxCiAgICAvLyBjdW11bGF0aXZlX29mZnNldCArPSBvcHRpb25zX2NvdW50CiAgICArCiAgICBmcmFtZV9idXJ5IDEKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjAyCiAgICAvLyBzZWxmLnZvdGVzX2J5X2FjY291bnRbVHhuLnNlbmRlcl0gPSBhbnN3ZXJfaWRzLmNvcHkoKQogICAgdHhuIFNlbmRlcgogICAgZHVwCiAgICBib3hfZGVsCiAgICBwb3AKICAgIGZyYW1lX2RpZyAtMQogICAgYm94X3B1dAogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMDMKICAgIC8vIHNlbGYudm90ZXJfY291bnQgKz0gMQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzEgLy8gInZvdGVyX2NvdW50IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnZvdGVyX2NvdW50IGV4aXN0cwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGJ5dGVjXzEgLy8gInZvdGVyX2NvdW50IgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MTk1CiAgICAvLyBmb3IgcXVlc3Rpb25faW5kZXggaW4gdXJhbmdlKHF1ZXN0aW9uc19jb3VudCk6CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAyCiAgICBiIHZvdGVfZm9yX2hlYWRlckAxCgp2b3RlX2FmdGVyX2ZvckA0OgogICAgcmV0c3ViCgoKLy8gZXhhbXBsZXMudm90aW5nLnZvdGluZy5Wb3RpbmdSb3VuZEFwcC52b3Rpbmdfb3BlbigpIC0+IHVpbnQ2NDoKdm90aW5nX29wZW46CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIwNS0yMDYKICAgIC8vIEBzdWJyb3V0aW5lCiAgICAvLyBkZWYgdm90aW5nX29wZW4oc2VsZikgLT4gYm9vbDoKICAgIHByb3RvIDAgMQogICAgcHVzaGJ5dGVzICIiCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIwOAogICAgLy8gc2VsZi5pc19ib290c3RyYXBwZWQKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJpc19ib290c3RyYXBwZWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuaXNfYm9vdHN0cmFwcGVkIGV4aXN0cwogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMDgtMjEwCiAgICAvLyBzZWxmLmlzX2Jvb3RzdHJhcHBlZAogICAgLy8gYW5kIG5vdCBzZWxmLmNsb3NlX3RpbWUKICAgIC8vIGFuZCBzZWxmLnN0YXJ0X3RpbWUgPD0gR2xvYmFsLmxhdGVzdF90aW1lc3RhbXAgPD0gc2VsZi5lbmRfdGltZQogICAgYnogdm90aW5nX29wZW5fYm9vbF9mYWxzZUA1CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIwOQogICAgLy8gYW5kIG5vdCBzZWxmLmNsb3NlX3RpbWUKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA1IC8vICJjbG9zZV90aW1lIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGJ1cnkgMQogICAgYm56IHZvdGluZ19vcGVuX2Jvb2xfZmFsc2VANQogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMTAKICAgIC8vIGFuZCBzZWxmLnN0YXJ0X3RpbWUgPD0gR2xvYmFsLmxhdGVzdF90aW1lc3RhbXAgPD0gc2VsZi5lbmRfdGltZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDEwIC8vICJzdGFydF90aW1lIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnN0YXJ0X3RpbWUgZXhpc3RzCiAgICBnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCiAgICBkdXAKICAgIGZyYW1lX2J1cnkgMAogICAgPD0KICAgIGJ6IHZvdGluZ19vcGVuX2Jvb2xfZmFsc2VANQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDExIC8vICJlbmRfdGltZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5lbmRfdGltZSBleGlzdHMKICAgIGZyYW1lX2RpZyAwCiAgICA+PQogICAgYnogdm90aW5nX29wZW5fYm9vbF9mYWxzZUA1CiAgICBpbnRjXzEgLy8gMQoKdm90aW5nX29wZW5fYm9vbF9tZXJnZUA2OgogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMDctMjExCiAgICAvLyByZXR1cm4gKAogICAgLy8gICAgIHNlbGYuaXNfYm9vdHN0cmFwcGVkCiAgICAvLyAgICAgYW5kIG5vdCBzZWxmLmNsb3NlX3RpbWUKICAgIC8vICAgICBhbmQgc2VsZi5zdGFydF90aW1lIDw9IEdsb2JhbC5sYXRlc3RfdGltZXN0YW1wIDw9IHNlbGYuZW5kX3RpbWUKICAgIC8vICkKICAgIHN3YXAKICAgIHJldHN1YgoKdm90aW5nX29wZW5fYm9vbF9mYWxzZUA1OgogICAgaW50Y18wIC8vIDAKICAgIGIgdm90aW5nX29wZW5fYm9vbF9tZXJnZUA2CgoKLy8gZXhhbXBsZXMudm90aW5nLnZvdGluZy5Wb3RpbmdSb3VuZEFwcC5hbGxvd2VkX3RvX3ZvdGUoc2lnbmF0dXJlOiBieXRlcykgLT4gdWludDY0OgphbGxvd2VkX3RvX3ZvdGU6CiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIzMC0yMzEKICAgIC8vIEBzdWJyb3V0aW5lCiAgICAvLyBkZWYgYWxsb3dlZF90b192b3RlKHNlbGYsIHNpZ25hdHVyZTogQnl0ZXMpIC0+IGJvb2w6CiAgICBwcm90byAxIDEKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjMyCiAgICAvLyBlbnN1cmVfYnVkZ2V0KDIwMDApCiAgICBwdXNoaW50IDIwMDAgLy8gMjAwMAogICAgaW50Y18wIC8vIDAKICAgIGNhbGxzdWIgZW5zdXJlX2J1ZGdldAogICAgLy8gdm90aW5nL3ZvdGluZy5weToyMzQKICAgIC8vIFR4bi5zZW5kZXIuYnl0ZXMsCiAgICB0eG4gU2VuZGVyCiAgICAvLyB2b3Rpbmcvdm90aW5nLnB5OjIzNgogICAgLy8gc2VsZi5zbmFwc2hvdF9wdWJsaWNfa2V5LAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDggLy8gInNuYXBzaG90X3B1YmxpY19rZXkiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuc25hcHNob3RfcHVibGljX2tleSBleGlzdHMKICAgIC8vIHZvdGluZy92b3RpbmcucHk6MjMzLTIzNwogICAgLy8gcmV0dXJuIG9wLmVkMjU1MTl2ZXJpZnlfYmFyZSgKICAgIC8vICAgICBUeG4uc2VuZGVyLmJ5dGVzLAogICAgLy8gICAgIHNpZ25hdHVyZSwKICAgIC8vICAgICBzZWxmLnNuYXBzaG90X3B1YmxpY19rZXksCiAgICAvLyApCiAgICBmcmFtZV9kaWcgLTEKICAgIHN3YXAKICAgIGVkMjU1MTl2ZXJpZnlfYmFyZQogICAgcmV0c3ViCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "CiAEAAEKCCYPD2lzX2Jvb3RzdHJhcHBlZAt2b3Rlcl9jb3VudAd2b3RlX2lkDW9wdGlvbl9jb3VudHMBVgpjbG9zZV90aW1lAwaBAQowMTIzNDU2Nzg5E3NuYXBzaG90X3B1YmxpY19rZXkRbWV0YWRhdGFfaXBmc19jaWQKc3RhcnRfdGltZQhlbmRfdGltZQZxdW9ydW0NbmZ0X2ltYWdlX3VybA10b3RhbF9vcHRpb25zMRhAAAYoImcpImcxG0EAKoIFBK6Jf2sEpOjRZASWVgR6BLyxWJYEhKU8bjYaAI4FAF4ASAA8ACEAAiJDMRkURDEYRDEWIwlJOBAjEkQ2GgFXAgA2GgKIA5ojQzEZFEQxGEQ2GgFXAgCIA2eABBUffHVMULAjQzEZFEQxGESIAUsjQzEZFEQxGEQxFiMJSTgQIxJEiAEBI0MxGRREMRgURDYaAVcCADYaAlcCADYaA1cCADYaBBc2GgUXNhoGNhoHFzYaCFcCAIgAXyNDigIAi/4kCIsAMgwNQQAqsYEGshCBBbIZJwayHicGsh+L/40CAAsABLNC/9syALIBQv/1IrIBQv/viYoBAYv/JAxBAAcnB4v/I1iJi/8kCoj/6Iv/JBgnB0wjWFCJiggAi/uL/AxEi/wyBw9EKov4ZycIi/lnJwmL+mcnCov7ZycLi/xnJwyL/mcnDYv/Z4v9IllHAkSBcA5EIkmLAosADEEAF4v9VwIAiwJJTgJViwEIjAEjCIwCQv/hiwFJgYABDkQri/1nJw5MZ4mKAQAiKGVEFEQoI2eL/zgHMgoSRCInDmVEJQtJgZADC4H8uAwISRawi/84CBJEJwRMuUSJigAAIkcCgABHAoGgnAEiiP7vIicFZUUBFEQnBTIHZyIqZUSAWHsic3RhbmRhcmQiOiJhcmM2OSIsImRlc2NyaXB0aW9uIjoiVGhpcyBpcyBhIHZvdGluZyByZXN1bHQgTkZUIGZvciB2b3Rpbmcgcm91bmQgd2l0aCBJRCBMUIAkLiIsInByb3BlcnRpZXMiOnsibWV0YWRhdGEiOiJpcGZzOi8vUCInCWVEUIAIIiwiaWQiOiJQIiplRFCACyIsInF1b3J1bSI6UCInDGVEiP5pUIAOLCJ2b3RlckNvdW50IjpQIillRIj+UFCADCwidGFsbGllcyI6W1AiSStlTElPAkQiWSKLCosJDEEAnIsIVwIASYwAiwpJTgIjWIwCiwaMAUEACIsGgAEsUIwBiwFJjAaLAoABAKWLB4wDTIwBQQBWiwaAAVtQjAaLAIsKVYwFIowEiwSLBQxBADCLBowBiwRBAAiLBoABLFCMAYsBJwSLB0lOAyW6F4j9vVCMBiMIjAeLBCMIjARC/8iLBoABXVCLB4wDjAGLA4wHiwGMBosKIwiMCkL/XIsGgANdfX1QsTIAIiplRIAOW1ZPVEUgUkVTVUxUXSBMUCInDWVETwOyBbIngAhWT1RFUlNMVLIlsiYisiQisiMjsiKBA7IQsgGzgAxuZnRfYXNzZXRfaWS0PGeJigEBiAC3Fov/iADmFjEAvUUBFjIHFk8DTwNQTwJQTFCJigMAgZQ8Ioj8z4v+iADCRIgAiUQxAL1FARREIitlRCJZSYv/IllJTwISRIEiCIGQAwuBxBMIi/04BzIKEkRJFrCL/TgIEkQiSYsCiwAMQQBKi/9XAgCLAklOAlUiK2VEVwIASwJVSgxEiwFJTgJPAwgnBEsBJboXIwgWJwROArsIjAExAEm8SIv/vyIpZUQjCClMZyMIjAJC/66JigABgAAiKGVEQQAlIicFZUUBQAAcIicKZUQyB0mMAA5BAA4iJwtlRIsAD0EAAyNMiSJC//qKAQGB0A8iiPv+MQAiJwhlRIv/TISJ", "clear": "CoEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 99, "minor": 99, "patch": 99 } }, "events": [], "templateVariables": {} }