{ "name": "ProtocolConfig", "structs": {}, "methods": [ { "name": "create", "args": [ { "type": "address", "name": "admin" }, { "type": "uint64", "name": "min_bootstrap_deposit" }, { "type": "uint64", "name": "challenge_bond" }, { "type": "uint64", "name": "proposal_bond" }, { "type": "uint64", "name": "challenge_bond_bps" }, { "type": "uint64", "name": "proposal_bond_bps" }, { "type": "uint64", "name": "challenge_bond_cap" }, { "type": "uint64", "name": "proposal_bond_cap" }, { "type": "uint64", "name": "proposer_fee_bps" }, { "type": "uint64", "name": "proposer_fee_floor_bps" }, { "type": "uint64", "name": "default_b" }, { "type": "uint64", "name": "protocol_fee_ceiling_bps" }, { "type": "uint64", "name": "protocol_fee_bps" }, { "type": "address", "name": "protocol_treasury" }, { "type": "uint64", "name": "market_factory_id" }, { "type": "uint64", "name": "max_outcomes" }, { "type": "uint64", "name": "min_challenge_window_secs" }, { "type": "uint64", "name": "min_grace_period_secs" }, { "type": "uint64", "name": "max_lp_fee_bps" }, { "type": "uint64", "name": "default_residual_linear_lambda_fp" }, { "type": "uint64", "name": "max_active_lp_v4_outcomes" } ], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_admin", "args": [ { "type": "address", "name": "admin" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_min_bootstrap_deposit", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_challenge_bond", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_proposal_bond", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_challenge_bond_bps", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_proposal_bond_bps", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_challenge_bond_cap", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_proposal_bond_cap", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_proposer_fee_bps", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_proposer_fee_floor_bps", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_default_b", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_protocol_fee_bps", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_protocol_fee_ceiling_bps", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_protocol_treasury", "args": [ { "type": "address", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_market_factory_id", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_max_outcomes", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_min_challenge_window_secs", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_min_grace_period_secs", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_max_lp_fee_bps", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_default_residual_linear_lambda_fp", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "update_max_active_lp_v4_outcomes", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "op_up", "args": [ { "type": "uint64", "name": "count" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "noop", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "desc": "Protocol-wide governance/configuration state stored in global state.", "networks": {}, "state": { "schema": { "global": { "ints": 19, "bytes": 2 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "admin": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "YWRtaW4=" }, "min_bootstrap_deposit": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "bWluX2Jvb3RzdHJhcF9kZXBvc2l0" }, "challenge_bond": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "Y2I=" }, "proposal_bond": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cGI=" }, "challenge_bond_bps": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "Y2Ji" }, "proposal_bond_bps": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cGJi" }, "challenge_bond_cap": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "Y2Jj" }, "proposal_bond_cap": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cGJj" }, "proposer_fee_bps": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cGZk" }, "proposer_fee_floor_bps": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cGZm" }, "default_b": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "ZGVmYXVsdF9i" }, "protocol_fee_bps": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cGZi" }, "protocol_fee_ceiling_bps": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cHJvdG9jb2xfZmVlX2NlaWxpbmdfYnBz" }, "protocol_treasury": { "keyType": "AVMBytes", "valueType": "AVMBytes", "key": "cHQ=" }, "market_factory_id": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "bWZp" }, "max_outcomes": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "bWF4X291dGNvbWVz" }, "min_challenge_window_secs": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "bWN3" }, "min_grace_period_secs": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "bWluX2dyYWNlX3BlcmlvZF9zZWNz" }, "max_lp_fee_bps": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "bWF4X2xwX2ZlZV9icHM=" }, "default_residual_linear_lambda_fp": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "cmxm" }, "max_active_lp_v4_outcomes": { "keyType": "AVMBytes", "valueType": "AVMUint64", "key": "bWF4X2FjdGl2ZV9scF92NF9vdXRjb21lcw==" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [], "call": [ "NoOp" ] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 1431 ], "errorMessage": "check self.admin exists" }, { "pc": [ 1017 ], "errorMessage": "check self.challenge_bond exists" }, { "pc": [ 917 ], "errorMessage": "check self.challenge_bond_cap exists" }, { "pc": [ 1248 ], "errorMessage": "check self.max_active_lp_v4_outcomes exists" }, { "pc": [ 1365 ], "errorMessage": "check self.max_outcomes exists" }, { "pc": [ 1047 ], "errorMessage": "check self.proposal_bond exists" }, { "pc": [ 946 ], "errorMessage": "check self.proposal_bond_cap exists" }, { "pc": [ 1175 ], "errorMessage": "check self.protocol_fee_bps exists" }, { "pc": [ 1144 ], "errorMessage": "check self.protocol_fee_ceiling_bps exists" }, { "pc": [ 448, 553, 870, 1194 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 562, 571, 580, 589, 598, 607, 616 ], "errorMessage": "invalid number of bytes for arc4.tuple" }, { "pc": [ 456, 464, 472, 480, 488, 496, 504, 512, 520, 528, 536, 544, 891, 909, 937, 966, 988, 1010, 1040, 1071, 1093, 1115, 1135, 1162, 1216, 1234, 1266, 1286, 1306, 1328, 1351, 1383 ], "errorMessage": "invalid number of bytes for arc4.uint64" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayA4IDEgMTAwMDAgMCAxMDAwMDAwCiAgICBieXRlY2Jsb2NrICJhZG1pbiIgMHg2MzYyIDB4NzA2MiAweDYzNjI2MyAweDcwNjI2MyAweDcwNjY2MiAweDcwNzI2Zjc0NmY2MzZmNmM1ZjY2NjU2NTVmNjM2NTY5NmM2OTZlNjc1ZjYyNzA3MyAweDZkNjE3ODVmNmY3NTc0NjM2ZjZkNjU3MyAweDZkNjE3ODVmNjE2Mzc0Njk3NjY1NWY2YzcwNWY3NjM0NWY2Zjc1NzQ2MzZmNmQ2NTczIDB4NmQ2OTZlNWY2MjZmNmY3NDczNzQ3MjYxNzA1ZjY0NjU3MDZmNzM2OTc0IDB4NjM2MjYyIDB4NzA2MjYyIDB4NzA2NjY0IDB4NzA2NjY2IDB4NjQ2NTY2NjE3NTZjNzQ1ZjYyIDB4NzA3NCAweDZkNjY2OSAweDZkNjM3NyAweDZkNjk2ZTVmNjc3MjYxNjM2NTVmNzA2NTcyNjk2ZjY0NWY3MzY1NjM3MyAweDZkNjE3ODVmNmM3MDVmNjY2NTY1NWY2MjcwNzMgMHg3MjZjNjYgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjQwCiAgICAvLyBjbGFzcyBQcm90b2NvbENvbmZpZyhBUkM0Q29udHJhY3QpOgogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fYmFyZV9ub29wQDM0CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBieiBtYWluX2NyZWF0ZV9Ob09wQDMwCiAgICBwdXNoYnl0ZXNzIDB4NGExNjVlZTcgMHhhZTUwNmUxZiAweDg0MTY3NGQ1IDB4ZjVmODNlN2EgMHgxYTM3MmQ5NyAweDI1NTI4MDc5IDB4Y2EwY2E5MzMgMHg3NTJiYmM1ZSAweGM4ZTE3ZTQ5IDB4Mjk2NTFkOTQgMHg1NzE5NjI0MiAweGU2MGVjZWY2IDB4OTA2YTk5ZTIgMHgyZGNiNDE3YSAweGU4YWY3ZjEyIDB4Yjk4ZTE4MmEgMHg4M2FhZjAyMCAweGIzY2UwN2NjIDB4NTZlZTRiMmQgMHhiYTVjYzA4OCAweDQ0NjNhOTYzIDB4YmVmMTRiZDkgMHhlODNhODdhYiAvLyBtZXRob2QgInVwZGF0ZV9hZG1pbihhZGRyZXNzKXZvaWQiLCBtZXRob2QgInVwZGF0ZV9taW5fYm9vdHN0cmFwX2RlcG9zaXQodWludDY0KXZvaWQiLCBtZXRob2QgInVwZGF0ZV9jaGFsbGVuZ2VfYm9uZCh1aW50NjQpdm9pZCIsIG1ldGhvZCAidXBkYXRlX3Byb3Bvc2FsX2JvbmQodWludDY0KXZvaWQiLCBtZXRob2QgInVwZGF0ZV9jaGFsbGVuZ2VfYm9uZF9icHModWludDY0KXZvaWQiLCBtZXRob2QgInVwZGF0ZV9wcm9wb3NhbF9ib25kX2Jwcyh1aW50NjQpdm9pZCIsIG1ldGhvZCAidXBkYXRlX2NoYWxsZW5nZV9ib25kX2NhcCh1aW50NjQpdm9pZCIsIG1ldGhvZCAidXBkYXRlX3Byb3Bvc2FsX2JvbmRfY2FwKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJ1cGRhdGVfcHJvcG9zZXJfZmVlX2Jwcyh1aW50NjQpdm9pZCIsIG1ldGhvZCAidXBkYXRlX3Byb3Bvc2VyX2ZlZV9mbG9vcl9icHModWludDY0KXZvaWQiLCBtZXRob2QgInVwZGF0ZV9kZWZhdWx0X2IodWludDY0KXZvaWQiLCBtZXRob2QgInVwZGF0ZV9wcm90b2NvbF9mZWVfYnBzKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJ1cGRhdGVfcHJvdG9jb2xfZmVlX2NlaWxpbmdfYnBzKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJ1cGRhdGVfcHJvdG9jb2xfdHJlYXN1cnkoYWRkcmVzcyl2b2lkIiwgbWV0aG9kICJ1cGRhdGVfbWFya2V0X2ZhY3RvcnlfaWQodWludDY0KXZvaWQiLCBtZXRob2QgInVwZGF0ZV9tYXhfb3V0Y29tZXModWludDY0KXZvaWQiLCBtZXRob2QgInVwZGF0ZV9taW5fY2hhbGxlbmdlX3dpbmRvd19zZWNzKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJ1cGRhdGVfbWluX2dyYWNlX3BlcmlvZF9zZWNzKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJ1cGRhdGVfbWF4X2xwX2ZlZV9icHModWludDY0KXZvaWQiLCBtZXRob2QgInVwZGF0ZV9kZWZhdWx0X3Jlc2lkdWFsX2xpbmVhcl9sYW1iZGFfZnAodWludDY0KXZvaWQiLCBtZXRob2QgInVwZGF0ZV9tYXhfYWN0aXZlX2xwX3Y0X291dGNvbWVzKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJvcF91cCh1aW50NjQpdm9pZCIsIG1ldGhvZCAibm9vcCgpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIHVwZGF0ZV9hZG1pbiB1cGRhdGVfbWluX2Jvb3RzdHJhcF9kZXBvc2l0IHVwZGF0ZV9jaGFsbGVuZ2VfYm9uZCB1cGRhdGVfcHJvcG9zYWxfYm9uZCB1cGRhdGVfY2hhbGxlbmdlX2JvbmRfYnBzIHVwZGF0ZV9wcm9wb3NhbF9ib25kX2JwcyB1cGRhdGVfY2hhbGxlbmdlX2JvbmRfY2FwIHVwZGF0ZV9wcm9wb3NhbF9ib25kX2NhcCB1cGRhdGVfcHJvcG9zZXJfZmVlX2JwcyB1cGRhdGVfcHJvcG9zZXJfZmVlX2Zsb29yX2JwcyB1cGRhdGVfZGVmYXVsdF9iIHVwZGF0ZV9wcm90b2NvbF9mZWVfYnBzIHVwZGF0ZV9wcm90b2NvbF9mZWVfY2VpbGluZ19icHMgdXBkYXRlX3Byb3RvY29sX3RyZWFzdXJ5IHVwZGF0ZV9tYXJrZXRfZmFjdG9yeV9pZCB1cGRhdGVfbWF4X291dGNvbWVzIHVwZGF0ZV9taW5fY2hhbGxlbmdlX3dpbmRvd19zZWNzIHVwZGF0ZV9taW5fZ3JhY2VfcGVyaW9kX3NlY3MgdXBkYXRlX21heF9scF9mZWVfYnBzIHVwZGF0ZV9kZWZhdWx0X3Jlc2lkdWFsX2xpbmVhcl9sYW1iZGFfZnAgdXBkYXRlX21heF9hY3RpdmVfbHBfdjRfb3V0Y29tZXMgb3BfdXAgbWFpbl9ub29wX3JvdXRlQDI4CiAgICBlcnIKCm1haW5fbm9vcF9yb3V0ZUAyODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjkyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9jcmVhdGVfTm9PcEAzMDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NDAKICAgIC8vIGNsYXNzIFByb3RvY29sQ29uZmlnKEFSQzRDb250cmFjdCk6CiAgICBwdXNoYnl0ZXMgMHhkZjdkMWIzYyAvLyBtZXRob2QgImNyZWF0ZShhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBjcmVhdGUKICAgIGVycgoKbWFpbl9iYXJlX25vb3BAMzQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI3NAogICAgLy8gQGFyYzQuYmFyZW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgJiYKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5wcm90b2NvbF9jb25maWcuY29udHJhY3QuUHJvdG9jb2xDb25maWcuY3JlYXRlW3JvdXRpbmddKCkgLT4gdm9pZDoKY3JlYXRlOgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo4MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGNyZWF0ZT0icmVxdWlyZSIpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA1CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA2CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA3CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA4CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA5CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEyCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTQKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA1NgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2ND4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA1NgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2ND4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA1NgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2ND4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA1NgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2ND4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA1NgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2ND4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA1NgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2ND4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA1NgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2ND4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTA3CiAgICAvLyBzZWxmLl9yZXF1aXJlKGRlZmF1bHRfYi5hc191aW50NjQoKSA+IFVJbnQ2NCgwKSkKICAgIHVuY292ZXIgMTAKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGR1cAogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjEwOAogICAgLy8gc2VsZi5fcmVxdWlyZShtYXhfb3V0Y29tZXMuYXNfdWludDY0KCkgPj0gVUludDY0KE1JTl9PVVRDT01FUykpCiAgICB1bmNvdmVyIDYKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6ODIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChjcmVhdGU9InJlcXVpcmUiKQogICAgaW50Y18wIC8vIDgKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTA4CiAgICAvLyBzZWxmLl9yZXF1aXJlKG1heF9vdXRjb21lcy5hc191aW50NjQoKSA+PSBVSW50NjQoTUlOX09VVENPTUVTKSkKICAgIGV4dHJhY3RfdWludDY0CiAgICBkdXAKICAgIHB1c2hpbnQgMgogICAgPj0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxMDkKICAgIC8vIHNlbGYuX3JlcXVpcmUobWluX2NoYWxsZW5nZV93aW5kb3dfc2Vjcy5hc191aW50NjQoKSA+IFVJbnQ2NCgwKSkKICAgIHVuY292ZXIgNgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo4MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGNyZWF0ZT0icmVxdWlyZSIpCiAgICBwdXNoaW50IDE2CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjEwOQogICAgLy8gc2VsZi5fcmVxdWlyZShtaW5fY2hhbGxlbmdlX3dpbmRvd19zZWNzLmFzX3VpbnQ2NCgpID4gVUludDY0KDApKQogICAgZXh0cmFjdF91aW50NjQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGR1cAogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjExMAogICAgLy8gc2VsZi5fcmVxdWlyZShtaW5fZ3JhY2VfcGVyaW9kX3NlY3MuYXNfdWludDY0KCkgPiBVSW50NjQoMCkpCiAgICB1bmNvdmVyIDYKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6ODIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChjcmVhdGU9InJlcXVpcmUiKQogICAgcHVzaGludCAyNAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxMTAKICAgIC8vIHNlbGYuX3JlcXVpcmUobWluX2dyYWNlX3BlcmlvZF9zZWNzLmFzX3VpbnQ2NCgpID4gVUludDY0KDApKQogICAgZXh0cmFjdF91aW50NjQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGR1cAogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjExMQogICAgLy8gc2VsZi5fcmVxdWlyZV9ib25kX2JvdW5kcyhjaGFsbGVuZ2VfYm9uZC5hc191aW50NjQoKSwgY2hhbGxlbmdlX2JvbmRfY2FwLmFzX3VpbnQ2NCgpKQogICAgdW5jb3ZlciAxOAogICAgYnRvaQogICAgdW5jb3ZlciAxNQogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGNvbmRpdGlvbgogICAgZGlnIDEKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo4MAogICAgLy8gc2VsZi5fcmVxdWlyZShjYXAgPj0gbWluaW11bSkKICAgIGR1cAogICAgZGlnIDIKICAgID49CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTEyCiAgICAvLyBzZWxmLl9yZXF1aXJlX2JvbmRfYm91bmRzKHByb3Bvc2FsX2JvbmQuYXNfdWludDY0KCksIHByb3Bvc2FsX2JvbmRfY2FwLmFzX3VpbnQ2NCgpKQogICAgdW5jb3ZlciAxOAogICAgYnRvaQogICAgdW5jb3ZlciAxNgogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGNvbmRpdGlvbgogICAgZGlnIDEKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo4MAogICAgLy8gc2VsZi5fcmVxdWlyZShjYXAgPj0gbWluaW11bSkKICAgIGR1cAogICAgZGlnIDIKICAgID49CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTEzCiAgICAvLyBzZWxmLl9yZXF1aXJlX2JwcyhjaGFsbGVuZ2VfYm9uZF9icHMuYXNfdWludDY0KCkpCiAgICB1bmNvdmVyIDE4CiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5Ojc2CiAgICAvLyBzZWxmLl9yZXF1aXJlKHZhbHVlIDw9IFVJbnQ2NChCUFNfREVOT01JTkFUT1IpKQogICAgZHVwCiAgICBpbnRjXzIgLy8gMTAwMDAKICAgIDw9CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTE0CiAgICAvLyBzZWxmLl9yZXF1aXJlX2Jwcyhwcm9wb3NhbF9ib25kX2Jwcy5hc191aW50NjQoKSkKICAgIHVuY292ZXIgMTgKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NzYKICAgIC8vIHNlbGYuX3JlcXVpcmUodmFsdWUgPD0gVUludDY0KEJQU19ERU5PTUlOQVRPUikpCiAgICBkdXAKICAgIGludGNfMiAvLyAxMDAwMAogICAgPD0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxMTUKICAgIC8vIHNlbGYuX3JlcXVpcmVfYnBzKHByb3Bvc2VyX2ZlZV9icHMuYXNfdWludDY0KCkpCiAgICB1bmNvdmVyIDE4CiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5Ojc2CiAgICAvLyBzZWxmLl9yZXF1aXJlKHZhbHVlIDw9IFVJbnQ2NChCUFNfREVOT01JTkFUT1IpKQogICAgZHVwCiAgICBpbnRjXzIgLy8gMTAwMDAKICAgIDw9CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTE2CiAgICAvLyBzZWxmLl9yZXF1aXJlX2Jwcyhwcm9wb3Nlcl9mZWVfZmxvb3JfYnBzLmFzX3VpbnQ2NCgpKQogICAgdW5jb3ZlciAxOAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo3NgogICAgLy8gc2VsZi5fcmVxdWlyZSh2YWx1ZSA8PSBVSW50NjQoQlBTX0RFTk9NSU5BVE9SKSkKICAgIGR1cAogICAgaW50Y18yIC8vIDEwMDAwCiAgICA8PQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGNvbmRpdGlvbgogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjExNwogICAgLy8gc2VsZi5fcmVxdWlyZV9icHMocHJvdG9jb2xfZmVlX2NlaWxpbmdfYnBzLmFzX3VpbnQ2NCgpKQogICAgdW5jb3ZlciAxOAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo3NgogICAgLy8gc2VsZi5fcmVxdWlyZSh2YWx1ZSA8PSBVSW50NjQoQlBTX0RFTk9NSU5BVE9SKSkKICAgIGR1cAogICAgaW50Y18yIC8vIDEwMDAwCiAgICA8PQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGNvbmRpdGlvbgogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjExOAogICAgLy8gc2VsZi5fcmVxdWlyZV9icHMocHJvdG9jb2xfZmVlX2Jwcy5hc191aW50NjQoKSkKICAgIHVuY292ZXIgMTgKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NzYKICAgIC8vIHNlbGYuX3JlcXVpcmUodmFsdWUgPD0gVUludDY0KEJQU19ERU5PTUlOQVRPUikpCiAgICBkdXAKICAgIGludGNfMiAvLyAxMDAwMAogICAgPD0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxMTkKICAgIC8vIHNlbGYuX3JlcXVpcmVfYnBzKG1heF9scF9mZWVfYnBzLmFzX3VpbnQ2NCgpKQogICAgdW5jb3ZlciAxNgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo4MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGNyZWF0ZT0icmVxdWlyZSIpCiAgICBwdXNoaW50IDMyCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjExOQogICAgLy8gc2VsZi5fcmVxdWlyZV9icHMobWF4X2xwX2ZlZV9icHMuYXNfdWludDY0KCkpCiAgICBleHRyYWN0X3VpbnQ2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo3NgogICAgLy8gc2VsZi5fcmVxdWlyZSh2YWx1ZSA8PSBVSW50NjQoQlBTX0RFTk9NSU5BVE9SKSkKICAgIGR1cAogICAgaW50Y18yIC8vIDEwMDAwCiAgICA8PQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGNvbmRpdGlvbgogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjEyMAogICAgLy8gc2VsZi5fcmVxdWlyZShkZWZhdWx0X3Jlc2lkdWFsX2xpbmVhcl9sYW1iZGFfZnAuYXNfdWludDY0KCkgPD0gVUludDY0KFJFU0lEVUFMX1dFSUdIVF9TQ0FMRV9GUCkpCiAgICB1bmNvdmVyIDE2CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjgyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoY3JlYXRlPSJyZXF1aXJlIikKICAgIHB1c2hpbnQgNDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTIwCiAgICAvLyBzZWxmLl9yZXF1aXJlKGRlZmF1bHRfcmVzaWR1YWxfbGluZWFyX2xhbWJkYV9mcC5hc191aW50NjQoKSA8PSBVSW50NjQoUkVTSURVQUxfV0VJR0hUX1NDQUxFX0ZQKSkKICAgIGV4dHJhY3RfdWludDY0CiAgICBkdXAKICAgIGludGMgNCAvLyAxMDAwMDAwCiAgICA8PQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGNvbmRpdGlvbgogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjEyMQogICAgLy8gc2VsZi5fcmVxdWlyZShtYXhfYWN0aXZlX2xwX3Y0X291dGNvbWVzLmFzX3VpbnQ2NCgpID49IFVJbnQ2NChNSU5fT1VUQ09NRVMpKQogICAgdW5jb3ZlciAxNgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo4MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGNyZWF0ZT0icmVxdWlyZSIpCiAgICBwdXNoaW50IDQ4CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjEyMQogICAgLy8gc2VsZi5fcmVxdWlyZShtYXhfYWN0aXZlX2xwX3Y0X291dGNvbWVzLmFzX3VpbnQ2NCgpID49IFVJbnQ2NChNSU5fT1VUQ09NRVMpKQogICAgZXh0cmFjdF91aW50NjQKICAgIGR1cAogICAgcHVzaGludCAyCiAgICA+PQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGNvbmRpdGlvbgogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjEyMgogICAgLy8gc2VsZi5fcmVxdWlyZShtYXhfYWN0aXZlX2xwX3Y0X291dGNvbWVzLmFzX3VpbnQ2NCgpIDw9IG1heF9vdXRjb21lcy5hc191aW50NjQoKSkKICAgIGR1cAogICAgZGlnIDE2CiAgICA8PQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGNvbmRpdGlvbgogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjczCiAgICAvLyBzZWxmLl9yZXF1aXJlKGZlZV9icHMgPD0gY2VpbGluZ19icHMpCiAgICBkaWcgMwogICAgZGlnIDUKICAgIDw9CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTI1CiAgICAvLyBzZWxmLmFkbWluLnZhbHVlID0gYWRtaW4uYnl0ZXMKICAgIGJ5dGVjXzAgLy8gImFkbWluIgogICAgdW5jb3ZlciAyMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTI2CiAgICAvLyBzZWxmLm1pbl9ib290c3RyYXBfZGVwb3NpdC52YWx1ZSA9IG1pbl9ib290c3RyYXBfZGVwb3NpdC5hc191aW50NjQoKQogICAgdW5jb3ZlciAxOQogICAgYnRvaQogICAgYnl0ZWMgOSAvLyAweDZkNjk2ZTVmNjI2ZjZmNzQ3Mzc0NzI2MTcwNWY2NDY1NzA2ZjczNjk3NAogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTI3CiAgICAvLyBzZWxmLmNoYWxsZW5nZV9ib25kLnZhbHVlID0gY2hhbGxlbmdlX2JvbmQuYXNfdWludDY0KCkKICAgIGJ5dGVjXzEgLy8gMHg2MzYyCiAgICB1bmNvdmVyIDEzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxMjgKICAgIC8vIHNlbGYucHJvcG9zYWxfYm9uZC52YWx1ZSA9IHByb3Bvc2FsX2JvbmQuYXNfdWludDY0KCkKICAgIGJ5dGVjXzIgLy8gMHg3MDYyCiAgICB1bmNvdmVyIDExCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxMjkKICAgIC8vIHNlbGYuY2hhbGxlbmdlX2JvbmRfYnBzLnZhbHVlID0gY2hhbGxlbmdlX2JvbmRfYnBzLmFzX3VpbnQ2NCgpCiAgICBieXRlYyAxMCAvLyAweDYzNjI2MgogICAgdW5jb3ZlciA5CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxMzAKICAgIC8vIHNlbGYucHJvcG9zYWxfYm9uZF9icHMudmFsdWUgPSBwcm9wb3NhbF9ib25kX2Jwcy5hc191aW50NjQoKQogICAgYnl0ZWMgMTEgLy8gMHg3MDYyNjIKICAgIHVuY292ZXIgOAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTMxCiAgICAvLyBzZWxmLmNoYWxsZW5nZV9ib25kX2NhcC52YWx1ZSA9IGNoYWxsZW5nZV9ib25kX2NhcC5hc191aW50NjQoKQogICAgYnl0ZWNfMyAvLyAweDYzNjI2MwogICAgdW5jb3ZlciA5CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxMzIKICAgIC8vIHNlbGYucHJvcG9zYWxfYm9uZF9jYXAudmFsdWUgPSBwcm9wb3NhbF9ib25kX2NhcC5hc191aW50NjQoKQogICAgYnl0ZWMgNCAvLyAweDcwNjI2MwogICAgdW5jb3ZlciA4CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxMzMKICAgIC8vIHNlbGYucHJvcG9zZXJfZmVlX2Jwcy52YWx1ZSA9IHByb3Bvc2VyX2ZlZV9icHMuYXNfdWludDY0KCkKICAgIGJ5dGVjIDEyIC8vIDB4NzA2NjY0CiAgICB1bmNvdmVyIDcKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjEzNAogICAgLy8gc2VsZi5wcm9wb3Nlcl9mZWVfZmxvb3JfYnBzLnZhbHVlID0gcHJvcG9zZXJfZmVlX2Zsb29yX2Jwcy5hc191aW50NjQoKQogICAgYnl0ZWMgMTMgLy8gMHg3MDY2NjYKICAgIHVuY292ZXIgNgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTM1CiAgICAvLyBzZWxmLmRlZmF1bHRfYi52YWx1ZSA9IGRlZmF1bHRfYi5hc191aW50NjQoKQogICAgYnl0ZWMgMTQgLy8gMHg2NDY1NjY2MTc1NmM3NDVmNjIKICAgIHVuY292ZXIgOQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTM2CiAgICAvLyBzZWxmLnByb3RvY29sX2ZlZV9icHMudmFsdWUgPSBwcm90b2NvbF9mZWVfYnBzLmFzX3VpbnQ2NCgpCiAgICBieXRlYyA1IC8vIDB4NzA2NjYyCiAgICB1bmNvdmVyIDQKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjEzNwogICAgLy8gc2VsZi5wcm90b2NvbF9mZWVfY2VpbGluZ19icHMudmFsdWUgPSBwcm90b2NvbF9mZWVfY2VpbGluZ19icHMuYXNfdWludDY0KCkKICAgIGJ5dGVjIDYgLy8gMHg3MDcyNmY3NDZmNjM2ZjZjNWY2NjY1NjU1ZjYzNjU2OTZjNjk2ZTY3NWY2MjcwNzMKICAgIHVuY292ZXIgNAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTM4CiAgICAvLyBzZWxmLnByb3RvY29sX3RyZWFzdXJ5LnZhbHVlID0gcHJvdG9jb2xfdHJlYXN1cnkuYnl0ZXMKICAgIGJ5dGVjIDE1IC8vIDB4NzA3NAogICAgdW5jb3ZlciA4CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxMzkKICAgIC8vIHNlbGYubWFya2V0X2ZhY3RvcnlfaWQudmFsdWUgPSBtYXJrZXRfZmFjdG9yeV9pZC5hc191aW50NjQoKQogICAgdW5jb3ZlciA2CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjgyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoY3JlYXRlPSJyZXF1aXJlIikKICAgIGludGNfMyAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjEzOQogICAgLy8gc2VsZi5tYXJrZXRfZmFjdG9yeV9pZC52YWx1ZSA9IG1hcmtldF9mYWN0b3J5X2lkLmFzX3VpbnQ2NCgpCiAgICBleHRyYWN0X3VpbnQ2NAogICAgYnl0ZWMgMTYgLy8gMHg2ZDY2NjkKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE0MAogICAgLy8gc2VsZi5tYXhfb3V0Y29tZXMudmFsdWUgPSBtYXhfb3V0Y29tZXMuYXNfdWludDY0KCkKICAgIGJ5dGVjIDcgLy8gMHg2ZDYxNzg1ZjZmNzU3NDYzNmY2ZDY1NzMKICAgIHVuY292ZXIgNgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTQxCiAgICAvLyBzZWxmLm1pbl9jaGFsbGVuZ2Vfd2luZG93X3NlY3MudmFsdWUgPSBtaW5fY2hhbGxlbmdlX3dpbmRvd19zZWNzLmFzX3VpbnQ2NCgpCiAgICBieXRlYyAxNyAvLyAweDZkNjM3NwogICAgdW5jb3ZlciA1CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNDIKICAgIC8vIHNlbGYubWluX2dyYWNlX3BlcmlvZF9zZWNzLnZhbHVlID0gbWluX2dyYWNlX3BlcmlvZF9zZWNzLmFzX3VpbnQ2NCgpCiAgICBieXRlYyAxOCAvLyAweDZkNjk2ZTVmNjc3MjYxNjM2NTVmNzA2NTcyNjk2ZjY0NWY3MzY1NjM3MwogICAgdW5jb3ZlciA0CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNDMKICAgIC8vIHNlbGYubWF4X2xwX2ZlZV9icHMudmFsdWUgPSBtYXhfbHBfZmVlX2Jwcy5hc191aW50NjQoKQogICAgYnl0ZWMgMTkgLy8gMHg2ZDYxNzg1ZjZjNzA1ZjY2NjU2NTVmNjI3MDczCiAgICB1bmNvdmVyIDMKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE0NAogICAgLy8gc2VsZi5kZWZhdWx0X3Jlc2lkdWFsX2xpbmVhcl9sYW1iZGFfZnAudmFsdWUgPSBkZWZhdWx0X3Jlc2lkdWFsX2xpbmVhcl9sYW1iZGFfZnAuYXNfdWludDY0KCkKICAgIGJ5dGVjIDIwIC8vIDB4NzI2YzY2CiAgICB1bmNvdmVyIDIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE0NQogICAgLy8gc2VsZi5tYXhfYWN0aXZlX2xwX3Y0X291dGNvbWVzLnZhbHVlID0gbWF4X2FjdGl2ZV9scF92NF9vdXRjb21lcy5hc191aW50NjQoKQogICAgYnl0ZWMgOCAvLyAweDZkNjE3ODVmNjE2Mzc0Njk3NjY1NWY2YzcwNWY3NjM0NWY2Zjc1NzQ2MzZmNmQ2NTczCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo4MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGNyZWF0ZT0icmVxdWlyZSIpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnByb3RvY29sX2NvbmZpZy5jb250cmFjdC5Qcm90b2NvbENvbmZpZy51cGRhdGVfYWRtaW5bcm91dGluZ10oKSAtPiB2b2lkOgp1cGRhdGVfYWRtaW46CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE0NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTQ5CiAgICAvLyBzZWxmLl9yZXF1aXJlX2FkbWluKCkKICAgIGNhbGxzdWIgX3JlcXVpcmVfYWRtaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTUwCiAgICAvLyBzZWxmLl9yZXF1aXJlKGFkbWluLmJ5dGVzICE9IEJ5dGVzKGIiXHgwMCIgKiAzMikpCiAgICBkdXAKICAgIGJ5dGVjIDIxIC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgIT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNTEKICAgIC8vIHNlbGYuYWRtaW4udmFsdWUgPSBhZG1pbi5ieXRlcwogICAgYnl0ZWNfMCAvLyAiYWRtaW4iCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNDcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnByb3RvY29sX2NvbmZpZy5jb250cmFjdC5Qcm90b2NvbENvbmZpZy51cGRhdGVfbWluX2Jvb3RzdHJhcF9kZXBvc2l0W3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlX21pbl9ib290c3RyYXBfZGVwb3NpdDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTUzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNTUKICAgIC8vIHNlbGYuX3JlcXVpcmVfYWRtaW4oKQogICAgY2FsbHN1YiBfcmVxdWlyZV9hZG1pbgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNTYKICAgIC8vIHNlbGYubWluX2Jvb3RzdHJhcF9kZXBvc2l0LnZhbHVlID0gdmFsdWUuYXNfdWludDY0KCkKICAgIGJ0b2kKICAgIGJ5dGVjIDkgLy8gMHg2ZDY5NmU1ZjYyNmY2Zjc0NzM3NDcyNjE3MDVmNjQ2NTcwNmY3MzY5NzQKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE1MwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMucHJvdG9jb2xfY29uZmlnLmNvbnRyYWN0LlByb3RvY29sQ29uZmlnLnVwZGF0ZV9jaGFsbGVuZ2VfYm9uZFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnVwZGF0ZV9jaGFsbGVuZ2VfYm9uZDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTU4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNjAKICAgIC8vIHNlbGYuX3JlcXVpcmVfYWRtaW4oKQogICAgY2FsbHN1YiBfcmVxdWlyZV9hZG1pbgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNjEKICAgIC8vIHNlbGYuX3JlcXVpcmVfYm9uZF9ib3VuZHModmFsdWUuYXNfdWludDY0KCksIHNlbGYuY2hhbGxlbmdlX2JvbmRfY2FwLnZhbHVlKQogICAgYnRvaQogICAgaW50Y18zIC8vIDAKICAgIGJ5dGVjXzMgLy8gMHg2MzYyNjMKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5jaGFsbGVuZ2VfYm9uZF9jYXAgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBkaWcgMQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjgwCiAgICAvLyBzZWxmLl9yZXF1aXJlKGNhcCA+PSBtaW5pbXVtKQogICAgZGlnIDEKICAgID49CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTYyCiAgICAvLyBzZWxmLmNoYWxsZW5nZV9ib25kLnZhbHVlID0gdmFsdWUuYXNfdWludDY0KCkKICAgIGJ5dGVjXzEgLy8gMHg2MzYyCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNTgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnByb3RvY29sX2NvbmZpZy5jb250cmFjdC5Qcm90b2NvbENvbmZpZy51cGRhdGVfcHJvcG9zYWxfYm9uZFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnVwZGF0ZV9wcm9wb3NhbF9ib25kOgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNjQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE2NgogICAgLy8gc2VsZi5fcmVxdWlyZV9hZG1pbigpCiAgICBjYWxsc3ViIF9yZXF1aXJlX2FkbWluCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE2NwogICAgLy8gc2VsZi5fcmVxdWlyZV9ib25kX2JvdW5kcyh2YWx1ZS5hc191aW50NjQoKSwgc2VsZi5wcm9wb3NhbF9ib25kX2NhcC52YWx1ZSkKICAgIGJ0b2kKICAgIGludGNfMyAvLyAwCiAgICBieXRlYyA0IC8vIDB4NzA2MjYzCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYucHJvcG9zYWxfYm9uZF9jYXAgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBkaWcgMQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjgwCiAgICAvLyBzZWxmLl9yZXF1aXJlKGNhcCA+PSBtaW5pbXVtKQogICAgZGlnIDEKICAgID49CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTY4CiAgICAvLyBzZWxmLnByb3Bvc2FsX2JvbmQudmFsdWUgPSB2YWx1ZS5hc191aW50NjQoKQogICAgYnl0ZWNfMiAvLyAweDcwNjIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE2NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMucHJvdG9jb2xfY29uZmlnLmNvbnRyYWN0LlByb3RvY29sQ29uZmlnLnVwZGF0ZV9jaGFsbGVuZ2VfYm9uZF9icHNbcm91dGluZ10oKSAtPiB2b2lkOgp1cGRhdGVfY2hhbGxlbmdlX2JvbmRfYnBzOgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNzAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE3MgogICAgLy8gc2VsZi5fcmVxdWlyZV9hZG1pbigpCiAgICBjYWxsc3ViIF9yZXF1aXJlX2FkbWluCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE3MwogICAgLy8gc2VsZi5fcmVxdWlyZV9icHModmFsdWUuYXNfdWludDY0KCkpCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5Ojc2CiAgICAvLyBzZWxmLl9yZXF1aXJlKHZhbHVlIDw9IFVJbnQ2NChCUFNfREVOT01JTkFUT1IpKQogICAgZHVwCiAgICBpbnRjXzIgLy8gMTAwMDAKICAgIDw9CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTc0CiAgICAvLyBzZWxmLmNoYWxsZW5nZV9ib25kX2Jwcy52YWx1ZSA9IHZhbHVlLmFzX3VpbnQ2NCgpCiAgICBieXRlYyAxMCAvLyAweDYzNjI2MgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTcwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5wcm90b2NvbF9jb25maWcuY29udHJhY3QuUHJvdG9jb2xDb25maWcudXBkYXRlX3Byb3Bvc2FsX2JvbmRfYnBzW3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlX3Byb3Bvc2FsX2JvbmRfYnBzOgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNzYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE3OAogICAgLy8gc2VsZi5fcmVxdWlyZV9hZG1pbigpCiAgICBjYWxsc3ViIF9yZXF1aXJlX2FkbWluCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE3OQogICAgLy8gc2VsZi5fcmVxdWlyZV9icHModmFsdWUuYXNfdWludDY0KCkpCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5Ojc2CiAgICAvLyBzZWxmLl9yZXF1aXJlKHZhbHVlIDw9IFVJbnQ2NChCUFNfREVOT01JTkFUT1IpKQogICAgZHVwCiAgICBpbnRjXzIgLy8gMTAwMDAKICAgIDw9CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTgwCiAgICAvLyBzZWxmLnByb3Bvc2FsX2JvbmRfYnBzLnZhbHVlID0gdmFsdWUuYXNfdWludDY0KCkKICAgIGJ5dGVjIDExIC8vIDB4NzA2MjYyCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxNzYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnByb3RvY29sX2NvbmZpZy5jb250cmFjdC5Qcm90b2NvbENvbmZpZy51cGRhdGVfY2hhbGxlbmdlX2JvbmRfY2FwW3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlX2NoYWxsZW5nZV9ib25kX2NhcDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTgyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxODQKICAgIC8vIHNlbGYuX3JlcXVpcmVfYWRtaW4oKQogICAgY2FsbHN1YiBfcmVxdWlyZV9hZG1pbgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxODUKICAgIC8vIHNlbGYuX3JlcXVpcmVfYm9uZF9ib3VuZHMoc2VsZi5jaGFsbGVuZ2VfYm9uZC52YWx1ZSwgdmFsdWUuYXNfdWludDY0KCkpCiAgICBpbnRjXzMgLy8gMAogICAgYnl0ZWNfMSAvLyAweDYzNjIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5jaGFsbGVuZ2VfYm9uZCBleGlzdHMKICAgIHN3YXAKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGRpZyAxCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6ODAKICAgIC8vIHNlbGYuX3JlcXVpcmUoY2FwID49IG1pbmltdW0pCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgPj0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxODYKICAgIC8vIHNlbGYuY2hhbGxlbmdlX2JvbmRfY2FwLnZhbHVlID0gdmFsdWUuYXNfdWludDY0KCkKICAgIGJ5dGVjXzMgLy8gMHg2MzYyNjMKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE4MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMucHJvdG9jb2xfY29uZmlnLmNvbnRyYWN0LlByb3RvY29sQ29uZmlnLnVwZGF0ZV9wcm9wb3NhbF9ib25kX2NhcFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnVwZGF0ZV9wcm9wb3NhbF9ib25kX2NhcDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTg4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxOTAKICAgIC8vIHNlbGYuX3JlcXVpcmVfYWRtaW4oKQogICAgY2FsbHN1YiBfcmVxdWlyZV9hZG1pbgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxOTEKICAgIC8vIHNlbGYuX3JlcXVpcmVfYm9uZF9ib3VuZHMoc2VsZi5wcm9wb3NhbF9ib25kLnZhbHVlLCB2YWx1ZS5hc191aW50NjQoKSkKICAgIGludGNfMyAvLyAwCiAgICBieXRlY18yIC8vIDB4NzA2MgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnByb3Bvc2FsX2JvbmQgZXhpc3RzCiAgICBzd2FwCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBkaWcgMQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjgwCiAgICAvLyBzZWxmLl9yZXF1aXJlKGNhcCA+PSBtaW5pbXVtKQogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgID49CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTkyCiAgICAvLyBzZWxmLnByb3Bvc2FsX2JvbmRfY2FwLnZhbHVlID0gdmFsdWUuYXNfdWludDY0KCkKICAgIGJ5dGVjIDQgLy8gMHg3MDYyNjMKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE4OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMucHJvdG9jb2xfY29uZmlnLmNvbnRyYWN0LlByb3RvY29sQ29uZmlnLnVwZGF0ZV9wcm9wb3Nlcl9mZWVfYnBzW3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlX3Byb3Bvc2VyX2ZlZV9icHM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjE5NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTk2CiAgICAvLyBzZWxmLl9yZXF1aXJlX2FkbWluKCkKICAgIGNhbGxzdWIgX3JlcXVpcmVfYWRtaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTk3CiAgICAvLyBzZWxmLl9yZXF1aXJlX2Jwcyh2YWx1ZS5hc191aW50NjQoKSkKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NzYKICAgIC8vIHNlbGYuX3JlcXVpcmUodmFsdWUgPD0gVUludDY0KEJQU19ERU5PTUlOQVRPUikpCiAgICBkdXAKICAgIGludGNfMiAvLyAxMDAwMAogICAgPD0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToxOTgKICAgIC8vIHNlbGYucHJvcG9zZXJfZmVlX2Jwcy52YWx1ZSA9IHZhbHVlLmFzX3VpbnQ2NCgpCiAgICBieXRlYyAxMiAvLyAweDcwNjY2NAogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MTk0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5wcm90b2NvbF9jb25maWcuY29udHJhY3QuUHJvdG9jb2xDb25maWcudXBkYXRlX3Byb3Bvc2VyX2ZlZV9mbG9vcl9icHNbcm91dGluZ10oKSAtPiB2b2lkOgp1cGRhdGVfcHJvcG9zZXJfZmVlX2Zsb29yX2JwczoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjAwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMDIKICAgIC8vIHNlbGYuX3JlcXVpcmVfYWRtaW4oKQogICAgY2FsbHN1YiBfcmVxdWlyZV9hZG1pbgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMDMKICAgIC8vIHNlbGYuX3JlcXVpcmVfYnBzKHZhbHVlLmFzX3VpbnQ2NCgpKQogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo3NgogICAgLy8gc2VsZi5fcmVxdWlyZSh2YWx1ZSA8PSBVSW50NjQoQlBTX0RFTk9NSU5BVE9SKSkKICAgIGR1cAogICAgaW50Y18yIC8vIDEwMDAwCiAgICA8PQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGNvbmRpdGlvbgogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjIwNAogICAgLy8gc2VsZi5wcm9wb3Nlcl9mZWVfZmxvb3JfYnBzLnZhbHVlID0gdmFsdWUuYXNfdWludDY0KCkKICAgIGJ5dGVjIDEzIC8vIDB4NzA2NjY2CiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMDAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnByb3RvY29sX2NvbmZpZy5jb250cmFjdC5Qcm90b2NvbENvbmZpZy51cGRhdGVfZGVmYXVsdF9iW3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlX2RlZmF1bHRfYjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjA2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMDgKICAgIC8vIHNlbGYuX3JlcXVpcmVfYWRtaW4oKQogICAgY2FsbHN1YiBfcmVxdWlyZV9hZG1pbgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMDkKICAgIC8vIHNlbGYuX3JlcXVpcmUodmFsdWUuYXNfdWludDY0KCkgPiBVSW50NjQoMCkpCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBkdXAKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMTAKICAgIC8vIHNlbGYuZGVmYXVsdF9iLnZhbHVlID0gdmFsdWUuYXNfdWludDY0KCkKICAgIGJ5dGVjIDE0IC8vIDB4NjQ2NTY2NjE3NTZjNzQ1ZjYyCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMDYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnByb3RvY29sX2NvbmZpZy5jb250cmFjdC5Qcm90b2NvbENvbmZpZy51cGRhdGVfcHJvdG9jb2xfZmVlX2Jwc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnVwZGF0ZV9wcm90b2NvbF9mZWVfYnBzOgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMTIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjIxNAogICAgLy8gc2VsZi5fcmVxdWlyZV9hZG1pbigpCiAgICBjYWxsc3ViIF9yZXF1aXJlX2FkbWluCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjIxNQogICAgLy8gc2VsZi5fcmVxdWlyZV9mZWVfd2l0aGluX2NlaWxpbmcodmFsdWUuYXNfdWludDY0KCksIHNlbGYucHJvdG9jb2xfZmVlX2NlaWxpbmdfYnBzLnZhbHVlKQogICAgYnRvaQogICAgaW50Y18zIC8vIDAKICAgIGJ5dGVjIDYgLy8gMHg3MDcyNmY3NDZmNjM2ZjZjNWY2NjY1NjU1ZjYzNjU2OTZjNjk2ZTY3NWY2MjcwNzMKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5wcm90b2NvbF9mZWVfY2VpbGluZ19icHMgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjczCiAgICAvLyBzZWxmLl9yZXF1aXJlKGZlZV9icHMgPD0gY2VpbGluZ19icHMpCiAgICBkaWcgMQogICAgPj0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMTYKICAgIC8vIHNlbGYucHJvdG9jb2xfZmVlX2Jwcy52YWx1ZSA9IHZhbHVlLmFzX3VpbnQ2NCgpCiAgICBieXRlYyA1IC8vIDB4NzA2NjYyCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMTIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnByb3RvY29sX2NvbmZpZy5jb250cmFjdC5Qcm90b2NvbENvbmZpZy51cGRhdGVfcHJvdG9jb2xfZmVlX2NlaWxpbmdfYnBzW3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlX3Byb3RvY29sX2ZlZV9jZWlsaW5nX2JwczoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjE4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMjAKICAgIC8vIHNlbGYuX3JlcXVpcmVfYWRtaW4oKQogICAgY2FsbHN1YiBfcmVxdWlyZV9hZG1pbgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMjEKICAgIC8vIHNlbGYuX3JlcXVpcmVfYnBzKHZhbHVlLmFzX3VpbnQ2NCgpKQogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo3NgogICAgLy8gc2VsZi5fcmVxdWlyZSh2YWx1ZSA8PSBVSW50NjQoQlBTX0RFTk9NSU5BVE9SKSkKICAgIGR1cAogICAgaW50Y18yIC8vIDEwMDAwCiAgICA8PQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGNvbmRpdGlvbgogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjIyMgogICAgLy8gc2VsZi5fcmVxdWlyZV9mZWVfd2l0aGluX2NlaWxpbmcoc2VsZi5wcm90b2NvbF9mZWVfYnBzLnZhbHVlLCB2YWx1ZS5hc191aW50NjQoKSkKICAgIGludGNfMyAvLyAwCiAgICBieXRlYyA1IC8vIDB4NzA2NjYyCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYucHJvdG9jb2xfZmVlX2JwcyBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NzMKICAgIC8vIHNlbGYuX3JlcXVpcmUoZmVlX2JwcyA8PSBjZWlsaW5nX2JwcykKICAgIGRpZyAxCiAgICA8PQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGNvbmRpdGlvbgogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjIyMwogICAgLy8gc2VsZi5wcm90b2NvbF9mZWVfY2VpbGluZ19icHMudmFsdWUgPSB2YWx1ZS5hc191aW50NjQoKQogICAgYnl0ZWMgNiAvLyAweDcwNzI2Zjc0NmY2MzZmNmM1ZjY2NjU2NTVmNjM2NTY5NmM2OTZlNjc1ZjYyNzA3MwogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjE4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5wcm90b2NvbF9jb25maWcuY29udHJhY3QuUHJvdG9jb2xDb25maWcudXBkYXRlX3Byb3RvY29sX3RyZWFzdXJ5W3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlX3Byb3RvY29sX3RyZWFzdXJ5OgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMjUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjIyNwogICAgLy8gc2VsZi5fcmVxdWlyZV9hZG1pbigpCiAgICBjYWxsc3ViIF9yZXF1aXJlX2FkbWluCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjIyOAogICAgLy8gc2VsZi5fcmVxdWlyZSh2YWx1ZS5ieXRlcyAhPSBCeXRlcyhiIlx4MDAiICogMzIpKQogICAgZHVwCiAgICBieXRlYyAyMSAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgICE9CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjI5CiAgICAvLyBzZWxmLnByb3RvY29sX3RyZWFzdXJ5LnZhbHVlID0gdmFsdWUuYnl0ZXMKICAgIGJ5dGVjIDE1IC8vIDB4NzA3NAogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjI1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5wcm90b2NvbF9jb25maWcuY29udHJhY3QuUHJvdG9jb2xDb25maWcudXBkYXRlX21hcmtldF9mYWN0b3J5X2lkW3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlX21hcmtldF9mYWN0b3J5X2lkOgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMzEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjIzMwogICAgLy8gc2VsZi5fcmVxdWlyZV9hZG1pbigpCiAgICBjYWxsc3ViIF9yZXF1aXJlX2FkbWluCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjIzNAogICAgLy8gc2VsZi5tYXJrZXRfZmFjdG9yeV9pZC52YWx1ZSA9IHZhbHVlLmFzX3VpbnQ2NCgpCiAgICBidG9pCiAgICBieXRlYyAxNiAvLyAweDZkNjY2OQogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjMxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5wcm90b2NvbF9jb25maWcuY29udHJhY3QuUHJvdG9jb2xDb25maWcudXBkYXRlX21heF9vdXRjb21lc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnVwZGF0ZV9tYXhfb3V0Y29tZXM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjIzNgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjM4CiAgICAvLyBzZWxmLl9yZXF1aXJlX2FkbWluKCkKICAgIGNhbGxzdWIgX3JlcXVpcmVfYWRtaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjM5CiAgICAvLyBzZWxmLl9yZXF1aXJlKHZhbHVlLmFzX3VpbnQ2NCgpID49IFVJbnQ2NChNSU5fT1VUQ09NRVMpKQogICAgYnRvaQogICAgZHVwCiAgICBwdXNoaW50IDIKICAgID49CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjQwCiAgICAvLyBzZWxmLl9yZXF1aXJlKHZhbHVlLmFzX3VpbnQ2NCgpID49IHNlbGYubWF4X2FjdGl2ZV9scF92NF9vdXRjb21lcy52YWx1ZSkKICAgIGludGNfMyAvLyAwCiAgICBieXRlYyA4IC8vIDB4NmQ2MTc4NWY2MTYzNzQ2OTc2NjU1ZjZjNzA1Zjc2MzQ1ZjZmNzU3NDYzNmY2ZDY1NzMKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5tYXhfYWN0aXZlX2xwX3Y0X291dGNvbWVzIGV4aXN0cwogICAgZGlnIDEKICAgIDw9CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjQxCiAgICAvLyBzZWxmLm1heF9vdXRjb21lcy52YWx1ZSA9IHZhbHVlLmFzX3VpbnQ2NCgpCiAgICBieXRlYyA3IC8vIDB4NmQ2MTc4NWY2Zjc1NzQ2MzZmNmQ2NTczCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyMzYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnByb3RvY29sX2NvbmZpZy5jb250cmFjdC5Qcm90b2NvbENvbmZpZy51cGRhdGVfbWluX2NoYWxsZW5nZV93aW5kb3dfc2Vjc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnVwZGF0ZV9taW5fY2hhbGxlbmdlX3dpbmRvd19zZWNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyNDMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI0NQogICAgLy8gc2VsZi5fcmVxdWlyZV9hZG1pbigpCiAgICBjYWxsc3ViIF9yZXF1aXJlX2FkbWluCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI0NgogICAgLy8gc2VsZi5fcmVxdWlyZSh2YWx1ZS5hc191aW50NjQoKSA+IFVJbnQ2NCgwKSkKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGR1cAogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI0NwogICAgLy8gc2VsZi5taW5fY2hhbGxlbmdlX3dpbmRvd19zZWNzLnZhbHVlID0gdmFsdWUuYXNfdWludDY0KCkKICAgIGJ5dGVjIDE3IC8vIDB4NmQ2Mzc3CiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyNDMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnByb3RvY29sX2NvbmZpZy5jb250cmFjdC5Qcm90b2NvbENvbmZpZy51cGRhdGVfbWluX2dyYWNlX3BlcmlvZF9zZWNzW3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlX21pbl9ncmFjZV9wZXJpb2Rfc2VjczoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjQ5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyNTEKICAgIC8vIHNlbGYuX3JlcXVpcmVfYWRtaW4oKQogICAgY2FsbHN1YiBfcmVxdWlyZV9hZG1pbgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyNTIKICAgIC8vIHNlbGYuX3JlcXVpcmUodmFsdWUuYXNfdWludDY0KCkgPiBVSW50NjQoMCkpCiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBkdXAKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyNTMKICAgIC8vIHNlbGYubWluX2dyYWNlX3BlcmlvZF9zZWNzLnZhbHVlID0gdmFsdWUuYXNfdWludDY0KCkKICAgIGJ5dGVjIDE4IC8vIDB4NmQ2OTZlNWY2NzcyNjE2MzY1NWY3MDY1NzI2OTZmNjQ1ZjczNjU2MzczCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyNDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnByb3RvY29sX2NvbmZpZy5jb250cmFjdC5Qcm90b2NvbENvbmZpZy51cGRhdGVfbWF4X2xwX2ZlZV9icHNbcm91dGluZ10oKSAtPiB2b2lkOgp1cGRhdGVfbWF4X2xwX2ZlZV9icHM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI1NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjU3CiAgICAvLyBzZWxmLl9yZXF1aXJlX2FkbWluKCkKICAgIGNhbGxzdWIgX3JlcXVpcmVfYWRtaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjU4CiAgICAvLyBzZWxmLl9yZXF1aXJlX2Jwcyh2YWx1ZS5hc191aW50NjQoKSkKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NzYKICAgIC8vIHNlbGYuX3JlcXVpcmUodmFsdWUgPD0gVUludDY0KEJQU19ERU5PTUlOQVRPUikpCiAgICBkdXAKICAgIGludGNfMiAvLyAxMDAwMAogICAgPD0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyNTkKICAgIC8vIHNlbGYubWF4X2xwX2ZlZV9icHMudmFsdWUgPSB2YWx1ZS5hc191aW50NjQoKQogICAgYnl0ZWMgMTkgLy8gMHg2ZDYxNzg1ZjZjNzA1ZjY2NjU2NTVmNjI3MDczCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyNTUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnByb3RvY29sX2NvbmZpZy5jb250cmFjdC5Qcm90b2NvbENvbmZpZy51cGRhdGVfZGVmYXVsdF9yZXNpZHVhbF9saW5lYXJfbGFtYmRhX2ZwW3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlX2RlZmF1bHRfcmVzaWR1YWxfbGluZWFyX2xhbWJkYV9mcDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjYxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyNjMKICAgIC8vIHNlbGYuX3JlcXVpcmVfYWRtaW4oKQogICAgY2FsbHN1YiBfcmVxdWlyZV9hZG1pbgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyNjQKICAgIC8vIHNlbGYuX3JlcXVpcmUodmFsdWUuYXNfdWludDY0KCkgPD0gVUludDY0KFJFU0lEVUFMX1dFSUdIVF9TQ0FMRV9GUCkpCiAgICBidG9pCiAgICBkdXAKICAgIGludGMgNCAvLyAxMDAwMDAwCiAgICA8PQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGNvbmRpdGlvbgogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI2NQogICAgLy8gc2VsZi5kZWZhdWx0X3Jlc2lkdWFsX2xpbmVhcl9sYW1iZGFfZnAudmFsdWUgPSB2YWx1ZS5hc191aW50NjQoKQogICAgYnl0ZWMgMjAgLy8gMHg3MjZjNjYKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI2MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMucHJvdG9jb2xfY29uZmlnLmNvbnRyYWN0LlByb3RvY29sQ29uZmlnLnVwZGF0ZV9tYXhfYWN0aXZlX2xwX3Y0X291dGNvbWVzW3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlX21heF9hY3RpdmVfbHBfdjRfb3V0Y29tZXM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI2NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjY5CiAgICAvLyBzZWxmLl9yZXF1aXJlX2FkbWluKCkKICAgIGNhbGxzdWIgX3JlcXVpcmVfYWRtaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjcwCiAgICAvLyBzZWxmLl9yZXF1aXJlKHZhbHVlLmFzX3VpbnQ2NCgpID49IFVJbnQ2NChNSU5fT1VUQ09NRVMpKQogICAgYnRvaQogICAgZHVwCiAgICBwdXNoaW50IDIKICAgID49CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjcxCiAgICAvLyBzZWxmLl9yZXF1aXJlKHZhbHVlLmFzX3VpbnQ2NCgpIDw9IHNlbGYubWF4X291dGNvbWVzLnZhbHVlKQogICAgaW50Y18zIC8vIDAKICAgIGJ5dGVjIDcgLy8gMHg2ZDYxNzg1ZjZmNzU3NDYzNmY2ZDY1NzMKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5tYXhfb3V0Y29tZXMgZXhpc3RzCiAgICBkaWcgMQogICAgPj0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyNzIKICAgIC8vIHNlbGYubWF4X2FjdGl2ZV9scF92NF9vdXRjb21lcy52YWx1ZSA9IHZhbHVlLmFzX3VpbnQ2NCgpCiAgICBieXRlYyA4IC8vIDB4NmQ2MTc4NWY2MTYzNzQ2OTc2NjU1ZjZjNzA1Zjc2MzQ1ZjZmNzU3NDYzNmY2ZDY1NzMKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI2NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMucHJvdG9jb2xfY29uZmlnLmNvbnRyYWN0LlByb3RvY29sQ29uZmlnLm9wX3VwW3JvdXRpbmddKCkgLT4gdm9pZDoKb3BfdXA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI3OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjgwCiAgICAvLyBjb3VudF92YWwgPSBjb3VudC5hc191aW50NjQoKQogICAgYnRvaQogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6MjgyCiAgICAvLyB0YXJnZXRfYXBwX2lkID0gVHhuLmFwcGxpY2F0aW9ucygxKS5pZAogICAgdHhuYSBBcHBsaWNhdGlvbnMgMQogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjY3CiAgICAvLyBhc3NlcnQgY29uZGl0aW9uCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6Mjg1CiAgICAvLyBmb3IgX2kgaW4gdXJhbmdlKGNvdW50X3ZhbCk6CiAgICBpbnRjXzMgLy8gMAoKb3BfdXBfZm9yX2hlYWRlckAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyODUKICAgIC8vIGZvciBfaSBpbiB1cmFuZ2UoY291bnRfdmFsKToKICAgIGR1cAogICAgZGlnIDMKICAgIDwKICAgIGJ6IG9wX3VwX2FmdGVyX2ZvckA2CiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI4Ni0yOTAKICAgIC8vIGl0eG4uQXBwbGljYXRpb25DYWxsKAogICAgLy8gICAgIGFwcF9pZD10YXJnZXRfYXBwLAogICAgLy8gICAgIG9uX2NvbXBsZXRpb249T25Db21wbGV0ZUFjdGlvbi5Ob09wLAogICAgLy8gICAgIGZlZT0wLAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyODgKICAgIC8vIG9uX2NvbXBsZXRpb249T25Db21wbGV0ZUFjdGlvbi5Ob09wLAogICAgaW50Y18zIC8vIE5vT3AKICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICBkaWcgMQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI4NgogICAgLy8gaXR4bi5BcHBsaWNhdGlvbkNhbGwoCiAgICBwdXNoaW50IDYgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgLy8gc21hcnRfY29udHJhY3RzL3Byb3RvY29sX2NvbmZpZy9jb250cmFjdC5weToyODkKICAgIC8vIGZlZT0wLAogICAgaW50Y18zIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBzbWFydF9jb250cmFjdHMvcHJvdG9jb2xfY29uZmlnL2NvbnRyYWN0LnB5OjI4Ni0yOTAKICAgIC8vIGl0eG4uQXBwbGljYXRpb25DYWxsKAogICAgLy8gICAgIGFwcF9pZD10YXJnZXRfYXBwLAogICAgLy8gICAgIG9uX2NvbXBsZXRpb249T25Db21wbGV0ZUFjdGlvbi5Ob09wLAogICAgLy8gICAgIGZlZT0wLAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6Mjg1CiAgICAvLyBmb3IgX2kgaW4gdXJhbmdlKGNvdW50X3ZhbCk6CiAgICBkdXAKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBidXJ5IDEKICAgIGIgb3BfdXBfZm9yX2hlYWRlckAyCgpvcF91cF9hZnRlcl9mb3JANjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6Mjc4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5wcm90b2NvbF9jb25maWcuY29udHJhY3QuUHJvdG9jb2xDb25maWcuX3JlcXVpcmVfYWRtaW4oKSAtPiB2b2lkOgpfcmVxdWlyZV9hZG1pbjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NzAKICAgIC8vIHNlbGYuX3JlcXVpcmUoVHhuLnNlbmRlci5ieXRlcyA9PSBzZWxmLmFkbWluLnZhbHVlKQogICAgdHhuIFNlbmRlcgogICAgaW50Y18zIC8vIDAKICAgIGJ5dGVjXzAgLy8gImFkbWluIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFkbWluIGV4aXN0cwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wcm90b2NvbF9jb25maWcvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBjb25kaXRpb24KICAgIGFzc2VydAogICAgcmV0c3ViCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAFCAGQTgDAhD0mFgVhZG1pbgJjYgJwYgNjYmMDcGJjA3BmYhhwcm90b2NvbF9mZWVfY2VpbGluZ19icHMMbWF4X291dGNvbWVzGW1heF9hY3RpdmVfbHBfdjRfb3V0Y29tZXMVbWluX2Jvb3RzdHJhcF9kZXBvc2l0A2NiYgNwYmIDcGZkA3BmZglkZWZhdWx0X2ICcHQDbWZpA21jdxVtaW5fZ3JhY2VfcGVyaW9kX3NlY3MObWF4X2xwX2ZlZV9icHMDcmxmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMRtBAMIxGRREMRhBAKuCFwRKFl7nBK5Qbh8EhBZ01QT1+D56BBo3LZcEJVKAeQTKDKkzBHUrvF4EyOF+SQQpZR2UBFcZYkIE5g7O9gSQapniBC3LQXoE6K9/EgS5jhgqBIOq8CAEs84HzARW7kstBLpcwIgERGOpYwS+8UvZBOg6h6s2GgCOFwG+AdQB5gICAh8CNQJLAmkCiAKeArQCyALjAwIDGQMrA0sDXwNzA4kDoAPAAAEAI0OABN99Gzw2GgCOAQAIADEZFDEYEEM2GgFJFYEgEkQ2GgJJFSISRDYaA0kVIhJENhoESRUiEkQ2GgVJFSISRDYaBkkVIhJENhoHSRUiEkQ2GghJFSISRDYaCUkVIhJENhoKSRUiEkQ2GgtJFSISRDYaDEkVIhJENhoNSRUiEkQ2Gg5JFYEgEkQ2Gg9JFYE4EkQ2Gg9JFYE4EkQ2Gg9JFYE4EkQ2Gg9JFYE4EkQ2Gg9JFYE4EkQ2Gg9JFYE4EkQ2Gg9JFYE4EkRPChdJRE8GIltJgQIPRE8GgRBbSURPBoEYW0lETxIXTw8XSwFESUsCD0RPEhdPEBdLAURJSwIPRE8SF0kkDkRPEhdJJA5ETxIXSSQORE8SF0kkDkRPEhdJJA5ETxIXSSQORE8QgSBbSSQORE8QgShbSSEEDkRPEIEwW0mBAg9ESUsQDkRLA0sFDkQoTxVnTxMXJwlMZylPDWcqTwtnJwpPCWcnC08IZytPCWcnBE8IZycMTwdnJw1PBmcnDk8JZycFTwRnJwZPBGcnD08IZ08GJVsnEExnJwdPBmcnEU8FZycSTwRnJxNPA2cnFE8CZycITGcjQzYaAUkVgSASRIgCKEknFRNEKExnI0M2GgFJFSISRIgCExcnCUxnI0M2GgFJFSISRIgCARclK2VESwFESwEPRClMZyNDNhoBSRUiEkSIAeUXJScEZURLAURLAQ9EKkxnI0M2GgFJFSISRIgByBdJJA5EJwpMZyNDNhoBSRUiEkSIAbIXSSQORCcLTGcjQzYaAUkVIhJEiAGcJSllREwXSwFESU8CD0QrTGcjQzYaAUkVIhJEiAF+JSplREwXSwFESU8CD0QnBExnI0M2GgFJFSISRIgBXxdJJA5EJwxMZyNDNhoBSRUiEkSIAUkXSSQORCcNTGcjQzYaAUkVIhJEiAEzF0lEJw5MZyNDNhoBSRUiEkSIAR8XJScGZURLAQ9EJwVMZyNDNhoBSRUiEkSIAQQXSSQORCUnBWVESwEORCcGTGcjQzYaAUkVgSASRIgA5EknFRNEJw9MZyNDNhoBSRUiEkSIAM4XJxBMZyNDNhoBSRUiEkSIALwXSYECD0QlJwhlREsBDkQnB0xnI0M2GgFJFSISRIgAnBdJRCcRTGcjQzYaAUkVIhJEiACIF0lEJxJMZyNDNhoBSRUiEkSIAHQXSSQORCcTTGcjQzYaAUkVIhJEiABeF0khBA5EJxRMZyNDNhoBSRUiEkSIAEcXSYECD0QlJwdlREsBD0QnCExnI0M2GgFJFSISRBdJRDYyAUlEJUlLAwxBABixJbIZSwGyGIEGshAlsgGzSSMIRQFC/+EjQzEAJShlRBJEiQ==", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 7, "patch": 1 } }, "events": [], "templateVariables": {} }