{ "name": "NestedItemArrayUInt64", "structs": { "Child": [ { "name": "uint", "type": "uint64" }, { "name": "bool_", "type": "bool" } ], "GrandParent": [ { "name": "a", "type": "uint64" }, { "name": "arr", "type": "((uint64,bool),uint64)[]" }, { "name": "b", "type": "uint64" } ], "ItemWithArray": [ { "name": "arr", "type": "uint64[]" } ], "Parent": [ { "name": "child", "type": "Child" }, { "name": "bar", "type": "uint64" } ], "StructWithNestedArray": [ { "name": "grand", "type": "GrandParent" }, { "name": "padding", "type": "byte[4096][]" }, { "name": "items", "type": "(uint64[])[]" } ] }, "methods": [ { "name": "bootstrap", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "append", "args": [ { "type": "((uint64,bool),uint64)", "struct": "Parent", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "pop", "args": [], "returns": { "type": "((uint64,bool),uint64)", "struct": "Parent" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "nested_uint", "args": [ { "type": "uint64", "name": "idx" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "nested_bool", "args": [ { "type": "uint64", "name": "idx" } ], "returns": { "type": "bool" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "nested_arr_append", "args": [ { "type": "uint64", "name": "item_idx" }, { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "nested_arr_pop", "args": [ { "type": "uint64", "name": "item_idx" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "dynamic_append", "args": [ { "type": "(uint64[])", "struct": "ItemWithArray", "name": "item" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "dynamic_pop", "args": [], "returns": { "type": "(uint64[])", "struct": "ItemWithArray" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "clear_padding", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": {}, "local": {}, "box": { "box": { "keyType": "AVMString", "valueType": "StructWithNestedArray", "key": "Ym94" } } }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 771, 1110, 1314 ], "errorMessage": "cannot pop from empty array" }, { "pc": [ 723, 923, 1055, 1239, 1287 ], "errorMessage": "check self.box exists" }, { "pc": [ 727 ], "errorMessage": "expected box length >4096" }, { "pc": [ 776, 785, 831, 840, 872, 881, 939, 1071, 1115, 1129 ], "errorMessage": "index out of bounds" }, { "pc": [ 1228 ], "errorMessage": "invalid array length header" }, { "pc": [ 820, 861, 909, 919, 1051 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 1236 ], "errorMessage": "invalid number of bytes for test_cases.large_box_operations.nested_item.ItemWithArray" }, { "pc": [ 737 ], "errorMessage": "invalid number of bytes for test_cases.large_box_operations.nested_item.Parent" }, { "pc": [ 1220 ], "errorMessage": "invalid tail pointer at index 0 of ((len+uint64[]))" }, { "pc": [ 1216 ], "errorMessage": "invalid tuple encoding" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAyIDEgMCAxNyA0MDk2CiAgICBieXRlY2Jsb2NrICJib3giIDB4MTUxZjdjNzUKICAgIC8vIGxhcmdlX2JveF9vcGVyYXRpb25zL25lc3RlZF9pdGVtLnB5OjM1CiAgICAvLyBjbGFzcyBOZXN0ZWRJdGVtQXJyYXlVSW50NjQoQVJDNENvbnRyYWN0KToKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDE5CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHhiZWM3NmQ4NyAweGM3N2E4OWIxIDB4ZThhOThhY2IgMHgzMDdkNDNlYSAweGY1NGIwODBlIDB4ZTg5NzlkMjcgMHhiODhiZDg5OCAweDAyMGI3MjA5IDB4M2RiZjM5MjIgMHg3MzczOTMzMCAvLyBtZXRob2QgImJvb3RzdHJhcCgpdm9pZCIsIG1ldGhvZCAiYXBwZW5kKCgodWludDY0LGJvb2wpLHVpbnQ2NCkpdm9pZCIsIG1ldGhvZCAicG9wKCkoKHVpbnQ2NCxib29sKSx1aW50NjQpIiwgbWV0aG9kICJuZXN0ZWRfdWludCh1aW50NjQpdWludDY0IiwgbWV0aG9kICJuZXN0ZWRfYm9vbCh1aW50NjQpYm9vbCIsIG1ldGhvZCAibmVzdGVkX2Fycl9hcHBlbmQodWludDY0LHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJuZXN0ZWRfYXJyX3BvcCh1aW50NjQpdWludDY0IiwgbWV0aG9kICJkeW5hbWljX2FwcGVuZCgodWludDY0W10pKXZvaWQiLCBtZXRob2QgImR5bmFtaWNfcG9wKCkodWludDY0W10pIiwgbWV0aG9kICJjbGVhcl9wYWRkaW5nKCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggYm9vdHN0cmFwIGFwcGVuZCBwb3AgbmVzdGVkX3VpbnQgbmVzdGVkX2Jvb2wgbmVzdGVkX2Fycl9hcHBlbmQgbmVzdGVkX2Fycl9wb3AgZHluYW1pY19hcHBlbmQgZHluYW1pY19wb3AgY2xlYXJfcGFkZGluZwogICAgZXJyCgptYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDE5OgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICByZXR1cm4KCgovLyBfcHV5YV9saWIuYm94X2FyYzQuYm94X2R5bmFtaWNfYXJyYXlfcG9wX2ZpeGVkX3NpemUoYm94X2tleTogYnl0ZXMsIGFycmF5X29mZnNldDogdWludDY0LCBmaXhlZF9ieXRlX3NpemU6IHVpbnQ2NCkgLT4gdm9pZDoKYm94X2R5bmFtaWNfYXJyYXlfcG9wX2ZpeGVkX3NpemU6CiAgICBwcm90byAzIDAKICAgIGZyYW1lX2RpZyAtMwogICAgZnJhbWVfZGlnIC0yCiAgICBpbnRjXzAgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBkdXAKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAtMgogICAgdW5jb3ZlciAyCiAgICBib3hfcmVwbGFjZQogICAgZnJhbWVfZGlnIC0yCiAgICBpbnRjXzAgLy8gMgogICAgKwogICAgc3dhcAogICAgZnJhbWVfZGlnIC0xCiAgICAqCiAgICArCiAgICBmcmFtZV9kaWcgLTMKICAgIHN3YXAKICAgIGZyYW1lX2RpZyAtMQogICAgcHVzaGJ5dGVzIDB4CiAgICBib3hfc3BsaWNlCiAgICBmcmFtZV9kaWcgLTMKICAgIGJveF9sZW4KICAgIHBvcAogICAgZnJhbWVfZGlnIC0xCiAgICAtCiAgICBmcmFtZV9kaWcgLTMKICAgIHN3YXAKICAgIGJveF9yZXNpemUKICAgIHJldHN1YgoKCi8vIF9wdXlhX2xpYi5ib3hfYXJjNC5ib3hfZHluYW1pY19hcnJheV9jb25jYXRfZml4ZWQoYm94X2tleTogYnl0ZXMsIGFycmF5X29mZnNldDogdWludDY0LCBuZXdfaXRlbXNfYnl0ZXM6IGJ5dGVzLCBuZXdfaXRlbXNfY291bnQ6IHVpbnQ2NCwgZml4ZWRfZWxlbWVudF9zaXplOiB1aW50NjQpIC0+IHZvaWQ6CmJveF9keW5hbWljX2FycmF5X2NvbmNhdF9maXhlZDoKICAgIHByb3RvIDUgMAogICAgZnJhbWVfZGlnIC01CiAgICBmcmFtZV9kaWcgLTQKICAgIGludGNfMCAvLyAyCiAgICBib3hfZXh0cmFjdAogICAgYnRvaQogICAgZnJhbWVfZGlnIC01CiAgICBib3hfbGVuCiAgICBwb3AKICAgIGZyYW1lX2RpZyAtMgogICAgZnJhbWVfZGlnIC0xCiAgICAqCiAgICArCiAgICBmcmFtZV9kaWcgLTUKICAgIHN3YXAKICAgIGJveF9yZXNpemUKICAgIGR1cAogICAgZnJhbWVfZGlnIC0yCiAgICArCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgZnJhbWVfZGlnIC01CiAgICBmcmFtZV9kaWcgLTQKICAgIHVuY292ZXIgMgogICAgYm94X3JlcGxhY2UKICAgIGZyYW1lX2RpZyAtNAogICAgaW50Y18wIC8vIDIKICAgICsKICAgIHN3YXAKICAgIGZyYW1lX2RpZyAtMQogICAgKgogICAgKwogICAgZnJhbWVfZGlnIC01CiAgICBzd2FwCiAgICBpbnRjXzIgLy8gMAogICAgZnJhbWVfZGlnIC0zCiAgICBib3hfc3BsaWNlCiAgICByZXRzdWIKCgovLyBfcHV5YV9saWIuYm94X2FyYzQuYm94X3VwZGF0ZV9vZmZzZXRfZGVjKGJveF9rZXk6IGJ5dGVzLCBvZmZzZXQ6IHVpbnQ2NCwgdmFsdWU6IHVpbnQ2NCkgLT4gdm9pZDoKYm94X3VwZGF0ZV9vZmZzZXRfZGVjOgogICAgcHJvdG8gMyAwCiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAtMgogICAgaW50Y18wIC8vIDIKICAgIGJveF9leHRyYWN0CiAgICBidG9pCiAgICBmcmFtZV9kaWcgLTEKICAgIC0KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAtMgogICAgdW5jb3ZlciAyCiAgICBib3hfcmVwbGFjZQogICAgcmV0c3ViCgoKLy8gX3B1eWFfbGliLmJveF9hcmM0LmJveF91cGRhdGVfb2Zmc2V0X2luYyhib3hfa2V5OiBieXRlcywgb2Zmc2V0OiB1aW50NjQsIHZhbHVlOiB1aW50NjQpIC0+IHZvaWQ6CmJveF91cGRhdGVfb2Zmc2V0X2luYzoKICAgIHByb3RvIDMgMAogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgLTIKICAgIGludGNfMCAvLyAyCiAgICBib3hfZXh0cmFjdAogICAgYnRvaQogICAgZnJhbWVfZGlnIC0xCiAgICArCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgLTIKICAgIHVuY292ZXIgMgogICAgYm94X3JlcGxhY2UKICAgIHJldHN1YgoKCi8vIF9wdXlhX2xpYi5hcmM0LmR5bmFtaWNfYXJyYXlfcmVhZF9keW5hbWljX2VsZW1lbnQoYXJyYXk6IGJ5dGVzLCBpbmRleDogdWludDY0KSAtPiBieXRlczoKZHluYW1pY19hcnJheV9yZWFkX2R5bmFtaWNfZWxlbWVudDoKICAgIHByb3RvIDIgMQogICAgZnJhbWVfZGlnIC0yCiAgICBleHRyYWN0IDIgMAogICAgZnJhbWVfZGlnIC0yCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18wIC8vIDIKICAgICoKICAgIGRpZyAyCiAgICBzd2FwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDIKICAgIGxlbgogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgZHVwCiAgICBpbnRjXzAgLy8gMgogICAgKgogICAgZGlnIDUKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICB1bmNvdmVyIDQKICAgIHVuY292ZXIgMgogICAgLQogICAgc2VsZWN0CiAgICBzdWJzdHJpbmczCiAgICByZXRzdWIKCgovLyBfcHV5YV9saWIuYXJjNC5keW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnQoYXJyYXk6IGJ5dGVzLCBuZXdfaGVhZF9hbmRfdGFpbDogYnl0ZXMsIG5ld19pdGVtc19jb3VudDogdWludDY0KSAtPiBieXRlczoKZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50OgogICAgcHJvdG8gMyAxCiAgICBmcmFtZV9kaWcgLTMKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwCiAgICBmcmFtZV9kaWcgLTEKICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAwCiAgICBzd2FwCiAgICBmcmFtZV9kaWcgLTMKICAgIGV4dHJhY3QgMiAwCiAgICBzd2FwCiAgICBpbnRjXzAgLy8gMgogICAgKgogICAgc3dhcAogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzAgLy8gMgogICAgKgogICAgY292ZXIgMgogICAgaW50Y18yIC8vIDAKICAgIGNvdmVyIDQKCmR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDE6CiAgICBmcmFtZV9kaWcgMAogICAgZGlnIDIKICAgIDwKICAgIGJ6IGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JANAogICAgZHVwCiAgICBmcmFtZV9kaWcgMAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDQKICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAwCiAgICB1bmNvdmVyIDUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgY292ZXIgNAogICAgaW50Y18wIC8vIDIKICAgICsKICAgIGZyYW1lX2J1cnkgMAogICAgYiBkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnRfZm9yX2hlYWRlckAxCgpkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnRfYWZ0ZXJfZm9yQDQ6CiAgICBkdXAKICAgIGxlbgogICAgc3dhcAogICAgaW50Y18yIC8vIDAKICAgIGZyYW1lX2J1cnkgMAoKZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50X2Zvcl9oZWFkZXJANToKICAgIGZyYW1lX2RpZyAwCiAgICBkaWcgNAogICAgPAogICAgYnogZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50X2FmdGVyX2ZvckA4CiAgICBmcmFtZV9kaWcgLTIKICAgIGZyYW1lX2RpZyAwCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMwogICAgKwogICAgaXRvYgogICAgZXh0cmFjdCA2IDAKICAgIHVuY292ZXIgNgogICAgc3dhcAogICAgY29uY2F0CiAgICBjb3ZlciA1CiAgICBpbnRjXzAgLy8gMgogICAgKwogICAgZnJhbWVfYnVyeSAwCiAgICBiIGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDUKCmR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JAODoKICAgIGNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgZnJhbWVfZGlnIC0yCiAgICB1bmNvdmVyIDMKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgY29uY2F0CiAgICBzd2FwCiAgICByZXRzdWIKCgovLyBfcHV5YV9saWIuYXJjNC5keW5hbWljX2FycmF5X3JlcGxhY2VfZHluYW1pY19lbGVtZW50KHNvdXJjZTogYnl0ZXMsIG5ld19pdGVtOiBieXRlcywgaW5kZXg6IHVpbnQ2NCkgLT4gYnl0ZXM6CmR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnQ6CiAgICBwcm90byAzIDEKICAgIGZyYW1lX2RpZyAtMwogICAgc3Vic3RyaW5nIDAgMgogICAgZHVwCiAgICBidG9pCiAgICBmcmFtZV9kaWcgLTMKICAgIGV4dHJhY3QgMiAwCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgY292ZXIgMwogICAgZHVwCiAgICBsZW4KICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGludGNfMCAvLyAyCiAgICAqCiAgICBkaWcgMgogICAgZGlnIDEKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICAtCiAgICBpbnRjXzEgLy8gMQogICAgLQogICAgZGlnIDMKICAgIGNvdmVyIDIKICAgIHNlbGVjdAogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzAgLy8gMgogICAgKgogICAgZGlnIDQKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkdXAyCiAgICAtCiAgICBjb3ZlciA3CiAgICBkaWcgNAogICAgaW50Y18yIC8vIDAKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZnJhbWVfZGlnIC0yCiAgICBjb25jYXQKICAgIHVuY292ZXIgNAogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDQKICAgIHN1YnN0cmluZzMKICAgIGNvbmNhdAogICAgY292ZXIgMgogICAgc3dhcAogICAgaW50Y18wIC8vIDIKICAgICoKICAgIGNvdmVyIDIKCmR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnRfZm9yX2hlYWRlckAyOgogICAgZHVwCiAgICBkaWcgMwogICAgPAogICAgYnogZHluYW1pY19hcnJheV9yZXBsYWNlX2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JANQogICAgc3dhcAogICAgZHVwCiAgICBkaWcgMgogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyA2CiAgICArCiAgICBkaWcgNQogICAgLQogICAgaXRvYgogICAgZXh0cmFjdCA2IDAKICAgIGRpZyAyCiAgICBzd2FwCiAgICByZXBsYWNlMwogICAgc3dhcAogICAgaW50Y18wIC8vIDIKICAgICsKICAgIGIgZHluYW1pY19hcnJheV9yZXBsYWNlX2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDIKCmR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnRfYWZ0ZXJfZm9yQDU6CiAgICBwb3AKICAgIGJ1cnkgMQogICAgY29uY2F0CiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMubGFyZ2VfYm94X29wZXJhdGlvbnMubmVzdGVkX2l0ZW0uTmVzdGVkSXRlbUFycmF5VUludDY0LmJvb3RzdHJhcFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmJvb3RzdHJhcDoKICAgIC8vIGxhcmdlX2JveF9vcGVyYXRpb25zL25lc3RlZF9pdGVtLnB5OjQxCiAgICAvLyBzZWxmLmJveC52YWx1ZSA9IFN0cnVjdFdpdGhOZXN0ZWRBcnJheSgKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIC8vIGxhcmdlX2JveF9vcGVyYXRpb25zL25lc3RlZF9pdGVtLnB5OjQxLTU5CiAgICAvLyBzZWxmLmJveC52YWx1ZSA9IFN0cnVjdFdpdGhOZXN0ZWRBcnJheSgKICAgIC8vICAgICBncmFuZD1HcmFuZFBhcmVudCgKICAgIC8vICAgICAgICAgYT1VSW50NjQoMSksCiAgICAvLyAgICAgICAgIGFycj1BcnJheSgKICAgIC8vICAgICAgICAgICAgICgKICAgIC8vICAgICAgICAgICAgICAgICBQYXJlbnQoCiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGNoaWxkPUNoaWxkKAogICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdWludD1VSW50NjQoNDIpLAogICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbF89VHJ1ZSwKICAgIC8vICAgICAgICAgICAgICAgICAgICAgKSwKICAgIC8vICAgICAgICAgICAgICAgICAgICAgYmFyPVVJbnQ2NCgxMjMpLAogICAgLy8gICAgICAgICAgICAgICAgICksCiAgICAvLyAgICAgICAgICAgICApCiAgICAvLyAgICAgICAgICksCiAgICAvLyAgICAgICAgIGI9VUludDY0KDIpLAogICAgLy8gICAgICksCiAgICAvLyAgICAgcGFkZGluZz1MYXJnZUJ5dGVzKCksCiAgICAvLyAgICAgaXRlbXM9QXJyYXlbSXRlbVdpdGhBcnJheV0oKSwKICAgIC8vICkKICAgIGJveF9kZWwKICAgIHBvcAogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6NDEKICAgIC8vIHNlbGYuYm94LnZhbHVlID0gU3RydWN0V2l0aE5lc3RlZEFycmF5KAogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6NDEtNTkKICAgIC8vIHNlbGYuYm94LnZhbHVlID0gU3RydWN0V2l0aE5lc3RlZEFycmF5KAogICAgLy8gICAgIGdyYW5kPUdyYW5kUGFyZW50KAogICAgLy8gICAgICAgICBhPVVJbnQ2NCgxKSwKICAgIC8vICAgICAgICAgYXJyPUFycmF5KAogICAgLy8gICAgICAgICAgICAgKAogICAgLy8gICAgICAgICAgICAgICAgIFBhcmVudCgKICAgIC8vICAgICAgICAgICAgICAgICAgICAgY2hpbGQ9Q2hpbGQoCiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50PVVJbnQ2NCg0MiksCiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBib29sXz1UcnVlLAogICAgLy8gICAgICAgICAgICAgICAgICAgICApLAogICAgLy8gICAgICAgICAgICAgICAgICAgICBiYXI9VUludDY0KDEyMyksCiAgICAvLyAgICAgICAgICAgICAgICAgKSwKICAgIC8vICAgICAgICAgICAgICkKICAgIC8vICAgICAgICAgKSwKICAgIC8vICAgICAgICAgYj1VSW50NjQoMiksCiAgICAvLyAgICAgKSwKICAgIC8vICAgICBwYWRkaW5nPUxhcmdlQnl0ZXMoKSwKICAgIC8vICAgICBpdGVtcz1BcnJheVtJdGVtV2l0aEFycmF5XSgpLAogICAgLy8gKQogICAgcHVzaGJ5dGVzIDB4MDAwNjAwMmIwMDJkMDAwMDAwMDAwMDAwMDAwMTAwMTIwMDAwMDAwMDAwMDAwMDAyMDAwMTAwMDAwMDAwMDAwMDAwMmE4MDAwMDAwMDAwMDAwMDAwN2IwMDAwMDAwMAogICAgYm94X3B1dAogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6NjAKICAgIC8vIHNlbGYuYm94LnZhbHVlLml0ZW1zLmFwcGVuZChJdGVtV2l0aEFycmF5KGFycj1BcnJheVtVSW50NjRdKCkpKQogICAgcHVzaGJ5dGVzcyAweDAwMDAgMHgwMDAyMDAwMjAwMDAKICAgIGludGNfMSAvLyAxCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudAogICAgcHVzaGJ5dGVzIDB4MDAwNjAwMmIwMDJkMDAwMDAwMDAwMDAwMDAwMTAwMTIwMDAwMDAwMDAwMDAwMDAyMDAwMTAwMDAwMDAwMDAwMDAwMmE4MDAwMDAwMDAwMDAwMDAwN2IwMDAwCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIGJveF9kZWwKICAgIHBvcAogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgc3dhcAogICAgYm94X3B1dAogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6NjEKICAgIC8vIHNlbGYuYm94LnZhbHVlLnBhZGRpbmcuYXBwZW5kKEJ5dGVzNDA5NigpKQogICAgaW50YyA0IC8vIDQwOTYKICAgIGJ6ZXJvCiAgICBieXRlY18wIC8vICJib3giCiAgICBpbnRjXzAgLy8gMgogICAgZHVwCiAgICBib3hfZXh0cmFjdAogICAgYnRvaQogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgcHVzaGludCA0CiAgICBpbnRjIDQgLy8gNDA5NgogICAgY2FsbHN1YiBib3hfdXBkYXRlX29mZnNldF9pbmMKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIHN3YXAKICAgIHVuY292ZXIgMgogICAgaW50Y18xIC8vIDEKICAgIGludGMgNCAvLyA0MDk2CiAgICBjYWxsc3ViIGJveF9keW5hbWljX2FycmF5X2NvbmNhdF9maXhlZAogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6NjIKICAgIC8vIGFzc2VydCBzZWxmLmJveC5sZW5ndGggPiA0MDk2LCAiZXhwZWN0ZWQgYm94IGxlbmd0aCA+NDA5NiIKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIGJveF9sZW4KICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmJveCBleGlzdHMKICAgIGludGMgNCAvLyA0MDk2CiAgICA+CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYm94IGxlbmd0aCA+NDA5NgogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6MzkKICAgIC8vIEBwdWJsaWMKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2Nhc2VzLmxhcmdlX2JveF9vcGVyYXRpb25zLm5lc3RlZF9pdGVtLk5lc3RlZEl0ZW1BcnJheVVJbnQ2NC5hcHBlbmRbcm91dGluZ10oKSAtPiB2b2lkOgphcHBlbmQ6CiAgICAvLyBsYXJnZV9ib3hfb3BlcmF0aW9ucy9uZXN0ZWRfaXRlbS5weTo2NAogICAgLy8gQHB1YmxpYwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyAxNwogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgdGVzdF9jYXNlcy5sYXJnZV9ib3hfb3BlcmF0aW9ucy5uZXN0ZWRfaXRlbS5QYXJlbnQKICAgIC8vIGxhcmdlX2JveF9vcGVyYXRpb25zL25lc3RlZF9pdGVtLnB5OjY2CiAgICAvLyBzZWxmLmJveC52YWx1ZS5ncmFuZC5hcnIuYXBwZW5kKHZhbHVlKQogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgaW50Y18wIC8vIDIKICAgIGludGNfMyAvLyAxNwogICAgY2FsbHN1YiBib3hfdXBkYXRlX29mZnNldF9pbmMKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIHB1c2hpbnQgNAogICAgaW50Y18zIC8vIDE3CiAgICBjYWxsc3ViIGJveF91cGRhdGVfb2Zmc2V0X2luYwogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgcHVzaGludCAyNAogICAgdW5jb3ZlciAyCiAgICBpbnRjXzEgLy8gMQogICAgaW50Y18zIC8vIDE3CiAgICBjYWxsc3ViIGJveF9keW5hbWljX2FycmF5X2NvbmNhdF9maXhlZAogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6NjQKICAgIC8vIEBwdWJsaWMKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2Nhc2VzLmxhcmdlX2JveF9vcGVyYXRpb25zLm5lc3RlZF9pdGVtLk5lc3RlZEl0ZW1BcnJheVVJbnQ2NC5wb3Bbcm91dGluZ10oKSAtPiB2b2lkOgpwb3A6CiAgICAvLyBsYXJnZV9ib3hfb3BlcmF0aW9ucy9uZXN0ZWRfaXRlbS5weTo3MAogICAgLy8gcmV0dXJuIHNlbGYuYm94LnZhbHVlLmdyYW5kLmFyci5wb3AoKQogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgcHVzaGludCAyNAogICAgaW50Y18wIC8vIDIKICAgIGJveF9leHRyYWN0CiAgICBidG9pCiAgICBkdXAKICAgIGludGNfMSAvLyAxCiAgICAtIC8vIG9uIGVycm9yOiBjYW5ub3QgcG9wIGZyb20gZW1wdHkgYXJyYXkKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICA8CiAgICBhc3NlcnQgLy8gaW5kZXggb3V0IG9mIGJvdW5kcwogICAgaW50Y18zIC8vIDE3CiAgICAqCiAgICBwdXNoaW50IDI2CiAgICArCiAgICBieXRlY18wIC8vICJib3giCiAgICBzd2FwCiAgICBpbnRjXzMgLy8gMTcKICAgIGJveF9leHRyYWN0IC8vIG9uIGVycm9yOiBpbmRleCBvdXQgb2YgYm91bmRzCiAgICBieXRlY18wIC8vICJib3giCiAgICBpbnRjXzAgLy8gMgogICAgaW50Y18zIC8vIDE3CiAgICBjYWxsc3ViIGJveF91cGRhdGVfb2Zmc2V0X2RlYwogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgcHVzaGludCA0CiAgICBpbnRjXzMgLy8gMTcKICAgIGNhbGxzdWIgYm94X3VwZGF0ZV9vZmZzZXRfZGVjCiAgICBieXRlY18wIC8vICJib3giCiAgICBwdXNoaW50IDI0CiAgICBpbnRjXzMgLy8gMTcKICAgIGNhbGxzdWIgYm94X2R5bmFtaWNfYXJyYXlfcG9wX2ZpeGVkX3NpemUKICAgIC8vIGxhcmdlX2JveF9vcGVyYXRpb25zL25lc3RlZF9pdGVtLnB5OjY4CiAgICAvLyBAcHVibGljCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdF9jYXNlcy5sYXJnZV9ib3hfb3BlcmF0aW9ucy5uZXN0ZWRfaXRlbS5OZXN0ZWRJdGVtQXJyYXlVSW50NjQubmVzdGVkX3VpbnRbcm91dGluZ10oKSAtPiB2b2lkOgpuZXN0ZWRfdWludDoKICAgIC8vIGxhcmdlX2JveF9vcGVyYXRpb25zL25lc3RlZF9pdGVtLnB5OjcyCiAgICAvLyBAcHVibGljCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6NzQKICAgIC8vIHJldHVybiBzZWxmLmJveC52YWx1ZS5ncmFuZC5hcnJbaWR4XS5jaGlsZC51aW50CiAgICBieXRlY18wIC8vICJib3giCiAgICBwdXNoaW50IDI0CiAgICBpbnRjXzAgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGRpZyAxCiAgICA+CiAgICBhc3NlcnQgLy8gaW5kZXggb3V0IG9mIGJvdW5kcwogICAgaW50Y18zIC8vIDE3CiAgICAqCiAgICBwdXNoaW50IDI2CiAgICArCiAgICBieXRlY18wIC8vICJib3giCiAgICBzd2FwCiAgICBpbnRjXzMgLy8gMTcKICAgIGJveF9leHRyYWN0IC8vIG9uIGVycm9yOiBpbmRleCBvdXQgb2YgYm91bmRzCiAgICBleHRyYWN0IDAgOQogICAgZXh0cmFjdCAwIDgKICAgIC8vIGxhcmdlX2JveF9vcGVyYXRpb25zL25lc3RlZF9pdGVtLnB5OjcyCiAgICAvLyBAcHVibGljCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdF9jYXNlcy5sYXJnZV9ib3hfb3BlcmF0aW9ucy5uZXN0ZWRfaXRlbS5OZXN0ZWRJdGVtQXJyYXlVSW50NjQubmVzdGVkX2Jvb2xbcm91dGluZ10oKSAtPiB2b2lkOgpuZXN0ZWRfYm9vbDoKICAgIC8vIGxhcmdlX2JveF9vcGVyYXRpb25zL25lc3RlZF9pdGVtLnB5Ojc2CiAgICAvLyBAcHVibGljCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6NzgKICAgIC8vIHJldHVybiBzZWxmLmJveC52YWx1ZS5ncmFuZC5hcnJbaWR4XS5jaGlsZC5ib29sXwogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgcHVzaGludCAyNAogICAgaW50Y18wIC8vIDIKICAgIGJveF9leHRyYWN0CiAgICBidG9pCiAgICBkaWcgMQogICAgPgogICAgYXNzZXJ0IC8vIGluZGV4IG91dCBvZiBib3VuZHMKICAgIGludGNfMyAvLyAxNwogICAgKgogICAgcHVzaGludCAyNgogICAgKwogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgc3dhcAogICAgaW50Y18zIC8vIDE3CiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgZXh0cmFjdCAwIDkKICAgIHB1c2hpbnQgNjQKICAgIGdldGJpdAogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6NzYKICAgIC8vIEBwdWJsaWMKICAgIHB1c2hieXRlcyAweDAwCiAgICBpbnRjXzIgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2Nhc2VzLmxhcmdlX2JveF9vcGVyYXRpb25zLm5lc3RlZF9pdGVtLk5lc3RlZEl0ZW1BcnJheVVJbnQ2NC5uZXN0ZWRfYXJyX2FwcGVuZFtyb3V0aW5nXSgpIC0+IHZvaWQ6Cm5lc3RlZF9hcnJfYXBwZW5kOgogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6ODAKICAgIC8vIEBwdWJsaWMKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6ODIKICAgIC8vIHNlbGYuYm94LnZhbHVlLml0ZW1zW2l0ZW1faWR4XS5hcnIuYXBwZW5kKHZhbHVlKQogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgYm94X2dldAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYm94IGV4aXN0cwogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgcHVzaGludCA0CiAgICBpbnRjXzAgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIGRpZyAxCiAgICBpbnRjXzAgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGRpZyA0CiAgICA+CiAgICBhc3NlcnQgLy8gaW5kZXggb3V0IG9mIGJvdW5kcwogICAgaW50Y18wIC8vIDIKICAgICsKICAgIGludGNfMCAvLyAyCiAgICBkaWcgNAogICAgKgogICAgZGlnIDEKICAgICsKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIHN3YXAKICAgIGludGNfMCAvLyAyCiAgICBib3hfZXh0cmFjdAogICAgYnRvaQogICAgKwogICAgaW50Y18wIC8vIDIKICAgICsKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIGRpZyAxCiAgICBpbnRjXzAgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIHB1c2hpbnQgOAogICAgKgogICAgaW50Y18wIC8vIDIKICAgICsKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIGNvdmVyIDIKICAgIGJveF9leHRyYWN0CiAgICB1bmNvdmVyIDIKICAgIGl0b2IKICAgIGRpZyAxCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIC8vIGxhcmdlX2JveF9vcGVyYXRpb25zL25lc3RlZF9pdGVtLnB5OjgyCiAgICAvLyBzZWxmLmJveC52YWx1ZS5pdGVtc1tpdGVtX2lkeF0uYXJyLmFwcGVuZCh2YWx1ZSkKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMAogICAgdW5jb3ZlciAyCiAgICBzd2FwCiAgICByZXBsYWNlMiAwCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIGxhcmdlX2JveF9vcGVyYXRpb25zL25lc3RlZF9pdGVtLnB5OjgyCiAgICAvLyBzZWxmLmJveC52YWx1ZS5pdGVtc1tpdGVtX2lkeF0uYXJyLmFwcGVuZCh2YWx1ZSkKICAgIGRpZyAxCiAgICBwdXNoaW50IDQKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMgogICAgbGVuCiAgICBkaWcgMwogICAgZGlnIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBkaWcgNQogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3JlYWRfZHluYW1pY19lbGVtZW50CiAgICBkdXAKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgaW50Y18yIC8vIDAKICAgIHN3YXAKICAgIGV4dHJhY3QzCiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgdW5jb3ZlciA0CiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnQKICAgIHVuY292ZXIgMgogICAgaW50Y18yIC8vIDAKICAgIHVuY292ZXIgMwogICAgZXh0cmFjdDMKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgYm94X2RlbAogICAgcG9wCiAgICBieXRlY18wIC8vICJib3giCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyBsYXJnZV9ib3hfb3BlcmF0aW9ucy9uZXN0ZWRfaXRlbS5weTo4MAogICAgLy8gQHB1YmxpYwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMubGFyZ2VfYm94X29wZXJhdGlvbnMubmVzdGVkX2l0ZW0uTmVzdGVkSXRlbUFycmF5VUludDY0Lm5lc3RlZF9hcnJfcG9wW3JvdXRpbmddKCkgLT4gdm9pZDoKbmVzdGVkX2Fycl9wb3A6CiAgICAvLyBsYXJnZV9ib3hfb3BlcmF0aW9ucy9uZXN0ZWRfaXRlbS5weTo4NAogICAgLy8gQHB1YmxpYwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIGxhcmdlX2JveF9vcGVyYXRpb25zL25lc3RlZF9pdGVtLnB5Ojg2CiAgICAvLyByZXR1cm4gc2VsZi5ib3gudmFsdWUuaXRlbXNbaXRlbV9pZHhdLmFyci5wb3AoKQogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgYm94X2dldAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYm94IGV4aXN0cwogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgcHVzaGludCA0CiAgICBpbnRjXzAgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIGRpZyAxCiAgICBpbnRjXzAgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGRpZyAzCiAgICA+CiAgICBhc3NlcnQgLy8gaW5kZXggb3V0IG9mIGJvdW5kcwogICAgaW50Y18wIC8vIDIKICAgICsKICAgIGludGNfMCAvLyAyCiAgICBkaWcgMwogICAgKgogICAgZGlnIDEKICAgICsKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIHN3YXAKICAgIGludGNfMCAvLyAyCiAgICBib3hfZXh0cmFjdAogICAgYnRvaQogICAgKwogICAgaW50Y18wIC8vIDIKICAgICsKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIGRpZyAxCiAgICBpbnRjXzAgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGR1cAogICAgcHVzaGludCA4CiAgICAqCiAgICBpbnRjXzAgLy8gMgogICAgKwogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgZGlnIDMKICAgIHVuY292ZXIgMgogICAgYm94X2V4dHJhY3QKICAgIGRpZyAxCiAgICBpbnRjXzEgLy8gMQogICAgLSAvLyBvbiBlcnJvcjogY2Fubm90IHBvcCBmcm9tIGVtcHR5IGFycmF5CiAgICBkdXAKICAgIHVuY292ZXIgMwogICAgPAogICAgYXNzZXJ0IC8vIGluZGV4IG91dCBvZiBib3VuZHMKICAgIHVuY292ZXIgMgogICAgaW50Y18wIC8vIDIKICAgICsKICAgIHN3YXAKICAgIHB1c2hpbnQgOAogICAgKgogICAgKwogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgc3dhcAogICAgcHVzaGludCA4CiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgZGlnIDEKICAgIGxlbgogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6ODYKICAgIC8vIHJldHVybiBzZWxmLmJveC52YWx1ZS5pdGVtc1tpdGVtX2lkeF0uYXJyLnBvcCgpCiAgICBwdXNoaW50IDgKICAgIC0KICAgIHVuY292ZXIgMgogICAgaW50Y18yIC8vIDAKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMAogICAgcmVwbGFjZTIgMAogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6ODYKICAgIC8vIHJldHVybiBzZWxmLmJveC52YWx1ZS5pdGVtc1tpdGVtX2lkeF0uYXJyLnBvcCgpCiAgICBkaWcgMgogICAgcHVzaGludCA0CiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDMKICAgIGxlbgogICAgZGlnIDQKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGR1cAogICAgZGlnIDYKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9yZWFkX2R5bmFtaWNfZWxlbWVudAogICAgZHVwCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGludGNfMiAvLyAwCiAgICBzd2FwCiAgICBleHRyYWN0MwogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgIHVuY292ZXIgNQogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3JlcGxhY2VfZHluYW1pY19lbGVtZW50CiAgICB1bmNvdmVyIDMKICAgIGludGNfMiAvLyAwCiAgICB1bmNvdmVyIDMKICAgIGV4dHJhY3QzCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIGJveF9kZWwKICAgIHBvcAogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgc3dhcAogICAgYm94X3B1dAogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6ODQKICAgIC8vIEBwdWJsaWMKICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2Nhc2VzLmxhcmdlX2JveF9vcGVyYXRpb25zLm5lc3RlZF9pdGVtLk5lc3RlZEl0ZW1BcnJheVVJbnQ2NC5keW5hbWljX2FwcGVuZFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmR5bmFtaWNfYXBwZW5kOgogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6ODgKICAgIC8vIEBwdWJsaWMKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBkaWcgMQogICAgaW50Y18yIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIGludGNfMCAvLyAyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGF0IGluZGV4IDAgb2YgKChsZW4rdWludDY0W10pKQogICAgZGlnIDIKICAgIHN3YXAKICAgIGRpZyAyCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgcHVzaGludCA4CiAgICAqCiAgICBwdXNoaW50IDQKICAgICsKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIHRlc3RfY2FzZXMubGFyZ2VfYm94X29wZXJhdGlvbnMubmVzdGVkX2l0ZW0uSXRlbVdpdGhBcnJheQogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6OTAKICAgIC8vIHNlbGYuYm94LnZhbHVlLml0ZW1zLmFwcGVuZChpdGVtLmNvcHkoKSkKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIGJveF9nZXQKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmJveCBleGlzdHMKICAgIGR1cAogICAgcHVzaGludCA0CiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDEKICAgIGxlbgogICAgZGlnIDIKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIHB1c2hieXRlcyAweDAwMDIKICAgIHVuY292ZXIgNAogICAgY29uY2F0CiAgICBpbnRjXzEgLy8gMQogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnQKICAgIHVuY292ZXIgMgogICAgaW50Y18yIC8vIDAKICAgIHVuY292ZXIgMwogICAgZXh0cmFjdDMKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgYm94X2RlbAogICAgcG9wCiAgICBieXRlY18wIC8vICJib3giCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyBsYXJnZV9ib3hfb3BlcmF0aW9ucy9uZXN0ZWRfaXRlbS5weTo4OAogICAgLy8gQHB1YmxpYwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMubGFyZ2VfYm94X29wZXJhdGlvbnMubmVzdGVkX2l0ZW0uTmVzdGVkSXRlbUFycmF5VUludDY0LmR5bmFtaWNfcG9wW3JvdXRpbmddKCkgLT4gdm9pZDoKZHluYW1pY19wb3A6CiAgICAvLyBsYXJnZV9ib3hfb3BlcmF0aW9ucy9uZXN0ZWRfaXRlbS5weTo5NAogICAgLy8gcmV0dXJuIHNlbGYuYm94LnZhbHVlLml0ZW1zLnBvcCgpCiAgICBieXRlY18wIC8vICJib3giCiAgICBib3hfZ2V0CiAgICBzd2FwCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYm94IGV4aXN0cwogICAgZHVwCiAgICBwdXNoaW50IDQKICAgIGV4dHJhY3RfdWludDE2CiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgZHVwCiAgICBsZW4KICAgIHN3YXAKICAgIGNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGR1cAogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgcHVzaGludCA0CiAgICBpbnRjXzAgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIHN3YXAKICAgIGludGNfMCAvLyAyCiAgICBib3hfZXh0cmFjdAogICAgYnRvaQogICAgaW50Y18xIC8vIDEKICAgIC0gLy8gb24gZXJyb3I6IGNhbm5vdCBwb3AgZnJvbSBlbXB0eSBhcnJheQogICAgZGlnIDEKICAgIHN3YXAKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9yZWFkX2R5bmFtaWNfZWxlbWVudAogICAgY292ZXIgMgogICAgaW50Y18yIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzEgLy8gMQogICAgLQogICAgZHVwCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMAogICAgY292ZXIgMgogICAgaW50Y18wIC8vIDIKICAgICoKICAgIGludGNfMCAvLyAyCgpkeW5hbWljX3BvcF93aGlsZV90b3BAMjoKICAgIGR1cAogICAgZGlnIDIKICAgIDw9CiAgICBieiBkeW5hbWljX3BvcF9hZnRlcl93aGlsZUA0CiAgICBkaWcgMgogICAgZGlnIDEKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzAgLy8gMgogICAgLQogICAgaXRvYgogICAgZXh0cmFjdCA2IDAKICAgIHVuY292ZXIgNAogICAgc3dhcAogICAgY29uY2F0CiAgICBjb3ZlciAzCiAgICBpbnRjXzAgLy8gMgogICAgKwogICAgYiBkeW5hbWljX3BvcF93aGlsZV90b3BAMgoKZHluYW1pY19wb3BfYWZ0ZXJfd2hpbGVANDoKICAgIHVuY292ZXIgMgogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgdW5jb3ZlciAzCiAgICBleHRyYWN0X3VpbnQxNgogICAgc3dhcAogICAgY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgY29uY2F0CiAgICAvLyBsYXJnZV9ib3hfb3BlcmF0aW9ucy9uZXN0ZWRfaXRlbS5weTo5NAogICAgLy8gcmV0dXJuIHNlbGYuYm94LnZhbHVlLml0ZW1zLnBvcCgpCiAgICB1bmNvdmVyIDMKICAgIGludGNfMiAvLyAwCiAgICB1bmNvdmVyIDQKICAgIGV4dHJhY3QzCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIGJveF9kZWwKICAgIHBvcAogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgc3dhcAogICAgYm94X3B1dAogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6OTIKICAgIC8vIEBwdWJsaWMKICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2Nhc2VzLmxhcmdlX2JveF9vcGVyYXRpb25zLm5lc3RlZF9pdGVtLk5lc3RlZEl0ZW1BcnJheVVJbnQ2NC5jbGVhcl9wYWRkaW5nW3JvdXRpbmddKCkgLT4gdm9pZDoKY2xlYXJfcGFkZGluZzoKICAgIC8vIGxhcmdlX2JveF9vcGVyYXRpb25zL25lc3RlZF9pdGVtLnB5Ojk4CiAgICAvLyBfZGlzY2FyZGVkID0gc2VsZi5ib3gudmFsdWUucGFkZGluZy5wb3AoKQogICAgYnl0ZWNfMCAvLyAiYm94IgogICAgaW50Y18wIC8vIDIKICAgIGR1cAogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGJ5dGVjXzAgLy8gImJveCIKICAgIHB1c2hpbnQgNAogICAgaW50YyA0IC8vIDQwOTYKICAgIGNhbGxzdWIgYm94X3VwZGF0ZV9vZmZzZXRfZGVjCiAgICBieXRlY18wIC8vICJib3giCiAgICBzd2FwCiAgICBpbnRjIDQgLy8gNDA5NgogICAgY2FsbHN1YiBib3hfZHluYW1pY19hcnJheV9wb3BfZml4ZWRfc2l6ZQogICAgLy8gbGFyZ2VfYm94X29wZXJhdGlvbnMvbmVzdGVkX2l0ZW0ucHk6OTYKICAgIC8vIEBwdWJsaWMKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4K", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAFAgEAEYAgJgIDYm94BBUffHUxG0EAVTEZFEQxGESCCgS+x22HBMd6ibEE6KmKywQwfUPqBPVLCA4E6JedJwS4i9iYBAILcgkEPb85IgRzc5MwNhoAjgoBzQJtAo4CvwLoAxgDpgRLBJQFCwAxGRQxGBQQQ4oDAIv9i/4iuhcjCUkWVwYCi/2L/k8Cu4v+IghMi/8LCIv9TIv/gADSi/29SIv/CYv9TNOJigUAi/uL/CK6F4v7vUiL/ov/CwiL+0zTSYv+CBZXBgKL+4v8TwK7i/wiCEyL/wsIi/tMJIv90omKAwCL/Yv+IroXi/8JFlcGAov9i/5PAruJigMAi/2L/iK6F4v/CBZXBgKL/Yv+TwK7iYoCAYv+VwIAi/4kWYv/IgtLAkxZSwIVi/8jCEkiC0sFTFlPBE8CCU1SiYoDAYv9JFlJi/8IFlcGAEyL/VcCAEwiC0yL/yILTgIkTgSLAEsCDEEAG0mLAElOAllLBAgWVwYATwVMUE4EIgiMAEL/3UkVTCSMAIsASwQMQQAci/6LAElOAllLAwgWVwYATwZMUE4FIgiMAEL/3E4CUk8CTFCL/hWL/k8DTwJSUEyJigMBi/1RAAJJF4v9VwIAi/4VTgNJFYv/IwgiC0sCSwFZSwSL/wkjCUsDTgJNi/8iC0sETFlKCU4HSwQkTwJSi/5QTwRPAk8EUlBOAkwiC04CSUsDDEEAGUxJSwJZSwYISwUJFlcGAEsCTF1MIghC/+BIRQFQjACJKLxIKIAvAAYAKwAtAAAAAAAAAAEAEgAAAAAAAAACAAEAAAAAAAAAKoAAAAAAAAAAewAAAAC/ggICAAAGAAIAAgAAI4j+v4AtAAYAKwAtAAAAAAAAAAEAEgAAAAAAAAACAAEAAAAAAAAAKoAAAAAAAAAAewAATFAovEgoTL8hBK8oIkm6FyiBBCEEiP41KExPAiMhBIj92ii9RCEEDUQjQzYaAUkVJRJEKCIliP4UKIEEJYj+DSiBGE8CIyWI/bIjQyiBGCK6F0kjCUlPAgxEJQuBGggoTCW6KCIliP3LKIEEJYj9xCiBGCWI/VApTFCwI0M2GgFJFYEIEkQXKIEYIroXSwENRCULgRoIKEwlulcACVcACClMULAjQzYaAUkVgQgSRBcogRgiuhdLAQ1EJQuBGggoTCW6VwAJgUBTgAEAJE8CVClMULAjQzYaAUkVgQgSRBc2GgJJFYEIEkQXKL5EKIEEIroXKEsBIroXSwQNRCIIIksEC0sBCChMIroXCCIIKEsBIroXgQgLIggoTgK6TwIWSwEkWSMIFlcGAE8CTFwATFBLAYEEWUsCFUsDSwJPAlJJSwWI/SBJJFkkTFhPA1BPBIj9v08CJE8DWExQKLxIKEy/I0M2GgFJFYEIEkQXKL5EKIEEIroXKEsBIroXSwMNRCIIIksDC0sBCChMIroXCCIIKEsBIroXSYEICyIIKEsDTwK6SwEjCUlPAwxETwIiCEyBCAsIKEyBCLpLARWBCAlPAiRPAlJJJFkjCRZXBgBcAEsCgQRZSwMVSwRLAk8CUklLBoj8f0kkWSRMWE8DUE8FiP0eTwMkTwNYTFAovEgoTL8pTFCwI0M2GgFJFUsBJFlJIhJESwJMSwJSJFmBCAuBBAgSRCi+REmBBFlLARVLAksCTwJSgAIAAk8EUCOI/E5PAiRPA1hMUCi8SChMvyNDKL5MSU8CREmBBFlJTwJJFUxOAlJJKIEEIroXKEwiuhcjCUsBTIj77E4CJFkjCUkWVwYATgIiCyJJSwIOQQAWSwJLAVkiCRZXBgBPBExQTgMiCEL/408CVwIASU8DWUxOAlJQTwMkTwRYTFAovEgoTL8pTFCwI0MoIkm6FyiBBCEEiPteKEwhBIj66iND", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 99, "minor": 99, "patch": 99 } }, "events": [], "templateVariables": {} }