{ "name": "LocalStateDemo", "structs": { "ObjectE4D9E83F": [ { "name": "localUint", "type": "uint64" }, { "name": "localUint2", "type": "uint64" }, { "name": "localBytes", "type": "byte[]" }, { "name": "localBytes2", "type": "byte[]" }, { "name": "localEncoded", "type": "uint64[10]" }, { "name": "localTuple", "type": "(uint64,byte[])" }, { "name": "localObject", "type": "ReadonlyObjectEFF43F36" }, { "name": "localMutableObject", "type": "Data" } ], "ObjectEFF43F36": [ { "name": "a", "type": "uint64" }, { "name": "b", "type": "byte[]" } ], "ReadonlyObjectEFF43F36": [ { "name": "a", "type": "uint64" }, { "name": "b", "type": "byte[]" } ], "Data": [ { "name": "a", "type": "uint64" }, { "name": "b", "type": "byte[]" }, { "name": "c", "type": "bool" }, { "name": "d", "type": "string" } ] }, "methods": [ { "name": "optIn", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "OptIn" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "setState", "args": [ { "type": "(uint64,byte[])", "struct": "ObjectEFF43F36", "name": "p" }, { "type": "uint64[10]", "name": "c" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "getState", "args": [], "returns": { "type": "(uint64,uint64,byte[],byte[],uint64[10],(uint64,byte[]),(uint64,byte[]),(uint64,byte[],bool,string))", "struct": "ObjectE4D9E83F" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "clearState", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "writeDynamicLocalState", "args": [ { "type": "string", "name": "key", "desc": "- The dynamic key to store the value under" }, { "type": "string", "name": "value", "desc": "- The string value to store" } ], "returns": { "type": "string", "desc": "The stored string value" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Writes a value to local state using a dynamic key.\nDemonstrates dynamic key-value storage in local state.", "events": [], "recommendations": {} }, { "name": "readDynamicLocalState", "args": [ { "type": "string", "name": "key", "desc": "- The dynamic key to read the value from" } ], "returns": { "type": "string", "desc": "The stored string value for the given key" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Reads a value from local state using a dynamic key.", "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 2, "bytes": 6 } }, "keys": { "global": {}, "local": { "localUint": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "bDE=" }, "localUint2": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "bG9jYWxVaW50Mg==" }, "localBytes": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "YjE=" }, "localBytes2": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "bG9jYWxCeXRlczI=" }, "localEncoded": { "keyType": "AVMString", "valueType": "uint64[10]", "key": "bG9jYWxFbmNvZGVk" }, "localTuple": { "keyType": "AVMString", "valueType": "(uint64,byte[])", "key": "bG9jYWxUdXBsZQ==" }, "localObject": { "keyType": "AVMString", "valueType": "ReadonlyObjectEFF43F36", "key": "bG9jYWxPYmplY3Q=" }, "localMutableObject": { "keyType": "AVMString", "valueType": "Data", "key": "bG9jYWxNdXRhYmxlT2JqZWN0" } }, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 657, 700 ], "errorMessage": "Account must opt in to contract first" }, { "pc": [ 705 ], "errorMessage": "Key not found" }, { "pc": [ 346, 352, 358, 364, 371, 378, 404, 430 ], "errorMessage": "check LocalState exists" }, { "pc": [ 207, 624, 640, 683 ], "errorMessage": "invalid array length header" }, { "pc": [ 214 ], "errorMessage": "invalid number of bytes for ObjectEFF43F36" }, { "pc": [ 631, 647, 690 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 223 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 198 ], "errorMessage": "invalid tail pointer at index 1 of (uint64,(len+uint8[]))" }, { "pc": [ 193 ], "errorMessage": "invalid tuple encoding" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCAxIDggMgogICAgYnl0ZWNibG9jayAibDEiICJsb2NhbFVpbnQyIiAiYjEiICJsb2NhbEJ5dGVzMiIgImxvY2FsRW5jb2RlZCIgMHgwMDBhICJsb2NhbFR1cGxlIiAibG9jYWxPYmplY3QiICJsb2NhbE11dGFibGVPYmplY3QiIDB4MTUxZjdjNzUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjgKICAgIC8vIGV4cG9ydCBjbGFzcyBMb2NhbFN0YXRlRGVtbyBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxNAogICAgcHVzaGJ5dGVzIDB4MjkzMTRkOTUgLy8gbWV0aG9kICJvcHRJbigpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1haW5fb3B0SW5fcm91dGVAMwogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0CiAgICBwdXNoYnl0ZXNzIDB4YWFlZmNiNDMgMHgwZWEyYzQ2OSAweDExMTcwNTM0IDB4Mjc5M2MyNDkgMHgyMTM2MzFmNSAvLyBtZXRob2QgInNldFN0YXRlKCh1aW50NjQsYnl0ZVtdKSx1aW50NjRbMTBdKXZvaWQiLCBtZXRob2QgImdldFN0YXRlKCkodWludDY0LHVpbnQ2NCxieXRlW10sYnl0ZVtdLHVpbnQ2NFsxMF0sKHVpbnQ2NCxieXRlW10pLCh1aW50NjQsYnl0ZVtdKSwodWludDY0LGJ5dGVbXSxib29sLHN0cmluZykpIiwgbWV0aG9kICJjbGVhclN0YXRlKCl2b2lkIiwgbWV0aG9kICJ3cml0ZUR5bmFtaWNMb2NhbFN0YXRlKHN0cmluZyxzdHJpbmcpc3RyaW5nIiwgbWV0aG9kICJyZWFkRHluYW1pY0xvY2FsU3RhdGUoc3RyaW5nKXN0cmluZyIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIHNldFN0YXRlIGdldFN0YXRlIGNsZWFyU3RhdGUgd3JpdGVEeW5hbWljTG9jYWxTdGF0ZSByZWFkRHluYW1pY0xvY2FsU3RhdGUKICAgIGVycgoKbWFpbl9vcHRJbl9yb3V0ZUAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MTgKICAgIC8vIEBhYmltZXRob2QoeyBhbGxvd0FjdGlvbnM6ICdPcHRJbicgfSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIGludGNfMSAvLyBPcHRJbgogICAgPT0KICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAmJgogICAgcmV0dXJuCgptYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxNDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjgKICAgIC8vIGV4cG9ydCBjbGFzcyBMb2NhbFN0YXRlRGVtbyBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICAmJgogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6OkxvY2FsU3RhdGVEZW1vLnNldFN0YXRlW3JvdXRpbmddKCkgLT4gdm9pZDoKc2V0U3RhdGU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czoyMQogICAgLy8gcHVibGljIHNldFN0YXRlKHsgYSwgYiB9OiB7IGE6IHVpbnQ2NDsgYjogYnl0ZXMgfSwgYzogU2FtcGxlQXJyYXkpIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBkaWcgMQogICAgaW50Y18yIC8vIDgKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIHB1c2hpbnQgMTAKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggMSBvZiAodWludDY0LChsZW4rdWludDhbXSkpCiAgICBkaWcgMgogICAgc3dhcAogICAgZGlnIDIKICAgIHN1YnN0cmluZzMKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgMTIKICAgICsKICAgIHVuY292ZXIgMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgT2JqZWN0RUZGNDNGMzYKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDgwCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ2NCwgMTA+CiAgICB1bmNvdmVyIDIKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgdW5jb3ZlciAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MjIKICAgIC8vIHRoaXMubG9jYWxVaW50KFR4bi5zZW5kZXIpLnZhbHVlID0gYQogICAgdHhuIFNlbmRlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6OQogICAgLy8gbG9jYWxVaW50ID0gTG9jYWxTdGF0ZTx1aW50NjQ+KHsga2V5OiAnbDEnIH0pCiAgICBieXRlY18wIC8vICJsMSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjIyCiAgICAvLyB0aGlzLmxvY2FsVWludChUeG4uc2VuZGVyKS52YWx1ZSA9IGEKICAgIGRpZyAzCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czoyMwogICAgLy8gdGhpcy5sb2NhbFVpbnQyKFR4bi5zZW5kZXIpLnZhbHVlID0gYQogICAgdHhuIFNlbmRlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MTAKICAgIC8vIGxvY2FsVWludDIgPSBMb2NhbFN0YXRlPHVpbnQ2ND4oKQogICAgYnl0ZWNfMSAvLyAibG9jYWxVaW50MiIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjIzCiAgICAvLyB0aGlzLmxvY2FsVWludDIoVHhuLnNlbmRlcikudmFsdWUgPSBhCiAgICBkaWcgMwogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MjQKICAgIC8vIHRoaXMubG9jYWxCeXRlcyhUeG4uc2VuZGVyKS52YWx1ZSA9IGIKICAgIHR4biBTZW5kZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjExCiAgICAvLyBsb2NhbEJ5dGVzID0gTG9jYWxTdGF0ZTxieXRlcz4oeyBrZXk6ICdiMScgfSkKICAgIGJ5dGVjXzIgLy8gImIxIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MjQKICAgIC8vIHRoaXMubG9jYWxCeXRlcyhUeG4uc2VuZGVyKS52YWx1ZSA9IGIKICAgIGRpZyAyCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czoyNQogICAgLy8gdGhpcy5sb2NhbEJ5dGVzMihUeG4uc2VuZGVyKS52YWx1ZSA9IGIKICAgIHR4biBTZW5kZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjEyCiAgICAvLyBsb2NhbEJ5dGVzMiA9IExvY2FsU3RhdGU8Ynl0ZXM+KCkKICAgIGJ5dGVjXzMgLy8gImxvY2FsQnl0ZXMyIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MjUKICAgIC8vIHRoaXMubG9jYWxCeXRlczIoVHhuLnNlbmRlcikudmFsdWUgPSBiCiAgICBkaWcgMgogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MjYKICAgIC8vIHRoaXMubG9jYWxFbmNvZGVkKFR4bi5zZW5kZXIpLnZhbHVlID0gY2xvbmUoYykKICAgIHR4biBTZW5kZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjEzCiAgICAvLyBsb2NhbEVuY29kZWQgPSBMb2NhbFN0YXRlPFNhbXBsZUFycmF5PigpCiAgICBieXRlYyA0IC8vICJsb2NhbEVuY29kZWQiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czoyNgogICAgLy8gdGhpcy5sb2NhbEVuY29kZWQoVHhuLnNlbmRlcikudmFsdWUgPSBjbG9uZShjKQogICAgdW5jb3ZlciA0CiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czoyNwogICAgLy8gdGhpcy5sb2NhbFR1cGxlKFR4bi5zZW5kZXIpLnZhbHVlID0gW2EsIGJdCiAgICB0eG4gU2VuZGVyCiAgICB1bmNvdmVyIDIKICAgIGl0b2IKICAgIGRpZyAyCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGJ5dGVjIDUgLy8gMHgwMDBhCiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIHVuY292ZXIgMwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MTQKICAgIC8vIGxvY2FsVHVwbGUgPSBMb2NhbFN0YXRlPHJlYWRvbmx5IFt1aW50NjQsIGJ5dGVzXT4oKQogICAgYnl0ZWMgNiAvLyAibG9jYWxUdXBsZSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjI3CiAgICAvLyB0aGlzLmxvY2FsVHVwbGUoVHhuLnNlbmRlcikudmFsdWUgPSBbYSwgYl0KICAgIGRpZyAyCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czoyOAogICAgLy8gdGhpcy5sb2NhbE9iamVjdChUeG4uc2VuZGVyKS52YWx1ZSA9IHsgYSwgYiB9CiAgICB0eG4gU2VuZGVyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czoxNQogICAgLy8gbG9jYWxPYmplY3QgPSBMb2NhbFN0YXRlPFJlYWRvbmx5PHsgYTogdWludDY0OyBiOiBieXRlcyB9Pj4oKQogICAgYnl0ZWMgNyAvLyAibG9jYWxPYmplY3QiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czoyOAogICAgLy8gdGhpcy5sb2NhbE9iamVjdChUeG4uc2VuZGVyKS52YWx1ZSA9IHsgYSwgYiB9CiAgICB1bmNvdmVyIDIKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjI5CiAgICAvLyB0aGlzLmxvY2FsTXV0YWJsZU9iamVjdChUeG4uc2VuZGVyKS52YWx1ZSA9IHsgYSwgYiwgYzogdHJ1ZSwgZDogbmV3IGFyYzQuU3RyKCdoZWxsbycpIH0KICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDEzCiAgICArCiAgICB1bmNvdmVyIDIKICAgIHB1c2hieXRlcyAweDAwMGQ4MAogICAgY29uY2F0CiAgICBzd2FwCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIHB1c2hieXRlcyAweDAwMDU2ODY1NmM2YzZmCiAgICBjb25jYXQKICAgIHR4biBTZW5kZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjE2CiAgICAvLyBsb2NhbE11dGFibGVPYmplY3QgPSBMb2NhbFN0YXRlPERhdGE+KCkKICAgIGJ5dGVjIDggLy8gImxvY2FsTXV0YWJsZU9iamVjdCIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjI5CiAgICAvLyB0aGlzLmxvY2FsTXV0YWJsZU9iamVjdChUeG4uc2VuZGVyKS52YWx1ZSA9IHsgYSwgYiwgYzogdHJ1ZSwgZDogbmV3IGFyYzQuU3RyKCdoZWxsbycpIH0KICAgIHVuY292ZXIgMgogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MjEKICAgIC8vIHB1YmxpYyBzZXRTdGF0ZSh7IGEsIGIgfTogeyBhOiB1aW50NjQ7IGI6IGJ5dGVzIH0sIGM6IFNhbXBsZUFycmF5KSB7CiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6OkxvY2FsU3RhdGVEZW1vLmdldFN0YXRlW3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0U3RhdGU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czozNAogICAgLy8gbG9jYWxVaW50OiB0aGlzLmxvY2FsVWludChUeG4uc2VuZGVyKS52YWx1ZSwKICAgIHR4biBTZW5kZXIKICAgIGludGNfMCAvLyAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo5CiAgICAvLyBsb2NhbFVpbnQgPSBMb2NhbFN0YXRlPHVpbnQ2ND4oeyBrZXk6ICdsMScgfSkKICAgIGJ5dGVjXzAgLy8gImwxIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MzQKICAgIC8vIGxvY2FsVWludDogdGhpcy5sb2NhbFVpbnQoVHhuLnNlbmRlcikudmFsdWUsCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgTG9jYWxTdGF0ZSBleGlzdHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjM1CiAgICAvLyBsb2NhbFVpbnQyOiB0aGlzLmxvY2FsVWludDIoVHhuLnNlbmRlcikudmFsdWUsCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MTAKICAgIC8vIGxvY2FsVWludDIgPSBMb2NhbFN0YXRlPHVpbnQ2ND4oKQogICAgYnl0ZWNfMSAvLyAibG9jYWxVaW50MiIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjM1CiAgICAvLyBsb2NhbFVpbnQyOiB0aGlzLmxvY2FsVWludDIoVHhuLnNlbmRlcikudmFsdWUsCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgTG9jYWxTdGF0ZSBleGlzdHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjM2CiAgICAvLyBsb2NhbEJ5dGVzOiB0aGlzLmxvY2FsQnl0ZXMoVHhuLnNlbmRlcikudmFsdWUsCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MTEKICAgIC8vIGxvY2FsQnl0ZXMgPSBMb2NhbFN0YXRlPGJ5dGVzPih7IGtleTogJ2IxJyB9KQogICAgYnl0ZWNfMiAvLyAiYjEiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czozNgogICAgLy8gbG9jYWxCeXRlczogdGhpcy5sb2NhbEJ5dGVzKFR4bi5zZW5kZXIpLnZhbHVlLAogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIExvY2FsU3RhdGUgZXhpc3RzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czozNwogICAgLy8gbG9jYWxCeXRlczI6IHRoaXMubG9jYWxCeXRlczIoVHhuLnNlbmRlcikudmFsdWUsCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MTIKICAgIC8vIGxvY2FsQnl0ZXMyID0gTG9jYWxTdGF0ZTxieXRlcz4oKQogICAgYnl0ZWNfMyAvLyAibG9jYWxCeXRlczIiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czozNwogICAgLy8gbG9jYWxCeXRlczI6IHRoaXMubG9jYWxCeXRlczIoVHhuLnNlbmRlcikudmFsdWUsCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgTG9jYWxTdGF0ZSBleGlzdHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjM4CiAgICAvLyBsb2NhbEVuY29kZWQ6IGNsb25lKHRoaXMubG9jYWxFbmNvZGVkKFR4bi5zZW5kZXIpLnZhbHVlKSwKICAgIHR4biBTZW5kZXIKICAgIGludGNfMCAvLyAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czoxMwogICAgLy8gbG9jYWxFbmNvZGVkID0gTG9jYWxTdGF0ZTxTYW1wbGVBcnJheT4oKQogICAgYnl0ZWMgNCAvLyAibG9jYWxFbmNvZGVkIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MzgKICAgIC8vIGxvY2FsRW5jb2RlZDogY2xvbmUodGhpcy5sb2NhbEVuY29kZWQoVHhuLnNlbmRlcikudmFsdWUpLAogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIExvY2FsU3RhdGUgZXhpc3RzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czozOQogICAgLy8gbG9jYWxUdXBsZTogdGhpcy5sb2NhbFR1cGxlKFR4bi5zZW5kZXIpLnZhbHVlLAogICAgdHhuIFNlbmRlcgogICAgaW50Y18wIC8vIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjE0CiAgICAvLyBsb2NhbFR1cGxlID0gTG9jYWxTdGF0ZTxyZWFkb25seSBbdWludDY0LCBieXRlc10+KCkKICAgIGJ5dGVjIDYgLy8gImxvY2FsVHVwbGUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czozOQogICAgLy8gbG9jYWxUdXBsZTogdGhpcy5sb2NhbFR1cGxlKFR4bi5zZW5kZXIpLnZhbHVlLAogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIExvY2FsU3RhdGUgZXhpc3RzCiAgICBkdXAKICAgIGV4dHJhY3QgMCA4CiAgICBkaWcgMQogICAgaW50Y18yIC8vIDgKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMgogICAgbGVuCiAgICB1bmNvdmVyIDMKICAgIGNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo0MAogICAgLy8gbG9jYWxPYmplY3Q6IHRoaXMubG9jYWxPYmplY3QoVHhuLnNlbmRlcikudmFsdWUsCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MTUKICAgIC8vIGxvY2FsT2JqZWN0ID0gTG9jYWxTdGF0ZTxSZWFkb25seTx7IGE6IHVpbnQ2NDsgYjogYnl0ZXMgfT4+KCkKICAgIGJ5dGVjIDcgLy8gImxvY2FsT2JqZWN0IgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6NDAKICAgIC8vIGxvY2FsT2JqZWN0OiB0aGlzLmxvY2FsT2JqZWN0KFR4bi5zZW5kZXIpLnZhbHVlLAogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIExvY2FsU3RhdGUgZXhpc3RzCiAgICBkdXAKICAgIGV4dHJhY3QgMCA4CiAgICBkaWcgMQogICAgaW50Y18yIC8vIDgKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMgogICAgbGVuCiAgICB1bmNvdmVyIDMKICAgIGNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo0MQogICAgLy8gbG9jYWxNdXRhYmxlT2JqZWN0OiBjbG9uZSh0aGlzLmxvY2FsTXV0YWJsZU9iamVjdChUeG4uc2VuZGVyKS52YWx1ZSksCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzAgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MTYKICAgIC8vIGxvY2FsTXV0YWJsZU9iamVjdCA9IExvY2FsU3RhdGU8RGF0YT4oKQogICAgYnl0ZWMgOCAvLyAibG9jYWxNdXRhYmxlT2JqZWN0IgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6NDEKICAgIC8vIGxvY2FsTXV0YWJsZU9iamVjdDogY2xvbmUodGhpcy5sb2NhbE11dGFibGVPYmplY3QoVHhuLnNlbmRlcikudmFsdWUpLAogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIExvY2FsU3RhdGUgZXhpc3RzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czozMy00MgogICAgLy8gcmV0dXJuIHsKICAgIC8vICAgbG9jYWxVaW50OiB0aGlzLmxvY2FsVWludChUeG4uc2VuZGVyKS52YWx1ZSwKICAgIC8vICAgbG9jYWxVaW50MjogdGhpcy5sb2NhbFVpbnQyKFR4bi5zZW5kZXIpLnZhbHVlLAogICAgLy8gICBsb2NhbEJ5dGVzOiB0aGlzLmxvY2FsQnl0ZXMoVHhuLnNlbmRlcikudmFsdWUsCiAgICAvLyAgIGxvY2FsQnl0ZXMyOiB0aGlzLmxvY2FsQnl0ZXMyKFR4bi5zZW5kZXIpLnZhbHVlLAogICAgLy8gICBsb2NhbEVuY29kZWQ6IGNsb25lKHRoaXMubG9jYWxFbmNvZGVkKFR4bi5zZW5kZXIpLnZhbHVlKSwKICAgIC8vICAgbG9jYWxUdXBsZTogdGhpcy5sb2NhbFR1cGxlKFR4bi5zZW5kZXIpLnZhbHVlLAogICAgLy8gICBsb2NhbE9iamVjdDogdGhpcy5sb2NhbE9iamVjdChUeG4uc2VuZGVyKS52YWx1ZSwKICAgIC8vICAgbG9jYWxNdXRhYmxlT2JqZWN0OiBjbG9uZSh0aGlzLmxvY2FsTXV0YWJsZU9iamVjdChUeG4uc2VuZGVyKS52YWx1ZSksCiAgICAvLyB9CiAgICB1bmNvdmVyIDkKICAgIGl0b2IKICAgIHVuY292ZXIgOQogICAgaXRvYgogICAgY29uY2F0CiAgICBkaWcgOAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgdW5jb3ZlciA5CiAgICBjb25jYXQKICAgIHN3YXAKICAgIHB1c2hieXRlcyAweDAwNmEKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGxlbgogICAgcHVzaGludCAxMDYKICAgICsKICAgIGRpZyA5CiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICB1bmNvdmVyIDEwCiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgdW5jb3ZlciAzCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBsZW4KICAgIHVuY292ZXIgMwogICAgKwogICAgc3dhcAogICAgdW5jb3ZlciA5CiAgICBjb25jYXQKICAgIGRpZyA3CiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICB1bmNvdmVyIDgKICAgIGNvbmNhdAogICAgdW5jb3ZlciA4CiAgICBieXRlYyA1IC8vIDB4MDAwYQogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGRpZyAyCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgdW5jb3ZlciAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBsZW4KICAgIHVuY292ZXIgMwogICAgKwogICAgZGlnIDYKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHVuY292ZXIgNwogICAgY29uY2F0CiAgICB1bmNvdmVyIDcKICAgIGJ5dGVjIDUgLy8gMHgwMDBhCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICB1bmNvdmVyIDMKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGxlbgogICAgdW5jb3ZlciAzCiAgICArCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgY29uY2F0CiAgICB1bmNvdmVyIDQKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MzIKICAgIC8vIHB1YmxpYyBnZXRTdGF0ZSgpIHsKICAgIGJ5dGVjIDkgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo6TG9jYWxTdGF0ZURlbW8uY2xlYXJTdGF0ZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmNsZWFyU3RhdGU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo0NgogICAgLy8gdGhpcy5sb2NhbFVpbnQoVHhuLnNlbmRlcikuZGVsZXRlKCkKICAgIHR4biBTZW5kZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjkKICAgIC8vIGxvY2FsVWludCA9IExvY2FsU3RhdGU8dWludDY0Pih7IGtleTogJ2wxJyB9KQogICAgYnl0ZWNfMCAvLyAibDEiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo0NgogICAgLy8gdGhpcy5sb2NhbFVpbnQoVHhuLnNlbmRlcikuZGVsZXRlKCkKICAgIGFwcF9sb2NhbF9kZWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjQ3CiAgICAvLyB0aGlzLmxvY2FsVWludDIoVHhuLnNlbmRlcikuZGVsZXRlKCkKICAgIHR4biBTZW5kZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjEwCiAgICAvLyBsb2NhbFVpbnQyID0gTG9jYWxTdGF0ZTx1aW50NjQ+KCkKICAgIGJ5dGVjXzEgLy8gImxvY2FsVWludDIiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo0NwogICAgLy8gdGhpcy5sb2NhbFVpbnQyKFR4bi5zZW5kZXIpLmRlbGV0ZSgpCiAgICBhcHBfbG9jYWxfZGVsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo0OAogICAgLy8gdGhpcy5sb2NhbEJ5dGVzKFR4bi5zZW5kZXIpLmRlbGV0ZSgpCiAgICB0eG4gU2VuZGVyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czoxMQogICAgLy8gbG9jYWxCeXRlcyA9IExvY2FsU3RhdGU8Ynl0ZXM+KHsga2V5OiAnYjEnIH0pCiAgICBieXRlY18yIC8vICJiMSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjQ4CiAgICAvLyB0aGlzLmxvY2FsQnl0ZXMoVHhuLnNlbmRlcikuZGVsZXRlKCkKICAgIGFwcF9sb2NhbF9kZWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjQ5CiAgICAvLyB0aGlzLmxvY2FsQnl0ZXMyKFR4bi5zZW5kZXIpLmRlbGV0ZSgpCiAgICB0eG4gU2VuZGVyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czoxMgogICAgLy8gbG9jYWxCeXRlczIgPSBMb2NhbFN0YXRlPGJ5dGVzPigpCiAgICBieXRlY18zIC8vICJsb2NhbEJ5dGVzMiIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjQ5CiAgICAvLyB0aGlzLmxvY2FsQnl0ZXMyKFR4bi5zZW5kZXIpLmRlbGV0ZSgpCiAgICBhcHBfbG9jYWxfZGVsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo1MAogICAgLy8gdGhpcy5sb2NhbEVuY29kZWQoVHhuLnNlbmRlcikuZGVsZXRlKCkKICAgIHR4biBTZW5kZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjEzCiAgICAvLyBsb2NhbEVuY29kZWQgPSBMb2NhbFN0YXRlPFNhbXBsZUFycmF5PigpCiAgICBieXRlYyA0IC8vICJsb2NhbEVuY29kZWQiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo1MAogICAgLy8gdGhpcy5sb2NhbEVuY29kZWQoVHhuLnNlbmRlcikuZGVsZXRlKCkKICAgIGFwcF9sb2NhbF9kZWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjUxCiAgICAvLyB0aGlzLmxvY2FsVHVwbGUoVHhuLnNlbmRlcikuZGVsZXRlKCkKICAgIHR4biBTZW5kZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjE0CiAgICAvLyBsb2NhbFR1cGxlID0gTG9jYWxTdGF0ZTxyZWFkb25seSBbdWludDY0LCBieXRlc10+KCkKICAgIGJ5dGVjIDYgLy8gImxvY2FsVHVwbGUiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo1MQogICAgLy8gdGhpcy5sb2NhbFR1cGxlKFR4bi5zZW5kZXIpLmRlbGV0ZSgpCiAgICBhcHBfbG9jYWxfZGVsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo1MgogICAgLy8gdGhpcy5sb2NhbE9iamVjdChUeG4uc2VuZGVyKS5kZWxldGUoKQogICAgdHhuIFNlbmRlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MTUKICAgIC8vIGxvY2FsT2JqZWN0ID0gTG9jYWxTdGF0ZTxSZWFkb25seTx7IGE6IHVpbnQ2NDsgYjogYnl0ZXMgfT4+KCkKICAgIGJ5dGVjIDcgLy8gImxvY2FsT2JqZWN0IgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6NTIKICAgIC8vIHRoaXMubG9jYWxPYmplY3QoVHhuLnNlbmRlcikuZGVsZXRlKCkKICAgIGFwcF9sb2NhbF9kZWwKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjUzCiAgICAvLyB0aGlzLmxvY2FsTXV0YWJsZU9iamVjdChUeG4uc2VuZGVyKS5kZWxldGUoKQogICAgdHhuIFNlbmRlcgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6MTYKICAgIC8vIGxvY2FsTXV0YWJsZU9iamVjdCA9IExvY2FsU3RhdGU8RGF0YT4oKQogICAgYnl0ZWMgOCAvLyAibG9jYWxNdXRhYmxlT2JqZWN0IgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6NTMKICAgIC8vIHRoaXMubG9jYWxNdXRhYmxlT2JqZWN0KFR4bi5zZW5kZXIpLmRlbGV0ZSgpCiAgICBhcHBfbG9jYWxfZGVsCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo0NQogICAgLy8gcHVibGljIGNsZWFyU3RhdGUoKSB7CiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6OkxvY2FsU3RhdGVEZW1vLndyaXRlRHluYW1pY0xvY2FsU3RhdGVbcm91dGluZ10oKSAtPiB2b2lkOgp3cml0ZUR5bmFtaWNMb2NhbFN0YXRlOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6NjMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjY1CiAgICAvLyBjb25zdCBzZW5kZXIgPSBUeG4uc2VuZGVyCiAgICB0eG4gU2VuZGVyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo2NgogICAgLy8gYXNzZXJ0KHNlbmRlci5pc09wdGVkSW4oR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbklkKSwgJ0FjY291bnQgbXVzdCBvcHQgaW4gdG8gY29udHJhY3QgZmlyc3QnKQogICAgZHVwCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uSUQKICAgIGFwcF9vcHRlZF9pbgogICAgYXNzZXJ0IC8vIEFjY291bnQgbXVzdCBvcHQgaW4gdG8gY29udHJhY3QgZmlyc3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjcwCiAgICAvLyBsb2NhbER5bmFtaWNBY2Nlc3Moc2VuZGVyKS52YWx1ZSA9IHZhbHVlCiAgICB1bmNvdmVyIDIKICAgIGRpZyAyCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo2MwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlYyA5IC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2xvY2FsLXN0YXRlLmFsZ28udHM6OkxvY2FsU3RhdGVEZW1vLnJlYWREeW5hbWljTG9jYWxTdGF0ZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnJlYWREeW5hbWljTG9jYWxTdGF0ZToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjgyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjg0CiAgICAvLyBjb25zdCBzZW5kZXIgPSBUeG4uc2VuZGVyCiAgICB0eG4gU2VuZGVyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo4NgogICAgLy8gYXNzZXJ0KHNlbmRlci5pc09wdGVkSW4oR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbklkKSwgJ0FjY291bnQgbXVzdCBvcHQgaW4gdG8gY29udHJhY3QgZmlyc3QnKQogICAgZHVwCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uSUQKICAgIGFwcF9vcHRlZF9pbgogICAgYXNzZXJ0IC8vIEFjY291bnQgbXVzdCBvcHQgaW4gdG8gY29udHJhY3QgZmlyc3QKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9sb2NhbC1zdGF0ZS5hbGdvLnRzOjkwCiAgICAvLyBhc3NlcnQobG9jYWxEeW5hbWljQWNjZXNzKHNlbmRlcikuaGFzVmFsdWUsICdLZXkgbm90IGZvdW5kJykKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDIKICAgIGFwcF9sb2NhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBLZXkgbm90IGZvdW5kCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvbG9jYWwtc3RhdGUuYWxnby50czo4MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlYyA5IC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEKICAgIHJldHVybgo=" }, "byteCode": { "approval": "CyAEAAEIAiYKAmwxCmxvY2FsVWludDICYjELbG9jYWxCeXRlczIMbG9jYWxFbmNvZGVkAgAKCmxvY2FsVHVwbGULbG9jYWxPYmplY3QSbG9jYWxNdXRhYmxlT2JqZWN0BBUffHUxG0EAR4AEKTFNlTYaAI4BADIxGRREMRhEggUEqu/LQwQOosRpBBEXBTQEJ5PCSQQhNjH1NhoAjgUAEQCtAZ0BwwH+ADEZIxIxGBBDMRkUMRgUEEM2GgFJFUsBJFlJgQoSREsCTEsCUkkiWYEMCE8CEkQ2GgJJFYFQEkRPAiJbTwJXAgAxAChLA2YxAClLA2YxACpLAmYxACtLAmYxACcETwRmMQBPAhZLAhUWVwYCTwNQSwEnBVBLAVBPAycGSwJmMQAnB08CZkkVgQ0ITwKAAwANgFBMFlcGAlBMUIAHAAVoZWxsb1AxACcITwJmI0MxACIoY0QxACIpY0QxACIqY0QxACIrY0QxACInBGNEMQAiJwZjRElXAAhLASRZSwIVTwNOAlJXAgAxACInB2NESVcACEsBJFlLAhVPA04CUlcCADEAIicIY0RPCRZPCRZQSwgVFlcGAk8JUEyAAgBqUEsBFYFqCEsJFRZXBgJPClBLARZXBgJPA0xQSwEVTwMITE8JUEsHFRZXBgJPCFBPCCcFUExQSwIWVwYCTwJMUEsBFU8DCEsGFRZXBgJPB1BPBycFUExQSwEWVwYCTwNMUEsBFU8DCBZXBgJQTwRQTwNQTwJQTFBMUCcJTFCwI0MxAChoMQApaDEAKmgxACtoMQAnBGgxACcGaDEAJwdoMQAnCGgjQzYaAUkiWSUISwEVEkRXAgA2GgJJIlklCEsBFRJEVwIAMQBJMghhRE8CSwJmSRUWVwYCTFAnCUxQsCNDNhoBSSJZJQhLARUSRFcCADEASTIIYUQiTwJjREkVFlcGAkxQJwlMULAjQw==", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 0 } }, "events": [], "templateVariables": {} }