{ "name": "StaticSizeContract", "structs": {}, "methods": [ { "name": "test_array", "args": [ { "type": "uint64", "name": "x1" }, { "type": "uint64", "name": "y1" }, { "type": "uint64", "name": "x2" }, { "type": "uint64", "name": "y2" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_extend_from_tuple", "args": [ { "type": "((uint64,uint64),(uint64,uint64))", "name": "some_more" } ], "returns": { "type": "(uint64,uint64)[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_extend_from_arc4_tuple", "args": [ { "type": "((uint64,uint64),(uint64,uint64))", "name": "some_more" } ], "returns": { "type": "(uint64,uint64)[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_bool_array", "args": [ { "type": "uint64", "name": "length" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_arc4_conversion", "args": [ { "type": "uint64", "name": "length" } ], "returns": { "type": "uint64[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "sum_array", "args": [ { "type": "uint64[]", "name": "arc4_arr" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 1, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "count": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "Y291bnQ=" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 178, 182, 373, 384, 602 ], "errorMessage": "Index access is out of bounds" }, { "pc": [ 90, 110, 130, 151, 170, 197 ], "errorMessage": "OnCompletion is not NoOp" }, { "pc": [ 233 ], "errorMessage": "can only call when creating" }, { "pc": [ 93, 113, 133, 154, 173, 200 ], "errorMessage": "can only call when not creating" }, { "pc": [ 921, 932, 942, 949, 953 ], "errorMessage": "check self.count exists" }, { "pc": [ 686, 787 ], "errorMessage": "expected correct length" }, { "pc": [ 665, 766 ], "errorMessage": "max array length exceeded" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyB0ZXN0X2Nhc2VzLmFycmF5LnN0YXRpY19zaXplLlN0YXRpY1NpemVDb250cmFjdC5fX2FsZ29weV9lbnRyeXBvaW50X3dpdGhfaW5pdCgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAxIDAgOCAxNgogICAgYnl0ZWNibG9jayAiY291bnQiIDB4MTUxZjdjNzUgIiIgImEiCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fYWZ0ZXJfaWZfZWxzZUAyCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToyNgogICAgLy8gc2VsZi5jb3VudCA9IFVJbnQ2NCgwKQogICAgYnl0ZWNfMCAvLyAiY291bnQiCiAgICBpbnRjXzEgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MjQKICAgIC8vIGNsYXNzIFN0YXRpY1NpemVDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAMTEKICAgIHB1c2hieXRlc3MgMHgyOGQ3YzFiOCAweGZhOWNiOTczIDB4NjAzOWEyNDAgMHhmOGZkNjhhNyAweDFmMDI4ZGIxIDB4MDk2YjNhNTkgLy8gbWV0aG9kICJ0ZXN0X2FycmF5KHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl1aW50NjQiLCBtZXRob2QgInRlc3RfZXh0ZW5kX2Zyb21fdHVwbGUoKCh1aW50NjQsdWludDY0KSwodWludDY0LHVpbnQ2NCkpKSh1aW50NjQsdWludDY0KVtdIiwgbWV0aG9kICJ0ZXN0X2V4dGVuZF9mcm9tX2FyYzRfdHVwbGUoKCh1aW50NjQsdWludDY0KSwodWludDY0LHVpbnQ2NCkpKSh1aW50NjQsdWludDY0KVtdIiwgbWV0aG9kICJ0ZXN0X2Jvb2xfYXJyYXkodWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidGVzdF9hcmM0X2NvbnZlcnNpb24odWludDY0KXVpbnQ2NFtdIiwgbWV0aG9kICJzdW1fYXJyYXkodWludDY0W10pdWludDY0IgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggbWFpbl90ZXN0X2FycmF5X3JvdXRlQDUgbWFpbl90ZXN0X2V4dGVuZF9mcm9tX3R1cGxlX3JvdXRlQDYgbWFpbl90ZXN0X2V4dGVuZF9mcm9tX2FyYzRfdHVwbGVfcm91dGVANyBtYWluX3Rlc3RfYm9vbF9hcnJheV9yb3V0ZUA4IG1haW5fdGVzdF9hcmM0X2NvbnZlcnNpb25fcm91dGVAOSBtYWluX3N1bV9hcnJheV9yb3V0ZUAxMAoKbWFpbl9hZnRlcl9pZl9lbHNlQDEzOgogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MjQKICAgIC8vIGNsYXNzIFN0YXRpY1NpemVDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICBpbnRjXzEgLy8gMAogICAgcmV0dXJuCgptYWluX3N1bV9hcnJheV9yb3V0ZUAxMDoKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5Ojk0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToyNAogICAgLy8gY2xhc3MgU3RhdGljU2l6ZUNvbnRyYWN0KGFyYzQuQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5Ojk0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiBzdW1fYXJyYXkKICAgIGl0b2IKICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdF9hcmM0X2NvbnZlcnNpb25fcm91dGVAOToKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5Ojc2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToyNAogICAgLy8gY2xhc3MgU3RhdGljU2l6ZUNvbnRyYWN0KGFyYzQuQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5Ojc2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiB0ZXN0X2FyYzRfY29udmVyc2lvbgogICAgYnl0ZWNfMSAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X2Jvb2xfYXJyYXlfcm91dGVAODoKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjYyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToyNAogICAgLy8gY2xhc3MgU3RhdGljU2l6ZUNvbnRyYWN0KGFyYzQuQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjYyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiB0ZXN0X2Jvb2xfYXJyYXkKICAgIGl0b2IKICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdF9leHRlbmRfZnJvbV9hcmM0X3R1cGxlX3JvdXRlQDc6CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo1NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MjQKICAgIC8vIGNsYXNzIFN0YXRpY1NpemVDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo1NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgdGVzdF9leHRlbmRfZnJvbV9hcmM0X3R1cGxlCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3RfZXh0ZW5kX2Zyb21fdHVwbGVfcm91dGVANjoKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjQ0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToyNAogICAgLy8gY2xhc3MgU3RhdGljU2l6ZUNvbnRyYWN0KGFyYzQuQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgZXh0cmFjdCAwIDE2IC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgc3dhcAogICAgZXh0cmFjdCAxNiAxNiAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjQ0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiB0ZXN0X2V4dGVuZF9mcm9tX3R1cGxlCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3RfYXJyYXlfcm91dGVANToKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjI4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToyNAogICAgLy8gY2xhc3MgU3RhdGljU2l6ZUNvbnRyYWN0KGFyYzQuQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDQKICAgIGJ0b2kKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjI4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgY2FsbHN1YiB0ZXN0X2FycmF5CiAgICBpdG9iCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2JhcmVfcm91dGluZ0AxMToKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjI0CiAgICAvLyBjbGFzcyBTdGF0aWNTaXplQ29udHJhY3QoYXJjNC5BUkM0Q29udHJhY3QpOgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgYm56IG1haW5fYWZ0ZXJfaWZfZWxzZUAxMwogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gY3JlYXRpbmcKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2Nhc2VzLmFycmF5LnN0YXRpY19zaXplLlN0YXRpY1NpemVDb250cmFjdC50ZXN0X2FycmF5KHgxOiBieXRlcywgeTE6IHVpbnQ2NCwgeDI6IGJ5dGVzLCB5MjogdWludDY0KSAtPiB1aW50NjQ6CnRlc3RfYXJyYXk6CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToyOC0yOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X2FycmF5KHNlbGYsIHgxOiBhcmM0LlVJbnQ2NCwgeTE6IFVJbnQ2NCwgeDI6IGFyYzQuVUludDY0LCB5MjogVUludDY0KSAtPiBVSW50NjQ6CiAgICBwcm90byA0IDEKICAgIGludGNfMSAvLyAwCiAgICBkdXAKICAgIGJ5dGVjXzIgLy8gIiIKICAgIGR1cG4gNQogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MzAKICAgIC8vIHNlbGYuY291bnQgPSBVSW50NjQoMCkKICAgIGJ5dGVjXzAgLy8gImNvdW50IgogICAgaW50Y18xIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTozMgogICAgLy8gUG9pbnQoeD1hcmM0LlVJbnQ2NCgpLCB5PVVJbnQ2NCgpLCBvdGhlcj1zZWxmLnh0cmEoKSksCiAgICBjYWxsc3ViIHh0cmEKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjMzCiAgICAvLyBQb2ludCh4PXgxLCB5PXkxLCBvdGhlcj1zZWxmLnh0cmEoKSksCiAgICBjYWxsc3ViIHh0cmEKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjM0CiAgICAvLyBQb2ludCh4PXgyLCB5PXkyLCBvdGhlcj1zZWxmLnh0cmEoKSksCiAgICBjYWxsc3ViIHh0cmEKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjMyCiAgICAvLyBQb2ludCh4PWFyYzQuVUludDY0KCksIHk9VUludDY0KCksIG90aGVyPXNlbGYueHRyYSgpKSwKICAgIHVuY292ZXIgMTEKICAgIGl0b2IKICAgIHB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHVuY292ZXIgMTEKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciAxMAogICAgY29uY2F0CiAgICB1bmNvdmVyIDkKICAgIGNvbmNhdAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MzMKICAgIC8vIFBvaW50KHg9eDEsIHk9eTEsIG90aGVyPXNlbGYueHRyYSgpKSwKICAgIGZyYW1lX2RpZyAtMwogICAgaXRvYgogICAgZnJhbWVfZGlnIC00CiAgICBzd2FwCiAgICBjb25jYXQKICAgIHVuY292ZXIgOQogICAgaXRvYgogICAgY29uY2F0CiAgICB1bmNvdmVyIDgKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciA3CiAgICBjb25jYXQKICAgIHVuY292ZXIgNgogICAgY29uY2F0CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTozMS0zNQogICAgLy8gcGF0aCA9IEFycmF5KAogICAgLy8gICAgIFBvaW50KHg9YXJjNC5VSW50NjQoKSwgeT1VSW50NjQoKSwgb3RoZXI9c2VsZi54dHJhKCkpLAogICAgLy8gICAgIFBvaW50KHg9eDEsIHk9eTEsIG90aGVyPXNlbGYueHRyYSgpKSwKICAgIC8vICAgICBQb2ludCh4PXgyLCB5PXkyLCBvdGhlcj1zZWxmLnh0cmEoKSksCiAgICAvLyApCiAgICBjb25jYXQKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjM0CiAgICAvLyBQb2ludCh4PXgyLCB5PXkyLCBvdGhlcj1zZWxmLnh0cmEoKSksCiAgICBmcmFtZV9kaWcgLTEKICAgIGl0b2IKICAgIGZyYW1lX2RpZyAtMgogICAgc3dhcAogICAgY29uY2F0CiAgICB1bmNvdmVyIDUKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciA0CiAgICBpdG9iCiAgICBjb25jYXQKICAgIHVuY292ZXIgMwogICAgY29uY2F0CiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MzEtMzUKICAgIC8vIHBhdGggPSBBcnJheSgKICAgIC8vICAgICBQb2ludCh4PWFyYzQuVUludDY0KCksIHk9VUludDY0KCksIG90aGVyPXNlbGYueHRyYSgpKSwKICAgIC8vICAgICBQb2ludCh4PXgxLCB5PXkxLCBvdGhlcj1zZWxmLnh0cmEoKSksCiAgICAvLyAgICAgUG9pbnQoeD14MiwgeT15Miwgb3RoZXI9c2VsZi54dHJhKCkpLAogICAgLy8gKQogICAgY29uY2F0CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTozNgogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDMpOgogICAgaW50Y18xIC8vIDAKCnRlc3RfYXJyYXlfZm9yX2hlYWRlckAxOgogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MzYKICAgIC8vIGZvciBpIGluIHVyYW5nZSgzKToKICAgIGZyYW1lX2RpZyA5CiAgICBwdXNoaW50IDMgLy8gMwogICAgPAogICAgYnogdGVzdF9hcnJheV9hZnRlcl9mb3JANAogICAgZnJhbWVfZGlnIDgKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjM3CiAgICAvLyBhc3NlcnQgcGF0aFtpXS5vdGhlci5iID09IGkgKyAxCiAgICBmcmFtZV9kaWcgOQogICAgZHVwCiAgICBjb3ZlciAyCiAgICBwdXNoaW50IDgwIC8vIDgwCiAgICAqCiAgICBwdXNoaW50IDgwIC8vIDgwCiAgICBleHRyYWN0MwogICAgZHVwCiAgICBwdXNoaW50IDI0IC8vIDI0CiAgICBleHRyYWN0X3VpbnQ2NAogICAgZGlnIDIKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBzd2FwCiAgICBkaWcgMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MzgKICAgIC8vIGFzc2VydCBwYXRoW2ldLm90aGVyLmQuZm9vID09IGkgKyAyCiAgICBzd2FwCiAgICBleHRyYWN0IDY0IDE2CiAgICBkdXAKICAgIGV4dHJhY3QgMCA4IC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgdW5jb3ZlciAzCiAgICBwdXNoaW50IDIgLy8gMgogICAgKwogICAgaXRvYgogICAgYj09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjM5CiAgICAvLyBhc3NlcnQgcGF0aFtpXS5vdGhlci5kLmJhciA9PSAoaSArIDEpICogKGkgKyAxKQogICAgZXh0cmFjdCA4IDggLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBkaWcgMQogICAgZGlnIDIKICAgICoKICAgIGl0b2IKICAgIGI9PQogICAgYXNzZXJ0CiAgICBmcmFtZV9idXJ5IDkKICAgIGIgdGVzdF9hcnJheV9mb3JfaGVhZGVyQDEKCnRlc3RfYXJyYXlfYWZ0ZXJfZm9yQDQ6CiAgICBmcmFtZV9kaWcgOAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6NDEKICAgIC8vIEJveChJbW11dGFibGVBcnJheVtQb2ludF0sIGtleT0iYSIpLnZhbHVlID0gcGF0aC5mcmVlemUoKQogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgODAgLy8gODAKICAgIC8KICAgIGR1cAogICAgZnJhbWVfYnVyeSA0CiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgZGlnIDEKICAgIGNvbmNhdAogICAgYnl0ZWNfMyAvLyAiYSIKICAgIGJveF9kZWwKICAgIHBvcAogICAgYnl0ZWNfMyAvLyAiYSIKICAgIHN3YXAKICAgIGJveF9wdXQKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjEyMgogICAgLy8gbGFzdF9wb2ludCA9IHBhdGhbMF0KICAgIGV4dHJhY3QgMCA4MAogICAgZHVwCiAgICBmcmFtZV9idXJ5IDAKICAgIGR1cAogICAgZXh0cmFjdCAwIDgKICAgIGZyYW1lX2J1cnkgMQogICAgaW50Y18yIC8vIDgKICAgIGV4dHJhY3RfdWludDY0CiAgICBmcmFtZV9idXJ5IDMKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjEyMwogICAgLy8gbGVuZ3RoID0gVUludDY0KCkKICAgIGludGNfMSAvLyAwCiAgICBmcmFtZV9idXJ5IDUKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjEyNAogICAgLy8gZm9yIHBvaW50X2lkeCBpbiB1cmFuZ2UoMSwgcGF0aC5sZW5ndGgpOgogICAgaW50Y18wIC8vIDEKICAgIGZyYW1lX2J1cnkgNwoKdGVzdF9hcnJheV9mb3JfaGVhZGVyQDY6CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToxMjQKICAgIC8vIGZvciBwb2ludF9pZHggaW4gdXJhbmdlKDEsIHBhdGgubGVuZ3RoKToKICAgIGZyYW1lX2RpZyA3CiAgICBmcmFtZV9kaWcgNAogICAgPAogICAgYnogdGVzdF9hcnJheV9hZnRlcl9mb3JAMTQKICAgIGZyYW1lX2RpZyA4CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToxMjUKICAgIC8vIHBvaW50ID0gcGF0aFtwb2ludF9pZHhdCiAgICBmcmFtZV9kaWcgNwogICAgcHVzaGludCA4MCAvLyA4MAogICAgKgogICAgcHVzaGludCA4MCAvLyA4MAogICAgZXh0cmFjdDMKICAgIGR1cG4gMgogICAgZXh0cmFjdCAwIDgKICAgIHN3YXAKICAgIGludGNfMiAvLyA4CiAgICBleHRyYWN0X3VpbnQ2NAogICAgZnJhbWVfYnVyeSA2CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToxMjYKICAgIC8vIGlmIHBvaW50LnggPCBsYXN0X3BvaW50Lng6CiAgICBmcmFtZV9kaWcgMQogICAgYjwKICAgIGJ6IHRlc3RfYXJyYXlfZWxzZV9ib2R5QDkKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjEyNwogICAgLy8gZHggPSBsYXN0X3BvaW50LngubmF0aXZlIC0gcG9pbnQueC5uYXRpdmUKICAgIGZyYW1lX2RpZyAwCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToxMjIKICAgIC8vIGxhc3RfcG9pbnQgPSBwYXRoWzBdCiAgICBpbnRjXzEgLy8gMAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MTI3CiAgICAvLyBkeCA9IGxhc3RfcG9pbnQueC5uYXRpdmUgLSBwb2ludC54Lm5hdGl2ZQogICAgZXh0cmFjdF91aW50NjQKICAgIHN3YXAKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjEyNQogICAgLy8gcG9pbnQgPSBwYXRoW3BvaW50X2lkeF0KICAgIGludGNfMSAvLyAwCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToxMjcKICAgIC8vIGR4ID0gbGFzdF9wb2ludC54Lm5hdGl2ZSAtIHBvaW50LngubmF0aXZlCiAgICBleHRyYWN0X3VpbnQ2NAogICAgLQogICAgZnJhbWVfYnVyeSAyCgp0ZXN0X2FycmF5X2FmdGVyX2lmX2Vsc2VAMTA6CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToxMzAKICAgIC8vIGlmIHBvaW50LnkgPCBsYXN0X3BvaW50Lnk6CiAgICBmcmFtZV9kaWcgNgogICAgZnJhbWVfZGlnIDMKICAgIDwKICAgIGJ6IHRlc3RfYXJyYXlfZWxzZV9ib2R5QDEyCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToxMzEKICAgIC8vIGR5ID0gbGFzdF9wb2ludC55IC0gcG9pbnQueQogICAgZnJhbWVfZGlnIDMKICAgIGZyYW1lX2RpZyA2CiAgICAtCgp0ZXN0X2FycmF5X2FmdGVyX2lmX2Vsc2VAMTM6CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToxMzQKICAgIC8vIGxlbmd0aCArPSBvcC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KQogICAgZnJhbWVfZGlnIDIKICAgIGR1cAogICAgKgogICAgc3dhcAogICAgZHVwCiAgICAqCiAgICArCiAgICBzcXJ0CiAgICBmcmFtZV9kaWcgNQogICAgKwogICAgZnJhbWVfYnVyeSA1CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToxMjQKICAgIC8vIGZvciBwb2ludF9pZHggaW4gdXJhbmdlKDEsIHBhdGgubGVuZ3RoKToKICAgIGZyYW1lX2RpZyA3CiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSA3CiAgICBiIHRlc3RfYXJyYXlfZm9yX2hlYWRlckA2Cgp0ZXN0X2FycmF5X2Vsc2VfYm9keUAxMjoKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjEzMwogICAgLy8gZHkgPSBwb2ludC55IC0gbGFzdF9wb2ludC55CiAgICBmcmFtZV9kaWcgNgogICAgZnJhbWVfZGlnIDMKICAgIC0KICAgIGIgdGVzdF9hcnJheV9hZnRlcl9pZl9lbHNlQDEzCgp0ZXN0X2FycmF5X2Vsc2VfYm9keUA5OgogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MTI1CiAgICAvLyBwb2ludCA9IHBhdGhbcG9pbnRfaWR4XQogICAgaW50Y18xIC8vIDAKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjEyOQogICAgLy8gZHggPSBwb2ludC54Lm5hdGl2ZSAtIGxhc3RfcG9pbnQueC5uYXRpdmUKICAgIGV4dHJhY3RfdWludDY0CiAgICBmcmFtZV9kaWcgMAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MTIyCiAgICAvLyBsYXN0X3BvaW50ID0gcGF0aFswXQogICAgaW50Y18xIC8vIDAKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjEyOQogICAgLy8gZHggPSBwb2ludC54Lm5hdGl2ZSAtIGxhc3RfcG9pbnQueC5uYXRpdmUKICAgIGV4dHJhY3RfdWludDY0CiAgICAtCiAgICBmcmFtZV9idXJ5IDIKICAgIGIgdGVzdF9hcnJheV9hZnRlcl9pZl9lbHNlQDEwCgp0ZXN0X2FycmF5X2FmdGVyX2ZvckAxNDoKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjQyCiAgICAvLyByZXR1cm4gcGF0aF9sZW5ndGgocGF0aCkKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuc3RhdGljX3NpemUuU3RhdGljU2l6ZUNvbnRyYWN0LnRlc3RfZXh0ZW5kX2Zyb21fdHVwbGUoc29tZV9tb3JlLjA6IGJ5dGVzLCBzb21lX21vcmUuMTogYnl0ZXMpIC0+IGJ5dGVzOgp0ZXN0X2V4dGVuZF9mcm9tX3R1cGxlOgogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6NDQtNDUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICAvLyBkZWYgdGVzdF9leHRlbmRfZnJvbV90dXBsZShzZWxmLCBzb21lX21vcmU6IHR1cGxlW01vcmUsIE1vcmVdKSAtPiBJbW11dGFibGVBcnJheVtNb3JlXToKICAgIHByb3RvIDIgMQogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6NDcKICAgIC8vIGFyci5leHRlbmQoc29tZV9tb3JlKQogICAgZnJhbWVfZGlnIC0yCiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6NDgKICAgIC8vIGxhc3QgPSBhcnJbLTFdCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18zIC8vIDE2CiAgICAvCiAgICBkdXAKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBpbnRjXzMgLy8gMTYKICAgICoKICAgIGRpZyAyCiAgICBzd2FwCiAgICBpbnRjXzMgLy8gMTYKICAgIGV4dHJhY3QzCiAgICBleHRyYWN0IDAgMTYKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjQ5CiAgICAvLyBhc3NlcnQgbGFzdCA9PSBzb21lX21vcmVbMV0KICAgIGR1cAogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo1MAogICAgLy8gcmVzdWx0ID0gYXJyLmZyZWV6ZSgpCiAgICBzd2FwCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjUxCiAgICAvLyBhc3NlcnQgcmVzdWx0Wy0xXSA9PSBsYXN0CiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgaW50Y18wIC8vIDEKICAgIC0KICAgIGRpZyAxCiAgICBleHRyYWN0IDIgMAogICAgc3dhcAogICAgaW50Y18zIC8vIDE2CiAgICAqCiAgICBpbnRjXzMgLy8gMTYKICAgIGV4dHJhY3QzIC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgdW5jb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo1MgogICAgLy8gcmV0dXJuIHJlc3VsdAogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS5zdGF0aWNfc2l6ZS5TdGF0aWNTaXplQ29udHJhY3QudGVzdF9leHRlbmRfZnJvbV9hcmM0X3R1cGxlKHNvbWVfbW9yZTogYnl0ZXMpIC0+IGJ5dGVzOgp0ZXN0X2V4dGVuZF9mcm9tX2FyYzRfdHVwbGU6CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo1NC01NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X2V4dGVuZF9mcm9tX2FyYzRfdHVwbGUoCiAgICAvLyAgICAgc2VsZiwgc29tZV9tb3JlOiBhcmM0LlR1cGxlW01vcmUsIE1vcmVdCiAgICAvLyApIC0+IEltbXV0YWJsZUFycmF5W01vcmVdOgogICAgcHJvdG8gMSAxCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo1OQogICAgLy8gYXJyLmV4dGVuZChzb21lX21vcmUpCiAgICBmcmFtZV9kaWcgLTEKICAgIHBvcAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6NjAKICAgIC8vIHJldHVybiBhcnIuZnJlZXplKCkKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBpbnRjXzMgLy8gMTYKICAgIC8KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS5zdGF0aWNfc2l6ZS5TdGF0aWNTaXplQ29udHJhY3QudGVzdF9ib29sX2FycmF5KGxlbmd0aDogdWludDY0KSAtPiB1aW50NjQ6CnRlc3RfYm9vbF9hcnJheToKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjYyLTYzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgLy8gZGVmIHRlc3RfYm9vbF9hcnJheShzZWxmLCBsZW5ndGg6IFVJbnQ2NCkgLT4gVUludDY0OgogICAgcHJvdG8gMSAxCiAgICBieXRlY18yIC8vICIiCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo2NAogICAgLy8gYXJyID0gQXJyYXlbYm9vbF0oKQogICAgZHVwbiA0CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo2NwogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDEsIGxlbmd0aCArIDEpOgogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgaW50Y18wIC8vIDEKCnRlc3RfYm9vbF9hcnJheV9mb3JfaGVhZGVyQDE6CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo2NwogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDEsIGxlbmd0aCArIDEpOgogICAgZnJhbWVfZGlnIDYKICAgIGZyYW1lX2RpZyA1CiAgICA8CiAgICBieiB0ZXN0X2Jvb2xfYXJyYXlfYWZ0ZXJfZm9yQDQKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjY4CiAgICAvLyBhcnIuYXBwZW5kKGkgJSAyID09IDApCiAgICBmcmFtZV9kaWcgNgogICAgZHVwCiAgICBwdXNoaW50IDIgLy8gMgogICAgJQogICAgIQogICAgcHVzaGJ5dGVzcyAweDAwIDB4ODAgLy8gMHgwMCwgMHg4MAogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGZyYW1lX2RpZyA0CiAgICBzd2FwCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIGZyYW1lX2J1cnkgNAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6NjcKICAgIC8vIGZvciBpIGluIHVyYW5nZSgxLCBsZW5ndGggKyAxKToKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDYKICAgIGIgdGVzdF9ib29sX2FycmF5X2Zvcl9oZWFkZXJAMQoKdGVzdF9ib29sX2FycmF5X2FmdGVyX2ZvckA0OgogICAgZnJhbWVfZGlnIDQKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjY5CiAgICAvLyBhc3NlcnQgYXJyLmxlbmd0aCA9PSBsZW5ndGgsICJleHBlY3RlZCBjb3JyZWN0IGxlbmd0aCIKICAgIGxlbgogICAgaW50Y18wIC8vIDEKICAgIC8KICAgIGR1cAogICAgZnJhbWVfYnVyeSAwCiAgICBmcmFtZV9kaWcgLTEKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgY29ycmVjdCBsZW5ndGgKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjcwCiAgICAvLyBjb3VudCA9IFVJbnQ2NCgwKQogICAgaW50Y18xIC8vIDAKICAgIGZyYW1lX2J1cnkgMQogICAgaW50Y18xIC8vIDAKICAgIGZyYW1lX2J1cnkgMwoKdGVzdF9ib29sX2FycmF5X2Zvcl9oZWFkZXJANToKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjcxCiAgICAvLyBmb3IgdmFsIGluIGFycjoKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgMAogICAgPAogICAgYnogdGVzdF9ib29sX2FycmF5X2FmdGVyX2ZvckAxMAogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyAzCiAgICBpbnRjXzAgLy8gMQogICAgZXh0cmFjdDMKICAgIGludGNfMSAvLyAwCiAgICBnZXRieXRlCiAgICBmcmFtZV9kaWcgMQogICAgZnJhbWVfYnVyeSAyCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo3MgogICAgLy8gaWYgdmFsOgogICAgYnogdGVzdF9ib29sX2FycmF5X2FmdGVyX2lmX2Vsc2VAOAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6NzMKICAgIC8vIGNvdW50ICs9IDEKICAgIGZyYW1lX2RpZyAxCiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAyCgp0ZXN0X2Jvb2xfYXJyYXlfYWZ0ZXJfaWZfZWxzZUA4OgogICAgZnJhbWVfZGlnIDIKICAgIGZyYW1lX2J1cnkgMQogICAgZnJhbWVfZGlnIDMKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDMKICAgIGIgdGVzdF9ib29sX2FycmF5X2Zvcl9oZWFkZXJANQoKdGVzdF9ib29sX2FycmF5X2FmdGVyX2ZvckAxMDoKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5Ojc0CiAgICAvLyByZXR1cm4gY291bnQKICAgIGZyYW1lX2RpZyAxCiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuc3RhdGljX3NpemUuU3RhdGljU2l6ZUNvbnRyYWN0LnRlc3RfYXJjNF9jb252ZXJzaW9uKGxlbmd0aDogdWludDY0KSAtPiBieXRlczoKdGVzdF9hcmM0X2NvbnZlcnNpb246CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo3Ni03NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X2FyYzRfY29udmVyc2lvbihzZWxmLCBsZW5ndGg6IFVJbnQ2NCkgLT4gYXJjNC5EeW5hbWljQXJyYXlbYXJjNC5VSW50NjRdOgogICAgcHJvdG8gMSAxCiAgICBieXRlY18yIC8vICIiCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo3OAogICAgLy8gYXJyID0gQXJyYXlbYXJjNC5VSW50NjRdKCkKICAgIGR1cG4gNAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6ODEKICAgIC8vIGZvciBpIGluIHVyYW5nZSgxLCBsZW5ndGggKyAxKToKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGludGNfMCAvLyAxCgp0ZXN0X2FyYzRfY29udmVyc2lvbl9mb3JfaGVhZGVyQDE6CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo4MQogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDEsIGxlbmd0aCArIDEpOgogICAgZnJhbWVfZGlnIDYKICAgIGZyYW1lX2RpZyA1CiAgICA8CiAgICBieiB0ZXN0X2FyYzRfY29udmVyc2lvbl9hZnRlcl9mb3JANAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6ODIKICAgIC8vIGFyci5hcHBlbmQoYXJjNC5VSW50NjQoaSkpCiAgICBmcmFtZV9kaWcgNgogICAgZHVwCiAgICBpdG9iCiAgICBmcmFtZV9kaWcgNAogICAgc3dhcAogICAgY29uY2F0IC8vIG9uIGVycm9yOiBtYXggYXJyYXkgbGVuZ3RoIGV4Y2VlZGVkCiAgICBmcmFtZV9idXJ5IDQKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjgxCiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoMSwgbGVuZ3RoICsgMSk6CiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSA2CiAgICBiIHRlc3RfYXJjNF9jb252ZXJzaW9uX2Zvcl9oZWFkZXJAMQoKdGVzdF9hcmM0X2NvbnZlcnNpb25fYWZ0ZXJfZm9yQDQ6CiAgICBmcmFtZV9kaWcgNAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6ODMKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IGxlbmd0aCwgImV4cGVjdGVkIGNvcnJlY3QgbGVuZ3RoIgogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgLwogICAgZHVwCiAgICBmcmFtZV9idXJ5IDAKICAgIGZyYW1lX2RpZyAtMQogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCBjb3JyZWN0IGxlbmd0aAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6ODQKICAgIC8vIGNvdW50ID0gVUludDY0KDApCiAgICBpbnRjXzEgLy8gMAogICAgZnJhbWVfYnVyeSAxCiAgICBpbnRjXzEgLy8gMAogICAgZnJhbWVfYnVyeSAzCgp0ZXN0X2FyYzRfY29udmVyc2lvbl9mb3JfaGVhZGVyQDU6CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo4NQogICAgLy8gZm9yIHZhbCBpbiBhcnI6CiAgICBmcmFtZV9kaWcgMwogICAgZnJhbWVfZGlnIDAKICAgIDwKICAgIGJ6IHRlc3RfYXJjNF9jb252ZXJzaW9uX2FmdGVyX2ZvckAxMAogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyAzCiAgICBpbnRjXzIgLy8gOAogICAgKgogICAgaW50Y18yIC8vIDgKICAgIGV4dHJhY3QzCiAgICBleHRyYWN0IDAgOAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6ODYKICAgIC8vIGlmIHZhbDoKICAgIHB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAKICAgICE9CiAgICBmcmFtZV9kaWcgMQogICAgZnJhbWVfYnVyeSAyCiAgICBieiB0ZXN0X2FyYzRfY29udmVyc2lvbl9hZnRlcl9pZl9lbHNlQDgKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5Ojg3CiAgICAvLyBjb3VudCArPSAxCiAgICBmcmFtZV9kaWcgMQogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgMgoKdGVzdF9hcmM0X2NvbnZlcnNpb25fYWZ0ZXJfaWZfZWxzZUA4OgogICAgZnJhbWVfZGlnIDIKICAgIGZyYW1lX2J1cnkgMQogICAgZnJhbWVfZGlnIDMKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDMKICAgIGIgdGVzdF9hcmM0X2NvbnZlcnNpb25fZm9yX2hlYWRlckA1Cgp0ZXN0X2FyYzRfY29udmVyc2lvbl9hZnRlcl9mb3JAMTA6CiAgICBmcmFtZV9kaWcgNAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6OTAKICAgIC8vIGFyYzRfYXJyLmV4dGVuZChhcnIpCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgIC8KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjkyCiAgICAvLyByZXR1cm4gYXJjNF9hcnIKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS5zdGF0aWNfc2l6ZS5TdGF0aWNTaXplQ29udHJhY3Quc3VtX2FycmF5KGFyYzRfYXJyOiBieXRlcykgLT4gdWludDY0OgpzdW1fYXJyYXk6CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo5NC05NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiBzdW1fYXJyYXkoc2VsZiwgYXJjNF9hcnI6IGFyYzQuRHluYW1pY0FycmF5W2FyYzQuVUludDY0XSkgLT4gVUludDY0OgogICAgcHJvdG8gMSAxCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weTo5NwogICAgLy8gYXJyLmV4dGVuZChhcmM0X2FycikKICAgIGZyYW1lX2RpZyAtMQogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6OTkKICAgIC8vIHRvdGFsID0gVUludDY0KDApCiAgICBpbnRjXzEgLy8gMAogICAgc3dhcAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MTAwCiAgICAvLyBmb3IgaXRlbSBpbiBhcnI6CiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICAvCiAgICBpbnRjXzEgLy8gMAoKc3VtX2FycmF5X2Zvcl9oZWFkZXJAMToKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjEwMAogICAgLy8gZm9yIGl0ZW0gaW4gYXJyOgogICAgZnJhbWVfZGlnIDMKICAgIGZyYW1lX2RpZyAyCiAgICA8CiAgICBieiBzdW1fYXJyYXlfYWZ0ZXJfZm9yQDQKICAgIGZyYW1lX2RpZyAwCiAgICBmcmFtZV9kaWcgMwogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzIgLy8gOAogICAgKgogICAgaW50Y18yIC8vIDgKICAgIGV4dHJhY3QzCiAgICBpbnRjXzEgLy8gMAogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MTAxCiAgICAvLyB0b3RhbCArPSBpdGVtLm5hdGl2ZQogICAgZXh0cmFjdF91aW50NjQKICAgIGZyYW1lX2RpZyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDEKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDMKICAgIGIgc3VtX2FycmF5X2Zvcl9oZWFkZXJAMQoKc3VtX2FycmF5X2FmdGVyX2ZvckA0OgogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MTAzCiAgICAvLyByZXR1cm4gdG90YWwKICAgIGZyYW1lX2RpZyAxCiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkuc3RhdGljX3NpemUuU3RhdGljU2l6ZUNvbnRyYWN0Lnh0cmEoKSAtPiB1aW50NjQsIHVpbnQ2NCwgYnl0ZXMsIGJ5dGVzOgp4dHJhOgogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MTA3CiAgICAvLyBzZWxmLmNvdW50ICs9IDEKICAgIGludGNfMSAvLyAwCiAgICBieXRlY18wIC8vICJjb3VudCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5jb3VudCBleGlzdHMKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBieXRlY18wIC8vICJjb3VudCIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToxMDkKICAgIC8vIGE9VHhuLm51bV9hcHBfYXJncywKICAgIHR4biBOdW1BcHBBcmdzCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToxMTAKICAgIC8vIGI9c2VsZi5jb3VudCwKICAgIGludGNfMSAvLyAwCiAgICBieXRlY18wIC8vICJjb3VudCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5jb3VudCBleGlzdHMKICAgIC8vIGFycmF5L3N0YXRpY19zaXplLnB5OjExMQogICAgLy8gYz1UeG4uc2VuZGVyLAogICAgdHhuIFNlbmRlcgogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MTEyCiAgICAvLyBkPXNlbGYubW9yZSgpLAogICAgY2FsbHN1YiBtb3JlCiAgICAvLyBhcnJheS9zdGF0aWNfc2l6ZS5weToxMDgtMTEzCiAgICAvLyByZXR1cm4gWHRyYSgKICAgIC8vICAgICBhPVR4bi5udW1fYXBwX2FyZ3MsCiAgICAvLyAgICAgYj1zZWxmLmNvdW50LAogICAgLy8gICAgIGM9VHhuLnNlbmRlciwKICAgIC8vICAgICBkPXNlbGYubW9yZSgpLAogICAgLy8gKQogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS5zdGF0aWNfc2l6ZS5TdGF0aWNTaXplQ29udHJhY3QubW9yZSgpIC0+IGJ5dGVzOgptb3JlOgogICAgLy8gYXJyYXkvc3RhdGljX3NpemUucHk6MTE3CiAgICAvLyByZXR1cm4gTW9yZShmb289YXJjNC5VSW50NjQoc2VsZi5jb3VudCArIDEpLCBiYXI9YXJjNC5VSW50NjQoc2VsZi5jb3VudCAqIHNlbGYuY291bnQpKQogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjXzAgLy8gImNvdW50IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmNvdW50IGV4aXN0cwogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGl0b2IKICAgIGludGNfMSAvLyAwCiAgICBieXRlY18wIC8vICJjb3VudCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5jb3VudCBleGlzdHMKICAgIGludGNfMSAvLyAwCiAgICBieXRlY18wIC8vICJjb3VudCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5jb3VudCBleGlzdHMKICAgICoKICAgIGl0b2IKICAgIGNvbmNhdAogICAgcmV0c3ViCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "CiAEAQAIECYEBWNvdW50BBUffHUAAWExGEAAAygjZzEbQQC9ggYEKNfBuAT6nLlzBGA5okAE+P1opwQfAo2xBAlrOlk2GgCOBgBtAFIAPwAqABYAAiNDMRkURDEYRDYaAYgC/RYpTFCwIkMxGRREMRhENhoBF4gCaylMULAiQzEZFEQxGEQ2GgEXiAHmFilMULAiQzEZFEQxGEQ2GgGIAb8pTFCwIkMxGRREMRhENhoBSVcAEExXEBCIAWopTFCwIkMxGRREMRhENhoBNhoCFzYaAzYaBBeIABIWKUxQsCJDMRlA/28xGBREIkOKBAEjSSpHBSgjZ4gCnIgCmYgClk8LFoAQAAAAAAAAAAAAAAAAAAAAAExQTwsWUE8KUE8JUIv9Fov8TFBPCRZQTwgWUE8HUE8GUFCL/xaL/kxQTwUWUE8EFlBPA1BPAlBQI4sJgQMMQQA6iwiLCUlOAoFQC4FQWEmBGFtLAiIITEsBEkRMV0AQSVcACE8DgQIIFqhEVwgISwFLAgsWqESMCUL/vosISRWBUApJjAQWVwYCSwFQK7xIK0y/VwBQSYwASVcACIwBJFuMAyOMBSKMB4sHiwQMQQBciwiLB4FQC4FQWEcCVwAITCRbjAaLAaRBADaLACNbTCNbCYwCiwaLAwxBAByLA4sGCYsCSQtMSQsIkosFCIwFiwciCIwHQv+wiwaLAwlC/+EjW4sAI1sJjAJC/8iLBYwAiYoCAYv+i/9QSRUlCkkiCSULSwJMJVhXABBJi/8SREwWVwYCTwJQSSNZIglLAVcCAEwlCyVYTwISRImKAQGL/0iL/xUlChZXBgKL/1CJigEBKkcEi/8iCCKLBosFDEEAHYsGSYECGBSCAgEAAYBPAk2LBExQjAQiCIwGQv/biwQVIgpJjACL/xJEI4wBI4wDiwOLAAxBACKLBIsDIlgjVYsBjAJBAAaLASIIjAKLAowBiwMiCIwDQv/WiwGMAImKAQEqRwSL/yIIIosGiwUMQQARiwZJFosETFCMBCIIjAZC/+eLBBUkCkmMAIv/EkQjjAEjjAOLA4sADEEAMIsEiwMkCyRYVwAIgAgAAAAAAAAAABOLAYwCQQAGiwEiCIwCiwKMAYsDIgiMA0L/yIsESRUkChZXBgJMUIwAiYoBAYv/VwIASSNMFSQKI4sDiwIMQQAZiwCLA0lOAiQLJFgjW4sBCIwBIgiMA0L/34sBjACJIyhlRCIIKExnMRsjKGVEMQCIAAGJIyhlRCIIFiMoZUQjKGVECxZQiQ==", "clear": "CoEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 99, "minor": 99, "patch": 99 } }, "events": [], "templateVariables": {} }